Squashed 'import-layers/meta-openembedded/' content from commit 247b126

Change-Id: I40827e9ce5fba63f1cca2a0be44976ae8383b4c0
git-subtree-dir: import-layers/meta-openembedded
git-subtree-split: 247b1267bbe95719cd4877d2d3cfbaf2a2f4865a
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/import-layers/meta-openembedded/.gitignore b/import-layers/meta-openembedded/.gitignore
new file mode 100644
index 0000000..b093583
--- /dev/null
+++ b/import-layers/meta-openembedded/.gitignore
@@ -0,0 +1,5 @@
+/*.patch
+*.swp
+*.orig
+*.rej
+*~
diff --git a/import-layers/meta-openembedded/COPYING.MIT b/import-layers/meta-openembedded/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-openembedded/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/README b/import-layers/meta-openembedded/README
new file mode 100644
index 0000000..204966a
--- /dev/null
+++ b/import-layers/meta-openembedded/README
@@ -0,0 +1,4 @@
+Collection of layers for the OE-core universe
+
+Please see the respective READMEs in the layer subdirectories
+
diff --git a/import-layers/meta-openembedded/contrib/oe-stylize.py b/import-layers/meta-openembedded/contrib/oe-stylize.py
new file mode 100755
index 0000000..db8a363
--- /dev/null
+++ b/import-layers/meta-openembedded/contrib/oe-stylize.py
@@ -0,0 +1,411 @@
+#!/usr/bin/env python
+
+"""\
+Sanitize a bitbake file following the OpenEmbedded style guidelines,
+see http://openembedded.org/wiki/StyleGuide 
+
+(C) 2006 Cyril Romain <cyril.romain@gmail.com>
+MIT license
+
+TODO: 
+ - add the others OpenEmbedded variables commonly used:
+ - parse command arguments and print usage on misuse
+    . prevent giving more than one .bb file in arguments
+ - write result to a file
+ - backup the original .bb file
+ - make a diff and ask confirmation for patching ?
+ - do not use startswith only:
+    /!\ startswith('SOMETHING') is not taken into account due to the previous startswith('S').
+ - count rule breaks and displays them in the order frequence
+"""
+
+from __future__ import print_function 
+import fileinput
+import string
+import re
+
+__author__ = "Cyril Romain <cyril.romain@gmail.com>"
+__version__ = "$Revision: 0.5 $"
+
+# The standard set of variables often found in .bb files in the preferred order
+OE_vars = [
+    'SUMMARY',
+    'DESCRIPTION',
+    'AUTHOR',
+    'HOMEPAGE',
+    'SECTION',
+    'LICENSE',
+    'LIC_FILES_CHKSUM',
+    'DEPENDS',
+    'PROVIDES',
+    'SRCREV',
+    'SRCDATE',
+    'PE',
+    'PV',
+    'PR',
+    'INC_PR',
+    'SRC_URI',
+    'S',
+    'GPE_TARBALL_SUFFIX',
+    'inherit',
+    'EXTRA_',
+    'export',
+    'do_fetch',
+    'do_unpack',
+    'do_patch',
+    'WORKDIR',
+    'acpaths',
+    'do_configure',
+    'do_compile',
+    'do_install',
+    'PACKAGES',
+    'PACKAGE_ARCH',
+    'RDEPENDS',
+    'RRECOMMENDS',
+    'RSUGGESTS',
+    'RPROVIDES',
+    'RCONFLICTS',
+    'FILES',    
+    'do_package',
+    'do_stage',
+    'addhandler',
+    'addtask',
+    'bindir',
+    'headers',
+    'include',
+    'includedir',
+    'python',
+    'qtopiadir',
+    'pkg_preins',
+    'pkg_prerm',
+    'pkg_postins',
+    'pkg_postrm',
+    'require',
+    'sbindir',
+    'basesysconfdir',
+    'sysconfdir',
+    'ALLOW_EMPTY',
+    'ALTERNATIVE_NAME',
+    'ALTERNATIVE_PATH',
+    'ALTERNATIVE_LINK',
+    'ALTERNATIVE_PRIORITY',
+    'ALTNAME',
+    'AMD_DRIVER_LABEL',
+    'AMD_DRIVER_VERSION',
+    'ANGSTROM_EXTRA_INSTALL',
+    'APPDESKTOP',
+    'APPIMAGE',
+    'APPNAME',
+    'APPTYPE',
+    'APPWEB_BUILD',
+    'APPWEB_HOST',
+    'AR',
+    'ARCH',
+    'ARM_INSTRUCTION_SET',
+    'ARM_MUTEX',
+    'ART_CONFIG',
+    'B',
+    'BJAM_OPTS',
+    'BJAM_TOOLS',
+    'BONOBO_HEADERS',
+    'BOOTSCRIPTS',
+    'BROKEN',
+    'BUILD_CPPFLAGS',
+    'CFLAGS',
+    'CCFLAGS',
+    'CMDLINE',
+    'COLLIE_MEMORY_SIZE',
+    'COMPATIBLE_HOST',
+    'COMPATIBLE_MACHINE',
+    'COMPILE_HERMES',
+    'CONFFILES',
+    'CONFLICTS',
+    'CORE_EXTRA_D',
+    'CORE_IMAGE_EXTRA_INSTALL',
+    'CORE_PACKAGES_D',
+    'CORE_PACKAGES_RD',
+    'CPPFLAGS',
+    'CVSDATE',
+    'CXXFLAGS',
+    'DEBIAN_NOAUTONAME',
+    'DEBUG_APPS',
+    'DEFAULT_PREFERENCE',
+    'DB4_CONFIG',
+    'EXCLUDE_FROM_SHLIBS',
+    'EXCLUDE_FROM_WORLD',
+    'FIXEDSRCDATE',
+    'GLIBC_ADDONS',
+    'GLIBC_EXTRA_OECONF',
+    'GNOME_VFS_HEADERS',
+    'HEADERS',
+    'INHIBIT_DEFAULT_DEPS',
+    'INITSCRIPT_PACKAGES',
+    'INITSCRIPT_NAME',
+    'INITSCRIPT_PARAMS',
+    'INSANE_SKIP',
+    'PACKAGE_INSTALL',
+    'KERNEL_IMAGETYPE',
+    'KERNEL_IMAGEDEST',
+    'KERNEL_OUTPUT',
+    'KERNEL_RELEASE',
+    'KERNEL_PRIORITY',
+    'KERNEL_SOURCE',
+    'KERNEL_SUFFIX',
+    'KERNEL_VERSION',
+    'K_MAJOR',
+    'K_MICRO',
+    'K_MINOR',
+    'HHV',
+    'KV',
+    'LDFLAGS',
+    'LD',
+    'LD_SO',
+    'LDLIBS',
+    'LEAD_SONAME',
+    'LIBTOOL',
+    'LIBBDB_EXTRA',
+    'LIBV',
+    'MACHINE_ESSENTIAL_EXTRA_RDEPENDS',
+    'MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS',
+    'MACHINE_EXTRA_RDEPENDS',
+    'MACHINE_EXTRA_RRECOMMENDS',
+    'MACHINE_FEATURES',
+    'MACHINE_TASKS',
+    'MACHINE',
+    'MACHTYPE',
+    'MAKE_TARGETS',
+    'MESSAGEUSER',
+    'MESSAGEHOME',
+    'MIRRORS',
+    'MUTEX',
+    'OE_QMAKE_INCDIR_QT',
+    'OE_QMAKE_CXXFLAGS',
+    'ORBIT_IDL_SRC',
+    'PARALLEL_MAKE',
+    'PAKCAGE_ARCH',
+    'PCMCIA_MANAGER',
+    'PKG_BASENAME',
+    'PKG',
+    'QEMU',
+    'QMAKE_PROFILES',
+    'QPEDIR',
+    'QPF_DESCRIPTION',
+    'QPF_PKGPATTERN',
+    'QT_CONFIG_FLAGS',
+    'QT_LIBRARY',
+    'ROOTFS_POSTPROCESS_COMMAND',
+    'RREPLACES',
+    'TARGET_CFLAGS',
+    'TARGET_CPPFLAGS',
+    'TARGET_LDFLAGS',
+    'UBOOT_MACHINE',
+    'UCLIBC_BASE',
+    'UCLIBC_PATCHES',
+    'USERADD_PACKAGES',
+    'USERADD_PARAM',
+    'VIRTUAL_NAME',
+    'XORG_PN',
+    'XSERVER',
+    'others'
+]
+
+varRegexp = r'^([a-zA-Z_0-9${}-]*)([ \t]*)([+.:]?=[+.]?)([ \t]*)([^\t]+)'
+routineRegexp = r'^([a-zA-Z0-9_ ${}-]+?)\('
+
+# Variables seen in the processed .bb
+seen_vars = {}
+for v in OE_vars: 
+    seen_vars[v] = []
+
+# _Format guideline #0_: 
+#   No spaces are allowed at the beginning of lines that define a variable or 
+#   a do_ routine
+def respect_rule0(line): 
+    return line.lstrip()==line
+def conformTo_rule0(line): 
+    return line.lstrip()
+
+# _Format guideline #1_: 
+#   No spaces are allowed behind the line continuation symbol '\'
+def respect_rule1(line):
+    if line.rstrip().endswith('\\'):
+        return line.endswith('\\')
+    else: 
+        return True
+def conformTo_rule1(line):
+    return line.rstrip()
+
+# _Format guideline #2_: 
+#   Tabs should not be used (use spaces instead).
+def respect_rule2(line):
+    return line.count('\t')==0
+def conformTo_rule2(line):
+    return line.expandtabs()
+
+# _Format guideline #3_:
+#   Comments inside bb files are allowed using the '#' character at the 
+#   beginning of a line.
+def respect_rule3(line):
+    if line.lstrip().startswith('#'):
+        return line.startswith('#')
+    else: 
+        return True
+def conformTo_rule3(line):
+    return line.lstrip()
+
+# _Format guideline #4_:
+#   Use quotes on the right hand side of assignments FOO = "BAR"
+def respect_rule4(line):
+    r = re.search(varRegexp, line)
+    if r is not None:
+        r2 = re.search(r'("?)([^"\\]*)(["\\]?)', r.group(5))
+        # do not test for None it because always match
+        return r2.group(1)=='"' and r2.group(3)!=''
+    return False
+def conformTo_rule4(line):
+    r = re.search(varRegexp, line)
+    return ''.join([r.group(1), ' ', r.group(3), ' "', r.group(5), r.group(5).endswith('"') and '' or '"'])
+
+# _Format guideline #5_:
+#   The correct spacing for a variable is FOO = "BAR".
+def respect_rule5(line):
+    r = re.search(varRegexp, line)
+    return r is not None and r.group(2)==" " and r.group(4)==" "
+def conformTo_rule5(line):
+    r = re.search(varRegexp, line)
+    return ''.join([r.group(1), ' ', r.group(3), ' ', r.group(5)])
+
+# _Format guideline #6_:
+#   Don't use spaces or tabs on empty lines
+def respect_rule6(line):
+    return not line.isspace() or line=="\n"
+def conformTo_rule6(line):
+    return ""
+
+# _Format guideline #7_:
+#   Indentation of multiline variables such as SRC_URI is desireable.
+def respect_rule7(line):
+    return True
+def conformTo_rule7(line):
+    return line
+
+rules = (
+    (respect_rule0, conformTo_rule0, "No spaces are allowed at the beginning of lines that define a variable or a do_ routine"),
+    (respect_rule1, conformTo_rule1, "No spaces are allowed behind the line continuation symbol '\\'"),
+    (respect_rule2, conformTo_rule2, "Tabs should not be used (use spaces instead)"),
+    (respect_rule3, conformTo_rule3, "Comments inside bb files are allowed using the '#' character at the beginning of a line"),
+    (respect_rule4, conformTo_rule4, "Use quotes on the right hand side of assignments FOO = \"BAR\""),
+    (respect_rule5, conformTo_rule5, "The correct spacing for a variable is FOO = \"BAR\""),
+    (respect_rule6, conformTo_rule6, "Don't use spaces or tabs on empty lines"),
+    (respect_rule7, conformTo_rule7, "Indentation of multiline variables such as SRC_URI is desireable"),
+)
+
+# Function to check that a line respects a rule. If not, it tries to conform
+# the line to the rule. Reminder or Disgression message are dump accordingly.
+def follow_rule(i, line):
+    oldline = line
+    # if the line does not respect the rule
+    if not rules[i][0](line):
+        # try to conform it to the rule
+        line = rules[i][1](line)
+        # if the line still does not respect the rule
+        if not rules[i][0](line):
+            # this is a rule disgression
+            print ("## Disgression: ", rules[i][2], " in: '", oldline, "'")
+        else:
+            # just remind user about his/her errors
+            print ("## Reminder: ", rules[i][2], " in : '", oldline, "'")
+    return line
+
+
+if __name__ == "__main__":
+
+    # -- retrieves the lines of the .bb file --
+    lines = []
+    for line in fileinput.input():
+        # use 'if True' to warn user about all the rule he/she breaks
+        # use 'if False' to conform to rules{2,1,6} without warnings
+        if True:
+            lines.append(line)
+        else:
+            # expandtabs on each line so that rule2 is always respected 
+            # rstrip each line so that rule1 is always respected 
+            line = line.expandtabs().rstrip()
+            # ignore empty lines (or line filled with spaces or tabs only)
+            # so that rule6 is always respected
+            if line is not '':
+                lines.append(line)
+
+    # -- parse the file --
+    var = ""
+    in_routine = False
+    commentBloc = []
+    olines = []
+    for line in lines: 
+        originalLine = line
+        # rstrip line to remove line breaks characters
+        line = line.rstrip()
+        line = follow_rule(2, line)
+        line = follow_rule(1, line)
+        line = follow_rule(6, line)
+
+        # ignore empty lines
+        if line.isspace() or line is '':
+            # flush comments into the olines
+            for c in commentBloc: olines.append(c)
+            commentBloc = []
+            continue
+
+        if line.startswith('}'): 
+            in_routine=False
+        keep = line.endswith('\\') or in_routine
+
+        # handles commented lines
+        if line.lstrip().startswith('#'):
+            # check and follow rule3 if not in a variables or routines
+            if not in_routine:
+                line = follow_rule(3, line)
+            commentBloc.append(line)
+            continue
+
+        if var in seen_vars:
+            for c in commentBloc: seen_vars[var].append(c)
+            commentBloc = []
+            seen_vars[var].append(line)
+        else:
+            for k in OE_vars:
+                if line.startswith(k):
+                    var = k
+                    break
+            if re.match(routineRegexp, line) is not None: 
+                in_routine=True
+                line = follow_rule(0, line)
+            elif re.match(varRegexp, line) is not None:
+                line = follow_rule(0, line)
+                line = follow_rule(4, line)
+                line = follow_rule(5, line)
+            if var == "":
+                if not in_routine:
+                    print ("## Warning: unknown variable/routine \"%s\"" % originalLine.rstrip('\n'))
+                var = 'others'
+            for c in commentBloc: seen_vars[var].append(c)
+            commentBloc = []
+            seen_vars[var].append(line)
+        if not keep and not in_routine: var = ""
+
+    # -- dump the sanitized .bb file --
+    addEmptyLine = False
+    # write comments that are not related to variables nor routines
+    for l in commentBloc: olines.append(l)
+    # write variables and routines
+    previourVarPrefix = "unknown"
+    for k in OE_vars:
+        if k=='SRC_URI': addEmptyLine = True
+        if seen_vars[k] != []: 
+            if addEmptyLine and not k.startswith(previourVarPrefix):
+                olines.append("")
+            for l in seen_vars[k]: 
+                olines.append(l)
+            previourVarPrefix = k.split('_')[0]=='' and "unknown" or k.split('_')[0]
+    for line in olines: print(line)
+
diff --git a/import-layers/meta-openembedded/contrib/pw-am.sh b/import-layers/meta-openembedded/contrib/pw-am.sh
new file mode 100755
index 0000000..8987eee
--- /dev/null
+++ b/import-layers/meta-openembedded/contrib/pw-am.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# Idea and implementation:  Koen Kooi
+# Multiple patches support: Marcin Juszkiewicz
+#
+# This script will fetch an 'mbox' patch from patchwork and git am it
+# usage: pw-am.sh <number>
+# example: 'pw-am.sh 221' will get the patch from http://patchwork.openembedded.org/patch/221/
+
+for patchnumber in $@;
+do
+	wget -nv http://patches.openembedded.org/patch/$patchnumber/mbox/ -O pw-am-$patchnumber.patch
+	git am -s pw-am-$patchnumber.patch
+	rm pw-am-$patchnumber.patch
+done
diff --git a/import-layers/meta-openembedded/contrib/tesseract-langs.sh b/import-layers/meta-openembedded/contrib/tesseract-langs.sh
new file mode 100755
index 0000000..50873c1
--- /dev/null
+++ b/import-layers/meta-openembedded/contrib/tesseract-langs.sh
@@ -0,0 +1,92 @@
+#! /bin/sh
+
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+PV='3.02'
+
+# Sometimes the software package has a minor version, but language
+# packages have not.  Example: 
+#   software package: tesseract-ocr-3.02.02.tar.gz
+#   language package: tesseract-ocr-3.02.por.tar.gz
+MINOR_PV=02
+
+recipes_dir=$1
+
+usage() {
+    echo "Usage: `basename $0` <recipes dir> [ <download dir> ]"
+}
+
+if [ -z "$recipes_dir" ]; then
+    usage
+    exit 1
+fi
+mkdir -p "$recipes_dir"
+
+file_list_uri='https://code.google.com/p/tesseract-ocr/downloads/list'
+file_list=`mktemp`
+
+remove_dl_dir=
+if [ -z "$2" ]; then
+    remove_dl_dir=1
+    dl_dir=`mktemp -d`
+else
+    dl_dir="$2"
+fi
+
+mkdir -p $dl_dir
+
+tesseract_langs() {
+    wget -q -O "$file_list" "$file_list_uri"
+
+    grep -E 'a href="detail\?name=tesseract-ocr-'${PV}'\.[^\.]+.tar.gz&amp;can=2&amp;q=">' "$file_list" | \
+        sed -r -e 's/.*tesseract-ocr-'${PV}'\.*([^\.]+)\.tar\.gz.*/\1/' | \
+        grep -Ev '('${MINOR_PV}'|'${MINOR_PV}'-doc-html)' | \
+        sort -u
+}
+
+download_lang_files() {
+    local langs="$1"
+    local uri
+    for lang in $langs; do
+        if [ ! -e "$dl_dir/tesseract-ocr-${PV}.${lang}.tar.gz" ]; then
+            uri="https://tesseract-ocr.googlecode.com/files/tesseract-ocr-${PV}.${lang}.tar.gz"
+            echo "Downloading $uri"
+            wget -q -P "$dl_dir" "$uri"
+        fi
+    done
+}
+
+create_recipe() {
+    local lang=$1
+    local tarball
+
+    tarball="$dl_dir/tesseract-ocr-${PV}.${lang}.tar.gz"
+
+    md5sum=`md5sum $tarball | awk '{print $1}'`
+    sha256sum=`sha256sum $tarball | awk '{print $1}'`
+
+    cat > $recipes_dir/tesseract-lang-`echo ${lang} | sed s/_/-/g`_${PV}.bb <<EOF
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "$lang"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "${md5sum}"
+SRC_URI[sha256sum] = "${sha256sum}"
+EOF
+}
+
+
+LANGS=`tesseract_langs`
+
+download_lang_files "$LANGS"
+
+for lang in $LANGS; do
+    create_recipe $lang
+done
+
+[ -n "$remove_dl_dir" ] && rm -rf $dl_dir
+rm -f $file_list
diff --git a/import-layers/meta-openembedded/meta-efl/COPYING.MIT b/import-layers/meta-openembedded/meta-efl/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-efl/README b/import-layers/meta-openembedded/meta-efl/README
new file mode 100644
index 0000000..438efc5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/README
@@ -0,0 +1,18 @@
+This layer depends on:
+
+URI: git://github.com/openembedded/oe-core.git
+branch: krogoth 
+revision: HEAD
+
+URI: git://github.com/openembedded/meta-oe.git
+layers: meta-oe, meta-python
+branch: krogoth 
+revision: HEAD
+
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-efl][krogoth]' in the subject'
+
+When sending single patches, please using something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-efl][krogoth][PATCH'
+
+krogoth branch maintainer(s):
+Armin Kuster <akuster808@gmail.com>
diff --git a/import-layers/meta-openembedded/meta-efl/classes/e-base.bbclass b/import-layers/meta-openembedded/meta-efl/classes/e-base.bbclass
new file mode 100644
index 0000000..e0ae228
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/classes/e-base.bbclass
@@ -0,0 +1,14 @@
+HOMEPAGE = "http://www.enlightenment.org"
+SRCNAME ?= "${BPN}"
+SRCVER ?= "${PV}"
+
+EFL_SRCREV ?= "82070"
+
+ARM_INSTRUCTION_SET = "arm"
+
+S = "${WORKDIR}/${SRCNAME}-${SRCVER}"
+
+# each efl or e17 module is installing module.so in different directory, disable shlibs providers for them
+# evas-engine-gl-x11-1.7.7 evas-engine-software-16-1.7.7 evas-engine-software-16-x11-1.7.7 evas-engine-software-x11-1.7.7 evas-engine-wayland-shm-1.7.7 evas-cserve2-bmp-1.7.7 evas-cserve2-eet-1.7.7 evas-cserve2-ico-1.7.7 evas-cserve2-jpeg-1.7.7 evas-cserve2-pmaps-1.7.7 evas-cserve2-png-1.7.7 evas-cserve2-psd-1.7.7 evas-cserve2-tga-1.7.7 evas-cserve2-tiff-1.7.7 evas-cserve2-wbmp-1.7.7 evas-cserve2-xpm-1.7.7 evas-loader-bmp-1.7.7 evas-loader-generic-1.7.7 evas-loader-gif-1.7.7 evas-loader-ico-1.7.7 evas-loader-jpeg-1.7.7 evas-loader-pmaps-1.7.7 evas-loader-png-1.7.7 evas-loader-psd-1.7.7 evas-loader-tga-1.7.7 evas-loader-tiff-1.7.7 evas-loader-wbmp-1.7.7 evas-loader-xpm-1.7.7 evas-saver-jpeg-1.7.7 evas-saver-png-1.7.7 evas-saver-tiff-1.7.7 evas-engine-fb-1.7.7
+# emotion-1.7.7 elementary-1.7.7 elementary-tests-1.7.7 elementary-accessibility-1.7.7 e-wm-0.17.3 elfe-0.0.1+svnr82070 shr-e-gadgets-0.0.0+gitr1+27b6c17d73 cpu-0.0.1+svnr82070 places-0.1.0+svnr82070 forecasts-0.2.0+svnr82070 uptime-0.0.2+svnr82070 screenshot-0.3.0+svnr82070 exalt-client-0.0.1+svnr82070 diskio-0.0.1+svnr82070 rain-0.0.3+svnr82070 news-0.1.0+svnr82070 flame-0.0.3+svnr82070
+PRIVATE_LIBS = "module.so"
diff --git a/import-layers/meta-openembedded/meta-efl/classes/e.bbclass b/import-layers/meta-openembedded/meta-efl/classes/e.bbclass
new file mode 100644
index 0000000..4ee80bf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/classes/e.bbclass
@@ -0,0 +1,22 @@
+SECTION = "e/apps"
+
+inherit e-base autotools pkgconfig binconfig
+
+do_prepsources () {
+    make clean distclean || true
+}
+addtask prepsources after do_patch before do_configure
+
+do_configure_append() {
+    find ${B} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
+}
+
+export CURL_CONFIG = "${STAGING_BINDIR_CROSS}/curl-config"
+export FREETYPE_CONFIG = "${STAGING_BINDIR_CROSS}/freetype-config"
+
+PACKAGES =+ "${PN}-themes"
+PACKAGES += "${PN}-lib"
+
+FILES_${PN}-lib = "${libdir}/lib*.so.*"
+FILES_${PN}-themes = "${datadir}/${PN}/themes ${datadir}/${PN}/data ${datadir}/${PN}/fonts ${datadir}/${PN}/pointers ${datadir}/${PN}/images ${datadir}/${PN}/users ${datadir}/${PN}/images ${datadir}/${PN}/styles"
+FILES_${PN}-dev += "${includedir} ${libdir}/lib*.so"
diff --git a/import-layers/meta-openembedded/meta-efl/classes/efl.bbclass b/import-layers/meta-openembedded/meta-efl/classes/efl.bbclass
new file mode 100644
index 0000000..eb40e4b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/classes/efl.bbclass
@@ -0,0 +1,66 @@
+SECTION = "e/libs"
+LICENSE = "MIT & BSD"
+DEPENDS += "pkgconfig-native"
+
+# revision 0d93ec84b30bc1bee2caaee72d667f87bc468a70 made SRCDATE and hence PV go backwards, so we need to up PE to unbreak builds and feeds :(
+PE = "2"
+
+inherit e-base autotools
+
+# evas-native looks at this var, so keep it
+
+do_configure_prepend() {
+    autopoint || touch config.rpath
+}
+
+do_install_prepend () {
+    for i in `find ${B}/ -name "*.pc" -type f` ; do \
+        sed -i -e 's:-L${STAGING_LIBDIR}:-L\$\{libdir\}:g' -e 's:-I${STAGING_LIBDIR}:-I\$\{libdir\}:g' -e 's:-I${STAGING_INCDIR}:-I\$\{includedir\}:g' $i
+    done
+}
+
+PACKAGES =+ "${PN}-themes"
+PACKAGES += "${PN}-tests"
+PACKAGES += "${PN}-eolian"
+
+FILES_${PN} = "${libdir}/*.so.* \
+               ${libdir}/edje/modules/${PN}/*/module.so \
+               ${libdir}/${PN}/plugins/*.so \
+               ${datadir}/dbus-1/services/* \
+"
+
+
+FILES_${PN}-themes = "${datadir}/${PN}/themes \
+                      ${datadir}/${PN}/data \
+                      ${libdir}/${PN}/plugins/data/*.edj \
+                      ${datadir}/${PN}/fonts \
+                      ${datadir}/${PN}/pointers \
+                      ${datadir}/${PN}/images \
+                      ${datadir}/${PN}/users \
+                      ${datadir}/${PN}/images \
+                      ${datadir}/${PN}/styles"
+
+FILES_${PN}-dev   += "${bindir}/${PN}-config \
+                      ${libdir}/pkgconfig/* \
+                      ${libdir}/lib*.la \
+                      ${libdir}/*.so \
+                      ${libdir}/${PN}/*.la \
+                      ${libdir}/${PN}/*/*.la \
+                      ${datadir}/${PN}/edje_externals \
+                      ${libdir}/edje/modules/${PN}/*/module.la \
+"
+
+FILES_${PN}-eolian = " \
+    ${datadir}/eolian/include \
+"
+
+FILES_${PN}-staticdev += "${libdir}/${BPN}/*/*.a"
+
+FILES_${PN}-dbg +=   "${libdir}/${PN}/.debug \
+                      ${libdir}/${PN}/*/.debug \
+                      ${libdir}/edje/modules/${PN}/*/.debug/module.so \
+"
+
+FILES_${PN}-tests  = "${bindir}/${PN} \
+                      ${bindir}/*_* \
+                      ${datadir}/${PN}"
diff --git a/import-layers/meta-openembedded/meta-efl/conf/distro/include/efl-from-svn-recipes.inc b/import-layers/meta-openembedded/meta-efl/conf/distro/include/efl-from-svn-recipes.inc
new file mode 100644
index 0000000..23a8eae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/conf/distro/include/efl-from-svn-recipes.inc
@@ -0,0 +1,43 @@
+EFL_PREFERRED_VERSION ?= "1.7.4+svn%"
+EFL_PREFERRED_PYTHON_VERSION ?= "1.7.0+svn%"
+
+PREFERRED_VERSION_e-wm ?= "0.17.0+svnr%"
+
+PREFERRED_VERSION_ecore ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_ecore-native ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_edbus ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_edbus-native ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_edje ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_edje-native ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_edje-nativesdk ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_eeze ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_eeze-native ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_efreet ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_efreet-native ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_eina ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_eina-native ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_embryo ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_embryo-native ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_evas ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_evas-generic-loaders ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_evas-native ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_expedite ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_expedite-native ?= "${EFL_PREFERRED_VERSION}"
+
+PREFERRED_VERSION_eet ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_eet-native ?= "${EFL_PREFERRED_VERSION}"
+
+PREFERRED_VERSION_eio ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_eio-native ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_emotion ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_ethumb ?= "${EFL_PREFERRED_VERSION}"
+PREFERRED_VERSION_elementary ?= "${EFL_PREFERRED_VERSION}"
+
+PREFERRED_VERSION_python-elementary ?= "${EFL_PREFERRED_PYTHON_VERSION}"
+PREFERRED_VERSION_python-ecore ?= "${EFL_PREFERRED_PYTHON_VERSION}"
+PREFERRED_VERSION_python-edbus ?= "${EFL_PREFERRED_PYTHON_VERSION}"
+PREFERRED_VERSION_python-edje ?= "${EFL_PREFERRED_PYTHON_VERSION}"
+PREFERRED_VERSION_python-emotion ?= "${EFL_PREFERRED_PYTHON_VERSION}"
+PREFERRED_VERSION_python-evas ?= "${EFL_PREFERRED_PYTHON_VERSION}"
+
+PREFERRED_VERSION_terminology ?= "0.2.0+svn%"
diff --git a/import-layers/meta-openembedded/meta-efl/conf/layer.conf b/import-layers/meta-openembedded/meta-efl/conf/layer.conf
new file mode 100644
index 0000000..ea90ce2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/conf/layer.conf
@@ -0,0 +1,35 @@
+# 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 += "efl-layer"
+BBFILE_PATTERN_efl-layer := "^${LAYERDIR}/"
+BBFILE_PRIORITY_efl-layer = "7"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_efl-layer = "1"
+
+LAYERDEPENDS_efl-layer = "core openembedded-layer"
+
+E_MIRROR = "http://download.enlightenment.org/releases"
+E_RELEASES = "http://download.enlightenment.org/rel"
+E_SVN = "svn://svn.enlightenment.org/svn/e"
+
+# RDEPENDS on update-alternatives provider opkg-utils
+SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "\
+  exquisite-theme-illume->opkg-utils \
+"
+
+# RDEPENDS on e-wm
+SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "\
+  e-wm-theme-illume-efenniht->e-wm \
+  e-wm-theme-illume-neo->e-wm \
+  e-wm-theme-b-and-w->e-wm \
+"
+
+SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
+  packagegroup-efl-sdk->packagegroup-core-sdk \
+"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-core/meta/meta-toolchain-efl.bb b/import-layers/meta-openembedded/meta-efl/recipes-core/meta/meta-toolchain-efl.bb
new file mode 100644
index 0000000..b7b7fca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-core/meta/meta-toolchain-efl.bb
@@ -0,0 +1,6 @@
+TOOLCHAIN_TARGET_EFLTASK ?= "packagegroup-efl-standalone-sdk-target packagegroup-efl-standalone-sdk-target-dbg"
+TOOLCHAIN_TARGET_TASK = "${TOOLCHAIN_TARGET_EFLTASK}"
+TOOLCHAIN_OUTPUTNAME = "${SDK_NAME}-toolchain-efl-${DISTRO_VERSION}"
+require recipes-core/meta/meta-toolchain.bb
+
+TOOLCHAIN_NEED_CONFIGSITE_CACHE += "zlib"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-edbus.inc b/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-edbus.inc
new file mode 100644
index 0000000..3e72261
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-edbus.inc
@@ -0,0 +1,50 @@
+DESCRIPTION = "${PN} bindings"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+AUTHOR = "Gustavo Sverzut Barbieri <barbieri@gmail.com>"
+# NOTE: Due to a bug in distutils, even if we don't use pyrex but cython,
+# we need to build pyrex otherwise cython doesn't get called to build
+# the extension modules.
+DEPENDS = "python-cython-native python-pyrex-native python-numeric eina edbus python-dbus"
+RDEPENDS_${PN} += "python-lang python-dbus"
+
+# necessary to let the call for python-config succeed
+export BUILD_SYS
+export HOST_SYS
+
+inherit e-base autotools pkgconfig distutils-base
+
+SRCNAME = "python-e_dbus"
+SRCVER = "${PV}"
+
+SRC_URI = "\
+    ${E_MIRROR}/BINDINGS/python/${SRCNAME}-${SRCVER}.tar.bz2 \
+"
+S = "${WORKDIR}/${SRCNAME}-${SRCVER}"
+
+
+do_configure_prepend() {
+    # prefix CYTHON_.*_INCLUDEDIR with path to STAGING_DIR_HOST also use $PKG_CONFIG instead of pkg-config directly
+    sed -i "s#=\`\$PKG_CONFIG --variable=includedir \"python-evas#=${STAGING_DIR_HOST}\`\$PKG_CONFIG --variable=includedir \"python-evas#g" ${S}/configure.ac
+}
+
+do_install_append() {
+    if [ -e examples ]; then
+        for i in `find examples -name "*.edc"`; do
+            cd ${S}/`dirname $i`
+            echo "Generating .edj file for $i..."
+            edje_cc `basename $i`
+            echo "Removing sources in this directory..."
+            rm -f *.edc *.png *.ttf *.jpeg
+        done
+        cd ${S}
+        install -d ${D}${datadir}/${PN}/
+        cp -R --no-dereference --preserve=mode,links -v examples ${D}${datadir}/${PN}/
+        find ${D}${datadir}/${PN}/examples -name ".svn" | xargs rm -rf
+    fi
+}
+
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/*.egg/*/*/.debug"
+
+PACKAGES += "${PN}-examples"
+FILES_${PN}-examples = "${datadir}/${PN}/examples"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-edbus_1.7.0.bb b/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-edbus_1.7.0.bb
new file mode 100644
index 0000000..9e5ff0a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-edbus_1.7.0.bb
@@ -0,0 +1,6 @@
+require ${BPN}.inc
+
+PR = "r1"
+
+SRC_URI[md5sum] = "40b479444bb06147429a276127981890"
+SRC_URI[sha256sum] = "78e5ca334ee25185748660b4e612f984f4d3bced018f062278701429868f117b"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-efl.inc b/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-efl.inc
new file mode 100644
index 0000000..92a26ed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-efl.inc
@@ -0,0 +1,75 @@
+DESCRIPTION = "${PN} bindings"
+
+LICENSE = "LGPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
+# there is also GPLv3.0 in COPYING;md5=d32239bcb673463ab874e80d47fae504 but no file seems to use that
+
+AUTHOR = "Gustavo Sverzut Barbieri <barbieri@gmail.com>"
+# NOTE: Due to a bug in distutils, even if we don't use pyrex but cython,
+# we need to build pyrex otherwise cython doesn't get called to build
+# the extension modules.
+DEPENDS = "python-cython-native python-pyrex-native python-numeric python-dbus lua efl elementary"
+RDEPENDS_${PN} += "python-lang"
+
+PROVIDES = "python-ecore python-eldbus python-edje python-elementary python-emotion python-evas"
+
+# necessary to let the call for python-config succeed
+export BUILD_SYS
+export HOST_SYS
+
+inherit e-base distutils pkgconfig
+
+SRCVER = "${PV}"
+
+SRC_URI = "\
+    ${E_RELEASES}/bindings/python/${SRCNAME}-${SRCVER}.tar.gz \
+"
+S = "${WORKDIR}/${SRCNAME}-${SRCVER}"
+
+do_install_append() {
+    # drop all .pyo, pyc files
+    find ${D}${libdir}/${PYTHON_DIR}/site-packages -name \*.pyo -o -name \*.pyc | xargs rm -f
+}
+
+PACKAGES += "python-ecore python-eldbus python-edje python-elementary python-emotion python-evas python-ethumb ${PN}-examples"
+
+FILES_${PN} = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/python_efl*egg-info \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/eo.so \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/utils \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/__init__.py \
+"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/*.egg/*/*/.debug"
+FILES_${PN}-dev += "${libdir}/${PYTHON_DIR}/site-packages/*/*.la"
+
+FILES_${PN}-examples = "${datadir}/${PN}/examples"
+
+FILES_python-ecore = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/ecore/ \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/ecore*.so \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/ecore \
+"
+FILES_python-eldbus = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/e_dbus/ \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/dbus_mainloop.so \
+"
+FILES_python-edje = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/edje/ \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/edje*.so \
+"
+FILES_python-elementary = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/elementary/ \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/elementary/ \
+"
+FILES_python-emotion = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/emotion/ \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/emotion.so \
+"
+FILES_python-evas = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/evas/ \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/evas.so \
+"
+FILES_python-ethumb = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/ethumb/ \
+    ${libdir}/${PYTHON_DIR}/site-packages/efl/ethumb*so \
+"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-efl_1.15.0.bb b/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-efl_1.15.0.bb
new file mode 100644
index 0000000..7abbc32
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-efl_1.15.0.bb
@@ -0,0 +1,4 @@
+require ${BPN}.inc
+
+SRC_URI[md5sum] = "f7c5d557336ea9df69bcca09c420711a"
+SRC_URI[sha256sum] = "11e607b465cb66dafe05c66e02d61e09335b370fe9fd2a74d88282b3ee597bcc"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-efl_git.bb b/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-efl_git.bb
new file mode 100644
index 0000000..83a01ac
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-devtools/python/python-efl_git.bb
@@ -0,0 +1,9 @@
+require ${BPN}.inc
+
+SRCREV = "71ed20ebf662a7b72e60913df94ce6933236bf09"
+PV = "1.12.0+git${SRCPV}"
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "git://git.enlightenment.org/bindings/python/${BPN}.git;branch=python-efl-1.12"
+
+S = "${WORKDIR}/git"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/cpu/configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/cpu/configure.patch
new file mode 100644
index 0000000..87c85de
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/cpu/configure.patch
@@ -0,0 +1,13 @@
+Index: cpu/configure.ac
+===================================================================
+--- cpu.orig/configure.ac	2014-07-17 20:39:48.000000000 +0000
++++ cpu/configure.ac	2014-07-17 21:39:55.320555868 +0000
+@@ -10,7 +10,7 @@
+ AC_CANONICAL_HOST
+ AC_ISC_POSIX
+ 
+-AM_INIT_AUTOMAKE(1.6)
++AM_INIT_AUTOMAKE([foreign])
+ AM_CONFIG_HEADER(config.h)
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ 
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/cpu_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/cpu_svn.bb
new file mode 100644
index 0000000..14eb08f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/cpu_svn.bb
@@ -0,0 +1,10 @@
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35 \
+                    file://COPYING-PLAIN;md5=c910b645eda0005ccec46f75203dc96e"
+
+PV = "0.0.1+svnr${SRCREV}"
+PR = "${INC_PR}.0"
+
+require e-module.inc
+
+SRC_URI += "file://configure.patch"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/diskio_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/diskio_svn.bb
new file mode 100644
index 0000000..a26186e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/diskio_svn.bb
@@ -0,0 +1,10 @@
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35 \
+                    file://COPYING-PLAIN;md5=68be76d8126face2fbbecdf1bcbe2b10"
+
+PV = "0.0.1+svnr${SRCPV}"
+PR = "${INC_PR}.0"
+
+PNBLACKLIST[diskio] ?= "broken: switch to https://git.enlightenment.org/enlightenment/modules/diskio.git/ and fix 0.0.1+svnr82070-r0.0/E-MODULES-EXTRA/diskio/e-module-diskio.edc:58. invalid state name: 'off'. "default" state must always be first."
+
+require e-module.inc
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-module.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-module.inc
new file mode 100644
index 0000000..0923575
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-module.inc
@@ -0,0 +1,19 @@
+DESCRIPTION = "E17 ${PN} module"
+SECTION = "x11/multimedia"
+DEPENDS = "e-wm"
+
+SRCREV = "${EFL_SRCREV}"
+INC_PR = "r0"
+
+SRCNAME = "E-MODULES-EXTRA/${PN}"
+
+inherit e gettext
+SRC_URI = "${E_SVN}/trunk;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
+
+EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
+
+FILES_${PN} += "${libdir}/enlightenment/modules/${PN}"
+FILES_${PN}-dbg += "${libdir}/enlightenment/modules/${PN}/*/.debug"
+FILES_${PN}-staticdev += "${libdir}/enlightenment/modules/${PN}/*/*.a"
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-tasks/0001-dbus-stuff-Convert-to-eldbus.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-tasks/0001-dbus-stuff-Convert-to-eldbus.patch
new file mode 100644
index 0000000..f92a772
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-tasks/0001-dbus-stuff-Convert-to-eldbus.patch
@@ -0,0 +1,204 @@
+From 37223289b3d85ea8876e7ba7c9ff97ec428073ba Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sat, 22 Feb 2014 14:36:38 +0100
+Subject: [PATCH] dbus-stuff: Convert to eldbus
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ configure.ac     |  2 +-
+ src/Makefile.am  |  2 +-
+ src/dbus-stuff.c | 95 ++++++++++++++++++++++++++++++++------------------------
+ src/dbus-stuff.h | 13 ++------
+ src/main.c       |  2 +-
+ 5 files changed, 61 insertions(+), 53 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index b3e4d12..4ace32a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -15,7 +15,7 @@ AC_HEADER_STDC
+ 
+ AM_PROG_LIBTOOL
+ 
+-PKG_CHECK_MODULES(TASKS, [elementary eina dbus-1 edbus sqlite3])
++PKG_CHECK_MODULES(TASKS, [elementary eina dbus-1 eldbus sqlite3])
+ 
+ AC_OUTPUT([
+ Makefile
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 2143dc9..31d5253 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -8,7 +8,7 @@ AM_CPPFLAGS = \
+ 	$(TASKS_CFLAGS)
+ 
+ AM_CFLAGS =\
+-         $(EDBUS_CFLAGS) \
++         $(ELDBUS_CFLAGS) \
+ 	 -Wall\
+ 	 -g
+ 
+diff --git a/src/dbus-stuff.c b/src/dbus-stuff.c
+index 50809bc..9f02ef3 100644
+--- a/src/dbus-stuff.c
++++ b/src/dbus-stuff.c
+@@ -1,8 +1,7 @@
+ /***************************************************************************
+  *            dbus-stuff.c
+  *
+- *  Copyright  2009  cchandel
+- *  <cchandel@yahoo.com>
++ *  Copyright  2009  cchandel <cchandel@yahoo.com>
+  ****************************************************************************/
+ 
+ /*
+@@ -21,51 +20,67 @@
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301,  USA
+  */
+ #include "dbus-stuff.h"
+-#include <string.h>
+-#include <E_DBus.h>
+-#include <Elementary.h>
++#include "Eldbus.h"
+ 
+-void occupy_cpu(void)
++void on_usage_cb(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
++{
++        const char *errname, *errmsg;
++        if (eldbus_message_error_get(msg, &errname, &errmsg))
++	        fprintf(stderr, "Error: %s %s\n", errname, errmsg);
++}
++
++int ousaged_resource(const char *resource, int used)
+ {	
+-	e_dbus_init();
+-	conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+-	
+-	DBusMessage *msg;
+-	msg = dbus_message_new_method_call(
+-		"org.freesmartphone.ousaged",
+-		"/org/freesmartphone/Usage",
+-		"org.freesmartphone.Usage",
+-		"RequestResource"
+-	);
+-	
+-	const char *resource = "CPU";
+-	dbus_message_append_args (msg, DBUS_TYPE_STRING, &resource, DBUS_TYPE_INVALID);
++	eldbus_init();
++	const char *REQUEST = "RequestResource";
++	const char *RELEASE = "ReleaseResource";
++	const int   PREQUEST = 1;
+ 
+-	e_dbus_message_send(conn, msg, dbus_reply_cb, -1, NULL);
+-	dbus_message_unref(msg);
+-}
++        Eldbus_Connection *conn;
++        Eldbus_Object *obj;
++        Eldbus_Proxy *usage;
++        Eldbus_Pending *pending;
++	conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM);
++        if (!conn)
++        {
++                fprintf(stderr, "Error: could not get system bus\n");
++                return EXIT_FAILURE;
++        }
+ 
+-void release_cpu(void)
+-{
+-	DBusMessage *msg;
+-	msg = dbus_message_new_method_call(
+-		"org.freesmartphone.ousaged",
+-		"/org/freesmartphone/Usage",
+-		"org.freesmartphone.Usage",
+-		"ReleaseResource"
+-	);
+-	
+-	const char *resource = "CPU";
+-	dbus_message_append_args (msg, DBUS_TYPE_STRING, &resource, DBUS_TYPE_INVALID);
++        obj = eldbus_object_get(conn, "org.freesmartphone.ousaged", "/org/freesmartphone/Usage");
++        if (!obj)
++        {
++                fprintf(stderr, "Error: could not get object\n");
++                return EXIT_FAILURE;
++        }
+ 
+-	e_dbus_message_send(conn, msg, dbus_reply_cb, -1, NULL);
+-	dbus_message_unref(msg);
++        usage = eldbus_proxy_get(obj, "org.freesmartphone.Usage");
++        if (!usage)
++        {
++                fprintf(stderr, "Error: could not get proxy\n");
++                return EXIT_FAILURE;
++        }
++
++        pending = eldbus_proxy_call(usage, used == PREQUEST ? REQUEST : RELEASE, on_usage_cb, NULL, -1, "ss", resource);
++        if (!pending)
++        {
++                fprintf(stderr, "Error: could not call\n");
++                return EXIT_FAILURE;
++        }
++        eldbus_proxy_unref(usage);
++        eldbus_object_unref(obj);
++        eldbus_connection_unref(conn);
++
++        eldbus_shutdown();
++	return EXIT_SUCCESS;
+ }
+ 
+-void dbus_reply_cb(void *data, DBusMessage *replymsg, DBusError *error)
++int request_cpu(void)
+ {
+-	if (dbus_error_is_set(error)) {
+-		printf("Error: %s - %s\n", error->name, error->message);
+-	}
++        return ousaged_resource("CPU", 1);
+ }
+ 
++int release_cpu(void)
++{
++        return ousaged_resource("CPU" , 0);
++}
+diff --git a/src/dbus-stuff.h b/src/dbus-stuff.h
+index 83d4778..a3c72cb 100644
+--- a/src/dbus-stuff.h
++++ b/src/dbus-stuff.h
+@@ -2,8 +2,7 @@
+  *            dbus.h
+  *
+  *  Fri Mar  6 12:32:57 2009
+- *  Copyright  2009  nidhin
+- *  <nidhin@nids-laptop.home>
++ *  Copyright  2009  nidhin <nidhin@nids-laptop.home>
+  ****************************************************************************/
+ 
+ /*
+@@ -22,11 +21,5 @@
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301,  USA
+  */
+ 
+-#include <E_DBus.h>
+-#include <Elementary.h>
+-
+-void occupy_cpu(void);
+-void release_cpu(void);
+-void dbus_reply_cb(void *data, DBusMessage *replymsg, DBusError *error);
+-
+-E_DBus_Connection *conn;
++int request_cpu(void);
++int release_cpu(void);
+diff --git a/src/main.c b/src/main.c
+index 92d21de..4e4bbe2 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -76,7 +76,7 @@ elm_main(int argc, char **argv)
+ 	//restore state
+ 	restore_state();
+ 
+-	occupy_cpu();
++	request_cpu();
+ 
+ 	elm_run();
+ 	//clean up stuff
+-- 
+1.8.5.3
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-tasks_git.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-tasks_git.bb
new file mode 100644
index 0000000..6065157
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-tasks_git.bb
@@ -0,0 +1,32 @@
+SUMMARY = "e-tasks is a todo program for Openmoko phones"
+HOMEPAGE = "http://code.google.com/p/e-tasks/"
+AUTHOR = "cchandel"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+SECTION = "e/apps"
+DEPENDS = "elementary eina eldbus sqlite3"
+
+inherit autotools
+
+SRCREV = "890f5ee37d1a5fd1ceb2495950d15151d4cf756b"
+PV = "0.0.2+gitr${SRCPV}"
+
+SRC_URI = "git://github.com/shr-project/e-tasks.git"
+SRC_URI += "file://0001-dbus-stuff-Convert-to-eldbus.patch"
+
+S = "${WORKDIR}/git"
+
+do_install_append() {
+    install -d "${D}/${datadir}/pixmaps"
+    install -m 0644 "${S}/resources/e-tasks.png" "${D}/${datadir}/pixmaps"
+    install -d "${D}/${datadir}/applications"
+    install -m 0644 "${S}/resources/e-tasks.desktop" "${D}/${datadir}/applications"
+    install -d  "${D}/${datadir}/e-tasks"
+    for ico in "${S}/resources/"*.png; do
+        if [ "$(basename $ico)" != "e-tasks.png" ]; then
+            install -m 0644 $ico "${D}/${datadir}/e-tasks"
+        fi
+    done
+}
+
+FILES_${PN} += "/usr/share/e-tasks/* /usr/share/applications/* /usr/share/pixmaps/*"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm-theme-b-and-w_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm-theme-b-and-w_svn.bb
new file mode 100644
index 0000000..ae1b8a6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm-theme-b-and-w_svn.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "b-and-w theme was default E17 theme before alpha3 and some people still prefers it."
+SECTION = "e/utils"
+DEPENDS = "edje-native"
+RDEPENDS_${PN} = "e-wm"
+LICENSE = "MIT & BSD"
+# upstream was asked to include license infor in THEME dir
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit allarch
+
+SRCREV = "${EFL_SRCREV}"
+PV = "0.0+svnr${SRCPV}"
+
+inherit e-base
+
+SRCNAME = "b_and_w"
+SRC_URI = "${E_SVN}/trunk/THEMES;module=${SRCNAME};protocol=http"
+S = "${WORKDIR}/${SRCNAME}/e"
+
+do_compile() {
+    # unfortunately hardcoded edje_cc in Makefile     
+    sed -i "s#\tedje_cc#\t${STAGING_BINDIR_NATIVE}/edje_cc#g" Makefile
+    make
+}
+
+do_install() {
+    install -d ${D}${datadir}/enlightenment/data/themes/
+    install -m 0644 ${S}/b_and_w.edj ${D}${datadir}/enlightenment/data/themes/
+}
+
+FILES_${PN} = "${datadir}/enlightenment/data/themes/"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm-theme-illume-efenniht/LICENSE b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm-theme-illume-efenniht/LICENSE
new file mode 100644
index 0000000..61bb2f6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm-theme-illume-efenniht/LICENSE
@@ -0,0 +1,25 @@
+Copyright notice for Enlightenment:
+
+Copyright (C) 2000-2010 Carsten Haitzler and various contributors (see AUTHORS)
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above copyright 
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm-theme-illume-efenniht_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm-theme-illume-efenniht_svn.bb
new file mode 100644
index 0000000..965e4e9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm-theme-illume-efenniht_svn.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "efenniht illume theme - Efenniht was devised to be clean \
+and neutral. Its name (which means equinox) comes from the chromatic duality \
+that was decided at the very beginning, with a dark theme (black and orange) \
+and a bright one (white and blue) to be developed so that more people feel \
+comfortable using it. Efenniht uses few animations, discrete contrasts between \
+shades of gray and fine lines (colored) that outline the selected elements."
+SECTION = "e/utils"
+HOMEPAGE = "http://trac.enlightenment.org/e/wiki/Themes#Efenniht"
+DEPENDS = "edje-native"
+RDEPENDS_${PN} = "e-wm"
+RSUGGESTS_${PN} = "elementary-theme-efenniht"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=f523ab5986cc79b52a90d2ac3d5454a2"
+
+SRCREV = "${EFL_SRCREV}"
+PV = "0.0+svnr${SRCPV}"
+
+inherit e-base allarch
+
+SRCNAME = "efenniht"
+SRC_URI = "${E_SVN}/trunk/THEMES;module=${SRCNAME};protocol=http \
+           file://LICENSE \
+"
+S = "${WORKDIR}/${SRCNAME}"
+
+do_compile() {
+    ${STAGING_BINDIR_NATIVE}/edje_cc -id ${S}/images ${S}/efenniht.edc -o ${S}/efenniht.edj
+}
+
+do_install() {
+    install -d ${D}${datadir}/enlightenment/data/themes/
+    install -m 0644 ${S}/efenniht.edj ${D}${datadir}/enlightenment/data/themes/
+}
+
+FILES_${PN} = "${datadir}/enlightenment/data/themes/"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm.inc
new file mode 100644
index 0000000..444ec89
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm.inc
@@ -0,0 +1,202 @@
+DESCRIPTION = "The Enlightenment Window Manager Version 17"
+DEPENDS = "eet evas eina ecore edje efreet edbus eeze eio elementary libxcb xcb-util-keysyms"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=76de290eb3fdda12121830191c152a7d"
+SRCNAME = "e"
+
+inherit e update-alternatives gettext pkgconfig
+S = "${WORKDIR}/${SRCNAME}"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+PACKAGECONFIG[pam] = "--enable-pam,--disable-pam,libpam"
+PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd"
+
+
+EXTRA_OECONF = "\
+    --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
+    --with-eet-eet=${STAGING_BINDIR_NATIVE}/eet \
+    --x-includes=${STAGING_INCDIR}/X11 \
+    --x-libraries=${STAGING_LIBDIR} \
+    --enable-simple-x11 \
+"
+
+do_configure_prepend() {
+    autopoint || true
+    sed '/^ *EFL_PKG_CHECK_VAR/ s/systemduserunitdir/systemdsystemunitdir/g' -i ${S}/configure.ac
+}
+
+do_install_append() {
+    # customising - should rather make this simple upstream
+    install -m 755 ${WORKDIR}/enlightenment_start.oe ${D}/${bindir}
+
+    # security reasons, e-wm checks that in runtime
+    # xinit[418]: ERROR: CONFIGURATION FILE HAS BAD PERMISSIONS
+    chmod 600 ${D}/${sysconfdir}/enlightenment/sysactions.conf
+
+    install -d ${D}/${sysconfdir}/xdg/menus
+    install -m 644 ${WORKDIR}/applications.menu ${D}/${sysconfdir}/xdg/menus/
+    for I in `find ${D}/${libdir}/enlightenment -name "*.a" -print`; do rm -f $I; done
+    for I in `find ${D}/${libdir}/enlightenment -name "*.la" -print`; do rm -f $I; done
+
+    # work around for issue caused in r78978, more infor in:
+    # http://sourceforge.net/mailarchive/forum.php?thread_name=20121118194904.GA3438%40jama.jama.net&forum_name=enlightenment-devel
+    mv ${D}/${libdir}/enlightenment/modules/policies ${D}/${libdir}/enlightenment/modules/illume2/ \
+      || echo "illume2 policies are in correct place now"
+    mv ${D}/${libdir}/enlightenment/modules/keyboards ${D}/${libdir}/enlightenment/modules/illume2/ \
+      || echo "illume2 keyboards are in correct place now"
+}
+
+RDEPENDS_${PN} += "\
+    shared-mime-info \
+    mime-support \
+    setxkbmap \
+    edje-utils \
+    ${PN}-utils \
+    dbus-x11 \
+"
+
+# Uclibc build don't have 'glibc-utils'
+RDEPENDS_${PN}_append_libc-glibc = " glibc-utils "
+
+# The systray module used to be external, but is part of e-wm now
+RREPLACES_${PN} = "systray"
+
+RREPLACES_${PN}-config-mobile = "${PN}-config-illume2"
+RCONFLICTS_${PN}-config-mobile = "${PN}-config-illume2"
+RPROVIDES_${PN}-config-mobile = "${PN}-config-illume2"
+
+PACKAGES =+ "\
+    ${PN}-config-default \
+    ${PN}-config-mobile \
+    ${PN}-config-minimalist \
+    ${PN}-config-netbook \
+    ${PN}-config-scaleable \
+    ${PN}-config-standard \
+    ${PN}-config-tiling \
+    ${PN}-theme-default \
+    ${PN}-background-dark-gradient \
+    ${PN}-background-light-gradient \
+    ${PN}-backgrounds \
+    ${PN}-images \
+    ${PN}-icons \
+    ${PN}-other \
+    ${PN}-input-methods \
+    ${PN}-sysactions \
+    ${PN}-utils \
+    ${PN}-menu \
+    efm-desktop-icon \
+    illume-keyboard-default-alpha \
+    illume-keyboard-default-numeric \
+    illume-keyboard-default-terminal \
+"
+
+ESYSACTIONS ?= "${PN}-sysactions"
+
+RRECOMMENDS_${PN} = "\
+    ${PN}-config-default \
+    ${PN}-images \
+    ${PN}-icons \
+    ${PN}-other \
+    ${PN}-input-methods \
+    ${ESYSACTIONS} \
+    efreet \
+    evas-generic-loader-svg \
+"
+
+FILES_${PN} = "\
+    ${bindir}/* \
+    ${libdir}/enlightenment/utils/* \
+    ${libdir}/enlightenment/modules/*/*.* \
+    ${libdir}/enlightenment/modules/*/*/* \
+    ${libdir}/enlightenment/modules/*/*/.order \
+    ${libdir}/enlightenment/modules/keyboards/ignore_built_in_keyboards \
+    ${libdir}/enlightenment/*plugins/*/*/* \
+    ${libdir}/enlightenment/preload/e_precache.so \
+    ${datadir}/enlightenment/data/icons \
+    ${datadir}/enlightenment/data/favorites \
+    ${datadir}/enlightenment/data/input_methods \
+    ${datadir}/enlightenment/data/config/profile.cfg \
+    ${datadir}/enlightenment/AUTHORS \
+    ${datadir}/enlightenment/COPYING \
+    ${datadir}/xsessions/enlightenment.desktop \
+    ${sysconfdir}/xdg \
+    ${systemd_unitdir} \
+"
+
+FILES_${PN}-config-default = "${datadir}/enlightenment/data/config/default"
+FILES_${PN}-config-mobile = "${datadir}/enlightenment/data/config/mobile"
+FILES_${PN}-config-minimalist = "${datadir}/enlightenment/data/config/minimalist"
+FILES_${PN}-config-netbook = "${datadir}/enlightenment/data/config/netbook"
+FILES_${PN}-config-scaleable = "${datadir}/enlightenment/data/config/scaleable"
+FILES_${PN}-config-standard = "${datadir}/enlightenment/data/config/standard"
+FILES_${PN}-config-tiling = "${datadir}/enlightenment/data/config/tiling"
+FILES_${PN}-theme-default = "${datadir}/enlightenment/data/themes/default.edj"
+FILES_${PN}-theme-default = "${datadir}/enlightenment/data/themes/default.edj"
+FILES_${PN}-background-dark-gradient = "${datadir}/enlightenment/data/backgrounds/Dark_Gradient.edj"
+FILES_${PN}-background-light-gradient = "${datadir}/enlightenment/data/backgrounds/Light_Gradient.edj"
+FILES_${PN}-backgrounds = "${datadir}/enlightenment/data/backgrounds/*.edj"
+FILES_${PN}-images = "${datadir}/enlightenment/data/images ${datadir}/enlightenment/data/flags"
+FILES_${PN}-icons = "${datadir}/enlightenment/data/icons"
+FILES_${PN}-other = "${datadir}/enlightenment/data/other"
+FILES_${PN}-input-methods = "${datadir}/enlightenment/data/input_methods"
+FILES_${PN}-sysactions = "${sysconfdir}/enlightenment/sysactions.conf"
+FILES_${PN}-utils = "${libdir}/enlightenment/utils/*"
+FILES_${PN}-menu = "${sysconfdir}/xdg/menus/applications.menu"
+
+FILES_efm-desktop-icon = "\
+    ${datadir}/applications/efm.desktop \
+    ${datadir}/applications/enlightenment_filemanager.desktop \
+    ${datadir}/icons/e-module-fileman.png \
+"
+
+KEYBOARDS_DIR="${libdir}/enlightenment/modules/illume-keyboard/keyboards"
+FILES_illume-keyboard-default-alpha = "\
+    ${KEYBOARDS_DIR}/Default.kbd \
+    ${KEYBOARDS_DIR}/alpha.png \
+"
+FILES_illume-keyboard-default-numeric = "\
+    ${KEYBOARDS_DIR}/Numbers.kbd \
+    ${KEYBOARDS_DIR}/numeric.png \
+"
+FILES_illume-keyboard-default-terminal = "\
+    ${KEYBOARDS_DIR}/Terminal.kbd \
+    ${KEYBOARDS_DIR}/qwerty.png \
+"
+
+RRECOMMENDS_${PN}-config-default = "${PN}-theme-default"
+RRECOMMENDS_${PN}-config-mobile = "\
+    illume-keyboard-default-alpha \
+    illume-keyboard-default-numeric \
+    illume-keyboard-default-terminal \
+"
+
+RRECOMMENDS_${PN}-config-minimalist = "\
+    ${PN}-background-light-gradient \
+    ${PN}-theme-default \
+"
+RRECOMMENDS_${PN}-config-netbook = "\
+    ${PN}-background-dark-gradient \
+    ${PN}-theme-default \
+"
+RRECOMMENDS_${PN}-config-scaleable = "${PN}-theme-default"
+RRECOMMENDS_${PN}-config-standard = "${PN}-theme-default"
+
+FILES_${PN}-dbg += "\
+    ${libdir}/enlightenment/modules/*/*/.debug/ \
+    ${libdir}/enlightenment/modules/policies/.debug/ \
+    ${libdir}/enlightenment/preload/.debug/ \
+    ${libdir}/enlightenment/utils/.debug/ \
+    ${libdir}/enlightenment/*plugins/*/*/.debug \
+"
+
+FILES_${PN}-doc += "\
+    ${datadir}/enlightenment/doc \
+"
+
+CONFFILES_${PN}-menu = "${sysconfdir}/xdg/menus/applications.menu"
+CONFFILES_${PN}-sysactions = "/etc/enlightenment/sysactions.conf"
+
+ALTERNATIVE_${PN} = "x-window-manager"
+ALTERNATIVE_TARGET[x-window-manager] = "${bindir}/enlightenment_start.oe"
+ALTERNATIVE_PRIORITY[x-window-manager] = "16"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/0001-Fix-incorrect-message-type.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/0001-Fix-incorrect-message-type.patch
new file mode 100644
index 0000000..e718ef3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/0001-Fix-incorrect-message-type.patch
@@ -0,0 +1,28 @@
+From 0aef43c9cd1656413cf2eb3dc7c19b355ee7ed52 Mon Sep 17 00:00:00 2001
+From: Carlos Rafael Giani <dv@pseudoterminal.org>
+Date: Sun, 1 Jun 2014 14:45:49 +0200
+Subject: [PATCH] Fix incorrect message type
+
+Upstream-Status: Pending
+
+Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
+---
+ src/bin/e_desk.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c
+index b156e19..77d7520 100644
+--- a/src/bin/e_desk.c
++++ b/src/bin/e_desk.c
+@@ -221,7 +221,7 @@ e_desk_show(E_Desk *desk)
+    E_Event_Desk_Show *ev;
+    E_Event_Desk_Before_Show *eev;
+    E_Event_Desk_After_Show *eeev;
+-   Edje_Message_Float_Set *msg;
++   Edje_Message_Int_Set *msg;
+    Eina_List *l;
+    E_Shelf *es;
+    int was_zone = 0, x, y, dx = 0, dy = 0;
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/0001-configure.ac-add-foreign.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/0001-configure.ac-add-foreign.patch
new file mode 100644
index 0000000..c7a574c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/0001-configure.ac-add-foreign.patch
@@ -0,0 +1,29 @@
+From 19e59b6e8148388e7a17f10d4390176a50e2917f Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Mon, 25 Aug 2014 16:06:03 +0200
+Subject: [PATCH] configure.ac: add foreign
+
+* fixes:
+  | configure.ac:312: error: required file './ABOUT-NLS' not found
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 51ad0ba..cd77739 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -34,7 +34,7 @@ AH_BOTTOM([
+ #endif /* EFL_CONFIG_H__ */
+ ])
+ 
+-AM_INIT_AUTOMAKE([1.11 dist-bzip2 dist-xz -Wno-portability])
++AM_INIT_AUTOMAKE([1.11 dist-bzip2 dist-xz -Wno-portability foreign])
+ AM_SILENT_RULES([yes])
+ 
+ AC_USE_SYSTEM_EXTENSIONS
+-- 
+2.3.0
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/applications.menu b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/applications.menu
new file mode 100644
index 0000000..ed9b906
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/applications.menu
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://standards.freedesktop.org/menu-spec/menu-1.0.dtd">
+<Menu>
+  <Name>Applications</Name>
+  <!--   <Directory>Applications.directory</Directory> -->
+
+  <!-- Read standard .directory and .desktop file locations -->
+  <DefaultAppDirs>/usr/share/applications</DefaultAppDirs>
+  <DefaultDirectoryDirs/>
+
+  <Menu>
+    <Name>Office</Name>
+    <Directory>Office.directory</Directory>
+    <Include>
+      <And>
+        <Category>Office</Category>
+      </And>
+    </Include>
+  </Menu>
+  
+  <Menu>
+    <Name>Multimedia</Name>
+    <Directory>Multimedia.directory</Directory>
+    <Include>
+      <And>
+        <Category>AudioVideo</Category>
+      </And>
+    </Include>
+  </Menu>
+
+  <Menu>
+    <Name>Graphics</Name>
+    <Directory>Graphics.directory</Directory>
+    <Include>
+      <And>
+        <Category>Graphics</Category>
+      </And>
+    </Include>
+  </Menu>
+
+  <Menu>
+    <Name>Games</Name>
+    <Directory>Games.directory</Directory>
+    <Include>
+      <And>
+        <Or>
+         <Category>Game</Category>
+         <Category>Games</Category>
+        </Or>
+      </And>
+    </Include>
+  </Menu>
+
+  <Menu>
+    <Name>Internet</Name>
+    <Directory>Internet.directory</Directory>
+    <Include>
+      <And>
+        <Or>
+         <Category>Internet</Category>
+         <Category>Network</Category>
+        </Or>
+      </And>
+    </Include>
+  </Menu>
+
+  <Menu>
+    <Name>Settings</Name>
+    <Directory>Settings.directory</Directory>
+    <Include>
+      <And>
+        <Or>
+          <Category>SystemSettings</Category>
+          <Category>Settings</Category>
+        </Or>
+        <Not>
+          <Category>System</Category>
+        </Not>
+      </And>
+    </Include>
+  </Menu>
+
+  <Menu>
+    <Name>Accessories</Name>
+    <Directory>Accessories.directory</Directory>
+    <Include>
+      <And>
+        <Or>
+          <Category>Applications</Category>
+          <Category>Utility</Category>
+        </Or>
+        <Not>
+          <Category>System</Category>
+          <Category>Office</Category>
+          <Category>Internet</Category>
+          <Category>AudioVideo</Category>
+          <Category>Graphics</Category>
+          <Category>Games</Category>
+        </Not>
+      </And>
+    </Include>
+  </Menu>
+  
+</Menu>
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/enlightenment_start.oe b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/enlightenment_start.oe
new file mode 100644
index 0000000..ff86172
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm/enlightenment_start.oe
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+E_PROFILE=""
+if [ -r /etc/enlightenment/default_profile ]; then
+  . /etc/enlightenment/default_profile
+fi
+
+renice -2 -p $$
+exec enlightenment_start $E_PROFILE
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm_0.18.8.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm_0.18.8.bb
new file mode 100644
index 0000000..6b4c9fc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm_0.18.8.bb
@@ -0,0 +1,15 @@
+require ${BPN}.inc
+
+SRCNAME = "enlightenment"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+SRC_URI = "\
+    ${E_RELEASES}/apps/${SRCNAME}/${SRCNAME}-${SRCVER}.tar.gz \
+    file://enlightenment_start.oe \
+    file://applications.menu \
+    file://0001-Fix-incorrect-message-type.patch \
+"
+
+SRC_URI[md5sum] = "79c9f524e1d0510061c62c4b038a8ece"
+SRC_URI[sha256sum] = "14c9bde4334d2f8b0776c6113d02b923ab159eea1cbf7013489e4f3bf37a51bb"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm_0.19.10.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm_0.19.10.bb
new file mode 100644
index 0000000..86ce03d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm_0.19.10.bb
@@ -0,0 +1,19 @@
+require ${BPN}.inc
+
+SRCNAME = "enlightenment"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+# couple of modules needed for illume2 (mobile) profile were removed in
+# http://git.enlightenment.org/core/enlightenment.git/commit/src/modules/Makefile.mk?id=1be76d599ca27f820b58b8186c5f73d9844c67ca
+# and replacements aren't included yet, if you want to use e-wm on device with small screen, better stay with 0.18 release
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "\
+    ${E_RELEASES}/apps/${SRCNAME}/${SRCNAME}-${SRCVER}.tar.gz \
+    file://enlightenment_start.oe \
+    file://applications.menu \
+"
+
+SRC_URI[md5sum] = "9063617760329445ada8635270a4e627"
+SRC_URI[sha256sum] = "484d305bcf403303b18c46a3a498445b93689cd325010ae8d0601551926469d8"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm_git.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm_git.bb
new file mode 100644
index 0000000..9eb839b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/e-wm_git.bb
@@ -0,0 +1,14 @@
+require ${BPN}.inc
+
+PV = "0.19.4+git${SRCPV}"
+DEFAULT_PREFERENCE = "-2"
+
+SRC_URI = " \
+    git://git.enlightenment.org/core/enlightenment.git;branch=enlightenment-0.19 \
+    file://0001-configure.ac-add-foreign.patch \
+    file://enlightenment_start.oe \
+    file://applications.menu \
+"
+S = "${WORKDIR}/git"
+
+SRCREV = "4545d4a70031e0b2565b8d83d5f756bff1a584d0"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/edje-viewer_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/edje-viewer_svn.bb
new file mode 100644
index 0000000..2b927a0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/edje-viewer_svn.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Edje_Viewer is just that"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35 \
+                    file://COPYING-PLAIN;md5=e01359041001e8bf24c09acca556e792"
+
+DEPENDS = "elementary"
+PV = "0.0.0+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+
+inherit e
+
+SRCNAME = "edje_viewer"
+SRC_URI = "${E_SVN}/trunk;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
+
+FILES_${PN} += "${datadir}"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elbow_git.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elbow_git.bb
new file mode 100644
index 0000000..06ed2c9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elbow_git.bb
@@ -0,0 +1,26 @@
+SUMMARY = "EFL based browser"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6a6a8e020838b23406c81b19c1d46df6"
+DEPENDS = "evas ecore edje eina elementary webkit-efl sqlite3"
+
+PV = "0.0.1+gitr${SRCPV}"
+SRCREV = "b41fd0bc9514ff61bb2a50d957efe4155fa3e6a8"
+
+# webkit-efl isn't available for < armv7a
+COMPATIBLE_MACHINE = "(-)"
+COMPATIBLE_MACHINE_x86 = "(.*)"
+COMPATIBLE_MACHINE_x86-64 = "(.*)"
+COMPATIBLE_MACHINE_armv7a = "(.*)"
+
+inherit e gettext cmake
+
+EXTRA_OECMAKE = "-DDATA_INSTALL_DIR=${datadir}"
+
+SRC_URI = " \
+    git://github.com/bunhere/elbow.git;protocol=https \
+"
+S = "${WORKDIR}/git"
+
+FILES_${PN} += "${datadir}/themes"
+
+PNBLACKLIST[elbow] ?= "Depends on blacklisted webkit-efl"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elfe_git.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elfe_git.bb
new file mode 100644
index 0000000..fcb97a9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elfe_git.bb
@@ -0,0 +1,15 @@
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35"
+PV = "0.0.1+gitr${SRCPV}"
+PE = "1"
+
+require e-module.inc
+
+SRC_URI = " \
+    git://git.enlightenment.org/enlightenment/modules/${BPN}.git \
+"
+S = "${WORKDIR}/git"
+
+SRCREV = "1ec0e7713c3ca901014811ff78277d9e2aaac981"
+
+DEPENDS += "elementary"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elmdentica/configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elmdentica/configure.patch
new file mode 100644
index 0000000..79a981b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elmdentica/configure.patch
@@ -0,0 +1,13 @@
+Index: elmdentica/configure.ac
+===================================================================
+--- elmdentica.orig/configure.ac	2014-07-17 21:46:14.712566207 +0000
++++ elmdentica/configure.ac	2014-07-17 21:51:34.960574935 +0000
+@@ -3,7 +3,7 @@
+ AM_CONFIG_HEADER(config.h)
+ AC_CONFIG_MACRO_DIR([m4])
+ 
+-AM_INIT_AUTOMAKE
++AM_INIT_AUTOMAKE([foreign])
+ 
+ AC_PROG_CC
+ AC_GNU_SOURCE
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elmdentica_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elmdentica_svn.bb
new file mode 100644
index 0000000..56a74c5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/elmdentica_svn.bb
@@ -0,0 +1,23 @@
+SUMMARY = "A indenti.ca client for E"
+DEPENDS = "glib-2.0 gconf curl elementary sqlite3-native azy"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SECTION = "e/apps"
+HOMEPAGE = "http://elmdentica.googlecode.com"
+AUTHOR = "seabra"
+
+inherit e gettext
+SRC_URI = "${E_SVN}/trunk;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
+
+EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
+
+PV = "0.9.9+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+
+RDEPENDS_${PN} = "${PN}-themes"
+
+SRC_URI += "file://configure.patch"
+
+PNBLACKLIST[elmdentica] ?= "OLD and depends on broken azy"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/emprint_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/emprint_svn.bb
new file mode 100644
index 0000000..e4c9816
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/emprint_svn.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Emprint is a utility for taking screenshots of the entire screen, a specific window, or a specific region."
+LICENSE = "MIT & BSD"
+DEPENDS = "imlib2 virtual/libx11 ecore evas edje eina"
+PV = "0.0.1+svnr${SRCPV}"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35"
+SRCREV = "${EFL_SRCREV}"
+
+inherit e
+SRC_URI = "${E_SVN}/trunk;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
+
+FILES_${PN}-dbg += "${libdir}/${PN}/modules/.debug"
+
+PNBLACKLIST[emprint] ?= "if you want to use these modules with E18, then you need to update it to git recipe fetching newer sources from http://git.enlightenment.org/apps/emprint.git/"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/enjoy/0001-always-use-position-as-percent-and-define-a-1-second.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/enjoy/0001-always-use-position-as-percent-and-define-a-1-second.patch
new file mode 100644
index 0000000..0962450
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/enjoy/0001-always-use-position-as-percent-and-define-a-1-second.patch
@@ -0,0 +1,133 @@
+From 751505501e0db31cf766ec0ae95a6968b4d1eb93 Mon Sep 17 00:00:00 2001
+From: Alban Browaeys <prahal@yahoo.com>
+Date: Wed, 5 Sep 2012 02:58:26 +0000
+Subject: [PATCH] always use position as percent and define a 1 seconds
+ tolerance.
+
+Fix "reverb" effect: ie loop between setting the slider to match
+the position and handling slider to position (seek).
+---
+ data/themes/default.edc |  8 +++-----
+ src/bin/win.c           | 28 ++++++++++++++++++++++------
+ 2 files changed, 25 insertions(+), 11 deletions(-)
+
+diff --git a/data/themes/default.edc b/data/themes/default.edc
+index ebf8ba4..7a906b1 100644
+--- a/data/themes/default.edc
++++ b/data/themes/default.edc
+@@ -186,7 +186,6 @@ collections {
+    group {
+       name: "nowplaying";
+       script {
+-         public cur_length;
+          public mute;
+ 
+          public get_time_str(Float:time, time_str[6])
+@@ -201,16 +200,15 @@ collections {
+                new Float:position = getfarg(2);
+                new Float:length = getfarg(3);
+                if (length > 0)
+-                  external_param_set_float(PART:"progress.slider", "value", position / length * 100);
++                  external_param_set_float(PART:"progress.slider", "value", position * 100);
+                else
+                   external_param_set_float(PART:"progress.slider", "value", 0);
+ 
+                new time_str[6];
+-               get_time_str(position, time_str);
++               get_time_str(position * length, time_str);
+                set_text(PART:"ejy.text.current_time", time_str);
+                get_time_str(length, time_str);
+                set_text(PART:"ejy.text.total_time", time_str);
+-               set_float(cur_length, length);
+             } else if (type == MSG_INT && id == MSG_SHUFFLE) {
+                external_param_set_bool(PART:"buttons.shuffle", "state", getarg(2));
+             } else if (type == MSG_INT && id == MSG_LOOP) {
+@@ -689,7 +687,7 @@ collections {
+             source: "progress.slider";
+             signal: "changed";
+             script {
+-               send_message(MSG_FLOAT, MSG_POSITION, (external_param_get_float(PART:"progress.slider", "value") * get_float(cur_length) / 100));
++               send_message(MSG_FLOAT, MSG_POSITION, (external_param_get_float(PART:"progress.slider", "value") / 100));
+             }
+          }
+          program {
+diff --git a/src/bin/win.c b/src/bin/win.c
+index 2f65953..428e268 100644
+--- a/src/bin/win.c
++++ b/src/bin/win.c
+@@ -194,8 +194,8 @@ _win_play_eval(Win *w)
+ {
+    Edje_Message_Float_Set *mf;
+ 
+-   w->play.position = emotion_object_position_get(w->emotion);
+    w->play.length = emotion_object_play_length_get(w->emotion);
++   w->play.position = emotion_object_position_get(w->emotion) / w->play.length;
+ 
+    if ((w->song) && (w->song->length != (int)w->play.length))
+       db_song_length_set(w->db, w->song, w->play.length);
+@@ -542,8 +542,14 @@ _win_edje_msg(void *data, Evas_Object *o __UNUSED__, Edje_Message_Type type, int
+          else
+            {
+               Edje_Message_Float *m = msg;
++
++              if ((((m->val - w->play.position) * w->play.length) < 1.0)
++                  && (((w->play.position - m->val) * w->play.length) < 1.0))
++                  return;
++
+               w->play.position = m->val;
+-              emotion_object_position_set(w->emotion, w->play.position);
++              emotion_object_position_set(w->emotion, w->play.position
++                                                            * w->play.length);
+               ecore_event_add(ENJOY_EVENT_POSITION_CHANGE, NULL, NULL, NULL);
+            }
+         break;
+@@ -617,16 +623,21 @@ enjoy_control_seek(uint64_t position)
+ {
+    Win *w = &_win;
+    double seek_to;
++   double new_pos = w->play.length / ((double)position / 1e6);
+ 
+    if (!w->db) return;
+-   seek_to = w->play.position + w->play.length / ((double)position / 1e6);
++
++   if ((((new_pos - w->play.position) * w->play.length) < 1.0)
++       && (((w->play.position - new_pos) * w->play.length) < 1.0)) return;
++
++   seek_to = w->play.position + new_pos;
+    if (seek_to <= 0.0)
+      seek_to = 0.0;
+    else if (seek_to >= 1.0)
+      seek_to = 1.0;
+ 
+    w->play.position = seek_to;
+-   emotion_object_position_set(w->emotion, w->play.position);
++   emotion_object_position_set(w->emotion, w->play.position * w->play.length);
+    ecore_event_add(ENJOY_EVENT_POSITION_CHANGE, NULL, NULL, NULL);
+ }
+ 
+@@ -692,15 +703,20 @@ EAPI void
+ enjoy_position_set(int32_t position)
+ {
+    Win *w = &_win;
++   double new_pos = w->play.length / ((double)position / 1e6);
+ 
+    if (!w->db) return;
+-   w->play.position = w->play.length / ((double)position / 1e6);
++
++   if ((((new_pos - w->play.position) * w->play.length) < 1.0)
++       && (((w->play.position - new_pos) * w->play.length) < 1.0)) return;
++
++   w->play.position = new_pos;
+    if (w->play.position < 0.0)
+      w->play.position = 0.0;
+    else if (w->play.position > 1.0)
+      w->play.position = 1.0;
+ 
+-   emotion_object_position_set(w->emotion, w->play.position);
++   emotion_object_position_set(w->emotion, w->play.position * w->play.length);
+    ecore_event_add(ENJOY_EVENT_POSITION_CHANGE, NULL, NULL, NULL);
+ }
+ 
+-- 
+1.8.5.2
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/enjoy/configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/enjoy/configure.patch
new file mode 100644
index 0000000..6e0ed74
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/enjoy/configure.patch
@@ -0,0 +1,13 @@
+Index: git/configure.ac
+===================================================================
+--- git.orig/configure.ac	2014-07-17 21:48:51.284570474 +0000
++++ git/configure.ac	2014-07-17 21:53:39.104578318 +0000
+@@ -26,7 +26,7 @@
+ AC_CANONICAL_HOST
+ AC_ISC_POSIX
+ 
+-AM_INIT_AUTOMAKE(1.6 dist-bzip2)
++AM_INIT_AUTOMAKE([dist-bzip2 foreign])
+ AC_CONFIG_HEADERS(config.h)
+ _XTERM_COLORS
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/enjoy_git.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/enjoy_git.bb
new file mode 100644
index 0000000..297cbd5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/enjoy_git.bb
@@ -0,0 +1,48 @@
+SUMMARY = "Enjoy music player"
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6a6a8e020838b23406c81b19c1d46df6"
+DEPENDS = "evas ecore edje elementary emotion lightmediascanner eldbus gst-plugins-good"
+
+SRCREV = "aa8fec69e885eec048a849c2b34059ec58404e02"
+PV = "0.1.0+gitr${SRCPV}"
+
+#1st needed for all formats
+#2nd needed for mp3 playback
+#3d needed for ogg playback
+#4th needed for flac playback
+#5th needed binary to create db
+RDEPENDS_${PN} += "\
+       gst-plugins-base-typefindfunctions gst-plugins-base-playbin gst-plugins-base-volume gst-plugins-base-decodebin2 gst-plugins-good-autodetect \
+       gst-plugins-base-ogg gst-plugins-base-ivorbisdec \
+       gst-plugins-good-flac \
+       lightmediascanner-test \
+"
+
+inherit e gettext
+SRC_URI = " \
+    git://git.enlightenment.org/apps/enjoy.git \
+    file://0001-always-use-position-as-percent-and-define-a-1-second.patch \
+    file://configure.patch \
+"
+S = "${WORKDIR}/git"
+
+FILES_${PN} += "${datadir}/icons/"
+
+EXTRA_OECONF = "\
+    --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
+"
+
+PACKAGECONFIG[mad] = ",,gst-plugins-ugly,gst-plugins-ugly-mad"
+PACKAGECONFIG[id3demux] = ",,,gst-plugins-good-id3demux"
+
+do_configure_prepend() {
+    autopoint || touch config.rpath
+}
+
+pkg_postinst_${PN} () {
+    echo "enjoy:    SCAN and LIBRARY MANAGER are not implemeted yet!"
+    echo "enjoy:    Meanwhile please run:"
+    echo "enjoy:    test-lms -m mono -p id3 -i 5000 -s /path/to/your/music/dir /home/root/.config/enjoy/media.db"
+    echo "enjoy:"
+    echo "enjoy:    Use test-lms -P to see available formats that can be scanned"
+}
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/ephoto/configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/ephoto/configure.patch
new file mode 100644
index 0000000..59466f8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/ephoto/configure.patch
@@ -0,0 +1,13 @@
+Index: ephoto/configure.ac
+===================================================================
+--- ephoto.orig/configure.ac	2014-07-17 21:48:51.028570467 +0000
++++ ephoto/configure.ac	2014-07-17 21:52:56.120577146 +0000
+@@ -27,7 +27,7 @@
+ AC_CANONICAL_HOST
+ AC_ISC_POSIX
+ 
+-AM_INIT_AUTOMAKE(1.6 dist-bzip2)
++AM_INIT_AUTOMAKE([dist-bzip2 foreign])
+ AM_CONFIG_HEADER(src/bin/config.h)
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ 
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/ephoto_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/ephoto_svn.bb
new file mode 100644
index 0000000..5cecda5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/ephoto_svn.bb
@@ -0,0 +1,19 @@
+LICENSE = "MIT & GPL-3.0"
+PV = "0.1.0+svnr${SRCREV}"
+PR = "${INC_PR}.0"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=fdffcddb366d0cc78e0e46c4ea70c8d9 \
+                    file://COPYING.icons;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+require e-module.inc
+
+inherit gettext
+
+DEPENDS += "elementary ethumb ecore eio"
+
+SRCNAME = "${PN}"
+
+# autotools-brokensep
+B = "${S}"
+
+SRC_URI += "file://configure.patch"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exalt-client/configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exalt-client/configure.patch
new file mode 100644
index 0000000..d4ff801
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exalt-client/configure.patch
@@ -0,0 +1,28 @@
+Index: exalt-client/configure.ac
+===================================================================
+--- exalt-client.orig/configure.ac	2014-07-17 21:46:14.712566207 +0000
++++ exalt-client/configure.ac	2014-07-17 21:47:56.880568991 +0000
+@@ -10,7 +10,7 @@
+ AC_CANONICAL_HOST
+ AC_ISC_POSIX
+ 
+-AM_INIT_AUTOMAKE(1.8)
++AM_INIT_AUTOMAKE([foreign])
+ AM_CONFIG_HEADER(config.h)
+ 
+ AC_PROG_CC
+@@ -29,7 +29,6 @@
+ 
+ m4_ifdef([AM_GNU_GETTEXT], [
+ AM_GNU_GETTEXT([external])
+-po_makefile_in=po/Makefile.in
+ AM_CONDITIONAL([HAVE_PO], [true])
+ ],[
+ AM_CONDITIONAL([HAVE_PO], [false])
+@@ -101,6 +100,5 @@
+ src/Makefile
+ module.desktop
+ e_modules-exalt-client.spec
+-$po_makefile_in
+ ], [
+ ])
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exalt-client_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exalt-client_svn.bb
new file mode 100644
index 0000000..f708601
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exalt-client_svn.bb
@@ -0,0 +1,25 @@
+LICENSE = "LGPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+
+PV = "0.0.1+svnr${SRCPV}"
+
+require e-module.inc
+
+DEPENDS += "elementary exalt edje-native"
+
+CFLAGS += " -I${STAGING_INCDIR}/exalt -I${STAGING_INCDIR}/exalt_dbus"
+
+do_configure_prepend() {
+    sed -i -e /po/d ${S}/configure.ac
+    sed -i -e s:\ po::g ${S}/Makefile.am
+}
+
+FILES_${PN} += "${libdir}/enlightenment/modules/*/*.desktop \
+                ${libdir}/enlightenment/modules/*/*.edj \
+                ${libdir}/enlightenment/modules/*/*/*.so"
+
+FILES_${PN}-staticdev += "${libdir}/enlightenment/modules/*/*/*.a"
+FILES_${PN}-dev += "${libdir}/enlightenment/modules/*/*/*.la"
+FILES_${PN}-dbg += "${libdir}/enlightenment/modules/*/*/.debug"
+ 
+SRC_URI += "file://configure.patch"
\ No newline at end of file
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exalt_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exalt_svn.bb
new file mode 100644
index 0000000..1f1c850
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exalt_svn.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Exalt is a network manager for the windows manager Enlightenment DR17"
+HOMEPAGE = "http://watchwolf.fr/wiki/doku.php?id=exalt"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+
+DEPENDS = "elementary vpnc wpa-supplicant ecore eet edbus"
+RDEPENDS_${PN} = "vpnc wpa-supplicant"
+
+PV = "0.9+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+
+inherit e
+SRC_URI = "${E_SVN}/trunk;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
+
+EXTRA_OECONF = " \
+--with-wpa_supplicant=${sbindir}/wpa_supplicant \
+--with-vpnc=${sbindir}/vpnc \
+--with-vpnc-disconnect=${sbindir}/vpnc-disconnect \
+"
+
+do_install_append() {
+    # install dbus config file
+    install -d ${D}${sysconfdir}/dbus-1/system.d/
+    install -m 0644 ${S}/data/daemon/dbus/exalt.conf ${D}${sysconfdir}/dbus-1/system.d/exalt.conf
+
+    # install dbus service file
+    install -d ${D}${datadir}/dbus-1/system-services/
+    install -m 0644 ${B}/org.e.Exalt.service ${D}${datadir}/dbus-1/system-services/
+}
+
+FILES_${PN} += "${datadir}/dbus-1"
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite-theme-illume.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite-theme-illume.bb
new file mode 100644
index 0000000..aad0646
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite-theme-illume.bb
@@ -0,0 +1,35 @@
+DDESCRIPTION = "A theme for exquisite"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=f523ab5986cc79b52a90d2ac3d5454a2"
+SECTION = "x11"
+DEPENDS = "edje-native"
+PV = "1.0+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+
+inherit e-base update-alternatives allarch
+
+ALTERNATIVE_NAME = "exquisite-config"
+ALTERNATIVE_LINK = "${sysconfdir}/exquisite/config"
+ALTERNATIVE_PATH = "${sysconfdir}/exquisite/config-illume"
+ALTERNATIVE_PRIORITY = "10"
+
+SRCNAME = "b_and_w"
+
+SRC_URI = "${E_SVN}/trunk/THEMES;module=${SRCNAME};protocol=http \
+           file://LICENSE \
+"
+S = "${WORKDIR}/${SRCNAME}"
+
+do_compile() {
+    ${STAGING_BINDIR_NATIVE}/edje_cc exquisite.edc illume.edj
+}
+
+do_install() {
+    install -d ${D}${sysconfdir}/exquisite
+    install -d ${D}${datadir}/exquisite/data/themes
+    install -m 0644 ${S}/illume.edj ${D}${datadir}/exquisite/data/themes/
+    echo 'THEME="-t illume"' > ${D}${sysconfdir}/exquisite/config-illume
+}
+
+CONFFILES_${PN} = "${sysconfdir}/exquisite/config-illume"
+FILES_${PN} = "${sysconfdir}/exquisite ${datadir}/exquisite/data/themes"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite-theme-illume/LICENSE b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite-theme-illume/LICENSE
new file mode 100644
index 0000000..61bb2f6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite-theme-illume/LICENSE
@@ -0,0 +1,25 @@
+Copyright notice for Enlightenment:
+
+Copyright (C) 2000-2010 Carsten Haitzler and various contributors (see AUTHORS)
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above copyright 
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite/exquisite-init b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite/exquisite-init
new file mode 100644
index 0000000..2de6774
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite/exquisite-init
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+for x in $(cat /proc/cmdline); do
+  case $x in
+    splash=false)
+      echo "Splash Disabled"
+      exit 0;
+      ;;
+  esac
+done
+
+. /etc/init.d/functions
+
+### Default config here - gets overriden later
+THEME="-t default"
+FPS="-fps 30"
+### Override config - if there is a config file - load it.
+if test -f /etc/exquisite/config; then
+  . /etc/exquisite/config
+fi
+
+args=''
+case `machine_id` in
+  "hp_ipaq_h3100"|"hp_ipaq_h3800")
+     args='-rot 90' ;;
+  "hp_ipaq_3600"|"hp_ipaq_3700"|"hp_ipaq_h3900"|"htc_universal"|*collie|*poodle|*akita|*spitz|*borzoi)
+     args='-rot 270' ;;
+esac
+args=$args" $FPS $THEME"
+
+export EXDIR=/mnt/.splash
+export EXQUISITE_IPC=$EXDIR/exquisite
+mount tmpfs -t tmpfs $EXDIR -o,size=40k
+exquisite -fb -fs $args &
+
+exquisite-write -wait 120
+exquisite-write "PULSATE"
+setterm -blank 0
+setterm -powersave off
+setterm -powerdown 0
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite/splashfuncs b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite/splashfuncs
new file mode 100644
index 0000000..ada2a96
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite/splashfuncs
@@ -0,0 +1,29 @@
+status() {
+  if type splash-write >/dev/null 2>&1; then
+    (TMPDIR="/mnt/.splash" EXQUISITE_IPC="$TMPDIR/exquisite" splash-write "$1" || true) &
+  fi
+}
+
+status_position() {
+  status "PROGRESS $1"
+}
+
+status_title() {
+  status "TITLE $1"
+}
+
+status_text() {
+  if test -n "$1"; then
+    status "MSG $1"
+  else
+    status "CLEAR"
+  fi
+}
+
+status_pulse() {
+  status "PULSATE"
+}
+
+status_tick() {
+  status "TICK"
+}
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite_svn.bb
new file mode 100644
index 0000000..8f2d25d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/exquisite_svn.bb
@@ -0,0 +1,41 @@
+SUMMARY = "A psplash replacement for display"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=14defa372a91118e755133bc8e6aff83"
+DEPENDS = "eet evas ecore embryo edje"
+PV = "0.0.1+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+RRECOMMENDS_${PN} = "exquisite-themes"
+RCONFLICTS_${PN} = "psplash virtual-psplash"
+
+SRCNAME = "exquisite"
+
+inherit e
+SRC_URI = "${E_SVN}/trunk;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
+
+EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
+
+SRC_URI += "file://exquisite-init"
+SRC_URI += "file://splashfuncs"
+
+inherit update-rc.d
+
+do_install_prepend() {
+    install -d ${D}/mnt/.splash/
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/exquisite-init ${D}${sysconfdir}/init.d/exquisite
+    install -d ${D}${sysconfdir}/default
+    install -m 0755 ${WORKDIR}/splashfuncs ${D}${sysconfdir}/default/splashfuncs
+    install -d ${D}${bindir}
+    ln -s exquisite-write ${D}${bindir}/splash-write
+}
+
+
+do_install_append() {
+    rm -rf ${D}${datadir}/exquisite/data/fonts/*
+}
+
+INITSCRIPT_NAME = "exquisite"
+INITSCRIPT_PARAMS = "start 01 S . stop 20 0 1 6 ."
+
+FILES_${PN} += "/mnt/.splash/"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/flame/configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/flame/configure.patch
new file mode 100644
index 0000000..87c85de
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/flame/configure.patch
@@ -0,0 +1,13 @@
+Index: cpu/configure.ac
+===================================================================
+--- cpu.orig/configure.ac	2014-07-17 20:39:48.000000000 +0000
++++ cpu/configure.ac	2014-07-17 21:39:55.320555868 +0000
+@@ -10,7 +10,7 @@
+ AC_CANONICAL_HOST
+ AC_ISC_POSIX
+ 
+-AM_INIT_AUTOMAKE(1.6)
++AM_INIT_AUTOMAKE([foreign])
+ AM_CONFIG_HEADER(config.h)
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ 
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/flame_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/flame_svn.bb
new file mode 100644
index 0000000..58c79a8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/flame_svn.bb
@@ -0,0 +1,15 @@
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35 \
+                    file://COPYING-PLAIN;md5=c910b645eda0005ccec46f75203dc96e"
+
+PV = "0.0.3+svnr${SRCPV}"
+PR = "${INC_PR}.0"
+
+require e-module.inc
+
+do_configure_prepend() {
+    sed -i -e /po/d ${S}/configure.ac
+    sed -i -e s:\ po::g ${S}/Makefile.am
+}
+
+SRC_URI += "file://configure.patch"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/forecasts/configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/forecasts/configure.patch
new file mode 100644
index 0000000..87c85de
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/forecasts/configure.patch
@@ -0,0 +1,13 @@
+Index: cpu/configure.ac
+===================================================================
+--- cpu.orig/configure.ac	2014-07-17 20:39:48.000000000 +0000
++++ cpu/configure.ac	2014-07-17 21:39:55.320555868 +0000
+@@ -10,7 +10,7 @@
+ AC_CANONICAL_HOST
+ AC_ISC_POSIX
+ 
+-AM_INIT_AUTOMAKE(1.6)
++AM_INIT_AUTOMAKE([foreign])
+ AM_CONFIG_HEADER(config.h)
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ 
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/forecasts_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/forecasts_svn.bb
new file mode 100644
index 0000000..473bdb9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/forecasts_svn.bb
@@ -0,0 +1,10 @@
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35 \
+                    file://COPYING-PLAIN;md5=51328cfb73bfec3eed7cfd3dbed73988"
+
+PV = "0.2.0+svnr${SRCREV}"
+PR = "${INC_PR}.0"
+
+require e-module.inc
+
+SRC_URI += "file://configure.patch"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/illume-keyboards-shr/0001-Makefile-update-KEYBOARDS_DIR-for-new-illume2.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/illume-keyboards-shr/0001-Makefile-update-KEYBOARDS_DIR-for-new-illume2.patch
new file mode 100644
index 0000000..b18a69b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/illume-keyboards-shr/0001-Makefile-update-KEYBOARDS_DIR-for-new-illume2.patch
@@ -0,0 +1,23 @@
+From 9316e3973c44b981e73b953b2861060c6902de47 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Mon, 23 Aug 2010 12:54:05 +0200
+Subject: [PATCH] Makefile: update KEYBOARDS_DIR for new illume2
+
+---
+ Makefile |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 46e9420..3d8757c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,5 +1,5 @@
+ 
+-INSTBASE = /usr/lib/enlightenment/modules/illume/keyboards
++INSTBASE = /usr/lib/enlightenment/modules/illume-keyboard/keyboards
+ 
+ FILES-arabic = Arabic.kbd Arabic.png
+ FILES-persian = Persian.kbd Persian.png
+-- 
+1.7.2
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/illume-keyboards-shr/LICENSE b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/illume-keyboards-shr/LICENSE
new file mode 100644
index 0000000..61bb2f6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/illume-keyboards-shr/LICENSE
@@ -0,0 +1,25 @@
+Copyright notice for Enlightenment:
+
+Copyright (C) 2000-2010 Carsten Haitzler and various contributors (see AUTHORS)
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above copyright 
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/illume-keyboards-shr_git.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/illume-keyboards-shr_git.bb
new file mode 100644
index 0000000..6925c87
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/illume-keyboards-shr_git.bb
@@ -0,0 +1,100 @@
+SECTION = "x11/data"
+
+SRC_URI = "git://git.shr-project.org/repo/illume-keyboards.git;protocol=http;branch=master \
+           file://0001-Makefile-update-KEYBOARDS_DIR-for-new-illume2.patch \
+           file://LICENSE"
+S = "${WORKDIR}/git"
+
+SRCREV = "4064489f359a1addf572089b582f317dff5f50e1"
+PV = "0.0+gitr${SRCPV}"
+PE = "1"
+PR = "r5"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=f523ab5986cc79b52a90d2ac3d5454a2"
+
+CLEANBROKEN = "1"
+
+PACKAGES = "\
+illume-keyboard-alpha \
+illume-keyboard-arabic \
+illume-keyboard-browse \
+illume-keyboard-danish \
+illume-keyboard-default-alt \
+illume-keyboard-dutch \
+illume-keyboard-dvorak \
+illume-keyboard-finnish \
+illume-keyboard-french \
+illume-keyboard-german \
+illume-keyboard-hebrew \
+illume-keyboard-numeric-alt \
+illume-keyboard-russian \
+illume-keyboard-russian-terminal \
+illume-keyboard-persian \
+"
+
+inherit allarch
+KEYBOARDS_DIR="${libdir}/enlightenment/modules/illume-keyboard/keyboards"
+
+AUTHOR_illume-keyboard-alpha = "Jesus McCloud"
+DESCRIPTION_illume-keyboard-alpha = "Illume keyboard with phone-like layout"
+FILES_illume-keyboard-alpha = "${KEYBOARDS_DIR}/Alpha.kbd"
+
+AUTHOR_illume-keyboard-arabic = "Mohammad Fahmi / Tom Hacohen"
+DESCRIPTION_illume-keyboard-arabic = "Illume keyboard with arabic layout"
+FILES_illume-keyboard-arabic = "${KEYBOARDS_DIR}/Arabic.kbd ${KEYBOARDS_DIR}/Arabic.png"
+
+AUTHOR_illume-keyboard-browse = "Pander"
+DESCRIPTION_illume-keyboard-browse = "Illume keyboard with a layout optimized for browsing"
+FILES_illume-keyboard-browse = "${KEYBOARDS_DIR}/Browse.kbd ${KEYBOARDS_DIR}/end-browse.png ${KEYBOARDS_DIR}/pagedown-browse.png ${KEYBOARDS_DIR}/browse.png ${KEYBOARDS_DIR}/home-browse.png ${KEYBOARDS_DIR}/pageup-browse.png ${KEYBOARDS_DIR}/space-browse.png"
+
+AUTHOR_illume-keyboard-danish = "Esben Damgaard"
+DESCRIPTION_illume-keyboard-danish = "Illume keyboard with danish layout"
+FILES_illume-keyboard-danish = "${KEYBOARDS_DIR}/Danish.kbd ${KEYBOARDS_DIR}/danish.png"
+
+AUTHOR_illume-keyboard-default-alt = "Pander"
+DESCRIPTION_illume-keyboard-default-alt = "Illume keyboard with an alternative default layout"
+FILES_illume-keyboard-default-alt = "${KEYBOARDS_DIR}/Default-alt.kbd"
+
+AUTHOR_illume-keyboard-dutch = "Pander"
+DESCRIPTION_illume-keyboard-dutch = "Illume keyboard with dutch layout"
+FILES_illume-keyboard-dutch = "${KEYBOARDS_DIR}/capslock-negative.png ${KEYBOARDS_DIR}/end.png ${KEYBOARDS_DIR}/pagedown.png ${KEYBOARDS_DIR}/qwerty-dutch-nl.png ${KEYBOARDS_DIR}/Terminal-dutch-nl.kbd ${KEYBOARDS_DIR}/capslock.png ${KEYBOARDS_DIR}/home.png ${KEYBOARDS_DIR}/pageup.png ${KEYBOARDS_DIR}/space.png"
+
+AUTHOR_illume-keyboard-dvorak = "Gabor Adam TOTH"
+DESCRIPTION_illume-keyboard-dvorak = "Illume keyboard with dvorak layout"
+FILES_illume-keyboard-dvorak = "${KEYBOARDS_DIR}/Dvorak.kbd ${KEYBOARDS_DIR}/dvorak.png"
+
+AUTHOR_illume-keyboard-finnish = "Olof Sjöbergh / Jussi Timperi"
+DESCRIPTION_illume-keyboard-finnish = "Illume keyboard with finnish layout"
+FILES_illume-keyboard-finnish = "${KEYBOARDS_DIR}/Finnish.kbd ${KEYBOARDS_DIR}/Finnish.png"
+
+DESCRIPTION_illume-keyboard-french = "Illume keyboard with french layout"
+FILES_illume-keyboard-french = "${KEYBOARDS_DIR}/Azerty.kbd ${KEYBOARDS_DIR}/Azerty.png"
+
+AUTHOR_illume-keyboard-german = "Florian Hackenberger"
+DESCRIPTION_illume-keyboard-german = "Illume keyboard with german layout"
+FILES_illume-keyboard-german = "${KEYBOARDS_DIR}/German.kbd ${KEYBOARDS_DIR}/German.png"
+
+AUTHOR_illume-keyboard-hebrew = "Tom Hacohen"
+DESCRIPTION_illume-keyboard-hebrew = "Illume keyboard with hebrew layout"
+FILES_illume-keyboard-hebrew = "${KEYBOARDS_DIR}/Hebrew.kbd ${KEYBOARDS_DIR}/Alpha-hebrew-il.png"
+
+AUTHOR_illume-keyboard-numeric-alt = "Pander"
+DESCRIPTION_illume-keyboard-numeric-alt = "Illume keyboard with an alternative numeric layout"
+FILES_illume-keyboard-numeric-alt = "${KEYBOARDS_DIR}/Numbers-alt.kbd ${KEYBOARDS_DIR}/numeric-alt.png"
+
+AUTHOR_illume-keyboard-russian = "lucky"
+DESCRIPTION_illume-keyboard-russian = "Illume keyboard with russian layout"
+FILES_illume-keyboard-russian = "${KEYBOARDS_DIR}/X8_Russian.kbd ${KEYBOARDS_DIR}/X8-russian-ru.png"
+
+AUTHOR_illume-keyboard-russian-terminal = "lucky"
+DESCRIPTION_illume-keyboard-russian-terminal = "Illume keyboard with russian layout for the Terminal"
+FILES_illume-keyboard-russian-terminal = "${KEYBOARDS_DIR}/Terminal_Russian.kbd ${KEYBOARDS_DIR}/Terminal-russian-ru.png"
+
+AUTHOR_illume-keyboard-persian = "slave"
+DESCRIPTION_illume-keyboard-persian = "Illume keyboard with persian layout"
+FILES_illume-keyboard-persian = "${KEYBOARDS_DIR}/Persian.kbd ${KEYBOARDS_DIR}/Persian.png"
+
+do_install() {
+    make DESTDIR=${D} install
+}
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/news_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/news_svn.bb
new file mode 100644
index 0000000..f08cab6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/news_svn.bb
@@ -0,0 +1,14 @@
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+PV = "0.1.0+svnr${SRCPV}"
+PR = "${INC_PR}.0"
+
+require e-module.inc
+
+do_configure_prepend() {
+    sed -i -e /po/d configure.ac 
+    sed -i -e s:\ po::g Makefile.am
+}
+
+PNBLACKLIST[news] ?= "if you want to use these modules with E18, then you need to update it to git recipe fetching newer sources from http://git.enlightenment.org/enlightenment/modules/news.git/"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/places/configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/places/configure.patch
new file mode 100644
index 0000000..f8f4834
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/places/configure.patch
@@ -0,0 +1,13 @@
+Index: places/configure.ac
+===================================================================
+--- places.orig/configure.ac	2014-07-17 21:51:01.276574017 +0000
++++ places/configure.ac	2014-07-17 21:52:07.096575810 +0000
+@@ -10,7 +10,7 @@
+ AC_CANONICAL_HOST
+ AC_ISC_POSIX
+ 
+-AM_INIT_AUTOMAKE(1.8)
++AM_INIT_AUTOMAKE([foreign])
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ AM_CONFIG_HEADER(config.h)
+ 
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/places_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/places_svn.bb
new file mode 100644
index 0000000..54f0e01
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/places_svn.bb
@@ -0,0 +1,16 @@
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35"
+
+PV = "0.1.0+svnr${SRCPV}"
+PR = "${INC_PR}.0"
+
+require e-module.inc
+
+do_configure_prepend() {
+    autopoint || touch config.rpath
+}
+
+# Calls /usr/bin/eject for media
+RRECOMMENDS_${PN} += "eject"
+
+SRC_URI += "file://configure.patch"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/rage_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/rage_svn.bb
new file mode 100644
index 0000000..a65aa9e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/rage_svn.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Rage is a media center application based on EFL"
+AUTHOR = "Carsten 'The Rasterman' Haitzler"
+HOMEPAGE = "http://www.rasterman.com"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35"
+DEPENDS = "emotion evas ecore edje"
+SECTION = "x11/multimedia"
+PV = "0.3.0.042+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+
+inherit e
+SRC_URI = "${E_SVN}/trunk;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
+
+PNBLACKLIST[rage] ?= "if you want to use these modules with E18, then you need to update it to git recipe fetching newer sources from  http://git.enlightenment.org/apps/rage.git/"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/rain/configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/rain/configure.patch
new file mode 100644
index 0000000..87c85de
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/rain/configure.patch
@@ -0,0 +1,13 @@
+Index: cpu/configure.ac
+===================================================================
+--- cpu.orig/configure.ac	2014-07-17 20:39:48.000000000 +0000
++++ cpu/configure.ac	2014-07-17 21:39:55.320555868 +0000
+@@ -10,7 +10,7 @@
+ AC_CANONICAL_HOST
+ AC_ISC_POSIX
+ 
+-AM_INIT_AUTOMAKE(1.6)
++AM_INIT_AUTOMAKE([foreign])
+ AM_CONFIG_HEADER(config.h)
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ 
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/rain_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/rain_svn.bb
new file mode 100644
index 0000000..cf67a4c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/rain_svn.bb
@@ -0,0 +1,16 @@
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35 \
+                    file://COPYING-PLAIN;md5=c910b645eda0005ccec46f75203dc96e"
+
+PV = "0.0.3+svnr${SRCPV}"
+PR = "${INC_PR}.0"
+
+require e-module.inc
+
+do_configure_prepend() {
+    sed -i -e /po/d ${S}/configure.ac 
+    sed -i -e s:\ po::g ${S}/Makefile.am
+}
+
+SRC_URI += "file://configure.patch"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/screenshot/screenshot-fix-mkinstalldirs.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/screenshot/screenshot-fix-mkinstalldirs.patch
new file mode 100644
index 0000000..14f1141
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/screenshot/screenshot-fix-mkinstalldirs.patch
@@ -0,0 +1,23 @@
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Subject: fix screenshot po/ building
+Upstream-Status: Pending
+
+Somehow configure doesn't substitute @MKINSTALLDIRS@ by default anymore,
+however this substitution is required for po/Makefile
+
+Fix that by calling AM_MKINSTALLDIRS from configure.ac
+
+Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+
+Index: E-MODULES-EXTRA/screenshot/configure.ac
+===================================================================
+--- E-MODULES-EXTRA.orig/screenshot/configure.ac	2011-08-17 15:49:22.000000000 +0400
++++ E-MODULES-EXTRA/screenshot/configure.ac	2011-08-17 15:49:34.000000000 +0400
+@@ -24,6 +24,7 @@
+ define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
+ AC_PROG_LIBTOOL
+ 
++AM_MKINSTALLDIRS
+ m4_ifdef([AM_GNU_GETTEXT_VERSION], [
+ AM_GNU_GETTEXT_VERSION([0.14])
+ ])
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/screenshot_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/screenshot_svn.bb
new file mode 100644
index 0000000..6dec194
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/screenshot_svn.bb
@@ -0,0 +1,16 @@
+LICENSE = "MIT"
+PV = "0.3.0+svnr${SRCREV}"
+PR = "${INC_PR}.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35"
+SRC_URI += "file://screenshot-fix-mkinstalldirs.patch"
+
+require e-module.inc
+
+DEPENDS += "emprint"
+RDEPENDS_${PN} += "emprint"
+
+do_configure_prepend() {
+    sed -i -e 's:AC_MSG_ERROR(emprint not found):echo foo:g' ${S}/configure.ac
+}
+
+PNBLACKLIST[screenshot] ?= "depends on blacklisted emprint"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/terminology.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/terminology.inc
new file mode 100644
index 0000000..24f789f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/terminology.inc
@@ -0,0 +1,22 @@
+DESCRIPTION = "Enlightenment Terminal Emulator"
+LICENSE = "MIT & BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4efac6b05b3256ba7da66301ac1ee6c6"
+DEPENDS = "evas ecore edje elementary eina eet emotion"
+
+inherit e gettext
+
+# Because latest release we have is 0.1.0 which sorts lower then 0.1.0+svnr${SRCPV} already in feeds
+PE = "2"
+
+EXTRA_OECONF = "\
+    --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
+"
+
+FILES_${PN} += "\
+    ${datadir}/icons/terminology.png \
+"
+
+# doesn't start without own theme
+# ERR<770>:terminology utils.c:26 theme_apply() Could not load any theme for group=terminology/background: No Error
+# CRI<770>:terminology main.c:448 elm_main() Couldn't find terminology theme! Forgot 'make install'?
+RDEPENDS_${PN} += "${PN}-themes"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/terminology_0.9.1.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/terminology_0.9.1.bb
new file mode 100644
index 0000000..482bd60
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/terminology_0.9.1.bb
@@ -0,0 +1,8 @@
+require ${BPN}.inc
+
+SRC_URI = "\
+    ${E_RELEASES}/apps/${SRCNAME}/${SRCNAME}-${SRCVER}.tar.gz \
+"
+
+SRC_URI[md5sum] = "c7ce2e8ebc5f311d3d3f59ecfdf18f61"
+SRC_URI[sha256sum] = "7fb864a14202490e9181c5f254a7e772019216a3aa75c3952d0f12cd32113896"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/uptime/configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/uptime/configure.patch
new file mode 100644
index 0000000..87c85de
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/uptime/configure.patch
@@ -0,0 +1,13 @@
+Index: cpu/configure.ac
+===================================================================
+--- cpu.orig/configure.ac	2014-07-17 20:39:48.000000000 +0000
++++ cpu/configure.ac	2014-07-17 21:39:55.320555868 +0000
+@@ -10,7 +10,7 @@
+ AC_CANONICAL_HOST
+ AC_ISC_POSIX
+ 
+-AM_INIT_AUTOMAKE(1.6)
++AM_INIT_AUTOMAKE([foreign])
+ AM_CONFIG_HEADER(config.h)
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ 
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/uptime_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/uptime_svn.bb
new file mode 100644
index 0000000..5c9bfa9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/uptime_svn.bb
@@ -0,0 +1,10 @@
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35 \
+                    file://COPYING-PLAIN;md5=c910b645eda0005ccec46f75203dc96e"
+
+PV = "0.0.2+svnr${SRCREV}"
+PR = "${INC_PR}.0"
+
+require e-module.inc
+
+SRC_URI += "file://configure.patch"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/waker/0001-waker-remove-old-ecore_string_init-and-ecore_string_.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/waker/0001-waker-remove-old-ecore_string_init-and-ecore_string_.patch
new file mode 100644
index 0000000..2e9d104
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/e17/waker/0001-waker-remove-old-ecore_string_init-and-ecore_string_.patch
@@ -0,0 +1,54 @@
+From b6296958d5516a735053ee4140e85e2b3a896182 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sun, 30 Jan 2011 00:27:57 +0100
+Subject: [PATCH] waker: remove old ecore_string_init and ecore_string_shutdown
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/bin/waker_main.c |    2 --
+ src/bin/waker_tool.c |    2 --
+ 2 files changed, 0 insertions(+), 4 deletions(-)
+
+diff --git a/src/bin/waker_main.c b/src/bin/waker_main.c
+index b229cf0..dd54b31 100644
+--- a/src/bin/waker_main.c
++++ b/src/bin/waker_main.c
+@@ -568,7 +568,6 @@ main(int argc, char **argv)
+    E_DBus_Connection *c;
+    
+    ecore_init();
+-   ecore_string_init();
+    ecore_app_args_set(argc, (const char **)argv);
+    e_dbus_init();
+    
+@@ -586,7 +585,6 @@ main(int argc, char **argv)
+     
+    e_dbus_connection_close(c);
+    e_dbus_shutdown();
+-   ecore_string_shutdown();
+    ecore_shutdown();
+    
+    return 0;
+diff --git a/src/bin/waker_tool.c b/src/bin/waker_tool.c
+index 3344fd2..52515c9 100644
+--- a/src/bin/waker_tool.c
++++ b/src/bin/waker_tool.c
+@@ -93,7 +93,6 @@ main(int argc, char **argv)
+      }
+    
+    ecore_init();
+-   ecore_string_init();
+    ecore_app_args_set(argc, (const char **)argv);
+    e_dbus_init();
+    
+@@ -301,7 +300,6 @@ main(int argc, char **argv)
+    
+    e_dbus_connection_close(c);
+    e_dbus_shutdown();
+-   ecore_string_shutdown();
+    ecore_shutdown();
+    
+    return 0;
+-- 
+1.7.4.rc3
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/azy_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/azy_svn.bb
new file mode 100644
index 0000000..dec2475
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/azy_svn.bb
@@ -0,0 +1,37 @@
+DESCRIPTION = "Azy is a library meant for implementing rpc clients and servers in a simple manner."
+DEPENDS = "pkgconfig zlib openssl eina gnutls ecore libxml2 re2c-native mysql5 azy-native glib-2.0"
+DEPENDS_class-native = "pkgconfig-native zlib-native openssl-native eina-native gnutls-native ecore-native libxml2-native re2c-native mysql5-native glib-2.0-native"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+PV = "1.0.0+svnr${SRCPV}"
+PR = "r2"
+
+SRCREV = "${EFL_SRCREV}"
+
+# to provide native lemon binary
+BBCLASSEXTEND = "native"
+
+EXTRA_OECONF += " --disable-mysql-tests"
+
+do_configure_prepend_class-target() {
+    sed -i "s#\./lemon#${STAGING_BINDIR_NATIVE}/azy_lemon#g" ${S}/src/bin/Makefile.am
+    sed -i "s#\$(top_builddir)/src/bin/azy_parser -H -p -o#${STAGING_BINDIR_NATIVE}/azy_parser -H -p -o#g" ${S}/src/tests/Makefile.am
+    sed -i "s#\$(top_builddir)/src/bin/azy_parser -eHn -m#${STAGING_BINDIR_NATIVE}/azy_parser -eHn -m#g" ${S}/src/tests/identi.ca/Makefile.am
+}
+
+do_install_append_class-native() {
+    install -d ${D}/${bindir}
+    install -m 0755 ${B}/src/bin/lemon ${D}/${bindir}/azy_lemon
+}
+
+inherit efl
+
+SRC_URI = "${E_SVN}/trunk/PROTO;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
+
+# azy/2_1.0.0+svnr82070-r2/azy/src/lib/extras/pugixml.cpp:33:
+# sysroots/qemuarm/usr/include/c++/5.2.0/bits/basic_string.h:4780:5: error: reference to 'basic_string' is ambiguous
+#     basic_string<_CharT, _Traits, _Alloc>
+#     ^
+PNBLACKLIST[azy] ?= "OLD and doesn't build with gcc-5"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/e-wm-illume-dict-pl_git.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/e-wm-illume-dict-pl_git.bb
new file mode 100644
index 0000000..657adcd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/e-wm-illume-dict-pl_git.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Polish dictionary for Illume keyboard"
+SECTION = "x11/data"
+SRCREV = "38fdd9bb0d8296e984bb6443466801eea6f62f00"
+PV = "1.0+gitr${SRCPV}"
+PE = "1"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f523ab5986cc79b52a90d2ac3d5454a2"
+
+SRC_URI = "git://git.shr-project.org/repo/shr-themes.git;protocol=http;branch=master"
+
+S = "${WORKDIR}/git/e-wm/${PN}"
+
+FILES_${PN} = "${libdir}/enlightenment/modules/illume/dicts/Polish.dic"
+
+do_install() {
+    install -d ${D}${libdir}/enlightenment/modules/illume/dicts
+    install -m 0644 ${S}/Polish.dic        ${D}${libdir}/enlightenment/modules/illume/dicts/Polish.dic
+}
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/ecore/fix-ecore-fb-initialization.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/ecore/fix-ecore-fb-initialization.patch
new file mode 100644
index 0000000..55773a3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/ecore/fix-ecore-fb-initialization.patch
@@ -0,0 +1,41 @@
+From 657571197c9d369e12ae31b6777a1929fe3680ef Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sat, 29 Oct 2011 00:16:55 +0200
+Subject: [PATCH] ecore-fb: fix ts init
+
+Upstream-Status: Pending
+
+The whole ecore-fb init logic is somewhat flawed; with this patch we
+get at least a working touchscreen w/ tslib again.
+
+Signed-off-by: Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ ecore/src/lib/ecore_fb/ecore_fb.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/src/lib/ecore_fb/ecore_fb.c b/src/lib/ecore_fb/ecore_fb.c
+index 5b2b84b..a1904b3 100644
+--- a/src/lib/ecore_fb/ecore_fb.c
++++ b/src/lib/ecore_fb/ecore_fb.c
+@@ -46,6 +46,9 @@ ecore_fb_init(const char *name __UNUSED__)
+    if (!ecore_fb_vt_init())
+       return --_ecore_fb_init_count;
+ 
++   if (!ecore_fb_ts_init())
++      return --_ecore_fb_init_count;
++
+    if (!oldhand)
+      {
+         oldhand = signal(SIGINT, nosigint);
+@@ -77,6 +80,7 @@ ecore_fb_shutdown(void)
+         oldhand = NULL;
+      }
+    
++   ecore_fb_ts_shutdown();
+    ecore_fb_vt_shutdown();
+ 
+    return _ecore_fb_init_count;
+-- 
+1.7.8.6
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edb_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edb_svn.bb
new file mode 100644
index 0000000..7c6abda
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edb_svn.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Edb is the Enlightenment database library"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8a7c08df3bc3280208b959be7215c25 \
+                    file://COPYING-PLAIN;md5=f59cacc08235a546b0c34a5422133035"
+
+DEPENDS = "zlib"
+PV = "1.0.5.050+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+
+inherit efl
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[ncurses] = "--enable-ncurses,--disable-ncurses,ncurses"
+
+SRC_URI = "${E_SVN}/OLD;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edbus.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edbus.inc
new file mode 100644
index 0000000..03d0ee5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edbus.inc
@@ -0,0 +1,29 @@
+DESCRIPTION = "DBus and HAL convenience wrappers for EFL"
+DEPENDS = "dbus ecore eina"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=550b8cea13dacc4bf00508a8cce1074c"
+
+inherit efl
+
+# -dev and -dbg packages wants ${PN} which is empty here
+ALLOW_EMPTY_${PN} = "1"
+
+BBCLASSEXTEND = "native"
+INC_PR = "r0"
+
+SRCNAME = "e_dbus"
+
+# it needs to be disabled, because creates circular dependency on elementary
+EXTRA_OECONF += "--disable-edbus-performance-test"
+
+PACKAGES =+ "${PN}-enotify ${PN}-edbus ${PN}-enm ${PN}-ehal ${PN}-econnman ${PN}-eofono ${PN}-eukit ${PN}-ebluez"
+FILES_${PN}-enotify = "${libdir}/libenotify.so.* ${bindir}/e-notify-send"
+FILES_${PN}-edbus = "${libdir}/libedbus.so.*"
+FILES_${PN}-enm = "${libdir}/libenm.so.*"
+FILES_${PN}-ehal = "${libdir}/libehal.so.*"
+FILES_${PN}-econnman = "${libdir}/libeconnman.so.* ${libdir}/libeconnman0_7x.so.*"
+FILES_${PN}-eofono = "${libdir}/libeofono.so.*"
+FILES_${PN}-eukit = "${libdir}/libeukit.so.*"
+FILES_${PN}-ebluez = "${libdir}/libebluez.so.*"
+FILES_${PN} += "${datadir}/e_dbus/logo.png"
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edbus_1.7.9.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edbus_1.7.9.bb
new file mode 100644
index 0000000..64e77e6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edbus_1.7.9.bb
@@ -0,0 +1,8 @@
+require ${BPN}.inc
+
+SRC_URI = "\
+    ${E_MIRROR}/${SRCNAME}-${SRCVER}.tar.gz \
+"
+
+SRC_URI[md5sum] = "8f72da14e5664aad8c45eeeca0e3ff5f"
+SRC_URI[sha256sum] = "c328c4cf1424629cb67c83689ccc1f95967abcb4c03dffd437e93b799ff151c1"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edje-fpu.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edje-fpu.inc
new file mode 100644
index 0000000..3f2aacf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/edje-fpu.inc
@@ -0,0 +1,6 @@
+
+def get_edje_fpu_setting(bb, d):
+    if d.getVar('TARGET_FPU', 1) in [ 'soft' ]:
+        return "--enable-fixed-point"
+    return ""
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl.inc
new file mode 100644
index 0000000..31aff87
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl.inc
@@ -0,0 +1,287 @@
+SUMMARY = "EFL"
+LICENSE = "MIT & BSD & LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ca7873210523dcfd32694b94286dca60"
+
+DEPENDS_class-native = "freetype-native libxext-native libpng-native jpeg-native tiff-native libfribidi-native glib-2.0-native dbus-native openssl-native"
+DEPENDS = "virtual/libiconv tslib curl glib-2.0 gnutls pkgconfig zlib jpeg openssl libsndfile1 dbus libexif librsvg freetype libpng tiff libxext virtual/libx11 libxdamage libxrender fontconfig libfribidi giflib udev libxcursor libxcomposite libxinerama libxrandr libxtst libxscrnsaver efl-native util-linux libunwind"
+
+inherit efl gettext pkgconfig
+
+BBCLASSEXTEND = "native"
+
+PROVIDES += "ecore edje eet eeze efreet eina eio embryo emotion ethumb evas eldbus"
+
+# we don't have bullet for physics
+# You have chosen to disable physics support. This disables lots of
+# core functionality and is effectively never tested. You are going
+# to find features that suddenly don't work and as a result cause
+# a series of breakages. This is simply not tested so you are on
+# your own in terms of ensuring everything works if you do this
+EXTRA_OECONF = " \
+    --disable-physics \
+    --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-aba \
+"
+EXTRA_OECONF_append_class-target = " \
+    --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
+    --with-eolian-gen=${STAGING_BINDIR_NATIVE}/eolian_gen \
+    --with-eolian-cxx=${STAGING_BINDIR_NATIVE}/eolian_cxx \
+    --with-elua=${STAGING_BINDIR_NATIVE}/elua \
+"
+EXTRA_OECONF_append_class-native = " \
+    --disable-fontconfig \
+    --disable-audio \
+    --disable-physics \
+    --disable-multisense \
+    --disable-cserve \
+    --disable-libeeze \
+    --with-x11=none \
+    --disable-image-loader-bmp \
+    --disable-image-loader-eet \
+    --disable-image-loader-generic \
+    --disable-image-loader-gif \
+    --disable-image-loader-ico \
+    --disable-image-loader-jp2k \
+    --disable-image-loader-pmaps \
+    --disable-image-loader-psd \
+    --disable-image-loader-tga \
+    --disable-image-loader-wbmp \
+    --disable-image-loader-webp \
+    --disable-image-loader-xpm \
+    --disable-image-loader-tgv \
+    --disable-image-loader-dds \
+"
+
+PACKAGECONFIG ?= "egl opengl-es gstreamer1 pulseaudio luajit ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}"
+PACKAGECONFIG_class-native = "luajit"
+
+PACKAGECONFIG[wayland] = "--enable-wayland --enable-wayland-ivi-shell,--disable-wayland --disable-wayland-ivi-shell,wayland"
+PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl"
+# sort of tri-state
+PACKAGECONFIG[opengl-full] = "--with-opengl=full,,virtual/libgl"
+PACKAGECONFIG[opengl-es] = "--with-opengl=es,,virtual/libgles2"
+PACKAGECONFIG[opengl-none] = "--with-opengl=none,,"
+# be aware when enabling this for efl-native, we don't provide gcc-native so you need to make
+# sure that all your builders have g++ which supports -std=gnu++11
+PACKAGECONFIG[c++11] = "--enable-cxx-bindings,--disable-cxx-bindings"
+PACKAGECONFIG[gstreamer] = "--enable-gstreamer,--disable-gstreamer,gstreamer"
+PACKAGECONFIG[gstreamer1] = "--enable-gstreamer1,--disable-gstreamer1,gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio"
+PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd"
+PACKAGECONFIG[luajit] = "--disable-lua-old,--enable-lua-old,luajit"
+PACKAGECONFIG[lua-old] = "--enable-lua-old,--disable-lua-old,lua"
+PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi"
+# currently we don't provide doxygen-native
+PACKAGECONFIG[doc] = "--enable-doc,--disable-doc,doxygen-native"
+
+do_install_append() {
+    # don't ship precompiled lua files
+    rm -f ${datadir}/elua/*/*.luac
+}
+
+PACKAGES =+ "edje-utils embryo-utils embryo-tests efreet-trash efreet-mime libeet libefreet ecore-audio ecore-input-evas ecore-input ecore-imf-evas ecore-imf ecore-file ecore-con ecore-ipc ecore-x ecore-evas libemotion eo ecore edje eet eeze efreet eina eio embryo emotion ethumb evas eldbus elua"
+
+# upgrade path from 1.7
+DEBIAN_NOAUTONAME_ecore-audio = "1"
+DEBIAN_NOAUTONAME_ecore-input-evas = "1"
+DEBIAN_NOAUTONAME_ecore-input = "1"
+DEBIAN_NOAUTONAME_ecore-imf-evas = "1"
+DEBIAN_NOAUTONAME_ecore-imf = "1"
+DEBIAN_NOAUTONAME_ecore-file = "1"
+DEBIAN_NOAUTONAME_ecore-con = "1"
+DEBIAN_NOAUTONAME_ecore-ipc = "1"
+DEBIAN_NOAUTONAME_ecore-x = "1"
+DEBIAN_NOAUTONAME_ecore-evas = "1"
+DEBIAN_NOAUTONAME_embryo = "1"
+
+ALLOW_EMPTY_ecore = "1"
+RDEPENDS_ecore = "ecore-audio ecore-input-evas ecore-input ecore-imf-evas ecore-imf ecore-file ecore-con ecore-ipc ecore-x ecore-evas"
+
+python populate_packages_prepend () {
+    for plugin_type in "engines loaders savers".split():
+        bb.note( "splitting packages for evas %s..." % plugin_type )
+        basedir = d.expand( '${libdir}/evas/modules/%s' % plugin_type)
+
+        do_split_packages(d, basedir, '^(.*)',
+        output_pattern = 'evas-' + plugin_type[:-1] + "-%s",
+        description = 'Evas module %s',
+        allow_dirs=True, recursive=False, extra_depends="" )
+        
+        plugin_type = "cserve2"
+        bb.note( "splitting packages for evas %s..." % plugin_type )
+        basedir = d.expand( '${libdir}/evas/%s/loaders' % plugin_type)
+
+        do_split_packages(d, basedir, '^(.*)',
+        output_pattern = 'evas-' + plugin_type + "-%s",
+        description = 'Evas csever2 loader module %s',
+        allow_dirs=True, recursive=False, extra_depends="" )
+}
+
+PACKAGES += "evas-loader-png evas-engine-software-generic evas-engine-fb"
+PACKAGES_DYNAMIC += "^evas-engine-.* ^evas-loader-.* ^evas-saver-.* ^evas-cserve2-.*"
+
+# PACKAGES_DYNAMIC + do_split_packages isn't used for all libe libs,
+# because PACKAGES_DYNAMIC would be catching too many patterns
+# (or need to list all possible prefixes) and not all original packages
+# were splitted like that, so it would need RCONFLICTS/RPROVIDES/RREPLACES
+# combos at least in few places for upgrade path.
+
+FILES_efreet-trash = " \
+    ${libdir}/libefreet_trash${SOLIBS} \
+"
+FILES_efreet-mime = " \
+    ${libdir}/libefreet_mime${SOLIBS} \
+"
+FILES_libeet = " \
+    ${libdir}/libeet${SOLIBS} \
+"
+FILES_libefreet = " \
+    ${libdir}/libefreet${SOLIBS} \
+"
+FILES_ecore-audio = "\
+    ${libdir}/libecore_audio${SOLIBS} \
+"
+FILES_ecore-input-evas = "\
+    ${libdir}/libecore_input_evas${SOLIBS} \
+"
+FILES_ecore-input = "\
+    ${libdir}/libecore_input${SOLIBS} \
+"
+FILES_ecore-imf-evas = "\
+    ${libdir}/libecore_imf_evas${SOLIBS} \
+    ${libdir}/ecore-imf/modules/*/*/module.so \
+"
+FILES_ecore-imf = "\
+    ${libdir}/libecore_imf${SOLIBS} \
+"
+
+FILES_ecore-file = "\
+    ${libdir}/libecore_file${SOLIBS} \
+"
+FILES_ecore-con = "\
+    ${libdir}/libecore_con${SOLIBS} \
+"
+FILES_ecore-ipc = "\
+    ${libdir}/libecore_ipc${SOLIBS} \
+"
+FILES_ecore-x = "\
+    ${libdir}/libecore_x${SOLIBS} \
+    ${libdir}/ecore_x/bin/v-*/ecore_x_vsync \
+"
+FILES_ecore-evas = "\
+    ${libdir}/libecore_evas${SOLIBS} \
+    ${libdir}/ecore-evas/engines/*/*/module.so \
+"
+FILES_eio = "\
+    ${libdir}/libeio${SOLIBS} \
+"
+FILES_eina = "\
+    ${libdir}/libeina${SOLIBS} \
+    ${bindir}/eina-bench-cmp \
+"
+FILES_edje-utils = "\
+    ${bindir}/edje_* \
+    ${datadir}/edje/include/edje.inc \
+"
+FILES_eldbus = "\
+    ${libdir}/libeldbus${SOLIBS} \
+"
+FILES_eo = "\
+    ${libdir}/libeo${SOLIBS} \
+"
+FILES_libemotion = "\
+    ${libdir}/libemotion${SOLIBS} \
+"
+FILES_efreet = " \
+    ${datadir}/dbus-1/services/*Efreet* \
+    ${libdir}/efreet/*/efreet*create \
+    ${bindir}/efreetd \
+    ${datadir}/efreet \
+"
+FILES_eet = " \
+    ${bindir}/eet \
+    ${bindir}/eetpack \
+    ${bindir}/vieet \
+    ${bindir}/diffeet \
+    ${libdir}/libeet${SOLIBS} \
+"
+FILES_emotion = " \
+    ${datadir}/emotion \
+    ${libdir}/emotion/modules/gstreamer1/*/module.so \
+"
+FILES_embryo-tests = " \
+    ${datadir}/embryo/ \
+"
+FILES_embryo-utils = " \
+    ${binddir}/embryo_* \
+"
+FILES_embryo = " \
+    ${libdir}/libembryo${SOLIBS} \
+"
+FILES_ethumb = " \
+    ${datadir}/dbus-1/services/*Ethumb* \
+    ${libdir}/libethumb${SOLIBS} \
+    ${libdir}/libethumb_client${SOLIBS} \
+    ${bindir}/ethumbd \
+    ${bindir}/ethumbd_client \
+    ${bindir}/ethumb \
+    ${libdir}/ethumb/*/*/*/module.so \
+    ${libdir}/ethumb/*/*/*/*.edj \
+    ${libdir}/ethumb_client/utils/*/ethumbd_slave \
+    ${datadir}/ethumb* \
+"
+FILES_ecore = " \
+    ${libdir}/libecore${SOLIBS} \
+    ${libdir}/ecore*/*/*/*/module.so \
+    ${datadir}/ecore* \
+"
+FILES_evas = " \
+    ${libdir}/libevas${SOLIBS} \
+    ${libdir}/evas*/*/*/*/*/module.so \
+    ${libdir}/evas*/*/*/*/*/*.edj \
+    ${libdir}/evas/cserve2/bin/*/evas_cserve2* \
+    ${datadir}/evas* \
+    ${bindir}/evas_cserve2_* \
+"
+
+FILES_eeze = " \
+    ${libdir}/libeeze${SOLIBS} \
+    ${libdir}/eeze*/*/*/*/*/module.so \
+    ${datadir}/eeze \
+    ${bindir}/eeze_* \
+"
+FILES_edje = " \
+    ${libdir}/libedje${SOLIBS} \
+    ${libdir}/edje*/*/*/*/module.so \
+    ${libdir}/edje/utils/*/epp \
+    ${datadir}/edje \
+    ${datadir}/mime \
+"
+FILES_elua = " \
+    ${bindir}/elua \
+    ${datadir}/elua \
+"
+FILES_${PN}-dbg += " \
+    ${libdir}/efreet/*/.debug \
+    ${libdir}/ecore*/*/*/*/.debug \
+    ${libdir}/ecore*/*/*/.debug \
+    ${libdir}/evas*/*/*/*/*/.debug \
+    ${libdir}/evas/cserve2/bin/*/.debug \
+    ${libdir}/eeze*/*/*/*/*/.debug \
+    ${libdir}/edje*/*/*/*/.debug \
+    ${libdir}/edje/utils/*/.debug \
+    ${libdir}/ethumb/*/*/*/.debug \
+    ${libdir}/ethumb_client/utils/*/.debug \
+    ${libdir}/emotion/modules/gstreamer1/*/.debug \
+"
+FILES_${PN}-dev += " \
+    ${libdir}/cmake \
+    ${libdir}/ecore*/*/*/*/module.la \
+    ${libdir}/evas*/*/*/*/*/module.la \
+    ${libdir}/ethumb*/*/*/*/module.la \
+    ${libdir}/eeze*/*/*/*/*/module.la \
+    ${libdir}/edje*/*/*/*/module.la \
+    ${libdir}/emotion/modules/gstreamer1/*/module.la \
+    ${datadir}/gdb/auto-load \
+    ${datadir}/eo/gdb \
+    ${bindir}/eldbus-codegen \
+"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl/0001-configure.ac-Don-t-check-for-Xprint-extension.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl/0001-configure.ac-Don-t-check-for-Xprint-extension.patch
new file mode 100644
index 0000000..fa85f81
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl/0001-configure.ac-Don-t-check-for-Xprint-extension.patch
@@ -0,0 +1,27 @@
+From 27aedcdcdafbf079dc022bab72ec309cf7db3172 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Fri, 10 Jan 2014 17:07:13 +0100
+Subject: [PATCH 1/3] configure.ac: Don't check for Xprint extension
+
+* it's long gone
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ configure.ac | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index c108b1b..f019bfc 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3474,7 +3474,6 @@ if test "x${want_x11_xlib}" = "xyes" ; then
+    ECORE_CHECK_X_EXTENSION([Xdpms], [dpms.h], [Xext], [DPMSQueryExtension])
+    ECORE_CHECK_X_EXTENSION([Xfixes], [Xfixes.h], [Xfixes], [XFixesExpandRegion])
+    ECORE_CHECK_X_EXTENSION([Xinerama], [Xinerama.h], [Xinerama], [XineramaQueryScreens])
+-   ECORE_CHECK_X_EXTENSION([Xprint], [Print.h], [Xp], [XpQueryScreens])
+    ECORE_CHECK_X_EXTENSION([Xrandr], [Xrandr.h], [Xrandr], [XRRGetScreenResourcesCurrent])
+    ECORE_CHECK_X_EXTENSION([Xrender], [Xrender.h], [Xrender], [XRenderFindVisualFormat])
+    ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], [XTestFakeKeyEvent])
+-- 
+2.3.0
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl/0001-evas_3d-Add-Eet.h-includes.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl/0001-evas_3d-Add-Eet.h-includes.patch
new file mode 100644
index 0000000..d0f26c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl/0001-evas_3d-Add-Eet.h-includes.patch
@@ -0,0 +1,51 @@
+From 2e50fd2dfc68b77e7acddc79550f22987778a897 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 2 Dec 2014 12:21:10 +0100
+Subject: [PATCH] evas_3d: Add Eet.h includes
+
+* with some very restrictive options like we use in efl-native, the build is complaining
+  about missing symbols from Eet.h, add include where needed
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/lib/evas/canvas/evas_canvas3d_eet.c                  | 1 +
+ src/modules/evas/model_loaders/eet/evas_model_load_eet.c | 1 +
+ src/modules/evas/model_savers/eet/evas_model_save_eet.c  | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/src/lib/evas/canvas/evas_canvas3d_eet.c b/src/lib/evas/canvas/evas_canvas3d_eet.c
+index 281f69d..a604076 100644
+--- a/src/lib/evas/canvas/evas_canvas3d_eet.c
++++ b/src/lib/evas/canvas/evas_canvas3d_eet.c
+@@ -1,3 +1,4 @@
++#include <Eet.h>
+ #include <stdio.h>
+ #include "evas_common_private.h"
+ #include "evas_private.h"
+diff --git a/src/modules/evas/model_loaders/eet/evas_model_load_eet.c b/src/modules/evas/model_loaders/eet/evas_model_load_eet.c
+index 803846d..7ebaf8e 100644
+--- a/src/modules/evas/model_loaders/eet/evas_model_load_eet.c
++++ b/src/modules/evas/model_loaders/eet/evas_model_load_eet.c
+@@ -3,6 +3,7 @@
+ #endif
+ 
+ #include <Eo.h>
++#include <Eet.h>
+ #include <stdio.h>
+ #include "evas_common_private.h"
+ #include "evas_private.h"
+diff --git a/src/modules/evas/model_savers/eet/evas_model_save_eet.c b/src/modules/evas/model_savers/eet/evas_model_save_eet.c
+index 71e094a..4d56977 100644
+--- a/src/modules/evas/model_savers/eet/evas_model_save_eet.c
++++ b/src/modules/evas/model_savers/eet/evas_model_save_eet.c
+@@ -2,6 +2,7 @@
+    #include "config.h"
+ #endif
+ 
++#include <Eet.h>
+ #include <stdio.h>
+ #include "evas_common_private.h"
+ #include "evas_private.h"
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl/0002-evas_3d-Add-Eet.h-includes.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl/0002-evas_3d-Add-Eet.h-includes.patch
new file mode 100644
index 0000000..aa7fd4b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl/0002-evas_3d-Add-Eet.h-includes.patch
@@ -0,0 +1,51 @@
+From b3cbe31c38a088af7b0dade82545475fc9b72492 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 2 Dec 2014 12:21:10 +0100
+Subject: [PATCH 2/3] evas_3d: Add Eet.h includes
+
+* with some very restrictive options like we use in efl-native, the build is complaining
+  about missing symbols from Eet.h, add include where needed
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/lib/evas/canvas/evas_3d_eet.c                        | 1 +
+ src/modules/evas/model_loaders/eet/evas_model_load_eet.c | 1 +
+ src/modules/evas/model_savers/eet/evas_model_save_eet.c  | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/src/lib/evas/canvas/evas_3d_eet.c b/src/lib/evas/canvas/evas_3d_eet.c
+index 1515f5a..a438217 100644
+--- a/src/lib/evas/canvas/evas_3d_eet.c
++++ b/src/lib/evas/canvas/evas_3d_eet.c
+@@ -1,3 +1,4 @@
++#include <Eet.h>
+ #include <stdio.h>
+ #include "evas_common_private.h"
+ #include "evas_private.h"
+diff --git a/src/modules/evas/model_loaders/eet/evas_model_load_eet.c b/src/modules/evas/model_loaders/eet/evas_model_load_eet.c
+index 815b9f1..bff2cea 100644
+--- a/src/modules/evas/model_loaders/eet/evas_model_load_eet.c
++++ b/src/modules/evas/model_loaders/eet/evas_model_load_eet.c
+@@ -3,6 +3,7 @@
+ #endif
+ 
+ #include <Eo.h>
++#include <Eet.h>
+ #include <stdio.h>
+ #include "evas_common_private.h"
+ #include "evas_private.h"
+diff --git a/src/modules/evas/model_savers/eet/evas_model_save_eet.c b/src/modules/evas/model_savers/eet/evas_model_save_eet.c
+index e445dca..2e1cf4e 100644
+--- a/src/modules/evas/model_savers/eet/evas_model_save_eet.c
++++ b/src/modules/evas/model_savers/eet/evas_model_save_eet.c
+@@ -2,6 +2,7 @@
+    #include "config.h"
+ #endif
+ 
++#include <Eet.h>
+ #include <stdio.h>
+ #include "evas_common_private.h"
+ #include "evas_private.h"
+-- 
+2.3.0
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl_1.15.1.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl_1.15.1.bb
new file mode 100644
index 0000000..9f18531
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/efl_1.15.1.bb
@@ -0,0 +1,29 @@
+require ${BPN}.inc
+
+SRC_URI = "\
+    ${E_RELEASES}/libs/${SRCNAME}/${SRCNAME}-${SRCVER}.tar.gz \
+    file://0001-configure.ac-Don-t-check-for-Xprint-extension.patch \
+    file://0001-evas_3d-Add-Eet.h-includes.patch \
+"
+
+SRC_URI[md5sum] = "dc91bcab73275f678e1748a2dea8d88a"
+SRC_URI[sha256sum] = "2a6d0ab28020b4741be20b32ad0ffeb8f97f766c5c32175bacc2f2d0dc52f98c"
+
+# Temporary disable until error like the one following are fixed
+# efl-native/2_1.8.4-r0/efl-1.8.4/src/lib/eet/.libs/libeet.so: file not recognized: File truncated
+# collect2: error: ld returned 1 exit status
+# x86_64-linux-libtool: install: error: relink `modules/evas/savers/tiff/module.la' with the above command before installing it
+# Makefile:11031: recipe for target 'install-savertiffpkgLTLIBRARIES' failed
+PARALLEL_MAKE_class-native = ""
+
+#EFL_RUN_IN_TREE=1 ../src/bin/eolian/eolian_gen --eo --legacy -I/OE/build/shr-core/tmp-eglibc/work/x86_64-linux/efl-native/2_1.10.0-r0/efl-1.10.0/src/lib/eo -I/OE/build/shr-core/tmp-eglibc/work/x86_64-linux/efl-native/2_1.10.0-r0/efl-1.10.0/src/lib/evas/canvas -I/OE/build/shr-core/tmp-eglibc/work/x86_64-linux/efl-native/2_1.10.0-r0/efl-1.10.0/src/lib/edje -I/OE/build/shr-core/tmp-eglibc/work/x86_64-linux/efl-native/2_1.10.0-r0/efl-1.10.0/src/lib/ecore_audio --gc -o lib/evas/canvas/evas_line.eo.c /OE/build/shr-core/tmp-eglibc/work/x86_64-linux/efl-native/2_1.10.0-r0/efl-1.10.0/src/lib/evas/canvas/evas_line.eo
+#ERR<32439>:eolian_gen /OE/build/shr-core/tmp-eglibc/work/x86_64-linux/efl-native/2_1.10.0-r0/efl-1.10.0/src/bin/eolian/main.c:103 _generate_c_file() Couldnt open file lib/evas/canvas/evas_line.eo.c for writing
+#Makefile:30738: recipe for target 'lib/evas/canvas/evas_line.eo.c' failed
+#make[2]: *** [lib/evas/canvas/evas_line.eo.c] Error 1
+#Makefile:2163: recipe for target 'all-recursive' failed
+# autotools-brokensep
+B = "${S}"
+
+#ld: error: modules/evas/image_loaders/png/bin_evas_evas_cserve2_slave-evas_image_load_png.o: requires unsupported dynamic reloc R_ARM_MOVW_ABS_NC; recompile with -fPIC
+#ld: error: modules/evas/image_loaders/png/bin_evas_evas_cserve2_slave-evas_image_load_png.o: requires unsupported dynamic reloc R_ARM_MOVW_ABS_NC; recompile with -fPIC
+CFLAGS += "-fPIC"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary-theme-efenniht/LICENSE b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary-theme-efenniht/LICENSE
new file mode 100644
index 0000000..61bb2f6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary-theme-efenniht/LICENSE
@@ -0,0 +1,25 @@
+Copyright notice for Enlightenment:
+
+Copyright (C) 2000-2010 Carsten Haitzler and various contributors (see AUTHORS)
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above copyright 
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary-theme-efenniht_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary-theme-efenniht_svn.bb
new file mode 100644
index 0000000..494e743
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary-theme-efenniht_svn.bb
@@ -0,0 +1,38 @@
+DESCRIPTION = "efenniht elementary theme - Efenniht was devised to be clean \
+and neutral. Its name (which means equinox) comes from the chromatic duality \
+that was decided at the very beginning, with a dark theme (black and orange) \
+and a bright one (white and blue) to be developed so that more people feel \
+comfortable using it. Efenniht uses few animations, discrete contrasts between \
+shades of gray and fine lines (colored) that outline the selected elements."
+SECTION = "e/utils"
+HOMEPAGE = "http://trac.enlightenment.org/e/wiki/Themes#Efenniht"
+DEPENDS = "edje-native"
+RSUGGESTS_${PN} = "e-wm-theme-illume-efenniht"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=f523ab5986cc79b52a90d2ac3d5454a2"
+
+SRCREV_THM_REV ?= "${EFL_SRCREV}"
+SRCREV_ELM_REV ?= "${EFL_SRCREV}"
+
+SRCREV_FORMAT = "THM_REV"
+PV = "0.0+svnr${SRCPV}"
+PR = "r1"
+
+inherit e-base allarch
+
+SRCNAME = "efenniht"
+SRC_URI = "${E_SVN}/trunk/THEMES;module=${SRCNAME};protocol=http;name=THM_REV"
+SRC_URI += "${E_SVN}/trunk/elementary/data;module=themes;protocol=http;name=ELM_REV"
+SRC_URI += "file://LICENSE"
+S = "${WORKDIR}/${SRCNAME}"
+
+do_compile() {
+    ${STAGING_BINDIR_NATIVE}/edje_cc -id ${S}/images -id ${WORKDIR}/themes/images ${S}/elm-efenniht.edc -o ${S}/elm-efenniht.edj
+}
+
+do_install() {
+    install -d ${D}${datadir}/elementary/themes/
+    install -m 0644 ${S}/elm-efenniht.edj ${D}${datadir}/elementary/themes/
+}
+
+FILES_${PN} = "${datadir}/elementary/themes/"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary.inc
new file mode 100644
index 0000000..f0a92df
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary.inc
@@ -0,0 +1,89 @@
+DESCRIPTION = "EFL based widget set for mobile devices"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a173054a93896e933df53e3382d472c2"
+DEPENDS = "eet-native edje-native elementary-native efreet evas ecore edje eet eldbus ethumb poppler eio"
+DEPENDS_class-native = "efl-native"
+
+inherit efl gettext
+
+EXTRA_OECONF_append_class-target = "\
+    --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
+    --with-eet-eet=${STAGING_BINDIR_NATIVE}/eet \
+    --with-elementary-codegen=${STAGING_BINDIR_NATIVE}/elementary_codegen \
+    --with-elm-prefs-cc=${STAGING_BINDIR_NATIVE}/elm_prefs_cc \
+    --with-eolian-gen=${STAGING_BINDIR_NATIVE}/eolian_gen \
+    --with-eolian-cxx=${STAGING_BINDIR_NATIVE}/eolian_cxx \
+"
+
+BBCLASSEXTEND = "native"
+
+PACKAGECONFIG[eweather] = "--enable-eweather,--disable-eweather,libeweather"
+PACKAGECONFIG[ewebkit] = "--with-elementary-web-backend=ewebkit,--with-elementary-web-backend=none,webkit-efl"
+# be aware when enabling this for efl-native, we don't provide gcc-native so you need to make
+# sure that all your builders have g++ which supports -std=gnu++11
+PACKAGECONFIG[c++11] = "--enable-cxx-bindings,--disable-cxx-bindings"
+
+do_configure_prepend() {
+    # prefix returned eolian paths with STAGING_DIR_HOST
+    sed -i 's%^\(DEPS_EOLIAN_FLAGS=`.*\)`$%\1 | sed "s#-I\\${prefix}#-I\\${STAGING_DIR_HOST}\\${prefix}#g"`%g' ${S}/configure.ac
+}
+
+do_compile_append_class-target() {
+    sed -i -e s:${STAGING_DIR_TARGET}::g \
+           -e s:/${TARGET_SYS}::g \
+              elementary.pc
+}
+
+PACKAGES += "${PN}-configs ${PN}-accessibility"
+
+RDEPENDS_${PN}_class-native = ""
+
+RDEPENDS_${PN} = "\
+    ${PN}-themes \
+    ${PN}-configs \
+"
+RSUGGESTS_${PN} = "${PN}-tests ${PN}-accessibility"
+
+FILES_${PN} += "\
+    ${libdir}/edje/modules/elm \
+    ${libdir}/elementary/modules/datetime_input_ctxpopup/*/module.so \
+    ${libdir}/elementary/modules/prefs/*/module.so \
+    ${libdir}/elementary/modules/prefs/*/*.edj \
+"
+
+FILES_${PN}-dev += "\
+    ${bindir}/elm_prefs_cc \
+    ${libdir}/elementary/modules/*/*/module.la \
+    ${libdir}/cmake \
+"
+
+FILES_${PN}-themes = "\
+    ${datadir}/elementary/themes \
+"
+
+FILES_${PN}-configs = "\
+    ${datadir}/elementary/config \
+"
+
+FILES_${PN}-dbg += "\
+    ${libdir}/elementary/modules/*/*/.debug \
+    ${libdir}/edje/modules/elm/*/.debug \
+"
+
+FILES_${PN}-tests = "\
+    ${bindir}/elementary* \
+    ${datadir}/elementary/images \
+    ${datadir}/elementary/objects \
+    ${datadir}/elementary/examples \
+    ${datadir}/applications/* \
+    ${datadir}/icons/* \
+    ${libdir}/elementary/modules/test_entry/* \
+    ${libdir}/elementary/modules/test_map/* \
+"
+
+FILES_${PN}-accessibility = "\
+    ${libdir}/elementary/modules/access_output/* \
+"
+
+# Some upgrade path tweaking, as in evas
+AUTO_LIBNAME_PKGS = ""
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary/0001-Makefile-Use-elementary_codegen-defined-in-configure.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary/0001-Makefile-Use-elementary_codegen-defined-in-configure.patch
new file mode 100644
index 0000000..9524c70
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary/0001-Makefile-Use-elementary_codegen-defined-in-configure.patch
@@ -0,0 +1,29 @@
+From 75d104d105aa03dd9d446fa7d84fa95e0f566cf9 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sat, 11 Jan 2014 12:55:59 +0100
+Subject: [PATCH] Makefile: Use elementary_codegen defined in configure
+
+* using binaries from top_buildir doesn't work when cross-compiling elementary
+  where we need to pass native binaries in configure params
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/examples/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/examples/Makefile.am b/src/examples/Makefile.am
+index fc35c75..1e10b0b 100644
+--- a/src/examples/Makefile.am
++++ b/src/examples/Makefile.am
+@@ -29,7 +29,7 @@ LDADD = \
+ @ELEMENTARY_X_LIBS@ \
+ $(top_builddir)/src/lib/libelementary.la
+ 
+-ELEMENTARY_CODEGEN = $(top_builddir)/src/bin/@ELEMENTARY_CODEGEN_PRG@
++ELEMENTARY_CODEGEN = @elementary_codegen@
+ ELEMENTARY_CODEGEN_FLAGS = --prefix=codegen_example
+ 
+ SRCS = \
+-- 
+1.9.0
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary_1.15.1.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary_1.15.1.bb
new file mode 100644
index 0000000..f53eb44
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/elementary_1.15.1.bb
@@ -0,0 +1,16 @@
+require ${BPN}.inc
+
+SRC_URI = "\
+    ${E_RELEASES}/libs/${SRCNAME}/${SRCNAME}-${SRCVER}.tar.gz \
+"
+
+# only for target, because configure doesn't default to sane default when
+# these paths aren't passed in -native build
+SRC_URI_append_class-target = " file://0001-Makefile-Use-elementary_codegen-defined-in-configure.patch"
+
+SRC_URI[md5sum] = "bde4d85fa10ee8a7c0aeb74e69d7cd06"
+SRC_URI[sha256sum] = "ae5540c2103fcdc69fd7469277ce25a8a00a0f701fc2c20771dc0108401e53a0"
+
+# autotools-brokensep - configure updates Elementary.h correctly in ${B}, but then build is using Elementary.h from ${S}
+# which includes #define ELM_EMAP (instead of #undef ELM_EMAP) and building fails
+B = "${S}"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/emotion-generic-players.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/emotion-generic-players.inc
new file mode 100644
index 0000000..4ab89ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/emotion-generic-players.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "Emotion generic players"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a0f11eedf8706bf6d4d6639fb67eb8ae"
+
+DEPENDS = "emotion"
+
+inherit efl
+
+SRCNAME = "emotion_generic_players"
+
+# creates empty packages until you get vlc-2 and enable it here
+PACKAGECONFIG ?= ""
+# needs eina and ecore from efl and vlc-2 (currently we have 1.11)
+PACKAGECONFIG[vlc] = "--with-vlc,--without-vlc,vlc efl"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/emotion-generic-players_1.15.0.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/emotion-generic-players_1.15.0.bb
new file mode 100644
index 0000000..1a184bd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/emotion-generic-players_1.15.0.bb
@@ -0,0 +1,8 @@
+require ${BPN}.inc
+
+SRC_URI = "\
+    ${E_RELEASES}/libs/${SRCNAME}/${SRCNAME}-${SRCVER}.tar.gz \
+"
+
+SRC_URI[md5sum] = "68627c1aabf5b7fe084299adcc0b73c1"
+SRC_URI[sha256sum] = "10bad633480a691585b0ba470c573b14da0a010008d9d59d0792cea8c621d423"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/engrave_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/engrave_svn.bb
new file mode 100644
index 0000000..f34be98
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/engrave_svn.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Engrave is an Edje Editing Library"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=edf2d968b9eb026bfa82cccbd0e6f9f5"
+# also requires yacc and lex on host
+DEPENDS = "evas ecore flex"
+PV = "0.0.0+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+
+inherit efl autotools-brokensep
+SRC_URI = "${E_SVN}/OLD;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
+
+# engrave.l:5:35: fatal error: libengrave_la-engrave.h: No such file or directory
+# http://errors.yoctoproject.org/Errors/Details/56597/
+PNBLACKLIST[engrave] ?= "BROKEN: fails to build with latest oe-core"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/entrance/0001-pam-use-common-auth-instead-of-system-auth.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/entrance/0001-pam-use-common-auth-instead-of-system-auth.patch
new file mode 100644
index 0000000..a82d1ed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/entrance/0001-pam-use-common-auth-instead-of-system-auth.patch
@@ -0,0 +1,26 @@
+From 14396c52a2556b1ab778a310a318ec19c2829735 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Thu, 24 Nov 2011 13:25:33 +0100
+Subject: [PATCH] pam: use common-auth instead of system-auth
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ PROTO/entrance/data/entrance |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/data/entrance b/data/entrance
+index 872c83d..2b98c3a 100644
+--- a/data/entrance
++++ b/data/entrance
+@@ -1,4 +1,4 @@
+-auth	include		system-auth
+-account	include		system-auth
+-password	include		system-auth
+-session	include		system-auth
++auth	include		common-auth
++account	include		common-account
++password	include		common-password
++session	include		common-session
+-- 
+1.7.8.6
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/entrance/entrance.service b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/entrance/entrance.service
new file mode 100644
index 0000000..4828686
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/entrance/entrance.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Login manager for Enlightenment
+
+[Service]
+ExecStart=/usr/sbin/entrance
+
+[Install]
+Alias=display-manager.service
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/entrance_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/entrance_svn.bb
new file mode 100644
index 0000000..2888dc8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/entrance_svn.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Login manager for Enlightenment"
+DEPENDS = "efreet eina eet ecore elementary"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+SECTION = "e/apps"
+
+inherit e gettext systemd
+SRC_URI = "${E_SVN}/trunk/PROTO;module=${SRCNAME};protocol=http;scmdata=keep \
+    file://0001-pam-use-common-auth-instead-of-system-auth.patch \
+    file://entrance.service \
+"
+S = "${WORKDIR}/${SRCNAME}"
+
+PNBLACKLIST[entrance] ?= "broken: switch to https://git.enlightenment.org/misc/entrance.git and fix 0.0.4+svnr82070-r7/entrance/data/themes/old/default.edc:678. invalid state name: 'defaault'. "default" state must always be first."
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[consolekit] = "--enable-consolekit,--disable-consolekit,consolekit"
+
+EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '', '--disable-pam', d)}"
+
+PR = "r7"
+PV = "0.0.4+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+
+RDEPENDS_${PN} += "${PN}-themes sessreg xauth"
+CONFFILES_${PN} += "${sysconfdir}/entrance.conf"
+
+RCONFLICTS_${PN} += "xserver-nodm-init"
+RREPLACES_${PN} += "xserver-nodm-init"
+
+RCONFLICTS_${PN} += "xserver-nodm-init-systemd"
+RREPLACES_${PN} += "xserver-nodm-init-systemd"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+
+SYSTEMD_SERVICE_${PN} = "entrance.service"
+
+do_install_append() {
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/entrance.service ${D}${systemd_unitdir}/system
+}
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/epdf/0001-remove-antialias-functions-poppler-has-dropped-them-.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/epdf/0001-remove-antialias-functions-poppler-has-dropped-them-.patch
new file mode 100644
index 0000000..728ffa6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/epdf/0001-remove-antialias-functions-poppler-has-dropped-them-.patch
@@ -0,0 +1,132 @@
+From 6691ac5fcbac0e766d4410ae649a13957ae85289 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Thu, 22 Oct 2015 16:27:52 +0200
+Subject: [PATCH 1/2] remove antialias functions - poppler has dropped them in
+ the API
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The functions removed were not used.
+
+Upstream-Status: pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ src/lib/epdf_main.h                   | 45 -----------------------------------
+ src/lib/mupdf/epdf_mupdf_main.c       | 18 --------------
+ src/lib/poppler/epdf_poppler_main.cpp | 21 ----------------
+ 3 files changed, 84 deletions(-)
+
+diff --git a/src/lib/epdf_main.h b/src/lib/epdf_main.h
+index 54a57ca..0a79bad 100644
+--- a/src/lib/epdf_main.h
++++ b/src/lib/epdf_main.h
+@@ -29,49 +29,4 @@ EAPI int epdf_shutdown();
+  */
+ EAPI const char *epdf_backend_version_get (void);
+ 
+-/**
+- * @brief Return the state of fonts antialiasing in Poppler
+- *
+- * @return EINA_TRUE if fonts antialiasing enabled, EINA_FALSE otherwise.
+- *
+- * Return EINA_TRUE if the state of fonts antialiasing is enabled in
+- * Poppler, EINA_FALSE otherwise.
+- *
+- * @ingroup Epdf_Main
+- */
+-EAPI Eina_Bool epdf_fonts_antialias_get (void);
+-
+-/**
+- * @brief Sets fonts antialiasing mode in Poppler
+- *
+- * @param on EINA_TRUE to enable fonts antialiasing, EINA_FALSE to disable
+- *
+- * Set @p on to EINA_TRUE to enable fonts antialiasing in Poppler,
+- * EINA_FALSE to disable it.
+- */
+-EAPI void epdf_fonts_antialias_set (Eina_Bool on);
+-
+-/**
+- * @brief Return the state of lines antialiasing in Poppler
+- *
+- * @return EINA_TRUE if lines antialiasing enabled, EINA_FALSE otherwise.
+- *
+- * Return EINA_TRUE if the state of lines antialiasing is enabled in
+- * Poppler, EINA_FALSE otherwise.
+- *
+- * @ingroup Epdf_Main
+- */
+-EAPI Eina_Bool epdf_lines_antialias_get (void);
+-
+-/**
+- * @brief Sets lines antialiasing mode in Poppler
+- *
+- * @param on EINA_TRUE to enable lines antialiasing, EINA_FALSE to disable
+- *
+- * Set @p on to EINA_TRUE to enable lines antialiasing in Poppler,
+- * EINA_FALSE to disable it.
+- */
+-EAPI void epdf_lines_antialias_set (Eina_Bool on);
+-
+-
+ #endif /* __EPDF_MAIN_H__ */
+diff --git a/src/lib/mupdf/epdf_mupdf_main.c b/src/lib/mupdf/epdf_mupdf_main.c
+index 17bb830..27c6de2 100644
+--- a/src/lib/mupdf/epdf_mupdf_main.c
++++ b/src/lib/mupdf/epdf_mupdf_main.c
+@@ -37,21 +37,3 @@ epdf_backend_version_get (void)
+ {
+    return "0.5";
+ }
+-
+-Eina_Bool epdf_fonts_antialias_get(void)
+-{
+-   return EINA_TRUE;
+-}
+-
+-void epdf_fonts_antialias_set(Eina_Bool on)
+-{
+-}
+-
+-Eina_Bool epdf_lines_antialias_get(void)
+-{
+-   return EINA_TRUE;
+-}
+-
+-void epdf_lines_antialias_set(Eina_Bool on)
+-{
+-}
+diff --git a/src/lib/poppler/epdf_poppler_main.cpp b/src/lib/poppler/epdf_poppler_main.cpp
+index 9841987..9efdbe8 100644
+--- a/src/lib/poppler/epdf_poppler_main.cpp
++++ b/src/lib/poppler/epdf_poppler_main.cpp
+@@ -46,24 +46,3 @@ epdf_backend_version_get (void)
+ {
+   return POPPLER_VERSION;
+ }
+-
+-Eina_Bool epdf_fonts_antialias_get (void)
+-{
+-  return globalParams->getAntialias();
+-}
+-
+-void epdf_fonts_antialias_set (Eina_Bool on)
+-{
+-  /* Nice API */
+-  globalParams->setAntialias((char*)(on ? "yes" : "no"));
+-}
+-
+-Eina_Bool epdf_lines_antialias_get (void)
+-{
+-    return globalParams->getVectorAntialias();
+-}
+-
+-void epdf_lines_antialias_set (Eina_Bool on)
+-{
+-    globalParams->setVectorAntialias((char*)(on ? "yes" : "no"));
+-}
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/epdf/0002-epdf_poppler_postscript.cpp-fix-build-for-poppler-AP.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/epdf/0002-epdf_poppler_postscript.cpp-fix-build-for-poppler-AP.patch
new file mode 100644
index 0000000..c9adaa7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/epdf/0002-epdf_poppler_postscript.cpp-fix-build-for-poppler-AP.patch
@@ -0,0 +1,45 @@
+From a84c16fdc606f22b993f870b1cea56dd060a35e6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Thu, 22 Oct 2015 16:55:30 +0200
+Subject: [PATCH 2/2] epdf_poppler_postscript.cpp: fix build for poppler API
+ change
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Poppler API was changed in [1]. The patch not only shows the change but also
+inspires how to fix.
+
+[1] http://cgit.freedesktop.org/poppler/poppler/commit/?id=9caf7525409d699c16896653528486451123b485
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ src/lib/poppler/epdf_poppler_postscript.cpp | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/lib/poppler/epdf_poppler_postscript.cpp b/src/lib/poppler/epdf_poppler_postscript.cpp
+index 0c2836b..656193b 100644
+--- a/src/lib/poppler/epdf_poppler_postscript.cpp
++++ b/src/lib/poppler/epdf_poppler_postscript.cpp
+@@ -82,11 +82,14 @@ epdf_postscript_print (const Epdf_Postscript *postscript)
+ 
+   // FIXME: fix postscript title
+ #ifdef HAVE_POPPLER_0_20
++  std::vector<int> pages;
++  for (int i = postscript->first_page; i <= postscript->last_page; ++i) {
++    pages.push_back(i);
++  }
+   PSOutputDev ps_dev(postscript->filename,
+                      postscript->pdfdoc,
+                      (char *)"PS title",
+-                     postscript->first_page,
+-                     postscript->last_page,
++                     pages,
+                      psModePS,
+                      (int)postscript->width,
+                      (int)postscript->height,
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/epdf_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/epdf_svn.bb
new file mode 100644
index 0000000..e32a5fd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/epdf_svn.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Epdf is the glue between EFL and libpoppler"
+
+DEPENDS = "poppler evas ecore"
+PV = "0.1.0+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+
+inherit efl
+
+LICENSE = "GPLv2 & LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+                    file://COPYING.LESSER;md5=6a6a8e020838b23406c81b19c1d46df6 \
+"
+
+SRC_URI = " \
+    ${E_SVN}/trunk/PROTO;module=${SRCNAME};protocol=http;scmdata=keep \
+    file://0001-remove-antialias-functions-poppler-has-dropped-them-.patch \
+    file://0002-epdf_poppler_postscript.cpp-fix-build-for-poppler-AP.patch \
+"
+S = "${WORKDIR}/${SRCNAME}"
+
+EXTRA_OECONF = "\
+    --enable-poppler \
+    --disable-mupdf \
+"
+
+# Some upgrade path tweaking, as in evas
+AUTO_LIBNAME_PKGS = ""
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/evas-generic-loaders.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/evas-generic-loaders.inc
new file mode 100644
index 0000000..5cd9ec1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/evas-generic-loaders.inc
@@ -0,0 +1,71 @@
+DESCRIPTION = "Evas generic loaders"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a87563ed30add2b0e3460272d3138a00"
+DEPENDS = "eina poppler librsvg cairo"
+
+inherit efl
+
+SRCNAME = "evas_generic_loaders"
+
+EXTRA_OECONF = " \
+    --enable-poppler \
+    --enable-svg \
+    --disable-gstreamer \
+    --disable-libraw \
+    --disable-spectre \
+"
+
+PACKAGESPLITFUNCS_prepend = "split_evas_loader_packages "
+
+python split_evas_loader_packages () {
+    bb.note( "splitting packages for evas generic loaders" )
+    basedir = d.expand( '${libdir}/evas/utils')
+
+    do_split_packages(d, basedir, 'evas_image_loader\.(.*)$',
+    output_pattern = "evas-generic-loader-%s",
+    description = 'Evas generic loaders - module %s',
+    allow_dirs=True, recursive=False, extra_depends="" )
+
+    do_split_packages(d, basedir, 'evas_generic_pdf_loader\.(.*)$',
+    output_pattern = "evas-generic-pdf-loader-%s",
+    description = 'Evas generic pdf loaders - module %s',
+    allow_dirs=True, recursive=False, extra_depends="" )
+}
+
+# add symlinks for different format (it doesn't make much sense to package them in separate packages)
+FILES_evas-generic-loader-xcf += " \
+    ${libdir}/evas/utils/evas_image_loader.xcf.gz \
+"
+FILES_evas-generic-loader-svg += " \
+    ${libdir}/evas/utils/evas_image_loader.svg.gz \
+    ${libdir}/evas/utils/evas_image_loader.svgz \
+"
+FILES_evas-generic-loader-pdf += " \
+    ${libdir}/evas/utils/evas_image_loader.doc \
+    ${libdir}/evas/utils/evas_image_loader.docx \
+    ${libdir}/evas/utils/evas_image_loader.odp \
+    ${libdir}/evas/utils/evas_image_loader.ods \
+    ${libdir}/evas/utils/evas_image_loader.odt \
+    ${libdir}/evas/utils/evas_image_loader.ppt \
+    ${libdir}/evas/utils/evas_image_loader.pptx \
+    ${libdir}/evas/utils/evas_image_loader.rtf \
+    ${libdir}/evas/utils/evas_image_loader.xls \
+    ${libdir}/evas/utils/evas_image_loader.xlsx \
+"
+FILES_evas-generic-pdf-loader-libreoffice += " \
+    ${libdir}/evas/utils/evas_generic_pdf_loader.doc \
+    ${libdir}/evas/utils/evas_generic_pdf_loader.docx \
+    ${libdir}/evas/utils/evas_generic_pdf_loader.odp \
+    ${libdir}/evas/utils/evas_generic_pdf_loader.ods \
+    ${libdir}/evas/utils/evas_generic_pdf_loader.odt \
+    ${libdir}/evas/utils/evas_generic_pdf_loader.ppt \
+    ${libdir}/evas/utils/evas_generic_pdf_loader.pptx \
+    ${libdir}/evas/utils/evas_generic_pdf_loader.rtf \
+    ${libdir}/evas/utils/evas_generic_pdf_loader.xls \
+    ${libdir}/evas/utils/evas_generic_pdf_loader.xlsx \
+"
+
+FILES_${PN}-dbg += "${libdir}/evas/utils/.debug"
+
+PACKAGES += "evas-generic-loader-svg"
+PACKAGES_DYNAMIC += "^evas-generic-loader-.* ^evas-generic-pdf-loader-.*"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/evas-generic-loaders_1.15.0.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/evas-generic-loaders_1.15.0.bb
new file mode 100644
index 0000000..911ce8c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/evas-generic-loaders_1.15.0.bb
@@ -0,0 +1,8 @@
+require ${BPN}.inc
+
+SRC_URI = "\
+    ${E_RELEASES}/libs/${SRCNAME}/${SRCNAME}-${SRCVER}.tar.gz \
+"
+
+SRC_URI[md5sum] = "3ca8443b8cbf177845595c5e02fbc49c"
+SRC_URI[sha256sum] = "caa22c9ba1ae9629c16a3fe809ea927f60b8f0d80cdb7f145159b997b9ae2bcd"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/expedite.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/expedite.inc
new file mode 100644
index 0000000..60e8597
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/expedite.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "Expedite is a comprehensive benchmarking suite for Evas"
+DEPENDS = "eet evas libsdl"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d70bc65d46237e4ef386beebe7d0fe5b"
+
+INC_PR = "r0"
+
+inherit e
+
+EXTRA_OECONF = "\
+    --x-includes=${STAGING_INCDIR}/X11 \
+    --x-libraries=${STAGING_LIBDIR} \
+    --enable-simple-x11 \
+\
+    --enable-software-x11 \
+    --enable-xrender-x11 \
+    --enable-software-16-x11 \
+    --enable-opengl-x11 \
+    --enable-fb \
+    --disable-software-ddraw \
+    --disable-direct3d \
+"
+
+FILES_${PN} += "${datadir}"
+RDEPENDS_${PN} = "expedite-themes evas-engine-fb evas-engine-software-generic evas-engine-software-x11 evas-engine-gl-x11 evas-loader-png"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/expedite_1.7.9.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/expedite_1.7.9.bb
new file mode 100644
index 0000000..cee2d60
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/expedite_1.7.9.bb
@@ -0,0 +1,8 @@
+require ${BPN}.inc
+
+SRC_URI = "\
+    ${E_MIRROR}/${SRCNAME}-${SRCVER}.tar.gz \
+"
+
+SRC_URI[md5sum] = "954fe8e40fec6a561190ff0fb75b6bdd"
+SRC_URI[sha256sum] = "a05be096c911e0d66d4bdc497ebb935a04ad23696de9084aed9959b5172a593e"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/expedite_git.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/expedite_git.bb
new file mode 100644
index 0000000..5b44cf0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/expedite_git.bb
@@ -0,0 +1,11 @@
+require ${BPN}.inc
+
+SRCREV = "a5e6af917af52877b378090811cf836c16d0bfbb"
+PV = "1.7.99+gitr${SRCPV}"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "\
+    git://git.enlightenment.org/tools/${BPN}.git \
+"
+S = "${WORKDIR}/${SRCNAME}"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/imlib2_git.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/imlib2_git.bb
new file mode 100644
index 0000000..355b334
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/imlib2_git.bb
@@ -0,0 +1,45 @@
+SUMMARY = "A graphic library for file loading, saving, rendering, and manipulation"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=344895f253c32f38e182dcaf30fe8a35"
+
+DEPENDS = "freetype libpng jpeg virtual/libx11 libxext"
+PROVIDES = "virtual/imlib2"
+PV = "1.4.6+gitr${SRCPV}"
+SRCREV = "560a58e61778d84953944f744a025af6ce986334"
+
+inherit efl binconfig
+SRC_URI = "git://git.enlightenment.org/legacy/${BPN}.git"
+S = "${WORKDIR}/git"
+
+# autotools-brokensep
+B = "${S}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gif] = "--with-gif,--without-gif,giflib"
+PACKAGECONFIG[tiff] = "--with-tiff,--without-tiff,tiff"
+PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2"
+PACKAGECONFIG[id3] = "--with-id3,--without-id3,libid3tag"
+
+EXTRA_OECONF = "--with-x \
+                --x-includes=${STAGING_INCDIR} \
+                --x-libraries=${STAGING_LIBDIR} "
+
+# TODO: Use more fine granular version
+#OE_LT_RPATH_ALLOW=":${libdir}/imlib2/loaders:${libdir}/imlib2/filters:"
+OE_LT_RPATH_ALLOW = "any"
+OE_LT_RPATH_ALLOW[export]="1"
+
+PACKAGES =+ "imlib2-loaders-dbg imlib2-filters-dbg imlib2-loaders imlib2-filters"
+FILES_${PN} = "${libdir}/lib*.so.* ${libdir}/imlib2/*/*.so"
+FILES_${PN}-dbg = "${libdir}/.debug/ ${bindir}/.debug/ ${prefix}/src/debug/"
+FILES_${PN}-dev += "${bindir}/imlib2-config ${libdir}/*.so ${includedir}"
+FILES_${PN}-bin = "${bindir}"
+FILES_imlib2-loaders = "${libdir}/imlib2/loaders/*.so"
+FILES_imlib2-filters = "${libdir}/imlib2/filters/*.so"
+FILES_imlib2-loaders-dbg += "${libdir}/imlib2/loaders/.debug"
+FILES_imlib2-filters-dbg += "${libdir}/imlib2/filters/.debug"
+
+# png.so jpeg.so id3.so are also provided by lightmediascanner
+PRIVATE_LIBS_imlib2-loaders = "pnm.so lbm.so argb.so tiff.so zlib.so bmp.so tga.so gif.so xpm.so bz2.so"
+
+PRIVATE_LIBS_imlib2-filters = "bumpmap.so colormod.so testfilter.so"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/libeflvala/disable.eina.test.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/libeflvala/disable.eina.test.patch
new file mode 100644
index 0000000..84be133
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/libeflvala/disable.eina.test.patch
@@ -0,0 +1,44 @@
+It causes testeina.c build to fail linking to internal eina_.*_{init,shutdown} symbols
+as reported in:
+http://lists.alioth.debian.org/pipermail/pkg-fso-maint/2010-May/003056.html
+
+Upstream-Status: Pending
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+diff -uNr vala/tests/testeina.vala ../../../arm920tt-oe-linux-gnueabi/libeflvala/1_2011.01.13.1+svnr82070-r2/vala/tests/testeina.vala
+--- vala/tests/testeina.vala	2014-01-13 16:16:53.984999035 +0100
++++ ../../../arm920tt-oe-linux-gnueabi/libeflvala/1_2011.01.13.1+svnr82070-r2/vala/tests/testeina.vala	2010-02-26 09:02:06.000000000 +0100
+@@ -153,22 +153,22 @@
+ 
+ void test_eina_benchmark()
+ {
+-    assert( Eina.Module.init() );
+-    assert( Eina.List.init() );
+-    assert( Eina.Array.init() );
+-    assert( Eina.Benchmark.init() );
+-    assert( Eina.Mempool.init() );
++//  assert( Eina.Module.init() );
++//  assert( Eina.List.init() );
++//  assert( Eina.Array.init() );
++//  assert( Eina.Benchmark.init() );
++//  assert( Eina.Mempool.init() );
+     var b = new Eina.Benchmark( "test", "test");
+     assert( b.register( "bogus", spec_one, 0, 100, 5 ) );
+     unowned Eina.Array<string> result = b.run();
+     assert( result.count_get() == 2 );
+     result = null;
+     b = null;
+-    assert( Eina.Mempool.shutdown() );
+-    assert( Eina.Benchmark.shutdown() );
+-    assert( Eina.Array.shutdown() );
+-    assert( Eina.List.shutdown() );
+-    assert( Eina.Module.shutdown() );
++//  assert( Eina.Mempool.shutdown() );
++//  assert( Eina.Benchmark.shutdown() );
++//  assert( Eina.Array.shutdown() );
++//  assert( Eina.List.shutdown() );
++//  assert( Eina.Module.shutdown() );
+ }
+ 
+ //===========================================================================
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/libeflvala_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/libeflvala_svn.bb
new file mode 100644
index 0000000..4922b1b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/libeflvala_svn.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Vala meets the Enlightenment Foundation Libraries"
+AUTHOR = "Michael 'Mickey' Lauer <mlauer@vanille-media.de>"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+SECTION = "devel"
+DEPENDS = "vala-native glib-2.0 dbus dbus-glib eina eet evas ecore edje elementary tiff"
+PV = "2011.01.13.1+svnr${SRCPV}"
+PE = "1"
+PR = "r2"
+SRCREV = "${EFL_SRCREV}"
+SRCNAME = "vala"
+
+inherit e-base autotools-brokensep pkgconfig vala
+
+SRC_URI = "${E_SVN}/trunk/BINDINGS;module=${SRCNAME};protocol=http \
+    file://disable.eina.test.patch \
+"
+S = "${WORKDIR}/${SRCNAME}"
+
+PACKAGES =+ "${PN}-examples"
+FILES_${PN}-examples = "${datadir}/libeflvala ${bindir}/*"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/libeweather_svn.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/libeweather_svn.bb
new file mode 100644
index 0000000..eff8586
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/efl/libeweather_svn.bb
@@ -0,0 +1,46 @@
+SUMMARY = "EFL-based weather widget library"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24 \
+                    file://COPYING-PLAIN;md5=c910b645eda0005ccec46f75203dc96e"
+
+DEPENDS = "ecore edje"
+PV = "0.0.0+svnr${SRCPV}"
+SRCREV = "${EFL_SRCREV}"
+
+inherit efl
+SRC_URI = "${E_SVN}/trunk/PROTO;module=${SRCNAME};protocol=http;scmdata=keep"
+S = "${WORKDIR}/${SRCNAME}"
+
+EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
+
+RSUGGESTS_${PN} = "elementary-tests"
+
+do_compile_append() {
+    sed -i -e s:${STAGING_DIR_TARGET}::g \
+           -e s:/${TARGET_SYS}::g \
+              eweather.pc
+}
+
+PACKAGES += "${PN}-plugins"
+
+FILES_${PN}-themes = "\
+    ${datadir} \
+"
+
+FILES_${PN}-plugins = "\
+    ${libdir}/eweather/plugins/*.so \
+"
+
+FILES_${PN}-dbg += "\
+    ${libdir}/eweather/plugins/.debug \
+"
+
+FILES_${PN}-dev += "\
+    ${libdir}/eweather/plugins/*.a \
+    ${libdir}/eweather/plugins/*.la \
+"
+
+RRECOMMENDS_${PN} = "\
+    ${PN}-themes \
+    ${PN}-plugins \
+"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-efl-sdk.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-efl-sdk.bb
new file mode 100644
index 0000000..5ead412
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-efl-sdk.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Efl Software Development Kit"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
+                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+ALLOW_EMPTY_${PN} = "1"
+
+PR = "r1"
+
+require packagegroup-efl-sdk.inc
+
+PACKAGES = "${PN}"
+
+RDEPENDS_${PN} = "\
+    packagegroup-core-sdk \
+    ${SDK-EFL} \
+    ${SDK-EXTRAS}"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-efl-sdk.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-efl-sdk.inc
new file mode 100644
index 0000000..f2b0456
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-efl-sdk.inc
@@ -0,0 +1,12 @@
+SDK-EFL = " \
+     efl-dev \
+     elementary-dev \
+     edbus-dev \
+     luajit-dev \
+"
+
+SDK-EXTRAS ?= ""
+SDK-EXTRAS_qemux86 ?= " valgrind lttng-ust-dev"
+SDK-EXTRAS_qemux86-64 ?= " lttng-ust-dev"
+SDK-EXTRAS_qemuppc ?= " lttng-ust-dev"
+SDK-EXTRAS_qemuarm ?= " lttng-ust-dev"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-efl-standalone-sdk-target.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-efl-standalone-sdk-target.bb
new file mode 100644
index 0000000..6a3f33d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-efl-standalone-sdk-target.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Efl Software Development Kit"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
+                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+ALLOW_EMPTY_${PN} = "1"
+
+PR = "r1"
+
+require packagegroup-efl-sdk.inc
+
+PACKAGES = "${PN} ${PN}-dbg"
+
+RDEPENDS_${PN} = "\
+    packagegroup-core-standalone-sdk-target \
+    ${SDK-EFL} \
+    ${SDK-EXTRAS}"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-x11-illume.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-x11-illume.bb
new file mode 100644
index 0000000..9997828
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/packagegroups/packagegroup-x11-illume.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "The Illume Windowing Environment -- install this task to get the Enlightenment Window Manager + the Illume environment."
+SECTION = "x11/wm"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${TOPDIR}/meta-openembedded/meta-efl/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+PV = "1.0"
+PR = "r5"
+
+inherit packagegroup allarch
+
+# Default theme and config
+ETHEME ?= "e-wm-theme-default"
+ECONFIG ?= "e-wm-config-mobile"
+
+RRECOMMENDS_${PN} = "\
+    ${ETHEME} \
+"
+
+RDEPENDS_${PN} = "\
+    packagegroup-core-x11-xserver \
+    packagegroup-core-x11-utils \
+    \
+    e-wm \
+    ${ECONFIG} \
+"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl.inc b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl.inc
new file mode 100644
index 0000000..c6ef976
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl.inc
@@ -0,0 +1,69 @@
+DESCRIPTION = "Webkit browser engine, EFL edition"
+LICENSE = "GPLv2+ & LGPL-2.1"
+LIC_FILES_CHKSUM = " \
+    file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
+    file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
+    file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
+    file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
+"
+
+# you need harfbuzz with icu enabled, you can add this to your config:
+# PACKAGECONFIG_append_pn-harfbuzz = " icu"
+DEPENDS = "icu libxslt sqlite3 gperf-native bison-native flex-native jpeg \
+           libpng libxt fontconfig cairo freetype glib-2.0 libsoup-2.4 \
+           libxml2 pango eina ecore evas edje eldbus harfbuzz enchant \
+           ruby-native elementary"
+
+PE = "1"
+
+SRCVER ?= "${PV}"
+SRC_URI = "\
+    ${E_RELEASES}/libs/webkit-efl/ewebkit-${SRCVER}.tar.xz \
+"
+S = "${WORKDIR}/ewebkit"
+
+inherit cmake lib_package pkgconfig perlnative pythonnative
+
+ARM_INSTRUCTION_SET = "arm"
+
+EXTRA_OECMAKE = " \
+    -DPORT=Efl \
+    -DSHARED_CORE=On \
+    -DENABLE_DRAG_SUPPORT=On \
+    -DENABLE_WEB_AUDIO=Off \
+    -DENABLE_VIDEO=Off \
+    -DENABLE_VIDEO_TRACK=Off \
+    -DENABLE_ACCESSIBILITY=Off \
+    -DENABLE_BATTERY_STATUS=Off \
+"
+# generated ASM code isn't compatible with armv[45]
+# it was removed from macro assembler in upstream commit 121885
+# https://bugs.webkit.org/show_bug.cgi?id=90198
+EXTRA_OECMAKE_append_armv4 = " -DENABLE_LLINT=Off -DENABLE_JIT=Off -DENABLE_DFG_JIT=Off -DENABLE_FTL_JIT=Off"
+EXTRA_OECMAKE_append_armv5 = " -DENABLE_LLINT=Off -DENABLE_JIT=Off -DENABLE_DFG_JIT=Off -DENABLE_FTL_JIT=Off"
+
+# hack it in OptionsEfl.cmake because that overrules -DENABLE_LLINT=Off
+do_configure_prepend_armv4() {
+    sed -i 's/WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LLINT ON)/WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LLINT OFF)/g' ${S}/Source/cmake/OptionsEfl.cmake
+}
+do_configure_prepend_armv5() {
+    sed -i 's/WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LLINT ON)/WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LLINT OFF)/g' ${S}/Source/cmake/OptionsEfl.cmake
+}
+
+# and disabled LLINT currently isn't supported, so restrict to armv7a and x86*
+COMPATIBLE_MACHINE = "(-)"
+COMPATIBLE_MACHINE_x86 = "(.*)"
+COMPATIBLE_MACHINE_x86-64 = "(.*)"
+COMPATIBLE_MACHINE_armv7a = "(.*)"
+
+LEAD_SONAME = "libewebkit.so"
+PACKAGES =+ "${PN}launcher-dbg ${PN}launcher ${PN}-inspector"
+
+FILES_${PN} += "${datadir}/ewebkit2-1/themes/default.edj"
+FILES_${PN}-dev += "${libdir}/cmake"
+FILES_${PN}launcher = "${bindir}/EWebLauncher"
+FILES_${PN}launcher-dbg = "${bindir}/.debug/EWebLauncher"
+FILES_${PN}-inspector += "${datadir}/ewebkit2-1/inspector"
+
+# http://errors.yoctoproject.org/Errors/Details/40659/
+PNBLACKLIST[webkit-efl] ?= "Old and unmaintaned fork with many security issues"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0001-OptionsCommon.cmake-don-t-mix-CXX_FLAGS-into-C_FLAGS.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0001-OptionsCommon.cmake-don-t-mix-CXX_FLAGS-into-C_FLAGS.patch
new file mode 100644
index 0000000..19b7bb8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0001-OptionsCommon.cmake-don-t-mix-CXX_FLAGS-into-C_FLAGS.patch
@@ -0,0 +1,46 @@
+From e6caaf6e80b9c80dc2b860b471a8f05e825f6dfa Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Thu, 14 Aug 2014 01:00:21 +0200
+Subject: [PATCH 1/3] OptionsCommon.cmake: don't mix CXX_FLAGS into C_FLAGS
+
+* it was added in https://bugs.webkit.org/show_bug.cgi?id=130261
+* causes build failures in udis86 which explicitly asks for gcc but then
+  gets g++ flags from CMAKE_CXX_FLAGS.
+
+cc1: error: command line option '-fvisibility-inlines-hidden' is valid
+for C++/ObjC++ but not for C [-Werror]
+cc1: error: command line option '-fpermissive' is valid for C++/ObjC++
+but not for C [-Werror]
+cc1: all warnings being treated as errors
+Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/build.make:11182:
+recipe for target
+'Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/disassembler/udis86/udis86.c.o'
+failed
+make[2]: ***
+[Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/disassembler/udis86/udis86.c.o]
+Error 1
+make[2]: *** Waiting for unfinished jobs....
+make[2]: Leaving directory
+'/OE/build/oe-core/tmp-eglibc/work/core2-64-oe-linux/webkit-efl/1_1.10.0+1.11.0-beta1-r0/build'
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ Source/cmake/OptionsCommon.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Source/cmake/OptionsCommon.cmake b/Source/cmake/OptionsCommon.cmake
+index e304a99..045c614 100644
+--- a/Source/cmake/OptionsCommon.cmake
++++ b/Source/cmake/OptionsCommon.cmake
+@@ -25,7 +25,7 @@ endif ()
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+ 
+ if (CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+-    set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-strict-aliasing")
++    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-exceptions -fno-strict-aliasing")
+     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-exceptions -fno-strict-aliasing -fno-rtti")
+ endif ()
+ 
+-- 
+2.1.3
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0002-WebKitHelpers.cmake-Add-Wno-error-deprecated-declara.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0002-WebKitHelpers.cmake-Add-Wno-error-deprecated-declara.patch
new file mode 100644
index 0000000..627a9e8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0002-WebKitHelpers.cmake-Add-Wno-error-deprecated-declara.patch
@@ -0,0 +1,45 @@
+From de93951f89e851b6689718022eebb4b8b1d14c06 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Mon, 13 Jan 2014 17:21:25 +0100
+Subject: [PATCH 2/3] WebKitHelpers.cmake: Add
+ -Wno-error=deprecated-declarations -Wno-error=cast-align
+ -Wno-error=type-limits
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ Source/cmake/WebKitHelpers.cmake | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/Source/cmake/WebKitHelpers.cmake b/Source/cmake/WebKitHelpers.cmake
+index 227b9ee..ae52ef6 100644
+--- a/Source/cmake/WebKitHelpers.cmake
++++ b/Source/cmake/WebKitHelpers.cmake
+@@ -40,6 +40,25 @@ macro(WEBKIT_SET_EXTRA_COMPILER_FLAGS _target)
+             # FIXME: When we use -fno-tree-dce to support the jsCStack branch merge, build error occurs due to the uninitialization. Temporarily we set
+             # uninitialized as build warning in order to support the jsCStack merge. https://bugs.webkit.org/show_bug.cgi?id=127777.
+             set(OLD_COMPILE_FLAGS "-Werror -Wno-error=unused-parameter -Wno-error=uninitialized -Wno-error=literal-suffix ${OLD_COMPILE_FLAGS}")
++            # libsoup-2.4/libsoup/soup-proxy-uri-resolver.h:13:84: error: 'GType soup_proxy_uri_resolver_get_type()' is deprecated (declared at /OE/build/oe-core/tmp-eglibc/sysroots/qemux86-64/usr/include/libsoup-2.4/libsoup/soup-proxy-uri-resolver.h:48) [-Werror=deprecated-declarations]
++            set(OLD_COMPILE_FLAGS "-Wno-error=deprecated-declarations ${OLD_COMPILE_FLAGS}")
++            # webkit-efl/1_1.10.0+1.11.0-beta1-r0/ewebkit/Source/WTF/wtf/text/StringImpl.h:742:87: error: cast from 'uint8_t* {aka unsigned char*}' to 'WTF::StringImpl**' increases required alignment of target type [-Werror=cast-align]
++            set(OLD_COMPILE_FLAGS "-Wno-error=cast-align ${OLD_COMPILE_FLAGS}")
++            # webkit-efl/1_1.10.0+1.11.0-beta1-r0/ewebkit/Source/WebKit2/Shared/linux/WebMemorySamplerLinux.cpp:70:16: error: comparison is always false due to limited range of data type [-Werror=type-limits]
++            set(OLD_COMPILE_FLAGS "-Wno-error=type-limits ${OLD_COMPILE_FLAGS}")
++            # webkit-efl/1_1.11.0-r0/ewebkit/Source/WebKit2/UIProcess/API/efl/EwkView.cpp:832:5: error: missing initializer for member '_Evas_GL_Config::gles_version' [-Werror=missing-field-initializers]
++            # this one is new with efl-1.12
++            set(OLD_COMPILE_FLAGS "-Wno-error=missing-field-initializers ${OLD_COMPILE_FLAGS}")
++            # webkit-efl/1_1.11.0-r0/ewebkit/Source/WTF/wtf/dtoa/bignum.cc:105:10: error: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Werror=strict-overflow]
++            # this one is new with gcc-5.2
++            set(OLD_COMPILE_FLAGS "-Wno-error=strict-overflow ${OLD_COMPILE_FLAGS}")
++            # webkit-efl/1_1.11.0-r0/ewebkit/Source/WTF/wtf/SaturatedArithmetic.h:46:26: error: suggest parentheses around operand of '!' or change '&' to '&&' or '!' to '~' [-Werror=parentheses]
++            # this one is new with gcc-5.2
++            set(OLD_COMPILE_FLAGS "-Wno-error=parentheses ${OLD_COMPILE_FLAGS}")
++            # webkit-efl/1_1.11.0-r0/ewebkit/Source/WebCore/loader/cache/CachedScript.cpp:103:108: error: logical not is only applied to the left hand side of comparison [-Werror=logical-not-parentheses]
++            # this one is new with gcc-5.2
++            set(OLD_COMPILE_FLAGS "-Wno-error=logical-not-parentheses ${OLD_COMPILE_FLAGS}")
++
+         endif ()
+ 
+         set_target_properties(${_target} PROPERTIES
+-- 
+2.1.3
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0003-FEBlendNEON.h-fix-missing-semicolon.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0003-FEBlendNEON.h-fix-missing-semicolon.patch
new file mode 100644
index 0000000..e718ee1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0003-FEBlendNEON.h-fix-missing-semicolon.patch
@@ -0,0 +1,35 @@
+From a076d76b8e8862bd641cd991190e82cfd478cc66 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 20 Aug 2014 00:52:03 +0200
+Subject: [PATCH 3/3] FEBlendNEON.h: fix missing semicolon
+
+* Otherwise fails with:
+In file included from ewebkit/Source/WebCore/platform/graphics/filters/FEBlend.cpp:29:0:
+ewebkit/Source/WebCore/platform/graphics/cpu/arm/filters/FEBlendNEON.h: In member function 'virtual void WebCore::FEBlend::platformApplySoftware()':
+ewebkit/Source/WebCore/platform/graphics/cpu/arm/filters/FEBlendNEON.h:130:5: error: expected primary-expression before '}' token
+     }
+     ^
+ewebkit/Source/WebCore/platform/graphics/cpu/arm/filters/FEBlendNEON.h:130:5: error: return-statement with a value, in function returning 'void' [-fpermissive]
+ewebkit/Source/WebCore/platform/graphics/cpu/arm/filters/FEBlendNEON.h:130:5: error: expected ';' before '}' token
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ Source/WebCore/platform/graphics/cpu/arm/filters/FEBlendNEON.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Source/WebCore/platform/graphics/cpu/arm/filters/FEBlendNEON.h b/Source/WebCore/platform/graphics/cpu/arm/filters/FEBlendNEON.h
+index 1c50765..f4b6f46 100644
+--- a/Source/WebCore/platform/graphics/cpu/arm/filters/FEBlendNEON.h
++++ b/Source/WebCore/platform/graphics/cpu/arm/filters/FEBlendNEON.h
+@@ -126,7 +126,7 @@ void FEBlend::platformApplySoftware()
+ 
+     if (pixelArrayLength >= 8) {
+         platformApplyNEON(srcPixelArrayA->data(), srcPixelArrayB->data(), dstPixelArray->data(), pixelArrayLength);
+-        return
++        return;
+     }
+     // If there is just one pixel we expand it to two.
+     ASSERT(pixelArrayLength > 0);
+-- 
+2.1.3
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0004-Fix-the-build-with-EFL-1.12-https-bugs.webkit.org-sh.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0004-Fix-the-build-with-EFL-1.12-https-bugs.webkit.org-sh.patch
new file mode 100644
index 0000000..bfa3052
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0004-Fix-the-build-with-EFL-1.12-https-bugs.webkit.org-sh.patch
@@ -0,0 +1,146 @@
+From baebc004111289ef658c78a42f8332f3dceef41e Mon Sep 17 00:00:00 2001
+From: "ryuan.choi@navercorp.com" <ryuan.choi@navercorp.com>
+Date: Thu, 13 Nov 2014 07:07:16 +0000
+Subject: [PATCH 4/4] Fix the build with EFL 1.12
+ https://bugs.webkit.org/show_bug.cgi?id=138245
+
+Reviewed by Gyuyoung Kim.
+
+Source/WebKit2:
+
+* UIProcess/API/efl/EwkView.cpp:
+First, modified to use Evas_GL raw pointer instead of UniquePtrEfl because
+Evas_GL.h can't be included in UniquePtrEfl.h
+It should be moved into EvasGLContext because WebKit/EFL use only one Evas_GL.
+Second, provided the version of GLES in Evas_GL_Config not to break build with
+EFL 1.12
+(EwkView::EwkView):
+(EwkView::~EwkView):
+(EwkView::displayTimerFired):
+(EwkView::createGLSurface):
+* UIProcess/API/efl/EwkView.h:
+
+Source/WTF:
+
+* wtf/efl/UniquePtrEfl.h:
+Removed Evas_GL.h from UniquePtrEfl.h, which is commonly included, because
+it should not be included with official GL headers.
+
+git-svn-id: http://svn.webkit.org/repository/webkit/trunk@176066 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+---
+ Source/WTF/wtf/efl/UniquePtrEfl.h            |  2 --
+ Source/WebKit2/UIProcess/API/efl/EwkView.cpp | 24 ++++++++++++++++--------
+ Source/WebKit2/UIProcess/API/efl/EwkView.h   |  3 ++-
+ 3 files changed, 18 insertions(+), 11 deletions(-)
+
+diff --git a/Source/WTF/wtf/efl/UniquePtrEfl.h b/Source/WTF/wtf/efl/UniquePtrEfl.h
+index ba0110a..038d3fb 100644
+--- a/Source/WTF/wtf/efl/UniquePtrEfl.h
++++ b/Source/WTF/wtf/efl/UniquePtrEfl.h
+@@ -33,7 +33,6 @@
+ #include <Ecore_IMF.h>
+ #include <Eina.h>
+ #include <Evas.h>
+-#include <Evas_GL.h>
+ 
+ namespace WTF {
+ 
+@@ -51,7 +50,6 @@ using EflUniquePtr = std::unique_ptr<T, EflPtrDeleter<T>>;
+     macro(Eina_Hash, eina_hash_free) \
+     macro(Eina_Module, eina_module_free) \
+     macro(Evas_Object, evas_object_del) \
+-    macro(Evas_GL, evas_gl_free)
+ 
+ #define WTF_DEFINE_EFLPTR_DELETER(typeName, deleterFunc) \
+     template<> struct EflPtrDeleter<typeName> \
+diff --git a/Source/WebKit2/UIProcess/API/efl/EwkView.cpp b/Source/WebKit2/UIProcess/API/efl/EwkView.cpp
+index 50d34ed..6ff3394 100755
+--- a/Source/WebKit2/UIProcess/API/efl/EwkView.cpp
++++ b/Source/WebKit2/UIProcess/API/efl/EwkView.cpp
+@@ -299,9 +299,11 @@ EwkView::EwkView(WKViewRef view, Evas_Object* evasObject)
+ 
+     // FIXME: Remove when possible.
+     static_cast<WebViewEfl*>(webView())->setEwkView(this);
+-    m_evasGL = EflUniquePtr<Evas_GL>(evas_gl_new(evas_object_evas_get(m_evasObject)));
++
++    // FIXME: Consider it to move into EvasGLContext.
++    m_evasGL = evas_gl_new(evas_object_evas_get(m_evasObject));
+     if (m_evasGL)
+-        m_evasGLContext = EvasGLContext::create(m_evasGL.get());
++        m_evasGLContext = EvasGLContext::create(m_evasGL);
+ 
+     if (!m_evasGLContext) {
+         WARN("Failed to create Evas_GL, falling back to software mode.");
+@@ -333,6 +335,9 @@ EwkView::~EwkView()
+ {
+     ASSERT(wkPageToEvasObjectMap().get(wkPage()) == m_evasObject);
+     wkPageToEvasObjectMap().remove(wkPage());
++
++    if (m_evasGL)
++        evas_gl_free(m_evasGL);
+ }
+ 
+ EwkView* EwkView::create(WKViewRef webView, Evas* canvas, Evas_Smart* smart)
+@@ -587,7 +592,7 @@ void EwkView::displayTimerFired(Timer<EwkView>*)
+         return;
+     }
+ 
+-    evas_gl_make_current(m_evasGL.get(), m_evasGLSurface->surface(), m_evasGLContext->context());
++    evas_gl_make_current(m_evasGL, m_evasGLSurface->surface(), m_evasGLContext->context());
+ 
+     WKViewPaintToCurrentGLContext(wkView());
+ 
+@@ -828,21 +833,24 @@ bool EwkView::createGLSurface()
+         EVAS_GL_DEPTH_BIT_8,
+         EVAS_GL_STENCIL_NONE,
+         EVAS_GL_OPTIONS_NONE,
+-        EVAS_GL_MULTISAMPLE_NONE
++        EVAS_GL_MULTISAMPLE_NONE,
++#if defined(EVAS_GL_API_VERSION) && EVAS_GL_API_VERSION >= 2
++        EVAS_GL_GLES_2_X
++#endif
+     };
+ 
+     // Recreate to current size: Replaces if non-null, and frees existing surface after (OwnPtr).
+-    m_evasGLSurface = EvasGLSurface::create(m_evasGL.get(), &evasGLConfig, deviceSize());
++    m_evasGLSurface = EvasGLSurface::create(m_evasGL, &evasGLConfig, deviceSize());
+     if (!m_evasGLSurface)
+         return false;
+ 
+     Evas_Native_Surface nativeSurface;
+-    evas_gl_native_surface_get(m_evasGL.get(), m_evasGLSurface->surface(), &nativeSurface);
++    evas_gl_native_surface_get(m_evasGL, m_evasGLSurface->surface(), &nativeSurface);
+     evas_object_image_native_surface_set(smartData()->image, &nativeSurface);
+ 
+-    evas_gl_make_current(m_evasGL.get(), m_evasGLSurface->surface(), m_evasGLContext->context());
++    evas_gl_make_current(m_evasGL, m_evasGLSurface->surface(), m_evasGLContext->context());
+ 
+-    Evas_GL_API* gl = evas_gl_api_get(m_evasGL.get());
++    Evas_GL_API* gl = evas_gl_api_get(m_evasGL);
+ 
+     WKPoint boundsEnd = WKViewUserViewportToScene(wkView(), WKPointMake(deviceSize().width(), deviceSize().height()));
+     gl->glViewport(0, 0, boundsEnd.x, boundsEnd.y);
+diff --git a/Source/WebKit2/UIProcess/API/efl/EwkView.h b/Source/WebKit2/UIProcess/API/efl/EwkView.h
+index 1c482cf..68dab87 100644
+--- a/Source/WebKit2/UIProcess/API/efl/EwkView.h
++++ b/Source/WebKit2/UIProcess/API/efl/EwkView.h
+@@ -39,6 +39,7 @@
+ #endif
+ 
+ typedef struct _cairo_surface cairo_surface_t;
++typedef struct _Evas_GL Evas_GL;
+ 
+ namespace WebKit {
+ class ContextMenuClientEfl;
+@@ -241,7 +242,7 @@ private:
+     Evas_Object* m_evasObject;
+     RefPtr<EwkContext> m_context;
+     RefPtr<EwkPageGroup> m_pageGroup;
+-    EflUniquePtr<Evas_GL> m_evasGL;
++    Evas_GL* m_evasGL;
+     std::unique_ptr<WebCore::EvasGLContext> m_evasGLContext;
+     std::unique_ptr<WebCore::EvasGLSurface> m_evasGLSurface;
+     bool m_pendingSurfaceResize;
+-- 
+2.1.3
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0005-Fix-the-build-with-cmake-3.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0005-Fix-the-build-with-cmake-3.patch
new file mode 100644
index 0000000..7e8e295
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0005-Fix-the-build-with-cmake-3.patch
@@ -0,0 +1,104 @@
+From a00a7097b85567ae6eb7a00b3ce7ef021841203c Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Thu, 24 Sep 2015 18:03:52 +0200
+Subject: [PATCH 5/5] Fix the build with cmake 3
+
+* the same issue as in GTK port:
+  https://bugs.webkit.org/show_bug.cgi?id=141796
+  http://trac.webkit.org/changeset/180502
+
+* otherwise linking fails with couple undefined symbols
+| CMakeFiles/WebKit2.dir/PluginProcess/unix/PluginProcessMainUnix.cpp.o: In function `WebKit::webkitXError(_XDisplay*, XErrorEvent*)':
+| ewebkit/Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:63: undefined reference to `XGetErrorText'
+| CMakeFiles/WebKit2.dir/PluginProcess/unix/PluginProcessMainUnix.cpp.o: In function `WebKit::PluginProcessMain::parseCommandLine(int, char**)':
+| ewebkit/Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:102: undefined reference to `XSetErrorHandler'
+| ewebkit/Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:102: undefined reference to `XSetErrorHandler'
+| CMakeFiles/WebKit2.dir/WebProcess/efl/WebProcessMainEfl.cpp.o: In function `WebKit::WebProcessMain::platformInitialize()':
+| ewebkit/Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp:67: undefined reference to `XSetExtensionErrorHandler'
+| ewebkit/Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp:67: undefined reference to `XSetExtensionErrorHandler'
+| CMakeFiles/WebKit2.dir/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp.o: In function `WebKit::NetscapePlugin::platformPostInitializeWindowed(bool, unsigned long)':
+| ewebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:170: undefined reference to `XFlush'
+| CMakeFiles/WebKit2.dir/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp.o: In function `WebKit::NetscapePlugin::platformPostInitializeWindowless()':
+| ewebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:195: undefined reference to `XGetVisualInfo'
+| ewebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:199: undefined reference to `XFree'
+| ewebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:202: undefined reference to `XCreateColormap'
+| CMakeFiles/WebKit2.dir/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp.o: In function `WebKit::NetscapePlugin::platformDestroy()':
+| ewebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:251: undefined reference to `XFreeColormap'
+| ewebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:255: undefined reference to `XFreePixmap'
+| CMakeFiles/WebKit2.dir/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp.o: In function `WebKit::NetscapePlugin::platformGeometryDidChange()':
+| ewebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:293: undefined reference to `XCreatePixmap'
+| ewebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:286: undefined reference to `XFreePixmap'
+| ewebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:295: undefined reference to `XSync'
+| CMakeFiles/WebKit2.dir/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp.o: In function `WebKit::NetscapePlugin::platformPaint(WebCore::GraphicsContext*, WebCore::IntRect const&, bool)':
+| ewebkit/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:343: undefined reference to `XSync'
+| collect2: error: ld returned 1 exit status
+| Source/WebKit2/CMakeFiles/WebKit2.dir/build.make:16145: recipe for target 'lib/libewebkit2.so.1.11.0' failed
+| make[2]: *** [lib/libewebkit2.so.1.11.0] Error 1
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ Source/WebCore/PlatformEfl.cmake         | 1 +
+ Source/WebKit2/PlatformEfl.cmake         | 3 +++
+ Source/cmake/OptionsEfl.cmake            | 1 +
+ Tools/WebKitTestRunner/PlatformEfl.cmake | 1 +
+ 4 files changed, 6 insertions(+)
+
+diff --git a/Source/WebCore/PlatformEfl.cmake b/Source/WebCore/PlatformEfl.cmake
+index 41ffc15..63b7861 100644
+--- a/Source/WebCore/PlatformEfl.cmake
++++ b/Source/WebCore/PlatformEfl.cmake
+@@ -404,6 +404,7 @@ if (WTF_USE_3D_GRAPHICS)
+         )
+     endif ()
+ 
++    find_package(X11 REQUIRED)
+     list(APPEND WebCore_LIBRARIES
+         ${X11_X11_LIB}
+     )
+diff --git a/Source/WebKit2/PlatformEfl.cmake b/Source/WebKit2/PlatformEfl.cmake
+index 8c66d1b..d96f0bd 100644
+--- a/Source/WebKit2/PlatformEfl.cmake
++++ b/Source/WebKit2/PlatformEfl.cmake
+@@ -331,12 +331,15 @@ if (ENABLE_SECCOMP_FILTERS)
+ endif ()
+ 
+ if (ENABLE_ECORE_X)
++    find_package(X11 REQUIRED)
+     list(APPEND WebProcess_LIBRARIES
+         ${ECORE_X_LIBRARIES}
+         ${X11_Xext_LIB}
+     )
+     list(APPEND WebKit2_LIBRARIES
+         ${ECORE_X_LIBRARIES}
++        ${X11_X11_LIB}
++        ${X11_Xext_LIB}
+     )
+ endif ()
+ 
+diff --git a/Source/cmake/OptionsEfl.cmake b/Source/cmake/OptionsEfl.cmake
+index 8585f19..1aa9002 100644
+--- a/Source/cmake/OptionsEfl.cmake
++++ b/Source/cmake/OptionsEfl.cmake
+@@ -181,6 +181,7 @@ endif ()
+ 
+ if (WTF_OS_UNIX)
+     set(ENABLE_X11_TARGET ON)
++    find_package(X11 REQUIRED)
+     add_definitions(-DXP_UNIX)
+ endif (WTF_OS_UNIX)
+ 
+diff --git a/Tools/WebKitTestRunner/PlatformEfl.cmake b/Tools/WebKitTestRunner/PlatformEfl.cmake
+index 1873279..a905f2a 100644
+--- a/Tools/WebKitTestRunner/PlatformEfl.cmake
++++ b/Tools/WebKitTestRunner/PlatformEfl.cmake
+@@ -53,6 +53,7 @@ list(APPEND WebKitTestRunnerInjectedBundle_LIBRARIES
+ )
+ 
+ if (ENABLE_ECORE_X)
++    find_package(X11 REQUIRED)
+     list(APPEND WebKitTestRunner_INCLUDE_DIRECTORIES
+         ${ECORE_X_INCLUDE_DIRS}
+     )
+-- 
+2.6.0
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0006-OptionsEfl.cmake-Fix-build-with-newer-CMake-3.4.patch b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0006-OptionsEfl.cmake-Fix-build-with-newer-CMake-3.4.patch
new file mode 100644
index 0000000..0562634
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl/0006-OptionsEfl.cmake-Fix-build-with-newer-CMake-3.4.patch
@@ -0,0 +1,30 @@
+From 993882f81fe991b8baf1099392703337cc13fac0 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 27 Jan 2016 18:40:23 +0100
+Subject: [PATCH] OptionsEfl.cmake: Fix build with newer CMake 3.4
+
+* otherwise it fails with:
+  | CMake Error at Source/cmake/OptionsEfl.cmake:251 (CHECK_INCLUDE_FILES):
+  |   Unknown CMake command "CHECK_INCLUDE_FILES".
+* https://bugs.webkit.org/show_bug.cgi?id=150117
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ Source/cmake/OptionsEfl.cmake | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Source/cmake/OptionsEfl.cmake b/Source/cmake/OptionsEfl.cmake
+index 1aa9002..05216d0 100644
+--- a/Source/cmake/OptionsEfl.cmake
++++ b/Source/cmake/OptionsEfl.cmake
+@@ -253,6 +253,7 @@ if (ENABLE_WEBGL OR WTF_USE_TILED_BACKING_STORE)
+         set(WTF_USE_EGL 1)
+         add_definitions(-DWTF_USE_EGL=1)
+     else ()
++        include(CheckIncludeFiles)
+         CHECK_INCLUDE_FILES("GL/glx.h" OPENGLX_FOUND)
+         add_definitions(-DWTF_USE_GLX=1)
+     endif ()
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl_1.11.0.bb b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl_1.11.0.bb
new file mode 100644
index 0000000..96ad830
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-efl/webkit/webkit-efl_1.11.0.bb
@@ -0,0 +1,12 @@
+require ${BPN}.inc
+
+SRC_URI += "\
+    file://0001-OptionsCommon.cmake-don-t-mix-CXX_FLAGS-into-C_FLAGS.patch \
+    file://0002-WebKitHelpers.cmake-Add-Wno-error-deprecated-declara.patch \
+    file://0003-FEBlendNEON.h-fix-missing-semicolon.patch \
+    file://0004-Fix-the-build-with-EFL-1.12-https-bugs.webkit.org-sh.patch \
+    file://0005-Fix-the-build-with-cmake-3.patch \
+    file://0006-OptionsEfl.cmake-Fix-build-with-newer-CMake-3.4.patch \
+"
+SRC_URI[md5sum] = "90fa970ebf8646319d292c2bb5bff5db"
+SRC_URI[sha256sum] = "d8d21e27f4a21cd77c41914548c184ddb98693ba23851aa66c8e51c0be4b90b7"
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-multimedia/lightmediascanner/files/id3-plugin-support-out-of-tree-build.patch b/import-layers/meta-openembedded/meta-efl/recipes-multimedia/lightmediascanner/files/id3-plugin-support-out-of-tree-build.patch
new file mode 100644
index 0000000..9528bec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-multimedia/lightmediascanner/files/id3-plugin-support-out-of-tree-build.patch
@@ -0,0 +1,11 @@
+--- a/src/plugins/Makefile.am	2015-10-25 16:12:29.331415823 +0000
++++ b/src/plugins/Makefile.am	2015-10-25 16:14:37.593415808 +0000
+@@ -93,7 +93,7 @@
+ id3_id3_la_SOURCES = id3/id3.c id3/id3v1_genres.c
+ id3_id3_la_LIBADD = $(PLUGINS_LIBADD)
+ 
+-id3/id3v1_genres.c: $(srcdir)/id3/id3v1_genres.def $(srcdir)/id3/id3v1_genres_gen.awk
++$(srcdir)/id3/id3v1_genres.c: $(srcdir)/id3/id3v1_genres.def $(srcdir)/id3/id3v1_genres_gen.awk
+ 	$(AWK) -f $(srcdir)/id3/id3v1_genres_gen.awk $(srcdir)/id3/id3v1_genres.def > $@
+ 
+ EXTRA_DIST += id3/id3v1_genres.def id3/id3v1_genres_gen.awk
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-multimedia/lightmediascanner/lightmediascanner_0.5.1.bb b/import-layers/meta-openembedded/meta-efl/recipes-multimedia/lightmediascanner/lightmediascanner_0.5.1.bb
new file mode 100644
index 0000000..9870fac
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-multimedia/lightmediascanner/lightmediascanner_0.5.1.bb
@@ -0,0 +1,62 @@
+SUMMARY = "Lightweight media scanner"
+DESCRIPTION = "Lightweight media scanner meant to be used in not-so-powerful devices, like embedded systems or old machines."
+SECTION = "libs/multimedia"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+                    file://src/lib/lightmediascanner.c;endline=21;md5=6d8889bccb4c6c27e8b786342a3eb267"
+
+DEPENDS = "file gawk glib-2.0 sqlite3"
+
+PV = "0.5.1+git${SRCPV}"
+SRCREV = "adfddb3486276a5ed2f5008c9e43a811e1271cc9"
+SRC_URI = "git://github.com/profusion/lightmediascanner.git \
+           file://id3-plugin-support-out-of-tree-build.patch \
+          "
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-static --disable-mp4"
+
+PACKAGECONFIG ??= "ogg flac wave id3 m3u pls asf rm jpeg png"
+PACKAGECONFIG[generic] = "--enable-generic,--disable-generic,libav"
+PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libogg libvorbis libtheora"
+PACKAGECONFIG[flac] = "--enable-flac,--disable-flac,flac"
+PACKAGECONFIG[wave] = "--enable-wave,--disable-wave"
+PACKAGECONFIG[id3] = "--enable-id3,--disable-id3"
+PACKAGECONFIG[m3u] = "--enable-m3u,--disable-m3u"
+PACKAGECONFIG[pls] = "--enable-pls,--disable-pls"
+PACKAGECONFIG[asf] = "--enable-asf,--disable-asf"
+PACKAGECONFIG[rm] = "--enable-rm,--disable-rm"
+PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg"
+PACKAGECONFIG[png] = "--enable-png,--disable-png"
+
+do_install_append() {
+       # Install "test" binary for corresponding package
+       install -d ${D}/${bindir}
+       install -m 755 ${B}/src/bin/.libs/test ${D}/${bindir}/test-lms
+       # Remove .la files for loadable modules
+       rm -f ${D}/${libdir}/${PN}/plugins/*.la
+}
+
+FILES_${PN} += "${datadir}/dbus-1"
+FILES_${PN}-dbg += "${libdir}/${PN}/plugins/.debug"
+
+PACKAGES_prepend = "${PN}-test "
+FILES_${PN}-test_prepend = "${bindir}/test-lms "
+
+PACKAGES += "${PN}-meta"
+ALLOW_EMPTY_${PN}-meta = "1"
+
+PACKAGES_DYNAMIC = "${PN}-plugin-*"
+
+python populate_packages_prepend () {
+    lms_libdir = d.expand('${libdir}/${PN}')
+    pkgs = []
+
+    pkgs += do_split_packages(d, oe.path.join(lms_libdir, "plugins"), '^(.*)\.so$', d.expand('${PN}-plugin-%s'), 'LightMediaScanner plugin for %s', prepend=True, extra_depends=d.expand('${PN}'))
+    metapkg = d.getVar('PN', True) + '-meta'
+    d.setVar('RDEPENDS_' + metapkg, ' '.join(pkgs))
+}
diff --git a/import-layers/meta-openembedded/meta-efl/recipes-navigation/mcnavi/mcnavi_0.3.4.bb b/import-layers/meta-openembedded/meta-efl/recipes-navigation/mcnavi/mcnavi_0.3.4.bb
new file mode 100644
index 0000000..2b5722b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-efl/recipes-navigation/mcnavi/mcnavi_0.3.4.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Free GPS navigation for car and outdoor with OpenStreetMap maps"
+HOMEPAGE = "http://www.gps-routes.info/index.php?name=Content&pa=showpage&pid=1"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+DEPENDS = "ecore evas imlib2 gpsd edje edje-native mysql5 intltool-native"
+
+SRC_URI = "http://www.gps-routes.info/debian/pool/main/m/mcnavi/mcnavi_${PV}.tar.gz"
+SRC_URI[md5sum] = "6860cde5c02a9f93c829da4b10e5a226"
+SRC_URI[sha256sum] = "ee7f65155e91386175875fc4f72f4bc94e4e9cdb8258112632da94520ef2c349"
+
+S = "${WORKDIR}/${PN}"
+
+inherit autotools
+
+PNBLACKLIST[mcnavi] ?= "BROKEN: latest version 0.3.4 is 3 years old and now broken with more strict ejde_cc from efl-1.13"
+# | edje_cc: Error. parse error 0.3.4-r0/mcnavi/data/themes/Default/main.edc:126. invalid state name: 'none'. "default" state must always be first.
+# | edje_cc: Error. parse error 0.3.4-r0/mcnavi/data/themes/Default/itinerary.edc:84. invalid state name: 'none'. "default" state must always be first.
+# | edje_cc: Error. parse error 0.3.4-r0/mcnavi/data/themes/Default/text.edc:1129. invalid state name: 'none'. "default" state must always be first.
+# | edje_cc: Error. parse error 0.3.4-r0/mcnavi/data/themes/Default/fileopen.edc:78. invalid state name: 'off'. "default" state must always be first.
diff --git a/import-layers/meta-openembedded/meta-filesystems/COPYING.MIT b/import-layers/meta-openembedded/meta-filesystems/COPYING.MIT
new file mode 100644
index 0000000..89de354
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-filesystems/README b/import-layers/meta-openembedded/meta-filesystems/README
new file mode 100644
index 0000000..026c132
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/README
@@ -0,0 +1,140 @@
+This README file contains information on the contents of the
+filesystems layer.
+
+Please see the corresponding sections below for details.
+
+
+Dependencies
+============
+
+This layer depends on:
+
+  URI: git://git.openembedded.org/bitbake
+  branch: 1.28
+
+  URI: git://git.openembedded.org/openembedded-core
+  layers: meta
+  branch: krogoth
+
+  URI: git://git.openembedded.org/meta-openembedded
+  layers: meta-oe
+  branch: krogoth
+
+Patches
+=======
+
+Please submit any patches against the filesystems layer to the
+OpenEmbedded development mailing list (openembedded-devel@lists.openembedded.org)
+with '[meta-filesystems][krogoth]' in the subject.
+
+Maintainers List:
+  physfs      Andreas Müller <schnitzeltony@googlemail.com>
+
+  fuse        Koen Kooi <koen@dominion.thruhere.net>
+              Philip Balister <philip@balister.org>
+              hongxu jia <hongxu.jia@windriver.com>
+
+  ifuse       Sander van Grieken <sander@outrightsolutions.nl>
+              Koen Kooi <koen@dominion.thruhere.net>
+
+  sshfs-fuse  Philip Balister <philip@balister.org>
+              Koen Kooi <koen@dominion.thruhere.net>
+
+  owfs        Otavio Salvador <otavio@ossystems.com.br>
+              Koen Kooi <koen@dominion.thruhere.net>
+              hongxu jia <hongxu.jia@windriver.com>
+
+  ntfs-3g-ntfsprogs  Otavio Salvador <otavio@ossystems.com.br>
+                     hongxu jia <hongxu.jia@windriver.com>
+
+  cramfs      Koen Kooi <koen@dominion.thruhere.net>
+
+  smbnetfs    Sander van Grieken <sander@outrightsolutions.nl>
+              Koen Kooi <koen@dominion.thruhere.net>
+
+  fuse-exfat  hongxu jia <hongxu.jia@windriver.com>
+
+  exfat-utils hongxu jia <hongxu.jia@windriver.com>
+
+  f2fs-tools  Martin Jansa <Martin.Jansa@gmail.com>
+              Koen Kooi <koen@dominion.thruhere.net>
+
+  xfsprogs    Koen Kooi <koen@dominion.thruhere.net>
+              hongxu jia <hongxu.jia@windriver.com>
+
+When sending single patches, please use something like:
+
+   git send-email -1 -M \
+        --to openembedded-devel@lists.openembedded.org \
+        --subject-prefix=meta-filesystems][krogoth][PATCH
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
+
+Table of Contents
+=================
+
+  I. Adding the filesystems layer to your build
+ II. Misc
+
+
+I. Adding the filesystems layer to your build
+=================================================
+
+In order to use this layer, you need to make the build system aware of
+it.
+
+Assuming the filesystems layer exists at the top-level of your
+yocto build tree, you can add it to the build system by adding the
+location of the filesystems layer to bblayers.conf, along with any
+other layers needed. e.g.:
+
+  BBLAYERS ?= " \
+    /path/to/yocto/meta \
+    /path/to/yocto/meta-oe \
+    /path/to/yocto/meta-filesystems \
+    "
+
+
+II. Misc
+========
+
+  --- physfs ---
+  A library to provide abstract access to various archives
+
+  --- fuse ---
+  Filesystem in Userspace (FUSE) is a simple interface for userspace programs
+  to export a virtual filesystem to the Linux kernel.
+
+  --- ifuse ---
+  A fuse filesystem to access the contents of an iPhone or iPod Touch
+
+  --- sshfs-fuse ---
+  A filesystem client based on the SSH File Transfer Protocol
+
+  --- owfs ---
+  An easy way to use the 1-Wire file system
+
+  --- ntfs-3g-ntfsprogs ---
+  The ntfs-3g is a freely available read/write NTFS driver for Linux and
+  ntfsprogs includes utilities for doing all required tasks to NTFS partitions.
+
+  --- cramfs ---
+  Builds cramfs filesystems for embedded systems
+
+  --- smbnetfs ---
+  SMBNetFS is a Linux/FreeBSD filesystem that allow you to use samba/microsoft
+  network in the same manner as the network neighborhood in Microsoft Windows.
+
+  --- fuse-exfat ---
+  A read and write exFAT driver for FUSE
+
+  --- exfat-utils ---
+  Utilities to create, check, label and dump exFAT filesystem
+
+  --- f2fs-tools ---
+  Tools needed for creating and managing f2fs partitions
+
+  --- xfsprogs ---
+  It provides XFS filesystem utilities.
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/conf/layer.conf b/import-layers/meta-openembedded/meta-filesystems/conf/layer.conf
new file mode 100644
index 0000000..9ed6d1b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/conf/layer.conf
@@ -0,0 +1,16 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+	${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "filesystems-layer"
+BBFILE_PATTERN_filesystems-layer = "^${LAYERDIR}/"
+BBFILE_PRIORITY_filesystems-layer = "6"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_filesystems-layer = "1"
+
+LAYERDEPENDS_filesystems-layer = "core openembedded-layer"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/fuse-exfat/fuse-exfat_1.2.3.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/fuse-exfat/fuse-exfat_1.2.3.bb
new file mode 100644
index 0000000..639e33c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/fuse-exfat/fuse-exfat_1.2.3.bb
@@ -0,0 +1,20 @@
+SUMMARY = "read and write exFAT driver for FUSE"
+DESCRIPTION = "fuse-exfat is a read and write driver implementing the \
+extended file allocation table as a filesystem in userspace. A mounthelper \
+is provided under the name mount.exfat-fuse. \
+"
+HOMEPAGE = "http://code.google.com/p/exfat/"
+SECTION = "universe/otherosfs"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+SRC_URI = "${DEBIAN_MIRROR}/main/f/fuse-exfat/fuse-exfat_${PV}.orig.tar.gz \
+"
+DEPENDS = "fuse virtual/libc"
+RRECOMMENDS_${PN} = "util-linux-mount"
+
+inherit autotools pkgconfig
+
+SRC_URI[md5sum] = "fca71e6598f79d037a3c7c969cb5710c"
+SRC_URI[sha256sum] = "f2e06eba5a21c621aac1d6da21b12a5a324fdd1e20f9c8acd357dd463c2355d9"
+
+S = "${WORKDIR}/${PN}-${PV}"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/ifuse/ifuse_1.1.2.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/ifuse/ifuse_1.1.2.bb
new file mode 100644
index 0000000..f0b58b9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/ifuse/ifuse_1.1.2.bb
@@ -0,0 +1,15 @@
+SUMMARY = "A fuse filesystem to access the contents of an iPhone or iPod Touch"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6ab17b41640564434dda85c06b7124f7"
+HOMEPAGE ="http://www.libimobiledevice.org/"
+
+DEPENDS = "fuse libimobiledevice"
+
+SRC_URI = " \
+    http://www.libimobiledevice.org/downloads/ifuse-${PV}.tar.bz2 \
+"
+
+SRC_URI[md5sum] = "4152526b2ac3c505cb41797d997be14d"
+SRC_URI[sha256sum] = "47835c8afb72588b3202fe0b206d7ea37a68663d9aa4eaf73f0a4bcb6215fc05"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/logfsprogs/logfsprogs_git.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/logfsprogs/logfsprogs_git.bb
new file mode 100644
index 0000000..32ebec8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/logfsprogs/logfsprogs_git.bb
@@ -0,0 +1,26 @@
+SUMMARY = "LogFS Programs: used to create LogFS file system"
+DESCRIPTION = "\
+LogFS is a Linux log-structured and scalable flash file system, intended \
+for use on large devices of flash memory. It is written by Jörn Engel and \
+in part sponsored by the CE Linux Forum. \
+LogFS is included in the mainline Linux kernel and was introduced in \
+version 2.6.34, released on May 16, 2010."
+HOMEPAGE = "https://github.com/prasad-joshi/logfsprogs"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://fsck.c;md5=3859dc73da97909ff1d0125e88a27e02"
+DEPENDS = "zlib"
+
+SRC_URI = "git://github.com/prasad-joshi/logfsprogs.git"
+SRCREV = "45b72c81ce3c6fa17ca19bafc207ea93e76312f4"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "CC="${CC}" LD="${LD}" AR="${AR}""
+
+do_install () {
+    mkdir -p ${D}${bindir}
+    install -m 0755 ${S}/mklogfs ${D}${bindir}/mklogfs
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2013.1.13.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2013.1.13.bb
new file mode 100644
index 0000000..6957ea9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2013.1.13.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "The NTFS-3G driver is an open source, freely available NTFS driver for Linux with read and write support."
+HOMEPAGE = "http://www.ntfs-3g.org/"
+DEPENDS = "fuse libgcrypt"
+PROVIDES = "ntfsprogs ntfs-3g"
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+                    file://COPYING.LIB;md5=f30a9716ef3762e3467a2f62bf790f0a"
+
+SRC_URI = "http://tuxera.com/opensource/ntfs-3g_ntfsprogs-${PV}.tgz"
+S = "${WORKDIR}/ntfs-3g_ntfsprogs-${PV}"
+
+SRC_URI[md5sum] = "2d6fb47ddf62b51733227126fe9227fe"
+SRC_URI[sha256sum] = "4b383f0074a3ab7683339d1f18222b107aaeb4983db119292c43c2b275cefb27"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[uuid] = "--with-uuid,--without-uuid,util-linux"
+
+# required or it calls ldconfig at install step
+EXTRA_OEMAKE = "LDCONFIG=echo"
+
+PACKAGES =+ "ntfs-3g ntfsprogs libntfs-3g"
+
+FILES_ntfs-3g = "${base_sbindir}/*.ntfs-3g ${bindir}/ntfs-3g* ${base_sbindir}/mount.ntfs"
+RDEPENDS_ntfs-3g += "fuse"
+RRECOMMENDS_ntfs-3g = "util-linux-mount"
+
+FILES_ntfsprogs = "${base_sbindir}/* ${bindir}/* ${sbindir}/*"
+FILES_libntfs-3g = "${libdir}/*${SOLIBS}"
+
+do_install_append() {
+    # Standard mount will execute the program /sbin/mount.TYPE
+    # when called. Add the symbolic to let mount could find ntfs.
+    ln -sf mount.ntfs-3g ${D}/${base_sbindir}/mount.ntfs
+}
+
+# Satisfy the -dev runtime dependency
+ALLOW_EMPTY_${PN} = "1"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs/owhttpd b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs/owhttpd
new file mode 100755
index 0000000..5d74d13
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs/owhttpd
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+PATH=/sbin:/bin:/usr/bin
+
+DAEMON="owhttpd"
+
+test -f /usr/bin/${DAEMON} || exit 0
+
+if test -f /etc/default/${DAEMON} ; then
+. /etc/default/${DAEMON}
+else
+:
+fi
+
+if [ "$START_OWHTTPD" != "yes" ]
+then
+        exit 0
+fi
+	
+
+startdaemon(){
+	echo -n "Starting ${DAEMON}: "
+	start-stop-daemon --start -x /usr/bin/${DAEMON}  -- ${CMDLINE} --pid_file /var/run/${DAEMON}.pid
+	echo "done"
+}
+
+stopdaemon(){
+	echo -n "Stopping ${DAEMON}: "
+	start-stop-daemon --stop -p /var/run/${DAEMON}.pid
+        echo "done"
+}
+										
+
+
+case "$1" in
+  start)
+	startdaemon
+	;;
+  stop)
+	stopdaemon
+	;;
+  force-reload)
+	stopdaemon
+	startdaemon
+	;;
+  restart)
+	stopdaemon
+	startdaemon
+	;;
+  reload)
+	stopdaemon
+	startdaemon
+	;;
+  *)
+	echo "Usage: ${DAEMON} { start | stop | restart | reload }" >&2
+	exit 1
+	;;
+esac
+																						
+exit 0
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs/owserver b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs/owserver
new file mode 100755
index 0000000..b69ea53
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs/owserver
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+PATH=/sbin:/bin:/usr/bin
+
+DAEMON="owserver"
+
+test -f /usr/bin/${DAEMON} || exit 0
+
+if test -f /etc/default/${DAEMON} ; then
+. /etc/default/${DAEMON}
+else
+:
+fi
+
+if [ "$START_OWSERVER" != "yes" ] 
+then  
+	exit 0
+fi
+
+startdaemon(){
+	echo -n "Starting ${DAEMON}: "
+	start-stop-daemon --start -x /usr/bin/${DAEMON} --  ${CMDLINE} --pid_file /var/run/${DAEMON}.pid
+	echo "done"
+}
+
+stopdaemon(){
+	echo -n "Stopping ${DAEMON}: "
+	start-stop-daemon --stop -p /var/run/${DAEMON}.pid
+        echo "done"
+}
+										
+
+
+case "$1" in
+  start)
+	startdaemon
+	;;
+  stop)
+	stopdaemon
+	;;
+  force-reload)
+	stopdaemon
+	startdaemon
+	;;
+  restart)
+	stopdaemon
+	startdaemon
+	;;
+  reload)
+	stopdaemon
+	startdaemon
+	;;
+  *)
+	echo "Usage: ${DAEMON} { start | stop | restart | reload }" >&2
+	exit 1
+	;;
+esac
+																						
+exit 0
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs_2.9p1.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs_2.9p1.bb
new file mode 100644
index 0000000..21fd7e9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs_2.9p1.bb
@@ -0,0 +1,68 @@
+SUMMARY = "1-Wire file system"
+DESCRIPTION = "OWFS is an easy way to use the powerful 1-wire system of Dallas/Maxim"
+HOMEPAGE = "http://www.owfs.org/"
+SECTION = "console/network"
+
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a0bc427f423a41220ab79a0b392218bd \
+                    file://COPYING.LIB;md5=865c4bd642d9e04f43925ad7e929ae87"
+
+DEPENDS = "fuse virtual/libusb0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/owfs/owfs-${PV}.tar.gz \
+           file://owhttpd \
+           file://owserver "
+SRC_URI[md5sum] = "56ba145be208002e58775a7203369851"
+SRC_URI[sha256sum] = "9d22dbff72d235476688c02669f7171b23e21dffadf40bbdd3b8263908218424"
+
+inherit autotools-brokensep update-rc.d
+
+EXTRA_OECONF = " \
+                 --with-fuseinclude=${STAGING_INCDIR} \
+                 --with-fuselib=${STAGING_LIBDIR} \
+                 --enable-owfs \
+                 --enable-owhttpd \
+                 --enable-w1 \
+                 --disable-swig \
+                 --disable-owtcl \
+                 --disable-owphp \
+                 --disable-owpython \
+                 --disable-owperl \
+"
+
+do_install_prepend() {
+    install -d ${D}${sysconfdir}/default/
+    install -d ${D}${sysconfdir}/init.d/
+    install -m 0755 ${WORKDIR}/owhttpd ${D}${sysconfdir}/init.d/owhttpd
+    install -m 0755 ${WORKDIR}/owserver ${D}${sysconfdir}/init.d/owserver
+}
+
+PACKAGES =+ "owftpd owhttpd owserver owshell libowcapi libow libownet owmon owtap"
+
+DESCRIPTION_owftpd = "Anoymous FTP server for 1-wire access"
+DESCRIPTION_owhttpd = "Tiny webserver for 1-wire control"
+DESCRIPTION_owserver = "Backend server (daemon) for 1-wire control"
+DESCRIPTION_owshell = "owdir owread owwrite owpresent owget - lightweight owserver access"
+DESCRIPTION_libowcapi = "easy C-language 1-wire interface "
+DESCRIPTION_libow = "easy C-language 1-wire interface to the owserver protocol"
+DESCRIPTION_libownet = "easy C-language 1-wire interface to the owserver protocol"
+DESCRIPTION_owmon = "Monitor for owserver settings and statistics"
+DESCRIPTION_owtap = "Packet sniffer for the owserver protocol"
+
+FILES_owftpd = "${bindir}/owftpd"
+FILES_owhttpd = "${bindir}/owhttpd ${sysconfdir}/init.d/owhttpd"
+FILES_owserver = "${bindir}/owserver ${sysconfdir}/init.d/owserver"
+FILES_owshell = "${bindir}/owread ${bindir}/owwrite \
+                 ${bindir}/owdir ${bindir}/owpresent \
+                 ${bindir}/owget ${bindir}/owside"
+FILES_owmon = "${bindir}/owmon"
+FILES_owtap = "${bindir}/owtap"
+FILES_libowcapi = "${libdir}/libowcapi-*"
+FILES_libow = "${libdir}/libow-*"
+FILES_libownet = "${libdir}/libownet-*"
+
+INITSCRIPT_PACKAGES = "owhttpd owserver"
+INITSCRIPT_NAME_owserver = "owserver"
+INITSCRIPT_NAME_owhttpd = "owhttpd"
+INITSCRIPT_PARAMS_owserver = "defaults 20"
+INITSCRIPT_PARAMS_owhttpd = "defaults 21"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/simple-mtpfs/simple-mtpfs_git.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/simple-mtpfs/simple-mtpfs_git.bb
new file mode 100644
index 0000000..f85977f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/simple-mtpfs/simple-mtpfs_git.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "SIMPLE-MTPFS is a FUSE based filsystem for MTP devices connected via USB"
+HOMEPAGE = "https://github.com/phatina/simple-mtpfs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
+
+DEPENDS = "fuse libmtp"
+
+inherit autotools pkgconfig
+
+SRC_URI = "git://github.com/phatina/simple-mtpfs.git;protocol=https;branch=master"
+SRCREV = "a7ab64c7e4d7aca155cbc7ce9412aaf68ef6e404"
+
+S = "${WORKDIR}/git"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/Using-PKG_CHECK_MODULES-to-found-headers-and-libraries.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/Using-PKG_CHECK_MODULES-to-found-headers-and-libraries.patch
new file mode 100644
index 0000000..f05f09f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/Using-PKG_CHECK_MODULES-to-found-headers-and-libraries.patch
@@ -0,0 +1,42 @@
+From 7a524d49b3d4459280f18942df2980603400ec52 Mon Sep 17 00:00:00 2001
+From: Bian Naimeng <biannm@cn.fujitsu.com>
+Date: Fri, 19 Jun 2015 11:54:44 +0900
+Subject: [PATCH] Using PKG_CHECK_MODULES to found headers and libraries of
+ smbclient
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+---
+ configure.in    | 5 +++++
+ src/Makefile.am | 3 +++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/configure.in b/configure.in
+index ce21aef..ecd7119 100644
+--- a/configure.in
++++ b/configure.in
+@@ -125,6 +125,11 @@ AC_CHECK_LIB(smbclient, smbc_setOptionUserData,
+     )]
+ )
+ 
++dnl *****************************************************************
++dnl *** Check libsmbclient by pkgconfig to get cflags and ldflags ***
++dnl *****************************************************************
++PKG_CHECK_MODULES(SMBCLIENT, smbclient)
++
+ dnl ******************
+ dnl *** Final step ***
+ dnl ******************
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 41519d8..9fc97e9 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -16,3 +16,6 @@ smbnetfs_SOURCES = \
+ 	event.c			event.h			\
+ 	reconfigure.c		reconfigure.h		\
+ 	main.c
++
++smbnetfs_CFLAGS=${SMBCLIENT_CFLAGS}
++smbnetfs_LDFLAGS=${SMBCLIENT_LDFLAGS}
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch
new file mode 100644
index 0000000..c80fed1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch
@@ -0,0 +1,11 @@
+Index: git/configure.in
+===================================================================
+--- git.orig/configure.in	2014-06-18 16:06:16.040721349 +0000
++++ git/configure.in	2014-07-18 07:49:17.085552256 +0000
+@@ -1,5 +1,5 @@
+ AC_INIT([SMBNetFS],[0.5.3а])
+-AM_INIT_AUTOMAKE
++AM_INIT_AUTOMAKE([foreign])
+ AC_CONFIG_HEADERS([src/config.h])
+ AC_PROG_CC
+ 
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb
new file mode 100644
index 0000000..f1420fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb
@@ -0,0 +1,26 @@
+SUMMARY = "FUSE module for mounting an entire SMB/NMB network in a single directory"
+DESCRIPTION = "SMBNetFS is a Linux/FreeBSD filesystem that allow you to use \
+               samba/microsoft network in the same manner as the network \
+               neighborhood in Microsoft Windows. Please donate me to help \
+               in SMBNetFS development."
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+HOMEPAGE ="http://sourceforge.net/projects/smbnetfs"
+
+DEPENDS = "fuse samba"
+
+inherit autotools gitpkgv pkgconfig
+
+PKGV = "${GITPKGVTAG}"
+
+SRCREV = "ace1c519d45fe488b9b7e6cc77a2bcadb6c83464"
+
+SRC_URI = "git://smbnetfs.git.sourceforge.net/gitroot/smbnetfs/smbnetfs;branch=master \
+           file://configure.patch \
+           file://Using-PKG_CHECK_MODULES-to-found-headers-and-libraries.patch"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gnome-keyring] = "--with-gnome-keyring=yes,--with-gnome-keyring=no,libgnome-keyring"
+
+S = "${WORKDIR}/git"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_2.5.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_2.5.bb
new file mode 100644
index 0000000..c54cfcb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_2.5.bb
@@ -0,0 +1,17 @@
+SUMMARY = "This is a filesystem client based on the SSH File Transfer Protocol using FUSE"
+AUTHOR = "Miklos Szeredi <miklos@szeredi.hu>"
+HOMEPAGE = "http://fuse.sourceforge.net/sshfs.html"
+SECTION = "console/network"
+LICENSE = "GPLv2"
+DEPENDS = "glib-2.0 fuse"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/fuse/${BP}.tar.gz"
+S = "${WORKDIR}/${BP}"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${libdir}/sshnodelay.so"
+
+SRC_URI[md5sum] = "17494910db8383a366b1301e5f5148a9"
+SRC_URI[sha256sum] = "e9171452e5d0150b9c6a2158fd2e2dcefb5d5d03ba4d208949e00a3a46c6e63e"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/unionfs-fuse/unionfs-fuse_0.26.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/unionfs-fuse/unionfs-fuse_0.26.bb
new file mode 100644
index 0000000..7df9c39
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/unionfs-fuse/unionfs-fuse_0.26.bb
@@ -0,0 +1,17 @@
+SUMMARY = "A FUSE based implemention of unionfs"
+HOMEPAGE = "http://podgorny.cz/moin/UnionFsFuse"
+SECTION = "console/network"
+LICENSE = "BSD-3-Clause"
+DEPENDS = "fuse"
+LIC_FILES_CHKSUM = "file://src/unionfs.c;beginline=3;endline=8;md5=30fa8de70fd8abab00b483a1b7943a32"
+
+SRC_URI = "http://podgorny.cz/unionfs-fuse/releases/${BP}.tar.xz"
+
+SRC_URI[md5sum] = "689c636484756f6f7a728ef354cbeac2"
+SRC_URI[sha256sum] = "8d5c9dcb51ecb9a9b03890e16d17e37d602b0c1f23ed6a9ddec2b0f719c9f662"
+
+do_install() {
+	oe_runmake install DESTDIR=${D} PREFIX=${exec_prefix}
+}
+
+RDEPENDS_${PN} += "bash"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb
new file mode 100644
index 0000000..253ea62
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Yet Another Flash File System"
+DESCRIPTION = "Tools for managing 'yaffs2' file systems."
+
+SECTION = "base"
+HOMEPAGE = "http://www.yaffs.net"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://utils/mkyaffs2image.c;beginline=12;endline=14;md5=5f5464f9b3e981ca574e65b00e438561"
+
+PV = "0.0+git${SRCPV}"
+
+DEPENDS = "mtd-utils"
+
+# Source is the HEAD of master branch at the time of writing this recipe
+SRC_URI = "git://www.aleph1.co.uk/yaffs2;protocol=git;branch=master"
+SRCREV = "bc76682d93955cfb33051beb503ad9f8a5450578"
+S = "${WORKDIR}/git"
+
+CFLAGS_append = " -I.. -DCONFIG_YAFFS_UTIL -DCONFIG_YAFFS_DEFINES_TYPES"
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_compile() {
+    cd utils && oe_runmake
+}
+
+INSTALL_FILES = "mkyaffsimage \
+                 mkyaffs2image \
+                "
+do_install() {
+    install -d ${D}${sbindir}/
+    for i in ${INSTALL_FILES}; do
+        install -m 0755 utils/$i ${D}${sbindir}/
+    done
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/0001-fuse-fix-the-return-value-of-help-option.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/0001-fuse-fix-the-return-value-of-help-option.patch
new file mode 100644
index 0000000..577dbb5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/0001-fuse-fix-the-return-value-of-help-option.patch
@@ -0,0 +1,28 @@
+From 2182c423c6cd235c052e6c420203f24ec9bcd6ab Mon Sep 17 00:00:00 2001
+From: Lu Chong <Chong.Lu@windriver.com>
+Date: Wed, 30 Oct 2013 15:27:00 +0800
+Subject: [PATCH] fuse: fix the return value of "--help" option
+
+Upstream-Status: Pending
+
+Signed-off-by: Lu Chong <Chong.Lu@windriver.com>
+---
+ util/fusermount.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util/fusermount.c b/util/fusermount.c
+index b2e87d9..70d7c75 100644
+--- a/util/fusermount.c
++++ b/util/fusermount.c
+@@ -1168,7 +1168,7 @@ static void usage(void)
+ 		" -q		    quiet\n"
+ 		" -z		    lazy unmount\n",
+ 		progname);
+-	exit(1);
++	exit(0);
+ }
+ 
+ static void show_version(void)
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/aarch64.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/aarch64.patch
new file mode 100644
index 0000000..050d114
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/aarch64.patch
@@ -0,0 +1,33 @@
+fuse: add aarch64 support
+
+u64/u32 is not defined in sys/types.h, include linux/types.h like
+the kernel version of fuse.h does. Patch sent to upstream mailing list.
+
+Upstream-Status: Submitted
+Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ include/fuse_kernel.h | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h
+index c632b58..e804278 100644
+--- a/include/fuse_kernel.h
++++ b/include/fuse_kernel.h
+@@ -88,12 +88,7 @@
+ #ifndef _LINUX_FUSE_H
+ #define _LINUX_FUSE_H
+ 
+-#include <sys/types.h>
+-#define __u64 uint64_t
+-#define __s64 int64_t
+-#define __u32 uint32_t
+-#define __s32 int32_t
+-#define __u16 uint16_t
++#include <linux/types.h>
+ 
+ /*
+  * Version negotiation:
+-- 
+1.8.1.2
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/fuse.conf b/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/fuse.conf
new file mode 100644
index 0000000..a517c48
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/fuse.conf
@@ -0,0 +1 @@
+fuse
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/gold-unversioned-symbol.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/gold-unversioned-symbol.patch
new file mode 100644
index 0000000..d47f692
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/files/gold-unversioned-symbol.patch
@@ -0,0 +1,92 @@
+fuse: Fix linking issues with gold linker
+
+fuse has problems when linking with gold since it uses version
+scripts in a way thats so perticular to bfd ld
+
+/home/kraj/work/angstrom/build/tmp-angstrom_2010_x-eglibc/sysroots/x86_64-linux/usr/libexec/armv5te-angstrom-linux-gnueabi/gcc/arm-angstro
+error: symbol __fuse_exited has undefined version
+| collect2: ld returned 1 exit status
+| make[1]: *** [libfuse.la] Error 1
+| make[1]: *** Waiting for unfinished jobs....
+
+For more details
+
+http://blog.flameeyes.eu/2011/06/01/gold-readiness-obstacle-2-base-versioning
+http://sources.redhat.com/bugzilla/show_bug.cgi?id=10861
+http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/9524
+http://www.airs.com/blog/archives/300
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ lib/fuse.c             | 10 +++++-----
+ lib/fuse_mt.c          |  2 +-
+ lib/fuse_versionscript |  3 +++
+ lib/helper.c           |  6 +++---
+ 4 files changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/lib/fuse.c b/lib/fuse.c
+index 067d0dc..6d27711 100644
+--- a/lib/fuse.c
++++ b/lib/fuse.c
+@@ -4873,11 +4873,11 @@ struct fuse *fuse_new_compat1(int fd, int flags,
+ 				      11);
+ }
+ 
+-FUSE_SYMVER(".symver fuse_exited,__fuse_exited@");
+-FUSE_SYMVER(".symver fuse_process_cmd,__fuse_process_cmd@");
+-FUSE_SYMVER(".symver fuse_read_cmd,__fuse_read_cmd@");
+-FUSE_SYMVER(".symver fuse_set_getcontext_func,__fuse_set_getcontext_func@");
+-FUSE_SYMVER(".symver fuse_new_compat2,fuse_new@");
++FUSE_SYMVER(".symver fuse_exited,__fuse_exited@FUSE_UNVERSIONED");
++FUSE_SYMVER(".symver fuse_process_cmd,__fuse_process_cmd@FUSE_UNVERSIONED");
++FUSE_SYMVER(".symver fuse_read_cmd,__fuse_read_cmd@FUSE_UNVERSIONED");
++FUSE_SYMVER(".symver fuse_set_getcontext_func,__fuse_set_getcontext_func@FUSE_UNVERSIONED");
++FUSE_SYMVER(".symver fuse_new_compat2,fuse_new@FUSE_UNVERSIONED");
+ FUSE_SYMVER(".symver fuse_new_compat22,fuse_new@FUSE_2.2");
+ 
+ #endif /* __FreeBSD__ || __NetBSD__  */
+diff --git a/lib/fuse_mt.c b/lib/fuse_mt.c
+index f6dbe71..fd5ac23 100644
+--- a/lib/fuse_mt.c
++++ b/lib/fuse_mt.c
+@@ -119,4 +119,4 @@ int fuse_loop_mt(struct fuse *f)
+ 	return res;
+ }
+ 
+-FUSE_SYMVER(".symver fuse_loop_mt_proc,__fuse_loop_mt@");
++FUSE_SYMVER(".symver fuse_loop_mt_proc,__fuse_loop_mt@FUSE_UNVERSIONED");
+diff --git a/lib/fuse_versionscript b/lib/fuse_versionscript
+index 8d91887..de16ab2 100644
+--- a/lib/fuse_versionscript
++++ b/lib/fuse_versionscript
+@@ -1,3 +1,6 @@
++FUSE_UNVERSIONED {
++};
++
+ FUSE_2.2 {
+ 	global:
+ 		fuse_destroy;
+diff --git a/lib/helper.c b/lib/helper.c
+index b644012..c5349bf 100644
+--- a/lib/helper.c
++++ b/lib/helper.c
+@@ -436,10 +436,10 @@ int fuse_mount_compat1(const char *mountpoint, const char *args[])
+ 	return fuse_mount_compat22(mountpoint, NULL);
+ }
+ 
+-FUSE_SYMVER(".symver fuse_setup_compat2,__fuse_setup@");
++FUSE_SYMVER(".symver fuse_setup_compat2,__fuse_setup@FUSE_UNVERSIONED");
+ FUSE_SYMVER(".symver fuse_setup_compat22,fuse_setup@FUSE_2.2");
+-FUSE_SYMVER(".symver fuse_teardown,__fuse_teardown@");
+-FUSE_SYMVER(".symver fuse_main_compat2,fuse_main@");
++FUSE_SYMVER(".symver fuse_teardown,__fuse_teardown@FUSE_UNVERSIONED");
++FUSE_SYMVER(".symver fuse_main_compat2,fuse_main@FUSE_UNVERSIONED");
+ FUSE_SYMVER(".symver fuse_main_real_compat22,fuse_main_real@FUSE_2.2");
+ 
+ #endif /* __FreeBSD__ || __NetBSD__ */
+-- 
+1.8.1.2
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse_2.9.4.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse_2.9.4.bb
new file mode 100644
index 0000000..8cc6dbd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse_2.9.4.bb
@@ -0,0 +1,64 @@
+SUMMARY = "Implementation of a fully functional filesystem in a userspace program"
+DESCRIPTION = "FUSE (Filesystem in Userspace) is a simple interface for userspace \
+               programs to export a virtual filesystem to the Linux kernel. FUSE \
+               also aims to provide a secure method for non privileged users to \
+               create and mount their own filesystem implementations. \
+              "
+HOMEPAGE = "http://fuse.sf.net"
+SECTION = "libs"
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/fuse/fuse-${PV}.tar.gz \
+           file://gold-unversioned-symbol.patch \
+           file://aarch64.patch \
+           file://0001-fuse-fix-the-return-value-of-help-option.patch \
+           file://fuse.conf \
+"
+SRC_URI[md5sum] = "ecb712b5ffc6dffd54f4a405c9b372d8"
+SRC_URI[sha256sum] = "6be9c0bff6af8c677414935f31699ea5a7f8f5f791cfa5205be02ea186b97ce1"
+
+inherit autotools pkgconfig update-rc.d systemd
+
+INITSCRIPT_NAME = "fuse"
+
+SYSTEMD_SERVICE_${PN} = ""
+
+DEPENDS = "gettext-native"
+
+PACKAGES =+ "fuse-utils-dbg fuse-utils libulockmgr libulockmgr-dev libulockmgr-dbg"
+
+# Fusermount requires features from the util-linux version of mount.
+RDEPENDS_${PN} += "util-linux-mount"
+
+RRECOMMENDS_${PN} = "kernel-module-fuse libulockmgr fuse-utils"
+
+FILES_${PN} += "${libdir}/libfuse.so.*"
+FILES_${PN}-dev += "${libdir}/libfuse*.la"
+
+FILES_libulockmgr = "${libdir}/libulockmgr.so.*"
+FILES_libulockmgr-dev += "${libdir}/libulock*.la"
+FILES_libulockmgr-dbg += "${libdir}/.debug/libulock*"
+
+# Forbid auto-renaming to libfuse-utils
+FILES_fuse-utils = "${bindir} ${base_sbindir}"
+FILES_fuse-utils-dbg = "${bindir}/.debug ${base_sbindir}/.debug"
+DEBIAN_NOAUTONAME_fuse-utils = "1"
+DEBIAN_NOAUTONAME_fuse-utils-dbg = "1"
+
+do_install_append() {
+    rm -rf ${D}${base_prefix}/dev
+
+    # systemd class remove the sysv_initddir only if systemd_system_unitdir
+    # contains anything, but it's not needed if sysvinit is not in DISTRO_FEATURES
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'false', 'true', d)}; then
+        rm -rf ${D}${sysconfdir}/init.d/
+    fi
+
+    # Install systemd related configuration file
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/modules-load.d
+        install -m 0644 ${WORKDIR}/fuse.conf ${D}${sysconfdir}/modules-load.d
+    fi
+}
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-support/physfs/physfs_2.0.3.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-support/physfs/physfs_2.0.3.bb
new file mode 100644
index 0000000..5618f28
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-support/physfs/physfs_2.0.3.bb
@@ -0,0 +1,11 @@
+SUMMARY = "PhysicsFS is a library to provide abstract access to various archives"
+HOMEAPAGE = "http://icculus.org/physfs"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5d94e3eaaa10b00ca803ba35a3e87cde"
+DEPENDS = "readline zlib"
+
+inherit cmake
+
+SRC_URI = "http://icculus.org/${BPN}/downloads/${BP}.tar.bz2"
+SRC_URI[md5sum] = "c2c727a8a8deb623b521b52d0080f613"
+SRC_URI[sha256sum] = "ca862097c0fb451f2cacd286194d071289342c107b6fe69079c079883ff66b69"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch
new file mode 100644
index 0000000..5c35586
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch
@@ -0,0 +1,29 @@
+Subject: [PATCH] aufs-util: add tool concept to Makefile for cross compiling
+ purpose
+
+In a cross compilation environment, c2sh, c2tmac and ver need to be created first.
+Add a tools target to Makefile to allow for this.
+
+Upstream-Status: Pending
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ Makefile |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 2f905ad..49c3cd5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -85,7 +85,7 @@ aufs.5: aufs.in.5 c2tmac
+ 	chmod a-w $@
+ 
+ c2sh c2tmac ver: CC = ${HOSTCC}
+-.INTERMEDIATE: c2sh c2tmac ver
++tools: c2sh c2tmac ver
+ 
+ Install = install -o root -g root -p
+ install_sbin: File = auibusy auplink mount.aufs umount.aufs
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch
new file mode 100644
index 0000000..fe2a6a5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs-util-don-t-strip-executables.patch
@@ -0,0 +1,37 @@
+From 244863eca77fcaa1187884836c3e28d6b6d1504a Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@windriver.com>
+Date: Tue, 9 Apr 2013 18:50:34 -0700
+Subject: [PATCH] aufs-util: don't strip executables
+
+By default, aufs-util strips its binaries. This produces QA warnings
+as follows:
+
+   WARNING: File '/sbin/mount.aufs' from aufs-util was already stripped, this will prevent future debugging!
+   WARNING: File '/sbin/auplink' from aufs-util was already stripped, this will prevent future debugging!
+   WARNING: File '/sbin/umount.aufs' from aufs-util was already stripped, this will prevent future debugging!
+   WARNING: File '/sbin/auibusy' from aufs-util was already stripped, this will prevent future debugging!
+   WARNING: File '/usr/lib/libau.so.2.6' from aufs-util was already stripped, this will prevent future debugging!
+
+To prevent this, we remove -s from LDFLAGS.
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
+---
+ Makefile |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 2f905ad..e0c6dcd 100644
+--- a/Makefile
++++ b/Makefile
+@@ -56,7 +56,7 @@ all: ver_test ${Man} ${Bin} ${Etc}
+ ver_test: ver
+ 	./ver
+ 
+-${Bin}: override LDFLAGS += -static -s
++${Bin}: override LDFLAGS += -static
+ ${Bin}: LDLIBS = -L. -lautil
+ ${BinObj}: %.o: %.c ${LibUtilHdr} ${LibUtil}
+ 
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs_type.h b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs_type.h
new file mode 100644
index 0000000..c948033
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util/aufs_type.h
@@ -0,0 +1,419 @@
+/*
+ * Copyright (C) 2005-2015 Junjiro R. Okajima
+ *
+ * This program, aufs is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __AUFS_TYPE_H__
+#define __AUFS_TYPE_H__
+
+#define AUFS_NAME	"aufs"
+
+#ifdef __KERNEL__
+/*
+ * define it before including all other headers.
+ * sched.h may use pr_* macros before defining "current", so define the
+ * no-current version first, and re-define later.
+ */
+#define pr_fmt(fmt)	AUFS_NAME " %s:%d: " fmt, __func__, __LINE__
+#include <linux/sched.h>
+#undef pr_fmt
+#define pr_fmt(fmt) \
+		AUFS_NAME " %s:%d:%.*s[%d]: " fmt, __func__, __LINE__, \
+		(int)sizeof(current->comm), current->comm, current->pid
+#else
+#include <stdint.h>
+#include <sys/types.h>
+#endif /* __KERNEL__ */
+
+#include <linux/limits.h>
+
+#define AUFS_VERSION	"3.18-20150406"
+
+/* todo? move this to linux-2.6.19/include/magic.h */
+#define AUFS_SUPER_MAGIC	('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
+
+/* ---------------------------------------------------------------------- */
+
+#ifdef CONFIG_AUFS_BRANCH_MAX_127
+typedef int8_t aufs_bindex_t;
+#define AUFS_BRANCH_MAX 127
+#else
+typedef int16_t aufs_bindex_t;
+#ifdef CONFIG_AUFS_BRANCH_MAX_511
+#define AUFS_BRANCH_MAX 511
+#elif defined(CONFIG_AUFS_BRANCH_MAX_1023)
+#define AUFS_BRANCH_MAX 1023
+#elif defined(CONFIG_AUFS_BRANCH_MAX_32767)
+#define AUFS_BRANCH_MAX 32767
+#endif
+#endif
+
+#ifdef __KERNEL__
+#ifndef AUFS_BRANCH_MAX
+#error unknown CONFIG_AUFS_BRANCH_MAX value
+#endif
+#endif /* __KERNEL__ */
+
+/* ---------------------------------------------------------------------- */
+
+#define AUFS_FSTYPE		AUFS_NAME
+
+#define AUFS_ROOT_INO		2
+#define AUFS_FIRST_INO		11
+
+#define AUFS_WH_PFX		".wh."
+#define AUFS_WH_PFX_LEN		((int)sizeof(AUFS_WH_PFX) - 1)
+#define AUFS_WH_TMP_LEN		4
+/* a limit for rmdir/rename a dir and copyup */
+#define AUFS_MAX_NAMELEN	(NAME_MAX \
+				- AUFS_WH_PFX_LEN * 2	/* doubly whiteouted */\
+				- 1			/* dot */\
+				- AUFS_WH_TMP_LEN)	/* hex */
+#define AUFS_XINO_FNAME		"." AUFS_NAME ".xino"
+#define AUFS_XINO_DEFPATH	"/tmp/" AUFS_XINO_FNAME
+#define AUFS_XINO_DEF_SEC	30 /* seconds */
+#define AUFS_XINO_DEF_TRUNC	45 /* percentage */
+#define AUFS_DIRWH_DEF		3
+#define AUFS_RDCACHE_DEF	10 /* seconds */
+#define AUFS_RDCACHE_MAX	3600 /* seconds */
+#define AUFS_RDBLK_DEF		512 /* bytes */
+#define AUFS_RDHASH_DEF		32
+#define AUFS_WKQ_NAME		AUFS_NAME "d"
+#define AUFS_MFS_DEF_SEC	30 /* seconds */
+#define AUFS_MFS_MAX_SEC	3600 /* seconds */
+#define AUFS_FHSM_CACHE_DEF_SEC	30 /* seconds */
+#define AUFS_PLINK_WARN		50 /* number of plinks in a single bucket */
+
+/* pseudo-link maintenace under /proc */
+#define AUFS_PLINK_MAINT_NAME	"plink_maint"
+#define AUFS_PLINK_MAINT_DIR	"fs/" AUFS_NAME
+#define AUFS_PLINK_MAINT_PATH	AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME
+
+#define AUFS_DIROPQ_NAME	AUFS_WH_PFX ".opq" /* whiteouted doubly */
+#define AUFS_WH_DIROPQ		AUFS_WH_PFX AUFS_DIROPQ_NAME
+
+#define AUFS_BASE_NAME		AUFS_WH_PFX AUFS_NAME
+#define AUFS_PLINKDIR_NAME	AUFS_WH_PFX "plnk"
+#define AUFS_ORPHDIR_NAME	AUFS_WH_PFX "orph"
+
+/* doubly whiteouted */
+#define AUFS_WH_BASE		AUFS_WH_PFX AUFS_BASE_NAME
+#define AUFS_WH_PLINKDIR	AUFS_WH_PFX AUFS_PLINKDIR_NAME
+#define AUFS_WH_ORPHDIR		AUFS_WH_PFX AUFS_ORPHDIR_NAME
+
+/* branch permissions and attributes */
+#define AUFS_BRPERM_RW		"rw"
+#define AUFS_BRPERM_RO		"ro"
+#define AUFS_BRPERM_RR		"rr"
+#define AUFS_BRATTR_COO_REG	"coo_reg"
+#define AUFS_BRATTR_COO_ALL	"coo_all"
+#define AUFS_BRATTR_FHSM	"fhsm"
+#define AUFS_BRATTR_UNPIN	"unpin"
+#define AUFS_BRATTR_ICEX	"icex"
+#define AUFS_BRATTR_ICEX_SEC	"icexsec"
+#define AUFS_BRATTR_ICEX_SYS	"icexsys"
+#define AUFS_BRATTR_ICEX_TR	"icextr"
+#define AUFS_BRATTR_ICEX_USR	"icexusr"
+#define AUFS_BRATTR_ICEX_OTH	"icexoth"
+#define AUFS_BRRATTR_WH		"wh"
+#define AUFS_BRWATTR_NLWH	"nolwh"
+#define AUFS_BRWATTR_MOO	"moo"
+
+#define AuBrPerm_RW		1		/* writable, hardlinkable wh */
+#define AuBrPerm_RO		(1 << 1)	/* readonly */
+#define AuBrPerm_RR		(1 << 2)	/* natively readonly */
+#define AuBrPerm_Mask		(AuBrPerm_RW | AuBrPerm_RO | AuBrPerm_RR)
+
+#define AuBrAttr_COO_REG	(1 << 3)	/* copy-up on open */
+#define AuBrAttr_COO_ALL	(1 << 4)
+#define AuBrAttr_COO_Mask	(AuBrAttr_COO_REG | AuBrAttr_COO_ALL)
+
+#define AuBrAttr_FHSM		(1 << 5)	/* file-based hsm */
+#define AuBrAttr_UNPIN		(1 << 6)	/* rename-able top dir of
+						   branch. meaningless since
+						   linux-3.18-rc1 */
+
+/* ignore error in copying XATTR */
+#define AuBrAttr_ICEX_SEC	(1 << 7)
+#define AuBrAttr_ICEX_SYS	(1 << 8)
+#define AuBrAttr_ICEX_TR	(1 << 9)
+#define AuBrAttr_ICEX_USR	(1 << 10)
+#define AuBrAttr_ICEX_OTH	(1 << 11)
+#define AuBrAttr_ICEX		(AuBrAttr_ICEX_SEC	\
+				 | AuBrAttr_ICEX_SYS	\
+				 | AuBrAttr_ICEX_TR	\
+				 | AuBrAttr_ICEX_USR	\
+				 | AuBrAttr_ICEX_OTH)
+
+#define AuBrRAttr_WH		(1 << 12)	/* whiteout-able */
+#define AuBrRAttr_Mask		AuBrRAttr_WH
+
+#define AuBrWAttr_NoLinkWH	(1 << 13)	/* un-hardlinkable whiteouts */
+#define AuBrWAttr_MOO		(1 << 14)	/* move-up on open */
+#define AuBrWAttr_Mask		(AuBrWAttr_NoLinkWH | AuBrWAttr_MOO)
+
+#define AuBrAttr_CMOO_Mask	(AuBrAttr_COO_Mask | AuBrWAttr_MOO)
+
+/* #warning test userspace */
+#ifdef __KERNEL__
+#ifndef CONFIG_AUFS_FHSM
+#undef AuBrAttr_FHSM
+#define AuBrAttr_FHSM		0
+#endif
+#ifndef CONFIG_AUFS_XATTR
+#undef	AuBrAttr_ICEX
+#define AuBrAttr_ICEX		0
+#undef	AuBrAttr_ICEX_SEC
+#define AuBrAttr_ICEX_SEC	0
+#undef	AuBrAttr_ICEX_SYS
+#define AuBrAttr_ICEX_SYS	0
+#undef	AuBrAttr_ICEX_TR
+#define AuBrAttr_ICEX_TR	0
+#undef	AuBrAttr_ICEX_USR
+#define AuBrAttr_ICEX_USR	0
+#undef	AuBrAttr_ICEX_OTH
+#define AuBrAttr_ICEX_OTH	0
+#endif
+#endif
+
+/* the longest combination */
+/* AUFS_BRATTR_ICEX and AUFS_BRATTR_ICEX_TR don't affect here */
+#define AuBrPermStrSz	sizeof(AUFS_BRPERM_RW			\
+			       "+" AUFS_BRATTR_COO_REG		\
+			       "+" AUFS_BRATTR_FHSM		\
+			       "+" AUFS_BRATTR_UNPIN		\
+			       "+" AUFS_BRATTR_ICEX_SEC		\
+			       "+" AUFS_BRATTR_ICEX_SYS		\
+			       "+" AUFS_BRATTR_ICEX_USR		\
+			       "+" AUFS_BRATTR_ICEX_OTH		\
+			       "+" AUFS_BRWATTR_NLWH)
+
+typedef struct {
+	char a[AuBrPermStrSz];
+} au_br_perm_str_t;
+
+static inline int au_br_writable(int brperm)
+{
+	return brperm & AuBrPerm_RW;
+}
+
+static inline int au_br_whable(int brperm)
+{
+	return brperm & (AuBrPerm_RW | AuBrRAttr_WH);
+}
+
+static inline int au_br_wh_linkable(int brperm)
+{
+	return !(brperm & AuBrWAttr_NoLinkWH);
+}
+
+static inline int au_br_cmoo(int brperm)
+{
+	return brperm & AuBrAttr_CMOO_Mask;
+}
+
+static inline int au_br_fhsm(int brperm)
+{
+	return brperm & AuBrAttr_FHSM;
+}
+
+/* ---------------------------------------------------------------------- */
+
+/* ioctl */
+enum {
+	/* readdir in userspace */
+	AuCtl_RDU,
+	AuCtl_RDU_INO,
+
+	AuCtl_WBR_FD,	/* pathconf wrapper */
+	AuCtl_IBUSY,	/* busy inode */
+	AuCtl_MVDOWN,	/* move-down */
+	AuCtl_BR,	/* info about branches */
+	AuCtl_FHSM_FD	/* connection for fhsm */
+};
+
+/* borrowed from linux/include/linux/kernel.h */
+#ifndef ALIGN
+#define ALIGN(x, a)		__ALIGN_MASK(x, (typeof(x))(a)-1)
+#define __ALIGN_MASK(x, mask)	(((x)+(mask))&~(mask))
+#endif
+
+/* borrowed from linux/include/linux/compiler-gcc3.h */
+#ifndef __aligned
+#define __aligned(x)			__attribute__((aligned(x)))
+#endif
+
+#ifdef __KERNEL__
+#ifndef __packed
+#define __packed			__attribute__((packed))
+#endif
+#endif
+
+struct au_rdu_cookie {
+	uint64_t	h_pos;
+	int16_t		bindex;
+	uint8_t		flags;
+	uint8_t		pad;
+	uint32_t	generation;
+} __aligned(8);
+
+struct au_rdu_ent {
+	uint64_t	ino;
+	int16_t		bindex;
+	uint8_t		type;
+	uint8_t		nlen;
+	uint8_t		wh;
+	char		name[0];
+} __aligned(8);
+
+static inline int au_rdu_len(int nlen)
+{
+	/* include the terminating NULL */
+	return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1,
+		     sizeof(uint64_t));
+}
+
+union au_rdu_ent_ul {
+	struct au_rdu_ent	*e;
+	uint64_t			ul;
+};
+
+enum {
+	AufsCtlRduV_SZ,
+	AufsCtlRduV_End
+};
+
+struct aufs_rdu {
+	/* input */
+	union {
+		uint64_t	sz;	/* AuCtl_RDU */
+		uint64_t	nent;	/* AuCtl_RDU_INO */
+	};
+	union au_rdu_ent_ul	ent;
+	uint16_t		verify[AufsCtlRduV_End];
+
+	/* input/output */
+	uint32_t		blk;
+
+	/* output */
+	union au_rdu_ent_ul	tail;
+	/* number of entries which were added in a single call */
+	uint64_t		rent;
+	uint8_t			full;
+	uint8_t			shwh;
+
+	struct au_rdu_cookie	cookie;
+} __aligned(8);
+
+/* ---------------------------------------------------------------------- */
+
+struct aufs_wbr_fd {
+	uint32_t	oflags;
+	int16_t		brid;
+} __aligned(8);
+
+/* ---------------------------------------------------------------------- */
+
+struct aufs_ibusy {
+	uint64_t	ino, h_ino;
+	int16_t		bindex;
+} __aligned(8);
+
+/* ---------------------------------------------------------------------- */
+
+/* error code for move-down */
+/* the actual message strings are implemented in aufs-util.git */
+enum {
+	EAU_MVDOWN_OPAQUE = 1,
+	EAU_MVDOWN_WHITEOUT,
+	EAU_MVDOWN_UPPER,
+	EAU_MVDOWN_BOTTOM,
+	EAU_MVDOWN_NOUPPER,
+	EAU_MVDOWN_NOLOWERBR,
+	EAU_Last
+};
+
+/* flags for move-down */
+#define AUFS_MVDOWN_DMSG	1
+#define AUFS_MVDOWN_OWLOWER	(1 << 1)	/* overwrite lower */
+#define AUFS_MVDOWN_KUPPER	(1 << 2)	/* keep upper */
+#define AUFS_MVDOWN_ROLOWER	(1 << 3)	/* do even if lower is RO */
+#define AUFS_MVDOWN_ROLOWER_R	(1 << 4)	/* did on lower RO */
+#define AUFS_MVDOWN_ROUPPER	(1 << 5)	/* do even if upper is RO */
+#define AUFS_MVDOWN_ROUPPER_R	(1 << 6)	/* did on upper RO */
+#define AUFS_MVDOWN_BRID_UPPER	(1 << 7)	/* upper brid */
+#define AUFS_MVDOWN_BRID_LOWER	(1 << 8)	/* lower brid */
+#define AUFS_MVDOWN_FHSM_LOWER	(1 << 9)	/* find fhsm attr for lower */
+#define AUFS_MVDOWN_STFS	(1 << 10)	/* req. stfs */
+#define AUFS_MVDOWN_STFS_FAILED	(1 << 11)	/* output: stfs is unusable */
+#define AUFS_MVDOWN_BOTTOM	(1 << 12)	/* output: no more lowers */
+
+/* index for move-down */
+enum {
+	AUFS_MVDOWN_UPPER,
+	AUFS_MVDOWN_LOWER,
+	AUFS_MVDOWN_NARRAY
+};
+
+/*
+ * additional info of move-down
+ * number of free blocks and inodes.
+ * subset of struct kstatfs, but smaller and always 64bit.
+ */
+struct aufs_stfs {
+	uint64_t	f_blocks;
+	uint64_t	f_bavail;
+	uint64_t	f_files;
+	uint64_t	f_ffree;
+};
+
+struct aufs_stbr {
+	int16_t			brid;	/* optional input */
+	int16_t			bindex;	/* output */
+	struct aufs_stfs	stfs;	/* output when AUFS_MVDOWN_STFS set */
+} __aligned(8);
+
+struct aufs_mvdown {
+	uint32_t		flags;			/* input/output */
+	struct aufs_stbr	stbr[AUFS_MVDOWN_NARRAY]; /* input/output */
+	int8_t			au_errno;		/* output */
+} __aligned(8);
+
+/* ---------------------------------------------------------------------- */
+
+union aufs_brinfo {
+	/* PATH_MAX may differ between kernel-space and user-space */
+	char	_spacer[4096];
+	struct {
+		int16_t	id;
+		int	perm;
+		char	path[0];
+	};
+} __aligned(8);
+
+/* ---------------------------------------------------------------------- */
+
+#define AuCtlType		'A'
+#define AUFS_CTL_RDU		_IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu)
+#define AUFS_CTL_RDU_INO	_IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu)
+#define AUFS_CTL_WBR_FD		_IOW(AuCtlType, AuCtl_WBR_FD, \
+				     struct aufs_wbr_fd)
+#define AUFS_CTL_IBUSY		_IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy)
+#define AUFS_CTL_MVDOWN		_IOWR(AuCtlType, AuCtl_MVDOWN, \
+				      struct aufs_mvdown)
+#define AUFS_CTL_BRINFO		_IOW(AuCtlType, AuCtl_BR, union aufs_brinfo)
+#define AUFS_CTL_FHSM_FD	_IOW(AuCtlType, AuCtl_FHSM_FD, int)
+
+#endif /* __AUFS_TYPE_H__ */
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
new file mode 100644
index 0000000..8980980
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
@@ -0,0 +1,53 @@
+SUMMARY = "Tools for managing AUFS mounts"
+SECTION = "base"
+HOMEPAGE = "http://aufs.sourceforge.net/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
+
+DEPENDS = "aufs-util-native"
+DEPENDS_class-native = ""
+
+SRCREV = "b59a2167a135ceea37581ee33997de278cf8a30a"
+SRC_URI = "git://git.code.sf.net/p/aufs/aufs-util;protocol=git;branch=aufs3.14 \
+           file://aufs-util-don-t-strip-executables.patch \
+           file://aufs-util-add-tool-concept-to-Makefile-for-cross-com.patch \
+           file://aufs_type.h \
+"
+
+PV = "3.14+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+do_configure_append () {
+    install -d ${S}/include/linux/
+    cp ${WORKDIR}/aufs_type.h ${S}/include/linux/
+}
+
+do_configure_append_class-target () {
+    for i in ver c2sh c2tmac; do
+        cp ${STAGING_BINDIR_NATIVE}/aufs-util-${PV}/$i ./
+    done
+}
+
+do_compile () {
+    oe_runmake CPPFLAGS="-I${S}/include -I${S}/libau"
+}
+
+do_compile_class-native () {
+    oe_runmake tools CPPFLAGS="-I${S}/include -I${S}/libau"
+}
+
+do_install () {
+    oe_runmake 'DESTDIR=${D}' install_sbin install_ubin install_etc
+}
+
+do_install_class-native () {
+    install -d ${D}${bindir}/aufs-util-${PV}
+    for i in ver c2sh c2tmac; do
+        install -m 755 $i ${D}${bindir}/aufs-util-${PV}/$i
+    done
+}
+
+RRECOMMENDS_${PN} += "kernel-module-aufs"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/dmapi/dmapi_2.2.12.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/dmapi/dmapi_2.2.12.bb
new file mode 100644
index 0000000..4ff95f9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/dmapi/dmapi_2.2.12.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Library functions to get attribute bits"
+DESCRIPTION = "The Data Management API (DMAPI/XDSM) allows implementation \
+               of hierarchical storage management software with no kernel \
+               modifications as well as high-performance dump programs \
+               without requiring "raw" access to the disk and knowledge \
+               of filesystem structures.This interface is implemented by \
+               the libdm library."
+
+HOMEPAGE = "http://oss.sgi.com/projects/xfs"
+SECTION = "base"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://doc/COPYING;md5=1678edfe8de9be9564d23761ae2fa794"
+DEPENDS = "xfsprogs"
+
+SRC_URI = "ftp://oss.sgi.com/projects/xfs/cmd_tars/dmapi-${PV}.tar.gz \
+	   file://remove-install-as-user.patch \
+           file://dmapi_aarch64_configure_support.patch \
+          "
+SRC_URI[md5sum] = "cd825d4e141c16011367e0a0dd98c9c5"
+SRC_URI[sha256sum] = "b18e34f47374f6adf7c164993c26df36986a009b86aa004ef9444102653aea69"
+
+inherit autotools-brokensep
+
+PARALLEL_MAKE = ""
+EXTRA_OEMAKE += "LIBTOOL="${HOST_SYS}-libtool --tag=CC" V=1"
+
+do_install () {
+    export DIST_ROOT=${D}
+    install -d ${D}${libdir}
+    oe_runmake install install-dev PKG_DEVLIB_DIR=${libdir}
+}
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/dmapi/files/dmapi_aarch64_configure_support.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/dmapi/files/dmapi_aarch64_configure_support.patch
new file mode 100644
index 0000000..98753b7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/dmapi/files/dmapi_aarch64_configure_support.patch
@@ -0,0 +1,37 @@
+Add config support to cross compile dmapi for 
+aarch64 architecture
+
+Upstream-Status: Pending
+
+Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
+
+--- dmapi-2.2.12_org/config.sub	2012-12-12 23:03:05.000000000 +0530
++++ dmapi-2.2.12/config.sub	2014-03-24 16:49:56.771993523 +0530
+@@ -246,6 +246,7 @@ case $basic_machine in
+ 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ 	| am33_2.0 \
+ 	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
++	| aarch64 | aarch64be \
+ 	| bfin \
+ 	| c4x | clipper \
+ 	| d10v | d30v | dlx | dsp16xx \
+@@ -326,6 +327,7 @@ case $basic_machine in
+ 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
++	| aarch64-* | aarch64be-* \
+ 	| avr-* | avr32-* \
+ 	| bfin-* | bs2000-* \
+ 	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+--- dmapi-2.2.12_org/config.guess	2012-12-12 23:03:05.000000000 +0530
++++ dmapi-2.2.12/config.guess	2014-03-24 16:49:56.771993523 +0530
+@@ -864,6 +864,9 @@ EOF
+ 	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ 	fi
+ 	exit ;;
++    aarch64*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit;;
+     avr32*:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+ 	exit ;;
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/dmapi/files/remove-install-as-user.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/dmapi/files/remove-install-as-user.patch
new file mode 100644
index 0000000..e761db3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/dmapi/files/remove-install-as-user.patch
@@ -0,0 +1,205 @@
+remove install as user
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ include/buildmacros |  2 +-
+ include/install-sh  | 95 ++++++++---------------------------------------------
+ 2 files changed, 14 insertions(+), 83 deletions(-)
+
+diff --git a/include/buildmacros b/include/buildmacros
+index 7a01880..0840d55 100644
+--- a/include/buildmacros
++++ b/include/buildmacros
+@@ -30,7 +30,7 @@ OBJECTS = $(ASFILES:.s=.o) \
+ 	  $(LFILES:.l=.o) \
+ 	  $(YFILES:%.y=%.tab.o)
+ 
+-INSTALL	= $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
++INSTALL	= $(TOPDIR)/install-sh
+ 
+ IMAGES_DIR = $(TOPDIR)/all-images
+ DIST_DIR = $(TOPDIR)/dist
+diff --git a/include/install-sh b/include/install-sh
+index c952a71..b9d66f7 100755
+--- a/include/install-sh
++++ b/include/install-sh
+@@ -24,11 +24,11 @@
+ #       set           set      |    yes        yes
+ #
+ _usage() {
+-    echo "Usage: $prog [-o owner] [-g group] [-m mode] -d directory"
+-    echo "or     $prog [-D] [-o owner] [-g group] [-m mode] file directory/file"
+-    echo "or     $prog [-o owner] [-g group] [-m mode] file [file ...] directory"
++    echo "Usage: $prog [-m mode] -d directory"
++    echo "or     $prog [-m mode] file directory/file"
++    echo "or     $prog [-m mode] file [file ...] directory"
+     echo "or     $prog -S file target  (creates \"target\" symlink)"
+-    echo "or     $prog -T lt_arg [-o owner] [-g group] [-m mode] libtool.lai directory"
++    echo "or     $prog -T lt_arg [-m mode] libtool.lai directory"
+     echo ""
+     echo "The \$DIST_MANIFEST and \$DIST_ROOT environment variables affect the"
+     echo "behaviour of this command - see comments in the script."
+@@ -38,32 +38,6 @@ _usage() {
+     exit 1
+ }
+ 
+-_chown ()
+-{
+-    _st=255
+-    if [ $# -eq 3 ] ; then
+-	chown $1:$2 $3
+-	_st=$?
+-	if [ $_st -ne 0 ] ; then
+-	    if [ $REAL_UID != '0' ] ; then
+-		if [ ! -f $DIST_ROOT/.chown.quiet ] ; then
+-		    echo '==============================================='
+-		    echo Ownership of files under ${DIST_ROOT:-/}
+-		    echo cannot be changed
+-		    echo '==============================================='
+-		    if [ -n "$DIST_ROOT" ] ; then
+-			touch $DIST_ROOT/.chown.quiet
+-		    fi
+-		fi
+-	       _st=0
+-	    fi     
+-	fi
+-    fi
+-
+-    return $_st
+-}
+-
+-
+ _manifest ()
+ { 
+     echo $* | sed -e 's/\/\//\//g' >>${DIST_MANIFEST:-/dev/null}
+@@ -77,9 +51,6 @@ Sflag=false
+ Tflag=false
+ DIRMODE=755
+ FILEMODE=644
+-OWNER=`id -u`
+-GROUP=`id -g`
+-REAL_UID=$OWNER
+ 
+ # default is to install and don't append manifest
+ INSTALL=true
+@@ -94,24 +65,16 @@ MANIFEST=:
+ 
+ if $INSTALL
+ then
+-    CP=cp; LN=ln; MKDIR=mkdir; CHMOD=chmod; CHOWN=_chown
++    CP=cp; LN=ln; MKDIR=mkdir; CHMOD=chmod;
+ else
+-    CP=true; LN=true; MKDIR=true; CHMOD=true; CHOWN=true
++    CP=true; LN=true; MKDIR=true; CHMOD=true;
+ fi
+ 
+-[ -n "$DIST_ROOT" -a $REAL_UID -ne 0 ] && CHOWN=true
+-
+-while getopts "Dcm:d:S:o:g:T:" c $*
++while getopts "Dcm:d:S:T:" c $*
+ do
+    case $c in
+    c)
+ 	;;
+-   g)
+-	GROUP=$OPTARG
+-	;;
+-   o)
+-	OWNER=$OPTARG
+-	;;
+    m)
+ 	DIRMODE=`expr $OPTARG`
+ 	FILEMODE=$DIRMODE
+@@ -146,18 +109,7 @@ then
+     # first usage
+     #
+     $MKDIR -p $dir 
+-    status=$?
+-    if [ $status -eq 0 ]
+-    then
+-	$CHMOD $DIRMODE $dir
+-	status=$?
+-    fi
+-    if [ $status -eq 0 ]
+-    then
+-	$CHOWN $OWNER $GROUP $dir
+-	status=$?
+-    fi
+-    $MANIFEST d $DIRMODE $OWNER $GROUP ${dir#$DIST_ROOT}
++    $MANIFEST d $DIRMODE ${dir#$DIST_ROOT}
+ elif $Sflag
+ then
+     #
+@@ -203,7 +155,7 @@ then
+ 			install_name=$target/$solib
+ 			$CP $solib $install_name
+ 			status=$?
+-			$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$solib ${install_name#$DIST_ROOT}
++			$MANIFEST f $FILEMODE $HERE/$solib ${install_name#$DIST_ROOT}
+ 			break
+ 		fi
+ 	done
+@@ -254,7 +206,7 @@ then
+ 	install_name=$target/$old_library
+ 	$CP $old_library $install_name
+ 	status=$?
+-	$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$old_library ${install_name#$DIST_ROOT}
++	$MANIFEST f $FILEMODE $HERE/$old_library ${install_name#$DIST_ROOT}
+ 	;;
+     *)
+ 	echo "$prog: -T $lt_install invalid"
+@@ -267,7 +219,6 @@ then
+ 	if [ $status -eq 0 ]
+ 	then
+ 		$CHMOD $FILEMODE $install_name
+-		$CHOWN $OWNER $GROUP $install_name
+ 	fi
+ 	;;
+     esac
+@@ -292,23 +243,10 @@ else
+ 	then 
+ 	    if [ -f $dir/$f ]
+ 	    then
+-		$CHMOD $FILEMODE $dir/$f
+-		status=$?
+-		if [ $status -eq 0 ]
+-		then
+-		    $CHOWN $OWNER $GROUP $dir/$f
+-		    status=$?
+-		fi
+-		$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$f ${dir#$DIST_ROOT}/$f
++		$MANIFEST f $FILEMODE $HERE/$f ${dir#$DIST_ROOT}/$f
+ 	    else
+ 		$CHMOD $FILEMODE $dir
+-		status=$?
+-		if [ $status -eq 0 ]
+-		then
+-		    $CHOWN $OWNER $GROUP $dir
+-		    status=$?
+-		fi
+-		$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$dir ${dir#$DIST_ROOT}
++		$MANIFEST f $FILEMODE $HERE/$dir ${dir#$DIST_ROOT}
+ 	    fi
+ 	fi
+     else
+@@ -334,14 +272,7 @@ else
+ 	    status=$?
+ 	    if [ $status -eq 0 ]
+ 	    then
+-		$CHMOD $FILEMODE $dir/$f
+-		status=$?
+-		if [ $status -eq 0 ]
+-		then
+-		    $CHOWN $OWNER $GROUP $dir/$f
+-		    status=$?
+-		fi
+-		$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$f ${dir#$DIST_ROOT}/$f
++		$MANIFEST f $FILEMODE $HERE/$f ${dir#$DIST_ROOT}/$f
+ 	    fi
+ 	    [ $status -ne 0 ] && break
+ 	done
+-- 
+1.8.1.2
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/exfat-utils/exfat-utils_1.2.3.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/exfat-utils/exfat-utils_1.2.3.bb
new file mode 100644
index 0000000..3019db7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/exfat-utils/exfat-utils_1.2.3.bb
@@ -0,0 +1,21 @@
+SUMMARY = "utilities to create, check, label and dump exFAT filesystem"
+DESCRIPTION = "Utilities to manage extended file allocation table filesystem. \
+This package provides tools to create, check and label the filesystem. It \
+contains \
+ - dumpexfat to dump properties of the filesystem \
+ - exfatfsck / fsck.exfat to report errors found on a exFAT filesystem \
+ - exfatlabel to label a exFAT filesystem \
+ - mkexfatfs / mkfs.exfat to create a exFAT filesystem. \
+"
+HOMEPAGE = "http://code.google.com/p/exfat/"
+SECTION = "universe/otherosfs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+SRC_URI = "${DEBIAN_MIRROR}/main/e/exfat-utils/exfat-utils_${PV}.orig.tar.gz \
+"
+DEPENDS = "virtual/libc"
+
+inherit pkgconfig autotools
+
+SRC_URI[md5sum] = "f4e564450aa8159e26dde2869563d242"
+SRC_URI[sha256sum] = "80d3b3f21242d60d36a38a4ddb05cb7cc3a7d4eef5793e8314814937b938fcea"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/f2fs-tools/f2fs-tools/0001-Remove-AC_CHECK_FILE-for-cross-compilation.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/f2fs-tools/f2fs-tools/0001-Remove-AC_CHECK_FILE-for-cross-compilation.patch
new file mode 100644
index 0000000..cf844bf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/f2fs-tools/f2fs-tools/0001-Remove-AC_CHECK_FILE-for-cross-compilation.patch
@@ -0,0 +1,32 @@
+From 3b3c6e6376babcd9a0b0db312b0e1e3bb3ab833e Mon Sep 17 00:00:00 2001
+From: Sven Ebenfeld <sven.ebenfeld@vaillant.de>
+Date: Wed, 26 Nov 2014 10:36:44 +0100
+Subject: [PATCH] Remove AC_CHECK_FILE for cross compilation
+
+---
+ configure.ac | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0111e72..8c286d4 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -20,14 +20,9 @@ AC_DEFINE([F2FS_MINOR_VERSION], m4_bpatsubst(f2fs_tools_version,
+ 				[\([0-9]*\).\([0-9]*\)\(\w\|\W\)*], [\2]),
+ 				[Minor version for f2fs-tools])
+ 
+-AC_CHECK_FILE(.git,
+-	AC_DEFINE([F2FS_TOOLS_DATE],
+-		"m4_bpatsubst(f2fs_tools_gitdate,
+-		[\([0-9-]*\)\(\w\|\W\)*], [\1])",
+-		[f2fs-tools date based on Git commits]),
+ 	AC_DEFINE([F2FS_TOOLS_DATE],
+ 		"f2fs_tools_date",
+-		[f2fs-tools date based on Source releases]))
++		[f2fs-tools date based on Source releases])
+ 
+ AC_CONFIG_SRCDIR([config.h.in])
+ AC_CONFIG_HEADER([config.h])
+-- 
+1.8.1.rc3
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/f2fs-tools/f2fs-tools_1.4.0.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/f2fs-tools/f2fs-tools_1.4.0.bb
new file mode 100644
index 0000000..1a558e7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/f2fs-tools/f2fs-tools_1.4.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Tools for Flash-Friendly File System (F2FS)"
+HOMEPAGE = "http://sourceforge.net/projects/f2fs-tools/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=362b4b2594cd362b874a97718faa51d3"
+
+# to provide libuuid
+DEPENDS = "util-linux"
+
+SRCREV = "baac4b4e6f41ceb02511da49dd3707674f3fea21"
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git \
+    file://0001-Remove-AC_CHECK_FILE-for-cross-compilation.patch"
+S = "${WORKDIR}/git"
+
+inherit pkgconfig autotools
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/files/remove-install-as-user.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/files/remove-install-as-user.patch
new file mode 100644
index 0000000..e761db3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/files/remove-install-as-user.patch
@@ -0,0 +1,205 @@
+remove install as user
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ include/buildmacros |  2 +-
+ include/install-sh  | 95 ++++++++---------------------------------------------
+ 2 files changed, 14 insertions(+), 83 deletions(-)
+
+diff --git a/include/buildmacros b/include/buildmacros
+index 7a01880..0840d55 100644
+--- a/include/buildmacros
++++ b/include/buildmacros
+@@ -30,7 +30,7 @@ OBJECTS = $(ASFILES:.s=.o) \
+ 	  $(LFILES:.l=.o) \
+ 	  $(YFILES:%.y=%.tab.o)
+ 
+-INSTALL	= $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
++INSTALL	= $(TOPDIR)/install-sh
+ 
+ IMAGES_DIR = $(TOPDIR)/all-images
+ DIST_DIR = $(TOPDIR)/dist
+diff --git a/include/install-sh b/include/install-sh
+index c952a71..b9d66f7 100755
+--- a/include/install-sh
++++ b/include/install-sh
+@@ -24,11 +24,11 @@
+ #       set           set      |    yes        yes
+ #
+ _usage() {
+-    echo "Usage: $prog [-o owner] [-g group] [-m mode] -d directory"
+-    echo "or     $prog [-D] [-o owner] [-g group] [-m mode] file directory/file"
+-    echo "or     $prog [-o owner] [-g group] [-m mode] file [file ...] directory"
++    echo "Usage: $prog [-m mode] -d directory"
++    echo "or     $prog [-m mode] file directory/file"
++    echo "or     $prog [-m mode] file [file ...] directory"
+     echo "or     $prog -S file target  (creates \"target\" symlink)"
+-    echo "or     $prog -T lt_arg [-o owner] [-g group] [-m mode] libtool.lai directory"
++    echo "or     $prog -T lt_arg [-m mode] libtool.lai directory"
+     echo ""
+     echo "The \$DIST_MANIFEST and \$DIST_ROOT environment variables affect the"
+     echo "behaviour of this command - see comments in the script."
+@@ -38,32 +38,6 @@ _usage() {
+     exit 1
+ }
+ 
+-_chown ()
+-{
+-    _st=255
+-    if [ $# -eq 3 ] ; then
+-	chown $1:$2 $3
+-	_st=$?
+-	if [ $_st -ne 0 ] ; then
+-	    if [ $REAL_UID != '0' ] ; then
+-		if [ ! -f $DIST_ROOT/.chown.quiet ] ; then
+-		    echo '==============================================='
+-		    echo Ownership of files under ${DIST_ROOT:-/}
+-		    echo cannot be changed
+-		    echo '==============================================='
+-		    if [ -n "$DIST_ROOT" ] ; then
+-			touch $DIST_ROOT/.chown.quiet
+-		    fi
+-		fi
+-	       _st=0
+-	    fi     
+-	fi
+-    fi
+-
+-    return $_st
+-}
+-
+-
+ _manifest ()
+ { 
+     echo $* | sed -e 's/\/\//\//g' >>${DIST_MANIFEST:-/dev/null}
+@@ -77,9 +51,6 @@ Sflag=false
+ Tflag=false
+ DIRMODE=755
+ FILEMODE=644
+-OWNER=`id -u`
+-GROUP=`id -g`
+-REAL_UID=$OWNER
+ 
+ # default is to install and don't append manifest
+ INSTALL=true
+@@ -94,24 +65,16 @@ MANIFEST=:
+ 
+ if $INSTALL
+ then
+-    CP=cp; LN=ln; MKDIR=mkdir; CHMOD=chmod; CHOWN=_chown
++    CP=cp; LN=ln; MKDIR=mkdir; CHMOD=chmod;
+ else
+-    CP=true; LN=true; MKDIR=true; CHMOD=true; CHOWN=true
++    CP=true; LN=true; MKDIR=true; CHMOD=true;
+ fi
+ 
+-[ -n "$DIST_ROOT" -a $REAL_UID -ne 0 ] && CHOWN=true
+-
+-while getopts "Dcm:d:S:o:g:T:" c $*
++while getopts "Dcm:d:S:T:" c $*
+ do
+    case $c in
+    c)
+ 	;;
+-   g)
+-	GROUP=$OPTARG
+-	;;
+-   o)
+-	OWNER=$OPTARG
+-	;;
+    m)
+ 	DIRMODE=`expr $OPTARG`
+ 	FILEMODE=$DIRMODE
+@@ -146,18 +109,7 @@ then
+     # first usage
+     #
+     $MKDIR -p $dir 
+-    status=$?
+-    if [ $status -eq 0 ]
+-    then
+-	$CHMOD $DIRMODE $dir
+-	status=$?
+-    fi
+-    if [ $status -eq 0 ]
+-    then
+-	$CHOWN $OWNER $GROUP $dir
+-	status=$?
+-    fi
+-    $MANIFEST d $DIRMODE $OWNER $GROUP ${dir#$DIST_ROOT}
++    $MANIFEST d $DIRMODE ${dir#$DIST_ROOT}
+ elif $Sflag
+ then
+     #
+@@ -203,7 +155,7 @@ then
+ 			install_name=$target/$solib
+ 			$CP $solib $install_name
+ 			status=$?
+-			$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$solib ${install_name#$DIST_ROOT}
++			$MANIFEST f $FILEMODE $HERE/$solib ${install_name#$DIST_ROOT}
+ 			break
+ 		fi
+ 	done
+@@ -254,7 +206,7 @@ then
+ 	install_name=$target/$old_library
+ 	$CP $old_library $install_name
+ 	status=$?
+-	$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$old_library ${install_name#$DIST_ROOT}
++	$MANIFEST f $FILEMODE $HERE/$old_library ${install_name#$DIST_ROOT}
+ 	;;
+     *)
+ 	echo "$prog: -T $lt_install invalid"
+@@ -267,7 +219,6 @@ then
+ 	if [ $status -eq 0 ]
+ 	then
+ 		$CHMOD $FILEMODE $install_name
+-		$CHOWN $OWNER $GROUP $install_name
+ 	fi
+ 	;;
+     esac
+@@ -292,23 +243,10 @@ else
+ 	then 
+ 	    if [ -f $dir/$f ]
+ 	    then
+-		$CHMOD $FILEMODE $dir/$f
+-		status=$?
+-		if [ $status -eq 0 ]
+-		then
+-		    $CHOWN $OWNER $GROUP $dir/$f
+-		    status=$?
+-		fi
+-		$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$f ${dir#$DIST_ROOT}/$f
++		$MANIFEST f $FILEMODE $HERE/$f ${dir#$DIST_ROOT}/$f
+ 	    else
+ 		$CHMOD $FILEMODE $dir
+-		status=$?
+-		if [ $status -eq 0 ]
+-		then
+-		    $CHOWN $OWNER $GROUP $dir
+-		    status=$?
+-		fi
+-		$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$dir ${dir#$DIST_ROOT}
++		$MANIFEST f $FILEMODE $HERE/$dir ${dir#$DIST_ROOT}
+ 	    fi
+ 	fi
+     else
+@@ -334,14 +272,7 @@ else
+ 	    status=$?
+ 	    if [ $status -eq 0 ]
+ 	    then
+-		$CHMOD $FILEMODE $dir/$f
+-		status=$?
+-		if [ $status -eq 0 ]
+-		then
+-		    $CHOWN $OWNER $GROUP $dir/$f
+-		    status=$?
+-		fi
+-		$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$f ${dir#$DIST_ROOT}/$f
++		$MANIFEST f $FILEMODE $HERE/$f ${dir#$DIST_ROOT}/$f
+ 	    fi
+ 	    [ $status -ne 0 ] && break
+ 	done
+-- 
+1.8.1.2
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.4.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.4.bb
new file mode 100644
index 0000000..e053a6e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.4.bb
@@ -0,0 +1,36 @@
+SUMMARY = "XFS Filesystem Dump Utility"
+DESCRIPTION = "The xfsdump package contains xfsdump, xfsrestore and a \
+               number of other utilities for administering XFS filesystems.\
+               xfsdump examines files in a filesystem, determines which \
+               need to be backed up, and copies those files to a \
+               specified disk, tape or other storage medium."
+HOMEPAGE = "http://oss.sgi.com/projects/xfs"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://doc/COPYING;md5=15c832894d10ddd00dfcf57bee490ecc"
+DEPENDS = "xfsprogs attr"
+
+SRC_URI = "ftp://oss.sgi.com/projects/xfs/cmd_tars/${BPN}-${PV}.tar.gz \
+	   file://remove-install-as-user.patch \
+          "
+SRC_URI[md5sum] = "a8b1761be5feb363131e7b506639ad4c"
+SRC_URI[sha256sum] = "570eafd0721515bdd79cb0e295b701d49cdf81e71a0a0ff0df6d4c5cc1960943"
+
+inherit autotools-brokensep
+
+PARALLEL_MAKE = ""
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gettext] = "--enable-gettext=yes,--enable-gettext=no,gettext"
+
+EXTRA_OEMAKE += "'LIBTOOL=${HOST_SYS}-libtool' V=1"
+
+do_configure () {
+    export DEBUG="-DNDEBUG"
+    oe_runconf
+}
+
+do_install () {
+    export DIST_ROOT=${D}
+    oe_runmake install 
+    oe_runmake install-dev
+}
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/drop-configure-check-for-aio.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/drop-configure-check-for-aio.patch
new file mode 100644
index 0000000..7601095
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/drop-configure-check-for-aio.patch
@@ -0,0 +1,93 @@
+xfsprogs: drop configure check for aio
+
+It's unused and breaks compilation with uclibc.
+
+Upstream-Status: Pending
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ configure.ac         |  6 +++---
+ m4/Makefile          |  1 -
+ m4/package_aiodev.m4 | 36 ------------------------------------
+ 3 files changed, 3 insertions(+), 40 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index b968977..4e2a263 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -47,6 +47,9 @@ AC_ARG_ENABLE(lib64,
+ 	enable_lib64=yes)
+ AC_SUBST(enable_lib64)
+ 
++librt="-lrt"
++AC_SUBST(librt)
++
+ #
+ # If the user specified a libdir ending in lib64 do not append another
+ # 64 to the library names.
+@@ -92,9 +95,6 @@ AC_PACKAGE_GLOBALS(xfsprogs)
+ AC_PACKAGE_UTILITIES(xfsprogs)
+ AC_MULTILIB($enable_lib64)
+ 
+-AC_PACKAGE_NEED_AIO_H
+-AC_PACKAGE_NEED_LIO_LISTIO
+-
+ AC_PACKAGE_NEED_UUID_H
+ AC_PACKAGE_NEED_UUIDCOMPARE
+ 
+diff --git a/m4/Makefile b/m4/Makefile
+index 654a4fb..d282f0a 100644
+--- a/m4/Makefile
++++ b/m4/Makefile
+@@ -14,7 +14,6 @@ CONFIGURE = \
+ 
+ LSRCFILES = \
+ 	manual_format.m4 \
+-	package_aiodev.m4 \
+ 	package_blkid.m4 \
+ 	package_globals.m4 \
+ 	package_libcdev.m4 \
+diff --git a/m4/package_aiodev.m4 b/m4/package_aiodev.m4
+index 490d9c8..8b13789 100644
+--- a/m4/package_aiodev.m4
++++ b/m4/package_aiodev.m4
+@@ -1,37 +1 @@
+-#
+-# Check if we have a libaio.h installed
+-#
+-AC_DEFUN([AC_PACKAGE_WANT_AIO],
+-  [ AC_CHECK_HEADERS(libaio.h, [ have_aio=true ], [ have_aio=false ])
+-    AC_SUBST(have_aio)
+-  ])
+-
+-#
+-# Check if we have an aio.h installed
+-#
+-AC_DEFUN([AC_PACKAGE_NEED_AIO_H],
+-  [ AC_CHECK_HEADERS(aio.h)
+-    if test $ac_cv_header_aio_h = no; then
+-	echo
+-	echo 'FATAL ERROR: could not find a valid <aio.h> header.'
+-	exit 1
+-    fi
+-  ])
+-
+-#
+-# Check if we have the lio_listio routine in either libc/librt
+-#
+-AC_DEFUN([AC_PACKAGE_NEED_LIO_LISTIO],
+-  [ AC_CHECK_FUNCS(lio_listio)
+-    if test $ac_cv_func_lio_listio = yes; then
+-	librt=""
+-    else
+-	AC_CHECK_LIB(rt, lio_listio,, [
+-	    echo
+-	    echo 'FATAL ERROR: could not find a library with lio_listio.'
+-	    exit 1],[-lpthread])
+-	librt="-lrt"
+-    fi
+-    AC_SUBST(librt)
+-  ])
+ 
+-- 
+1.8.1.2
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/remove-install-as-user.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/remove-install-as-user.patch
new file mode 100644
index 0000000..e761db3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/remove-install-as-user.patch
@@ -0,0 +1,205 @@
+remove install as user
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ include/buildmacros |  2 +-
+ include/install-sh  | 95 ++++++++---------------------------------------------
+ 2 files changed, 14 insertions(+), 83 deletions(-)
+
+diff --git a/include/buildmacros b/include/buildmacros
+index 7a01880..0840d55 100644
+--- a/include/buildmacros
++++ b/include/buildmacros
+@@ -30,7 +30,7 @@ OBJECTS = $(ASFILES:.s=.o) \
+ 	  $(LFILES:.l=.o) \
+ 	  $(YFILES:%.y=%.tab.o)
+ 
+-INSTALL	= $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
++INSTALL	= $(TOPDIR)/install-sh
+ 
+ IMAGES_DIR = $(TOPDIR)/all-images
+ DIST_DIR = $(TOPDIR)/dist
+diff --git a/include/install-sh b/include/install-sh
+index c952a71..b9d66f7 100755
+--- a/include/install-sh
++++ b/include/install-sh
+@@ -24,11 +24,11 @@
+ #       set           set      |    yes        yes
+ #
+ _usage() {
+-    echo "Usage: $prog [-o owner] [-g group] [-m mode] -d directory"
+-    echo "or     $prog [-D] [-o owner] [-g group] [-m mode] file directory/file"
+-    echo "or     $prog [-o owner] [-g group] [-m mode] file [file ...] directory"
++    echo "Usage: $prog [-m mode] -d directory"
++    echo "or     $prog [-m mode] file directory/file"
++    echo "or     $prog [-m mode] file [file ...] directory"
+     echo "or     $prog -S file target  (creates \"target\" symlink)"
+-    echo "or     $prog -T lt_arg [-o owner] [-g group] [-m mode] libtool.lai directory"
++    echo "or     $prog -T lt_arg [-m mode] libtool.lai directory"
+     echo ""
+     echo "The \$DIST_MANIFEST and \$DIST_ROOT environment variables affect the"
+     echo "behaviour of this command - see comments in the script."
+@@ -38,32 +38,6 @@ _usage() {
+     exit 1
+ }
+ 
+-_chown ()
+-{
+-    _st=255
+-    if [ $# -eq 3 ] ; then
+-	chown $1:$2 $3
+-	_st=$?
+-	if [ $_st -ne 0 ] ; then
+-	    if [ $REAL_UID != '0' ] ; then
+-		if [ ! -f $DIST_ROOT/.chown.quiet ] ; then
+-		    echo '==============================================='
+-		    echo Ownership of files under ${DIST_ROOT:-/}
+-		    echo cannot be changed
+-		    echo '==============================================='
+-		    if [ -n "$DIST_ROOT" ] ; then
+-			touch $DIST_ROOT/.chown.quiet
+-		    fi
+-		fi
+-	       _st=0
+-	    fi     
+-	fi
+-    fi
+-
+-    return $_st
+-}
+-
+-
+ _manifest ()
+ { 
+     echo $* | sed -e 's/\/\//\//g' >>${DIST_MANIFEST:-/dev/null}
+@@ -77,9 +51,6 @@ Sflag=false
+ Tflag=false
+ DIRMODE=755
+ FILEMODE=644
+-OWNER=`id -u`
+-GROUP=`id -g`
+-REAL_UID=$OWNER
+ 
+ # default is to install and don't append manifest
+ INSTALL=true
+@@ -94,24 +65,16 @@ MANIFEST=:
+ 
+ if $INSTALL
+ then
+-    CP=cp; LN=ln; MKDIR=mkdir; CHMOD=chmod; CHOWN=_chown
++    CP=cp; LN=ln; MKDIR=mkdir; CHMOD=chmod;
+ else
+-    CP=true; LN=true; MKDIR=true; CHMOD=true; CHOWN=true
++    CP=true; LN=true; MKDIR=true; CHMOD=true;
+ fi
+ 
+-[ -n "$DIST_ROOT" -a $REAL_UID -ne 0 ] && CHOWN=true
+-
+-while getopts "Dcm:d:S:o:g:T:" c $*
++while getopts "Dcm:d:S:T:" c $*
+ do
+    case $c in
+    c)
+ 	;;
+-   g)
+-	GROUP=$OPTARG
+-	;;
+-   o)
+-	OWNER=$OPTARG
+-	;;
+    m)
+ 	DIRMODE=`expr $OPTARG`
+ 	FILEMODE=$DIRMODE
+@@ -146,18 +109,7 @@ then
+     # first usage
+     #
+     $MKDIR -p $dir 
+-    status=$?
+-    if [ $status -eq 0 ]
+-    then
+-	$CHMOD $DIRMODE $dir
+-	status=$?
+-    fi
+-    if [ $status -eq 0 ]
+-    then
+-	$CHOWN $OWNER $GROUP $dir
+-	status=$?
+-    fi
+-    $MANIFEST d $DIRMODE $OWNER $GROUP ${dir#$DIST_ROOT}
++    $MANIFEST d $DIRMODE ${dir#$DIST_ROOT}
+ elif $Sflag
+ then
+     #
+@@ -203,7 +155,7 @@ then
+ 			install_name=$target/$solib
+ 			$CP $solib $install_name
+ 			status=$?
+-			$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$solib ${install_name#$DIST_ROOT}
++			$MANIFEST f $FILEMODE $HERE/$solib ${install_name#$DIST_ROOT}
+ 			break
+ 		fi
+ 	done
+@@ -254,7 +206,7 @@ then
+ 	install_name=$target/$old_library
+ 	$CP $old_library $install_name
+ 	status=$?
+-	$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$old_library ${install_name#$DIST_ROOT}
++	$MANIFEST f $FILEMODE $HERE/$old_library ${install_name#$DIST_ROOT}
+ 	;;
+     *)
+ 	echo "$prog: -T $lt_install invalid"
+@@ -267,7 +219,6 @@ then
+ 	if [ $status -eq 0 ]
+ 	then
+ 		$CHMOD $FILEMODE $install_name
+-		$CHOWN $OWNER $GROUP $install_name
+ 	fi
+ 	;;
+     esac
+@@ -292,23 +243,10 @@ else
+ 	then 
+ 	    if [ -f $dir/$f ]
+ 	    then
+-		$CHMOD $FILEMODE $dir/$f
+-		status=$?
+-		if [ $status -eq 0 ]
+-		then
+-		    $CHOWN $OWNER $GROUP $dir/$f
+-		    status=$?
+-		fi
+-		$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$f ${dir#$DIST_ROOT}/$f
++		$MANIFEST f $FILEMODE $HERE/$f ${dir#$DIST_ROOT}/$f
+ 	    else
+ 		$CHMOD $FILEMODE $dir
+-		status=$?
+-		if [ $status -eq 0 ]
+-		then
+-		    $CHOWN $OWNER $GROUP $dir
+-		    status=$?
+-		fi
+-		$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$dir ${dir#$DIST_ROOT}
++		$MANIFEST f $FILEMODE $HERE/$dir ${dir#$DIST_ROOT}
+ 	    fi
+ 	fi
+     else
+@@ -334,14 +272,7 @@ else
+ 	    status=$?
+ 	    if [ $status -eq 0 ]
+ 	    then
+-		$CHMOD $FILEMODE $dir/$f
+-		status=$?
+-		if [ $status -eq 0 ]
+-		then
+-		    $CHOWN $OWNER $GROUP $dir/$f
+-		    status=$?
+-		fi
+-		$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$f ${dir#$DIST_ROOT}/$f
++		$MANIFEST f $FILEMODE $HERE/$f ${dir#$DIST_ROOT}/$f
+ 	    fi
+ 	    [ $status -ne 0 ] && break
+ 	done
+-- 
+1.8.1.2
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/xfsprogs-generate-crctable-which-is-moved-into-runti.patch b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/xfsprogs-generate-crctable-which-is-moved-into-runti.patch
new file mode 100644
index 0000000..b204195
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/xfsprogs-generate-crctable-which-is-moved-into-runti.patch
@@ -0,0 +1,170 @@
+From e58cb210a7c15352040a411d11a8383eac0defda Mon Sep 17 00:00:00 2001
+From: Jianchuan Wang <jianchuan.wang@windriver.com>
+Date: Tue, 30 Sep 2014 12:16:17 +0800
+Subject: [PATCH] xfsprogs: generate crctable which is moved into runtime from
+ compile
+
+After upgraded, There is a compile error except x86,
+Because crc32.c need two arraies crc32table_le and crc32ctable_le from crc32table.h,
+which are generated by gen_crc32table.c relative to different platforms.
+For this, move the function implementation from gen_crc32table.c to crc.c
+
+Upstream-Status: Pending
+
+Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
+---
+ libxfs/Makefile | 23 ++----------------
+ libxfs/crc32.c  | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 75 insertions(+), 23 deletions(-)
+
+diff --git a/libxfs/Makefile b/libxfs/Makefile
+index ae15a5d..7670159 100644
+--- a/libxfs/Makefile
++++ b/libxfs/Makefile
+@@ -10,7 +10,7 @@ LT_CURRENT = 0
+ LT_REVISION = 0
+ LT_AGE = 0
+ 
+-HFILES = xfs.h init.h xfs_dir2_priv.h crc32defs.h crc32table.h
++HFILES = xfs.h init.h xfs_dir2_priv.h crc32defs.h
+ CFILES = cache.c \
+ 	crc32.c \
+ 	init.c kmem.c logitem.c radix-tree.c rdwr.c trans.c util.c \
+@@ -43,7 +43,6 @@ CFILES = cache.c \
+ CFILES += $(PKG_PLATFORM).c
+ PCFILES = darwin.c freebsd.c irix.c linux.c
+ LSRCFILES = $(shell echo $(PCFILES) | sed -e "s/$(PKG_PLATFORM).c//g")
+-LSRCFILES += gen_crc32table.c
+ 
+ #
+ # Tracing flags:
+@@ -61,25 +60,7 @@ LTLIBS = $(LIBPTHREAD) $(LIBRT)
+ # don't try linking xfs_repair with a debug libxfs.
+ DEBUG = -DNDEBUG
+ 
+-LDIRT = gen_crc32table crc32table.h crc32selftest
+-
+-default: crc32selftest ltdepend $(LTLIBRARY)
+-
+-crc32table.h: gen_crc32table.c
+-	@echo "    [CC]     gen_crc32table"
+-	$(Q) $(CC) $(CFLAGS) -o gen_crc32table $<
+-	@echo "    [GENERATE] $@"
+-	$(Q) ./gen_crc32table > crc32table.h
+-
+-# The selftest binary will return an error if it fails. This is made a
+-# dependency of the build process so that we refuse to build the tools on broken
+-# systems/architectures. Hence we make sure that xfsprogs will never use a
+-# busted CRC calculation at build time and hence avoid putting bad CRCs down on
+-# disk.
+-crc32selftest: gen_crc32table.c crc32table.h crc32.c
+-	@echo "    [TEST]    CRC32"
+-	$(Q) $(CC) $(CFLAGS) -D CRC32_SELFTEST=1 crc32.c -o $@
+-	$(Q) ./$@
++default: ltdepend $(LTLIBRARY)
+ 
+ include $(BUILDRULES)
+ 
+diff --git a/libxfs/crc32.c b/libxfs/crc32.c
+index 0f847d2..be5fbc3 100644
+--- a/libxfs/crc32.c
++++ b/libxfs/crc32.c
+@@ -55,8 +55,6 @@ typedef __u32	u64;
+ # define tobe(x) (x)
+ #endif
+ 
+-#include "crc32table.h"
+-
+ #if CRC_LE_BITS > 8 || CRC_BE_BITS > 8
+ 
+ /* implements slicing-by-4 or slicing-by-8 algorithm */
+@@ -183,13 +181,86 @@ u32 __pure crc32c_le(u32 crc, unsigned char const *p, size_t len)
+ 	return crc32_le_generic(crc, p, len, NULL, CRC32C_POLY_LE);
+ }
+ #else
++
++#include <stdio.h>
++#include "crc32defs.h"
++#include <inttypes.h>
++
++#define ENTRIES_PER_LINE 4
++
++#if CRC_LE_BITS > 8
++# define LE_TABLE_ROWS (CRC_LE_BITS/8)
++# define LE_TABLE_SIZE 256
++#else
++# define LE_TABLE_ROWS 1
++# define LE_TABLE_SIZE (1 << CRC_LE_BITS)
++#endif
++
++#if CRC_BE_BITS > 8
++# define BE_TABLE_ROWS (CRC_BE_BITS/8)
++# define BE_TABLE_SIZE 256
++#else
++# define BE_TABLE_ROWS 1
++# define BE_TABLE_SIZE (1 << CRC_BE_BITS)
++#endif
++
++static uint32_t crc32table_le[LE_TABLE_ROWS][256];
++static uint32_t crc32ctable_le[LE_TABLE_ROWS][256];
++
++static uint32_t crc32table_le_init = 0;
++static uint32_t crc32ctable_le_init = 0;
++
++/*
++ * big endian ordered CRC not used by XFS.
++static uint32_t crc32table_be[BE_TABLE_ROWS][256];
++ */
++
++/**
++ * crc32init_le() - allocate and initialize LE table data
++ *
++ * crc is the crc of the byte i; other entries are filled in based on the
++ * fact that crctable[i^j] = crctable[i] ^ crctable[j].
++ *
++ */
++static void crc32init_le_generic(const uint32_t polynomial,
++				 uint32_t (*tab)[256])
++{
++	unsigned i, j;
++	uint32_t crc = 1;
++
++	tab[0][0] = 0;
++
++	for (i = LE_TABLE_SIZE >> 1; i; i >>= 1) {
++		crc = (crc >> 1) ^ ((crc & 1) ? polynomial : 0);
++		for (j = 0; j < LE_TABLE_SIZE; j += 2 * i)
++			tab[0][i + j] = crc ^ tab[0][j];
++	}
++	for (i = 0; i < LE_TABLE_SIZE; i++) {
++		crc = tab[0][i];
++		for (j = 1; j < LE_TABLE_ROWS; j++) {
++			crc = tab[0][crc & 0xff] ^ (crc >> 8);
++			tab[j][i] = crc;
++		}
++	}
++}
++
+ u32 __pure crc32_le(u32 crc, unsigned char const *p, size_t len)
+ {
++	if (crc32table_le_init == 0) {
++		crc32init_le_generic(CRCPOLY_LE, crc32table_le);
++		crc32table_le_init == 1;
++	}	
++
+ 	return crc32_le_generic(crc, p, len,
+ 			(const u32 (*)[256])crc32table_le, CRCPOLY_LE);
+ }
+ u32 __pure crc32c_le(u32 crc, unsigned char const *p, size_t len)
+ {
++	if (crc32ctable_le_init == 0) {
++		crc32init_le_generic(CRC32C_POLY_LE, crc32ctable_le);
++		crc32ctable_le_init == 1;
++	}
++
+ 	return crc32_le_generic(crc, p, len,
+ 			(const u32 (*)[256])crc32ctable_le, CRC32C_POLY_LE);
+ }
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_3.2.3.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_3.2.3.bb
new file mode 100644
index 0000000..f38239c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_3.2.3.bb
@@ -0,0 +1,52 @@
+SUMMARY = "XFS Filesystem Utilities"
+HOMEPAGE = "http://oss.sgi.com/projects/xfs"
+SECTION = "base"
+LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE_libhandle = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://doc/COPYING;md5=dbdb5f4329b7e7145de650e9ecd4ac2a"
+DEPENDS = "util-linux"
+
+SRC_URI = "ftp://oss.sgi.com/projects/xfs/cmd_tars/${BP}.tar.gz \
+    file://xfsprogs-generate-crctable-which-is-moved-into-runti.patch \
+    file://remove-install-as-user.patch \
+    file://drop-configure-check-for-aio.patch \
+"
+
+SRC_URI[md5sum] = "9f383e36682709e62b12c125e5d8b895"
+SRC_URI[sha256sum] = "7a5124a880997939551b519610a2e54bd4cd0b0adfd563ce3f4de30827109ac9"
+
+inherit autotools-brokensep
+
+PACKAGES =+ "${PN}-fsck ${PN}-mkfs libhandle"
+
+RDEPENDS_${PN} = "${PN}-fsck ${PN}-mkfs"
+
+FILES_${PN}-fsck = "${base_sbindir}/fsck.xfs"
+FILES_${PN}-mkfs = "${base_sbindir}/mkfs.xfs"
+FILES_libhandle = "${base_libdir}/libhandle${SOLIBS}"
+
+EXTRA_OECONF = "--enable-gettext=no"
+do_configure () {
+    # Prevent Makefile from calling configure without arguments,
+    # when do_configure gets called for a second time.
+    rm -f include/builddefs include/platform_defs.h
+    # Recreate configure script.
+    rm -f configure
+    oe_runmake configure
+    # Configure.
+    export DEBUG="-DNDEBUG"
+    gnu-configize --force
+    oe_runconf
+}
+
+LIBTOOL = "${HOST_SYS}-libtool"
+EXTRA_OEMAKE = "'LIBTOOL=${LIBTOOL}'"
+TARGET_CC_ARCH += "${LDFLAGS}"
+PARALLEL_MAKE = ""
+
+do_install () {
+    export DIST_ROOT=${D}
+    oe_runmake install
+    # needed for xfsdump
+    oe_runmake install-dev
+}
diff --git a/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xorriso/xorriso_1.4.0.bb b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xorriso/xorriso_1.4.0.bb
new file mode 100644
index 0000000..b26709e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-filesystems/recipes-utils/xorriso/xorriso_1.4.0.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "xorriso copies file objects from POSIX compliant filesystems \
+into Rock Ridge enhanced ISO 9660 filesystems and allows session-wise \
+manipulation of such filesystems"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "http://www.gnu.org/software/${BPN}/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "ec79fd2736b8da76e7a870e27cadf6fa"
+SRC_URI[sha256sum] = "0bd1e085015b28c24f57697d6def2fe84517967dc417554c0c3ccf1685ed0e56"
+
+PACKAGECONFIG ??= "acl attr zlib bzip2 readline"
+PACKAGECONFIG[acl] = "--enable-libacl,--disable-libacl,acl,"
+PACKAGECONFIG[attr] = "--enable-xattr,--disable-xattr,attr,"
+PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib,"
+PACKAGECONFIG[bzip2] = "--enable-libbz2,--disable-libbz2,bzip2,"
+PACKAGECONFIG[readline] = "--enable-libreadline,--disable-libreadline,readline,"
+
+inherit autotools-brokensep pkgconfig distro_features_check
+
+do_configure_prepend () {
+    touch NEWS
+}
+
+RDEPENDS_${PN} = "tk"
+REQUIRED_DISTRO_FEATURES = "x11"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-gnome/COPYING.MIT b/import-layers/meta-openembedded/meta-gnome/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-gnome/README b/import-layers/meta-openembedded/meta-gnome/README
new file mode 100644
index 0000000..2a889e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/README
@@ -0,0 +1,17 @@
+This layer depends on:
+
+URI: git://github.com/openembedded/oe-core.git
+branch: krogoth
+revision: HEAD
+
+URI: git://github.com/openembedded/meta-oe.git
+branch: krogoth
+revision: HEAD
+
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-gnome][krogoth]' in the subject'
+
+When sending single patches, please using something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-gnome][krogoth][PATCH'
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
diff --git a/import-layers/meta-openembedded/meta-gnome/conf/layer.conf b/import-layers/meta-openembedded/meta-gnome/conf/layer.conf
new file mode 100644
index 0000000..58e12a9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/conf/layer.conf
@@ -0,0 +1,15 @@
+# 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 += "gnome-layer"
+BBFILE_PATTERN_gnome-layer := "^${LAYERDIR}/"
+BBFILE_PRIORITY_gnome-layer = "7"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_gnome-layer = "1"
+
+LAYERDEPENDS_gnome-layer = "core openembedded-layer"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-apps/cheese/cheese_2.30.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-apps/cheese/cheese_2.30.1.bb
new file mode 100644
index 0000000..6e0e0aa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-apps/cheese/cheese_2.30.1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Take photos and videos with your webcam, with fun graphical effects"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a17cb0a873d252440acfdf9b3d0e7fbf"
+
+DEPENDS = "gtk+ gstreamer gst-plugins-base libcanberra udev librsvg gnome-desktop evolution-data-server intltool-native"
+
+PR = "r2"
+
+inherit gnome
+
+SRC_URI[archive.md5sum] = "1599fded8a1797ea51fb010af4e6c45b"
+SRC_URI[archive.sha256sum] = "48f03470c6f527caa0e3b269d3afcff86ae0939a74f66ce030d4eed3bc3cbd9a"
+GNOME_COMPRESS_TYPE="bz2"
+
+FILES_${PN} += "${datadir}/dbus-1"
+RRECOMMENDS_${PN} = "gst-plugins-good-meta gst-plugins-base-meta"
+
+EXTRA_OECONF += "--disable-scrollkeeper"
+
+do_configure_prepend() {
+    sed -i -e "s: help : :g" ${S}/Makefile.am
+}
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/browser_command.patch b/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/browser_command.patch
new file mode 100644
index 0000000..75e45e0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/browser_command.patch
@@ -0,0 +1,17 @@
+Imported from Debian 0.1.8-3
+
+Upstream-Status: Pending
+
+diff --git a/src/Config.cxx b/src/Config.cxx
+index 28f37ab..bc58819 100644
+--- a/src/Config.cxx
++++ b/src/Config.cxx
+@@ -22,7 +22,7 @@
+ using namespace ePDFView;
+ 
+ // Constants
+-static const gchar *DEFAULT_EXTERNAL_BROWSER_COMMAND_LINE = "firefox %s";
++static const gchar *DEFAULT_EXTERNAL_BROWSER_COMMAND_LINE = "x-www-browser %s";
+ static const gchar *DEFAULT_OPEN_FILE_FOLDER = NULL;
+ static const gchar *DEFAULT_SAVE_FILE_FOLDER = NULL;
+ static const gboolean DEFAULT_SHOW_STATUSBAR = TRUE;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/fix-format.patch b/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/fix-format.patch
new file mode 100644
index 0000000..8ad5b97
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/fix-format.patch
@@ -0,0 +1,19 @@
+Imported from Debian 0.1.8-3
+
+Upstream-Status: Pending
+
+diff --git a/src/gtk/MainView.cxx b/src/gtk/MainView.cxx
+index b983bff..f87de28 100644
+--- a/src/gtk/MainView.cxx
++++ b/src/gtk/MainView.cxx
+@@ -634,8 +634,9 @@ MainView::showErrorMessage (const gchar *title, const gchar *body)
+             GTK_DIALOG_DESTROY_WITH_PARENT,
+             GTK_MESSAGE_ERROR,
+             GTK_BUTTONS_OK,
++            "%s",
+             title);
+-    gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG(errorDialog),
++    gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG(errorDialog), "%s",
+                                               body);
+     gtk_dialog_run (GTK_DIALOG (errorDialog));
+     gtk_widget_destroy (errorDialog);
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/glib-single-include.patch b/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/glib-single-include.patch
new file mode 100644
index 0000000..84a4913
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/glib-single-include.patch
@@ -0,0 +1,17 @@
+Imported from Debian 0.1.8-3
+
+Upstream-Status: Pending
+
+diff --git a/src/gtk/StockIcons.h b/src/gtk/StockIcons.h
+index c142a7a..58fcf2e 100644
+--- a/src/gtk/StockIcons.h
++++ b/src/gtk/StockIcons.h
+@@ -18,7 +18,7 @@
+ #if !defined (__STOCK_ICONS_H__)
+ #define __STOCK_ICONS_H__
+ 
+-#include <glib/gmacros.h>
++#include <glib.h>
+ 
+ G_BEGIN_DECLS
+ 
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/swap-colors.patch b/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/swap-colors.patch
new file mode 100644
index 0000000..282bfb1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview/swap-colors.patch
@@ -0,0 +1,43 @@
+Imported from Debian 0.1.8-3
+
+Upstream-Status: Pending
+
+Index: trunk/src/PDFDocument.cxx
+===================================================================
+--- trunk/src/PDFDocument.cxx	(revision 361)
++++ trunk/src/PDFDocument.cxx	(revision 367)
+@@ -21,4 +21,5 @@
+ #include <poppler.h>
+ #include <unistd.h>
++#include <algorithm>
+ #include "epdfview.h"
+ 
+@@ -33,4 +34,22 @@
+ static PageMode convertPageMode (gint pageMode);
+ static gchar *getAbsoluteFileName (const gchar *fileName);
++
++namespace
++{
++    void
++    convert_bgra_to_rgba (guint8 *data, int width, int height)
++    {
++        using std::swap;
++
++        for (int y = 0; y < height; y++)
++        {
++            for (int x = 0; x < width; x++)
++            {
++                swap(data[0], data[2]);
++                data += 4;
++            }
++        }
++    }
++}
+ 
+ ///
+@@ -651,4 +670,5 @@
+         cairo_destroy(context);
+         cairo_surface_destroy (surface);
++        convert_bgra_to_rgba(renderedPage->getData (), width, height);
+ #else // !HAVE_POPPLER_0_17_0
+         // Create the pixbuf from the data and render to it.
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview_0.1.8.bb b/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview_0.1.8.bb
new file mode 100644
index 0000000..d40f51d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-apps/epdfview/epdfview_0.1.8.bb
@@ -0,0 +1,25 @@
+SUMMARY = "A lightweight PDF viewer based on gtk and poppler"
+HOMEPAGE = "http://www.emma-soft.com/projects/epdfview/"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+SECTION = "x11/applications"
+DEPENDS = "gtk+ poppler"
+
+PR = "r3"
+
+EXTRA_OECONF += "--without-cups"
+
+inherit autotools gettext
+
+SRC_URI = "http://www.emma-soft.com/projects/${BPN}/chrome/site/releases/${BP}.tar.bz2 \
+           file://browser_command.patch \
+           file://fix-format.patch \
+           file://glib-single-include.patch \
+           file://swap-colors.patch \
+"
+SRC_URI[md5sum] = "e50285b01612169b2594fea375f53ae4"
+SRC_URI[sha256sum] = "948648ae7c9d7b3b408d738bd4f48d87375b1196cae1129d6b846a8de0f2f8f0"
+
+PNBLACKLIST[epdfview] ?= "BROKEN: images are not displayed anymore"
+# There will be no further development / upstream is gone [1]
+# [1] https://bugzilla.redhat.com/show_bug.cgi?id=906121
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-apps/gnome-mplayer/gmtk_1.0.5.bb b/import-layers/meta-openembedded/meta-gnome/recipes-apps/gnome-mplayer/gmtk_1.0.5.bb
new file mode 100644
index 0000000..d455f14
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-apps/gnome-mplayer/gmtk_1.0.5.bb
@@ -0,0 +1,16 @@
+SUMMARY = "GTK+ widget and function libraries for gnome-mplayer"
+HOMEPAGE = "http://code.google.com/p/gmtk"
+SECTION = "libs"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+DEPENDS = "gtk+ alsa-lib glib-2.0 virtual/libx11 intltool-native pulseaudio gtk+3"
+
+SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.gz"
+SRC_URI[md5sum] = "e06e9ca8d61d74910343bb3ef4348f7f"
+SRC_URI[sha256sum] = "a07130d62719e8c1244f8405dd97445798df5204fc0f3f2f2b669b125114b468"
+
+EXTRA_OECONF = "--disable-gconf --with-gio --with-alsa --enable-keystore"
+
+inherit gettext pkgconfig autotools gconf
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-apps/gnome-mplayer/gnome-mplayer_1.0.5.bb b/import-layers/meta-openembedded/meta-gnome/recipes-apps/gnome-mplayer/gnome-mplayer_1.0.5.bb
new file mode 100644
index 0000000..ef460f1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-apps/gnome-mplayer/gnome-mplayer_1.0.5.bb
@@ -0,0 +1,32 @@
+SUMMARY = "A GTK+ interface to MPlayer"
+HOMEPAGE = "http://code.google.com/p/gnome-mplayer"
+SECTION = "multimedia"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+PNBLACKLIST[gnome-mplayer] ?= "rdepends on blacklisted mplayer"
+PR = "r2"
+
+DEPENDS = "gmtk gtk+ alsa-lib libnotify glib-2.0 dbus-glib virtual/libx11 libxscrnsaver"
+
+SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.gz"
+SRC_URI[md5sum] = "1d3ab24c5501b5528e357931ca4dc6da"
+SRC_URI[sha256sum] = "ac3c179345baecb4ca5237782aa33e83253a87bf8b42ce6eb3a9207a340f61b2"
+
+EXTRA_OECONF = "--with-gio --with-alsa --with-dbus --with-libnotify"
+
+FILES_${PN} += "${datadir}/gnome-control-center/default-apps/${PN}.xml"
+PACKAGES =+ "${PN}-nautilus-extension"
+FILES_${PN}-nautilus-extension += "${libdir}/nautilus/extensions-2.0/*.so \
+                                   ${libdir}/nautilus/extensions-3.0/*.so"
+FILES_${PN}-dev += "${libdir}/nautilus/extensions-2.0/*.la \
+                    ${libdir}/nautilus/extensions-3.0/*.la"
+FILES_${PN}-staticdev += "${libdir}/nautilus/extensions-2.0/*.a \
+                          ${libdir}/nautilus/extensions-3.0/*.a"
+FILES_${PN}-dbg += "${libdir}/nautilus/extensions-2.0/.debug \
+                    ${libdir}/nautilus/extensions-3.0/.debug"
+
+inherit gettext pkgconfig mime gtk-icon-cache autotools
+
+RDEPENDS_${PN} = "mplayer"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-apps/pinpoint/pinpoint_git.bb b/import-layers/meta-openembedded/meta-gnome/recipes-apps/pinpoint/pinpoint_git.bb
new file mode 100644
index 0000000..a90e5cd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-apps/pinpoint/pinpoint_git.bb
@@ -0,0 +1,21 @@
+SUMMARY = "A simple presentation tool for hackers"
+DESCRIPTION = "Pinpoint is a simple presentation tool that hopes to avoid audience death \
+               by bullet point and instead encourage presentations containing beautiful \
+               images and small amounts of concise text in slides."
+SECTION = "x11/multimedia"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24 \
+                    file://pinpoint.c;beginline=6;endline=17;md5=201d438283607da393fae6aca085454c"
+
+DEPENDS = "gnome-common glib-2.0 gdk-pixbuf cogl-1.0 clutter-1.0 clutter-gst-3.0 librsvg"
+
+inherit autotools gettext pkgconfig
+
+SRC_URI = "git://git.gnome.org/pinpoint"
+
+SRCREV = "80a056c57e819d0b75035424638813b0670830e1"
+PV = "0.1.4+gitr${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+RRECOMMENDS_${PN} = "gdk-pixbuf-loader-jpeg gdk-pixbuf-loader-png"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.0.10.bb b/import-layers/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.0.10.bb
new file mode 100644
index 0000000..d3e08ca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.0.10.bb
@@ -0,0 +1,36 @@
+SUMMARY = "GTK+ applet for NetworkManager"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+DEPENDS = "gtk+3 libnotify libsecret networkmanager dbus-glib gconf libgnome-keyring iso-codes nss"
+
+inherit gnomebase gsettings gtk-icon-cache gobject-introspection
+
+GNOME_COMPRESS_TYPE = "xz"
+
+SRC_URI[archive.md5sum] = "86b17e1bf1a37c649874883b587c6db6"
+SRC_URI[archive.sha256sum] = "b045ac3eaa68ccbbefe91510ad67b4002a7e09d1e5ce1c4bf9a67619bd2cf0eb"
+
+PACKAGECONFIG[bluetooth] = "--with-bluetooth,--without-bluetooth,gnome-bluetooth,gnome-bluetooth"
+PACKAGECONFIG[modemmanager] = "--with-modem-manager-1,--without-modem-manager-1,modemmanager"
+PACKAGECONFIG ??= ""
+
+do_configure_append() {
+    # Sigh... --enable-compile-warnings=no doesn't actually turn off -Werror
+    for i in $(find ${B} -name "Makefile") ; do
+        sed -i -e s:-Werror::g $i
+    done
+}
+
+RDEPENDS_${PN} =+ "networkmanager"
+
+FILES_${PN} += " \
+    ${datadir}/appdata \
+    ${datadir}/nm-applet/ \
+    ${datadir}/libnm-gtk/wifi.ui \
+"
+
+FILES_${PN} += "${libdir}/gnome-bluetooth/plugins/*.so"
+FILES_${PN}-dev += "${libdir}/gnome-bluetooth/plugins/libnma.la"
+FILES_${PN}-staticdev += "${libdir}/gnome-bluetooth/plugins/libnma.a"
+FILES_${PN}-dbg += "${libdir}/gnome-bluetooth/plugins/.debug/"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-connectivity/obex/obexd/ssize_t_definition.patch b/import-layers/meta-openembedded/meta-gnome/recipes-connectivity/obex/obexd/ssize_t_definition.patch
new file mode 100644
index 0000000..2009dcd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-connectivity/obex/obexd/ssize_t_definition.patch
@@ -0,0 +1,32 @@
+include unistd.h to get ssize_t definitions
+
+Fixes errors like
+
+| In file included from plugins/mas.c:36:0:
+| ./src/obex.h:39:1: error: unknown type name 'ssize_t'
+| ./src/obex.h:49:1: error: unknown type name 'ssize_t'
+| ./src/obex.h:50:1: error: unknown type name 'ssize_t'
+| In file included from plugins/mas.c:38:0:
+| ./src/mimetype.h:36:2: error: expected specifier-qualifier-list before 'ssize_t'
+| In file included from plugins/mas.c:39:0:
+| plugins/filesystem.h:24:1: error: unknown type name 'ssize_t'
+| plugins/mas.c:550:1: error: unknown type name 'ssize_t'
+| plugins/mas.c:557:1: error: unknown type name 'ssize_t'
+| plugins/mas.c: In function 'any_read':
+| plugins/mas.c:560:2: error: unknown type name 'ssize_t'
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Index: obexd-0.44/plugins/mas.c
+===================================================================
+--- obexd-0.44.orig/plugins/mas.c	2012-01-11 14:53:53.000000000 -0800
++++ obexd-0.44/plugins/mas.c	2013-01-08 12:51:12.681882174 -0800
+@@ -29,6 +29,7 @@
+ #include <glib.h>
+ #include <fcntl.h>
+ #include <inttypes.h>
++#include <unistd.h>
+ 
+ #include "obexd.h"
+ #include "plugin.h"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-connectivity/obex/obexd_0.48.bb b/import-layers/meta-openembedded/meta-gnome/recipes-connectivity/obex/obexd_0.48.bb
new file mode 100644
index 0000000..6096bed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-connectivity/obex/obexd_0.48.bb
@@ -0,0 +1,23 @@
+SUMMARY = "OBEX Server and Client"
+# obexd was integrated into bluez5
+DEPENDS = "glib-2.0 dbus libical"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','bluez5','bluez5','bluez4',d)}"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
+
+SRC_URI = "http://www.kernel.org/pub/linux/bluetooth/obexd-${PV}.tar.gz \
+           file://ssize_t_definition.patch \
+"
+SRC_URI[md5sum] = "d03cf9bad2983243837f4f6d76ef14a6"
+SRC_URI[sha256sum] = "eaa9d8d9542700e6750918d72a3ce00f8cf3a2771d3e2516efd1be5a05f78582"
+
+inherit autotools-brokensep pkgconfig
+
+PACKAGES =+ "obex-client obex-plugins"
+
+FILES_${PN} += "${datadir}/dbus-1/services/${PN}.service"
+FILES_obex-client = "${libexecdir}/obex-client \
+                     ${datadir}/dbus-1/services/obex-client.service"
+# currently the plugins are empty
+FILES_obex-plugins = "${libdir}/obex/plugins"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-devtools/glade/glade3_%.bbappend b/import-layers/meta-openembedded/meta-gnome/recipes-devtools/glade/glade3_%.bbappend
new file mode 100644
index 0000000..3abacfb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-devtools/glade/glade3_%.bbappend
@@ -0,0 +1 @@
+PACKAGECONFIG ??= "gnome"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-extended/gparted/files/gparted_polkit b/import-layers/meta-openembedded/meta-gnome/recipes-extended/gparted/files/gparted_polkit
new file mode 100644
index 0000000..feabd0e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-extended/gparted/files/gparted_polkit
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# polkit installed?
+if [ $(which pkexec) ]; then
+	pkexec --disable-internal-agent "%sbindir%/gparted" "$@"
+else
+	%sbindir%/gparted "$@"
+fi
+
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-extended/gparted/files/org.yoctoproject.pkexec.run-gparted.policy b/import-layers/meta-openembedded/meta-gnome/recipes-extended/gparted/files/org.yoctoproject.pkexec.run-gparted.policy
new file mode 100644
index 0000000..77a9192
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-extended/gparted/files/org.yoctoproject.pkexec.run-gparted.policy
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policyconfig PUBLIC
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
+<policyconfig>
+
+  <action id="org.yoctoproject.pkexec.run-gparted">
+    <description>Run the GParted program</description>
+    <message>Authentication is required to run the GParted Partition Editor</message>
+    <icon_name>gparted</icon_name>
+    <defaults>
+      <allow_any>auth_admin</allow_any>
+      <allow_inactive>auth_admin</allow_inactive>
+      <allow_active>auth_admin</allow_active>
+    </defaults>
+    <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/gparted</annotate>
+    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
+  </action>
+
+</policyconfig>
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_0.24.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_0.24.0.bb
new file mode 100644
index 0000000..2f38977
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_0.24.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "A partition editor to graphically manage disk partitions "
+HOMEPAGE = "http://gparted.org/index.php"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit autotools pkgconfig gtk-icon-cache
+
+SRC_URI = " \
+    ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}/${BPN}-${PV}/${BPN}-${PV}.tar.bz2 \
+    file://org.yoctoproject.pkexec.run-gparted.policy \
+    file://gparted_polkit \
+"
+SRC_URI[md5sum] = "b8480274c68876acff5965d4346710e7"
+SRC_URI[sha256sum] = "02398ab33894a59b0bd8707e598c46d8bb56f1413cd54de48eed61e2920ecd60"
+
+DEPENDS = "glib-2.0 gtkmm parted gnome-doc-utils-native"
+
+do_install_append() {
+    # Add a script which checks if polkit is installed.
+    # If yes: a policy is requested from polkit / otherwise start as usual
+    install ${WORKDIR}/gparted_polkit ${D}${sbindir}
+    sed -i 's:%sbindir%:${sbindir}:g' ${D}${sbindir}/gparted_polkit
+    # relink menu entry to use our script
+    sed -i 's:${sbindir}/gparted:${sbindir}/gparted_polkit:g' ${D}${datadir}/applications/gparted.desktop
+
+    install -d ${D}${datadir}/polkit-1/actions
+    install ${WORKDIR}/org.yoctoproject.pkexec.run-gparted.policy ${D}${datadir}/polkit-1/actions/org.yoctoproject.pkexec.run-gparted.policy
+}
+
+EXTRA_OECONF = "--disable-scrollkeeper --disable-doc"
+
+FILES_${PN} += " \
+    ${datadir}/appdata \
+    ${datadir}/icons \
+    ${datadir}/polkit-1 \
+"
+
+RDEPENDS_${PN} = "dosfstools mtools e2fsprogs"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-extended/gtk-theme-torturer/gtk-theme-torturer_git.bb b/import-layers/meta-openembedded/meta-gnome/recipes-extended/gtk-theme-torturer/gtk-theme-torturer_git.bb
new file mode 100644
index 0000000..2621d15
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-extended/gtk-theme-torturer/gtk-theme-torturer_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "GTK+ Theme benchmark program"
+DEPENDS = "gtk+"
+HOMEPAGE = "http://wiki.laptop.org/go/GTK_for_OLPC"
+SECTION = "devel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://appwindow.c;endline=13;md5=8c09920de460c7ea1f64ee56986aabd9"
+
+SRCREV = "99962ae39bb5aadb31929b25c58e1a053f9c9545"
+PV = "0.0.0+git${SRCPV}"
+
+SRC_URI = "git://dev.laptop.org/projects/soc-gtk/"
+S = "${WORKDIR}/git/gtk-theme-torturer"
+
+CFLAGS += "-Wl,-rpath-link,${STAGING_LIBDIR}"
+
+inherit distro_features_check
+ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+
+do_install() {
+	install -d ${D}${bindir}
+	install -m 0755 torturer ${D}${bindir}
+}
+
+# http://errors.yoctoproject.org/Errors/Details/35132/
+PNBLACKLIST[gtk-theme-torturer] ?= "BROKEN: gmacros.h:182:53: error: size of array '_GStaticAssertCompileTimeAssertion_2' is negative"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/abiword/abiword/0001-plugins-aiksaurus-Makefile.am-remove-uncomplete-opti.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/abiword/abiword/0001-plugins-aiksaurus-Makefile.am-remove-uncomplete-opti.patch
new file mode 100644
index 0000000..0dff141
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/abiword/abiword/0001-plugins-aiksaurus-Makefile.am-remove-uncomplete-opti.patch
@@ -0,0 +1,39 @@
+From c646159ce817506131b58fdab1cdc1cd6364df7a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Sun, 7 Feb 2016 21:45:20 +0100
+Subject: [PATCH] plugins/aiksaurus/Makefile.am: remove uncomplete options
+ WITH_BUILTIN_AIKSAURUS_GTK
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+* with gtk2 we won't use it
+* it is missing in configure.ac causing
+
+| plugins/aiksaurus/Makefile.am:5: error: WITH_BUILTIN_AIKSAURUS_GTK does not appear in AM_CONDITIONAL
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ plugins/aiksaurus/Makefile.am | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/plugins/aiksaurus/Makefile.am b/plugins/aiksaurus/Makefile.am
+index d402c58..1034e2a 100644
+--- a/plugins/aiksaurus/Makefile.am
++++ b/plugins/aiksaurus/Makefile.am
+@@ -2,10 +2,6 @@ SUBDIRS =
+ 
+ if TOOLKIT_GTK
+ 
+-if WITH_BUILTIN_AIKSAURUS_GTK
+-SUBDIRS += aiksaurusgtk3
+-platform_lib = aiksaurusgtk3/libAiksaurusGtk3.la
+-endif
+ 
+ endif
+ 
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/abiword/abiword_3.0.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/abiword/abiword_3.0.1.bb
new file mode 100644
index 0000000..962a56c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/abiword/abiword_3.0.1.bb
@@ -0,0 +1,124 @@
+SUMMARY = "AbiWord is free word processing program similar to Microsoft(r) Word"
+HOMEPAGE = "http://www.abiword.org"
+SECTION = "x11/office"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ecd3ac329fca77e2d0e412bec38e1c20"
+DEPENDS     = "perl-native wv libglade libfribidi jpeg libpng \
+               librsvg libwmf-native gtkmathview asio gtk+ evolution-data-server \
+               ${@bb.utils.contains('BBFILE_COLLECTIONS', 'office-layer', 'redland rasqal', '', d)}"
+RDEPENDS_${PN}    = "glibc-gconv-ibm850 glibc-gconv-cp1252 \
+               glibc-gconv-iso8859-15 glibc-gconv-iso8859-1"
+RCONFLICTS_${PN} = "${PN}-embedded"
+
+SRC_URI = " \
+    http://www.abisource.com/downloads/${BPN}/${PV}/source/${BP}.tar.gz \
+    file://0001-plugins-aiksaurus-Makefile.am-remove-uncomplete-opti.patch \
+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=c5edcc3ccd864b19004d14e9c1c9a26a"
+
+SRC_URI[md5sum] = "f3f8052e7b4979a43b75775a381e6cb8"
+SRC_URI[sha256sum] = "e094f6fbf0afc5c5538b4894888e7c346f8ee8f49c9d24821dd696d0734865c6"
+
+#want 3.x from 3.x.y for the installation directory
+SHRT_VER = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}"
+
+inherit autotools-brokensep pkgconfig
+
+PACKAGECONFIG ??= " \
+    collab-backend-xmpp collab-backend-tcp \
+    ${@bb.utils.contains('BBFILE_COLLECTIONS', 'office-layer', 'libical', '', d)} \
+"
+PACKAGECONFIG[libical] = "--with-libical,--without-libical,libical raptor2"
+PACKAGECONFIG[spell] = "--enable-spell,--disable-spell,enchant"
+PACKAGECONFIG[collab-backend-xmpp] = "--enable-collab-backend-xmpp,--disable-collab-backend-xmpp,libgsf libxml2 loudmouth"
+PACKAGECONFIG[collab-backend-tcp] = "--enable-collab-backend-tcp,--disable-collab-backend-tcp,libgsf libxml2"
+PACKAGECONFIG[collab-backend-service] = "--enable-collab-backend-service,--disable-collab-backend-service,libgsf libxml2 libsoup-2.4 gnutls"
+PACKAGECONFIG[collab-backend-telepathy] = "--enable-collab-backend-telepathy,--disable-collab-backend-telepathy,libgsf libxml2 telepathy-glib telepathy-mission-control"
+PACKAGECONFIG[collab-backend-sugar] = "--enable-collab-backend-sugar,--disable-collab-backend-sugar,libgsf libxml2 dbus-glib"
+
+EXTRA_OECONF = " --disable-static  \
+                 --enable-plugins \
+                 --enable-clipart \
+                 --enable-templates \
+                 --without-gnomevfs \
+                 --with-gtk2 \
+                 --with-libwmf-config=${STAGING_DIR} \
+"
+
+do_compile() {
+    cd goffice-bits2
+    make goffice-paths.h
+    make libgoffice.la
+    cd ${B}
+    oe_runmake
+}
+
+PACKAGES += " ${PN}-clipart ${PN}-strings ${PN}-systemprofiles ${PN}-templates "
+
+FILES_${PN} += " \
+                ${libdir}/lib${PN}-*.so \
+                ${datadir}/mime-info \
+                ${datadir}/icons/* \
+                ${datadir}/${PN}-${SHRT_VER}/glade \
+                ${datadir}/${PN}-${SHRT_VER}/scripts \
+                ${datadir}/${PN}-${SHRT_VER}/system.profile-en \
+                ${datadir}/${PN}-${SHRT_VER}/system.profile-en_GB \
+                ${datadir}/${PN}-${SHRT_VER}/templates/normal.awt \
+                ${datadir}/${PN}-${SHRT_VER}/templates/normal.awt-en_GB \
+                ${datadir}/${PN}-${SHRT_VER}/templates/Employee-Directory.awt \
+                ${datadir}/${PN}-${SHRT_VER}/templates/Business-Report.awt \
+                ${datadir}/${PN}-${SHRT_VER}/templates/Fax-Coversheet.awt \
+                ${datadir}/${PN}-${SHRT_VER}/templates/Resume.awt \
+                ${datadir}/${PN}-${SHRT_VER}/templates/Two-Columns.awt \
+                ${datadir}/${PN}-${SHRT_VER}/templates/Memo.awt \
+                ${datadir}/${PN}-${SHRT_VER}/templates/Press-Release.awt \
+                ${datadir}/${PN}-${SHRT_VER}/certs \
+                ${datadir}/${PN}-${SHRT_VER}/ui \
+                ${datadir}/${PN}-${SHRT_VER}/xsl* \ 
+                ${datadir}/${PN}-${SHRT_VER}/mime-info \
+                ${datadir}/${PN}-${SHRT_VER}/Pr*.xml \
+"
+
+# don't steal /usr/lib/libabiword-3.0.so from ${PN}
+# in this case it's needed in ${PN}
+FILES_${PN}-dev = " \
+                  ${includedir} \
+                  ${libdir}/pkgconfig \
+                  ${libdir}/${PN}*.la \
+                  ${libdir}/lib${PN}*.la \
+                  ${libdir}/${PN}-${SHRT_VER}/plugins/*.la \
+"
+FILES_${PN}-dbg += "${libdir}/${PN}-${SHRT_VER}/plugins/.debug"
+FILES_${PN}-doc += "${datadir}/${PN}-*/readme*"
+
+FILES_${PN}-strings        += "${datadir}/${PN}-${SHRT_VER}/strings"
+FILES_${PN}-systemprofiles += "${datadir}/${PN}-${SHRT_VER}/system.profile*"
+FILES_${PN}-clipart        += "${datadir}/${PN}-${SHRT_VER}/clipart"
+FILES_${PN}-strings        += "${datadir}/${PN}-${SHRT_VER}/AbiWord/strings"
+FILES_${PN}-systemprofiles += "${datadir}/${PN}-${SHRT_VER}/AbiWord/system.profile*"
+FILES_${PN}-templates      += "${datadir}/${PN}-${SHRT_VER}/templates"
+
+PACKAGES_DYNAMIC += "^${PN}-meta.* ^${PN}-plugin-.*"
+
+python populate_packages_prepend () {
+    abiword_libdir    = d.expand('${libdir}/${PN}-${SHRT_VER}/plugins')
+    do_split_packages(d, abiword_libdir, '(.*)\.so$', 'abiword-plugin-%s', 'Abiword plugin for %s', extra_depends='')
+
+    metapkg = "abiword-meta"
+    d.setVar('ALLOW_EMPTY_' + metapkg, "1")
+    d.setVar('FILES_' + metapkg, "")
+    blacklist = [ 'abiword-plugins-dbg', 'abiword-plugins', 'abiword-plugins-doc', 'abiword-plugins-dev', 'abiword-plugins-locale' ]
+    metapkg_rdepends = []
+    packages = d.getVar('PACKAGES', 1).split()
+    for pkg in packages[1:]:
+        if not pkg in blacklist and not pkg in metapkg_rdepends and not pkg.count("-dev") and not pkg.count("-dbg") and not pkg.count("static") and not pkg.count("locale") and not pkg.count("abiword-doc"):
+            print "Modifying ", pkg
+            metapkg_rdepends.append(pkg)
+    d.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends))
+    d.setVar('DESCRIPTION_' + metapkg, 'abiword-plugin meta package')
+    packages.append(metapkg)
+    d.setVar('PACKAGES', ' '.join(packages))
+}
+
+FILES_${PN}-plugin-openxml += "${datadir}/${PN}-${SHRT_VER}/omml_xslt"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/files/gcc5.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/files/gcc5.patch
new file mode 100644
index 0000000..f7528ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/files/gcc5.patch
@@ -0,0 +1,12 @@
+Index: libbonoboui-2.24.5/tools/browser/Makefile.am
+===================================================================
+--- libbonoboui-2.24.5.orig/tools/browser/Makefile.am
++++ libbonoboui-2.24.5/tools/browser/Makefile.am
+@@ -2,7 +2,6 @@ INCLUDES =	\
+ 	-DBONOBO_BROWSER_DATADIR=\""$(datadir)"\"	\
+         -DBONOBO_SUPPORT_LOCALEDIR=\""$(datadir)/locale"\"        \
+ 	-I$(srcdir) -I$(top_srcdir) 			\
+-	-I$(top_srcdir)/bonobo-browser			\
+ 	$(BONOBOUI_CFLAGS)				\
+ 	$(WARN_CFLAGS)
+ 
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/files/gtk-doc.m4 b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/files/gtk-doc.m4
new file mode 100644
index 0000000..3ec4166
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/files/gtk-doc.m4
@@ -0,0 +1,53 @@
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+  AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+  AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+  dnl for overriding the documentation installation directory
+  AC_ARG_WITH(html-dir,
+    AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+    [with_html_dir='${datadir}/gtk-doc/html'])
+  HTML_DIR="$with_html_dir"
+  AC_SUBST(HTML_DIR)
+
+  dnl enable/disable documentation building
+  AC_ARG_ENABLE(gtk-doc,
+    AC_HELP_STRING([--enable-gtk-doc],
+                   [use gtk-doc to build documentation [default=no]]),,
+    enable_gtk_doc=no)
+
+  have_gtk_doc=no
+  if test -z "$PKG_CONFIG"; then
+    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+  fi
+  if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+    have_gtk_doc=yes
+  fi
+
+  dnl do we want to do a version check?
+ifelse([$1],[],,
+  [gtk_doc_min_version=$1
+  if test "$have_gtk_doc" = yes; then
+    AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
+    if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+      AC_MSG_RESULT(yes)
+    else
+      AC_MSG_RESULT(no)
+      have_gtk_doc=no
+    fi
+  fi
+])
+  if test x$enable_gtk_doc = xyes; then
+    if test "$have_gtk_doc" != yes; then
+      enable_gtk_doc=no
+    fi
+  fi
+
+  AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
+  AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
+])
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/files/gtk-doc.make b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/files/gtk-doc.make
new file mode 100644
index 0000000..354ffb7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/files/gtk-doc.make
@@ -0,0 +1,173 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+EXTRA_DIST = 				\
+	$(content_files)		\
+	$(HTML_IMAGES)			\
+	$(DOC_MAIN_SGML_FILE)		\
+	$(DOC_MODULE)-sections.txt	\
+	$(DOC_MODULE)-overrides.txt
+
+DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+	   $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES = 		 \
+	$(DOC_MODULE).args 	 \
+	$(DOC_MODULE).hierarchy  \
+	$(DOC_MODULE).interfaces \
+	$(DOC_MODULE).prerequisites \
+	$(DOC_MODULE).signals
+
+REPORT_FILES = \
+	$(DOC_MODULE)-undocumented.txt \
+	$(DOC_MODULE)-undeclared.txt \
+	$(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+all-local: html-build.stamp
+else
+all-local:
+endif
+
+docs: html-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+	@echo 'gtk-doc: Scanning header files'
+	@-chmod -R u+w $(srcdir)
+	cd $(srcdir) && \
+	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+	if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+	else \
+	    cd $(srcdir) ; \
+	    for i in $(SCANOBJ_FILES) ; do \
+               test -f $$i || touch $$i ; \
+	    done \
+	fi
+	touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+	@true
+
+#### templates ####
+
+tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+	@echo 'gtk-doc: Rebuilding template files'
+	@-chmod -R u+w $(srcdir)
+	cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+	touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+	@true
+
+tmpl/*.sgml:
+	@true
+
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+	@echo 'gtk-doc: Building XML'
+	@-chmod -R u+w $(srcdir)
+	cd $(srcdir) && \
+	gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
+	touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+	@true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+	@echo 'gtk-doc: Building HTML'
+	@-chmod -R u+w $(srcdir)
+	rm -rf $(srcdir)/html
+	mkdir $(srcdir)/html
+	cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+	test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+	@echo 'gtk-doc: Fixing cross-references'
+	cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+	touch html-build.stamp
+
+##############
+
+clean-local:
+	rm -f *~ *.bak
+	rm -rf .libs
+
+distclean-local:
+	cd $(srcdir) && \
+	  rm -rf xml $(REPORT_FILES) \
+	         $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+maintainer-clean-local: clean
+	cd $(srcdir) && rm -rf xml html
+
+install-data-local:
+	-installfiles=`echo $(srcdir)/html/*`; \
+	if test "$$installfiles" = '$(srcdir)/html/*'; \
+	then echo '-- Nothing to install' ; \
+	else \
+	  $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+	  for i in $$installfiles; do \
+	    echo '-- Installing '$$i ; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+	  done; \
+	  echo '-- Installing $(srcdir)/html/index.sgml' ; \
+	  $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+	  which gtkdoc-rebase >/dev/null && \
+	    gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) ; \
+	fi
+	
+
+uninstall-local:
+	rm -f $(DESTDIR)$(TARGET_DIR)/*
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+	@echo "*** gtk-doc must be installed and enabled in order to make dist"
+	@false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+	mkdir $(distdir)/tmpl
+	mkdir $(distdir)/xml
+	mkdir $(distdir)/html
+	-cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+	-cp $(srcdir)/xml/*.xml $(distdir)/xml
+	cp $(srcdir)/html/* $(distdir)/html
+	-cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+	-cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+	cd $(distdir) && rm -f $(DISTCLEANFILES)
+	-gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo.inc b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo.inc
new file mode 100644
index 0000000..e0f6168
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo.inc
@@ -0,0 +1,29 @@
+DESCRIPTION = "Bonobo CORBA interfaces library"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://COPYING.LIB;md5=7fbc338309ac38fefcd64b04bb903e34"
+SECTION = "x11/gnome/libs"
+DEPENDS = "glib-2.0 orbit2 intltool-native libxml2 dbus dbus-glib"
+
+inherit gnomebase gtk-doc lib_package
+
+ORBIT_IDL_SRC = "${STAGING_BINDIR_NATIVE}/orbit-idl-2"
+
+RDEPENDS_${PN}-bin = "${PN} perl"
+FILES_${PN} += "${libdir}/orbit-2.0/*.so ${libdir}/bonobo/monikers/*.so"
+FILES_${PN}-dbg += "${libdir}/bonobo/monikers/.debug \
+    ${libdir}/bonobo-2.0/samples/.debug ${libdir}/orbit-2.0/.debug"
+FILES_${PN}-dev += "${libdir}/orbit-2.0/*.la ${libdir}/bonobo/monikers/*.la ${libdir}/bonobo-2.0/samples"
+FILES_${PN}-staticdev += "${libdir}/orbit-2.0/*.a ${libdir}/bonobo/monikers/*.a"
+
+LEAD_SONAME = "libbonobo-2.so"
+
+PARALLEL_MAKE = ""
+
+do_compile() {
+    oe_runmake ORBIT_IDL="${ORBIT_IDL_SRC}"
+}
+
+do_install() {
+    oe_runmake ORBIT_IDL="${ORBIT_IDL_SRC}" DESTDIR="${D}" install
+}
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo/0001-Remove-use-of-G_DISABLE_DEPRECATED.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo/0001-Remove-use-of-G_DISABLE_DEPRECATED.patch
new file mode 100644
index 0000000..44cf1f9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo/0001-Remove-use-of-G_DISABLE_DEPRECATED.patch
@@ -0,0 +1,47 @@
+From fef13a371fc91f6d9b42518126c2a8b459fdf0e8 Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@verbum.org>
+Date: Thu, 2 May 2013 14:17:38 -0400
+Subject: [PATCH] Remove use of G_DISABLE_DEPRECATED
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This now trips up on GStaticRecMutex; I'm not going to bother to port,
+realistically no one is actively maintaining this code anymore.
+
+Upstream-Status: Applied
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ activation-server/Makefile.am |    1 -
+ configure.in                  |    2 +-
+ 2 files changed, 1 insertions(+), 2 deletions(-)
+
+diff --git a/activation-server/Makefile.am b/activation-server/Makefile.am
+index efb18a8..ffa90f6 100644
+--- a/activation-server/Makefile.am
++++ b/activation-server/Makefile.am
+@@ -17,7 +17,6 @@ INCLUDES=					\
+ 	$(SERVER_CFLAGS)			\
+ 	$(WARN_CFLAGS)				\
+ 	-DSERVER_CONFDIR=\"$(sysconfdir)\"	\
+-	-DG_DISABLE_DEPRECATED			\
+ 	-DG_LOG_DOMAIN=\"Bonobo-Activation-Server\" \
+ 	$(NULL)
+ 
+diff --git a/configure.in b/configure.in
+index 70a4e26..6be2bca 100644
+--- a/configure.in
++++ b/configure.in
+@@ -132,7 +132,7 @@ AC_SUBST(SERVER_LIBS)
+ AC_SUBST(SERVER_CFLAGS)
+ 
+ if test "$enable_maintainer_mode" = "yes"; then
+-	DISABLE_DEPRECATED_CFLAGS="-DG_DISABLE_DEPRECATED -DG_DISABLE_SINGLE_INCLUDES"
++	DISABLE_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES"
+ 	AC_SUBST(DISABLE_DEPRECATED_CFLAGS)
+ fi
+ 
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo/do-not-use-srcdir-variable.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo/do-not-use-srcdir-variable.patch
new file mode 100644
index 0000000..a20edda
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo/do-not-use-srcdir-variable.patch
@@ -0,0 +1,24 @@
+| tests/Makefile.am:55: error: using '$(srcdir)' in TESTS is currently broken: '$(srcdir)/te
+st-properties.sh'
+| tests/test-activation/Makefile.am:76: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS
+' (or '*_CPPFLAGS')
+| utils/Makefile.am:9: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS
+')
+| autoreconf: automake failed with exit status: 1
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Not Submitted
+
+Index: libbonobo-2.32.1/tests/Makefile.am
+===================================================================
+--- libbonobo-2.32.1.orig/tests/Makefile.am	2010-08-29 04:56:00.000000000 -0700
++++ libbonobo-2.32.1/tests/Makefile.am	2014-04-25 15:38:22.024744384 -0700
+@@ -55,7 +55,7 @@
+ 	MODELS_DIR="$(srcdir)/models"
+ 
+ TESTS = test-moniker$(EXEEXT) test-event-source$(EXEEXT) test-object$(EXEEXT) \
+-	test-stream-mem$(EXEEXT) $(srcdir)/test-properties.sh test-storage-mem$(EXEEXT) \
++	test-stream-mem$(EXEEXT) test-properties.sh test-storage-mem$(EXEEXT) \
+ 	test-main-loop$(EXEEXT)
+ 
+ # TESTS += test-generic-factory.sh
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo_2.32.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo_2.32.1.bb
new file mode 100644
index 0000000..fd4d812
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonobo_2.32.1.bb
@@ -0,0 +1,8 @@
+require libbonobo.inc
+
+SRC_URI += "file://0001-Remove-use-of-G_DISABLE_DEPRECATED.patch \
+            file://do-not-use-srcdir-variable.patch \
+           "
+SRC_URI[archive.md5sum] = "27fa902d4fdf6762ee010e7053aaf77b"
+SRC_URI[archive.sha256sum] = "9160d4f277646400d3bb6b4fa73636cc6d1a865a32b9d0760e1e9e6ee624976b"
+GNOME_COMPRESS_TYPE="bz2"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonoboui_2.24.5.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonoboui_2.24.5.bb
new file mode 100644
index 0000000..627f37e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/bonobo/libbonoboui_2.24.5.bb
@@ -0,0 +1,21 @@
+SECTION = "x11/gnome/libs"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://COPYING.LIB;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+inherit gnomebase pkgconfig gtk-doc
+
+SRC_URI += "file://gcc5.patch"
+
+SRC_URI[archive.md5sum] = "853be8e28aaa4ce48ba60be7d9046bf4"
+SRC_URI[archive.sha256sum] = "fab5f2ac6c842d949861c07cb520afe5bee3dce55805151ce9cd01be0ec46fcd"
+GNOME_COMPRESS_TYPE="bz2"
+
+DEPENDS = "libgnomecanvas libbonobo libgnome glib-2.0 gconf libxml2 libglade gnome-common intltool-native"
+
+FILES_${PN} += "${libdir}/libglade/2.0/*.so"
+FILES_${PN}-dev += "${libdir}/libglade/2.0/*.la ${datadir}/gnome-2.0/ui \
+                    ${libdir}/bonobo-2.0/samples"
+FILES_${PN}-staticdev += "${libdir}/libglade/2.0/*.a"
+FILES_${PN}-dbg += "${libdir}/bonobo-2.0/samples/.debug \
+                    ${libdir}/libglade/2.0/.debug"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.18.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.18.0.bb
new file mode 100644
index 0000000..2b6f15e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.18.0.bb
@@ -0,0 +1,29 @@
+SUMMARY = "configuation database system"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+SECTION = "x11/gnome"
+
+inherit gnomebase gsettings
+SRC_URI[archive.md5sum] = "69a12ed68893f2e1e81ac4e531bc1515"
+SRC_URI[archive.sha256sum] = "109b1bc6078690af1ed88cb144ef5c5aee7304769d8bdc82ed48c3696f10c955"
+GNOME_COMPRESS_TYPE = "xz"
+
+DEPENDS = "glib-2.0 gtk+3 libxml2"
+
+inherit vala gtk-doc
+
+EXTRA_OECONF += "--disable-man"
+
+PACKAGES =+ "dconf-editor"
+
+FILES_${PN} += " \
+	${datadir}/dbus-1 \
+	${libdir}/gio/modules/*.so \
+"
+FILES_dconf-editor = " \
+	${bindir}/dconf-editor \
+	${datadir}/icons \
+	${datadir}/bash-completion \
+"
+FILES_${PN}-dbg += "${libdir}/gio/modules/.debug/libdconfsettings.so"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/desktop-file-utils/desktop-file-utils_0.18.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/desktop-file-utils/desktop-file-utils_0.18.bb
new file mode 100644
index 0000000..57a8720
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/desktop-file-utils/desktop-file-utils_0.18.bb
@@ -0,0 +1,18 @@
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/desktop-file-utils"
+DESCRIPTION = "desktop-file-utils contains a few command line utilities for working with desktop entries:"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "glib-2.0"
+
+PR = "r1"
+
+SRC_URI = "http://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-${PV}.tar.bz2"
+SRC_URI[md5sum] = "d966b743eb394650f98d5dd56b9aece1"
+SRC_URI[sha256sum] = "d9449956c1c8caa75281a3322b2bb433db42610942f0ceeaa65ccd9636c04231"
+
+inherit autotools pkgconfig
+
+CACHED_CONFIGUREVARS += "ac_cv_prog_EMACS=no"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.33.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.33.bb
new file mode 100644
index 0000000..b00a449
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.33.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "Devilspie2 is a window matching utility, allowing the user to perform scripted actions on windows as they are created"
+HOMEPAGE = "http://www.gusnan.se/devilspie2"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=00aefaa50aad75c21367df66102d542c \
+                    file://GPL3.txt;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "gtk+ glib-2.0 libwnck lua virtual/libx11"
+
+SRC_URI = " \
+    http://www.gusnan.se/devilspie2/download/devilspie2_${PV}-src.tar.gz \
+    file://default.lua \
+    file://devilspie2.desktop \
+"
+SRC_URI[md5sum] = "99c88f702e134d2b2f2f8caad4b1ef03"
+SRC_URI[sha256sum] = "01a2ebcece14065c9a2e47decd81341e2a6f63e3bf43ff446103686718748356"
+
+inherit pkgconfig
+
+do_compile() {
+    export GTK2=1
+    oe_runmake CC="${CC}" CPPFLAGS="${CPPFLAGS}" LDFLAGS=" -ldl -lm ${LDFLAGS}"
+}
+
+do_install() {
+    oe_runmake DESTDIR="${D}" PREFIX="${prefix}" install
+    install -d ${D}/${sysconfdir}/devilspie2
+    install -m 644 ${WORKDIR}/default.lua ${D}/${sysconfdir}/devilspie2
+    install -d ${D}/${sysconfdir}/xdg/autostart
+    install -m 644 ${WORKDIR}/devilspie2.desktop ${D}/${sysconfdir}/xdg/autostart
+}
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/devilspie/files/default.lua b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/devilspie/files/default.lua
new file mode 100644
index 0000000..22a17fe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/devilspie/files/default.lua
@@ -0,0 +1,46 @@
+-- Copyright (c) 2012 Andreas Müller <schnitzeltony@googlemail.com>
+--
+-- this is an example 
+-- * undecorating all windows opened maximized
+-- * maximizing and undecorating all appplication's windows in apps_list
+-- for further information see
+-- http://www.gusnan.se/devilspie2/manual.php
+
+wnd_type = get_window_type()
+
+if(wnd_type == "WINDOW_TYPE_NORMAL") then
+
+	-- add only applications you want maximized+undecorated and
+	-- which don't keep maximized state
+	apps_list = 
+	{
+		"Terminal",
+		"ristretto",
+		"xarchiver",
+	}
+
+	app_name = get_application_name()
+
+	-- to have some informational output, start devilspie2 with --debug 
+	-- option and uncomment the following lines:
+
+	--debug_print ("Window Name: " .. get_window_name())
+	--debug_print ("Application name: " .. app_name)
+	--debug_print ("window-type: " .. wnd_type)
+
+	-- undecorate all windows starting maximized 
+	if (get_window_is_maximized()) then
+		undecorate_window()
+
+	-- maximize/undecorate all windows in apps_list
+	-- (unfortunately for some also their settings)
+	else
+		for line, str in ipairs(apps_list) do
+			if (string.find(app_name, str)) then
+				maximize()
+				undecorate_window()
+				break
+			end
+		end
+	end
+end
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/devilspie/files/devilspie2.desktop b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/devilspie/files/devilspie2.desktop
new file mode 100644
index 0000000..e34e881
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/devilspie/files/devilspie2.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Type=Application
+Name=Devilspie2
+Exec=devilspie2 -f /etc/devilspie2
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0001-contact-Replace-the-Novell-sample-contact-with-somet.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0001-contact-Replace-the-Novell-sample-contact-with-somet.patch
new file mode 100644
index 0000000..b77e7b9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0001-contact-Replace-the-Novell-sample-contact-with-somet.patch
@@ -0,0 +1,215 @@
+From 4df8bd8ae4258289663b27af1207027c7ee06340 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sun, 4 Aug 2013 09:13:25 +0200
+Subject: [PATCH 1/5] contact: Replace the Novell sample contact with something
+ more appropriate
+
+Upstream-Status: Inappropriate [configuration]
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ addressbook/backends/file/Makefile.am    |   1 +
+ addressbook/libedata-book/ximian-vcard.h | 179 ++++++++++++++++++-------------
+ 2 files changed, 103 insertions(+), 77 deletions(-)
+
+diff --git a/addressbook/backends/file/Makefile.am b/addressbook/backends/file/Makefile.am
+index 08cf58f..17e7149 100644
+--- a/addressbook/backends/file/Makefile.am
++++ b/addressbook/backends/file/Makefile.am
+@@ -2,6 +2,7 @@ ebook_backend_LTLIBRARIES = libebookbackendfile.la
+ 
+ libebookbackendfile_la_CPPFLAGS = \
+ 	$(AM_CPPFLAGS)					\
++	-DCREATE_DEFAULT_VCARD \
+ 	-DG_LOG_DOMAIN=\"libebookbackend\"		\
+ 	-I$(top_srcdir)					\
+ 	-I$(top_builddir)				\
+diff --git a/addressbook/libedata-book/ximian-vcard.h b/addressbook/libedata-book/ximian-vcard.h
+index 782d37b..5b0b250 100644
+--- a/addressbook/libedata-book/ximian-vcard.h
++++ b/addressbook/libedata-book/ximian-vcard.h
+@@ -1,80 +1,105 @@
+ #define XIMIAN_VCARD \
+ "BEGIN:VCARD\n" \
+-"X-EVOLUTION-FILE-AS:Novell Ximian Group\n" \
+-"ADR;TYPE=WORK:;Suite 500;8 Cambridge Center;Cambridge;MA;02142;USA\n" \
+-"LABEL;TYPE=WORK:8 Cambridge Center, Suite 500\\nCambridge\\, MA\\n02142\\nUSA\n" \
+-"TEL;WORK;VOICE:(617) 613-2000\n" \
+-"TEL;WORK;FAX:(617) 613-2001\n" \
+-"EMAIL;INTERNET:hello@ximian.com\n" \
+-"URL:http://www.ximian.com/\n" \
+-"ORG:Novell;Ximian Group\n" \
+-"PHOTO;ENCODING=b;TYPE=JPEG:/9j/4AAQSkZJRgABAQEARwBHAAD//gAXQ3JlYXRlZCB3aXRo\n" \
+-" IFRoZSBHSU1Q/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCM\n" \
+-" cHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMj\n" \
+-" IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAbgBkAwEiAAIRAQMRAf/EA\n" \
+-" BwAAAIDAQEBAQAAAAAAAAAAAAAHBQYIBAMBAv/EAEYQAAEDAwEFBgMEBgQPAAAAAAECAwQABREG\n" \
+-" BxIhMWETIkFRcYEUkaEIMkLBFSNSsbLRFmJydRgkMzY3Q0RGgpKTosLh8P/EABsBAQACAwEBAAA\n" \
+-" AAAAAAAAAAAAEBQIDBgEH/8QALREAAQMCAwYGAgMAAAAAAAAAAQACAwQREiFRBRMiMUFhMnGBkb\n" \
+-" HRBsEUofD/2gAMAwEAAhEDEQA/AH/RRRREVwXe9W2wwFzbpNZixkc1uqwPQeZ6CoHXevLfom1ds\n" \
+-" 9h6a6D8PGCsFZHMk+CR4n86yzdbrqfaZqYBSnp0hRPZMoG62ynoOSR1Pua8Lg0XPJegX5Jv6k+0\n" \
+-" bBjrWxp22LlkcBIlHs0HqEjiR64peT9umupqyWrhHhpP4WI6eHureNW7Tmw+DGaTI1FJVJdxksM\n" \
+-" qKG09CrmfbFMCHpCw2xATDs8JrH4gykq+Z4mqifbMUZsxpd/QUllK53M2SCb2xa+bXvf0gcV0Uw\n" \
+-" 0R/DVktH2hdUwlpFxjQrg1490tLPuOH0pvv2qE4jdchx1p8lNAj91Va87OtM3RCt+2Nx3Dyci/q\n" \
+-" yPYcD7g1EZ+RR4rSMI9b/S2mhdbhKsmkdtWmNTuNxnXVW2cvgGZRASo+SV8j74PSmOlQUMpORWP\n" \
+-" NU7MrjY0rlQFmdDTxOE4cQOo8R1Hyqe2Z7ZJ2m32bXfHnJVpJCUuqO8uP7+Kenh4eVXkFRFUMxx\n" \
+-" G4UOSN0Zs4LU1FeEOWxOityYzqHWXEhSFoOQoHkQa963rBFFFFERUdfr1E09Y5d1mr3Y8ZsrV5n\n" \
+-" yA6k4A6mpGkL9ojUym0W/TrLmAsGU+AeYBwgfPJ/4RREqrrcb1tJ1oUpBXLmObqUZ7rSByT0SkZ\n" \
+-" J8zk1pHQmiLXo+zpbabC3SAp55Q7zyvM9PIUudiGmURbS7fpCMvzFFton8LSTxx6qH0FM7VV9VY\n" \
+-" 9MzZ7aQt5tASw3+26ohKB/zEVSVFVvZzGMw02tqe/kpbI8LMR6/C/Xxq9QagfbbP+IW1QQ4Rycf\n" \
+-" xncHRAIJ/rEfsmu2a9Fgsl2XIZjtj8bqwgfM1+9L2VFksESAV9o6hG886ebjqjvLWepUSarutdn\n" \
+-" MXV+obRcZks/CwCQ5DKMpeBOTxzwzgA9KwfTtfxPOSB5GQUXc9pOjoC+zXe2HV5xiOC6PmkEfWp\n" \
+-" xe6tAWghSVDIIOQRXxekNOx4b0WPZYLLTram19mwlJKSMHjjNUzQd2dZM7SNxczcLOsttqVzdYz\n" \
+-" 3FewI9iKpK2mjMZdFe7ed9NfT9qZDI4OAd1Vkko50ndoui22kuXq2NBOO9JZSOH9sD9/z86c8gc\n" \
+-" DUJNQlaFJUkKSoYII4EVGoKp9PIHt9e6lyRNlZhcqlsJ2guQpydL3F4mO7kw1KP3Fcyj0PEjrnz\n" \
+-" rSAIIyOVYfvsJ3TGqlCKpTfYuJfjLHMDOR8jw9q2Foy+o1FpWBckY/XMpUoeRxxHsciu/jeJGB7\n" \
+-" eRXPvaWuLT0U/RRRWaxQeVY82x3BVw2oXbJyhgoZR0AQM/UmthK+6fSsWbRQW9pV73x/tZPtwNE\n" \
+-" Wj9Nw0WuwwIKQAGI6G/cAZ+tRW0lx5nTEW4Ntqdat9xjy5CEjJLSFZP5H2qaYdCkpUk5BGQa7Ap\n" \
+-" DrSm3EpWhYKVJUMgg8wRXz+kqyyTG7VXUsV22Clrfc48+CzMiPIejvIC23EHIUDXNe79b7HbXbh\n" \
+-" c5SI8ZvmtZ5nyA5k9BS7d0nfdMPuSdD3JtEZaitdom5Uznx3DzT6cPWkvq/V1611fGW5nZtBCgy\n" \
+-" zFbXhtCycE5JxknxPhXR07RUeB3D11H+9lAfwcxmrrqLbxcHpikWGAw1FScByUkqWvrgEBPpxqi\n" \
+-" ztdXWdqmNqIIjx7gykJUphJCXAM/eBJ5g4PQCmBZNiDKWEu364uF0jJYh4AT6qUDn2FVu6bPIkT\n" \
+-" aTB08xKeMOU2H99eCtKRvZGQMZ7hwceNZxVGzsbmMzIBv5dfNeOjnsCdUwbTtKsV8nJgIccZkqw\n" \
+-" lJcThDqvJJz8s4zUtLVzpc2vZZKt+qBIkyUKt0V0ONKSe+7g5SCPDr9Kv0tznXP1cNMyQfxnXBC\n" \
+-" tqUyuB3gslftPjJLkGWB3u82o/Ij86bf2e7iqRoxyIpWfhpC0JHQ4V/5GlVtJcBt0RPiXif+00w\n" \
+-" Ps5BQtNxP4TJP8Ka6rZZJpW37/Kq68ATlPeiiirBQ0HlWR9t9qVbtpEp/dwiY0h5J8Mgbp/h+ta\n" \
+-" 4pM7fdKLumn2rxGbKn4BKl4HEtn73ywD7GiL7o28JuulLbKCsqLKUL/tJ7p+oqyIe4c6RGyzU4g\n" \
+-" THLNJc3WpCt9gk8A54j3GPcdaZuoosy82V23QpaYpkEIdeIJKUeIAHieXPkTXA11DuassJsCefY\n" \
+-" /SvYZN5FiGZU9edRwLDAXJny2mRukoStQBWQOQHjSjg7PYE7ZmzcZb7cG6KK5CZD6txOCcJQvPg\n" \
+-" QAQfAn2q6RNOWi1D9J3R5dwlR2xmZPVv9mlI8ByTj59ar09Lm0jUIQl5Y0zAUMrQSPiXfHHpyz4\n" \
+-" D1qTRvMQIieQAQXOtllfIDre/X2WqVmI8Qz6D9q0bP9SO37SrSpW8ZUVXw7q+YcKeSgeRyMZ65q\n" \
+-" qammvWTalEv1yjOJtaWfh25CBvBOUkHPlxUeHlyq/MiPCitxorSGWG07qG0DASK45xZlx3GJDaH\n" \
+-" WljCkLGQR6VGinY2ofIG8Lri2gOi37hxYG3zC+uT2HY6ZDbyFMrAUlwK7pB5HNRcp7nxqpzdN3G\n" \
+-" CFQ7NObTa3nApcaSN/suOe4SDw6VK3O4swojsp9WGmxk9fIDrW4UzWkbt2K/v691vjec8YtZUTa\n" \
+-" BL+IuMaIjiWWytXQn/wBD608tgtrVC0W2+tOFSFqd9icD6AVnmFFl6n1AhoAmRPdwcfgR4n2H7q\n" \
+-" 2Ppi1N2exRojaQlKEBIHkAK7Gmi3MTWaLn6iTeSF+qmaKKK3rSiuedEanQ3I7qQpC0kEEZzXRRR\n" \
+-" FjnaRoSVoq/KcYQv9HOr3mHB/qzz3SenhVi0ftAbnNNwLo6G5iQEodUcJd9fJX760ZqLTkHUdsd\n" \
+-" hTWEOtuJwQoVl/XGyS7aakOPwGnJcDORujK0DqPH2qJV0cdUzC/0Oi3QTuhddqY84IuFukwnFFK\n" \
+-" JDSmlEcwFDGR86ISI1tgtQ4jYaYaTuoSP/udJS1azvFoAZLnbsp4dm/klPQHmKs0faVEWkfEw32\n" \
+-" 1f1CFj8q56XZNSwYG5t7fSt46yB5ucimM5L4c643pXWqU5tCteMpRKUfIIH86ipmvnnAUwoQSf2\n" \
+-" 3lZ+g/nWEey5yfCtrquBo8Su0+4sQ46pEp1LTSeZUfoPOlnfr67fZKQlK0QkK/VtficV5nrXOkX\n" \
+-" XUk9KQHp0gnghI7qPyAp1bOdkCmH2rneQHHxxQjHdb9OvWr2j2c2Didm74VZVVplGFuQXRsc2fO\n" \
+-" Qgb1cmsSXQN1JH+TT4D+dPEAAADkK848duMylppISkDGBXrVkoCKKKKIiiqrrbX9m0JARIua1re\n" \
+-" dJDMdoArcI58+AA8zVLsO26RqiS9Gsukpct5lHaKbTLaSrd8wFEZ9s0RN6vGRGZktlDqAoHzFKq\n" \
+-" JtomzrPOuzGjZvwEBRTJfckttpbUOae9jJ5cBk8R514Wrbo7e489+3aTlvtQGTIkqElsdm2Mkq4\n" \
+-" 4zyPKiKf1Hsj09flKdXEQh4/jR3VfMUvJ/2et1ZMOe8keSgFfyqz2LbfJ1M9IZs2kJsx2O0XnEN\n" \
+-" yEAhA4ZwcZ58hxr7ZdtkvUS5SbTo2fJMRsuPkPoSG0jzKsDPPhz4HyoipDewC47+FXFWOjYH51Y\n" \
+-" bTsAgtrSqc88/jwWrA+QxUlYtujupZ6oNo0nLlSUtqdKEyW04SMZOVYHiKjP8ACUt5/wB3pX/XT\n" \
+-" /KiJnWLQ1nsTSURorad39lIFWZKUoThIAHSlNqDbLP0siKu96MnQ0ygSyVyGzvYxnlnB4jga87F\n" \
+-" ttlamXJbs2j50xcZvtXUtyEZCfPB5+gyaIm9RSetm3J68RbhJgaSmPM25vtZaviW09knjxIOM8j\n" \
+-" y8q7LHtzstwv/AOhrlBftkkudkFOLS43v5xgqSeHHx5daImrRX5QtK0hSTkGiiLMP2ho8wa1iSn\n" \
+-" QoxVRQ20fAKClFQ9eIqq7LLJe7vreG7ZZCoZhqD8iZjustjnnwORkY8c+Wa1ZqbStt1PBMa4MId\n" \
+-" Rz7wzg+dL8bEbA1vpa7RtK+CkpdWAfXjRFB7UpCNe6Kdm6NnJft1qluKuUJlvdKznPbYH3hzPXJ\n" \
+-" PMGqZsk/zc2gf3G5/Cumc3sRsTO92Rcb3uB3XVjP1r4jYfYGwoN76QsYUEurGR5HjREudhUt2BP\n" \
+-" 1TMYID0eyuuoJGRvJII+oq96I2iwtVz7rb7ZZWbalyzyJ9wKUjLsrKEkjH4cE8+Jz049bew+wNb\n" \
+-" 3Z76N4YO66sZHlzob2H2Bkktb6CRglLqxkeXOiJZbAv9IMj+7X/wB6ag9lGnEaj17CRJA+BhZmy\n" \
+-" lK+6EI44PQq3R6E06W9h9gZVvNb6FYxlLqwcfOhvYhYWt7s99G8MK3XVjI68aIo7UxgbR9IajhQ\n" \
+-" 7/Du9yiSF3S3tMNrStlkAAt94DPDI4eJFUvYfNetqNYz4xAfjWZx5skZAUnJHD1FMVrYhYWVbzW\n" \
+-" +2ojGUOrBx86EbD7A0FBvfRvDCt11YyPI8aIo23zdP6i2e621TaUJiXCfa1IucFPJt5KVnfHRWS\n" \
+-" euPPNZ2YadfkNsspUp1aglCU8yTyrTSNh9gbCgjfSFjCgl1YyPI8al9PbItP2WamUywkuJ5KOVE\n" \
+-" emeVEVw02ZH9H4YkEqdDYCifE4oqXbaS02lCRhIGBRRF//Z\n" \
++"VERSION:3.0\n" \
++"FN:Yocto Project\n" \
++"URL:http://www.yoctoproject.org/\n" \
++"EMAIL:yocto@yoctoproject.org\n" \
++"TEL;TYPE=VOICE:+00 000 000 0000\n" \
++"ADR;TYPE=HOME:;1720 Beaver Creek;Dam #4;Planet Earth\n" \
++"LABEL:1720 Beaver Creek\\nDam #4\\nPlanet Earth\n" \
++"PHOTO;ENCODING=b:iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pV\n" \
++" UAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAFE9JREFUeJztnXmQHNV9xz\n" \
++" +ve86dvU/tanUiCVwRQuaIhSEOMsIiEsbGRtiVGFy4EsdU4bINOICPUtkQHOxgYoiDTVJxCBiwM\n" \
++" CBxBjAlsIUlEQzISAhZN5JW2l3tvbNz9JU/fu/N7CwgVquVmEr194/t7enu97p73vf9zvcbCBEi\n" \
++" RIgQIUKECDH5UB/0DYwXwZv/Mh8AK3ISgBs4AwAR29oCwNwFfQBKLXY/mDucHFgf9A2EKEXZMiT\n" \
++" YdtdUADff+QCA5Q/9BQB+Xk7w9a27vpxP8g0AO9J4IYA64/qOE3m/k4WQIWWGsmJI/q0fn2P+t5\n" \
++" zerwFYDK0ACAgCAMsXRuCLqPDTQ7LvBgogSDY8DODWLvguQOLkv9t6Qm5+khAypMwQfiFlhkmZs\n" \
++" vY/9rOzAXK59EkAEc87BDD9c99cC6CU8t7tumD/PQ0A/uCOHwF4Vm6pOWbnc20AlvIDOTnQF8nU\n" \
++" hJOT3XQ/AK7jyJRWUSXHIw1vAQQV078BEJ1/7f9MwqMed4QMKTNMiCF/uP/ONgC7Y/ODAF52YCE\n" \
++" ArhcBwMIDiMZiLkAsVX8fwClfvfOrALldd5wGYGe6HgRQQfpkABXxi/fjCKkCX6ihtJ6rtFAP8i\n" \
++" Ny3nAfAJ4dk/OiCQBsZSn5vLoXIJ+aezVAxfxvPDCRZz5RCBlSZpgQQzbe+qXzAYLcwAMAgRM0A\n" \
++" UTQ072Sf6JKmo8HWQVgNSc7AU6+YG4AELiZKXITIic8gsL92J5uyzXixzBGbx1tIA73yIMkK2Vr\n" \
++" x/R5cg9KaXU40gCAH2//lOkjsm3WkwB97KoEyOHUA2TTw9J5U0MWwNm5rw9g3tfuzB3lqzpqhAw\n" \
++" pM0QmclE0knIBvOywD+ApB4BAG2u2EmoEnnw+xEAAsODD7S0AuGLMKZRRnYRBRpMCfMMMLTNUIP\n" \
++" vKc0u2WPoaSz+KbeuPPQXge8I+5XeLDAqsX5k+OnK7bwJwe50bAHLZfBWAo9v2DnfK3dnxtQCv3\n" \
++" vH1WwB2TPnoWoDLLrvsXbXHY0HIkDLDhBhizzx1J4C7tXcYQAVOC4CtRYAVyKh2/DQA886ZoQAS\n" \
++" VVGgaEqosTJsFEOUN8aJyNjB6JdeY+mxFZQ2qSwtQzw50c4eSJhjUW/wHwF275O+UpX1Its0w72\n" \
++" 88eSPLAZwoiMfAWj1131aH3iOSUbIkDLDhBhy2me/vB9gw21XPQQQH8zcAOArmdADJ6MApp5SB0\n" \
++" D1lKqS6wtjODBGuLYt/FGxJSM7fDNmglF/QRkfo2aORel5Zlvsy9NMKfbR0CLXJPZIG44n51hKP\n" \
++" ncLfcp+3sknALxMunbsO5kshAwpM0yIIQaLrr3rRoD1t15ZB5AY6vx7gGhKRlxNe61oOLYto1Nf\n" \
++" F2hmKE/LBTNqNVNglP3hyvyuCtfIvm/cYyqpt7Y+T2t8Y5lSuqsvEf60z4gD8MarYvVX1WibRZ/\n" \
++" saHnlqOQWgFjDzFfe+60cG0KGlBkmNUC1/t9XngfQ1nTg1wDTZ9jizS3M23p4+qZz3X1ExoWy7E\n" \
++" JbgXHyau1JG/0of0xbuo3A1Z97pZZ9gX3umC2gHQRkhrIAvLxeLHTbEoYYZntWbBjAr5t6HcDHr\n" \
++" 73950d4DceEkCFlhmOSIWOx6LwqmYyzNdUAXrav5LiypTsVE39TwYYwE7w3yg7Rmo7RtgjMyDfX\n" \
++" 2HrP7BsmGc1IU8pY8rbpsiinDItiCfEU19aLzdLZKYxJVNbtAnAq638CcMFxZIZByJAyw6TIkGD\n" \
++" vc7MBvM5nNgCoYKAJINDD1dIeVxPLANGEKPirHNPSqEaNvDHMUKVbY5nbhimaIfq4r4IxVwW6uV\n" \
++" EWvyf3Y2lZ0tNrdQFs3hb7KYCTaH4U4IJrb3/j/d7BZCFkSJlhUmRILuckAGKD2SYAnAwAFmL5Z\n" \
++" jKZACCTFgs+OyzHs3kJLzg62S2fLxLW08ywtWyIxuRYLCG3XBGXbVV1BQCpSn2tlhWWHdVPKGIt\n" \
++" MHZKiSEibfiabTXNElP5y2mNjwGoj9xywphhEDKkzDApDEnMW/YmQG7DDyS2PsBXAF7dsPNigDe\n" \
++" 27msDCIzfyZZRa+mRGTExjFESzVKxkj6M1Vzwe3nCMiffr9uQ4w3V0nZzszTWWC99NDbK6E9WJg\n" \
++" ttqmhC7I7KavFhxWqbAdxI5ZSjfQeThZAhZYbwCykzTKphGF904yb971UAv1l5hQPQ3uZdLZ1Jt\n" \
++" KngXNT+EEuZgFVxfPgFhdUIYatkz1zrG/VYq7M5TxSFvQdlf9N22R/JSDi2rqo4L86cJprAwvl2\n" \
++" L0BFW634VWKRD2yNSciQMsOkMsRg67rVVQDD69acBoCq1u73Uoeg75e6Q7xRrhO/4IfUzsPRHg+\n" \
++" KLDNX+JackNTqbjwqR6qrdLBJG6X5UQGq/f362r2V1wF8tL71fwFinTM+sIz5kCFlhuPCkNxbW2\n" \
++" YAJOxYG0CvttYefWUnAGfOqAfg9FbZ5rXj0LOL87uvKeIaEVHIudYukDHnKW34YRtnozxajzZCa\n" \
++" 5Ki7laM0qar4non0ZoBiC/95uaJPO9kImRImeG4MCTiZWYDxJORaQDPbpTlfvslK4hUp4zas2bK\n" \
++" fB9xSmULFI1EIzsK3nhvjLNRlTLH4M2DAwA8sWk/AOd9qA2AD0+rL56kU4yi5C/Wnzw47oc8Tgg\n" \
++" ZUmY4LgyxLW8ugB94cYADg7mSlFETNIpoGng6dBtRxfHhaoejju7iGQYYd3spIQpamQlodQ8KC1\n" \
++" 0tW/b3yf6HWopaVkVSZIibHT7l6J/y+CBkSJlhUhnyp6eeigPk9v52FkBUB6C0x5z+rIze2Y2SO\n" \
++" KfGWOyj00BNwoMJapnAk9L6lTVG7JgosGFKbUq0Ks+X5QoZR6/a9YoGja95FnhOJUAQBDF9P/mj\n" \
++" ffbJQsiQMsOkMiTa2akA0k5OfOCOhGaXzW8HoCct+6e31wCQ0dpVXssLNdr/ruVJoBliZIrJB1K\n" \
++" 2DtkWBrz8Y3Sw2U3Cwnk66NSiA1mxaHEMKl8CaK4nnW1/+j6TiB0yJIRgUhmyZ+ZMF6Byy5ZuKO\n" \
++" akTauS+Xx6jWzNqDbmhxfIuOjuOlxoK1mRAqD5zLMBmDp/AQAdL64FYHDPdgBc7ZuKxoWURitLa\n" \
++" at/+fxpQHHkGc8ygGuqQyjlAsxbdvngBB6bTZs2tANYFfE5APPnLPyDOaaUGjqatkKGlBkmlSGL\n" \
++" F0utqg0/ve4FAKWiVwPkA6cKIHB8naqpSuIiRvNpbGgotGVkQVWrRFNrpk4H4GC7bL0dkn8QT1S\n" \
++" U3oRxZWkZFLeMbFHvcAd4nvwfj9dMaKn0s8/ffzHAa5s2rgF4fNUaABoaG3abc35868rLAK65/n\n" \
++" vjStAOGVJmOC7VgFYGIhTO/+dr7gDIDXd+CSDieUmASCFzuvQu7FFtFOZ8bU3bKdHMRgYlPTWql\n" \
++" 5sZJcvEO4yZkdNZEb5ehOPp4zkVKdj4qqLuBYDPfu/ujx/N8z3x9H2fkrbdVQB73z4YA3ju8acD\n" \
++" gP7unsJ7bZnSlgGYffKsCwFuve3u3x6p7ZAhZYYTUi9rzc1f/i5A98G3vw9Qoxf3VyVFhMULDqv\n" \
++" Rlrp8ZhVSQsdEG8fE1M3WK0QG5eysF+QAPMt+HcCJVj5i+vibW/7zNnjv4jjveI41v1gE4OFLTS\n" \
++" 7sNgBli99goH9QATy3+qkCC/ds26kAmqc0DwEsXXrRJQBXX3f98+/WR8iQMsNx8fYaGN/QvXddd\n" \
++" T7Azr1iAO/auQcA1xGpYevRPm9mMYktEZNYSTIqW9ss3DFMcOUaNyeDeyAt+4Pa+LF04kheW//1\n" \
++" 7W3bASJnT/9X08d4mfHLX981FyDvuqKNRWyd+Ie+F6F2MiUa3+KLLixQ/Yn06gBgsKurCuB3v3v\n" \
++" uh/rQGe/WV8iQMkP4hZQZjotQf+WXP28EcBP+zwCG4sGnAQb6hy2A7l1bFcCiOgmvbu8Wj8Xat4\n" \
++" vFdmrrqgFIJHX1B1MVVmc9ZLK6jsqQTINbtsv+nsOy/cxZcn0kIVpBqqVOAbTHpz1m+vjKd/6tU\n" \
++" Bno3fDoow9MA3C9YUkAjFp1UHT1eDrDIghMtQh94SgnaW5EVmP96r/ulRXJmXwHwA/vuvN0gIUL\n" \
++" z+ka3WfIkDLDMTHk9f++NgUQT0eaAEac3JUAvV2Hvg6wr3egGmD3iIzqs5b/FQCREUnrPCsiAy+\n" \
++" bl1F0y7qBQttVzbLUpLJCC/WoKACONghHRoQJ+3d1A9CxR5gyNCLH/3yOFB46c34rANs6DwYAFf\n" \
++" 3FRSgNze1vAcSTkRsAalMtUrZ8SnsGwG+s3ghgRW0p6myq22nXj6etUM8kXhgaB6MWoUTFy9nXI\n" \
++" UR45uHHfgTw9Avr/+GdbzRkSNlhQmrvlv/49gyA6NDw7QD5bN8lAP6weJrNiLeaWgKAzte3K4C8\n" \
++" /v47B2UARdNSN3HJKcKCl94qEna7Tua0IibZQa6Ja89HhTYYG4fkeI1OfqhNySO98baEbrd3Sr5\n" \
++" odVRmgznVscLojXXvPwUgn0isBhipEpbVTm0GQNutONoLalnWEWeUIChlEICn1fDmltbV8N7MMA\n" \
++" gZUmYYN0N2r/1Foc5Udstr3wIg138JQKATCNxAhrEKZCQ5VlIBXLrkPACaDu0DYOfmHQAMW5I5F\n" \
++" 3xY5vmVFxb7+/4a0bjmatnRpjPmDudlgL+o5VKVzmqoTsjxXp1CGtGGpakE0ZeTezw0VJQhlQlp\n" \
++" O6mrGFHfqAA2bJT40vwzTpf7ntqqQ7263uOYFKRgTOZ3aWK49RiAW2t9gXEgZEiZYdwM6d38ZiE\n" \
++" HM54fOgPAz4umk8nLMM27kpvpOTJENq2XmExSj5zzW8S1UN8j2lTPdAm7Zl4TO2T+1mII958qpI\n" \
++" 2WKaJtDc+eAUDt1l0A/G1C2KUCGfmNmkkHtUP+qRHZf13HiWt0FQl3OF3ow6/XNX4rErJaWAe79\n" \
++" u4Q+2jX9r0AXHL5ZdJ3kwTQXLO+PijZoHSuUhCo9aYP2/a/CnDF0iuKHR8BIUPKDOPXspLFUGkm\n" \
++" I3Oun5XRmdajMK0ZM5AVbaVrUOTAqoyMqFPrJCUn1yo2wut/Et28tUOOVwcFMUWtkS/aYu8+YxE\n" \
++" ATXtEDjVrmRBTIitSMWHEbJ1gl9d1fdf3y3k9SNtWtugNmK3lj601obgenhVVcp993aKprb53FQ\n" \
++" CXXiliIFktCRieXmFkGdPcsg4CpJI115s+VnxyxdscBUKGlBnGzZDTTzqv4HN5qXfViwBZV50JM\n" \
++" JyRytWDOWHI7l5JbN6ake97d81skTE1LQrg2ks/BsCT9z0NwOY+sbaXnrug0N+da34PwEU7JGQ7\n" \
++" c794vndoP9Kd/RLSnabXoX9xkSTjPfuaeAEe7hdZslWZer5yXrKY7MD2nhEFUF8hsizWI9b8SXO\n" \
++" mK4BX+6RvNysOtGdWP6kAPnHJ8gAgkUpqH5bqArDtxOcBVnxyxe/e80W+D0KGlBnGzRC1uPhzdC\n" \
++" /+9Ns/ARgeGJgG0DGUXQLQPTB8AGBzt5SuPhhtOB3Ar2tIAGw4JMx5/hWxQ7py0v36PgnpLpozt\n" \
++" 9Df7mYZ6Vcf0rlrGZMYYcK+woAfzJH9tC+y5O4D0lZXXIJdkZSMfs/8RFIuU7BDtg1k0gDVKacX\n" \
++" gM7N0wDmnHlmL8CfLZwfA/jjy5sqAboPCINeenatAjh36ZJBgGgscTnAFy79whETGMaDkCFlhmP\n" \
++" y9r696rYkwM+fWf95gG279n8OoLM/PRWgI8fJAJ2pKVGAkXpJeivQUntLnRHRqM6e11Zoe5tekt\n" \
++" aTLy0uYIziuOQusETcTgxpL/Dve6T1IKK3+gnjfQcBaBop2jqtFXZeN5oGUL5bBzB9SuPNABd/8\n" \
++" Yu/AXjt5ZcfAXjzj3+sB1BW0AfwieUXXQnwtWu+s2Ycr2tcCBlSZjgmhtz07etOAtj86saNAE5m\n" \
++" pBYgl3ctAE/n6gxlZUnbznxKAfQ0zAIgSIhtYGr0Wn7RSRQoPefrytaB+XUEnSJqKlmbKkAmLcj\n" \
++" Tn1s6CTvZK3bL9LyIicZUtNCJrbMrzHK5vF4EWlFVGQC0z5p1GsA55yw+AOA72cUA6ezwawDXXH\n" \
++" PjrqN4XeNCyJAywzEx5IpPffwJAC+fWwaQ1dZzoNtNZyUuMqLj33kdD+90RfM5VK1/TiQqlq/yi\n" \
++" pE2W7mOfOZmAGxNEU9XCAgsKwngWzrrzpKN0nHu6NBBBTAzIzZOoy6YGo0Ux2ChrKPeutpGsXW9\n" \
++" 3qbW1ucBVj365JKjfzsTQ8iQMsOEIobf+PJfnwrQsXf3qQC5jKhCvv6Vm5z2ablBacVqSy8NaLI\n" \
++" kUhjpk/m9XzPEihfrXiz72MduBVix5NyHAJYtW9YF8MILLzQB/OSBxy8C2LZ330UAnQNDCwGC9E\n" \
++" AKoCUv2lS9DvtFDDPUaIYYQhbctvIcOu6RT4+ce3Rv5tgRMqTMEH4hZYYJTVmeE9QA+L5UqjSra\n" \
++" ANLV/XxSjPSi9+7WW0rbo5qW85PepL1oLLFckCnpOxfASxfvnzLmO479XYzwLp16x4C+Ob1Nz4C\n" \
++" MJTvWQCQiprqQDpLXt+Tskb9JIapYl5YA19aN8Vx8/H3exeTjZAhZYYJMSTrcxgg70uBw+IaDTn\n" \
++" ujd2aWldarTSV5Fy9TtwPxECrb6j9jenj+ptuehPghptvPuK9ZLq6+gHswBUdW7PQ9WSs2VrVDm\n" \
++" zzG0klY1BSQY2DZUxloVi8YkKrco8FIUPKDBNiyJeuurwD4I5bbt8IMJLubgfIZXMWjKqXaKrCm\n" \
++" a1ZuK5LNtTU1h8GaG+fthLg/oceusv0oVQxkHQkXPCZz/QA3HPPPSsAnn7y8SsBeroOnwtg4y8A\n" \
++" yOez8qORjluQC+YHJH1fll1F7UgOIJlK7gOYPmvubXLmpP863nsiZEiZYVKWI6xc+a2FAHv/tP1\n" \
++" cgM7OzmqAwLdaARzP6QCobajrA5gza+5LALfefuJ+BsKgt7d3xtjP6urqxP2u1OF3XnFiETIkRI\n" \
++" gQIUKE+H+C/wMGX8Ias1s6CQAAAABJRU5ErkJggg==\n" \
+ "END:VCARD"
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0002-Fix-for-automake-1.12.x.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0002-Fix-for-automake-1.12.x.patch
new file mode 100644
index 0000000..5f222ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0002-Fix-for-automake-1.12.x.patch
@@ -0,0 +1,32 @@
+From f46423c9e4b8b19eda27b307456a717de79b75f3 Mon Sep 17 00:00:00 2001
+From: Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: Sun, 4 Aug 2013 09:15:43 +0200
+Subject: [PATCH 2/5] Fix for automake-1.12.x
+
+Fixed these kinds if warning-errors
+
+warning: 'libebookbackendfile.la': linking libtool libraries using a non-POSIX archiver requires 'AM_PROG_AR' in 'configure.ac'
+
+Upstream-Status: Pending
+
+Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ configure.ac | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/configure.ac b/configure.ac
+index 9bd97db..49d7506 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -31,6 +31,7 @@ AC_LANG(C)
+ 
+ dnl Automake 1.11 - Silent Build Rules
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
++m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) # required by automake 1.12
+ 
+ dnl Required Package Versions
+ m4_define([glib_minimum_version], [2.28])
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0003-Disable-Werror-for-automake.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0003-Disable-Werror-for-automake.patch
new file mode 100644
index 0000000..a182d4d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0003-Disable-Werror-for-automake.patch
@@ -0,0 +1,97 @@
+From 37b227cff78fd4c652651662dafd71537280824e Mon Sep 17 00:00:00 2001
+From: Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: Sun, 4 Aug 2013 09:16:59 +0200
+Subject: [PATCH 3/5] Disable Werror for automake
+
+Avoid these warning-errors
+
+automake: warnings are treated as errors
+Makefile.am:15: warning: '%'-style pattern rules are a GNU make extension
+Makefile.am:21: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+addressbook/backends/file/Makefile.am: installing './depcomp'
+addressbook/libebook/Makefile.am:55: warning: '%'-style pattern rules are a GNU make extension
+addressbook/libebook/Makefile.am:65: warning: '%'-style pattern rules are a GNU make extension
+addressbook/libebook/Makefile.am:66: warning: subst -,_,$*: non-POSIX variable name
+addressbook/libebook/Makefile.am:66: (probably a GNU make extension)
+addressbook/libebook/Makefile.am:72: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+addressbook/libedata-book/Makefile.am:2: warning: '%'-style pattern rules are a GNU make extension
+addressbook/libedata-book/Makefile.am:3: warning: subst -,_,$*: non-POSIX variable name
+addressbook/libedata-book/Makefile.am:3: (probably a GNU make extension)
+glib-gen.mak:9: warning: '%'-style pattern rules are a GNU make extension
+addressbook/libedata-book/Makefile.am:5:   'glib-gen.mak' included from here
+glib-gen.mak:13: warning: '%'-style pattern rules are a GNU make extension
+addressbook/libedata-book/Makefile.am:5:   'glib-gen.mak' included from here
+glib-gen.mak:18: warning: '%'-style pattern rules are a GNU make extension
+addressbook/libedata-book/Makefile.am:5:   'glib-gen.mak' included from here
+glib-gen.mak:26: warning: '%'-style pattern rules are a GNU make extension
+addressbook/libedata-book/Makefile.am:5:   'glib-gen.mak' included from here
+glib-gen.mak:38: warning: '%'-style pattern rules are a GNU make extension
+addressbook/libedata-book/Makefile.am:5:   'glib-gen.mak' included from here
+glib-gen.mak:41: warning: '%'-style pattern rules are a GNU make extension
+addressbook/libedata-book/Makefile.am:5:   'glib-gen.mak' included from here
+addressbook/libedata-book/Makefile.am:86: warning: '%'-style pattern rules are a GNU make extension
+addressbook/libedata-book/Makefile.am:101: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+calendar/backends/weather/Makefile.am:44: warning: '%'-style pattern rules are a GNU make extension
+calendar/libecal/Makefile.am:53: warning: '%'-style pattern rules are a GNU make extension
+calendar/libecal/Makefile.am:61: warning: '%'-style pattern rules are a GNU make extension
+calendar/libecal/Makefile.am:62: warning: subst -,_,$*: non-POSIX variable name
+calendar/libecal/Makefile.am:62: (probably a GNU make extension) calendar/libecal/Makefile.am:68: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+calendar/libedata-cal/Makefile.am:5: warning: '%'-style pattern rules are a GNU make extension
+calendar/libedata-cal/Makefile.am:6: warning: subst -,_,$*: non-POSIX variable name
+calendar/libedata-cal/Makefile.am:6: (probably a GNU make extension)
+glib-gen.mak:9: warning: '%'-style pattern rules are a GNU make extension
+calendar/libedata-cal/Makefile.am:8:   'glib-gen.mak' included from here
+glib-gen.mak:13: warning: '%'-style pattern rules are a GNU make extension
+calendar/libedata-cal/Makefile.am:8:   'glib-gen.mak' included from here
+glib-gen.mak:18: warning: '%'-style pattern rules are a GNU make extension
+calendar/libedata-cal/Makefile.am:8:   'glib-gen.mak' included from here
+glib-gen.mak:26: warning: '%'-style pattern rules are a GNU make extension
+calendar/libedata-cal/Makefile.am:8:   'glib-gen.mak' included from here
+glib-gen.mak:38: warning: '%'-style pattern rules are a GNU make extension
+calendar/libedata-cal/Makefile.am:8:   'glib-gen.mak' included from here
+glib-gen.mak:41: warning: '%'-style pattern rules are a GNU make extension
+calendar/libedata-cal/Makefile.am:8:   'glib-gen.mak' included from here
+calendar/libedata-cal/Makefile.am:71: warning: '%'-style pattern rules are a GNU make extension
+calendar/libedata-cal/Makefile.am:86: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+camel/Makefile.am:17: warning: '%'-style pattern rules are a GNU make extension
+libebackend/Makefile.am:35: warning: '%'-style pattern rules are a GNU make extension
+libebackend/Makefile.am:41: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+libedataserver/Makefile.am:91: warning: '%'-style pattern rules are a GNU make extension
+libedataserver/Makefile.am:97: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+libedataserverui/Makefile.am:108: warning: '%'-style pattern rules are a GNU make extension
+libedataserverui/Makefile.am:118: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+servers/google/libgdata-google/Makefile.am:27: warning: '%'-style pattern rules are a GNU make extension
+servers/google/libgdata-google/Makefile.am:33: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+servers/google/libgdata/Makefile.am:31: warning: '%'-style pattern rules are a GNU make extension
+servers/google/libgdata/Makefile.am:37: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+servers/groupwise/Makefile.am:85: warning: '%'-style pattern rules are a GNU make extension
+servers/groupwise/Makefile.am:91: warning: pkgconfig_DATA:-$(API_VERSION: non-POSIX variable name
+autoreconf: automake failed with exit status: 1
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+Conflicts:
+	configure.ac
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 49d7506..1c802ff 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -21,7 +21,7 @@ m4_define([api_version], [1.2])
+ dnl Autoconf / Automake Initialization
+ AC_PREREQ(2.62)
+ AC_INIT([evolution-data-server],[eds_version],[http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution-Data-Server])
+-AM_INIT_AUTOMAKE([gnu 1.10 tar-ustar dist-xz no-dist-gzip -Wall -Wno-portability -Werror foreign])
++AM_INIT_AUTOMAKE([gnu 1.10 tar-ustar dist-xz no-dist-gzip -Wall -Wno-portability foreign])
+ AC_CONFIG_MACRO_DIR([m4])
+ AC_CONFIG_SRCDIR(README)
+ AC_CONFIG_HEADERS(config.h)
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0004-configure-Fix-libical-pkg-config-trying-to-use-host-.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0004-configure-Fix-libical-pkg-config-trying-to-use-host-.patch
new file mode 100644
index 0000000..1383347
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0004-configure-Fix-libical-pkg-config-trying-to-use-host-.patch
@@ -0,0 +1,39 @@
+From 2c73b588b9018cb59c666eae3a15fa1af42c56be Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sun, 4 Aug 2013 10:57:08 +0200
+Subject: [PATCH 4/5] configure: Fix libical pkg-config trying to use host
+ paths
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ calendar/libecal/libecal.pc.in | 2 +-
+ configure.ac                   | 3 ++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/calendar/libecal/libecal.pc.in b/calendar/libecal/libecal.pc.in
+index fc6b359..d3435bb 100644
+--- a/calendar/libecal/libecal.pc.in
++++ b/calendar/libecal/libecal.pc.in
+@@ -12,4 +12,4 @@ Description: Client library for evolution calendars
+ Version: @VERSION@
+ Requires: libical >= @LIBICAL_REQUIRED@ libedataserver-1.2 gio-2.0
+ Libs: -L${libdir} -lecal-1.2
+-Cflags: -I${privincludedir} @LIBICAL_EXTRA_CFLAGS@
++Cflags: -I${privincludedir}
+diff --git a/configure.ac b/configure.ac
+index 1c802ff..f1d4ce8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1351,7 +1351,8 @@ dnl to differentiate between <libical/ical.h> and <ical.h>
+ dnl We have fixed all our instances to use <libical/ical.h>. Until the .pc from
+ dnl libical is fixed, we have to work-around the buggy CFlags.
+ dnl *****
+-	LIBICAL_EXTRA_CFLAGS=" -I`$PKG_CONFIG --variable=includedir libical` "
++	m4_pattern_allow([^PKG_CONFIG_SYSROOT_DIR$])
++	LIBICAL_EXTRA_CFLAGS=" -I$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=includedir libical` "
+ 	LIBICAL_EXTRA_LIBS=""
+ 	AC_SUBST(LIBICAL_EXTRA_CFLAGS)
+ 	AC_SUBST(LIBICAL_EXTRA_LIBS)
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0005-soup-adapt-to-new-libxml2-API-from-2.9.0.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0005-soup-adapt-to-new-libxml2-API-from-2.9.0.patch
new file mode 100644
index 0000000..addf2ee
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0005-soup-adapt-to-new-libxml2-API-from-2.9.0.patch
@@ -0,0 +1,77 @@
+From ac95e89749a01618f98b554a98e78d7c988bfc10 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 27 Nov 2012 08:46:51 +0100
+Subject: [PATCH 5/5] soup: adapt to new libxml2 API from 2.9.0
+
+* for more info see
+  https://mail.gnome.org/archives/xml/2012-August/msg00005.html
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ calendar/backends/caldav/e-cal-backend-caldav.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/calendar/backends/caldav/e-cal-backend-caldav.c b/calendar/backends/caldav/e-cal-backend-caldav.c
+index 12f8f22..5555a3e 100644
+--- a/calendar/backends/caldav/e-cal-backend-caldav.c
++++ b/calendar/backends/caldav/e-cal-backend-caldav.c
+@@ -1172,8 +1172,13 @@ check_calendar_changed_on_server (ECalBackendCalDAV *cbdav)
+ 	soup_message_set_request (message,
+ 				  "application/xml",
+ 				  SOUP_MEMORY_COPY,
++#ifdef LIBXML2_NEW_BUFFER
++				  (gchar *) xmlOutputBufferGetContent(buf),
++				  xmlOutputBufferGetSize(buf));
++#else
+ 				  (gchar *) buf->buffer->content,
+ 				  buf->buffer->use);
++#endif
+ 
+ 	/* Send the request now */
+ 	send_and_handle_redirection (priv->session, message, NULL);
+@@ -1321,8 +1326,13 @@ caldav_server_list_objects (ECalBackendCalDAV *cbdav,
+ 	soup_message_set_request (message,
+ 				  "application/xml",
+ 				  SOUP_MEMORY_COPY,
++#ifdef LIBXML2_NEW_BUFFER
++				  (gchar *) xmlOutputBufferGetContent(buf),
++				  xmlOutputBufferGetSize(buf));
++#else
+ 				  (gchar *) buf->buffer->content,
+ 				  buf->buffer->use);
++#endif
+ 
+ 	/* Send the request now */
+ 	send_and_handle_redirection (priv->session, message, NULL);
+@@ -1715,8 +1725,14 @@ caldav_receive_schedule_outbox_url (ECalBackendCalDAV *cbdav)
+ 	soup_message_set_request (message,
+ 				  "application/xml",
+ 				  SOUP_MEMORY_COPY,
++#ifdef LIBXML2_NEW_BUFFER
++				  (gchar *) xmlOutputBufferGetContent(buf),
++				  xmlOutputBufferGetSize(buf));
++#else
+ 				  (gchar *) buf->buffer->content,
+ 				  buf->buffer->use);
++#endif
++
+ 
+ 	/* Send the request now */
+ 	send_and_handle_redirection (priv->session, message, NULL);
+@@ -1765,8 +1781,13 @@ caldav_receive_schedule_outbox_url (ECalBackendCalDAV *cbdav)
+ 		soup_message_set_request (message,
+ 				  "application/xml",
+ 				  SOUP_MEMORY_COPY,
++#ifdef LIBXML2_NEW_BUFFER
++				  (gchar *) xmlOutputBufferGetContent(buf),
++				  xmlOutputBufferGetSize(buf));
++#else
+ 				  (gchar *) buf->buffer->content,
+ 				  buf->buffer->use);
++#endif
+ 
+ 		/* Send the request now */
+ 		send_and_handle_redirection (priv->session, message, NULL);
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0006-configure.ac-do-not-overwrite-localedir.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0006-configure.ac-do-not-overwrite-localedir.patch
new file mode 100644
index 0000000..741e5e9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0006-configure.ac-do-not-overwrite-localedir.patch
@@ -0,0 +1,34 @@
+From 3feaea8e84b3ad8dc2d551e42224f3b4a9413e7d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Thu, 3 Sep 2015 11:14:24 +0200
+Subject: [PATCH] configure.ac: do not overwrite localedir
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Backport [1]
+
+[1] https://git.gnome.org/browse/evolution-data-server/tree/configure.ac#n298
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ configure.ac | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index f1d4ce8..cee847f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -257,9 +257,6 @@ GETTEXT_PACKAGE=evolution-data-server-$BASE_VERSION
+ AC_SUBST(GETTEXT_PACKAGE)
+ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext])
+ 
+-localedir='$(prefix)/$(DATADIRNAME)/locale'
+-AC_SUBST(localedir)
+-
+ dnl ******************************
+ dnl Initialize libtool
+ dnl ******************************
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/iconv-detect.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/iconv-detect.h
new file mode 100644
index 0000000..46f476d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/iconv-detect.h
@@ -0,0 +1,5 @@
+/* This is an auto-generated header, DO NOT EDIT! */
+
+#define ICONV_ISO_D_FORMAT "iso-%d-%d"
+#define ICONV_ISO_S_FORMAT "iso-%d-%s"
+#define ICONV_10646 "iso-10646"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server_git.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server_git.bb
new file mode 100644
index 0000000..a5664b0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server_git.bb
@@ -0,0 +1,117 @@
+SUMMARY = "Evolution database backend server"
+HOMEPAGE = "http://www.gnome.org/projects/evolution/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2 & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6a6e689d19255cf0557f3fe7d7068212 \
+                    file://camel/camel.h;endline=24;md5=b02175c88f821224746b347a89731a2b \
+                    file://libedataserver/e-data-server-util.h;endline=20;md5=934502f03c84523aa059d4825887b380 \
+                    file://calendar/libecal/e-cal.h;endline=24;md5=5d496b9b6fd2a4fdbbfc31ef9455c9d0"
+
+DEPENDS = "intltool-native glib-2.0 gtk+3 gconf dbus db gnome-common virtual/libiconv zlib libsoup-2.4 libglade libical libgnome-keyring gperf-native libgdata nss"
+
+SRCREV = "a9e4e74ec4473a4fd09e56b690bd4fa72f686687"
+
+# 3.4 series needs libgdata-0.10*, 3.8 series needs also libsecret instead of gnome-keyring
+PV = "3.2.3+git${SRCPV}"
+
+SRC_URI = " \
+    git://git.gnome.org/evolution-data-server;branch=gnome-3-2 \
+    file://0001-contact-Replace-the-Novell-sample-contact-with-somet.patch \
+    file://0002-Fix-for-automake-1.12.x.patch \
+    file://0003-Disable-Werror-for-automake.patch \
+    file://0004-configure-Fix-libical-pkg-config-trying-to-use-host-.patch \
+    file://0005-soup-adapt-to-new-libxml2-API-from-2.9.0.patch \
+    file://0006-configure.ac-do-not-overwrite-localedir.patch \
+    file://iconv-detect.h \
+"
+
+S = "${WORKDIR}/git"
+
+inherit autotools gtk-doc pkgconfig gettext gobject-introspection
+
+# -ldb needs this on some platforms
+LDFLAGS += "-lpthread"
+
+# Parallel make shows many issues with this source code.
+# Current problems seem to be duplicate execution of the calander/backends
+# directories by make resulting in truncated/corrupt .la files
+#PARALLEL_MAKE = ""
+
+do_configure_append () {
+    cp ${WORKDIR}/iconv-detect.h ${S}
+}
+
+do_compile_prepend() {
+        export GIR_EXTRA_LIBS_PATH="${B}/camel/.libs:${B}/libedataserver/.libs"
+}
+
+EXTRA_OECONF = "--without-openldap \
+                --with-libdb=${STAGING_DIR_HOST}${prefix} \
+                --disable-nntp --disable-goa --disable-weather"
+
+PACKAGES =+ "libcamel libcamel-dev libebook libebook-dev libecal libecal-dev \
+             libedata-book libedata-book-dev libedata-cal libedata-cal-dev \
+             libedataserver libedataserver-dev \
+             libedataserverui libedataserverui-dev"
+
+FILES_${PN} =+ "${datadir}/evolution-data-server-*/ui/"
+FILES_${PN}-dev =+ "${libdir}/pkgconfig/evolution-data-server-*.pc"
+FILES_${PN}-dbg =+ "${libdir}/evolution-data-server*/camel-providers/.debug \
+                    ${libdir}/evolution-data-server*/calendar-backends/.debug \
+                    ${libdir}/evolution-data-server*/addressbook-backends/.debug \
+                    ${libdir}/evolution-data-server*/extensions/.debug/"
+
+RRECOMMENDS_${PN}-dev += "libecal-dev libebook-dev"
+
+FILES_libcamel = "${libdir}/libcamel-*.so.* \
+                  ${libdir}/libcamel-provider-*.so.* \
+                  ${libdir}/evolution-data-server*/camel-providers/*.so \
+                  ${libdir}/evolution-data-server*/camel-providers/*.urls"
+FILES_libcamel-dev = "${libdir}/libcamel-*.so ${libdir}/libcamel-provider-*.so \
+                      ${libdir}/pkgconfig/camel*pc \
+                      ${libdir}/evolution-data-server*/camel-providers/*.la \
+                      ${includedir}/evolution-data-server*/camel"
+
+FILES_libebook = "${libdir}/libebook-*.so.*"
+FILES_libebook-dev = "${libdir}/libebook-1.2.so \
+                      ${libdir}/pkgconfig/libebook-*.pc \
+                      ${includedir}/evolution-data-server*/libebook/*.h"
+RRECOMMENDS_libebook = "libedata-book"
+
+FILES_libecal = "${libdir}/libecal-*.so.* \
+                 ${datadir}/evolution-data-server-1.4/zoneinfo"
+FILES_libecal-dev = "${libdir}/libecal-*.so ${libdir}/pkgconfig/libecal-*.pc \
+                     ${includedir}/evolution-data-server*/libecal/*.h \
+                     ${includedir}/evolution-data-server*/libical/*.h"
+RRECOMMENDS_libecal = "libedata-cal tzdata"
+
+FILES_libedata-book = "${libexecdir}/e-addressbook-factory \
+                       ${datadir}/dbus-1/services/*.AddressBook.service \
+                       ${libdir}/libedata-book-*.so.* \
+                       ${libdir}/evolution-data-server-*/extensions/libebook*.so \
+                       ${datadir}/evolution-data-server-1.4/weather/Locations.xml"
+FILES_libedata-book-dev = "${libdir}/libedata-book-*.so \
+                           ${libdir}/pkgconfig/libedata-book-*.pc \
+                           ${libdir}/evolution-data-server-*/extensions/libebook*.la \
+                           ${includedir}/evolution-data-server-*/libedata-book"
+
+FILES_libedata-cal = "${libexecdir}/e-calendar-factory \
+                      ${datadir}/dbus-1/services/*.Calendar.service \
+                      ${libdir}/libedata-cal-*.so.* \
+                      ${libdir}/evolution-data-server-*/extensions/libecal*.so"
+FILES_libedata-cal-dev = "${libdir}/libedata-cal-*.so \
+                          ${libdir}/pkgconfig/libedata-cal-*.pc \
+                          ${includedir}/evolution-data-server-*/libedata-cal \
+                          ${libdir}/evolution-data-server-*/extensions/libecal*.la"
+
+FILES_libedataserver = "${libdir}/libedataserver-*.so.*"
+FILES_libedataserver-dev = "${libdir}/libedataserver-*.so \
+                            ${libdir}/pkgconfig/libedataserver-*.pc \
+                            ${includedir}/evolution-data-server-*/libedataserver/*.h"
+
+FILES_libedataserverui = "${libdir}/libedataserverui-*.so.* ${datadir}/evolution-data-server-1.4/glade/*.glade"
+FILES_libedataserverui-dev = "${libdir}/libedataserverui-*.so \
+                              ${libdir}/pkgconfig/libedataserverui-*.pc \
+                              ${includedir}/evolution-data-server-*/libedataserverui/*.h"
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/evince/evince/0001-help-remove-YELP-macro.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/evince/evince/0001-help-remove-YELP-macro.patch
new file mode 100644
index 0000000..592f466
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/evince/evince/0001-help-remove-YELP-macro.patch
@@ -0,0 +1,24 @@
+From 40921037d8e7205a3889d529fb4e06f79e1e88b0 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 19 Feb 2016 16:52:18 +0200
+Subject: [PATCH] help: remove YELP macro
+
+Upstream-Status: Inappropriate [embedded-specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ help/Makefile.am | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/help/Makefile.am b/help/Makefile.am
+index 7835810..37c88ce 100644
+--- a/help/Makefile.am
++++ b/help/Makefile.am
+@@ -1,5 +1,3 @@
+-@YELP_HELP_RULES@
+-
+ SUBDIRS = reference
+ 
+ HELP_ID = evince
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_3.18.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_3.18.2.bb
new file mode 100644
index 0000000..fe63093
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_3.18.2.bb
@@ -0,0 +1,48 @@
+SUMMARY = "Evince is a document viewer for document formats like pdf, ps, djvu"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=96f2f8d5ee576a2163977938ea36fa7b"
+SECTION = "x11/office"
+DEPENDS = "gtk+3 libsecret gnome-desktop3 poppler gstreamer1.0-plugins-base orc adwaita-icon-theme"
+PR = "r5"
+
+inherit gnome pkgconfig gtk-icon-cache gsettings gobject-introspection
+
+SRC_URI[archive.md5sum] = "c39af6b8b1c44d4393ef8ac9dab99c0b"
+SRC_URI[archive.sha256sum] = "42ad6c7354d881a9ecab136ea84ff867acb942605bcfac48b6c12e1c2d8ecb17"
+
+SRC_URI += "file://0001-help-remove-YELP-macro.patch"
+
+EXTRA_OECONF = " --enable-thumbnailer \
+"
+
+do_compile_prepend() {
+        export GIR_EXTRA_LIBS_PATH="${B}/libdocument/.libs"
+}
+
+
+do_install_append() {
+    install -d install -d ${D}${datadir}/pixmaps
+    install -m 0755 ${S}/data/icons/48x48/apps/evince.png ${D}${datadir}/pixmaps/
+}
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[nautilus] = "--enable-nautilus,--disable-nautilus,nautilus"
+PACKAGECONFIG[browser-plugin] = "--enable-browser-plugin,--disable-browser-plugin,"
+
+RDEPENDS_${PN} += "glib-2.0-utils"
+RRECOMMMENDS_${PN} = "adwaita-icon-theme"
+
+PACKAGES =+ "${PN}-nautilus-extension"
+PACKAGES =+ "${PN}-browser-plugin"
+FILES_${PN} += "${datadir}/dbus-1 \
+                ${datadir}/appdata \
+                ${datadir}/thumbnailers \
+               "
+FILES_${PN}-dbg += "${libdir}/*/*/.debug \
+                    ${libdir}/*/*/*/.debug"
+FILES_${PN}-dev += "${libdir}/nautilus/extensions-2.0/*.la \
+                    ${libdir}/evince/*/backends/*.la"
+FILES_${PN}-staticdev += "${libdir}/nautilus/extensions-2.0/*.a \
+                          ${libdir}/evince/*/backends/*.a"
+FILES_${PN}-nautilus-extension = "${libdir}/nautilus/*/*so"
+FILES_${PN}-browser-plugin = "${libdir}/mozilla/*/*so"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/faenza-icon-theme/faenza-icon-theme_1.3.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/faenza-icon-theme/faenza-icon-theme_1.3.bb
new file mode 100644
index 0000000..a39b1a0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/faenza-icon-theme/faenza-icon-theme_1.3.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "An icon theme for Gnome"
+SECTION = "x11/wm"
+LICENSE = "GPLv3"
+HOMEPAGE = "http://code.google.com/p/faenza-icon-theme/"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+inherit allarch gtk-icon-cache
+
+S = "${WORKDIR}"
+
+SRC_URI = "http://faenza-icon-theme.googlecode.com/files/${PN}_${PV}.zip"
+SRC_URI[md5sum] = "e9bd6106d13017ce06d24b586259ae9c"
+SRC_URI[sha256sum] = "d4486fda0413f8a81a87e0dd2329f50f2a8a7cb4147b48cf147f0160add8174a"
+
+do_install() {
+    install -d ${D}${datadir}/icons
+    for theme in `find -name 'Faenza*.tar.gz'`; do
+        tar -xf ${theme} -C ${D}${datadir}/icons
+    done
+    tar -xf emesene-faenza-theme.tar.gz -C ${D}${datadir}
+    mv -f ${D}${datadir}/emesene/themes ${D}${datadir}/themes
+    rm -rf ${D}${datadir}/emesene
+    chown -R root:root ${D}${datadir}
+}
+
+FILES_${PN} += "${datadir}/icons ${datadir}/themes"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gcalctool/gcalctool/fix-includedir.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gcalctool/gcalctool/fix-includedir.patch
new file mode 100644
index 0000000..aeb02ab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gcalctool/gcalctool/fix-includedir.patch
@@ -0,0 +1,31 @@
+---
+ Makefile.am           |    2 +-
+ gcalctool/Makefile.am |    2 --
+ 2 files changed, 1 insertion(+), 3 deletions(-)
+
+Index: gcalctool-5.8.17/gcalctool/Makefile.am
+===================================================================
+--- gcalctool-5.8.17.orig/gcalctool/Makefile.am	2005-12-19 15:46:57.000000000 +0000
++++ gcalctool-5.8.17/gcalctool/Makefile.am	2007-05-16 16:03:26.000000000 +0100
+@@ -1,8 +1,6 @@
+ ## Process this file with automake to produce Makefile.in
+ 
+ INCLUDES = \
+-	-I$(includedir) \
+-	-DG_DISABLE_DEPRECATED \
+ 	-DGDK_PIXBUF_DISABLE_DEPRECATED \
+ 	-DGDK_DISABLE_DEPRECATED \
+ 	-DGNOME_DISABLE_DEPRECATED \
+Index: gcalctool-5.8.17/Makefile.am
+===================================================================
+--- gcalctool-5.8.17.orig/Makefile.am	2007-05-16 15:35:44.000000000 +0100
++++ gcalctool-5.8.17/Makefile.am	2007-05-16 16:06:46.000000000 +0100
+@@ -29,7 +29,7 @@ DISTCLEANFILES =                \
+ 	gnome-doc-utils.make	\
+ 	gcalctool.desktop
+ 
+-SUBDIRS = po gcalctool help
++SUBDIRS = po gcalctool
+ 
+ SCHEMAS_FILE = gcalctool.schemas
+ 
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gcalctool/gcalctool_5.32.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gcalctool/gcalctool_5.32.0.bb
new file mode 100644
index 0000000..d391bba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gcalctool/gcalctool_5.32.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "gcalctool is a powerful calculator"
+SECTION = "x11"
+DEPENDS = "gtk+ gnome-doc-utils"
+
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SHRT_VER = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}"
+SRC_URI = "http://download.gnome.org/sources/${BPN}/${SHRT_VER}/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "48db927c6e7ee1d5395f953a8c184c98"
+SRC_URI[sha256sum] = "346f645c0fdef900642f6e9a2c18e7ba9a7ca9bc62fe2b08eb418f065a425c89"
+
+inherit autotools pkgconfig gsettings
+
+do_configure_prepend() {
+    sed -i -e "s: help: :g" ${S}/Makefile.am
+}
+
+PNBLACKLIST[gcalctool] ?= "broken at least since April 2013 http://permalink.gmane.org/gmane.comp.handhelds.openembedded/57920 and nobody complained, it's also replaced by gnome calculator"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/%gconf-tree.xml b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/%gconf-tree.xml
new file mode 100644
index 0000000..f8c2e9c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/%gconf-tree.xml
@@ -0,0 +1,492 @@
+<?xml version="1.0"?>
+<gconf>
+        <dir name="desktop">
+                <dir name="gnome">
+                        <dir name="url-handlers">
+                                <dir name="ymsgr">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="xmpp">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="webcal">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="uvox">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="trash">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="sip">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="rtsp">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="rtp">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="pnm">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="note">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="net">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="msnim">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="mmsh">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="mms">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="man">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="mailto">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="lastfm">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="itpc">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="itms">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="irc">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="info">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="icyx">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="icy">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="icq">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="https">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="http">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="h323">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="ghelp">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="gg">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="ftp">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="file">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="feed">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="cdda">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="callto">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="aim">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                                <dir name="about">
+                                        <entry name="command" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                        </dir>
+                        <dir name="lockdown">
+                                <entry name="disable_url_handlers" mtime="1227173197" type="bool" value="true">
+                                </entry>
+                                <entry name="disable_save_to_disk" mtime="1227173197" type="bool" value="true">
+                                </entry>
+                                <entry name="disable_print_setup" mtime="1227173197" type="bool" value="true">
+                                </entry>
+                                <entry name="disable_printing" mtime="1227173197" type="bool" value="true">
+                                </entry>
+                                <entry name="disable_lock_screen" mtime="1227173197" type="bool" value="true">
+                                </entry>
+                                <entry name="disable_command_line" mtime="1227173197" type="bool" value="true">
+                                </entry>
+                        </dir>
+                        <dir name="applications">
+                                <dir name="terminal">
+                                        <entry name="exec" mtime="1227173197" type="string">
+                                                <stringvalue>/bin/true</stringvalue>
+                                        </entry>
+                                </dir>
+                        </dir>
+                        <dir name="accessibility">
+                                <dir name="keyboard">
+                                        <entry name="enable" mtime="1227173197" type="bool" value="true">
+                                        </entry>
+                                </dir>
+                        </dir>
+                </dir>
+        </dir>
+        <dir name="apps">
+                <dir name="gnome_settings_daemon">
+                        <dir name="keybindings">
+                                <entry name="www" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="stop" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="sleep" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="search" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="screensaver" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="previous" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="power" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="play" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="pause" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="next" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="media" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="home" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="help" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="email" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="calculator" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                                <entry name="eject" mtime="1227173197" type="string">
+                                        <stringvalue></stringvalue>
+                                </entry>
+                        </dir>
+                </dir>
+                <dir name="metacity">
+                        <dir name="keybinding_commands">
+                                <entry name="command_window_screenshot" mtime="1227173197" type="string">
+                                        <stringvalue>/bin/true</stringvalue>
+                                </entry>
+                                <entry name="command_screenshot" mtime="1227173197" type="string">
+                                        <stringvalue>gdm-screenshot</stringvalue>
+                                </entry>
+                        </dir>
+                        <dir name="global_keybindings">
+                                <entry name="switch_to_workspace_up" mtime="1227173197" type="string">
+                                        <stringvalue>disabled</stringvalue>
+                                </entry>
+                                <entry name="switch_to_workspace_right" mtime="1227173197" type="string">
+                                        <stringvalue>disabled</stringvalue>
+                                </entry>
+                                <entry name="switch_to_workspace_left" mtime="1227173197" type="string">
+                                        <stringvalue>disabled</stringvalue>
+                                </entry>
+                                <entry name="switch_to_workspace_down" mtime="1227173197" type="string">
+                                        <stringvalue>disabled</stringvalue>
+                                </entry>
+                                <entry name="switch_group" mtime="1227173197" type="string">
+                                        <stringvalue>disabled</stringvalue>
+                                </entry>
+                                <entry name="show_desktop" mtime="1227173197" type="string">
+                                        <stringvalue>disabled</stringvalue>
+                                </entry>
+                                <entry name="run_command_window_screenshot" mtime="1227173197" type="string">
+                                        <stringvalue>disabled</stringvalue>
+                                </entry>
+                                <entry name="run_command_screenshot" mtime="1227173197" type="string">
+                                        <stringvalue>Print</stringvalue>
+                                </entry>
+                                <entry name="panel_run_dialog" mtime="1227173197" type="string">
+                                        <stringvalue>disabled</stringvalue>
+                                </entry>
+                                <entry name="panel_main_menu" mtime="1227173197" type="string">
+                                        <stringvalue>disabled</stringvalue>
+                                </entry>
+                        </dir>
+                        <dir name="general">
+                                <entry name="num_workspaces" mtime="1227173197" type="int" value="1">
+                                </entry>
+                        </dir>
+                </dir>
+                <dir name="compiz">
+                        <dir name="general">
+                                <dir name="allscreens">
+                                        <dir name="options">
+                                                <entry name="run_command11_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command11_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command10_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command10_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command8_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command8_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command7_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command7_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command6_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command6_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command5_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command5_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command4_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command4_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command3_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command3_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command2_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command2_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command1_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command1_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command0_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_command0_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="run_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="main_menu_key" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="main_menu_button" mtime="1227173197" type="string">
+                                                        <stringvalue>Disabled</stringvalue>
+                                                </entry>
+                                                <entry name="command_window_screenshot" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command11" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command10" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command9" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command8" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command7" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command6" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command5" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command4" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command3" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command2" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command1" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command0" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command_terminal" mtime="1227173197" type="string">
+                                                        <stringvalue></stringvalue>
+                                                </entry>
+                                                <entry name="command_screenshot" mtime="1227173197" type="string">
+                                                        <stringvalue>gdm-screenshot</stringvalue>
+                                                </entry>
+                                                <entry name="active_plugins" mtime="1227173197" type="list" ltype="string">
+                                                        <li type="string">
+                                                                <stringvalue>cube</stringvalue>
+                                                        </li>
+                                                        <li type="string">
+                                                                <stringvalue>decoration</stringvalue>
+                                                        </li>
+                                                        <li type="string">
+                                                                <stringvalue>gconf</stringvalue>
+                                                        </li>
+                                                        <li type="string">
+                                                                <stringvalue>glib</stringvalue>
+                                                        </li>
+                                                        <li type="string">
+                                                                <stringvalue>move</stringvalue>
+                                                        </li>
+                                                        <li type="string">
+                                                                <stringvalue>place</stringvalue>
+                                                        </li>
+                                                        <li type="string">
+                                                                <stringvalue>resize</stringvalue>
+                                                        </li>
+                                                        <li type="string">
+                                                                <stringvalue>screenshot</stringvalue>
+                                                        </li>
+                                                        <li type="string">
+                                                                <stringvalue>wobbly</stringvalue>
+                                                        </li>
+                                                </entry>
+                                        </dir>
+                                </dir>
+                        </dir>
+                </dir>
+                <dir name="gnome-power-manager">
+                        <dir name="ui">
+                                <entry name="show_context_menu" mtime="1227173197" type="bool" value="false">
+                                </entry>
+                        </dir>
+                </dir>
+                <dir name="gnome-screensaver">
+                        <entry name="power_management_delay" mtime="1227173197" type="int" value="30">
+                        </entry>
+                </dir>
+                <dir name="nautilus">
+                        <dir name="preferences">
+                                <entry name="show_desktop" mtime="1227173197" type="bool" value="false">
+                                </entry>
+                        </dir>
+                </dir>
+        </dir>
+</gconf>
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/0001-Remove-user-switch-applet.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/0001-Remove-user-switch-applet.patch
new file mode 100644
index 0000000..75aff5d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/0001-Remove-user-switch-applet.patch
@@ -0,0 +1,2281 @@
+From 0a4fe802edbd2e8a016161f08283e4b467c6762e Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Tue, 21 Jun 2011 12:48:39 +0200
+Subject: [PATCH] Remove user switch applet
+
+This hasn't been updated to work with gnome-panel > 2.30.0, so just drop it
+
+Upstream-Status: unacceptable, backport
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ configure.ac                                       |    8 -
+ gui/Makefile.am                                    |    2 -
+ .../GNOME_FastUserSwitchApplet.server.in.in        |   38 -
+ .../GNOME_FastUserSwitchApplet.xml                 |   20 -
+ gui/user-switch-applet/Makefile.am                 |   67 -
+ gui/user-switch-applet/applet.c                    | 1662 --------------------
+ gui/user-switch-applet/gdm-entry-menu-item.c       |  304 ----
+ gui/user-switch-applet/gdm-entry-menu-item.h       |   51 -
+ po/POTFILES.in                                     |    4 -
+ po/POTFILES.skip                                   |    1 -
+ 10 files changed, 0 insertions(+), 2157 deletions(-)
+ delete mode 100644 gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in
+ delete mode 100644 gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml
+ delete mode 100644 gui/user-switch-applet/Makefile.am
+ delete mode 100644 gui/user-switch-applet/applet.c
+ delete mode 100644 gui/user-switch-applet/gdm-entry-menu-item.c
+ delete mode 100644 gui/user-switch-applet/gdm-entry-menu-item.h
+
+diff --git a/configure.ac b/configure.ac
+index 841efe0..a834110 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -149,13 +149,6 @@ PKG_CHECK_MODULES(SIMPLE_CHOOSER,
+ AC_SUBST(SIMPLE_CHOOSER_CFLAGS)
+ AC_SUBST(SIMPLE_CHOOSER_LIBS)
+ 
+-PKG_CHECK_MODULES(APPLET,
+-        dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+-        gtk+-2.0 >= $GTK_REQUIRED_VERSION
+-        libpanelapplet-2.0 >= $GNOME_PANEL_REQUIRED_VERSION)
+-AC_SUBST(APPLET_CFLAGS)
+-AC_SUBST(APPLET_LIBS)
+-
+ PLUGIN_LIBTOOL_FLAGS="-export_dynamic -module -avoid-version"
+ AC_SUBST(PLUGIN_LIBTOOL_FLAGS)
+ 
+@@ -1340,7 +1333,6 @@ gui/Makefile
+ gui/simple-greeter/Makefile
+ gui/simple-greeter/libnotificationarea/Makefile
+ gui/simple-chooser/Makefile
+-gui/user-switch-applet/Makefile
+ utils/Makefile
+ data/gdm.conf
+ data/Makefile
+diff --git a/gui/Makefile.am b/gui/Makefile.am
+index 326239f..bda3f7a 100644
+--- a/gui/Makefile.am
++++ b/gui/Makefile.am
+@@ -2,7 +2,6 @@ NULL =
+ 
+ SUBDIRS =			\
+ 	simple-greeter		\
+-	user-switch-applet	\
+ 	$(NULL)
+ 
+ if XDMCP_SUPPORT
+@@ -12,5 +11,4 @@ endif
+ DIST_SUBDIRS =			\
+ 	simple-chooser		\
+ 	simple-greeter		\
+-	user-switch-applet	\
+ 	$(NULL)
+diff --git a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in b/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in
+deleted file mode 100644
+index a9b775f..0000000
+--- a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in
++++ /dev/null
+@@ -1,38 +0,0 @@
+-<oaf_info>
+-  <oaf_server iid="OAFIID:GNOME_FastUserSwitchApplet_Factory" type="exe"
+-              location="@LIBEXECDIR@/gdm-user-switch-applet">
+-
+-    <oaf_attribute name="repo_ids" type="stringv">
+-      <item value="IDL:Bonobo/GenericFactory:1.0"/>
+-      <item value="IDL:Bonobo/Unknown:1.0"/>
+-    </oaf_attribute>
+-    <oaf_attribute name="name" type="string" _value="User Switcher Applet Factory"/>
+-    <oaf_attribute name="description" type="string" _value="User Switcher Applet Factory"/>
+-    <oaf_attribute name="bonobo:environment" type="stringv">
+-       <item value="DBUS_SESSION_BUS_ADDRESS"/>
+-     <oaf_attribute name="bugzilla:bugzilla" type="string" value="GNOME"/>
+-     <oaf_attribute name="bugzilla:product" type="string" value="gdm"/>
+-     <oaf_attribute name="bugzilla:component" type="string" value="general"/>
+-     <oaf_attribute name="bugzilla:version" type="string" value="@VERSION@"/>
+-     <oaf_attribute name="bugzilla:other_binaries" type="string" value="gdm-user-switch-applet"/>
+-    </oaf_attribute>
+-  </oaf_server>
+-
+-  <oaf_server iid="OAFIID:GNOME_FastUserSwitchApplet" type="factory"
+-              location="OAFIID:GNOME_FastUserSwitchApplet_Factory">
+-
+-    <oaf_attribute name="repo_ids" type="stringv">
+-      <item value="IDL:GNOME/Vertigo/PanelAppletShell:1.0"/>
+-      <item value="IDL:Bonobo/Control:1.0"/>
+-      <item value="IDL:Bonobo/Unknown:1.0"/>
+-    </oaf_attribute>
+-    <oaf_attribute name="name" type="string" _value="User Switcher"/>
+-    <oaf_attribute name="description" type="string" _value="A menu to quickly switch between users"/>
+-    <oaf_attribute name="panel:icon" type="string" value="stock_people"/>
+-    <oaf_attribute name="bugzilla:bugzilla" type="string" value="GNOME"/>
+-    <oaf_attribute name="bugzilla:product" type="string" value="gdm"/>
+-    <oaf_attribute name="bugzilla:component" type="string" value="general"/>
+-    <oaf_attribute name="bugzilla:version" type="string" value="@VERSION@"/>
+-    <oaf_attribute name="bugzilla:other_binaries" type="string" value="gdm-user-switch-applet"/>
+-  </oaf_server>
+-</oaf_info>
+diff --git a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml b/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml
+deleted file mode 100644
+index e1845c8..0000000
+--- a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml
++++ /dev/null
+@@ -1,20 +0,0 @@
+-<Root>
+-  <popups>
+-    <popup name="button3">
+-      <menuitem
+-       name="About Me Item"
+-       verb="GdmAboutMe"
+-       _label="Edit Personal _Information"/>
+-      <menuitem
+-       name="Users and Groups Admin Item"
+-       verb="GdmUsersGroupsAdmin"
+-       _label="_Edit Users and Groups"/>
+-      <menuitem
+-       name="About Item"
+-       verb="GdmAbout"
+-       _label="_About"
+-       pixtype="stock"
+-       pixname="gtk-about"/>
+-    </popup>
+-  </popups>
+-</Root>
+diff --git a/gui/user-switch-applet/Makefile.am b/gui/user-switch-applet/Makefile.am
+deleted file mode 100644
+index 2d2cdc0..0000000
+--- a/gui/user-switch-applet/Makefile.am
++++ /dev/null
+@@ -1,67 +0,0 @@
+-NULL =
+-
+-AM_CPPFLAGS = \
+-	-I$(top_srcdir)/gui/simple-greeter		\
+-	-I$(top_srcdir)/common				\
+-	-DPREFIX=\""$(prefix)"\" 			\
+-	-DLIBDIR=\""$(libdir)"\" 			\
+-	-DDATADIR=\""$(datadir)"\"		 	\
+-	-DSYSCONFDIR=\""$(sysconfdir)"\"		\
+-	-DLIBLOCALEDIR=\""$(prefix)/lib/locale"\"	\
+-	-DGNOMELOCALEDIR=\""$(datadir)/locale"\"	\
+-	-DGLADEDIR=\""$(pkgdatadir)"\" 			\
+-	-DLIBEXECDIR=\""$(libexecdir)"\" 		\
+-	-DSBINDIR=\""$(sbindir)"\"		 	\
+-	-DGDMCONFDIR=\"$(gdmconfdir)\"			\
+-	$(GTK_CFLAGS)					\
+-	$(APPLET_CFLAGS)				\
+-	$(NULL)
+-
+-libexec_PROGRAMS =			\
+-	gdm-user-switch-applet		\
+-	$(NULL)
+-
+-gdm_user_switch_applet_SOURCES =  	\
+-	applet.c 			\
+-	gdm-entry-menu-item.h		\
+-	gdm-entry-menu-item.c		\
+-	$(NULL)
+-
+-gdm_user_switch_applet_LDADD = 		\
+-	$(top_builddir)/gui/simple-greeter/libgdmuser.la	\
+-	$(top_builddir)/common/libgdmcommon.la		\
+-	$(COMMON_LIBS)					\
+-	$(APPLET_LIBS)					\
+-	$(NULL)
+-
+-# Bonobo UI
+-uidir =	$(datadir)/gnome-2.0/ui
+-ui_DATA =					\
+-	GNOME_FastUserSwitchApplet.xml		\
+-	$(NULL)
+-
+-# Bonobo .server
+-serverdir = $(libdir)/bonobo/servers
+-server_in_files =				\
+-	GNOME_FastUserSwitchApplet.server.in	\
+-	$(NULL)
+-server_DATA = $(server_in_files:.server.in=.server)
+-
+-$(server_in_files): $(server_in_files:.server.in=.server.in.in)
+-	sed -e "s|\@LIBEXECDIR\@|$(libexecdir)|" -e "s|\@VERSION\@|$(VERSION)|" $< > $@
+-
+-@INTLTOOL_SERVER_RULE@
+-
+-EXTRA_DIST = 			\
+-	$(ui_DATA)		\
+-	GNOME_FastUserSwitchApplet.server.in.in	\
+-	$(NULL)
+-
+-DISTCLEANFILES =                        \
+-	$(server_in_files)		\
+-	$(server_DATA)			\
+-        $(NULL)
+-
+-MAINTAINERCLEANFILES =                  \
+-        *~                              \
+-        Makefile.in
+diff --git a/gui/user-switch-applet/applet.c b/gui/user-switch-applet/applet.c
+deleted file mode 100644
+index b4f944c..0000000
+--- a/gui/user-switch-applet/applet.c
++++ /dev/null
+@@ -1,1662 +0,0 @@
+-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+- *
+- * Copyright (C) 2004-2005 James M. Cape <jcape@ignore-your.tv>.
+- * Copyright (C) 2008      Red Hat, Inc.
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+- */
+-
+-#include "config.h"
+-
+-#include <string.h>
+-#include <unistd.h>
+-#include <stdlib.h>
+-#include <sys/types.h>
+-
+-#include <glib/gi18n.h>
+-#include <gdk/gdkkeysyms.h>
+-#include <gtk/gtk.h>
+-
+-#include <gconf/gconf.h>
+-#include <gconf/gconf-client.h>
+-
+-#include <dbus/dbus-glib.h>
+-
+-#include <bonobo/bonobo-main.h>
+-#include <bonobo/bonobo-ui-util.h>
+-
+-#include <panel-applet.h>
+-#include <panel-applet-gconf.h>
+-
+-#include "gdm-user-manager.h"
+-#include "gdm-entry-menu-item.h"
+-#include "gdm-settings-client.h"
+-
+-#define LOCKDOWN_DIR    "/desktop/gnome/lockdown"
+-#define LOCKDOWN_USER_SWITCHING_KEY LOCKDOWN_DIR "/disable_user_switching"
+-#define LOCKDOWN_LOCK_SCREEN_KEY    LOCKDOWN_DIR "/disable_lock_screen"
+-#define LOCKDOWN_COMMAND_LINE_KEY   LOCKDOWN_DIR "/disable_command_line"
+-
+-typedef enum {
+-        GSM_PRESENCE_STATUS_AVAILABLE = 0,
+-        GSM_PRESENCE_STATUS_INVISIBLE,
+-        GSM_PRESENCE_STATUS_BUSY,
+-        GSM_PRESENCE_STATUS_IDLE,
+-} GsmPresenceStatus;
+-
+-typedef struct _GdmAppletData
+-{
+-        PanelApplet    *applet;
+-
+-        GConfClient    *client;
+-        GdmUserManager *manager;
+-        GdmUser        *user;
+-
+-        GtkWidget      *menubar;
+-        GtkWidget      *menuitem;
+-        GtkWidget      *menu;
+-#ifdef BUILD_PRESENSE_STUFF
+-        GtkWidget      *user_item;
+-#endif
+-        GtkWidget      *control_panel_item;
+-        GtkWidget      *account_item;
+-        GtkWidget      *lock_screen_item;
+-        GtkWidget      *login_screen_item;
+-        GtkWidget      *quit_session_item;
+-
+-        guint           client_notify_lockdown_id;
+-
+-        guint           current_status;
+-        guint           user_loaded_notify_id;
+-        guint           user_changed_notify_id;
+-        gint8           pixel_size;
+-        gint            panel_size;
+-        GtkIconSize     icon_size;
+-#ifdef BUILD_PRESENSE_STUFF
+-        DBusGProxy     *presence_proxy;
+-#endif
+-} GdmAppletData;
+-
+-typedef struct _SelectorResponseData
+-{
+-        GdmAppletData  *adata;
+-        GtkRadioButton *radio;
+-} SelectorResponseData;
+-
+-static void reset_icon   (GdmAppletData *adata);
+-static void update_label (GdmAppletData *adata);
+-
+-static gboolean applet_factory (PanelApplet   *applet,
+-                                const char    *iid,
+-                                gpointer       data);
+-
+-PANEL_APPLET_BONOBO_FACTORY ("OAFIID:GNOME_FastUserSwitchApplet_Factory",
+-                             PANEL_TYPE_APPLET,
+-                             "gdm-user-switch-applet", "0",
+-                             (PanelAppletFactoryCallback)applet_factory,
+-                             NULL)
+-
+-static void
+-about_me_cb (BonoboUIComponent *ui_container,
+-             gpointer           data,
+-             const char        *cname)
+-{
+-        GError *err;
+-
+-        err = NULL;
+-        if (! g_spawn_command_line_async ("gnome-about-me", &err)) {
+-                g_critical ("Could not run `gnome-about-me': %s",
+-                            err->message);
+-                g_error_free (err);
+-                bonobo_ui_component_set_prop (ui_container,
+-                                              "/commands/GdmAboutMe",
+-                                              "hidden", "1",
+-                                              NULL);
+-        }
+-}
+-
+-/*
+- * gnome-panel/applets/wncklet/window-menu.c:window_filter_button_press()
+- *
+- * Copyright (C) 2005 James M. Cape.
+- * Copyright (C) 2003 Sun Microsystems, Inc.
+- * Copyright (C) 2001 Free Software Foundation, Inc.
+- * Copyright (C) 2000 Helix Code, Inc.
+- */
+-static gboolean
+-menubar_button_press_event_cb (GtkWidget      *menubar,
+-                               GdkEventButton *event,
+-                               GdmAppletData  *adata)
+-{
+-        if (event->button != 1) {
+-                g_signal_stop_emission_by_name (menubar, "button-press-event");
+-                /* Reset the login window item */
+-        }
+-
+-        return FALSE;
+-}
+-
+-static void
+-about_cb (BonoboUIComponent *ui_container,
+-          gpointer           data,
+-          const char        *cname)
+-{
+-        static const char *authors[] = {
+-                "James M. Cape <jcape@ignore-your.tv>",
+-                "Thomas Thurman <thomas@thurman.org.uk>",
+-                "William Jon McCann <jmccann@redhat.com>",
+-                NULL
+-        };
+-        static char *license[] = {
+-                N_("The User Switch Applet is free software; you can redistribute it and/or modify "
+-                   "it under the terms of the GNU General Public License as published by "
+-                   "the Free Software Foundation; either version 2 of the License, or "
+-                   "(at your option) any later version."),
+-                N_("This program is distributed in the hope that it will be useful, "
+-                   "but WITHOUT ANY WARRANTY; without even the implied warranty of "
+-                   "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the "
+-                   "GNU General Public License for more details."),
+-                N_("You should have received a copy of the GNU General Public License "
+-                   "along with this program; if not, write to the Free Software "
+-                   "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA "),
+-                NULL
+-        };
+-        char *license_i18n;
+-
+-        license_i18n = g_strconcat (_(license[0]), "\n\n", _(license[1]), "\n\n", _(license[2]), NULL); 
+-
+-        gtk_show_about_dialog (NULL,
+-                               "version", VERSION,
+-                               "copyright", "Copyright \xc2\xa9 2004-2005 James M. Cape.\n"
+-                               "Copyright \xc2\xa9 2006 Thomas Thurman.\n"
+-                               "Copyright \xc2\xa9 2008 Red Hat, Inc.",
+-                               "comments", _("A menu to quickly switch between users."),
+-                               "authors", authors,
+-                               "license", license_i18n,
+-                               "wrap-license", TRUE,
+-                               "translator-credits", _("translator-credits"),
+-                               "logo-icon-name", "stock_people",
+-                               NULL);
+-
+-        g_free (license_i18n);
+-}
+-
+-
+-static void
+-admin_cb (BonoboUIComponent *ui_container,
+-          gpointer           data,
+-          const char        *cname)
+-{
+-#ifdef USERS_ADMIN
+-        char   **args;
+-        gboolean res;
+-        GError  *err;
+-
+-        err = NULL;
+-        if (!g_shell_parse_argv (USERS_ADMIN, NULL, &args, &err)) {
+-                g_critical ("Could not parse users and groups management command line `%s': %s",
+-                            USERS_ADMIN, err->message);
+-                return;
+-        }
+-
+-        res = g_spawn_async (g_get_home_dir (),
+-                             args,
+-                             NULL,
+-                             (G_SPAWN_STDOUT_TO_DEV_NULL |
+-                              G_SPAWN_STDERR_TO_DEV_NULL |
+-                              G_SPAWN_SEARCH_PATH),
+-                             NULL,
+-                             NULL,
+-                             NULL,
+-                             &err);
+-        if (! res) {
+-                g_critical ("Could not run `%s' to manage users and groups: %s",
+-                            USERS_ADMIN, err->message);
+-                g_error_free (err);
+-        }
+-        g_strfreev (args);
+-#endif /* USERS_ADMIN */
+-}
+-
+-static void
+-set_menuitem_icon (BonoboUIComponent *component,
+-                   const char        *item_path,
+-                   GtkIconTheme      *theme,
+-                   const char        *icon_name,
+-                   gint               icon_size)
+-{
+-        GdkPixbuf *pixbuf;
+-        int        width;
+-        int        height;
+-
+-        pixbuf = gtk_icon_theme_load_icon (theme, icon_name, icon_size, 0, NULL);
+-        if (pixbuf == NULL) {
+-                return;
+-        }
+-
+-        width = gdk_pixbuf_get_width (pixbuf);
+-        height = gdk_pixbuf_get_height (pixbuf);
+-        if (width > icon_size + 4 || height > icon_size + 4) {
+-                GdkPixbuf *tmp;
+-                if (height > width) {
+-                        width *= (gdouble) icon_size / (gdouble) height;
+-                        height = icon_size;
+-                } else {
+-                        height *= (gdouble) icon_size / (gdouble) width;
+-                        width = icon_size;
+-                }
+-                tmp = gdk_pixbuf_scale_simple (pixbuf, width, height, GDK_INTERP_BILINEAR);
+-                g_object_unref (pixbuf);
+-                pixbuf = tmp;
+-        }
+-
+-        bonobo_ui_util_set_pixbuf (component, item_path, pixbuf, NULL);
+-        g_object_unref (pixbuf);
+-}
+-
+-static void
+-applet_style_set_cb (GtkWidget *widget,
+-                     GtkStyle  *old_style,
+-                     gpointer   data)
+-{
+-        BonoboUIComponent *component;
+-        GdkScreen         *screen;
+-        GtkIconTheme      *theme;
+-        int                width;
+-        int                height;
+-        int                icon_size;
+-
+-        if (gtk_widget_has_screen (widget)) {
+-                screen = gtk_widget_get_screen (widget);
+-        } else {
+-                screen = gdk_screen_get_default ();
+-        }
+-
+-        if (gtk_icon_size_lookup_for_settings (gtk_settings_get_for_screen (screen),
+-                                               GTK_ICON_SIZE_MENU, &width, &height)) {
+-                icon_size = MAX (width, height);
+-        } else {
+-                icon_size = 16;
+-        }
+-
+-        theme = gtk_icon_theme_get_for_screen (screen);
+-        component = panel_applet_get_popup_component (PANEL_APPLET (widget));
+-
+-        set_menuitem_icon (component,
+-                           "/commands/GdmAboutMe",
+-                           theme,
+-                           "user-info",
+-                           icon_size);
+-        set_menuitem_icon (component,
+-                           "/commands/GdmUsersGroupsAdmin",
+-                           theme,
+-                           "stock_people",
+-                           icon_size);
+-}
+-
+-static void
+-applet_change_background_cb (PanelApplet               *applet,
+-                             PanelAppletBackgroundType  type,
+-                             GdkColor                  *color,
+-                             GdkPixmap                 *pixmap,
+-                             GdmAppletData             *adata)
+-{
+-        GtkRcStyle *rc_style;
+-        GtkStyle   *style;
+-
+-        gtk_widget_set_style (adata->menubar, NULL);
+-        rc_style = gtk_rc_style_new ();
+-        gtk_widget_modify_style (GTK_WIDGET (adata->menubar), rc_style);
+-        g_object_unref (rc_style);
+-
+-        switch (type) {
+-        case PANEL_NO_BACKGROUND:
+-                break;
+-        case PANEL_COLOR_BACKGROUND:
+-                gtk_widget_modify_bg (adata->menubar, GTK_STATE_NORMAL, color);
+-                break;
+-        case PANEL_PIXMAP_BACKGROUND:
+-                style = gtk_style_copy (gtk_widget_get_style (adata->menubar));
+-                if (style->bg_pixmap[GTK_STATE_NORMAL]) {
+-                        g_object_unref (style->bg_pixmap[GTK_STATE_NORMAL]);
+-                }
+-
+-                style->bg_pixmap[GTK_STATE_NORMAL] = g_object_ref (pixmap);
+-                gtk_widget_set_style (adata->menubar, style);
+-                g_object_unref (style);
+-                break;
+-        }
+-}
+-
+-/*
+- * gnome-panel/applets/wncklet/window-menu.c:window_menu_key_press_event()
+- *
+- * Copyright (C) 2003 Sun Microsystems, Inc.
+- * Copyright (C) 2001 Free Software Foundation, Inc.
+- * Copyright (C) 2000 Helix Code, Inc.
+- */
+-static gboolean
+-applet_key_press_event_cb (GtkWidget     *widget,
+-                           GdkEventKey   *event,
+-                           GdmAppletData *adata)
+-{
+-        GtkMenuShell *menu_shell;
+-
+-        switch (event->keyval) {
+-        case GDK_KP_Enter:
+-        case GDK_ISO_Enter:
+-        case GDK_3270_Enter:
+-        case GDK_Return:
+-        case GDK_space:
+-        case GDK_KP_Space:
+-                menu_shell = GTK_MENU_SHELL (adata->menubar);
+-                /*
+-                 * We need to call _gtk_menu_shell_activate() here as is done in
+-                 * window_key_press_handler in gtkmenubar.c which pops up menu
+-                 * when F10 is pressed.
+-                 *
+-                 * As that function is private its code is replicated here.
+-                 */
+-                if (!menu_shell->active) {
+-                        gtk_grab_add (GTK_WIDGET (menu_shell));
+-                        menu_shell->have_grab = TRUE;
+-                        menu_shell->active = TRUE;
+-                }
+-
+-                gtk_menu_shell_select_first (menu_shell, FALSE);
+-                return TRUE;
+-        default:
+-                break;
+-        }
+-
+-        return FALSE;
+-}
+-
+-static void
+-set_item_text_angle_and_alignment (GtkWidget *item,
+-                                   double     text_angle,
+-                                   float      xalign,
+-                                   float      yalign)
+-{
+-        GtkWidget *label;
+-
+-        label = gtk_bin_get_child (GTK_BIN (item));
+-
+-        gtk_label_set_angle (GTK_LABEL (label), text_angle);
+-
+-        gtk_misc_set_alignment (GTK_MISC (label), xalign, yalign);
+-}
+-
+-/*
+- * gnome-panel/applets/wncklet/window-menu.c:window_menu_size_allocate()
+- *
+- * Copyright (C) 2003 Sun Microsystems, Inc.
+- * Copyright (C) 2001 Free Software Foundation, Inc.
+- * Copyright (C) 2000 Helix Code, Inc.
+- */
+-static void
+-applet_size_allocate_cb (GtkWidget     *widget,
+-                         GtkAllocation *allocation,
+-                         GdmAppletData *adata)
+-{
+-        GList            *children;
+-        GtkWidget        *top_item;
+-        PanelAppletOrient orient;
+-        gint              pixel_size;
+-        gdouble           text_angle;
+-        GtkPackDirection  pack_direction;
+-        float             text_xalign;
+-        float             text_yalign;
+-
+-        pack_direction = GTK_PACK_DIRECTION_LTR;
+-        text_angle = 0.0;
+-        text_xalign = 0.0;
+-        text_yalign = 0.5;
+-
+-        children = gtk_container_get_children (GTK_CONTAINER (adata->menubar));
+-        top_item = GTK_WIDGET (children->data);
+-        g_list_free (children);
+-
+-        orient = panel_applet_get_orient (PANEL_APPLET (widget));
+-
+-        switch (orient) {
+-        case PANEL_APPLET_ORIENT_UP:
+-        case PANEL_APPLET_ORIENT_DOWN:
+-                gtk_widget_set_size_request (top_item, -1, allocation->height);
+-                pixel_size = allocation->height - gtk_widget_get_style (top_item)->ythickness * 2;
+-                break;
+-        case PANEL_APPLET_ORIENT_LEFT:
+-                gtk_widget_set_size_request (top_item, allocation->width, -1);
+-                pixel_size = allocation->width - gtk_widget_get_style (top_item)->xthickness * 2;
+-                pack_direction = GTK_PACK_DIRECTION_TTB;
+-                text_angle = 270.0;
+-                text_xalign = 0.5;
+-                text_yalign = 0.0;
+-                break;
+-        case PANEL_APPLET_ORIENT_RIGHT:
+-                gtk_widget_set_size_request (top_item, allocation->width, -1);
+-                pixel_size = allocation->width - gtk_widget_get_style (top_item)->xthickness * 2;
+-                pack_direction = GTK_PACK_DIRECTION_BTT;
+-                text_angle = 90.0;
+-                text_xalign = 0.5;
+-                text_yalign = 0.0;
+-                break;
+-        default:
+-                g_assert_not_reached ();
+-                break;
+-        }
+-
+-        gtk_menu_bar_set_pack_direction (GTK_MENU_BAR (adata->menubar),
+-                                         pack_direction);
+-        gtk_menu_bar_set_child_pack_direction (GTK_MENU_BAR (adata->menubar),
+-                                               pack_direction);
+-
+-        set_item_text_angle_and_alignment (adata->menuitem,
+-                                           text_angle,
+-                                           text_xalign,
+-                                           text_yalign);
+-
+-        if (adata->panel_size != pixel_size) {
+-                adata->panel_size = pixel_size;
+-                reset_icon (adata);
+-        }
+-}
+-
+-
+-static void
+-gdm_applet_data_free (GdmAppletData *adata)
+-{
+-        gconf_client_notify_remove (adata->client, adata->client_notify_lockdown_id);
+-
+-        if (adata->user_loaded_notify_id != 0) {
+-                g_signal_handler_disconnect (adata->user, adata->user_loaded_notify_id);
+-        }
+-
+-        if (adata->user_changed_notify_id != 0) {
+-                g_signal_handler_disconnect (adata->user, adata->user_changed_notify_id);
+-        }
+-
+-#ifdef BUILD_PRESENSE_STUFF
+-        if (adata->presence_proxy != NULL) {
+-                g_object_unref (adata->presence_proxy);
+-        }
+-#endif
+-
+-        if (adata->user != NULL) {
+-                g_object_unref (adata->user);
+-        }
+-        g_object_unref (adata->client);
+-        g_object_unref (adata->manager);
+-
+-        g_free (adata);
+-}
+-
+-
+-/*
+- * gnome-panel/applets/wncklet/window-menu.c:window_menu_on_expose()
+- *
+- * Copyright (C) 2003 Sun Microsystems, Inc.
+- * Copyright (C) 2001 Free Software Foundation, Inc.
+- * Copyright (C) 2000 Helix Code, Inc.
+- */
+-static gboolean
+-menubar_expose_event_cb (GtkWidget      *widget,
+-                         GdkEventExpose *event,
+-                         GdmAppletData  *adata)
+-{
+-        if (gtk_widget_has_focus (GTK_WIDGET (adata->applet)))
+-                gtk_paint_focus (gtk_widget_get_style (widget),
+-                                 gtk_widget_get_window (widget),
+-                                 gtk_widget_get_state (widget),
+-                                 NULL, widget, "menu-applet", 0, 0, -1, -1);
+-
+-        return FALSE;
+-}
+-
+-static void
+-menu_style_set_cb (GtkWidget     *menu,
+-                   GtkStyle      *old_style,
+-                   GdmAppletData *adata)
+-{
+-        GtkSettings *settings;
+-        int          width;
+-        int          height;
+-
+-        adata->icon_size = gtk_icon_size_from_name ("panel-menu");
+-
+-        if (adata->icon_size == GTK_ICON_SIZE_INVALID) {
+-                adata->icon_size = gtk_icon_size_register ("panel-menu", 24, 24);
+-        }
+-
+-        if (gtk_widget_has_screen (menu)) {
+-                settings = gtk_settings_get_for_screen (gtk_widget_get_screen (menu));
+-        } else {
+-                settings = gtk_settings_get_default ();
+-        }
+-
+-        if (!gtk_icon_size_lookup_for_settings (settings, adata->icon_size,
+-                                                &width, &height)) {
+-                adata->pixel_size = -1;
+-        } else {
+-                adata->pixel_size = MAX (width, height);
+-        }
+-}
+-
+-static void
+-menuitem_style_set_cb (GtkWidget     *menuitem,
+-                       GtkStyle      *old_style,
+-                       GdmAppletData *adata)
+-{
+-        GtkWidget *image;
+-
+-        if (GDM_IS_ENTRY_MENU_ITEM (menuitem)) {
+-        } else {
+-                const char *icon_name;
+-
+-                if (menuitem == adata->login_screen_item) {
+-                        icon_name = "system-users";
+-                } else if (menuitem == adata->lock_screen_item) {
+-                        icon_name = "system-lock-screen";
+-                } else if (menuitem == adata->quit_session_item) {
+-                        icon_name = "system-log-out";
+-                } else if (menuitem == adata->account_item) {
+-                        icon_name = "user-info";
+-                } else if (menuitem == adata->control_panel_item) {
+-                        icon_name = "preferences-desktop";
+-                } else {
+-                        icon_name = GTK_STOCK_MISSING_IMAGE;
+-                }
+-
+-                image = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (menuitem));
+-                gtk_image_set_pixel_size (GTK_IMAGE (image), adata->pixel_size);
+-                gtk_image_set_from_icon_name (GTK_IMAGE (image), icon_name,
+-                                              adata->icon_size);
+-        }
+-}
+-
+-static void
+-on_user_changed (GdmUser         *user,
+-                 GdmAppletData   *adata)
+-{
+-        g_debug ("user changed");
+-        update_label (adata);
+-        reset_icon (adata);
+-}
+-
+-/* Called every time the menu is displayed (and also for some reason
+- * immediately it's created, which does no harm). All we have to do
+- * here is kick off a request to GDM to let us know which users are
+- * logged in, so we can display check marks next to their names.
+- */
+-static gboolean
+-menu_expose_cb (GtkWidget *menu,
+-                gpointer   data)
+-{
+-        char *program;
+-        GdmAppletData *adata = data;
+-
+-        program = g_find_program_in_path ("gnome-control-center");
+-        if (program != NULL) {
+-                gtk_widget_show (adata->control_panel_item);
+-        } else {
+-                gtk_widget_hide (adata->control_panel_item);
+-        }
+-        g_free (program);
+-        return FALSE;
+-}
+-
+-static void
+-maybe_lock_screen (GdmAppletData *adata)
+-{
+-        char      *args[3];
+-        GError    *err;
+-        GdkScreen *screen;
+-        gboolean   use_gscreensaver = TRUE;
+-        gboolean   res;
+-
+-        g_debug ("Attempting to lock screen");
+-
+-        args[0] = g_find_program_in_path ("gnome-screensaver-command");
+-        if (args[0] == NULL) {
+-                args[0] = g_find_program_in_path ("xscreensaver-command");
+-                use_gscreensaver = FALSE;
+-        }
+-
+-        if (args[0] == NULL) {
+-                return;
+-        }
+-
+-        if (use_gscreensaver) {
+-                args[1] = "--lock";
+-        } else {
+-                args[1] = "-lock";
+-        }
+-        args[2] = NULL;
+-
+-        if (gtk_widget_has_screen (GTK_WIDGET (adata->applet))) {
+-                screen = gtk_widget_get_screen (GTK_WIDGET (adata->applet));
+-        } else {
+-                screen = gdk_screen_get_default ();
+-        }
+-
+-        err = NULL;
+-        res = gdk_spawn_on_screen (screen,
+-                                   g_get_home_dir (),
+-                                   args,
+-                                   NULL,
+-                                   0,
+-                                   NULL,
+-                                   NULL,
+-                                   NULL,
+-                                   &err);
+-        if (! res) {
+-                g_warning (_("Can't lock screen: %s"), err->message);
+-                g_error_free (err);
+-        }
+-
+-        if (use_gscreensaver) {
+-                args[1] = "--throttle";
+-        } else {
+-                args[1] = "-throttle";
+-        }
+-
+-        err = NULL;
+-        res = gdk_spawn_on_screen (screen,
+-                                   g_get_home_dir (),
+-                                   args,
+-                                   NULL,
+-                                   (G_SPAWN_STDERR_TO_DEV_NULL
+-                                   | G_SPAWN_STDOUT_TO_DEV_NULL),
+-                                   NULL,
+-                                   NULL,
+-                                   NULL,
+-                                   &err);
+-        if (! res) {
+-                g_warning (_("Can't temporarily set screensaver to blank screen: %s"),
+-                           err->message);
+-                g_error_free (err);
+-        }
+-
+-        g_free (args[0]);
+-}
+-
+-static void
+-do_switch (GdmAppletData *adata,
+-           GdmUser       *user)
+-{
+-        guint num_sessions;
+-
+-        g_debug ("Do user switch");
+-
+-        if (user == NULL) {
+-                gdm_user_manager_goto_login_session (adata->manager);
+-                goto out;
+-        }
+-
+-        num_sessions = gdm_user_get_num_sessions (user);
+-        if (num_sessions > 0) {
+-                gdm_user_manager_activate_user_session (adata->manager, user);
+-        } else {
+-                gdm_user_manager_goto_login_session (adata->manager);
+-        }
+- out:
+-        maybe_lock_screen (adata);
+-}
+-
+-static void
+-update_switch_user (GdmAppletData *adata)
+-{
+-        gboolean can_switch;
+-        gboolean has_other_users;
+-
+-        can_switch = gdm_user_manager_can_switch (adata->manager);
+-        g_object_get (adata->manager,
+-                      "has-multiple-users", &has_other_users,
+-                      NULL);
+-
+-        if (can_switch && has_other_users) {
+-                gtk_widget_show (adata->login_screen_item);
+-        } else {
+-
+-                gtk_widget_hide (adata->login_screen_item);
+-        }
+-}
+-
+-static void
+-on_manager_is_loaded_changed (GdmUserManager *manager,
+-                              GParamSpec     *pspec,
+-                              GdmAppletData  *adata)
+-{
+-        update_switch_user (adata);
+-}
+-
+-static void
+-on_manager_has_multiple_users_changed (GdmUserManager       *manager,
+-                                       GParamSpec           *pspec,
+-                                       GdmAppletData        *adata)
+-{
+-        update_switch_user (adata);
+-}
+-
+-#ifdef BUILD_PRESENSE_STUFF
+-static void
+-on_user_item_activate (GtkMenuItem   *item,
+-                       GdmAppletData *adata)
+-{
+-        g_signal_stop_emission_by_name (item, "activate");
+-}
+-#endif
+-
+-static void
+-on_control_panel_activate (GtkMenuItem   *item,
+-                           GdmAppletData *adata)
+-{
+-        char      *args[2];
+-        GError    *error;
+-        GdkScreen *screen;
+-        gboolean   res;
+-
+-        args[0] = g_find_program_in_path ("gnome-control-center");
+-        if (args[0] == NULL) {
+-                return;
+-        }
+-        args[1] = NULL;
+-
+-        if (gtk_widget_has_screen (GTK_WIDGET (adata->applet))) {
+-                screen = gtk_widget_get_screen (GTK_WIDGET (adata->applet));
+-        } else {
+-                screen = gdk_screen_get_default ();
+-        }
+-
+-        error = NULL;
+-        res = gdk_spawn_on_screen (screen,
+-                                   g_get_home_dir (),
+-                                   args,
+-                                   NULL,
+-                                   0,
+-                                   NULL,
+-                                   NULL,
+-                                   NULL,
+-                                   &error);
+-        if (! res) {
+-                g_warning (_("Can't lock screen: %s"), error->message);
+-                g_error_free (error);
+-        }
+-
+-        g_free (args[0]);
+-}
+-
+-static void
+-on_account_activate (GtkMenuItem   *item,
+-                     GdmAppletData *adata)
+-{
+-        char      *args[2];
+-        GError    *error;
+-        GdkScreen *screen;
+-        gboolean   res;
+-
+-        args[0] = g_find_program_in_path ("accounts-dialog");
+-        if (args[0] == NULL) {
+-                args[0] = g_find_program_in_path ("gnome-about-me");
+-                if (args[0] == NULL) {
+-                        return;
+-                }
+-        }
+-        args[1] = NULL;
+-
+-        if (gtk_widget_has_screen (GTK_WIDGET (adata->applet))) {
+-                screen = gtk_widget_get_screen (GTK_WIDGET (adata->applet));
+-        } else {
+-                screen = gdk_screen_get_default ();
+-        }
+-
+-        error = NULL;
+-        res = gdk_spawn_on_screen (screen,
+-                                   g_get_home_dir (),
+-                                   args,
+-                                   NULL,
+-                                   0,
+-                                   NULL,
+-                                   NULL,
+-                                   NULL,
+-                                   &error);
+-        if (! res) {
+-                g_warning (_("Can't lock screen: %s"), error->message);
+-                g_error_free (error);
+-        }
+-
+-        g_free (args[0]);
+-}
+-
+-static void
+-on_lock_screen_activate (GtkMenuItem   *item,
+-                         GdmAppletData *adata)
+-{
+-        maybe_lock_screen (adata);
+-}
+-
+-static void
+-on_login_screen_activate (GtkMenuItem   *item,
+-                          GdmAppletData *adata)
+-{
+-        GdmUser *user;
+-
+-        user = NULL;
+-
+-        do_switch (adata, user);
+-}
+-
+-static void
+-on_quit_session_activate (GtkMenuItem   *item,
+-                          GdmAppletData *adata)
+-{
+-        char      *args[3];
+-        GError    *error;
+-        GdkScreen *screen;
+-        gboolean   res;
+-
+-        args[0] = g_find_program_in_path ("gnome-session-save");
+-        if (args[0] == NULL) {
+-                return;
+-        }
+-
+-        args[1] = "--logout-dialog";
+-        args[2] = NULL;
+-
+-        if (gtk_widget_has_screen (GTK_WIDGET (adata->applet))) {
+-                screen = gtk_widget_get_screen (GTK_WIDGET (adata->applet));
+-        } else {
+-                screen = gdk_screen_get_default ();
+-        }
+-
+-        error = NULL;
+-        res = gdk_spawn_on_screen (screen,
+-                                   g_get_home_dir (),
+-                                   args,
+-                                   NULL,
+-                                   0,
+-                                   NULL,
+-                                   NULL,
+-                                   NULL,
+-                                   &error);
+-        if (! res) {
+-                g_warning (_("Can't log out: %s"), error->message);
+-                g_error_free (error);
+-        }
+-
+-        g_free (args[0]);
+-}
+-
+-#ifdef BUILD_PRESENSE_STUFF
+-static gboolean
+-on_menu_key_press_event (GtkWidget     *widget,
+-                         GdkEventKey   *event,
+-                         GdmAppletData *adata)
+-{
+-        GtkWidget *entry;
+-
+-        entry = gdm_entry_menu_item_get_entry (GDM_ENTRY_MENU_ITEM (adata->user_item));
+-
+-        if (GTK_WIDGET_HAS_FOCUS (entry)) {
+-                gtk_widget_event (entry, (GdkEvent *)event);
+-                return TRUE;
+-        } else {
+-                return FALSE;
+-        }
+-}
+-
+-static void
+-save_status (GdmAppletData *adata,
+-             guint          status)
+-{
+-        if (adata->current_status != status) {
+-                GError *error;
+-
+-                adata->current_status = status;
+-
+-                g_debug ("Saving status: %u", status);
+-                error = NULL;
+-                dbus_g_proxy_call (adata->presence_proxy,
+-                                   "SetStatus",
+-                                   &error,
+-                                   G_TYPE_UINT, status,
+-                                   G_TYPE_INVALID,
+-                                   G_TYPE_INVALID);
+-
+-                if (error != NULL) {
+-                        g_warning ("Couldn't save presence status: %s", error->message);
+-                        g_error_free (error);
+-                }
+-        }
+-}
+-
+-static void
+-on_status_available_activate (GtkWidget     *widget,
+-                              GdmAppletData *adata)
+-{
+-
+-        if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) {
+-                save_status (adata, GSM_PRESENCE_STATUS_AVAILABLE);
+-        }
+-}
+-
+-static void
+-on_status_busy_activate (GtkWidget     *widget,
+-                         GdmAppletData *adata)
+-{
+-         if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) {
+-                 save_status (adata, GSM_PRESENCE_STATUS_BUSY);
+-         }
+-}
+-
+-static void
+-on_status_invisible_activate (GtkWidget     *widget,
+-                              GdmAppletData *adata)
+-{
+-         if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) {
+-                 save_status (adata, GSM_PRESENCE_STATUS_INVISIBLE);
+-         }
+-}
+-
+-static struct {
+-        char      *icon_name;
+-        char      *display_name;
+-        void      *menu_callback;
+-        GtkWidget *widget;
+-} statuses[] = {
+-        { "user-online", N_("Available"), on_status_available_activate, NULL },
+-        { "user-invisible", N_("Invisible"), on_status_invisible_activate, NULL },
+-        { "user-busy", N_("Busy"), on_status_busy_activate, NULL },
+-        { "user-away", N_("Away"), NULL, NULL },
+-};
+-#endif
+-
+-static void
+-update_label (GdmAppletData *adata)
+-{
+-        GtkWidget *label;
+-        char      *markup;
+-
+-        label = gtk_bin_get_child (GTK_BIN (adata->menuitem));
+-
+-#ifdef BUILD_PRESENSE_STUFF
+-        markup = g_strdup_printf ("<b>%s</b> <small>(%s)</small>",
+-                                  gdm_user_get_real_name (GDM_USER (adata->user)),
+-                                  _(statuses[adata->current_status].display_name));
+-#else
+-        markup = g_strdup_printf ("<b>%s</b>",
+-                                  gdm_user_get_real_name (GDM_USER (adata->user)));
+-#endif
+-        gtk_label_set_markup (GTK_LABEL (label), markup);
+-        g_free (markup);
+-}
+-
+-#ifdef BUILD_PRESENSE_STUFF
+-static void
+-save_status_text (GdmAppletData *adata)
+-{
+-        GtkWidget     *entry;
+-        GtkTextBuffer *buffer;
+-        char          *escaped_text;
+-        char          *text;
+-        GtkTextIter    start, end;
+-
+-        entry = gdm_entry_menu_item_get_entry (GDM_ENTRY_MENU_ITEM (adata->user_item));
+-        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry));
+-        gtk_text_buffer_get_bounds (buffer, &start, &end);
+-        text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
+-        escaped_text = g_markup_escape_text (text, -1);
+-
+-        if (escaped_text != NULL) {
+-                GError *error;
+-
+-                error = NULL;
+-                dbus_g_proxy_call (adata->presence_proxy,
+-                                   "SetStatusText",
+-                                   &error,
+-                                   G_TYPE_STRING, escaped_text,
+-                                   G_TYPE_INVALID,
+-                                   G_TYPE_INVALID);
+-
+-                if (error != NULL) {
+-                        g_warning ("Couldn't set presence status text: %s", error->message);
+-                        g_error_free (error);
+-                }
+-        }
+-
+-        g_free (text);
+-        g_free (escaped_text);
+-}
+-
+-static void
+-on_user_item_deselect (GtkWidget     *item,
+-                       GdmAppletData *adata)
+-{
+-        save_status_text (adata);
+-}
+-#endif
+-
+-static void
+-create_sub_menu (GdmAppletData *adata)
+-{
+-        GtkWidget *item;
+-#ifdef BUILD_PRESENSE_STUFF
+-        int        i;
+-        GSList    *radio_group;
+-#endif
+-
+-        adata->menu = gtk_menu_new ();
+-#ifdef BUILD_PRESENSE_STUFF
+-        g_signal_connect (adata->menu,
+-                          "key-press-event",
+-                          G_CALLBACK (on_menu_key_press_event),
+-                          adata);
+-#endif
+-        gtk_menu_item_set_submenu (GTK_MENU_ITEM (adata->menuitem), adata->menu);
+-        g_signal_connect (adata->menu, "style-set",
+-                          G_CALLBACK (menu_style_set_cb), adata);
+-        g_signal_connect (adata->menu, "show",
+-                          G_CALLBACK (menu_expose_cb), adata);
+-
+-#ifdef BUILD_PRESENSE_STUFF
+-        adata->user_item = gdm_entry_menu_item_new ();
+-        gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu),
+-                               adata->user_item);
+-        gtk_widget_show (adata->user_item);
+-        g_signal_connect (adata->user_item, "activate",
+-                          G_CALLBACK (on_user_item_activate), adata);
+-        g_signal_connect (adata->user_item,
+-                          "deselect",
+-                          G_CALLBACK (on_user_item_deselect),
+-                          adata);
+-
+-        item = gtk_separator_menu_item_new ();
+-        gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), item);
+-        gtk_widget_show (item);
+-
+-        radio_group = NULL;
+-        for (i = 0; i < G_N_ELEMENTS (statuses); i++) {
+-                GtkWidget *hbox;
+-                GtkWidget *label;
+-                GtkWidget *image;
+-                GtkWidget *item;
+-
+-                if (statuses[i].menu_callback == NULL) {
+-                        continue;
+-                }
+-
+-                item = gtk_radio_menu_item_new (radio_group);
+-                radio_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item));
+-                hbox = gtk_hbox_new (FALSE, 3);
+-                label = gtk_label_new (_(statuses[i].display_name));
+-                gtk_label_set_justify (GTK_LABEL(label), GTK_JUSTIFY_LEFT);
+-                gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+-                gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+-                gtk_widget_show (label);
+-                image = gtk_image_new_from_icon_name (statuses[i].icon_name, GTK_ICON_SIZE_MENU);
+-                gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0);
+-                gtk_widget_show (image);
+-                gtk_widget_show (hbox);
+-                gtk_container_add (GTK_CONTAINER (item), hbox);
+-
+-                gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu),
+-                                       item);
+-                g_signal_connect (item, "activate",
+-                                  G_CALLBACK (statuses[i].menu_callback), adata);
+-                gtk_widget_show (item);
+-
+-                statuses[i].widget = item;
+-        }
+-
+-        item = gtk_separator_menu_item_new ();
+-        gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), item);
+-        gtk_widget_show (item);
+-#endif
+-
+-        adata->account_item = gtk_image_menu_item_new_with_label (_("Account Information"));
+-        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->account_item),
+-                                       gtk_image_new ());
+-        gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu),
+-                               adata->account_item);
+-        g_signal_connect (adata->account_item, "style-set",
+-                          G_CALLBACK (menuitem_style_set_cb), adata);
+-        g_signal_connect (adata->account_item, "activate",
+-                          G_CALLBACK (on_account_activate), adata);
+-        gtk_widget_show (adata->account_item);
+-
+-
+-        adata->control_panel_item = gtk_image_menu_item_new_with_label (_("System Preferences"));
+-        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->control_panel_item),
+-                                       gtk_image_new ());
+-        gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu),
+-                               adata->control_panel_item);
+-        g_signal_connect (adata->control_panel_item, "style-set",
+-                          G_CALLBACK (menuitem_style_set_cb), adata);
+-        g_signal_connect (adata->control_panel_item, "activate",
+-                          G_CALLBACK (on_control_panel_activate), adata);
+-
+-        item = gtk_separator_menu_item_new ();
+-        gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu), item);
+-        gtk_widget_show (item);
+-
+-        adata->lock_screen_item = gtk_image_menu_item_new_with_label (_("Lock Screen"));
+-        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->lock_screen_item),
+-                                       gtk_image_new ());
+-        gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu),
+-                               adata->lock_screen_item);
+-        g_signal_connect (adata->lock_screen_item, "style-set",
+-                          G_CALLBACK (menuitem_style_set_cb), adata);
+-        g_signal_connect (adata->lock_screen_item, "activate",
+-                          G_CALLBACK (on_lock_screen_activate), adata);
+-        /* Only show if not locked down */
+-
+-        adata->login_screen_item = gtk_image_menu_item_new_with_label (_("Switch User"));
+-        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->login_screen_item),
+-                                       gtk_image_new ());
+-        gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu),
+-                               adata->login_screen_item);
+-        g_signal_connect (adata->login_screen_item, "style-set",
+-                          G_CALLBACK (menuitem_style_set_cb), adata);
+-        g_signal_connect (adata->login_screen_item, "activate",
+-                          G_CALLBACK (on_login_screen_activate), adata);
+-        /* Only show switch user if there are other users */
+-
+-        adata->quit_session_item = gtk_image_menu_item_new_with_label (_("Quit…"));
+-        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->quit_session_item),
+-                                       gtk_image_new ());
+-        gtk_menu_shell_append (GTK_MENU_SHELL (adata->menu),
+-                               adata->quit_session_item);
+-        g_signal_connect (adata->quit_session_item, "style-set",
+-                          G_CALLBACK (menuitem_style_set_cb), adata);
+-        g_signal_connect (adata->quit_session_item, "activate",
+-                          G_CALLBACK (on_quit_session_activate), adata);
+-        gtk_widget_show (adata->quit_session_item);
+-        gtk_widget_show (adata->menu);
+-}
+-
+-static void
+-destroy_sub_menu (GdmAppletData *adata)
+-{
+-        gtk_menu_item_set_submenu (GTK_MENU_ITEM (adata->menuitem), NULL);
+-}
+-
+-static void
+-set_menu_visibility (GdmAppletData *adata,
+-                     gboolean       visible)
+-{
+-
+-        if (visible) {
+-                create_sub_menu (adata);
+-        } else {
+-                destroy_sub_menu (adata);
+-        }
+-}
+-
+-static void
+-client_notify_lockdown_func (GConfClient   *client,
+-                             guint          cnxn_id,
+-                             GConfEntry    *entry,
+-                             GdmAppletData *adata)
+-{
+-        GConfValue *value;
+-        const char *key;
+-
+-        value = gconf_entry_get_value (entry);
+-        key = gconf_entry_get_key (entry);
+-
+-        if (value == NULL || key == NULL) {
+-                return;
+-        }
+-
+-        if (strcmp (key, LOCKDOWN_USER_SWITCHING_KEY) == 0) {
+-                if (gconf_value_get_bool (value)) {
+-                        set_menu_visibility (adata, FALSE);
+-                } else {
+-                        set_menu_visibility (adata, TRUE);
+-                }
+-        } else if (strcmp (key, LOCKDOWN_LOCK_SCREEN_KEY) == 0) {
+-                if (gconf_value_get_bool (value)) {
+-                        gtk_widget_hide (adata->lock_screen_item);
+-                } else {
+-                        gtk_widget_show (adata->lock_screen_item);
+-                }
+-        }
+-}
+-
+-static void
+-reset_icon (GdmAppletData *adata)
+-{
+-        GdkPixbuf *pixbuf;
+-        GtkWidget *image;
+-
+-        if (adata->user == NULL || !gtk_widget_has_screen (GTK_WIDGET (adata->menuitem))) {
+-                return;
+-        }
+-
+-#ifdef BUILD_PRESENSE_STUFF
+-        if (adata->user_item != NULL) {
+-                image = gdm_entry_menu_item_get_image (GDM_ENTRY_MENU_ITEM (adata->user_item));
+-                pixbuf = gdm_user_render_icon (adata->user, adata->panel_size * 3);
+-                if (pixbuf == NULL) {
+-                        return;
+-                }
+-
+-                gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
+-                g_object_unref (pixbuf);
+-        }
+-#else
+-        pixbuf = gdm_user_render_icon (adata->user, adata->panel_size);
+-
+-        if (pixbuf == NULL) {
+-                return;
+-        }
+-
+-        image = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (adata->menuitem));
+-        gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
+-        g_object_unref (pixbuf);
+-#endif
+-}
+-
+-static void
+-setup_current_user_now (GdmAppletData *adata)
+-{
+-        g_assert (adata->user != NULL);
+-
+-        if (adata->user_loaded_notify_id != 0) {
+-                g_signal_handler_disconnect (adata->user, adata->user_loaded_notify_id);
+-        }
+-        adata->user_loaded_notify_id = 0;
+-
+-        update_label (adata);
+-        reset_icon (adata);
+-        adata->user_changed_notify_id =
+-            g_signal_connect (adata->user,
+-                              "changed",
+-                              G_CALLBACK (on_user_changed),
+-                              adata);
+-}
+-
+-static void
+-on_current_user_loaded (GdmUser       *user,
+-                        GParamSpec    *pspec,
+-                        GdmAppletData *adata)
+-{
+-        if (!gdm_user_is_loaded (user)) {
+-                return;
+-        }
+-
+-        setup_current_user_now (adata);
+-}
+-
+-static void
+-setup_current_user (GdmAppletData *adata)
+-{
+-        adata->user = gdm_user_manager_get_user_by_uid (adata->manager, getuid ());
+-
+-        if (adata->user == NULL) {
+-                g_warning ("Could not setup current user");
+-                return;
+-        }
+-
+-        g_object_ref (adata->user);
+-
+-        adata->menuitem = gtk_image_menu_item_new_with_label ("");
+-#ifndef BUILD_PRESENSE_STUFF
+-        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (adata->menuitem),
+-                                       gtk_image_new ());
+-#endif
+-        gtk_menu_shell_append (GTK_MENU_SHELL (adata->menubar), adata->menuitem);
+-        gtk_widget_show (adata->menuitem);
+-
+-        if (gdm_user_is_loaded (adata->user)) {
+-                setup_current_user_now (adata);
+-                return;
+-        }
+-
+-        adata->user_loaded_notify_id = g_signal_connect (adata->user,
+-                                                         "notify::is-loaded",
+-                                                         G_CALLBACK (on_current_user_loaded),
+-                                                         adata);
+-}
+-
+-#ifdef BUILD_PRESENSE_STUFF
+-static void
+-set_status (GdmAppletData *adata,
+-            guint status)
+-{
+-        int i;
+-
+-        g_debug ("Setting current status: %u", status);
+-        adata->current_status = status;
+-        for (i = 0; i < G_N_ELEMENTS (statuses); i++) {
+-                if (statuses[i].widget == NULL) {
+-                        continue;
+-                }
+-                if (i == status) {
+-                        gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (statuses[i].widget),
+-                                                        TRUE);
+-                }
+-        }
+-
+-        update_label (adata);
+-}
+-
+-static void
+-on_presence_status_changed (DBusGProxy    *presence_proxy,
+-                            guint          status,
+-                            GdmAppletData *adata)
+-{
+-        g_debug ("Status changed: %u", status);
+-
+-        set_status (adata, status);
+-}
+-
+-static void
+-set_status_text (GdmAppletData *adata,
+-                 const char    *status_text)
+-{
+-        GtkWidget     *entry;
+-        GtkTextBuffer *buffer;
+-
+-        g_debug ("Status text changed: %s", status_text);
+-
+-        entry = gdm_entry_menu_item_get_entry (GDM_ENTRY_MENU_ITEM (adata->user_item));
+-        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (entry));
+-        gtk_text_buffer_set_text (buffer, status_text, -1);
+-}
+-
+-static void
+-on_presence_status_text_changed (DBusGProxy    *presence_proxy,
+-                                 const char    *status_text,
+-                                 GdmAppletData *adata)
+-{
+-        set_status_text (adata, status_text);
+-}
+-#endif
+-
+-static gboolean
+-fill_applet (PanelApplet *applet)
+-{
+-        static const BonoboUIVerb menu_verbs[] = {
+-                BONOBO_UI_VERB ("GdmAboutMe", about_me_cb),
+-                BONOBO_UI_VERB ("GdmUsersGroupsAdmin", admin_cb),
+-                BONOBO_UI_VERB ("GdmAbout", about_cb),
+-                BONOBO_UI_VERB_END
+-        };
+-        static gboolean    first_time = FALSE;
+-        char              *tmp;
+-        BonoboUIComponent *popup_component;
+-        GdmAppletData     *adata;
+-        GError            *error;
+-        DBusGConnection   *bus;
+-
+-        if (!first_time) {
+-                first_time = TRUE;
+-
+-                /* Do this here so it's only done once. */
+-                gtk_rc_parse_string ("style \"gdm-user-switch-menubar-style\"\n"
+-                                     "{\n"
+-                                     "GtkMenuBar::shadow-type = none\n"
+-                                     "GtkMenuBar::internal-padding = 0\n"
+-                                     "}\n"
+-                                     "style \"gdm-user-switch-applet-style\"\n"
+-                                     "{\n"
+-                                     "GtkWidget::focus-line-width = 0\n"
+-                                     "GtkWidget::focus-padding = 0\n"
+-                                     "}\n"
+-                                     "widget \"*.gdm-user-switch-menubar\" style \"gdm-user-switch-menubar-style\"\n"
+-                                     "widget \"*.gdm-user-switch-applet\" style \"gdm-user-switch-applet-style\"\n");
+-                gtk_window_set_default_icon_name ("stock_people");
+-                g_set_application_name (_("User Switch Applet"));
+-
+-                if (! gdm_settings_client_init (DATADIR "/gdm/gdm.schemas", "/")) {
+-                        g_critical ("Unable to initialize settings client");
+-                        exit (1);
+-                }
+-
+-        }
+-
+-        adata = g_new0 (GdmAppletData, 1);
+-        adata->applet = applet;
+-        adata->panel_size = 24;
+-
+-        adata->client = gconf_client_get_default ();
+-
+-        gtk_widget_set_tooltip_text (GTK_WIDGET (applet), _("Change account settings and status"));
+-        gtk_container_set_border_width (GTK_CONTAINER (applet), 0);
+-        gtk_widget_set_name (GTK_WIDGET (applet), "gdm-user-switch-applet");
+-        panel_applet_set_flags (applet, PANEL_APPLET_EXPAND_MINOR);
+-        panel_applet_setup_menu_from_file (applet, NULL,
+-                                           DATADIR "/gnome-2.0/ui/GNOME_FastUserSwitchApplet.xml",
+-                                           NULL, menu_verbs, adata);
+-
+-        popup_component = panel_applet_get_popup_component (applet);
+-
+-        /* Hide the admin context menu items if locked down or no cmd-line */
+-        if (gconf_client_get_bool (adata->client,
+-                                   LOCKDOWN_COMMAND_LINE_KEY,
+-                                   NULL) ||
+-            panel_applet_get_locked_down (applet)) {
+-                bonobo_ui_component_set_prop (popup_component,
+-                                              "/popups/button3/GdmSeparator",
+-                                              "hidden", "1", NULL);
+-                bonobo_ui_component_set_prop (popup_component,
+-                                              "/commands/GdmUsersGroupsAdmin",
+-                                              "hidden", "1", NULL);
+-        } else {
+-#ifndef USERS_ADMIN
+-#  ifdef GDM_SETUP
+-                bonobo_ui_component_set_prop (popup_component,
+-                                              "/popups/button3/GdmSeparator",
+-                                              "hidden", "1",
+-                                              NULL);
+-#  endif /* !GDM_SETUP */
+-                bonobo_ui_component_set_prop (popup_component,
+-                                              "/commands/GdmUsersGroupsAdmin",
+-                                              "hidden", "1",
+-                                              NULL);
+-#endif /* !USERS_ADMIN */
+-        }
+-
+-        /* Hide the gdmphotosetup item if it can't be found in the path. */
+-        tmp = g_find_program_in_path ("gnome-about-me");
+-        if (!tmp) {
+-                bonobo_ui_component_set_prop (popup_component,
+-                                              "/commands/GdmAboutMe",
+-                                              "hidden", "1",
+-                                              NULL);
+-        } else {
+-                g_free (tmp);
+-        }
+-
+-        g_signal_connect (adata->applet,
+-                          "style-set",
+-                          G_CALLBACK (applet_style_set_cb), adata);
+-        g_signal_connect (applet,
+-                          "change-background",
+-                          G_CALLBACK (applet_change_background_cb), adata);
+-        g_signal_connect (applet,
+-                          "size-allocate",
+-                          G_CALLBACK (applet_size_allocate_cb), adata);
+-        g_signal_connect (applet,
+-                          "key-press-event",
+-                          G_CALLBACK (applet_key_press_event_cb), adata);
+-        g_signal_connect_after (applet,
+-                                "focus-in-event",
+-                                G_CALLBACK (gtk_widget_queue_draw), NULL);
+-        g_signal_connect_after (applet,
+-                                "focus-out-event",
+-                                G_CALLBACK (gtk_widget_queue_draw), NULL);
+-        g_object_set_data_full (G_OBJECT (applet),
+-                                "gdm-applet-data",
+-                                adata,
+-                                (GDestroyNotify) gdm_applet_data_free);
+-
+-        adata->menubar = gtk_menu_bar_new ();
+-        gtk_widget_set_name (adata->menubar, "gdm-user-switch-menubar");
+-        gtk_widget_set_can_focus (adata->menubar, TRUE);
+-        g_signal_connect (adata->menubar, "button-press-event",
+-                          G_CALLBACK (menubar_button_press_event_cb), adata);
+-        g_signal_connect_after (adata->menubar, "expose-event",
+-                                G_CALLBACK (menubar_expose_event_cb), adata);
+-        gtk_container_add (GTK_CONTAINER (applet), adata->menubar);
+-        gtk_widget_show (adata->menubar);
+-
+-        adata->manager = gdm_user_manager_ref_default ();
+-        g_object_set (adata->manager, "include-all", TRUE, NULL);
+-        g_signal_connect (adata->manager,
+-                          "notify::is-loaded",
+-                          G_CALLBACK (on_manager_is_loaded_changed),
+-                          adata);
+-        g_signal_connect (adata->manager,
+-                          "notify::has-multiple-users",
+-                          G_CALLBACK (on_manager_has_multiple_users_changed),
+-                          adata);
+-
+-        gdm_user_manager_queue_load (adata->manager);
+-        setup_current_user (adata);
+-
+-        gconf_client_add_dir (adata->client,
+-                              LOCKDOWN_DIR,
+-                              GCONF_CLIENT_PRELOAD_ONELEVEL,
+-                              NULL);
+-
+-        adata->client_notify_lockdown_id = gconf_client_notify_add (adata->client,
+-                                                                    LOCKDOWN_DIR,
+-                                                                    (GConfClientNotifyFunc)client_notify_lockdown_func,
+-                                                                    adata,
+-                                                                    NULL,
+-                                                                    NULL);
+-
+-        if (gconf_client_get_bool (adata->client, LOCKDOWN_USER_SWITCHING_KEY, NULL)) {
+-                set_menu_visibility (adata, FALSE);
+-        } else {
+-                set_menu_visibility (adata, TRUE);
+-        }
+-        if (gconf_client_get_bool (adata->client, LOCKDOWN_LOCK_SCREEN_KEY, NULL)) {
+-                        gtk_widget_hide (adata->lock_screen_item);
+-        } else {
+-                        gtk_widget_show (adata->lock_screen_item);
+-        }
+-
+-        error = NULL;
+-        bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+-        if (bus == NULL) {
+-                g_warning ("Unable to get session bus: %s", error->message);
+-                g_error_free (error);
+-                goto done;
+-        }
+-
+-#ifdef BUILD_PRESENSE_STUFF
+-        adata->presence_proxy = dbus_g_proxy_new_for_name (bus,
+-                                                          "org.gnome.SessionManager",
+-                                                          "/org/gnome/SessionManager/Presence",
+-                                                          "org.gnome.SessionManager.Presence");
+-        if (adata->presence_proxy != NULL) {
+-                DBusGProxy *proxy;
+-
+-                dbus_g_proxy_add_signal (adata->presence_proxy,
+-                                         "StatusChanged",
+-                                         G_TYPE_UINT,
+-                                         G_TYPE_INVALID);
+-                dbus_g_proxy_connect_signal (adata->presence_proxy,
+-                                             "StatusChanged",
+-                                             G_CALLBACK (on_presence_status_changed),
+-                                             adata,
+-                                             NULL);
+-                dbus_g_proxy_add_signal (adata->presence_proxy,
+-                                         "StatusTextChanged",
+-                                         G_TYPE_STRING,
+-                                         G_TYPE_INVALID);
+-                dbus_g_proxy_connect_signal (adata->presence_proxy,
+-                                             "StatusTextChanged",
+-                                             G_CALLBACK (on_presence_status_text_changed),
+-                                             adata,
+-                                             NULL);
+-
+-
+-                proxy = dbus_g_proxy_new_from_proxy (adata->presence_proxy,
+-                                                     "org.freedesktop.DBus.Properties",
+-                                                     "/org/gnome/SessionManager/Presence");
+-                if (proxy != NULL) {
+-                        guint       status;
+-                        const char *status_text;
+-                        GValue      value = { 0, };
+-
+-                        status = 0;
+-                        status_text = NULL;
+-
+-                        error = NULL;
+-                        dbus_g_proxy_call (proxy,
+-                                           "Get",
+-                                           &error,
+-                                           G_TYPE_STRING, "org.gnome.SessionManager.Presence",
+-                                           G_TYPE_STRING, "status",
+-                                           G_TYPE_INVALID,
+-                                           G_TYPE_VALUE, &value,
+-                                           G_TYPE_INVALID);
+-
+-                        if (error != NULL) {
+-                                g_warning ("Couldn't get presence status: %s", error->message);
+-                                g_error_free (error);
+-                        } else {
+-                                status = g_value_get_uint (&value);
+-                        }
+-
+-                        g_value_unset (&value);
+-
+-                        error = NULL;
+-                        dbus_g_proxy_call (proxy,
+-                                           "Get",
+-                                           &error,
+-                                           G_TYPE_STRING, "org.gnome.SessionManager.Presence",
+-                                           G_TYPE_STRING, "status-text",
+-                                           G_TYPE_INVALID,
+-                                           G_TYPE_VALUE, &value,
+-                                           G_TYPE_INVALID);
+-
+-                        if (error != NULL) {
+-                                g_warning ("Couldn't get presence status text: %s", error->message);
+-                                g_error_free (error);
+-                        } else {
+-                                status_text = g_value_get_string (&value);
+-                        }
+-
+-                        set_status (adata, status);
+-                        set_status_text (adata, status_text);
+-                }
+-        } else {
+-                g_warning ("Failed to get session presence proxy");
+-        }
+-#endif
+-
+- done:
+-        gtk_widget_show (GTK_WIDGET (adata->applet));
+-
+-        return TRUE;
+-}
+-
+-static gboolean
+-applet_factory (PanelApplet   *applet,
+-                const char    *iid,
+-                gpointer       data)
+-{
+-        gboolean ret;
+-        ret = FALSE;
+-        if (strcmp (iid, "OAFIID:GNOME_FastUserSwitchApplet") == 0) {
+-                ret = fill_applet (applet);
+-        }
+-        return ret;
+-}
+diff --git a/gui/user-switch-applet/gdm-entry-menu-item.c b/gui/user-switch-applet/gdm-entry-menu-item.c
+deleted file mode 100644
+index d657e7a..0000000
+--- a/gui/user-switch-applet/gdm-entry-menu-item.c
++++ /dev/null
+@@ -1,304 +0,0 @@
+-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+- *
+- * Copyright (C) 2008 Red Hat, Inc.
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+- */
+-
+-#include "config.h"
+-
+-#include <unistd.h>
+-#include <sys/types.h>
+-
+-#include <string.h>
+-
+-#include <glib/gi18n.h>
+-#include <gtk/gtk.h>
+-
+-#include "gdm-entry-menu-item.h"
+-
+-/* same as twitter */
+-#define TEXT_BUFFER_MAX_CHARS 64
+-
+-enum
+-{
+-        PROP_0,
+-};
+-
+-struct _GdmEntryMenuItem
+-{
+-        GtkMenuItem      parent;
+-
+-        GtkWidget       *hbox;
+-        GtkWidget       *image;
+-        GtkWidget       *entry;
+-};
+-
+-struct _GdmEntryMenuItemClass
+-{
+-        GtkMenuItemClass parent_class;
+-};
+-
+-G_DEFINE_TYPE (GdmEntryMenuItem, gdm_entry_menu_item, GTK_TYPE_MENU_ITEM)
+-
+-static void
+-gdm_entry_menu_item_set_property (GObject      *object,
+-                                  guint         param_id,
+-                                  const GValue *value,
+-                                  GParamSpec   *pspec)
+-{
+-        GdmEntryMenuItem *item;
+-
+-        item = GDM_ENTRY_MENU_ITEM (object);
+-
+-        switch (param_id) {
+-        default:
+-                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+-                break;
+-        }
+-}
+-
+-static void
+-gdm_entry_menu_item_get_property (GObject    *object,
+-                                  guint       param_id,
+-                                  GValue     *value,
+-                                  GParamSpec *pspec)
+-{
+-        GdmEntryMenuItem *item;
+-
+-        item = GDM_ENTRY_MENU_ITEM (object);
+-
+-        switch (param_id) {
+-        default:
+-                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+-                break;
+-        }
+-}
+-
+-static void
+-gdm_entry_menu_item_dispose (GObject *object)
+-{
+-
+-        (*G_OBJECT_CLASS (gdm_entry_menu_item_parent_class)->dispose) (object);
+-}
+-
+-static gboolean
+-gdm_entry_menu_item_button_release (GtkWidget      *widget,
+-                                    GdkEventButton *event)
+-{
+-        return TRUE;
+-}
+-
+-/* Cut and paste from gtkwindow.c */
+-static void
+-send_focus_change (GtkWidget *widget,
+-                   gboolean   in)
+-{
+-        GdkEvent *fevent = gdk_event_new (GDK_FOCUS_CHANGE);
+-
+-        g_object_ref (widget);
+-
+-        gtk_widget_set_can_focus (widget, in);
+-
+-        fevent->focus_change.type = GDK_FOCUS_CHANGE;
+-        fevent->focus_change.window = g_object_ref (gtk_widget_get_window (widget));
+-        fevent->focus_change.in = in;
+-
+-        gtk_widget_event (widget, fevent);
+-
+-        g_object_notify (G_OBJECT (widget), "has-focus");
+-
+-        g_object_unref (widget);
+-        gdk_event_free (fevent);
+-}
+-
+-static gboolean
+-gdm_entry_menu_item_button_press (GtkWidget      *widget,
+-                                  GdkEventButton *event)
+-{
+-        GtkWidget *entry;
+-
+-        entry = GDM_ENTRY_MENU_ITEM (widget)->entry;
+-
+-        if (gtk_widget_get_window (entry) != NULL) {
+-                gdk_window_raise (gtk_widget_get_window (entry));
+-        }
+-
+-        if (!gtk_widget_has_focus (entry)) {
+-                gtk_widget_grab_focus (entry);
+-        }
+-
+-        return FALSE;
+-}
+-
+-static void
+-gdm_entry_menu_item_realize (GtkWidget *widget)
+-{
+-        if (GTK_WIDGET_CLASS (gdm_entry_menu_item_parent_class)->realize) {
+-                GTK_WIDGET_CLASS (gdm_entry_menu_item_parent_class)->realize (widget);
+-        }
+-}
+-
+-static void
+-gdm_entry_menu_item_select (GtkItem *item)
+-{
+-        g_return_if_fail (GDM_IS_ENTRY_MENU_ITEM (item));
+-        send_focus_change (GTK_WIDGET (GDM_ENTRY_MENU_ITEM (item)->entry), TRUE);
+-}
+-
+-static void
+-gdm_entry_menu_item_deselect (GtkItem *item)
+-{
+-        g_return_if_fail (GDM_IS_ENTRY_MENU_ITEM (item));
+-
+-        send_focus_change (GTK_WIDGET (GDM_ENTRY_MENU_ITEM (item)->entry), FALSE);
+-}
+-
+-static void
+-gdm_entry_menu_item_class_init (GdmEntryMenuItemClass *klass)
+-{
+-        GObjectClass     *gobject_class;
+-        GtkWidgetClass   *widget_class;
+-        GtkMenuItemClass *menu_item_class;
+-        GtkItemClass     *item_class;
+-
+-        gobject_class = G_OBJECT_CLASS (klass);
+-        widget_class = GTK_WIDGET_CLASS (klass);
+-        menu_item_class = GTK_MENU_ITEM_CLASS (klass);
+-        item_class = GTK_ITEM_CLASS (klass);
+-
+-        gobject_class->set_property = gdm_entry_menu_item_set_property;
+-        gobject_class->get_property = gdm_entry_menu_item_get_property;
+-        gobject_class->dispose = gdm_entry_menu_item_dispose;
+-
+-        widget_class->button_release_event = gdm_entry_menu_item_button_release;
+-        widget_class->button_press_event = gdm_entry_menu_item_button_press;
+-        widget_class->realize = gdm_entry_menu_item_realize;
+-
+-        item_class->select = gdm_entry_menu_item_select;
+-        item_class->deselect = gdm_entry_menu_item_deselect;
+-
+-        menu_item_class->hide_on_activate = FALSE;
+-}
+-
+-static void
+-on_entry_show (GtkWidget        *widget,
+-               GdmEntryMenuItem *item)
+-{
+-        if (gtk_widget_get_window (widget) != NULL) {
+-                gdk_window_raise (gtk_widget_get_window (widget));
+-        }
+-        send_focus_change (widget, TRUE);
+-}
+-
+-static void
+-on_text_buffer_changed (GtkTextBuffer    *buffer,
+-                        GdmEntryMenuItem *item)
+-{
+-        int len;
+-
+-        len = gtk_text_buffer_get_char_count (buffer);
+-        if (len > TEXT_BUFFER_MAX_CHARS) {
+-                gdk_window_beep (gtk_widget_get_window (GTK_WIDGET (item)));
+-        }
+-}
+-
+-static void
+-on_entry_move_focus (GtkWidget        *widget,
+-                     GtkDirectionType  direction,
+-                     GdmEntryMenuItem *item)
+-{
+-        g_debug ("focus move");
+-        send_focus_change (GTK_WIDGET (GDM_ENTRY_MENU_ITEM (item)->entry), FALSE);
+-        g_signal_emit_by_name (item,
+-                               "move-focus",
+-                               GTK_DIR_TAB_FORWARD);
+-}
+-
+-static void
+-gdm_entry_menu_item_init (GdmEntryMenuItem *item)
+-{
+-        PangoFontDescription *fontdesc;
+-        PangoFontMetrics     *metrics;
+-        PangoContext         *context;
+-        PangoLanguage        *lang;
+-        int                   ascent;
+-        GtkTextBuffer        *buffer;
+-
+-        item->hbox = gtk_hbox_new (FALSE, 6);
+-        gtk_container_add (GTK_CONTAINER (item), item->hbox);
+-
+-        item->image = gtk_image_new ();
+-        gtk_box_pack_start (GTK_BOX (item->hbox), item->image, FALSE, FALSE, 0);
+-
+-        item->entry = gtk_text_view_new ();
+-        gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (item->entry), FALSE);
+-        gtk_text_view_set_editable (GTK_TEXT_VIEW (item->entry), TRUE);
+-        gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (item->entry),
+-                                     GTK_WRAP_WORD);
+-        g_signal_connect (item->entry,
+-                          "show",
+-                          G_CALLBACK (on_entry_show),
+-                          item);
+-        g_signal_connect (item->entry,
+-                          "move-focus",
+-                          G_CALLBACK (on_entry_move_focus),
+-                          item);
+-
+-        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (item->entry));
+-        g_signal_connect (buffer,
+-                          "changed",
+-                          G_CALLBACK (on_text_buffer_changed),
+-                          item);
+-
+-        /* get the font ascent for the current font and language */
+-        context = gtk_widget_get_pango_context (item->entry);
+-        fontdesc = pango_context_get_font_description (context);
+-        lang = pango_context_get_language (context);
+-        metrics = pango_context_get_metrics (context, fontdesc, lang);
+-        ascent = pango_font_metrics_get_ascent (metrics) * 1.5 / PANGO_SCALE;
+-        pango_font_metrics_unref (metrics);
+-
+-        /* size our progress bar to be five ascents long */
+-        gtk_widget_set_size_request (item->entry, ascent * 5, -1);
+-
+-        gtk_box_pack_start (GTK_BOX (item->hbox), item->entry, TRUE, TRUE, 0);
+-
+-        gtk_widget_show (item->hbox);
+-        gtk_widget_show (item->image);
+-        gtk_widget_show (item->entry);
+-}
+-
+-GtkWidget *
+-gdm_entry_menu_item_new (void)
+-{
+-        return g_object_new (GDM_TYPE_ENTRY_MENU_ITEM, NULL);
+-}
+-
+-GtkWidget *
+-gdm_entry_menu_item_get_entry (GdmEntryMenuItem *item)
+-{
+-        g_return_val_if_fail (GDM_IS_ENTRY_MENU_ITEM (item), NULL);
+-
+-        return item->entry;
+-}
+-
+-GtkWidget *
+-gdm_entry_menu_item_get_image (GdmEntryMenuItem *item)
+-{
+-        g_return_val_if_fail (GDM_IS_ENTRY_MENU_ITEM (item), NULL);
+-
+-        return item->image;
+-}
+diff --git a/gui/user-switch-applet/gdm-entry-menu-item.h b/gui/user-switch-applet/gdm-entry-menu-item.h
+deleted file mode 100644
+index 3031609..0000000
+--- a/gui/user-switch-applet/gdm-entry-menu-item.h
++++ /dev/null
+@@ -1,51 +0,0 @@
+-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+- *
+- * Copyright (C) 2004-2005 James M. Cape <jcape@ignore-your.tv>.
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+- */
+-
+-#ifndef __GDM_ENTRY_MENU_ITEM__
+-#define __GDM_ENTRY_MENU_ITEM__
+-
+-#include <gtk/gtk.h>
+-
+-G_BEGIN_DECLS
+-
+-#define GDM_TYPE_ENTRY_MENU_ITEM \
+-  (gdm_entry_menu_item_get_type ())
+-#define GDM_ENTRY_MENU_ITEM(object) \
+-  (G_TYPE_CHECK_INSTANCE_CAST ((object), GDM_TYPE_ENTRY_MENU_ITEM, GdmEntryMenuItem))
+-#define GDM_ENTRY_MENU_ITEM_CLASS(klass) \
+-  (G_TYPE_CHECK_CLASS_CAST ((klass), GDM_TYPE_ENTRY_MENU_ITEM, GdmEntryMenuItemClass))
+-#define GDM_IS_ENTRY_MENU_ITEM(object) \
+-  (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDM_TYPE_ENTRY_MENU_ITEM))
+-#define GDM_IS_ENTRY_MENU_ITEM_CLASS(klass) \
+-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GDM_TYPE_ENTRY_MENU_ITEM))
+-#define GDM_ENTRY_MENU_ITEM_GET_CLASS(object) \
+-  (G_TYPE_INSTANCE_GET_CLASS ((object), GDM_TYPE_ENTRY_MENU_ITEM, GdmEntryMenuItemClass))
+-
+-typedef struct _GdmEntryMenuItem GdmEntryMenuItem;
+-typedef struct _GdmEntryMenuItemClass GdmEntryMenuItemClass;
+-
+-GType      gdm_entry_menu_item_get_type      (void) G_GNUC_CONST;
+-
+-GtkWidget *gdm_entry_menu_item_new           (void);
+-GtkWidget *gdm_entry_menu_item_get_entry     (GdmEntryMenuItem *item);
+-GtkWidget *gdm_entry_menu_item_get_image     (GdmEntryMenuItem *item);
+-
+-G_END_DECLS
+-
+-#endif /* __GDM_ENTRY_MENU_ITEM__ */
+diff --git a/po/POTFILES.in b/po/POTFILES.in
+index 1fccb90..cc1a3fd 100644
+--- a/po/POTFILES.in
++++ b/po/POTFILES.in
+@@ -84,10 +84,6 @@ gui/simple-greeter/gdm-timer.c
+ gui/simple-greeter/gdm-user.c
+ gui/simple-greeter/gdm-user-chooser-widget.c
+ gui/simple-greeter/greeter-main.c
+-gui/user-switch-applet/applet.c
+-gui/user-switch-applet/gdm-entry-menu-item.c
+-gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in
+-gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml
+ utils/gdmflexiserver.c
+ utils/gdm-screenshot.c
+ 
+diff --git a/po/POTFILES.skip b/po/POTFILES.skip
+index 0269a0f..ee3d753 100644
+--- a/po/POTFILES.skip
++++ b/po/POTFILES.skip
+@@ -7,7 +7,6 @@
+ # remove these unless you fix "make distcheck" a different way.
+ #
+ data/gdm.schemas.in
+-gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in
+ data/greeter-autostart/at-spi-registryd-wrapper.desktop.in
+ data/greeter-autostart/gdm-simple-greeter.desktop.in
+ data/greeter-autostart/gnome-power-manager.desktop.in
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/0002-gdm-user-manager.c-avoid-displaying-system-users-in-.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/0002-gdm-user-manager.c-avoid-displaying-system-users-in-.patch
new file mode 100644
index 0000000..ad21073
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/0002-gdm-user-manager.c-avoid-displaying-system-users-in-.patch
@@ -0,0 +1,34 @@
+From 43e59f3deadb3914a1cc931ae18d4023874cdeca Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Fri, 26 Apr 2013 17:15:48 +0200
+Subject: [PATCH] gdm-user-manager.c: avoid displaying system users in
+ greeter's list
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+yocto environment system users have UID below 1000
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ gui/simple-greeter/gdm-user-manager.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/gui/simple-greeter/gdm-user-manager.c b/gui/simple-greeter/gdm-user-manager.c
+index c631989..f18e478 100644
+--- a/gui/simple-greeter/gdm-user-manager.c
++++ b/gui/simple-greeter/gdm-user-manager.c
+@@ -63,7 +63,7 @@
+ #ifdef __sun
+ #define FALLBACK_MINIMAL_UID     100
+ #else
+-#define FALLBACK_MINIMAL_UID     500
++#define FALLBACK_MINIMAL_UID     1000
+ #endif
+ 
+ #ifndef _PATH_SHELLS
+-- 
+1.7.4.4
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/Default b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/Default
new file mode 100755
index 0000000..a7a7fcf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/Default
@@ -0,0 +1,96 @@
+#!/bin/sh
+# Stolen from the debian kdm setup, aren't I sneaky
+# Plus a lot of fun stuff added
+#  -George
+
+PATH="/usr/bin:$PATH"
+OLD_IFS=$IFS
+
+gdmwhich () {
+  COMMAND="$1"
+  OUTPUT=
+  IFS=:
+  for dir in $PATH
+  do
+    if test -x "$dir/$COMMAND" ; then
+      if test "x$OUTPUT" = "x" ; then
+        OUTPUT="$dir/$COMMAND"
+      fi
+    fi
+  done
+  IFS=$OLD_IFS
+  echo "$OUTPUT"
+}
+
+sysresources=/etc/X11/Xresources
+
+# merge in defaults
+if [ -f "$sysresources" ]; then
+    xrdb -merge "$sysresources"
+fi
+
+sysmodmap=/etc/X11/Xmodmap
+
+XMODMAP=`gdmwhich xmodmap`
+if [ "x$XMODMAP" != "x" ] ; then
+  if [ "x$GDM_PARENT_DISPLAY" = "x" ]; then
+    if [ -f $sysmodmap ]; then
+      $XMODMAP $sysmodmap
+    fi
+  else
+    ( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $XMODMAP -pke ) | $XMODMAP -
+  fi
+
+  #
+  # Switch Sun's Alt and Meta mod mappings
+  #
+
+  UNAME=`gdmwhich uname`
+  PROCESSOR=`$UNAME -p`
+  if [ "x$PROCESSOR" = "xsparc" ]; then
+    if $XMODMAP | /usr/bin/grep mod4 | /usr/bin/grep Alt > /dev/null 2>/dev/null
+    then
+      $XMODMAP -e "clear Mod1" \
+               -e "clear Mod4" \
+               -e "add Mod1 = Alt_L" \
+               -e "add Mod1 = Alt_R" \
+               -e "add Mod4 = Meta_L" \
+               -e "add Mod4 = Meta_R"
+    fi
+  fi
+fi
+
+SETXKBMAP=`gdmwhich setxkbmap`
+if [ "x$SETXKBMAP" != "x" ] ; then
+  # FIXME: is this all right?  Is this completely on crack?
+  # What this does is move the xkb configuration from the GDM_PARENT_DISPLAY
+  # FIXME: This should be done in code.  Or there must be an easier way ...
+  if [ -n "$GDM_PARENT_DISPLAY" ]; then
+    XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )`
+    if [ -n "$XKBSETUP" ]; then
+      XKBKEYMAP=`echo "$XKBSETUP" | grep '^keymap' | awk '{ print $2 }'`
+      XKBTYPES=`echo "$XKBSETUP" | grep '^types' | awk '{ print $2 }'`
+      XKBCOMPAT=`echo "$XKBSETUP" | grep '^compat' | awk '{ print $2 }'`
+      XKBSYMBOLS=`echo "$XKBSETUP" | grep '^symbols' | awk '{ print $2 }'`
+      XKBGEOMETRY=`echo "$XKBSETUP" | grep '^geometry' | awk '{ print $2 }'`
+      if [ -n "$XKBKEYMAP" ]; then
+        $SETXKBMAP -keymap "$XKBKEYMAP"
+      elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" -a -n "$XKBGEOMETRY" ]; then
+        $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS" -geometry "$XKBGEOMETRY"
+      elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" ]; then
+        $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS"
+      elif [ -n "$XKBSYMBOLS" ]; then
+        $SETXKBMAP -symbols "$XKBSYMBOLS"
+      fi
+    fi
+  fi
+fi
+
+# FIXME: the housekeeping below really should be moved to the postinst of packages that require it
+# brute force approach for now
+update-desktop-database
+glib-compile-schemas /usr/share/glib-2.0/schemas/
+
+#x11vnc  -q -bg -display :0 -forever -avahi -xkb
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/cross-xdetection.diff b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/cross-xdetection.diff
new file mode 100644
index 0000000..bee3511
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/cross-xdetection.diff
@@ -0,0 +1,96 @@
+From 60084e7e973634971c9643f2459e5d3e248ee3f1 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Thu, 9 Jun 2011 18:12:45 +0200
+Subject: [PATCH] build-sys: hardcode x paths to fix crosscompiling
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ configure.ac |   72 ++++-----------------------------------------------------
+ 1 files changed, 5 insertions(+), 67 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index eeaf3dc..841efe0 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1101,73 +1101,11 @@ dnl ---------------------------------------------------------------------------
+ dnl - Check for X Server location
+ dnl ---------------------------------------------------------------------------
+ 
+-# First check with "! -h" for /usr/X11R6 and /usr/X11 since they often
+-# symlink to each other, and configure should use the more stable
+-# location (the real directory) if possible.
+-#
+-# On Solaris, the /usr/bin/Xserver script is used to decide whether to
+-# use Xsun or Xorg, so this is used on Solaris.
+-#
+-# When testing for /usr/X11R6, first check with "! -h" for /usr/X11R6
+-# and /usr/X11 since they often symlink to each other, and configure
+-# should use the more stable location (the real directory) if possible.
+-#
+-if test -x /usr/X11/bin/Xserver; then
+-   X_PATH="/usr/X11/bin"
+-   X_SERVER_PATH="/usr/X11/bin"
+-   X_SERVER="/usr/X11/bin/Xserver"
+-   X_CONFIG_OPTIONS="-audit 0"
+-elif test ! -h /usr/X11R6 -a -x /usr/X11R6/bin/X; then
+-   X_PATH="/usr/X11R6/bin"
+-   X_SERVER_PATH="/usr/X11R6/bin"
+-   X_SERVER="/usr/X11R6/bin/X"
+-   X_CONFIG_OPTIONS="-audit 0"
+-elif test ! -h /usr/X11 -a -x /usr/X11/bin/X; then
+-   X_PATH="/usr/X11/bin"
+-   X_SERVER_PATH="/usr/X11/bin"
+-   X_SERVER="/usr/X11/bin/X"
+-   X_CONFIG_OPTIONS="-audit 0"
+-elif test -x /usr/X11R6/bin/X; then
+-   X_PATH="/usr/X11R6/bin"
+-   X_SERVER_PATH="/usr/X11R6/bin"
+-   X_SERVER="/usr/X11R6/bin/X"
+-   X_CONFIG_OPTIONS="-audit 0"
+-elif test -x /usr/bin/Xorg; then
+-   X_PATH="/usr/bin"
+-   X_SERVER_PATH="/usr/bin"
+-   X_SERVER="/usr/bin/Xorg"
+-   X_CONFIG_OPTIONS="-audit 0"
+-elif test -x /usr/X11/bin/X; then
+-   X_PATH="/usr/X11/bin"
+-   X_SERVER_PATH="/usr/X11/bin"
+-   X_SERVER="/usr/X11/bin/X"
+-   X_CONFIG_OPTIONS="-audit 0"
+-elif test -x /usr/openwin/bin/Xsun; then
+-   # Do not add /usr/openwin/bin here because on Solaris you need
+-   # /usr/openwin/bin in your PATH even if you are using the Xorg
+-   # Xserver.  We add this to the path below.
+-   X_PATH="/usr/openwin/bin"
+-   X_SERVER_PATH="/usr/openwin/bin"
+-   X_SERVER="/usr/openwin/bin/Xsun"
+-   X_CONFIG_OPTIONS="-audit 0 -nobanner"
+-elif test -x /opt/X11R6/bin/X; then
+-   X_PATH="/opt/X11R6/bin"
+-   X_SERVER_PATH="/opt/X11R6/bin"
+-   X_SERVER="/opt/X11R6/bin/X"
+-   X_CONFIG_OPTIONS="-audit 0"
+-elif test -x /usr/bin/X; then
+-   X_PATH="/usr/bin"
+-   X_SERVER_PATH="/usr/bin"
+-   X_SERVER="/usr/bin/X"
+-   X_CONFIG_OPTIONS="-audit 0"
+-else
+-   # what to do, what to do, this is wrong, but this just sets the
+-   # defaults, perhaps this user is cross compiling or some such
+-   X_PATH="/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin"
+-   X_SERVER_PATH="/usr/bin"
+-   X_SERVER="/usr/bin/X"
+-   X_CONFIG_OPTIONS="-audit 0"
+-fi
++# We hardcode the X paths since we know where it will be in the OE univers
++X_PATH="/usr/bin"
++X_SERVER_PATH="/usr/bin"
++X_SERVER="/usr/bin/X"
++X_CONFIG_OPTIONS="-audit 0"
+ 
+ dnl ---------------------------------------------------------------------------
+ dnl - Check for Xnest / Xephyr support
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm
new file mode 100755
index 0000000..bb5b418
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm
@@ -0,0 +1,89 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          gdm
+# Should-Start:      console-screen acpid dbus hal network-manager
+# Required-Start:    $local_fs $remote_fs
+# Required-Stop:     $local_fs $remote_fs
+# Default-Start:     5
+# Default-Stop:      0 1 2 3 6
+# Short-Description: GNOME Display Manager
+# Description:       Debian init script for the GNOME Display Manager
+### END INIT INFO
+#
+# Author:       Ryan Murray <rmurray@debian.org>
+#
+set -e
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/gdm
+
+test -x $DAEMON || exit 0
+
+if [ -r /etc/default/locale ]; then
+  . /etc/default/locale
+  export LANG LANGUAGE
+fi
+
+# To start gdm even if it is not the default display manager, change
+# HEED_DEFAULT_DISPLAY_MANAGER to "false."
+HEED_DEFAULT_DISPLAY_MANAGER=true
+DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
+
+case "$1" in
+  start)
+	# make needed directories in volatile
+
+	if [ -e /var/log/gdm ] ; then 
+		rm -rf /var/log/gdm
+	fi
+
+	mkdir -m 01770 /var/log/gdm
+	chown gdm:gdm /var/log/gdm
+
+	if [ -e /tmp/.ICE-unix ] ; then 
+		rm -rf /tmp/.ICE-unix
+	fi
+
+	mkdir -m 01777 /tmp/.ICE-unix
+	chown root:root /tmp/.ICE-unix
+
+        CONFIGURED_DAEMON=$(basename "$(cat $DEFAULT_DISPLAY_MANAGER_FILE 2> /dev/null)")
+        if grep -wqs text /proc/cmdline; then
+            echo "Not starting GNOME Display Manager (gdm); found 'text' in kernel commandline."
+        elif [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ] && \
+           [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] && \
+           [ "$CONFIGURED_DAEMON" != gdm ] ; then
+                echo "Not starting GNOME Display Manager; it is not the default display manager"
+        else
+                echo "Starting GNOME Display Manager" "gdm"
+                start-stop-daemon --start -b --exec $DAEMON 
+        fi
+  ;;
+  stop)
+        echo "Stopping GNOME Display Manager" "gdm"
+        set +e
+        start-stop-daemon --stop --quiet --pidfile /var/run/gdm.pid \
+                --name gdm --retry 5
+        set -e
+  ;;
+  reload)
+        echo "Scheduling reload of GNOME Display Manager configuration" "gdm"
+        set +e
+        start-stop-daemon --stop --signal USR1 --quiet --pidfile \
+                /var/run/gdm.pid --name gdm
+        set -e
+  ;;
+  status)
+        status_of_proc -p "$PIDFILE" "$DAEMON" gdm && exit 0 || exit $?
+  ;;
+  restart|force-reload)
+        $0 stop
+        $0 start
+  ;;
+  *)
+        echo "Usage: /etc/init.d/gdm {start|stop|restart|reload|force-reload|status}"
+        exit 1
+  ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm-pam b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm-pam
new file mode 100644
index 0000000..f9fafed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm-pam
@@ -0,0 +1,11 @@
+#
+# default; standard UN*X access
+#
+auth     required       pam_unix.so
+account  required       pam_unix.so
+password required       pam_unix.so
+session  required       pam_unix.so
+
+auth     optional       pam_gnome_keyring.so
+session  optional       pam_gnome_keyring.so  auto_start
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm.conf b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm.conf
new file mode 100644
index 0000000..559823b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm.conf
@@ -0,0 +1,80 @@
+# GDM Custom Configuration file.
+#
+# This file is the appropriate place for specifying your customizations to the
+# GDM configuration.   If you run gdmsetup, it will automatically edit this
+# file for you and will cause the daemon and any running GDM GUI programs to
+# automatically update with the new configuration.  Not all configuration
+# options are supported by gdmsetup, so to modify some values it may be
+# necessary to modify this file directly by hand.
+#
+# This file overrides the default configuration settings.  These settings 
+# are stored in the GDM System Defaults configuration file, which is found
+# at the following location.
+#
+# /usr/share/gdm/defaults.conf.  
+#
+# This file contains comments about the meaning of each configuration option,
+# so is also a useful reference.  Also refer to the documentation links at
+# the end of this comment for further information.  In short, to hand-edit
+# this file, simply add or modify the key=value combination in the
+# appropriate section in the template below this comment section.
+#
+# For example, if you want to specify a different value for the Enable key
+# in the "[debug]" section of your GDM System Defaults configuration file,
+# then add "Enable=true" in the "[debug]" section of this file.  If the
+# key already exists in this file, then simply modify it.
+#
+# Older versions of GDM used the "gdm.conf" file for configuration.  If your
+# system has an old gdm.conf file on the system, it will be used instead of
+# this file - so changes made to this file will not take effect.  Consider
+# migrating your configuration to this file and removing the gdm.conf file.
+#
+# If you hand edit a GDM configuration file, you can run the following
+# command and the GDM daemon will immediately reflect the change.  Any
+# running GDM GUI programs will also be notified to update with the new
+# configuration.
+#
+# gdmflexiserver --command="UPDATE_CONFIG <configuration key>"
+#
+# e.g, the "Enable" key in the "[debug]" section would be "debug/Enable".
+#
+# You can also run gdm-restart or gdm-safe-restart to cause GDM to restart and
+# re-read the new configuration settings.  You can also restart GDM by sending
+# a HUP or USR1 signal to the daemon.  HUP behaves like gdm-restart and causes
+# any user session started by GDM to exit immediately while USR1 behaves like
+# gdm-safe-restart and will wait until all users log out before restarting GDM.
+#
+# For full reference documentation see the gnome help browser under
+# GNOME|System category.  You can also find the docs in HTML form on
+# http://www.gnome.org/projects/gdm/
+#
+# NOTE: Lines that begin with "#" are considered comments.
+#
+# Have fun!
+
+[daemon]
+
+[security]
+
+[xdmcp]
+
+[gui]
+
+[greeter]
+
+[chooser]
+
+[debug]
+
+# Note that to disable servers defined in the GDM System Defaults
+# configuration file (such as 0=Standard, you must put a line in this file
+# that says 0=inactive, as described in the Configuration section of the GDM
+# documentation.
+#
+[servers]
+
+# Also note, that if you redefine a [server-foo] section, then GDM will
+# use the definition in this file, not the GDM System Defaults configuration
+# file.  It is currently not possible to disable a [server-foo] section
+# defined in the GDM System Defaults configuration file.
+#
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm.service.in b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm.service.in
new file mode 100644
index 0000000..3e1556a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/gdm.service.in
@@ -0,0 +1,10 @@
+[Unit]
+Description=Gnome Display Manager
+After=systemd-user-sessions.service
+
+[Service]
+ExecStart=%sbindir%/gdm -nodaemon
+StandardOutput=syslog
+
+[Install]
+Alias=display-manager.service
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/sysrooted-pkg-config.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/sysrooted-pkg-config.patch
new file mode 100644
index 0000000..1f9fa2a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm/sysrooted-pkg-config.patch
@@ -0,0 +1,37 @@
+In cross environment we have to prepend the sysroot to the path found by
+pkgconfig since the path returned from pkgconfig does not have sysroot prefixed
+it ends up using the files from host system. Now usually people have gnome installed
+so the build succeeds but if you dont have gnome installed on build host then
+it wont find the files on host system and packages using gnome-doc-utils wont
+compile.
+
+This should work ok with non sysrooted builds too since in those cases PKG_CONFIG_SYSROOT_DIR
+will be empty
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: gdm-2.32.2/gnome-doc-utils.make
+===================================================================
+--- gdm-2.32.2.orig/gnome-doc-utils.make	2011-05-31 08:06:59.000000000 -0700
++++ gdm-2.32.2/gnome-doc-utils.make	2011-09-25 15:32:39.540992521 -0700
+@@ -133,12 +133,12 @@
+ _xml2po ?= `which xml2po`
+ _xml2po_mode = $(if $(DOC_ID),mallard,docbook)
+ 
+-_db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils`
+-_db2omf  ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
+-_malrng  ?= `$(PKG_CONFIG) --variable malrng gnome-doc-utils`
+-_chunks  ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
+-_credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
+-_ids ?= $(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl
++_db2html ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2html gnome-doc-utils`
++_db2omf  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
++_malrng  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable malrng gnome-doc-utils`
++_chunks  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
++_credits ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
++_ids ?= ${PKG_CONFIG_SYSROOT_DIR}$(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl
+ 
+ if ENABLE_SK
+ _ENABLE_SK = true
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_2.32.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_2.32.2.bb
new file mode 100644
index 0000000..259c609
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_2.32.2.bb
@@ -0,0 +1,105 @@
+SUMMARY = "Graphical login manager"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "xinput gnome-panel tcp-wrappers libcanberra libxklavier grep consolekit libpam gnome-doc-utils gtk+ xrdb"
+
+PR = "r18"
+
+inherit gnome update-rc.d systemd useradd
+
+SRC_URI += " \
+    file://cross-xdetection.diff \
+    file://0001-Remove-user-switch-applet.patch \
+    file://0002-gdm-user-manager.c-avoid-displaying-system-users-in-.patch \
+    file://sysrooted-pkg-config.patch \
+    file://%gconf-tree.xml \
+    file://gdm \
+    file://gdm.conf \
+    file://gdm-pam \
+    file://Default \
+    file://gdm.service.in \
+"
+
+SRC_URI[archive.md5sum] = "dbe5187a2e17881cc454e313e0ae8d1e"
+SRC_URI[archive.sha256sum] = "034d23af0ea18d86e5543e707212d9297ec7d83f221808968af266dbebc0e703"
+GNOME_COMPRESS_TYPE="bz2"
+
+EXTRA_OECONF = " \
+    --enable-authentication-scheme=shadow \
+    --enable-debug=yes \
+    --with-console-kit \
+    --disable-scrollkeeper \
+"
+
+do_configure_prepend() {
+    sed -i -e "s:\bdocs::g" ${S}/Makefile.am
+}
+
+do_install_prepend() {
+    install -d ${D}/${localstatedir}/lib/gdm/.gconf.mandatory
+    install ${WORKDIR}/%gconf-tree.xml ${D}/${localstatedir}/lib/gdm/.gconf.mandatory/
+}
+
+do_install_append() {
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/gdm ${D}/${sysconfdir}/init.d/
+
+    install -d ${D}/${sysconfdir}/gdm
+    install -m 0644 ${WORKDIR}/gdm.conf ${D}/${sysconfdir}/gdm/
+
+    install -d ${D}/${sysconfdir}/pam.d
+    install -m 0755 ${WORKDIR}/gdm-pam       ${D}/${sysconfdir}/pam.d/gdm
+    rm -f ${D}/${sysconfdir}/pam.d/gdm-autologin
+
+    install -d ${D}/${sysconfdir}/gdm/Init
+    install -m 0755 ${WORKDIR}/Default ${D}/${sysconfdir}/gdm/Init
+
+    install -d ${D}${systemd_unitdir}/system
+    sed -e 's,%sbindir%,${sbindir},g' \
+        < ${WORKDIR}/gdm.service.in \
+        > ${D}${systemd_unitdir}/system/gdm.service
+
+    chown -R gdm:gdm ${D}${localstatedir}/lib/gdm
+    chmod 0750 ${D}${localstatedir}/lib/gdm
+
+    rm -rf "${D}${localstatedir}/run"
+    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}"
+
+    rm -f ${D}${datadir}/gdm/autostart/LoginWindow/at-spi-registryd-wrapper.desktop
+    rm -f ${D}${datadir}/gdm/autostart/LoginWindow/orca-screen-reader.desktop
+    rm -f ${D}${datadir}/gdm/autostart/LoginWindow/gnome-mag.desktop
+    rm -f ${D}${datadir}/gdm/autostart/LoginWindow/gok.desktop
+    rm -f ${D}${datadir}/gdm/autostart/LoginWindow/metacity.desktop
+}
+
+FILES_${PN} += "${datadir}/icon* \
+    ${datadir}/xsession* \
+"
+
+RDEPENDS_${PN} += "grep dbus-x11 shadow"
+# "libpam-base-files"
+CONFFILES_${PN} += "${sysconfdir}/gdm/gdm.conf ${sysconfdir}/init.d/gdm"
+RRECOMMENDS_${PN} += "openssh-misc desktop-file-utils glib-2.0-utils metacity gnome-session polkit-gnome consolekit"
+
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "gdm.service"
+
+INITSCRIPT_NAME = "gdm"
+INITSCRIPT_PARAMS = "start 99 5 . stop 20 0 1 2 3 6 ."
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system --no-create-home --home ${localstatedir}/lib/gdm --user-group gdm"
+
+pkg_postinst_${PN} () {
+# Register up as default dm
+mkdir -p $D${sysconfdir}/X11/
+echo "${bindir}/gdm" > $D${sysconfdir}/X11/default-display-manager
+}
+
+pkg_postrm_${PN} () {
+    deluser gdm || true
+    delgroup gdm || true
+    sed -i /gdm/d ${sysconfdir}/X11/default-display-manager || true
+}
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gedit/files/0001-workaround-void-pointer-arithmetic.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gedit/files/0001-workaround-void-pointer-arithmetic.patch
new file mode 100644
index 0000000..a28808b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gedit/files/0001-workaround-void-pointer-arithmetic.patch
@@ -0,0 +1,57 @@
+From 8e0cbfac142d38320dd02416601e14c65585cd17 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Sat, 9 Mar 2013 12:47:06 +0100
+Subject: [PATCH] workaround void pointer arithmetic
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fixes errors like:
+error: pointer of type 'void *' used in arithmetic [-Werror=pointer-arith]
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ gedit/gedit-document-input-stream.c   |    4 ++--
+ gedit/gedit-smart-charset-converter.c |    2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/gedit/gedit-document-input-stream.c b/gedit/gedit-document-input-stream.c
+index 5a1f961..38316e7 100644
+--- a/gedit/gedit-document-input-stream.c
++++ b/gedit/gedit-document-input-stream.c
+@@ -426,7 +426,7 @@ gedit_document_input_stream_read (GInputStream  *stream,
+ 
+ 	do
+ 	{
+-		n = read_line (dstream, buffer + read, space_left);
++		n = read_line (dstream, ((char*)buffer) + read, space_left);
+ 		read += n;
+ 		space_left -= n;
+ 	} while (space_left > 0 && n != 0 && dstream->priv->bytes_partial == 0);
+@@ -451,7 +451,7 @@ gedit_document_input_stream_read (GInputStream  *stream,
+ 
+ 			newline = get_new_line (dstream);
+ 
+-			memcpy (buffer + read, newline, newline_size);
++			memcpy (((char*)buffer) + read, newline, newline_size);
+ 
+ 			read += newline_size;
+ 			dstream->priv->newline_added = TRUE;
+diff --git a/gedit/gedit-smart-charset-converter.c b/gedit/gedit-smart-charset-converter.c
+index e32b0b1..6745ce3 100644
+--- a/gedit/gedit-smart-charset-converter.c
++++ b/gedit/gedit-smart-charset-converter.c
+@@ -153,7 +153,7 @@ try_convert (GCharsetConverter *converter,
+ 	do
+ 	{
+ 		res = g_converter_convert (G_CONVERTER (converter),
+-		                           inbuf + nread,
++		                           ((const char*)inbuf) + nread,
+ 		                           inbuf_size - nread,
+ 		                           out + nwritten,
+ 		                           out_size - nwritten,
+-- 
+1.7.4.4
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_2.30.4.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_2.30.4.bb
new file mode 100644
index 0000000..1c7b7e3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_2.30.4.bb
@@ -0,0 +1,28 @@
+SUMMARY = "GNOME editor"
+SECTION = "x11/gnome"
+LICENSE = "GPLv2+"
+PR = "r2"
+
+DEPENDS = "gvfs enchant gconf gnome-doc-utils gnome-doc-utils-native glib-2.0 gtk+ gtksourceview2 iso-codes"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit gnome gettext pythonnative
+SRC_URI+= "file://0001-workaround-void-pointer-arithmetic.patch"
+SRC_URI[archive.md5sum] = "e1eecb0a92a1a363b3d375ec5ac0fb3b"
+SRC_URI[archive.sha256sum] = "a561fe3dd1d199baede1bd07c4ee65f06fc7c494dd4d3327117f04149a608e3c"
+GNOME_COMPRESS_TYPE="bz2"
+
+EXTRA_OECONF = "--disable-scrollkeeper \
+                --enable-gvfs-metadata"
+
+do_configure_prepend() {
+    cd ${S}
+    gnome-doc-common --copy || true
+    gnome-doc-prepare --force --copy || true
+    cd ${B}
+}
+
+FILES_${PN} += "${libdir}/gedit-2/plugin* ${datadir}/gedit-2"
+FILES_${PN}-dbg += "${libdir}/gedit-2/plugin-loaders/.debug ${libdir}/gedit-2/plugins/.debug"
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_2.32.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_2.32.0.bb
new file mode 100644
index 0000000..2adb81b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_2.32.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Gnome background images"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SECTION = "x11/gnome"
+
+# glib-2.0 for glib-gettext.m4 which provides AM_GLIB_GNU_GETTEXT
+# intltool-native for IT_PROG_INTLTOOL(0.35.0)
+DEPENDS = "glib-2.0 intltool-native"
+
+inherit gnomebase
+
+SRC_URI[archive.md5sum] = "3df26626483b02e51adefc6ab5945a8d"
+SRC_URI[archive.sha256sum] = "4d7b60b5ba768bf8834b5fa3a3471cd9a9e14b5884bc210dc2d3cdbf1faddcef"
+GNOME_COMPRESS_TYPE="bz2"
+
+FILES_${PN} += "${datadir}/gnome-background-properties"
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_3.18.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_3.18.2.bb
new file mode 100644
index 0000000..7b064c3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_3.18.2.bb
@@ -0,0 +1,17 @@
+SUMMARY = "GNOME bluetooth manager"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
+                    file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+"
+
+SECTION = "x11/gnome"
+
+DEPENDS = "udev gtk+3 libnotify libcanberra"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','bluez5','bluez5','bluez4',d)}"
+
+inherit gnomebase gtk-icon-cache gobject-introspection
+
+SRC_URI[archive.md5sum] = "75d09c924468ec0c687f9ab3acf7f113"
+SRC_URI[archive.sha256sum] = "d8df073c331df0f97261869fb77ffcdbf4e3e4eaf460d3c3ed2b16e03d9c5398"
+
+FILES_${PN}-dbg += "${libdir}/gnome-bluetooth/plugins/.debug/"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_2.32.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_2.32.1.bb
new file mode 100644
index 0000000..86b913b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_2.32.1.bb
@@ -0,0 +1,32 @@
+SUMMARY = "GNOME control center"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "desktop-file-utils-native gnome-menus libunique dbus-glib gnome-desktop libxml2 metacity gconf gnome-settings-daemon librsvg pango libgnomekbd libxklavier libcanberra libgtop libxscrnsaver"
+
+PR = "r1"
+
+inherit gnome
+
+SRC_URI[archive.md5sum] = "b4e8ab5c7556ae07addbfcfb4fa2f761"
+SRC_URI[archive.sha256sum] = "7c568b57358e5c08f4d8dd76dbac7df2539135ad081872b60514b7a8ac797e66"
+GNOME_COMPRESS_TYPE="bz2"
+
+LDFLAGS += "-lgthread-2.0 -lxml2"
+
+do_configure_prepend() {
+    sed -i s:help::g ${S}/Makefile.am
+}
+do_install_append() {
+    rm -rf ${D}${datadir}/mime
+}
+
+FILES_${PN} += "${datadir}/icon* \
+                ${datadir}/xsession* \
+                ${libdir}/window-manager-settings/*.so \
+                ${datadir}/gnome \
+                ${datadir}/desktop-directories \
+"
+FILES_${PN}-dbg += "${libdir}/window-manager-settings/.debug"
+FILES_${PN}-dev += "${libdir}/window-manager-settings/*.la"
+FILES_${PN}-staticdev += "${libdir}/window-manager-settings/*.a"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_2.32.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_2.32.1.bb
new file mode 100644
index 0000000..703c397
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_2.32.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "GNOME library for reading .desktop files"
+SECTION = "x11/gnome"
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+PR = "r6"
+
+inherit gnome pkgconfig
+
+SRC_URI[archive.md5sum] = "5c80d628a240eb9d9ff78913b31f2f67"
+SRC_URI[archive.sha256sum] = "55cbecf67efe1fa1e57ac966520a7c46d799c8ba3c652a1219f60cafccb3739d"
+GNOME_COMPRESS_TYPE="bz2"
+
+DEPENDS += "gconf libxrandr virtual/libx11 gtk+ glib-2.0 gnome-doc-utils startup-notification"
+
+EXTRA_OECONF = "--disable-scrollkeeper --disable-desktop-docs --disable-gnome-about"
+
+do_configure_prepend () {
+    sed -i -e s:^#!@PYTHON@:#!${bindir}/python: ${S}/gnome-about/gnome-about.in
+}
+
+PACKAGES =+ "libgnome-desktop"
+FILES_libgnome-desktop = "${libdir}/lib*${SOLIBS} ${datadir}/libgnome-desktop/pnp.ids"
+FILES_${PN} += "${datadir}/gnome-about"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/0001-Add-support-for-DeviceAutomountHint.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/0001-Add-support-for-DeviceAutomountHint.patch
new file mode 100644
index 0000000..805e937
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/0001-Add-support-for-DeviceAutomountHint.patch
@@ -0,0 +1,74 @@
+From 7dde5bc75a1d96be9510ce1e98d28f9d33520919 Mon Sep 17 00:00:00 2001
+From: David Zeuthen <davidz@redhat.com>
+Date: Fri, 8 Jul 2011 11:03:52 -0400
+Subject: [PATCH] Add support for DeviceAutomountHint
+
+Based on the patch in https://bugzilla.gnome.org/show_bug.cgi?id=653184
+
+Upstream-Status: Applied [1]
+
+[1] https://mail.gnome.org/archives/commits-list/2011-July/msg03207.html
+
+Signed-off-by: David Zeuthen <davidz@redhat.com>
+---
+ src/gdu/gdu-device.c |   10 ++++++++++
+ src/gdu/gdu-device.h |    1 +
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+diff --git a/src/gdu/gdu-device.c b/src/gdu/gdu-device.c
+index 6a5afad..4be39cf 100644
+--- a/src/gdu/gdu-device.c
++++ b/src/gdu/gdu-device.c
+@@ -82,6 +82,7 @@ typedef struct
+   gboolean device_presentation_nopolicy;
+   char *device_presentation_name;
+   char *device_presentation_icon_name;
++  char *device_automount_hint;
+   guint64 device_size;
+   guint64 device_block_size;
+ 
+@@ -279,6 +280,8 @@ collect_props (const char *key,
+     props->device_presentation_name = g_strdup (g_value_get_string (value));
+   else if (strcmp (key, "DevicePresentationIconName") == 0)
+     props->device_presentation_icon_name = g_strdup (g_value_get_string (value));
++  else if (strcmp (key, "DeviceAutomountHint") == 0)
++    props->device_automount_hint = g_strdup (g_value_get_string (value));
+   else if (strcmp (key, "DeviceSize") == 0)
+     props->device_size = g_value_get_uint64 (value);
+   else if (strcmp (key, "DeviceBlockSize") == 0)
+@@ -549,6 +552,7 @@ device_properties_free (DeviceProperties *props)
+   g_strfreev (props->device_mount_paths);
+   g_free (props->device_presentation_name);
+   g_free (props->device_presentation_icon_name);
++  g_free (props->device_automount_hint);
+   g_free (props->job_id);
+   g_free (props->id_usage);
+   g_free (props->id_type);
+@@ -1294,6 +1298,12 @@ gdu_device_drive_get_media_compatibility (GduDevice *device)
+ }
+ 
+ const char *
++gdu_device_get_automount_hint (GduDevice *device)
++{
++        return device->priv->props->device_automount_hint;
++}
++
++const char *
+ gdu_device_drive_get_media (GduDevice *device)
+ {
+         return device->priv->props->drive_media;
+diff --git a/src/gdu/gdu-device.h b/src/gdu/gdu-device.h
+index 4c1302b..8cfd7a9 100644
+--- a/src/gdu/gdu-device.h
++++ b/src/gdu/gdu-device.h
+@@ -143,6 +143,7 @@ const char *gdu_device_drive_get_wwn (GduDevice *device);
+ const char *gdu_device_drive_get_connection_interface (GduDevice *device);
+ guint64 gdu_device_drive_get_connection_speed (GduDevice *device);
+ char **gdu_device_drive_get_media_compatibility (GduDevice *device);
++const gchar *gdu_device_get_automount_hint(GduDevice *device);
+ const char *gdu_device_drive_get_media (GduDevice *device);
+ gboolean gdu_device_drive_get_is_media_ejectable (GduDevice *device);
+ gboolean gdu_device_drive_get_requires_eject (GduDevice *device);
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/0002-Require-libnotify-0.6.1.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/0002-Require-libnotify-0.6.1.patch
new file mode 100644
index 0000000..0bc9707
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/0002-Require-libnotify-0.6.1.patch
@@ -0,0 +1,49 @@
+From f8dea8dd411cba10a54ec083c3d5c9d641ec36c0 Mon Sep 17 00:00:00 2001
+From: William Jon McCann <jmccann@redhat.com>
+Date: Tue, 12 Oct 2010 00:12:49 -0400
+Subject: [PATCH] Require libnotify 0.6.1
+
+https://bugzilla.gnome.org/show_bug.cgi?id=631940
+
+Upstream-Status: Backport [1]
+
+[1] https://git.gnome.org/browse/gnome-disk-utility/commit/?id=f8dea8dd411cba10a54ec083c3d5c9d641ec36c0
+
+Signed-off-by: David Zeuthen <davidz@redhat.com>
+---
+ configure.ac                         | 2 +-
+ src/notification/notification-main.c | 5 +----
+ 2 files changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c61212e..3790fcf 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -128,7 +128,7 @@ DBUS_GLIB_REQUIRED=0.74
+ GNOME_KEYRING_REQUIRED=2.22
+ GTK2_REQUIRED=2.20.0
+ UNIQUE_REQUIRED=1.0
+-LIBNOTIFY_REQUIRED=0.3.0
++LIBNOTIFY_REQUIRED=0.6.1
+ NAUTILUS_REQUIRED=2.24.0
+ AVAHI_UI_REQUIRED=0.6.25
+ 
+diff --git a/src/notification/notification-main.c b/src/notification/notification-main.c
+index 18e9672..b6a713f 100644
+--- a/src/notification/notification-main.c
++++ b/src/notification/notification-main.c
+@@ -535,10 +535,7 @@ update_status_icon (NotificationData *data)
+                     _("A hard disk may be failing"),
+                     /* Translators: This is used as the text of the notification*/
+                     _("One or more hard disks report health problems. Click the icon to get more information."),
+-                    "gtk-dialog-warning",
+-                    NULL);
+-                notify_notification_attach_to_status_icon (data->ata_smart_notification,
+-                                                           data->status_icon);
++                    "gtk-dialog-warning");
+                 notify_notification_set_urgency (data->ata_smart_notification, NOTIFY_URGENCY_CRITICAL);
+                 notify_notification_set_timeout (data->ata_smart_notification, NOTIFY_EXPIRES_NEVER);
+                 show_notification (data);
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/disable-scrollkeeper.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/disable-scrollkeeper.patch
new file mode 100644
index 0000000..f36942d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/disable-scrollkeeper.patch
@@ -0,0 +1,27 @@
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Subject: Disable scrollkeeper-config not found message
+Upstream-Status: Not-Applicable
+
+If scrollkeeper-config isn't found, configure fails with an error.
+Fix that by commenting out the check.
+
+Signed-Off-By: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+
+
+Index: gnome-disk-utility-2.32.0/configure.ac
+===================================================================
+--- gnome-disk-utility-2.32.0.orig/configure.ac	2010-09-15 19:07:25.000000000 +0400
++++ gnome-disk-utility-2.32.0/configure.ac	2011-08-20 01:29:48.000000000 +0400
+@@ -188,9 +188,9 @@
+ # *************
+
+ AC_PATH_PROG(SCROLLKEEPER_CONFIG, scrollkeeper-config,no)
+-if test x$SCROLLKEEPER_CONFIG = xno; then
+-  AC_MSG_ERROR(Couldn't find scrollkeeper-config, please install the scrollkeeper package)
+-fi
++dnl if test x$SCROLLKEEPER_CONFIG = xno; then
++dnl  AC_MSG_ERROR([Couldn't find scrollkeeper-config, please install the scrollkeeper package])
++dnl fi
+
+ # ********************
+ # Internationalization
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/fix-dbus-interfaces.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/fix-dbus-interfaces.patch
new file mode 100644
index 0000000..6ba3979
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/fix-dbus-interfaces.patch
@@ -0,0 +1,34 @@
+Index: gnome-disk-utility-2.32.0/src/gdu/Makefile.am
+===================================================================
+--- gnome-disk-utility-2.32.0.orig/src/gdu/Makefile.am	2011-08-20 01:59:16.000000000 +0400
++++ gnome-disk-utility-2.32.0/src/gdu/Makefile.am	2011-08-20 02:08:18.000000000 +0400
+@@ -14,20 +14,20 @@
+ gdu-marshal.c: gdu-marshal.list
+	echo "#include \"gdu-marshal.h\"" > $@ && glib-genmarshal $< --prefix=gdu_marshal --body >> $@
+
+-udisks-daemon-glue.h: /usr/share/dbus-1/interfaces/org.freedesktop.UDisks.xml Makefile.am
+-	dbus-binding-tool --prefix=devkit_disks_daemon --mode=glib-client --output=udisks-daemon-glue.h /usr/share/dbus-1/interfaces/org.freedesktop.UDisks.xml
++udisks-daemon-glue.h: $(PKG_CONFIG_SYSROOT_DIR)/usr/share/dbus-1/interfaces/org.freedesktop.UDisks.xml Makefile.am
++	dbus-binding-tool --prefix=devkit_disks_daemon --mode=glib-client --output=udisks-daemon-glue.h $(PKG_CONFIG_SYSROOT_DIR)/usr/share/dbus-1/interfaces/org.freedesktop.UDisks.xml
+
+-udisks-device-glue.h: /usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Device.xml Makefile.am
+-	dbus-binding-tool --prefix=devkit_disks_daemon --mode=glib-client --output=udisks-device-glue.h /usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Device.xml
++udisks-device-glue.h: $(PKG_CONFIG_SYSROOT_DIR)/usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Device.xml Makefile.am
++	dbus-binding-tool --prefix=devkit_disks_daemon --mode=glib-client --output=udisks-device-glue.h $(PKG_CONFIG_SYSROOT_DIR)/usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Device.xml
+
+-udisks-adapter-glue.h: /usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Adapter.xml Makefile.am
+-	dbus-binding-tool --prefix=devkit_disks_daemon --mode=glib-client --output=udisks-adapter-glue.h /usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Adapter.xml
++udisks-adapter-glue.h: $(PKG_CONFIG_SYSROOT_DIR)/usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Adapter.xml Makefile.am
++	dbus-binding-tool --prefix=devkit_disks_daemon --mode=glib-client --output=udisks-adapter-glue.h $(PKG_CONFIG_SYSROOT_DIR)/usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Adapter.xml
+
+-udisks-expander-glue.h: /usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Expander.xml Makefile.am
+-	dbus-binding-tool --prefix=devkit_disks_daemon --mode=glib-client --output=udisks-expander-glue.h /usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Expander.xml
++udisks-expander-glue.h: $(PKG_CONFIG_SYSROOT_DIR)/usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Expander.xml Makefile.am
++	dbus-binding-tool --prefix=devkit_disks_daemon --mode=glib-client --output=udisks-expander-glue.h $(PKG_CONFIG_SYSROOT_DIR)/usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Expander.xml
+
+-udisks-port-glue.h: /usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Port.xml Makefile.am
+-	dbus-binding-tool --prefix=devkit_disks_daemon --mode=glib-client --output=udisks-port-glue.h /usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Port.xml
++udisks-port-glue.h: $(PKG_CONFIG_SYSROOT_DIR)/usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Port.xml Makefile.am
++	dbus-binding-tool --prefix=devkit_disks_daemon --mode=glib-client --output=udisks-port-glue.h $(PKG_CONFIG_SYSROOT_DIR)/usr/share/dbus-1/interfaces/org.freedesktop.UDisks.Port.xml
+
+ lib_LTLIBRARIES=libgdu.la
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/sysrooted-pkg-config.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/sysrooted-pkg-config.patch
new file mode 100644
index 0000000..48e63b1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/sysrooted-pkg-config.patch
@@ -0,0 +1,37 @@
+In cross environment we have to prepend the sysroot to the path found by
+pkgconfig since the path returned from pkgconfig does not have sysroot prefixed
+it ends up using the files from host system. Now usually people have gnome installed
+so the build succeeds but if you dont have gnome installed on build host then
+it wont find the files on host system and packages using gnome-doc-utils wont
+compile.
+
+This should work ok with non sysrooted builds too since in those cases PKG_CONFIG_SYSROOT_DIR
+will be empty
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: gnome-disk-utility-2.32.0/gnome-doc-utils.make
+===================================================================
+--- gnome-disk-utility-2.32.0.orig/gnome-doc-utils.make	2010-09-15 08:27:46.000000000 -0700
++++ gnome-disk-utility-2.32.0/gnome-doc-utils.make	2011-09-25 16:04:30.693795591 -0700
+@@ -133,12 +133,12 @@
+ _xml2po ?= `which xml2po`
+ _xml2po_mode = $(if $(DOC_ID),mallard,docbook)
+ 
+-_db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils`
+-_db2omf  ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
+-_malrng  ?= `$(PKG_CONFIG) --variable malrng gnome-doc-utils`
+-_chunks  ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
+-_credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
+-_ids ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/ids.xsl
++_db2html ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2html gnome-doc-utils`
++_db2omf  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
++_malrng  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable malrng gnome-doc-utils`
++_chunks  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
++_credits ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
++_ids ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/ids.xsl
+ 
+ if ENABLE_SK
+ _ENABLE_SK = true
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_2.32.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_2.32.0.bb
new file mode 100644
index 0000000..2f427e7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_2.32.0.bb
@@ -0,0 +1,37 @@
+SUMMARY = "GNOME disk utility"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e9115d11797a5e6b746b4e9b90194564"
+
+DEPENDS = "glib-2.0 gtk+ libnotify libunique udisks avahi-ui virtual/libx11 libatasmart gnome-doc-utils intltool-native libgnome-keyring"
+
+PR = "r4"
+
+inherit gnomebase gtk-icon-cache
+SRC_URI[archive.md5sum] = "f0366c8baebca0404d190b2d78f3582d"
+SRC_URI[archive.sha256sum] = "03e461b6bda7f773f8018d25fa3213d3073d4dc83a76e6b39d962652f4de6a98"
+GNOME_COMPRESS_TYPE="bz2"
+
+SRC_URI += "\
+    file://disable-scrollkeeper.patch \
+    file://fix-dbus-interfaces.patch \
+    file://sysrooted-pkg-config.patch \
+    file://0001-Add-support-for-DeviceAutomountHint.patch \
+    file://0002-Require-libnotify-0.6.1.patch \
+"
+
+EXTRA_OECONF += "--disable-scrollkeeper"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[nautilus] = "--enable-nautilus,--disable-nautilus,nautilus"
+
+do_configure_prepend() {
+    sed -i -e "s: help : :g" ${S}/Makefile.am
+}
+
+PACKAGES =+ "${PN}-nautilus-extension ${PN}-libs"
+FILES_${PN}-nautilus-extension += "${libdir}/nautilus/extensions-2.0/*.so"
+FILES_${PN}-libs += "${libdir}/libgdu*.so.*"
+FILES_${PN}-dev += "${libdir}/nautilus/extensions-2.0/*.la"
+FILES_${PN}-staticdev += "${libdir}/nautilus/extensions-2.0/*.a"
+FILES_${PN}-dbg += "${libdir}/nautilus/extensions-2.0/.debug"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring/egg-asn1x.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring/egg-asn1x.patch
new file mode 100644
index 0000000..ad8a40c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring/egg-asn1x.patch
@@ -0,0 +1,55 @@
+Fixed build error with gcc 4.8
+
+Errors like below
+
+egg-asn1x.c: In function 'anode_encode_build':
+egg-asn1x.c:1280:7: warning: variable 'type' set but not used [-Wunused-but-set-variable]
+egg-asn1x.c: In function 'traverse_and_prepare':
+egg-asn1x.c:3354:3: warning: passing argument 1 of 'egg_asn1x_create' from incompatible pointer type [enabled by default]
+In file included from egg-asn1x.c:50:0:
+egg-asn1x.h:38:8: note: expected 'const struct static_struct_asn *' but argument is of type 'const struct asn1_static_node *'
+egg-asn1x.c: At top level:
+egg-asn1x.c:3509:1: error: conflicting types for 'egg_asn1x_create'
+In file included from egg-asn1x.c:50:0:
+egg-asn1x.h:38:8: note: previous declaration of 'egg_asn1x_create' was here
+egg-asn1x.c:3572:1: error: conflicting types for 'egg_asn1x_create_quark'
+In file included from egg-asn1x.c:50:0:
+egg-asn1x.h:41:8: note: previous declaration of 'egg_asn1x_create_quark' was here
+egg-asn1x.c:3579:1: error: conflicting types for 'egg_asn1x_create_and_decode'
+In file included from egg-asn1x.c:50:0:
+egg-asn1x.h:44:8: note: previous declaration of 'egg_asn1x_create_and_decode' was here
+make[4]: *** [libegg_la-egg-asn1x.lo] Error 1
+
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+Index: gnome-keyring-2.32.1/egg/egg-asn1x.h
+===================================================================
+--- gnome-keyring-2.32.1.orig/egg/egg-asn1x.h	2010-10-18 19:11:38.000000000 -0700
++++ gnome-keyring-2.32.1/egg/egg-asn1x.h	2013-06-11 15:15:00.675399263 -0700
+@@ -25,6 +25,7 @@
+ #define EGG_ASN1X_H_
+ 
+ #include <glib.h>
++#include <libtasn1.h>
+ 
+ #ifndef HAVE_EGG_ALLOCATOR
+ typedef void* (*EggAllocator) (void* p, gsize);
+@@ -35,13 +36,13 @@
+ 
+ struct static_struct_asn;
+ 
+-GNode*              egg_asn1x_create                 (const struct static_struct_asn *defs,
++GNode*              egg_asn1x_create                 (const ASN1_ARRAY_TYPE *defs,
+                                                       const gchar *type);
+ 
+-GNode*              egg_asn1x_create_quark           (const struct static_struct_asn *defs,
++GNode*              egg_asn1x_create_quark           (const ASN1_ARRAY_TYPE *defs,
+                                                       GQuark type);
+ 
+-GNode*              egg_asn1x_create_and_decode      (const struct static_struct_asn *defs,
++GNode*              egg_asn1x_create_and_decode      (const ASN1_ARRAY_TYPE *defs,
+                                                       const gchar *type,
+                                                       gconstpointer data,
+                                                       gsize n_data);
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_2.32.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_2.32.1.bb
new file mode 100644
index 0000000..f8f5ddd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_2.32.1.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Password and keyring managing daemon"
+HOMEPAGE = "http://www.gnome.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://gcr/gcr.h;endline=22;md5=a272df1e633e27ecf35e74fb5576250e \
+                    file://egg/egg-dbus.h;endline=25;md5=eb6f531af37165dc53420c073d774e61 \
+                    file://gp11/gp11.h;endline=24;md5=bd8c7a8a21d6c28d40536d96a35e3469 \
+                    file://pkcs11/pkcs11i.h;endline=24;md5=e72cfbb718389b76a4dae838d1c1f439"
+
+SECTION = "x11/gnome"
+
+PR = "r12"
+
+inherit autotools gnome gtk-doc pkgconfig gsettings
+
+SRC_URI += "file://egg-asn1x.patch"
+
+DEPENDS = "gtk+ libgcrypt libtasn1 libtasn1-native gconf ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)} intltool-native"
+RDEPENDS_${PN} = "libgnome-keyring glib-2.0-utils"
+
+EXTRA_OECONF = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam --with-pam-dir=${base_libdir}/security', '--disable-pam', d)}"
+
+SRC_URI[archive.md5sum] = "9a8aa74e03361676f29d6e73155786fc"
+SRC_URI[archive.sha256sum] = "31fecec1430a97f59a6159a5a2ea8d6a1b44287f1e9e595b3594df46bf7f18f9"
+GNOME_COMPRESS_TYPE="bz2"
+
+FILES_${PN} += "${datadir}/dbus-1/services ${datadir}/gcr \
+                ${base_libdir}/security/*${SOLIBSDEV} \
+               "
+
+FILES_${PN}-dev += "${libdir}/${BPN}/devel/*.la \
+                    ${libdir}/${BPN}/devel/*${SOLIBSDEV} \
+                    ${libdir}/${BPN}/standalone/*.la \
+                    ${base_libdir}/security/*.la \
+                   "
+
+FILES_${PN}-dbg += "${libdir}/${BPN}/standalone/.debug/ \
+                    ${libdir}/${BPN}/devel/.debug/ \
+                    ${base_libdir}/security/.debug/"
+
+PNBLACKLIST[gnome-keyring] ?= "This version conflicts with gcr from oe-core"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/libgnome-keyring_2.32.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/libgnome-keyring_2.32.0.bb
new file mode 100644
index 0000000..e241882
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/libgnome-keyring_2.32.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Compatibility library for accessing secrets"
+HOMEPAGE = "http://www.gnome.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0914b9d3ebaba41ef2e3e0ae16f296cf \
+                    file://library/gnome-keyring.h;endline=25;md5=68ea64f81c160d670c37da5f137be4fb \
+                    file://library/gnome-keyring.c;endline=26;md5=8d7a4fb674aaa012ea5a98e7c368b4a5 \
+                    file://egg/egg-dh.h;endline=22;md5=1626c16af2a8da1f88324cf3ced33f08"
+
+SECTION = "x11/gnome/libs"
+PR = "r3"
+
+inherit gnomebase gtk-doc
+
+DEPENDS = "dbus libgcrypt glib-2.0 intltool-native"
+
+SRC_URI[archive.md5sum] = "c42b2ca66204835d901d3dbfc1fa5ae6"
+SRC_URI[archive.sha256sum] = "56388c0d81ddfdb57d30e4963c83ecc1c18498aab99395420e0fff69929a0f0c"
+GNOME_COMPRESS_TYPE="bz2"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus3_3.10.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus3_3.10.1.bb
new file mode 100644
index 0000000..bf55197
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus3_3.10.1.bb
@@ -0,0 +1,26 @@
+SUMMARY = "GNOME menus"
+SECTION = "x11/gnome"
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+PNBLACKLIST[gnome-menus3] ?= "CONFLICT: 24 files are conflicting with gnome-menus"
+# e.g. sysroots/qemux86-64/usr/share/desktop-directories/X-GNOME-Other.directory
+
+DEPENDS = "python libxml2 gconf popt gtk+3"
+
+inherit gnomebase pkgconfig python-dir pythonnative gobject-introspection
+
+BPN = "gnome-menus"
+
+SHRT_VER = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}"
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${SHRT_VER}/${BPN}-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "6db025e79e2b69f39fc7aa0753f43081"
+SRC_URI[sha256sum] = "46950aba274c1ad58234374fa9b235258650737307f3bc396af48eb983668a71"
+
+PACKAGES += "${PN}-python"
+FILES_${PN} += "${datadir}/desktop-directories/"
+FILES_${PN}-python = "${libdir}/python*"
+FILES_${PN}-dbg += "${PYTHON_SITEPACKAGES_DIR}/*/.debug \
+                    ${PYTHON_SITEPACKAGES_DIR}/.debug"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus_2.30.5.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus_2.30.5.bb
new file mode 100644
index 0000000..1b84a54
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus_2.30.5.bb
@@ -0,0 +1,22 @@
+SUMMARY = "GNOME menus"
+SECTION = "x11/gnome"
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+PR = "r1"
+
+DEPENDS = "python libxml2 gconf popt gtk+"
+
+inherit gnomebase pkgconfig python-dir pythonnative gobject-introspection
+
+SRC_URI[archive.md5sum] = "caa6772e63ed5870cf43dc3d354e0624"
+SRC_URI[archive.sha256sum] = "6dcc565006d6e8c2025ae83ab1f82edf6bd04d61c804c0dc9bf5ea50629c4caa"
+GNOME_COMPRESS_TYPE="bz2"
+
+PACKAGES += "${PN}-python"
+FILES_${PN} += "${datadir}/desktop-directories/"
+FILES_${PN}-python = "${libdir}/python*"
+FILES_${PN}-dbg += "${PYTHON_SITEPACKAGES_DIR}/*/.debug \
+                    ${PYTHON_SITEPACKAGES_DIR}/.debug"
+
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-mime-data/gnome-mime-data/pkgconfig.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-mime-data/gnome-mime-data/pkgconfig.patch
new file mode 100644
index 0000000..0903425
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-mime-data/gnome-mime-data/pkgconfig.patch
@@ -0,0 +1,14 @@
+Upstream-Status: Inappropriate [configuration]
+
+Index: gnome-mime-data-2.18.0/Makefile.am
+===================================================================
+--- gnome-mime-data-2.18.0.orig/Makefile.am	2009-06-11 17:27:48.000000000 +0100
++++ gnome-mime-data-2.18.0/Makefile.am	2009-06-11 17:27:59.000000000 +0100
+@@ -1,6 +1,6 @@
+ SUBDIRS = man po
+ 
+-pkgconfigdir = $(datadir)/pkgconfig
++pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = gnome-mime-data-2.0.pc
+ 
+ NULL=
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-mime-data/gnome-mime-data_2.18.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-mime-data/gnome-mime-data_2.18.0.bb
new file mode 100644
index 0000000..a31eb55
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-mime-data/gnome-mime-data_2.18.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Base MIME and Application database for GNOME"
+HOMEPAGE = "http://www.gnome.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "GPLv2 & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+                    file://check-mime.pl;endline=26;md5=a95b63c92c33d4ca1af61a315888f450"
+
+inherit gnomebase mime
+PR = "r4"
+
+SRC_URI += "file://pkgconfig.patch"
+
+SRC_URI[archive.md5sum] = "541858188f80090d12a33b5a7c34d42c"
+SRC_URI[archive.sha256sum] = "37196b5b37085bbcd45c338c36e26898fe35dd5975295f69f48028b1e8436fd7"
+GNOME_COMPRESS_TYPE="bz2"
+
+DEPENDS += "shared-mime-info intltool-native"
+RDEPENDS_${PN} = "shared-mime-info"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/0001-Fix-build-with-gcc-5.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/0001-Fix-build-with-gcc-5.patch
new file mode 100644
index 0000000..6b7fc5b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/0001-Fix-build-with-gcc-5.patch
@@ -0,0 +1,35 @@
+From 20810fcf329c6e0b48b8e7602565ccc70c7ce62b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 10 May 2015 02:10:59 -0700
+Subject: [PATCH] Fix build with gcc 5
+
+cc1: error: ../../gnome-panel/libpanel-applets-private: No such file or
+directory [-Werror=missing-include-dirs]
+cc1: error: ../../gnome-panel/libpanel-applets-private: No such file or
+directory [-Werror=missing-include-dirs]
+cc1: error: ../../gnome-panel/libpanel-applets-private: No such file or
+directory [-Werror=missing-include-dirs]
+cc1: some warnings being treated as errors
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ gnome-panel/libpanel-applet-private/Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/gnome-panel/libpanel-applet-private/Makefile.am b/gnome-panel/libpanel-applet-private/Makefile.am
+index f12dee8..d556f12 100644
+--- a/gnome-panel/libpanel-applet-private/Makefile.am
++++ b/gnome-panel/libpanel-applet-private/Makefile.am
+@@ -8,7 +8,6 @@ AM_CPPFLAGS =							\
+ 	-I$(srcdir)						\
+ 	-I$(top_srcdir)/gnome-panel				\
+ 	-I$(top_builddir)/gnome-panel				\
+-	-I$(top_builddir)/gnome-panel/libpanel-applets-private	\
+ 	-I$(top_builddir)/gnome-panel/libpanel-util		\
+ 	-DDATADIR=\""$(datadir)"\"				\
+ 	-DPANEL_APPLETS_DIR=\"$(appletsdir)\"			\
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/as-needed.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/as-needed.patch
new file mode 100644
index 0000000..378e3e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/as-needed.patch
@@ -0,0 +1,36 @@
+From c65f1ae3472cfd4cd96fd376b7bbd95fba5eef0a Mon Sep 17 00:00:00 2001
+From: Vincent Untz <vuntz@gnome.org>
+Date: Fri, 27 May 2011 17:00:14 +0000
+Subject: build: Fix build with --as-needed
+
+upstream-status: backport
+
+---
+diff --git a/applets/notification_area/Makefile.am b/applets/notification_area/Makefile.am
+index 0afc6c5..9734536 100644
+--- a/applets/notification_area/Makefile.am
++++ b/applets/notification_area/Makefile.am
+@@ -29,17 +29,17 @@ libtray_la_SOURCES =		\
+ NOTIFICATION_AREA_SOURCES = main.c main.h
+ 
+ NOTIFICATION_AREA_LDADD =				\
++	libtray.la					\
+ 	../../libpanel-applet/libpanel-applet-4.la	\
+ 	$(X_LIBS)					\
+ 	$(NOTIFICATION_AREA_LIBS)			\
+-	$(LIBPANEL_APPLET_LIBS)				\
+-	libtray.la
++	$(LIBPANEL_APPLET_LIBS)
+ 
+ testtray_SOURCES = testtray.c
+ testtray_LDADD =			\
++	libtray.la			\
+ 	$(X_LIBS)			\
+-	$(NOTIFICATION_AREA_LIBS)	\
+-	libtray.la
++	$(NOTIFICATION_AREA_LIBS)
+ 
+ if NOTIFICATION_AREA_INPROCESS
+ APPLET_IN_PROCESS = true
+--
+cgit v0.9
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/idl-sysroot.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/idl-sysroot.patch
new file mode 100644
index 0000000..de4cd84
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel/idl-sysroot.patch
@@ -0,0 +1,22 @@
+--- /tmp/Makefile.am	2009-10-26 16:53:20.000000000 +0100
++++ gnome-panel-2.28.0/gnome-panel/Makefile.am	2009-10-26 16:53:51.000000000 +0100
+@@ -43,7 +43,7 @@
+ 	$(NULL)
+ 
+ $(CORBA_SRCLIST): $(top_srcdir)/idl/GNOME_Panel.idl $(ORBIT_IDL)
+-	$(AM_V_GEN)$(ORBIT_IDL) -I $(BONOBO_IDLDIR) -I $(BONOBO_ACT_IDLDIR) $(top_srcdir)/idl/GNOME_Panel.idl
++	$(AM_V_GEN)$(ORBIT_IDL) -I $(SYSROOT)$(BONOBO_IDLDIR) -I $(SYSROOT)$(BONOBO_ACT_IDLDIR) $(top_srcdir)/idl/GNOME_Panel.idl
+ 
+ BUILT_SOURCES = \
+ 	$(CORBA_SRCLIST)	\
+--- /tmp/Makefile.am	2009-10-26 16:54:17.000000000 +0100
++++ gnome-panel-2.28.0/libpanel-applet/Makefile.am	2009-10-26 16:54:34.000000000 +0100
+@@ -45,7 +45,7 @@
+ 	GNOME_Panel.h
+ 
+ $(CORBA_SRCLIST): $(top_srcdir)/idl/GNOME_Panel.idl $(ORBIT_IDL)
+-	$(AM_V_GEN)$(ORBIT_IDL) -I $(BONOBO_IDLDIR) -I $(BONOBO_ACT_IDLDIR) $(top_srcdir)/idl/GNOME_Panel.idl
++	$(AM_V_GEN)$(ORBIT_IDL) -I $(SYSROOT)$(BONOBO_IDLDIR) -I $(SYSROOT)$(BONOBO_ACT_IDLDIR) $(top_srcdir)/idl/GNOME_Panel.idl
+ 
+ noinst_PROGRAMS = test-bonobo-applet
+ 
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel3_3.0.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel3_3.0.2.bb
new file mode 100644
index 0000000..fbcf76f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel3_3.0.2.bb
@@ -0,0 +1,51 @@
+SUMMARY = "GNOME panel"
+LICENSE = "GPLv2 & LGPLv2 & GFDL-1.1"
+
+BPN = "gnome-panel"
+PR = "r1"
+
+PNBLACKLIST[gnome-panel3] ?= "CONFLICT: depends on libgweather3 which conflicts with libgweather"
+
+# conflicts with gnome-panel, because they provide the same package
+# http://patches.openembedded.org/patch/43105/
+EXCLUDE_FROM_WORLD = "1"
+DEFAULT_PREFERENCE = "-1"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING-DOCS;md5=c9211dab3ae61e580f48432020784324 \
+                    file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+SECTION = "x11/gnome"
+
+DEPENDS = "gnome-doc-utils-native gtk+3 dconf gconf glib-2.0 gnome-desktop3 gtk+ pango libwnck3 gnome-menus cairo libgweather3 dbus-glib librsvg libcanberra" 
+
+inherit gtk-doc gnome gettext pkgconfig
+
+SRC_URI += "file://as-needed.patch "
+
+SRC_URI[archive.md5sum] = "0f2f644dc4081b72f6df7a65282af7c6"
+SRC_URI[archive.sha256sum] = "25db8ec026c4bf47f0ef5cc7e2712f2aad175bd7fb8e4952ef5f8b200f17f196"
+
+EXTRA_OECONF = "--disable-scrollkeeper --disable-eds --enable-bonobo=no --with-in-process-applets=none"
+
+do_configure_prepend() {
+    gnome-doc-prepare --automake
+    sed -i -e s:help:: ${S}/Makefile.am
+}
+
+pkg_postinst_${PN}_append () {
+    gconftool-2 --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults \
+        --direct --load /etc/gconf/schemas/panel-default-setup.entries
+}
+
+PACKAGES =+ "libpanel-applet"
+FILES_libpanel-applet = "${libdir}/libpanel-applet-3.so.*"
+
+FILES_${PN} =+ "${datadir}/gnome* \
+                ${datadir}/dbus-1 \
+                ${datadir}/icons \
+                ${datadir}/PolicyKit \
+                ${libdir}/bonobo \
+"
+
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_2.32.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_2.32.1.bb
new file mode 100644
index 0000000..9be2ec1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_2.32.1.bb
@@ -0,0 +1,45 @@
+SUMMARY = "GNOME panel"
+LICENSE = "GPL-2.0 & LGPL-2.0 & GFDL-1.1"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING-DOCS;md5=c9211dab3ae61e580f48432020784324 \
+                    file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+SECTION = "x11/gnome"
+
+PR = "r7"
+
+DEPENDS = "gnome-doc-utils-native gconf glib-2.0 gnome-desktop gtk+ \
+           pango libwnck gnome-menus cairo libgweather dbus dbus-glib \
+	   librsvg libcanberra"
+RDEPENDS_${PN} = "python"
+
+inherit gtk-doc gnome autotools-brokensep gettext pkgconfig gconf gobject-introspection
+
+SRCREV = "8292bd2b8a36df7eed3c760899400790cde68590"
+SRC_URI = "git://git.gnome.org/gnome-panel;branch=gnome-2-32 \
+           file://0001-Fix-build-with-gcc-5.patch \
+	  "
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF = "--disable-scrollkeeper --disable-eds --enable-bonobo=no --with-in-process-applets=none"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[networkmanager] = "--enable-network-manager,--disable-network-manager,networkmanager"
+
+do_configure_prepend() {
+    gnome-doc-prepare --automake
+    sed -i -e s:help:: ${S}/Makefile.am
+    sed -i -e s:^#!@PYTHON@:#!/usr/bin/python: ${S}/gnome-panel/gnome-panel-add.in
+}
+
+PACKAGES =+ "libpanel-applet"
+FILES_libpanel-applet = "${libdir}/libpanel-applet-*.so.*"
+
+FILES_${PN} =+ "${datadir}/gnome* \
+                ${datadir}/dbus-1 \
+                ${datadir}/icons \
+                ${datadir}/PolicyKit \
+                ${libdir}/bonobo \
+"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-power-manager/gnome-power-manager-2.32.0/0001-Makefile.am-don-t-build-help-man.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-power-manager/gnome-power-manager-2.32.0/0001-Makefile.am-don-t-build-help-man.patch
new file mode 100644
index 0000000..d6d49bb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-power-manager/gnome-power-manager-2.32.0/0001-Makefile.am-don-t-build-help-man.patch
@@ -0,0 +1,37 @@
+From 3ed15a3c6ae4ab94c7e3af306644bb5d7f3fd1fa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Mon, 29 Apr 2013 13:08:10 +0200
+Subject: [PATCH] Makefile.am: don't build help/man
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+help crashes with:
+
+| xsltproc -o gnome-power-manager-C.omf --stringparam db2omf.basename gnome-power-manager --stringparam db2omf.format 'docbook' --stringparam db2omf.dtd "-//OASIS//DTD DocBook XML V4.3//EN" --stringparam db2omf.lang C --stringparam db2omf.omf_dir "/usr/share/omf" --stringparam db2omf.help_dir "/usr/share/gnome/help" --stringparam db2omf.omf_in "/home/jenkins/oe/shr-core-branches/shr-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/gnome-power-manager/2.32.0-r2/gnome-power-manager-2.32.0/help/gnome-power-manager.omf.in"  /home/jenkins/oe/shr-core-branches/shr-core/tmp-eglibc/sysroots/qemuarm`/home/jenkins/oe/shr-core-branches/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/bin/pkg-config --variable db2omf gnome-doc-utils` C/gnome-power-manager.xml || { rm -f "gnome-power-manager-C.omf"; exit 1; }
+| unable to parse fr/gnome-power-manager.xml
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ Makefile.am |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 005b8a0..5b9e318 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -5,9 +5,7 @@ SUBDIRS = 						\
+ 	src						\
+ 	po						\
+ 	docs						\
+-	man						\
+ 	data						\
+-	help						\
+ 	policy						\
+ 	tools
+ 
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-power-manager/gnome-power-manager-2.32.0/sysrooted-pkg-config.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-power-manager/gnome-power-manager-2.32.0/sysrooted-pkg-config.patch
new file mode 100644
index 0000000..f3db7ab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-power-manager/gnome-power-manager-2.32.0/sysrooted-pkg-config.patch
@@ -0,0 +1,35 @@
+In cross environment we have to prepend the sysroot to the path found by
+pkgconfig since the path returned from pkgconfig does not have sysroot prefixed
+it ends up using the files from host system. Now usually people have gnome installed
+so the build succeeds but if you dont have gnome installed on build host then
+it wont find the files on host system and packages using gnome-doc-utils wont
+compile.
+
+This should work ok with non sysrooted builds too since in those cases PKG_CONFIG_SYSROOT_DIR
+will be empty
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: gnome-power-manager-2.32.0/gnome-doc-utils.make
+===================================================================
+--- gnome-power-manager-2.32.0.orig/gnome-doc-utils.make	2010-01-27 08:28:31.000000000 -0800
++++ gnome-power-manager-2.32.0/gnome-doc-utils.make	2011-09-25 16:16:04.914813800 -0700
+@@ -124,11 +124,11 @@
+ 
+ _xml2po ?= `which xml2po`
+ 
+-_db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils`
+-_db2omf  ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
+-_chunks  ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
+-_credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
+-_ids ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/ids.xsl
++_db2html ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2html gnome-doc-utils`
++_db2omf  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
++_chunks  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
++_credits ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
++_ids ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/ids.xsl
+ 
+ if ENABLE_SK
+ _ENABLE_SK = true
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-power-manager/gnome-power-manager_2.32.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-power-manager/gnome-power-manager_2.32.0.bb
new file mode 100644
index 0000000..87bd722
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-power-manager/gnome-power-manager_2.32.0.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Power management daemon"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+PR = "r4"
+
+DEPENDS = "glib-2.0 gtk+ gconf libgnome-keyring dbus dbus-glib libnotify libwnck cairo libunique xrandr virtual/libx11 libxrender libcanberra upower gnome-doc-utils"
+RRECOMMENDS_${PN} += "gnome-keyring"
+
+inherit gnome
+
+SRC_URI += " \
+    file://sysrooted-pkg-config.patch \
+    file://0001-Makefile.am-don-t-build-help-man.patch \
+"
+
+SRC_URI[archive.md5sum] = "9a08e85dce3ffb90775f15e3bda4adda"
+SRC_URI[archive.sha256sum] = "17fa301bf7e133285c0e054ae3be2b0f690c48f59b09f67e04d6ed339b330476"
+GNOME_COMPRESS_TYPE="bz2"
+
+EXTRA_OECONF = " --disable-scrollkeeper \
+                 --disable-applets \
+                 --x-includes=${STAGING_INCDIR} \
+                 --x-libraries=${STAGING_LIBDIR} \
+                 --enable-compile-warnings=no \
+                 ac_cv_header_X11_extensions_dpms_h=yes \
+"
+
+do_configure_append() {
+    # Sigh... --enable-compile-warnings=no doesn't actually turn off -Werror
+    for i in $(find ${B} -name "Makefile") ; do
+        sed -i -e s:-Werror::g $i
+    done
+    sed -e "s/libtool --/${TARGET_SYS}-libtool --/" -i ${B}/src/Makefile
+}
+
+PACKAGES =+ "${PN}-applets"
+
+FILES_${PN}-applets = "${bindir}/*applet* \
+    ${libdir}/bonobo/servers \
+    ${datadir}/gnome-2.0/ui \
+"
+
+FILES_${PN} += "${datadir}/icons \
+    ${datadir}/dbus-1 \
+    ${datadir}/gnome/autostart \
+"
+
+FILES_${PN}-doc += "${datadir}/omf \
+    ${datadir}/gnome/help \
+"
+
+# gnome-power-manager-2.32.0/src/gpm-manager.c:488:18: error: too many arguments to function 'notify_notification_new'
+PNBLACKLIST[gnome-power-manager] ?= "BROKEN: not compatible with current libnotify"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session/use_G_GINT64_FORMAT.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session/use_G_GINT64_FORMAT.patch
new file mode 100644
index 0000000..b09f8d2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session/use_G_GINT64_FORMAT.patch
@@ -0,0 +1,61 @@
+This patch fixes the build errors when building gnome-session for 64bit target using gcc 4.8
+
+| gs-idle-monitor.c: In function 'handle_alarm_notify_event':
+| gs-idle-monitor.c:196:9: error: format '%lld' expects argument of type 'long long int', but argument 5 has type 'gint64' [-Werror=format=]
+|          g_debug ("Watch %d fired, idle time = %lld",
+|          ^
+| gs-idle-monitor.c: In function '_xsync_alarm_set':
+| gs-idle-monitor.c:453:17: error: format '%lld' expects argument of type 'long long int', but argument 4 has type 'gint64' [-Werror=format=]
+|                  g_debug ("GSIdleMonitor: updating alarm for positive transition wait=%lld",
+|                  ^
+| gs-idle-monitor.c:457:17: error: format '%lld' expects argument of type 'long long int', but argument 4 has type 'gint64' [-Werror=format=]
+|                  g_debug ("GSIdleMonitor: creating new alarm for positive transition wait=%lld",
+|                  ^
+| gs-idle-monitor.c:464:17: error: format '%lld' expects argument of type 'long long int', but argument 4 has type 'gint64' [-Werror=format=]
+|                  g_debug ("GSIdleMonitor: updating alarm for negative transition wait=%lld",
+|                  ^
+| gs-idle-monitor.c:468:17: error: format '%lld' expects argument of type 'long long int', but argument 4 has type 'gint64' [-Werror=format=]
+
+Upstream-Status: Unknown
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Index: gnome-session-2.32.1/gnome-session/gs-idle-monitor.c
+===================================================================
+--- gnome-session-2.32.1.orig/gnome-session/gs-idle-monitor.c	2010-11-17 03:17:04.000000000 -0800
++++ gnome-session-2.32.1/gnome-session/gs-idle-monitor.c	2013-06-11 23:33:12.239960082 -0700
+@@ -193,7 +193,7 @@
+                 return;
+         }
+ 
+-        g_debug ("Watch %d fired, idle time = %lld",
++        g_debug ("Watch %d fired, idle time = %" G_GINT64_FORMAT "",
+                  watch->id,
+                  _xsyncvalue_to_int64 (alarm_event->counter_value));
+ 
+@@ -450,22 +450,22 @@
+ 
+         attr.trigger.test_type = XSyncPositiveTransition;
+         if (watch->xalarm_positive != None) {
+-                g_debug ("GSIdleMonitor: updating alarm for positive transition wait=%lld",
++                g_debug ("GSIdleMonitor: updating alarm for positive transition wait=%" G_GINT64_FORMAT "",
+                          _xsyncvalue_to_int64 (attr.trigger.wait_value));
+                 XSyncChangeAlarm (GDK_DISPLAY (), watch->xalarm_positive, flags, &attr);
+         } else {
+-                g_debug ("GSIdleMonitor: creating new alarm for positive transition wait=%lld",
++                g_debug ("GSIdleMonitor: creating new alarm for positive transition wait=%" G_GINT64_FORMAT "",
+                          _xsyncvalue_to_int64 (attr.trigger.wait_value));
+                 watch->xalarm_positive = XSyncCreateAlarm (GDK_DISPLAY (), flags, &attr);
+         }
+ 
+         attr.trigger.test_type = XSyncNegativeTransition;
+         if (watch->xalarm_negative != None) {
+-                g_debug ("GSIdleMonitor: updating alarm for negative transition wait=%lld",
++                g_debug ("GSIdleMonitor: updating alarm for negative transition wait=%" G_GINT64_FORMAT "",
+                          _xsyncvalue_to_int64 (attr.trigger.wait_value));
+                 XSyncChangeAlarm (GDK_DISPLAY (), watch->xalarm_negative, flags, &attr);
+         } else {
+-                g_debug ("GSIdleMonitor: creating new alarm for negative transition wait=%lld",
++                g_debug ("GSIdleMonitor: creating new alarm for negative transition wait=%" G_GINT64_FORMAT "",
+                          _xsyncvalue_to_int64 (attr.trigger.wait_value));
+                 watch->xalarm_negative = XSyncCreateAlarm (GDK_DISPLAY (), flags, &attr);
+         }
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_2.32.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_2.32.1.bb
new file mode 100644
index 0000000..c6fb75b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_2.32.1.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Gnome session manager"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+PR = "r3"
+
+SECTION = "x11/gnome"
+DEPENDS = "libxtst gtk+ glib-2.0 upower dbus-glib gconf pango gdk-pixbuf-native startup-notification"
+
+inherit gnome
+
+SRC_URI += "file://use_G_GINT64_FORMAT.patch"
+
+SRC_URI[archive.md5sum] = "222bad6b446cb19a6b9028ea24538002"
+SRC_URI[archive.sha256sum] = "22d93ce433fcf9c7ce6b5f36dd81f64e692ea0e41faaa0f61159ddac28c3686a"
+GNOME_COMPRESS_TYPE="bz2"
+
+EXTRA_OECONF = " --with-gtk=2.0 ac_cv_path_GCONF_SANITY_CHECK=set --disable-docbook-docs"
+
+do_configure_append() {
+    for i in $(find ${S} -name "Makefile") ; do
+        sed -i -e s:"GCONFTOOL = .*/usr/bin/gconftool-2":"GCONFTOOL = /usr/bin/gconftool-2":g $i
+        sed -i -e s:"GCONF_SANITY_CHECK = set":"GCONF_SANITY_CHECK = /usr/libexec/gconf-sanity-check-2":g $i
+    done    
+}
+
+RRECOMMENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-ck-connector', '', d)}"
+FILES_${PN} += "${datadir}/xsessions ${datadir}/icons ${datadir}/gnome ${libdir}/gnome-session/helpers"
+FILES_${PN}-dbg += "${libexecdir}/gnome-session/helpers/.debug"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/files/0001-Require-libnotify-0.6.0.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/files/0001-Require-libnotify-0.6.0.patch
new file mode 100644
index 0000000..6dd33f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/files/0001-Require-libnotify-0.6.0.patch
@@ -0,0 +1,81 @@
+From e1ab570b0dce479ba235e5542ea07d1b5bafc4c9 Mon Sep 17 00:00:00 2001
+From: William Jon McCann <jmccann@redhat.com>
+Date: Mon, 11 Oct 2010 23:35:45 -0400
+Subject: [PATCH] Require libnotify 0.6.0
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+
+Upstream-Status: Backport
+
+---
+ configure.ac                                      |  2 +-
+ plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c |  8 ++------
+ plugins/xrandr/gsd-xrandr-manager.c               | 13 +++----------
+ 3 files changed, 6 insertions(+), 17 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8a90053..8624b2a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -54,7 +54,7 @@ GTK_REQUIRED_VERSION=2.91.0
+ GCONF_REQUIRED_VERSION=2.6.1
+ GIO_REQUIRED_VERSION=2.17.3
+ GNOME_DESKTOP_REQUIRED_VERSION=2.29.92
+-LIBNOTIFY_REQUIRED_VERSION=0.4.3
++LIBNOTIFY_REQUIRED_VERSION=0.6.1
+ 
+ EXTRA_COMPILE_WARNINGS(yes)
+ 
+diff --git a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
+index 9ca820a..f5964b9 100644
+--- a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
++++ b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
+@@ -608,9 +608,7 @@ ax_slowkeys_warning_post_bubble (GsdA11yKeyboardManager *manager,
+         gsd_a11y_keyboard_manager_ensure_status_icon (manager);
+         manager->priv->notification = notify_notification_new (title,
+                                                                message,
+-                                                               "preferences-desktop-accessibility",
+-                                                               NULL);
+-        notify_notification_attach_to_status_icon (manager->priv->notification, manager->priv->status_icon);
++                                                               "preferences-desktop-accessibility");
+         notify_notification_set_timeout (manager->priv->notification, NOTIFICATION_TIMEOUT * 1000);
+ 
+         notify_notification_add_action (manager->priv->notification,
+@@ -747,9 +745,7 @@ ax_stickykeys_warning_post_bubble (GsdA11yKeyboardManager *manager,
+         gsd_a11y_keyboard_manager_ensure_status_icon (manager);
+         manager->priv->notification = notify_notification_new (title,
+                                                                message,
+-                                                               "preferences-desktop-accessibility",
+-                                                               NULL);
+-        notify_notification_attach_to_status_icon (manager->priv->notification, manager->priv->status_icon);
++                                                               "preferences-desktop-accessibility");
+         notify_notification_set_timeout (manager->priv->notification, NOTIFICATION_TIMEOUT * 1000);
+ 
+         notify_notification_add_action (manager->priv->notification,
+diff --git a/plugins/xrandr/gsd-xrandr-manager.c b/plugins/xrandr/gsd-xrandr-manager.c
+index 02536a3..ef57d5b 100644
+--- a/plugins/xrandr/gsd-xrandr-manager.c
++++ b/plugins/xrandr/gsd-xrandr-manager.c
+@@ -1084,16 +1084,9 @@ error_message (GsdXrandrManager *mgr, const char *primary_text, GError *error_to
+ 
+         g_assert (error_to_display == NULL || secondary_text == NULL);
+ 
+-        if (priv->status_icon)
+-                notification = notify_notification_new_with_status_icon (primary_text,
+-                                                                         error_to_display ? error_to_display->message : secondary_text,
+-                                                                         GSD_XRANDR_ICON_NAME,
+-                                                                         priv->status_icon);
+-        else
+-                notification = notify_notification_new (primary_text,
+-                                                        error_to_display ? error_to_display->message : secondary_text,
+-                                                        GSD_XRANDR_ICON_NAME,
+-                                                        NULL);
++        notification = notify_notification_new (primary_text,
++                                                error_to_display ? error_to_display->message : secondary_text,
++                                                GSD_XRANDR_ICON_NAME);
+ 
+         notify_notification_show (notification, NULL); /* NULL-GError */
+ #else
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_2.32.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_2.32.1.bb
new file mode 100644
index 0000000..393eb25
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_2.32.1.bb
@@ -0,0 +1,42 @@
+SUMMARY = "GNOME settings daemon"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+PR = "r7"
+
+DEPENDS = "intltool libxxf86misc libsndfile1 libxtst glib-2.0 polkit gtk+ gconf dbus-glib libnotify libgnomekbd libxklavier gnome-doc-utils gnome-desktop"
+
+inherit gnome
+
+SRC_URI = " \
+    git://git.gnome.org/gnome-settings-daemon;branch=gnome-2-32 \
+    file://0001-Require-libnotify-0.6.0.patch \
+"
+SRCREV = "0160f6725cfb872e017f3958f108792c3b882872"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)}"
+PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio glib-2.0 libcanberra"
+PACKAGECONFIG[smartcard] = "--enable-smartcard-support,--disable-smartcard-support,nss"
+
+EXTRA_OECONF = " \
+    --x-includes=${STAGING_INCDIR} \
+    --x-libraries=${STAGING_LIBDIR} \
+    --enable-polkit \
+"
+
+do_configure_prepend() {
+    sed -i -e 's:-L$libdir::g' -e 's:-I$includedir::g' ${S}/configure.ac
+}
+
+FILES_${PN} += "${libdir}/gnome-settings-daemon-2.0/*.so ${libdir}/gnome-settings-daemon-2.0/*plugin \
+                ${datadir}/dbus-1/ \
+                ${datadir}/icon* \
+                ${datadir}/gnome-control-center \
+                ${datadir}/xsession*"
+
+FILES_${PN}-dbg += "${libdir}/gnome-settings-daemon-2.0/.debug"
+FILES_${PN}-dev += "${libdir}/gnome-settings-daemon-2.0/*.la"
+FILES_${PN}-staticdev += "${libdir}/gnome-settings-daemon-2.0/*.a"
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/files/0001-Fix-glib-includes.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/files/0001-Fix-glib-includes.patch
new file mode 100644
index 0000000..ace1b00
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/files/0001-Fix-glib-includes.patch
@@ -0,0 +1,101 @@
+From 8587e35af52f7773f62361be2e72ddf286a59185 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Tue, 15 May 2012 13:02:02 +0200
+Subject: [PATCH] Fix glib includes
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Upstream-Status: unknown
+
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ src/interface.h       |    2 +-
+ src/load-graph.h      |    2 +-
+ src/lsof.h            |    2 +-
+ src/openfiles.h       |    2 +-
+ src/procman_gnomesu.h |    2 +-
+ src/util.cpp          |    2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/interface.h b/src/interface.h
+index 4bda35a..b26b670 100644
+--- a/src/interface.h
++++ b/src/interface.h
+@@ -20,7 +20,7 @@
+ #ifndef _PROCMAN_INTERFACE_H_
+ #define _PROCMAN_INTERFACE_H_
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <gtk/gtk.h>
+ #include "procman.h"
+ 
+diff --git a/src/load-graph.h b/src/load-graph.h
+index 6111c78..6e7a599 100644
+--- a/src/load-graph.h
++++ b/src/load-graph.h
+@@ -1,7 +1,7 @@
+ #ifndef _PROCMAN_LOAD_GRAPH_H_
+ #define _PROCMAN_LOAD_GRAPH_H_
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <glibtop/cpu.h>
+ 
+ enum
+diff --git a/src/lsof.h b/src/lsof.h
+index ad7f111..da420e2 100644
+--- a/src/lsof.h
++++ b/src/lsof.h
+@@ -1,7 +1,7 @@
+ #ifndef H_PROCMAN_LSOF_1161179202
+ #define H_PROCMAN_LSOF_1161179202
+ 
+-#include <glib/gmacros.h>
++#include <glib.h>
+ #include "procman.h"
+ 
+ void procman_lsof(ProcData *data);
+diff --git a/src/openfiles.h b/src/openfiles.h
+index 38b1cc8..a8b7b05 100644
+--- a/src/openfiles.h
++++ b/src/openfiles.h
+@@ -1,7 +1,7 @@
+ #ifndef _OPENFILES_H_
+ #define _OPENFILES_H_
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ 
+ #include "procman.h"
+ 
+diff --git a/src/procman_gnomesu.h b/src/procman_gnomesu.h
+index fec2650..474ca9a 100644
+--- a/src/procman_gnomesu.h
++++ b/src/procman_gnomesu.h
+@@ -1,7 +1,7 @@
+ #ifndef H_GNOME_SYSTEM_MONITOR_GNOMESU_H_1132171917
+ #define H_GNOME_SYSTEM_MONITOR_GNOMESU_H_1132171917
+ 
+-#include <glib/gtypes.h>
++#include <glib.h>
+ 
+ gboolean
+ procman_gnomesu_create_root_password_dialog(const char * message);
+diff --git a/src/util.cpp b/src/util.cpp
+index 9b1c9f5..90073fe 100644
+--- a/src/util.cpp
++++ b/src/util.cpp
+@@ -1,7 +1,7 @@
+ #include <config.h>
+ 
+ #include <glib/gi18n.h>
+-#include <glib/gstring.h>
++#include <glib.h>
+ #include <gtk/gtk.h>
+ 
+ #include <glibtop/proctime.h>
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/files/0002-src-procman.cpp-include-main-gtkmm.h.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/files/0002-src-procman.cpp-include-main-gtkmm.h.patch
new file mode 100644
index 0000000..7b67281
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/files/0002-src-procman.cpp-include-main-gtkmm.h.patch
@@ -0,0 +1,49 @@
+From acff719983aa1294148dc4a367c48957f5510eff Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Fri, 17 May 2013 18:25:56 +0200
+Subject: [PATCH] src/procman.cpp: include main gtkmm.h
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+after update of gtkmm build failed with:
+
+In file included from /home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gtkmm-2.4/gtkmm/main.h:33:0,
+                 from procman.cpp:26:
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:92:7: error: 'Value' is not a template
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:92:54: error: expected template-name before '<' token
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:92:54: error: expected '{' before '<' token
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:92:54: error: expected unqualified-id before '<' token
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:174:7: error: 'Value' is not a template
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:174:30: error: 'Glib::Value' is not a template type
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:174:58: error: expected template-name before '<' token
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:207:7: error: 'Value' is not a template
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:207:24: error: 'Glib::Value' is not a template type
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:207:51: error: expected template-name before '<' token
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:274:7: error: 'Value' is not a template
+/home/Superandy/tmp/oe-core-eglibc/sysroots/overo/usr/include/gdkmm-2.4/gdkmm/types.h:274:32: error: 'Glib::Value' is not a template type
+<...>
+
+Upstream-Status: Backport
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ src/procman.cpp |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/procman.cpp b/src/procman.cpp
+index b5c0d0a..d9b4b3f 100644
+--- a/src/procman.cpp
++++ b/src/procman.cpp
+@@ -23,7 +23,7 @@
+ 
+ #include <locale.h>
+ 
+-#include <gtkmm/main.h>
++#include <gtkmm.h>
+ #include <giomm/volumemonitor.h>
+ #include <giomm/init.h>
+ #include <glib.h>
+-- 
+1.7.4.4
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/files/Remove-pkg-config-check-for-gnome-icon-theme.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/files/Remove-pkg-config-check-for-gnome-icon-theme.patch
new file mode 100644
index 0000000..3c5169e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/files/Remove-pkg-config-check-for-gnome-icon-theme.patch
@@ -0,0 +1,30 @@
+From 36fd2aa23e712f05f0cce4a1be3453fcf405d026 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Tue, 15 Sep 2015 16:28:18 +0300
+Subject: [PATCH] Remove pkg-config check for gnome-icon-theme
+
+Theme is not required for building, and the icons are provided by
+adwaita-icon-theme anyway
+
+Upstream-Status: Inappropriate [Fixed in current versions]
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ configure.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.in b/configure.in
+index 3600823..42262f2 100644
+--- a/configure.in
++++ b/configure.in
+@@ -37,7 +37,7 @@ LIBXML_REQUIRED=2.0
+ RSVG_REQUIRED=2.12
+ DBUS_REQUIRED=0.7
+ 
+-PKG_CHECK_MODULES(PROCMAN, glib-2.0 >= $GLIB_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgtop-2.0 >= $LIBGTOP_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED gtk+-2.0 >= $GTK_REQUIRED gnome-icon-theme >= $GNOME_ICON_THEME_REQUIRED gtkmm-2.4 >= $GTKMM_REQUIRED libxml-2.0 >= $LIBXML_REQUIRED librsvg-2.0 >= $RSVG_REQUIRED glibmm-2.4 >= $GLIBMM_REQUIRED giomm-2.4 >= $GIOMM_REQUIRED dbus-glib-1 >= $DBUS_REQUIRED)
++PKG_CHECK_MODULES(PROCMAN, glib-2.0 >= $GLIB_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgtop-2.0 >= $LIBGTOP_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED gtk+-2.0 >= $GTK_REQUIRED gtkmm-2.4 >= $GTKMM_REQUIRED libxml-2.0 >= $LIBXML_REQUIRED librsvg-2.0 >= $RSVG_REQUIRED glibmm-2.4 >= $GLIBMM_REQUIRED giomm-2.4 >= $GIOMM_REQUIRED dbus-glib-1 >= $DBUS_REQUIRED)
+ 
+ 
+ AC_ARG_ENABLE(more-warnings,
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_2.28.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_2.28.2.bb
new file mode 100644
index 0000000..55778f7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_2.28.2.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Gnome system monitor"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+SECTION = "x11/gnome"
+PR = "r2"
+
+DEPENDS = "libgtop gtkmm glibmm gnome-doc-utils libwnck gtk+ dbus-glib librsvg intltool-native"
+
+inherit gnome
+SRC_URI[archive.md5sum] = "3f0bca9b0ebc7a365466851cd580d167"
+SRC_URI[archive.sha256sum] = "b628edfd39e3a6b374ce133f367d3568475eb4e981a367f4f9d62a9784e5ae59"
+GNOME_COMPRESS_TYPE="bz2"
+SRC_URI += " \
+    file://0001-Fix-glib-includes.patch \
+    file://0002-src-procman.cpp-include-main-gtkmm.h.patch \
+    file://Remove-pkg-config-check-for-gnome-icon-theme.patch \
+"
+
+do_configure_prepend() {
+    sed -i -e s:help::g ${S}/Makefile.am
+}
+
+RRECOMMENDS_${PN} = "adwaita-icon-theme"
+
+FILES_${PN} += "${datadir}/icons \
+                ${datadir}/dbus-1 \
+                ${datadir}/gnome/autostart \
+"
+
+FILES_${PN}-doc += "${datadir}/omf \
+                    ${datadir}/gnome/help "
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/0001-multiple-Makefile.am-remove-DG_DISABLE_DEPRECATED-to.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/0001-multiple-Makefile.am-remove-DG_DISABLE_DEPRECATED-to.patch
new file mode 100644
index 0000000..3833299
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/0001-multiple-Makefile.am-remove-DG_DISABLE_DEPRECATED-to.patch
@@ -0,0 +1,77 @@
+From 536e9b57cada4a9f92e073fdf01cdf1def435b6b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Tue, 7 May 2013 14:56:06 +0200
+Subject: [PATCH] multiple Makefile.am: remove -DG_DISABLE_DEPRECATED to fix
+ build with glib-2.36
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ daemon/Makefile.am      |    1 -
+ libgnomevfs/Makefile.am |    1 -
+ 2 files changed, 0 insertions(+), 2 deletions(-)
+
+Index: gnome-vfs-2.24.4/daemon/Makefile.am
+===================================================================
+--- gnome-vfs-2.24.4.orig/daemon/Makefile.am	2013-10-17 16:39:39.081024798 -0700
++++ gnome-vfs-2.24.4/daemon/Makefile.am	2013-10-17 16:39:39.213024794 -0700
+@@ -8,7 +8,6 @@
+ 	-D_LARGEFILE64_SOURCE                   \
+ 	-D_POSIX_PTHREAD_SEMANTICS		\
+ 	-D_REENTRANT				\
+-	-DG_DISABLE_DEPRECATED			\
+ 	-DGNOME_VFS_PREFIX=\"$(prefix)\"	\
+ 	-DGNOME_VFS_DATADIR=\"$(datadir)\"	\
+ 	-DGNOME_VFS_LIBDIR=\"$(libdir)\"	\
+Index: gnome-vfs-2.24.4/libgnomevfs/Makefile.am
+===================================================================
+--- gnome-vfs-2.24.4.orig/libgnomevfs/Makefile.am	2013-10-17 16:39:39.081024798 -0700
++++ gnome-vfs-2.24.4/libgnomevfs/Makefile.am	2013-10-17 16:39:39.213024794 -0700
+@@ -19,7 +19,6 @@
+ 	-D_LARGEFILE64_SOURCE                   \
+ 	-D_POSIX_PTHREAD_SEMANTICS		\
+ 	-D_REENTRANT				\
+-	-DG_DISABLE_DEPRECATED			\
+ 	-DGNOME_VFS_PREFIX=\"$(prefix)\"	\
+ 	-DGNOME_VFS_BINDIR=\"$(bindir)\"	\
+ 	-DGNOME_VFS_DATADIR=\"$(datadir)\"	\
+Index: gnome-vfs-2.24.4/modules/Makefile.am
+===================================================================
+--- gnome-vfs-2.24.4.orig/modules/Makefile.am	2013-10-17 16:39:39.081024798 -0700
++++ gnome-vfs-2.24.4/modules/Makefile.am	2013-10-17 16:39:39.213024794 -0700
+@@ -18,7 +18,6 @@
+ 	-D_POSIX_PTHREAD_SEMANTICS		\
+ 	-D_REENTRANT				\
+ 	-DSSH_PROGRAM=\"$(SSH_PROGRAM)\"	\
+-	-DG_DISABLE_DEPRECATED			\
+ 	-DGNOME_VFS_PREFIX=\"$(prefix)\"	\
+ 	-DGNOME_VFS_DATADIR=\"$(datadir)\"	\
+ 	-DGNOME_VFS_LIBDIR=\"$(libdir)\"	\
+Index: gnome-vfs-2.24.4/programs/Makefile.am
+===================================================================
+--- gnome-vfs-2.24.4.orig/programs/Makefile.am	2013-10-17 16:39:39.081024798 -0700
++++ gnome-vfs-2.24.4/programs/Makefile.am	2013-10-17 16:39:39.213024794 -0700
+@@ -4,8 +4,7 @@
+ 	-I$(top_srcdir)				\
+ 	-I$(top_builddir)			\
+ 	$(TEST_CFLAGS)				\
+-	$(VFS_CFLAGS)				\
+-	-DG_DISABLE_DEPRECATED
++	$(VFS_CFLAGS)
+ 
+ libraries =						\
+ 	$(top_builddir)/libgnomevfs/libgnomevfs-2.la	\
+Index: gnome-vfs-2.24.4/test/Makefile.am
+===================================================================
+--- gnome-vfs-2.24.4.orig/test/Makefile.am	2010-02-09 04:16:14.000000000 -0800
++++ gnome-vfs-2.24.4/test/Makefile.am	2013-10-17 16:42:49.109019172 -0700
+@@ -6,7 +6,6 @@
+ 	-I$(top_builddir)/libgnomevfs           \
+ 	$(TEST_CFLAGS)				\
+ 	$(VFS_CFLAGS)				\
+-	-DG_DISABLE_DEPRECATED			\
+ 	-DMODULES_PATH=\"$(libdir)/vfs/modules\"
+ 
+ if OS_WIN32
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/do-not-use-srcdir-variable.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/do-not-use-srcdir-variable.patch
new file mode 100644
index 0000000..30ca29b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/do-not-use-srcdir-variable.patch
@@ -0,0 +1,22 @@
+Fixes errors with new autotools
+
+| automake: error: using '$(srcdir)' in TESTS is currently broken: '$(srcdir)/auto-test'
+| autoreconf: automake failed with exit status: 1
+| ERROR: autoreconf execution failed.
+
+Upstream-Status: Not Submitted
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: gnome-vfs-2.24.4/test/Makefile.am
+===================================================================
+--- gnome-vfs-2.24.4.orig/test/Makefile.am	2013-10-17 16:43:36.677017764 -0700
++++ gnome-vfs-2.24.4/test/Makefile.am	2013-10-17 16:48:47.369008566 -0700
+@@ -64,7 +64,7 @@
+ 	test-async-cancel \
+ 	test-escape       \
+ 	test-uri       	  \
+-	$(srcdir)/auto-test	
++	auto-test
+ 
+ libraries =						\
+ 	$(top_builddir)/libgnomevfs/libgnomevfs-2.la	\
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/gconftool-lossage.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/gconftool-lossage.patch
new file mode 100644
index 0000000..0f52136
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/gconftool-lossage.patch
@@ -0,0 +1,13 @@
+Upstream-Status: Inappropriate [configuration]
+
+--- gnome-vfs-2.6.0/configure.in~	2004-03-22 12:36:23.000000000 +0000
++++ gnome-vfs-2.6.0/configure.in	2004-06-07 16:04:34.000000000 +0100
+@@ -154,7 +154,7 @@
+ AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
+ 
+ if test x"$GCONFTOOL" = xno; then
+-  AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
++  AC_MSG_WARN([gconftool-2 executable not found in your path - should be installed with GConf])
+ fi
+ 
+ AM_GCONF_SOURCE_2
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/gnome-vfs-no-kerberos.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/gnome-vfs-no-kerberos.patch
new file mode 100644
index 0000000..dabec32
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs-2.24.4/gnome-vfs-no-kerberos.patch
@@ -0,0 +1,53 @@
+Upstream-Status: Inappropriate [configuration]
+
+removes kerberos completely to avoid conflicts with installed kerberos
+--- configure.in.orig	2007-01-05 19:42:26.418541610 +0200
++++ configure.in	2007-01-05 19:42:56.604261797 +0200
+@@ -436,47 +436,6 @@
+ ])
+ AM_CONDITIONAL(HAVE_CDDA, test $have_cdda = yes)
+ AC_SUBST(CDDA_LIBS)
+-
+-dnl GSSAPI
+-dnl Check for Kerberos installation
+-have_gssapi=no
+-AC_PATH_PROG([KRB5_CONFIG], krb5-config, none, $PATH:/usr/kerberos/bin)
+-					   
+-if test "x$KRB5_CONFIG" != "xnone"; then
+-   GSSAPI_LIBS="`${KRB5_CONFIG} --libs gssapi`"
+-   GSSAPI_CFLAGS="`${KRB5_CONFIG} --cflags gssapi`"
+-   
+-   saved_CPPFLAGS="$CPPFLAGS"
+-   saved_LIBS="$LIBS"
+-   LIBS="$LIBS $GSSAPI_LIBS"
+-   CPPFLAGS="$CPPFLAGS $GSSAPI_CFLAGS"
+-   # MIT and Heimdal put gssapi.h in different places
+-   AC_CHECK_HEADERS(gssapi/gssapi.h gssapi.h, [
+-       AC_CHECK_FUNCS(gss_init_sec_context, [
+-           AC_MSG_NOTICE([GSSAPI authentication support enabled])
+-           AC_DEFINE(HAVE_GSSAPI, 1, [Define if GSSAPI support is enabled])
+-           AC_CHECK_HEADERS(gssapi/gssapi_generic.h)
+-		 have_gssapi=yes
+-	 
+-       # MIT Kerberos lacks GSS_C_NT_HOSTBASED_SERVICE
+-       AC_CHECK_DECL([GSS_C_NT_HOSTBASED_SERVICE],,
+-          [AC_DEFINE([GSS_C_NT_HOSTBASED_SERVICE], gss_nt_service_name, 
+-             [Define if GSS_C_NT_HOSTBASED_SERVICE is not defined otherwise])
+-		], [
+-		    #ifdef HAVE_GSSAPI_GSSAPI_H
+-		    #include <gssapi/gssapi.h>
+-		    #else	   
+-		    #include <gssapi.h>
+-		    #endif
+-		])
+-	  ])
+-     break
+-   ])
+-   LIBS="$saved_LIBS" 
+-   CPPFLAGS="$saved_CPPFLAGS" 
+-fi   
+-AC_SUBST(GSSAPI_LIBS)
+-AC_SUBST(GSSAPI_CFLAGS)
+ 	   
+ dnl ******************************
+ dnl http-method (neon checks)
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs_2.24.4.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs_2.24.4.bb
new file mode 100644
index 0000000..f9b02b1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome-vfs/gnome-vfs_2.24.4.bb
@@ -0,0 +1,60 @@
+SUMMARY = "a userspace virtual filesystem"
+HOMEPAGE = "http://www.gnome.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://libgnomevfs/gnome-vfs.h;endline=25;md5=17071e69707a8f42887d88413f2623cb \
+                    file://programs/gnomevfs-ls.c;endline=23;md5=678a2e8bedaef5818ccabe633840196b \
+                    file://daemon/vfs-daemon.c;endline=21;md5=5f2c61553fb16abb07fc9498ca03fe1f \
+                    file://modules/cdda-cddb.h;endline=22;md5=20ed324ca64907c366ecd7f22b8e0c54"
+
+DEPENDS = "libxml2 gconf dbus bzip2 gnome-mime-data zlib intltool-native"
+RRECOMMENDS_${PN} = "gnome-vfs-plugin-file shared-mime-info"
+# Some legacy packages will require gnome-mime-data to be installed, but use of
+# it is deprecated.
+PR = "r3"
+
+inherit gnome
+
+# This is to provide compatibility with the gnome-vfs DBus fork
+RPROVIDES_${PN} = "gnome-vfs-plugin-dbus"
+
+SRC_URI += " \
+    file://gconftool-lossage.patch \
+    file://gnome-vfs-no-kerberos.patch;striplevel=0 \
+    file://0001-multiple-Makefile.am-remove-DG_DISABLE_DEPRECATED-to.patch \
+    file://do-not-use-srcdir-variable.patch \
+"
+
+SRC_URI[archive.md5sum] = "a05fab03eeef10a47dd156b758982f2e"
+SRC_URI[archive.sha256sum] = "62de64b5b804eb04104ff98fcd6a8b7276d510a49fbd9c0feb568f8996444faa"
+GNOME_COMPRESS_TYPE="bz2"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)}"
+PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi"
+PACKAGECONFIG[fam] = "--enable-fam,--disable-fam,gamin"
+
+EXTRA_OECONF = " --disable-hal \
+                 --disable-openssl \
+                 --disable-samba \
+                 ac_cv_lib_acl_acl_get_file=no \
+                 ac_cv_lib_sec_acl=no \
+                 gvfs_cv_HAVE_SOLARIS_ACLS=no \
+                 gvfs_cv_HAVE_POSIX_ACLS=no \
+"
+
+FILES_${PN} += "${libdir}/vfs ${datadir}/dbus-1/services"
+FILES_${PN}-dbg += "${libdir}/gnome-vfs-2.0/modules/.debug"
+FILES_${PN}-dev += "${libdir}/gnome-vfs-2.0/include/* ${libdir}/gnome-vfs-2.0/modules/*.la"
+FILES_${PN}-staticdev += "${libdir}/gnome-vfs-2.0/modules/*.a"
+FILES_${PN}-doc += "${datadir}/gtk-doc"
+
+PACKAGES_DYNAMIC += "^gnome-vfs-plugin-.*"
+
+python populate_packages_prepend () {
+    print d.getVar('FILES_gnome-vfs', 1)
+
+    plugindir = d.expand('${libdir}/gnome-vfs-2.0/modules/')
+    do_split_packages(d, plugindir, '^lib(.*)\.so$', 'gnome-vfs-plugin-%s', 'GNOME VFS plugin for %s')
+}
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/gnome-terminal/0001-Makefile.am-do-not-build-help.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/gnome-terminal/0001-Makefile.am-do-not-build-help.patch
new file mode 100644
index 0000000..d7874e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/gnome-terminal/0001-Makefile.am-do-not-build-help.patch
@@ -0,0 +1,28 @@
+From d2549d3ef08536be6d141524e3382fef07fea8bf Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Tue, 30 Apr 2013 19:48:27 +0200
+Subject: [PATCH] Makefile.am: do not build help
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 89f7ee4..31e11ab 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,4 +1,4 @@
+-SUBDIRS = src po help
++SUBDIRS = src po
+ 
+ NULL =
+ 
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/gnome-terminal_2.30.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/gnome-terminal_2.30.2.bb
new file mode 100644
index 0000000..0ac2b20
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/gnome-terminal_2.30.2.bb
@@ -0,0 +1,19 @@
+SUMMARY = "GNOME Terminal"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5b51eba4ba4cafe64073227530c061ed"
+DEPENDS = "gtk+ glib-2.0 startup-notification dbus-glib vte gnome-doc-utils intltool-native"
+PR = "r1"
+
+inherit gnome
+
+SRC_URI += " \
+    file://0001-Makefile.am-do-not-build-help.patch \
+"
+
+EXTRA_OECONF += "--disable-scrollkeeper"
+
+SRC_URI[archive.md5sum] = "74c4528f00067072c2bd867d1f8fe844"
+SRC_URI[archive.sha256sum] = "2c7af2250698b9f9f53c6eaa93211c1118cf2c7e29cbbacfd1e8a6a10069e07a"
+GNOME_COMPRESS_TYPE="bz2"
+
+RRECOMMENDS_${PN} += "gnome-common-schemas"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomecups/libgnomecups-0.2.3-cups-1.6.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomecups/libgnomecups-0.2.3-cups-1.6.patch
new file mode 100644
index 0000000..dba60ca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomecups/libgnomecups-0.2.3-cups-1.6.patch
@@ -0,0 +1,288 @@
+Imported from gentoo:
+http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/net-print/libgnomecups/files/libgnomecups-0.2.3-cups-1.6.patch
+
+From ae783efde4fa69578651994505462f02b8639220 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Tue, 7 Aug 2012 06:53:09 -0400
+Subject: [PATCH] Use CUPS-1.6 IPP API getter/setter functions
+
+CUPS 1.6 makes various structures private and introduces these ippGet
+and ippSet functions for all of the fields in these structures.
+http://www.cups.org/str.php?L3928
+
+We define our own accessors when building against CUPS < 1.6.
+
+Based on work by Jiri Popelka <jpopelka@redhat.com> at
+https://bugzilla.gnome.org/show_bug.cgi?id=679759
+---
+ libgnomecups/gnome-cups-printer.c |   48 +++++++++++++++++++++++++++++-------
+ libgnomecups/gnome-cups-queue.c   |   43 +++++++++++++++++++++++++++------
+ libgnomecups/gnome-cups-request.c |   44 ++++++++++++++++++++++++++++-----
+ 3 files changed, 110 insertions(+), 25 deletions(-)
+
+diff --git a/libgnomecups/gnome-cups-printer.c b/libgnomecups/gnome-cups-printer.c
+index c924af0..f5e1ef7 100644
+--- a/libgnomecups/gnome-cups-printer.c
++++ b/libgnomecups/gnome-cups-printer.c
+@@ -37,6 +37,34 @@
+ 
+ #define UPDATE_TIMEOUT 5000
+ 
++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
++#define HAVE_CUPS_1_6 1
++#endif
++
++#ifndef HAVE_CUPS_1_6
++#define ippGetCount(attr)     attr->num_values
++#define ippGetName(attr)      attr->name
++#define ippGetInteger(attr, element) attr->values[element].integer
++#define ippGetString(attr, element, language) attr->values[element].string.text
++
++static ipp_attribute_t *
++ippFirstAttribute(ipp_t *ipp)
++{
++  if (!ipp)
++    return (NULL);
++  return (ipp->current = ipp->attrs);
++}
++
++static ipp_attribute_t *
++ippNextAttribute(ipp_t *ipp)
++{
++  if (!ipp || !ipp->current)
++    return (NULL);
++  return (ipp->current = ipp->current->next);
++}
++#endif
++
++
+ struct _GnomeCupsPPDFile {
+ 	char name[1];
+ };
+@@ -173,9 +201,9 @@ map_reasons (GnomeCupsPrinter *printer,
+ 	printer->details->state_reasons = NULL;
+ 
+ 	/* cf. RFC2911 4.4.12 */
+-	for (i = 0; i < attr->num_values; i++) {
++	for (i = 0; i < ippGetCount (attr); i++) {
+ 		const char *p;
+-		const char *keyword = attr->values [i].string.text;
++		const char *keyword = ippGetString (attr, i, NULL);
+ 
+ 		reason = g_new (GnomeCupsPrinterReason, 1);
+ 
+@@ -224,8 +252,8 @@ gnome_cups_printer_get_info (GnomeCupsPrinter *printer)
+ 	return printer->details->info;
+ }
+ 
+-#define MAP_INT(v,a) {if (!g_ascii_strcasecmp (attr->name, (a))) { if ((v) != attr->values[0].integer) { changed = TRUE; } (v) = attr->values[0].integer; }}
+-#define MAP_STRING(v,a) {if (!g_ascii_strcasecmp (attr->name, (a))) { if (!v || strcmp (v, attr->values[0].string.text)) { g_free (v); changed = TRUE; (v) = g_strdup (attr->values[0].string.text); }}}
++#define MAP_INT(v,a) {if (!g_ascii_strcasecmp (ippGetName (attr), (a))) { if ((v) != ippGetInteger (attr, 0)) { changed = TRUE; } (v) = ippGetInteger (attr, 0); }}
++#define MAP_STRING(v,a) {if (!g_ascii_strcasecmp (ippGetName (attr), (a))) { if (!v || strcmp (v, ippGetString (attr, 0, NULL))) { g_free (v); changed = TRUE; (v) = g_strdup (ippGetString (attr, 0, NULL)); }}}
+ 
+ static void
+ attributes_update_cb (guint id,
+@@ -243,14 +271,14 @@ attributes_update_cb (guint id,
+ 	changed = FALSE;
+ 
+ 	if (!error && response) {
+-		for (attr = response->attrs; attr != NULL; attr = attr->next) {
+-			if (!attr->name) {
++		for (attr = ippFirstAttribute (response); attr != NULL; attr = ippNextAttribute (response)) {
++			if (!ippGetName (attr)) {
+ 				continue;
+ 			} 
+-			if (!g_ascii_strcasecmp (attr->name, "attributes-charset") || !strcmp (attr->name, "attributes-charset")) {
++			if (!g_ascii_strcasecmp (ippGetName (attr), "attributes-charset") || !strcmp (ippGetName (attr), "attributes-charset")) {
+ 				continue;
+ 			}
+-			if (!g_ascii_strcasecmp (attr->name, "printer-state-reasons")) {
++			if (!g_ascii_strcasecmp (ippGetName (attr), "printer-state-reasons")) {
+ 				map_reasons (printer, attr);
+ 			}
+ 			MAP_INT (printer->details->state, "printer-state");
+@@ -570,7 +598,7 @@ get_default (void)
+ 	
+ 	attr = ippFindAttribute (response, "printer-name", IPP_TAG_NAME);
+ 	if (attr) {
+-		name = g_strdup (attr->values[0].string.text);
++		name = g_strdup (ippGetString (attr, 0, NULL));
+ 	} else {
+ 		name = NULL;
+ 	}
+@@ -698,7 +726,7 @@ get_printer_names (void)
+ 	attr = ippFindAttribute (response, "printer-name", IPP_TAG_NAME);
+ 	while (attr) {
+ 		ret = g_list_prepend (ret, 
+-				      g_strdup (attr->values[0].string.text));
++				      g_strdup (ippGetString (attr, 0, NULL)));
+ 		
+ 		attr = ippFindNextAttribute (response, 
+ 					     "printer-name", 
+diff --git a/libgnomecups/gnome-cups-queue.c b/libgnomecups/gnome-cups-queue.c
+index 9f98ed9..298db42 100644
+--- a/libgnomecups/gnome-cups-queue.c
++++ b/libgnomecups/gnome-cups-queue.c
+@@ -15,6 +15,33 @@
+ 
+ #define UPDATE_TIMEOUT 3000
+ 
++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
++#define HAVE_CUPS_1_6 1
++#endif
++
++#ifndef HAVE_CUPS_1_6
++#define ippGetName(attr)      attr->name
++#define ippGetInteger(attr, element) attr->values[element].integer
++#define ippGetString(attr, element, language) attr->values[element].string.text
++
++static ipp_attribute_t *
++ippFirstAttribute(ipp_t *ipp)
++{
++  if (!ipp)
++    return (NULL);
++  return (ipp->current = ipp->attrs);
++}
++
++static ipp_attribute_t *
++ippNextAttribute(ipp_t *ipp)
++{
++  if (!ipp || !ipp->current)
++    return (NULL);
++  return (ipp->current = ipp->current->next);
++}
++#endif
++
++
+ struct _GnomeCupsQueueDetails {
+ 	char *queue_name;
+ 	GList *jobs;
+@@ -199,8 +226,8 @@ finish_job (GnomeCupsJob *job)
+ 	job->size = job->size * 1024;
+ }
+ 
+-#define MAP_STR(dest, src) { if (!g_ascii_strcasecmp (attr->name, (src))) { if ((dest) != NULL) g_free (dest); (dest) = g_strdup (attr->values[0].string.text);}}
+-#define MAP_INT(dest, src) { if (!g_ascii_strcasecmp (attr->name, (src))) { (dest) = attr->values[0].integer; } }
++#define MAP_STR(dest, src) { if (!g_ascii_strcasecmp (ippGetName (attr), (src))) { if ((dest) != NULL) g_free (dest); (dest) = g_strdup (ippGetString (attr, 0, NULL));}}
++#define MAP_INT(dest, src) { if (!g_ascii_strcasecmp (ippGetName (attr), (src))) { (dest) = ippGetInteger (attr, 0); } }
+ 
+ static void
+ get_jobs_cb (guint id,
+@@ -231,8 +258,8 @@ get_jobs_cb (guint id,
+ 	
+ 	if (response) {
+ 		job = g_new0 (GnomeCupsJob, 1);
+-		for (attr = response->attrs; attr != NULL; attr = attr->next) {
+-			if (attr->name == NULL) {
++		for (attr = ippFirstAttribute (response); attr != NULL; attr = ippNextAttribute (response)) {
++			if (ippGetName (attr) == NULL) {
+ 				if (job->name) {
+ 					finish_job (job);
+ 					jobs = g_list_prepend (jobs, job);	
+@@ -244,7 +271,7 @@ get_jobs_cb (guint id,
+ 				continue;
+ 			}
+ 			
+-			if (!g_ascii_strcasecmp (attr->name, "attributes-charset") || !g_ascii_strcasecmp (attr->name, "attributes-charset")) {
++			if (!g_ascii_strcasecmp (ippGetName (attr), "attributes-charset") || !g_ascii_strcasecmp (ippGetName (attr), "attributes-charset")) {
+ 				continue;
+ 				
+ 			}
+@@ -355,8 +382,8 @@ gnome_cups_queue_get_job_nocache (GnomeCupsQueue *queue,
+ 
+ 	if (response) {
+ 		job = g_new0 (GnomeCupsJob, 1);
+-		for (attr = response->attrs; attr != NULL; attr = attr->next) {
+-			if (attr->name == NULL) {
++		for (attr = ippFirstAttribute (response); attr != NULL; attr = ippNextAttribute (response)) {
++			if (ippGetName (attr) == NULL) {
+ 				if (job->name) {
+ 					finish_job (job);
+ 				} else {
+@@ -366,7 +393,7 @@ gnome_cups_queue_get_job_nocache (GnomeCupsQueue *queue,
+ 				break;
+ 			}
+ 			
+-			if (!g_ascii_strcasecmp (attr->name, "attributes-charset") || !g_ascii_strcasecmp (attr->name, "attributes-charset")) {
++			if (!g_ascii_strcasecmp (ippGetName (attr), "attributes-charset") || !g_ascii_strcasecmp (ippGetName (attr), "attributes-charset")) {
+ 				continue;
+ 			}
+ 			
+diff --git a/libgnomecups/gnome-cups-request.c b/libgnomecups/gnome-cups-request.c
+index c94f623..13f0948 100644
+--- a/libgnomecups/gnome-cups-request.c
++++ b/libgnomecups/gnome-cups-request.c
+@@ -19,6 +19,36 @@
+ #define STOP_UNUSED_THREADS_TIMEOUT 60
+ #define CLOSE_UNUSED_CONNECTIONS_TIMEOUT 30
+ 
++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
++#define HAVE_CUPS_1_6 1
++#endif
++
++#ifndef HAVE_CUPS_1_6
++#define ippGetCount(attr)     attr->num_values
++#define ippGetValueTag(attr)  attr->value_tag
++#define ippGetName(attr)      attr->name
++#define ippGetBoolean(attr, element) attr->values[element].boolean
++#define ippGetInteger(attr, element) attr->values[element].integer
++#define ippGetString(attr, element, language) attr->values[element].string.text
++
++static ipp_attribute_t *
++ippFirstAttribute(ipp_t *ipp)
++{
++  if (!ipp)
++    return (NULL);
++  return (ipp->current = ipp->attrs);
++}
++
++static ipp_attribute_t *
++ippNextAttribute(ipp_t *ipp)
++{
++  if (!ipp || !ipp->current)
++    return (NULL);
++  return (ipp->current = ipp->current->next);
++}
++#endif
++
++
+ typedef struct
+ {
+ 	GMutex *mutex;
+@@ -276,14 +306,14 @@ dump_request (ipp_t const *req)
+ 	unsigned i;
+ 	ipp_attribute_t *attr;
+ 
+-	for (attr = req->attrs; attr != NULL; attr = attr->next) {
+-		g_print ("%s", attr->name);
+-		for (i = 0 ; i < attr->num_values ; i++) {
++	for (attr = ippFirstAttribute (req); attr != NULL; attr = ippNextAttribute (req)) {
++		g_print ("%s", ippGetName (attr));
++		for (i = 0 ; i < ippGetCount (attr) ; i++) {
+ 			g_print ("\t[%d] = ", i);
+-			switch (attr->value_tag & ~IPP_TAG_COPY) {
++			switch (ippGetValueTag (attr) & ~IPP_TAG_COPY) {
+ 			case IPP_TAG_INTEGER:
+ 			case IPP_TAG_ENUM:
+-				g_print ("%d\n", attr->values[i].integer);
++				g_print ("%d\n", ippGetInteger (attr, i));
+ 				break;
+ 
+ 			case IPP_TAG_STRING:
+@@ -294,11 +324,11 @@ dump_request (ipp_t const *req)
+ 			case IPP_TAG_CHARSET:
+ 			case IPP_TAG_LANGUAGE:
+ 			case IPP_TAG_MIMETYPE:
+-				g_print ("'%s'\n", attr->values[i].string.text);
++				g_print ("'%s'\n", ippGetString (attr, i, NULL));
+ 				break;
+ 
+ 			case IPP_TAG_BOOLEAN:
+-				g_print ("%s\n", (int)attr->values[i].boolean ? "true" : "false");
++				g_print ("%s\n", (int)ippGetBoolean (attr, i) ? "true" : "false");
+ 				break;
+ 
+ 			default:
+-- 
+1.7.8.6
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomecups/libgnomecups-0.2.3-glib.h.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomecups/libgnomecups-0.2.3-glib.h.patch
new file mode 100644
index 0000000..c7b6165
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomecups/libgnomecups-0.2.3-glib.h.patch
@@ -0,0 +1,42 @@
+Imported from gentoo:
+
+http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/net-print/libgnomecups/files/libgnomecups-0.2.3-glib.h.patch
+
+From d84eee9450b3b6f6155074915efc61bedcc8d446 Mon Sep 17 00:00:00 2001
+From: Dominique Leuenberger <dimstar@opensuse.org>
+Date: Sun, 27 Nov 2011 21:36:41 +0100
+Subject: [PATCH] Fix: Only glib.h can be included
+
+---
+ libgnomecups/gnome-cups-i18n.c |    2 +-
+ libgnomecups/gnome-cups-init.h |    3 +--
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/libgnomecups/gnome-cups-i18n.c b/libgnomecups/gnome-cups-i18n.c
+index 8987c5c..127756d 100644
+--- a/libgnomecups/gnome-cups-i18n.c
++++ b/libgnomecups/gnome-cups-i18n.c
+@@ -1,5 +1,5 @@
+ #include <config.h>
+-#include <glib/gmacros.h>
++#include <glib.h>
+ #include "gnome-cups-i18n.h"
+ 
+ #ifdef ENABLE_NLS
+diff --git a/libgnomecups/gnome-cups-init.h b/libgnomecups/gnome-cups-init.h
+index 22b682a..c4600fc 100644
+--- a/libgnomecups/gnome-cups-init.h
++++ b/libgnomecups/gnome-cups-init.h
+@@ -1,8 +1,7 @@
+ #ifndef GNOME_CUPS_INIT
+ #define GNOME_CUPS_INIT
+ 
+-#include <glib/gtypes.h>
+-#include <glib/gmacros.h>
++#include <glib.h>
+ 
+ G_BEGIN_DECLS
+ 
+-- 
+1.7.7
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomecups_0.2.3.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomecups_0.2.3.bb
new file mode 100644
index 0000000..6bb6816
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomecups_0.2.3.bb
@@ -0,0 +1,23 @@
+DESCRIPTION="Gnome Cups Manager"
+LICENSE="GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS="glib-2.0 gtk+ pango cups intltool libgnomeui"
+
+PR = "r2"
+
+inherit gnomebase pkgconfig
+
+do_compile_append () {
+    cp libgnomecups-1.0.pc libgnomecups-1.0.pc.old
+    sed 's:${STAGING_DIR_HOST}::' < libgnomecups-1.0.pc.old > libgnomecups-1.0.pc
+}
+
+SRC_URI += "\
+    file://libgnomecups-0.2.3-glib.h.patch \
+    file://libgnomecups-0.2.3-cups-1.6.patch \
+"
+
+SRC_URI[archive.md5sum] = "dc4920c15c9f886f73ea74fbff0ae48b"
+SRC_URI[archive.sha256sum] = "e130e80942b386de19a288a4c194ff3dbe9140315b31e982058c8bffbb6a1d29"
+GNOME_COMPRESS_TYPE="bz2"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/0001-configure-use-pkgconfig-for-freetype.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/0001-configure-use-pkgconfig-for-freetype.patch
new file mode 100644
index 0000000..174985a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/0001-configure-use-pkgconfig-for-freetype.patch
@@ -0,0 +1,37 @@
+From ed31fd89f4c77d89390774d29427898a85b25ab1 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 1 Aug 2014 13:58:36 +0200
+Subject: [PATCH] configure: use pkgconfig for freetype
+
+Upstream-status: Pending
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ configure.in | 12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 729278d..e569429 100644
+--- a/configure.in
++++ b/configure.in
+@@ -164,13 +164,11 @@ dnl Checking for freetype2
+ dnl =================================
+ FREETYPE_LIBS=
+ FREETYPE_CFLAGS=
+-AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
+-if test "x$FREETYPE_CONFIG" = "xno" ; then
+-	AC_MSG_ERROR(You need FreeType2 (freetype-devel v 2.x package) for this version of libgnomeprint)
+-else
+-	FREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags`
+-	FREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
+-fi
++PKG_CHECK_MODULES(FREETYPE2, freetype2, 
++    FREETYPE_CFLAGS="$CFLAGS $FREETYPE2_CFLAGS"
++    FREETYPE_LIBS="$LIBS $FREETYPE2_LIBS",
++    AC_MSG_ERROR([*** Unable to find FreeType2 library (http://www.freetype.org/)])
++)
+ 
+ libgnomeprint_save_ldflags=$LDFLAGS
+ LDFLAGS="$LDFLAGS $FREETYPE_LIBS"
+-- 
+1.9.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/bison3-support.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/bison3-support.patch
new file mode 100644
index 0000000..29d410a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/bison3-support.patch
@@ -0,0 +1,30 @@
+Index: libgnomeprint-2.18.8/libgnomeprint/grammar.y
+===================================================================
+--- libgnomeprint-2.18.8.orig/libgnomeprint/grammar.y
++++ libgnomeprint-2.18.8/libgnomeprint/grammar.y
+@@ -99,7 +99,7 @@ gnome_print_filter_parse_prop (GnomePrin
+ }
+ 
+ static int yylex (void *lvalp);
+-static int yyerror (const char *s);
++static int yyerror (graph_t *g, const char *s);
+ %}
+ 
+ %union {
+@@ -117,6 +117,7 @@ static int yyerror (const char *s);
+ %type <p> pool
+ 
+ %pure_parser
++%parse-param { graph_t *graph }
+ 
+ %start graph
+ %%
+@@ -185,7 +186,7 @@ graph: filter {
+ %%
+ 
+ static int
+-yyerror (const char *s)
++yyerror (graph_t *g, const char *s)
+ {
+ 	return -1;
+ }
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/fix.includes.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/fix.includes.patch
new file mode 100644
index 0000000..53235a1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/fix.includes.patch
@@ -0,0 +1,11 @@
+diff -uNr libgnomeprint-2.18.7.orig/libgnomeprint/modules/cups/gnome-print-cups-transport.c libgnomeprint-2.18.7/libgnomeprint/modules/cups/gnome-print-cups-transport.c
+--- libgnomeprint-2.18.7.orig/libgnomeprint/modules/cups/gnome-print-cups-transport.c	2009-04-19 19:45:36.000000000 +0200
++++ libgnomeprint-2.18.7/libgnomeprint/modules/cups/gnome-print-cups-transport.c	2012-12-23 12:34:52.058643537 +0100
+@@ -35,6 +35,7 @@
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <unistd.h>
++#include <stdio.h>
+ #include <locale.h>
+ 
+ #include <cups/cups.h>
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/freetype.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/freetype.patch
new file mode 100644
index 0000000..7a27ecd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint/freetype.patch
@@ -0,0 +1,38 @@
+Use proper method to include freetype headers
+
+FreeType wants to use these special macros to include its APIs
+so be it.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+
+Index: libgnomeprint-2.18.7/libgnomeprint/gnome-font-face.c
+===================================================================
+--- libgnomeprint-2.18.7.orig/libgnomeprint/gnome-font-face.c
++++ libgnomeprint-2.18.7/libgnomeprint/gnome-font-face.c
+@@ -36,7 +36,9 @@
+ #include <stdarg.h>
+ #include <locale.h>
+ 
+-#include <freetype/ftoutln.h>
++#include <ft2build.h>
++#include FT_FREETYPE_H
++
+ 
+ #include <libgnomeprint/gnome-print-private.h>
+ #include <libgnomeprint/gnome-font-private.h>
+Index: libgnomeprint-2.18.7/libgnomeprint/gnome-rfont.c
+===================================================================
+--- libgnomeprint-2.18.7.orig/libgnomeprint/gnome-rfont.c
++++ libgnomeprint-2.18.7/libgnomeprint/gnome-rfont.c
+@@ -28,8 +28,8 @@
+ 
+ #include <ft2build.h>
+ #include FT_FREETYPE_H
+-#include <freetype/ftglyph.h>
+-#include <freetype/ftbbox.h>
++#include FT_GLYPH_H
++#include FT_BBOX_H
+ #include <libart_lgpl/art_misc.h>
+ #include <libart_lgpl/art_affine.h>
+ #include <libart_lgpl/art_vpath.h>
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint_2.18.8.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint_2.18.8.bb
new file mode 100644
index 0000000..9d41914
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnome/libgnomeprint_2.18.8.bb
@@ -0,0 +1,26 @@
+LICENSE = "GPLv2"
+SECTION = "x11/gnome/libs"
+
+DEPENDS = "bison-native flex-native libxml2 libgnomecups glib-2.0 pango libart-lgpl fontconfig popt gnome-common freetype"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit gnomebase
+
+SRC_URI += "file://fix.includes.patch \
+            file://freetype.patch \
+            file://0001-configure-use-pkgconfig-for-freetype.patch \
+            file://bison3-support.patch \
+           "
+SRC_URI[archive.md5sum] = "63b05ffb5386e131487c6af30f4c56ac"
+SRC_URI[archive.sha256sum] = "1034ec8651051f84d2424e7a1da61c530422cc20ce5b2d9e107e1e46778d9691"
+GNOME_COMPRESS_TYPE="bz2"
+
+FILES_${PN}-dbg += "\
+    ${libdir}/${PN}/${PV}/modules/.debug \
+    ${libdir}/${PN}/${PV}/modules/*/.debug \
+"
+FILES_${PN}-staticdev += "\
+    ${libdir}/${PN}/${PV}/modules/*.a \
+    ${libdir}/${PN}/${PV}/modules/*/*.a \
+"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnumeric/gnumeric/0001-configure.in-drop-introspection-macros-replace-them-.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnumeric/gnumeric/0001-configure.in-drop-introspection-macros-replace-them-.patch
new file mode 100644
index 0000000..914d2cc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnumeric/gnumeric/0001-configure.in-drop-introspection-macros-replace-them-.patch
@@ -0,0 +1,84 @@
+From de5f0a535d6ea1932d2c7de53bd33510c8682ee7 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 22 Feb 2016 16:34:03 +0200
+Subject: [PATCH] configure.in: drop introspection macros, replace them with a
+ standard one
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.in | 57 +--------------------------------------------------------
+ 1 file changed, 1 insertion(+), 56 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 8e1aa37..3086503 100644
+--- a/configure.in
++++ b/configure.in
+@@ -934,63 +934,8 @@ AC_SUBST(MONO_CFLAGS)
+ AC_SUBST(MONO_LIBS)
+ ])
+ 
+-# GObject Introspection
+-GIR_REQ=1.0.0
+-AC_ARG_ENABLE(introspection,
+-          AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
+-                         [Enable introspection for this build]),, 
+-                         [enable_introspection=no])
+-
+-AC_MSG_CHECKING([for gobject-introspection])
+-
+-dnl presence/version checking
+-AS_CASE([$enable_introspection],
+-[no], [
+-    found_introspection="no (disabled, use --enable-introspection to enable)"
+-],
+-[yes],[
+-    PKG_CHECK_EXISTS([gobject-introspection-1.0],,
+-                     AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
+-    PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $GIR_REQ],
+-                     found_introspection=yes,
+-                     AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
+-],
+-[auto],[
+-    PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $GIR_REQ], found_introspection=yes, found_introspection=no)
+-dnl Canonicalize enable_introspection
+-enable_introspection=$found_introspection
+-],
+-[	
+-    AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
+-])
++GOBJECT_INTROSPECTION_CHECK([1.46.0])
+ 
+-AC_MSG_RESULT([$found_introspection])
+-
+-INTROSPECTION_SCANNER=
+-INTROSPECTION_COMPILER=
+-INTROSPECTION_GENERATE=
+-INTROSPECTION_GIRDIR=
+-INTROSPECTION_TYPELIBDIR=
+-if test "x$found_introspection" = "xyes"; then
+-   INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+-   INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+-   INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+-   INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+-   INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
+-   INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+-   INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+-   INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+-fi
+-AC_SUBST(INTROSPECTION_SCANNER)
+-AC_SUBST(INTROSPECTION_COMPILER)
+-AC_SUBST(INTROSPECTION_GENERATE)
+-AC_SUBST(INTROSPECTION_GIRDIR)
+-AC_SUBST(INTROSPECTION_TYPELIBDIR)
+-AC_SUBST(INTROSPECTION_CFLAGS)
+-AC_SUBST(INTROSPECTION_LIBS)
+-AC_SUBST(INTROSPECTION_MAKEFILE)
+-
+-AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
+ dnl we need to change the install directories for distcheck
+ AC_ARG_WITH([gir-dir],
+ 	AS_HELP_STRING(
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnumeric/gnumeric/do-not-use-srcdir.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnumeric/gnumeric/do-not-use-srcdir.patch
new file mode 100644
index 0000000..cc81b1f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnumeric/gnumeric/do-not-use-srcdir.patch
@@ -0,0 +1,15 @@
+Index: gnumeric-1.12.0/test/Makefile.am
+===================================================================
+--- gnumeric-1.12.0.orig/test/Makefile.am	2011-05-17 17:54:24.000000000 -0700
++++ gnumeric-1.12.0/test/Makefile.am	2013-10-17 20:28:19.920618596 -0700
+@@ -25,7 +25,9 @@
+ #
+ # 90xx: Misc stuff.
+ 
+-TESTS = $(sort $(wildcard $(srcdir)/t[0-9][0-9][0-9][0-9]-*.pl))
++TESTS_EXTENSIONS=.pl
++TESTS = @auto_find_tests@
++
+ SUPPS = common.supp commondots.supp gui.supp t8003-valgrind-pdf.supp
+ 
+ import-db:
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnumeric/gnumeric_1.12.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnumeric/gnumeric_1.12.0.bb
new file mode 100644
index 0000000..3d3118a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gnumeric/gnumeric_1.12.0.bb
@@ -0,0 +1,47 @@
+LICENSE = "GPLv2 | GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=be0de417af78dd340558810d1ced52e6"
+SECTION = "x11/utils"
+S = "${WORKDIR}/gnumeric-${PV}"
+DEPENDS = "gdk-pixbuf libgsf gtk+3 libxml2 libglade libart-lgpl intltool-native libgnomecanvas libgnomeprint libbonoboui orbit2-native goffice"
+SUMMARY = "Gnumeric spreadsheet for GNOME"
+
+GNOME_COMPRESS_TYPE = "xz"
+
+inherit gnome pythonnative gobject-introspection
+
+SRC_URI += "file://do-not-use-srcdir.patch \
+            file://0001-configure.in-drop-introspection-macros-replace-them-.patch"
+
+SRC_URI[archive.md5sum] = "3fd87cca95334b5d8ac922989670fe27"
+SRC_URI[archive.sha256sum] = "037b53d909e5d1454b2afda8c4fb1e7838e260343e36d4e36245f4a5d0e04111"
+
+
+EXTRA_OECONF=" --without-perl "
+
+PACKAGES_DYNAMIC += "gnumeric-plugin-*"
+PACKAGES += "libspreadsheet libspreadsheet-dev gnumeric-goffice gnumeric-goffice-dbg"
+
+FILES_${PN}-dbg += "${libdir}/gnumeric/${PV}/plugins/*/.debug"
+FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig"
+FILES_${PN}-staticdev = "${libdir}/libspreadsheet.la"
+FILES_libspreadsheet = "${libdir}/libspreadsheet-${PV}.so"
+FILES_libspreadsheet-dev = "${libdir}/libspreadsheet.so"
+FILES_gnumeric-goffice-dbg += "${libdir}/goffice/*/plugins/gnumeric/.debug"
+FILES_gnumeric-goffice = "${libdir}/goffice/*/plugins/gnumeric/*"
+
+# This hack works around the problem mentioned here:
+# https://mail.gnome.org/archives/gnumeric-list/2010-February/msg00006.html
+do_install_prepend() {
+    sed -i ${B}/doc/C/Makefile -e 's/\tfor file in $(omffile); do/\t-for file in $(omffile); do/'
+}
+
+python populate_packages_prepend () {
+    gnumeric_libdir = bb.data.expand('${libdir}/gnumeric/${PV}/plugins', d)
+
+    do_split_packages(d, gnumeric_libdir, '^(.*)/.*$',
+        output_pattern='gnumeric-plugin-%s',
+        description='Gnumeric plugin %s',
+        extra_depends='',
+        recursive=True,
+        prepend=True)
+}
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gthumb/files/parallel.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gthumb/files/parallel.patch
new file mode 100644
index 0000000..20ce5c5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gthumb/files/parallel.patch
@@ -0,0 +1,158 @@
+From 34969cde1dcb7740b4a7c3b6e3d04d481e5980b5 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Tue, 31 Jul 2012 17:26:27 +0100
+Subject: [PATCH] build: Fix parallel build problems with enum generation
+
+This is a backport from a patch against master.
+
+Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=680925]
+---
+ extensions/file_tools/Makefile.am    |   10 ++++------
+ extensions/importer/Makefile.am      |   10 ++++------
+ extensions/pixbuf_savers/Makefile.am |   10 ++++------
+ gthumb/Makefile.am                   |   10 ++++------
+ 4 files changed, 16 insertions(+), 24 deletions(-)
+
+diff --git a/extensions/file_tools/Makefile.am b/extensions/file_tools/Makefile.am
+index 7785eff..d70a8a5 100644
+--- a/extensions/file_tools/Makefile.am
++++ b/extensions/file_tools/Makefile.am
+@@ -24,17 +24,16 @@ HEADER_FILES = 				\
+ 	gth-file-tool-undo.h		\
+ 	preferences.h
+ 
+-enum-types.h: $(HEADER_FILES) $(GLIB_MKENUMS)
++enum-types.h: $(HEADER_FILES)
+ 	$(AM_V_GEN)( $(GLIB_MKENUMS) \
+ 		--fhead "#ifndef ENUM_TYPES_H\n#define ENUM_TYPES_H\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
+ 		--fprod "/* enumerations from \"@filename@\" */\n" \
+ 		--vhead "GType @enum_name@_get_type (void);\n#define GTH_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
+ 		--ftail "G_END_DECLS\n\n#endif /* ENUM_TYPES_H */" \
+ 		$^> xgen-$(@F) \
+-	&& (cmp -s xgen-$(@F) enum-types.h || cp xgen-$(@F) enum-types.h ) \
+-	&& rm -f xgen-$(@F) )
++	&& mv -f xgen-$(@F) enum-types.h )
+ 
+-enum-types.c: $(HEADER_FILES) enum-types.h
++enum-types.c: $(HEADER_FILES)
+ 	$(AM_V_GEN)( $(GLIB_MKENUMS) \
+ 		--fhead "#include <glib-object.h>\n" \
+ 		--fprod "\n/* enumerations from \"@filename@\" */\n#include \"@filename@\"" \
+@@ -42,8 +41,7 @@ enum-types.c: $(HEADER_FILES) enum-types.h
+ 		--vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+ 		--vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
+ 		$^> xgen-$(@F) \
+-	&& (cmp -s xgen-$(@F) enum-types.c || cp xgen-$(@F) enum-types.c ) \
+-	&& rm -f xgen-$(@F) )
++	&& mv -f xgen-$(@F) enum-types.c )
+ 
+ libfile_tools_la_SOURCES = 		\
+ 	$(ENUM_TYPES)			\
+diff --git a/extensions/importer/Makefile.am b/extensions/importer/Makefile.am
+index 29e7f2c..07c1eba 100644
+--- a/extensions/importer/Makefile.am
++++ b/extensions/importer/Makefile.am
+@@ -14,17 +14,16 @@ HEADER_FILES = 					\
+ 	preferences.h				\
+ 	utils.h
+ 
+-gth-import-enum-types.h: $(HEADER_FILES) $(GLIB_MKENUMS)
++gth-import-enum-types.h: $(HEADER_FILES)
+ 	$(AM_V_GEN)( $(GLIB_MKENUMS) \
+ 		--fhead "#ifndef ENUM_TYPES_H\n#define ENUM_TYPES_H\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
+ 		--fprod "/* enumerations from \"@filename@\" */\n" \
+ 		--vhead "GType @enum_name@_get_type (void);\n#define GTH_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
+ 		--ftail "G_END_DECLS\n\n#endif /* ENUM_TYPES_H */" \
+ 		$^> xgen-$(@F) \
+-	&& (cmp -s xgen-$(@F) gth-import-enum-types.h || cp xgen-$(@F) gth-import-enum-types.h ) \
+-	&& rm -f xgen-$(@F) )
++	&& mv -f xgen-$(@F) gth-import-enum-types.h )
+ 
+-gth-import-enum-types.c: $(HEADER_FILES) gth-import-enum-types.h
++gth-import-enum-types.c: $(HEADER_FILES)
+ 	$(AM_V_GEN)( $(GLIB_MKENUMS) \
+ 		--fhead "#include <glib-object.h>\n" \
+ 		--fprod "\n/* enumerations from \"@filename@\" */\n#include \"@filename@\"" \
+@@ -32,8 +31,7 @@ gth-import-enum-types.c: $(HEADER_FILES) gth-import-enum-types.h
+ 		--vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+ 		--vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
+ 		$^> xgen-$(@F) \
+-	&& (cmp -s xgen-$(@F) gth-import-enum-types.c || cp xgen-$(@F) gth-import-enum-types.c ) \
+-	&& rm -f xgen-$(@F) )
++	&& mv -f xgen-$(@F) gth-import-enum-types.c )
+ 
+ libimporter_la_SOURCES = 			\
+ 	$(ENUM_TYPES)				\
+diff --git a/extensions/pixbuf_savers/Makefile.am b/extensions/pixbuf_savers/Makefile.am
+index bfe9f34..4764c32 100644
+--- a/extensions/pixbuf_savers/Makefile.am
++++ b/extensions/pixbuf_savers/Makefile.am
+@@ -10,17 +10,16 @@ ENUM_TYPES =				\
+ HEADER_FILES = 				\
+ 	preferences.h
+ 
+-enum-types.h: $(HEADER_FILES) $(GLIB_MKENUMS)
++enum-types.h: $(HEADER_FILES)
+ 	$(AM_V_GEN)( $(GLIB_MKENUMS) \
+ 		--fhead "#ifndef ENUM_TYPES_H\n#define ENUM_TYPES_H\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
+ 		--fprod "/* enumerations from \"@filename@\" */\n" \
+ 		--vhead "GType @enum_name@_get_type (void);\n#define GTH_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
+ 		--ftail "G_END_DECLS\n\n#endif /* ENUM_TYPES_H */" \
+ 		$^> xgen-$(@F) \
+-	&& (cmp -s xgen-$(@F) enum-types.h || cp xgen-$(@F) enum-types.h ) \
+-	&& rm -f xgen-$(@F) )
++	&& mv -f xgen-$(@F) enum-types.h )
+ 
+-enum-types.c: $(HEADER_FILES) enum-types.h
++enum-types.c: $(HEADER_FILES)
+ 	$(AM_V_GEN)( $(GLIB_MKENUMS) \
+ 		--fhead "#include <glib-object.h>\n" \
+ 		--fprod "\n/* enumerations from \"@filename@\" */\n#include \"@filename@\"" \
+@@ -28,8 +27,7 @@ enum-types.c: $(HEADER_FILES) enum-types.h
+ 		--vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+ 		--vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
+ 		$^> xgen-$(@F) \
+-	&& (cmp -s xgen-$(@F) enum-types.c || cp xgen-$(@F) enum-types.c ) \
+-	&& rm -f xgen-$(@F) )
++	&& mv -f xgen-$(@F) enum-types.c )
+ 
+ libpixbuf_savers_la_SOURCES = 	\
+ 	$(ENUM_TYPES)		\
+diff --git a/gthumb/Makefile.am b/gthumb/Makefile.am
+index e9e385e..2f14e03 100644
+--- a/gthumb/Makefile.am
++++ b/gthumb/Makefile.am
+@@ -296,17 +296,16 @@ gthumb_CFLAGS =							\
+ 	-DGTHUMB_EXTENSIONS_DIR=\"$(extensions_dir)\"		\
+ 	$(NULL)
+ 
+-gth-enum-types.h: $(PUBLIC_HEADER_FILES) $(GLIB_MKENUMS)
++gth-enum-types.h: $(PUBLIC_HEADER_FILES)
+ 	$(AM_V_GEN)( $(GLIB_MKENUMS) \
+ 		--fhead "#ifndef GTH_ENUM_TYPES_H\n#define GTH_ENUM_TYPES_H\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
+ 		--fprod "/* enumerations from \"@filename@\" */\n" \
+ 		--vhead "GType @enum_name@_get_type (void);\n#define GTH_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
+ 		--ftail "G_END_DECLS\n\n#endif /* GTH_ENUM_TYPES_H */" \
+ 		$^> xgen-$(@F) \
+-	&& (cmp -s xgen-$(@F) gth-enum-types.h || cp xgen-$(@F) gth-enum-types.h ) \
+-	&& rm -f xgen-$(@F) )
++	&& mv -f xgen-$(@F) gth-enum-types.h )
+ 
+-gth-enum-types.c: $(PUBLIC_HEADER_FILES) gth-enum-types.h
++gth-enum-types.c: $(PUBLIC_HEADER_FILES)
+ 	$(AM_V_GEN)( $(GLIB_MKENUMS) \
+ 		--fhead "#include <glib-object.h>\n" \
+ 		--fprod "\n/* enumerations from \"@filename@\" */\n#include \"@filename@\"" \
+@@ -314,8 +313,7 @@ gth-enum-types.c: $(PUBLIC_HEADER_FILES) gth-enum-types.h
+ 		--vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+ 		--vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
+ 		$^> xgen-$(@F) \
+-	&& (cmp -s xgen-$(@F) gth-enum-types.c || cp xgen-$(@F) gth-enum-types.c ) \
+-	&& rm -f xgen-$(@F) )
++	&& mv -f xgen-$(@F) gth-enum-types.c )
+ 
+ gth-marshal.h: gth-marshal.list $(GLIB_GENMARSHAL)
+ 	$(AM_V_GEN)( $(GLIB_GENMARSHAL) $(srcdir)/gth-marshal.list --header --prefix=gth_marshal > $@ )
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gthumb/gthumb_2.12.4.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gthumb/gthumb_2.12.4.bb
new file mode 100644
index 0000000..0bf1321
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gthumb/gthumb_2.12.4.bb
@@ -0,0 +1,28 @@
+SUMMARY = "gThumb is an image viewer and browser for the GNOME Desktop"
+SECTION = "x11/gnome"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+DEPENDS = "glib-2.0 gtk+ libxml2 gnome-doc-utils libunique gconf libpng gstreamer jpeg tiff gst-plugins-base"
+
+PR = "r4"
+
+EXTRA_OECONF = "--disable-gnome-keyring --disable-libsoup --disable-exiv2 --disable-clutter"
+
+inherit gnome pkgconfig
+
+SRC_URI[archive.md5sum] = "97fc13221b0c5d80c27a2e25a3a3ac6f"
+SRC_URI[archive.sha256sum] = "cf809695230ab8892a078be454a42ade865754c72ec1da7c3d74d4310de54f1d"
+GNOME_COMPRESS_TYPE="bz2"
+
+SRC_URI += "file://parallel.patch"
+
+do_install_append () {
+    rm -f ${D}${libdir}/${BPN}/extensions/*.a
+}
+
+FILES_${PN} += "${datadir}/icons"
+FILES_${PN} += "${libdir}/${BPN}/extensions/*.so \
+                ${libdir}/${BPN}/extensions/*.extension"
+FILES_${PN}-dev += "${libdir}/${BPN}/extensions/*.la"
+FILES_${PN}-dbg += "${libdir}/${BPN}/extensions/.debug/"
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2/acinclude.m4 b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2/acinclude.m4
new file mode 100644
index 0000000..53518fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2/acinclude.m4
@@ -0,0 +1,90 @@
+## this one is commonly used with AM_PATH_PYTHONDIR ...
+dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
+dnl Check if a module containing a given symbol is visible to python.
+AC_DEFUN(AM_CHECK_PYMOD,
+[AC_REQUIRE([AM_PATH_PYTHON])
+py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
+AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
+AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
+ifelse([$2],[], [prog="
+import sys
+try:
+        import $1
+except ImportError:
+        sys.exit(1)
+except:
+        sys.exit(0)
+sys.exit(0)"], [prog="
+import $1
+$1.$2"])
+if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
+  then
+    eval "py_cv_mod_$py_mod_var=yes"
+  else
+    eval "py_cv_mod_$py_mod_var=no"
+  fi
+])
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+  AC_MSG_RESULT(yes)
+  ifelse([$3], [],, [$3
+])dnl
+else
+  AC_MSG_RESULT(no)
+  ifelse([$4], [],, [$4
+])dnl
+fi
+])
+
+dnl a macro to check for ability to create python extensions
+dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_INCLUDES
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+[AC_REQUIRE([AM_PATH_PYTHON])
+AC_MSG_CHECKING(for headers required to compile python extensions)
+dnl deduce PYTHON_INCLUDES
+AC_ARG_WITH(python-includes,
+	[  --with-python-includes=DIR  path to Python includes], py_exec_prefix=$withval)
+if test x$py_exec_prefix != x; then
+PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+else
+py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+if test "$py_prefix" != "$py_exec_prefix"; then
+  PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+fi
+fi
+AC_SUBST(PYTHON_INCLUDES)
+dnl check if the headers exist:
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(found)
+$1],dnl
+[AC_MSG_RESULT(not found)
+$2])
+CPPFLAGS="$save_CPPFLAGS"
+])
+
+dnl
+dnl JH_ADD_CFLAG(FLAG)
+dnl checks whether the C compiler supports the given flag, and if so, adds
+dnl it to $CFLAGS.  If the flag is already present in the list, then the
+dnl check is not performed.
+AC_DEFUN([JH_ADD_CFLAG],
+[
+case " $CFLAGS " in
+*@<:@\	\ @:>@$1@<:@\	\ @:>@*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $1"
+  AC_MSG_CHECKING([whether [$]CC understands $1])
+  AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no])
+  AC_MSG_RESULT($jh_has_option)
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac])
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2/gtk-doc.m4 b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2/gtk-doc.m4
new file mode 100644
index 0000000..3ec4166
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2/gtk-doc.m4
@@ -0,0 +1,53 @@
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+  AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+  AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+  dnl for overriding the documentation installation directory
+  AC_ARG_WITH(html-dir,
+    AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+    [with_html_dir='${datadir}/gtk-doc/html'])
+  HTML_DIR="$with_html_dir"
+  AC_SUBST(HTML_DIR)
+
+  dnl enable/disable documentation building
+  AC_ARG_ENABLE(gtk-doc,
+    AC_HELP_STRING([--enable-gtk-doc],
+                   [use gtk-doc to build documentation [default=no]]),,
+    enable_gtk_doc=no)
+
+  have_gtk_doc=no
+  if test -z "$PKG_CONFIG"; then
+    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+  fi
+  if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+    have_gtk_doc=yes
+  fi
+
+  dnl do we want to do a version check?
+ifelse([$1],[],,
+  [gtk_doc_min_version=$1
+  if test "$have_gtk_doc" = yes; then
+    AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
+    if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+      AC_MSG_RESULT(yes)
+    else
+      AC_MSG_RESULT(no)
+      have_gtk_doc=no
+    fi
+  fi
+])
+  if test x$enable_gtk_doc = xyes; then
+    if test "$have_gtk_doc" != yes; then
+      enable_gtk_doc=no
+    fi
+  fi
+
+  AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
+  AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
+])
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2/gtk-doc.make b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2/gtk-doc.make
new file mode 100644
index 0000000..354ffb7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2/gtk-doc.make
@@ -0,0 +1,173 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+EXTRA_DIST = 				\
+	$(content_files)		\
+	$(HTML_IMAGES)			\
+	$(DOC_MAIN_SGML_FILE)		\
+	$(DOC_MODULE)-sections.txt	\
+	$(DOC_MODULE)-overrides.txt
+
+DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+	   $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES = 		 \
+	$(DOC_MODULE).args 	 \
+	$(DOC_MODULE).hierarchy  \
+	$(DOC_MODULE).interfaces \
+	$(DOC_MODULE).prerequisites \
+	$(DOC_MODULE).signals
+
+REPORT_FILES = \
+	$(DOC_MODULE)-undocumented.txt \
+	$(DOC_MODULE)-undeclared.txt \
+	$(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+all-local: html-build.stamp
+else
+all-local:
+endif
+
+docs: html-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+	@echo 'gtk-doc: Scanning header files'
+	@-chmod -R u+w $(srcdir)
+	cd $(srcdir) && \
+	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+	if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+	else \
+	    cd $(srcdir) ; \
+	    for i in $(SCANOBJ_FILES) ; do \
+               test -f $$i || touch $$i ; \
+	    done \
+	fi
+	touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+	@true
+
+#### templates ####
+
+tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+	@echo 'gtk-doc: Rebuilding template files'
+	@-chmod -R u+w $(srcdir)
+	cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+	touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+	@true
+
+tmpl/*.sgml:
+	@true
+
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+	@echo 'gtk-doc: Building XML'
+	@-chmod -R u+w $(srcdir)
+	cd $(srcdir) && \
+	gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
+	touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+	@true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+	@echo 'gtk-doc: Building HTML'
+	@-chmod -R u+w $(srcdir)
+	rm -rf $(srcdir)/html
+	mkdir $(srcdir)/html
+	cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+	test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+	@echo 'gtk-doc: Fixing cross-references'
+	cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+	touch html-build.stamp
+
+##############
+
+clean-local:
+	rm -f *~ *.bak
+	rm -rf .libs
+
+distclean-local:
+	cd $(srcdir) && \
+	  rm -rf xml $(REPORT_FILES) \
+	         $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+maintainer-clean-local: clean
+	cd $(srcdir) && rm -rf xml html
+
+install-data-local:
+	-installfiles=`echo $(srcdir)/html/*`; \
+	if test "$$installfiles" = '$(srcdir)/html/*'; \
+	then echo '-- Nothing to install' ; \
+	else \
+	  $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+	  for i in $$installfiles; do \
+	    echo '-- Installing '$$i ; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+	  done; \
+	  echo '-- Installing $(srcdir)/html/index.sgml' ; \
+	  $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+	  which gtkdoc-rebase >/dev/null && \
+	    gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) ; \
+	fi
+	
+
+uninstall-local:
+	rm -f $(DESTDIR)$(TARGET_DIR)/*
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+	@echo "*** gtk-doc must be installed and enabled in order to make dist"
+	@false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+	mkdir $(distdir)/tmpl
+	mkdir $(distdir)/xml
+	mkdir $(distdir)/html
+	-cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+	-cp $(srcdir)/xml/*.xml $(distdir)/xml
+	cp $(srcdir)/html/* $(distdir)/html
+	-cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+	-cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+	cd $(distdir) && rm -f $(DISTCLEANFILES)
+	-gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2_2.10.5.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2_2.10.5.bb
new file mode 100644
index 0000000..c745e34
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview2_2.10.5.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Portable C library for multiline text editing"
+HOMEPAGE = "http://projects.gnome.org/gtksourceview/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "gtk+ libxml2"
+
+PNAME = "gtksourceview"
+
+S = "${WORKDIR}/${PNAME}-${PV}"
+
+inherit gnomebase lib_package gettext
+
+# overrule SRC_URI from gnome.conf
+SRC_URI = "${GNOME_MIRROR}/${PNAME}/${@gnome_verdir("${PV}")}/${PNAME}-${PV}.tar.bz2;name=archive \
+           file://gtk-doc.make \
+"
+SRC_URI[archive.md5sum] = "1219ad1694df136f126507466aeb41aa"
+SRC_URI[archive.sha256sum] = "c585773743b1df8a04b1be7f7d90eecdf22681490d6810be54c81a7ae152191e"
+
+do_configure_prepend() {
+    cp ${WORKDIR}/gtk-doc.make ${S}/
+    sed -i -e s:docs::g ${S}/Makefile.am
+    echo "EXTRA_DIST = version.xml" > gnome-doc-utils.make
+}
+
+FILES_${PN} += " ${datadir}/gtksourceview-2.0"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gvfs/files/0001-Add-support-for-libsystemd.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gvfs/files/0001-Add-support-for-libsystemd.patch
new file mode 100644
index 0000000..7ec9505
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gvfs/files/0001-Add-support-for-libsystemd.patch
@@ -0,0 +1,49 @@
+From 39be8b277c666db21965d54d5b72418ce57a450b Mon Sep 17 00:00:00 2001
+From: Michael Biebl <biebl@debian.org>
+Date: Tue, 19 May 2015 23:38:11 +0200
+Subject: [PATCH] Add support for libsystemd
+
+In systemd v209 the various libsystemd-* libraries were merged into a
+single libsystemd library. So first check for this library and fall back
+to libsystemd-login if not found.
+
+Bug: https://bugzilla.gnome.org/show_bug.cgi?id=749603
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=779766
+
+Upstream-Status: Applied
+---
+ configure.ac | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index ee3475d..bd5c043 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -264,18 +264,20 @@ dnl **********************************
+ dnl *** Check for libsystemd-login ***
+ dnl **********************************
+ 
+-AC_ARG_ENABLE(libsystemd_login, AS_HELP_STRING([--disable-libsystemd-login],[build without liblibsystemd-login]))
++AC_ARG_ENABLE(libsystemd_login, AS_HELP_STRING([--disable-libsystemd-login],[build without libsystemd-login]))
+ msg_libsystemd_login=no
+ LIBSYSTEMD_LOGIN_LIBS=
+ LIBSYSTEMD_LOGIN_CFLAGS=
+ LIBSYSTEMD_LOGIN_REQUIRED=44
+ 
+ if test "x$enable_libsystemd_login" != "xno"; then
+-  PKG_CHECK_EXISTS([libsystemd-login >= $LIBSYSTEMD_LOGIN_REQUIRED], msg_libsystemd_login=yes)
++  PKG_CHECK_EXISTS([libsystemd], [msg_libsystemd_login=yes],
++                   [PKG_CHECK_EXISTS([libsystemd-login >= $LIBSYSTEMD_LOGIN_REQUIRED], msg_libsystemd_login=yes)])
+ 
+   if test "x$msg_libsystemd_login" = "xyes"; then
+-    PKG_CHECK_MODULES([LIBSYSTEMD_LOGIN],[libsystemd-login >= $LIBSYSTEMD_LOGIN_REQUIRED])
+-    AC_DEFINE(HAVE_LIBSYSTEMD_LOGIN, 1, [Define to 1 if liblibsystemd_login is available])
++    PKG_CHECK_MODULES([LIBSYSTEMD_LOGIN],[libsystemd],,
++                      [PKG_CHECK_MODULES([LIBSYSTEMD_LOGIN],[libsystemd-login >= $LIBSYSTEMD_LOGIN_REQUIRED])])
++    AC_DEFINE(HAVE_LIBSYSTEMD_LOGIN, 1, [Define to 1 if libsystemd_login is available])
+   fi
+ fi
+ 
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.24.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.24.2.bb
new file mode 100644
index 0000000..aa62070
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.24.2.bb
@@ -0,0 +1,62 @@
+DESCRIPTION = "gvfs is a userspace virtual filesystem"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=05df38dd77c35ec8431f212410a3329e"
+
+inherit gnome
+
+DEPENDS += "libsecret glib-2.0 gconf intltool-native libgudev udisks2"
+
+SRC_URI[archive.md5sum] = "83ed317eb2a5264715d4273e90a5cfd8"
+SRC_URI[archive.sha256sum] = "0949eaedd1df7175f8d7ee2700df8210d1f854b8ee37d963bc32ee7091eeb228"
+SRC_URI += " \
+    file://0001-Add-support-for-libsystemd.patch \
+"
+
+EXTRA_OECONF = " \
+    --disable-gdu \
+    --enable-udisks2 \
+    --disable-documentation \
+    --with-archive-includes=${STAGING_INCDIR} \
+    --with-archive-libs=${STAGING_LIBDIR} \
+"
+
+PACKAGES =+ "gvfsd-ftp gvfsd-sftp gvfsd-trash"
+
+FILES_${PN} += " \
+    ${datadir}/glib-2.0 \
+    ${datadir}/GConf \
+    ${datadir}/dbus-1/services \
+    ${libdir}/gio/modules/*.so \
+    ${libdir}/tmpfiles.d \
+"
+RDEPENDS_${PN} = "udisks2"
+
+FILES_${PN}-dbg += "${libdir}/gio/modules/.debug/*"
+FILES_${PN}-dev += "${libdir}/gio/modules/*.la"
+
+FILES_gvfsd-ftp = "${libexecdir}/gvfsd-ftp ${datadir}/gvfs/mounts/ftp.mount"
+FILES_gvfsd-sftp = "${libexecdir}/gvfsd-sftp ${datadir}/gvfs/mounts/sftp.mount"
+FILES_gvfsd-trash = "${libexecdir}/gvfsd-trash ${datadir}/gvfs/mounts/trash.mount"
+
+RRECOMMENDS_gvfsd-ftp += "openssh-sftp openssh-ssh"
+
+PACKAGES += "${PN}-bash-completion"
+FILES_${PN}-bash-completion = "${datadir}/bash-completion"
+RDEPENDS_${PN}-bash-completion = "bash-completion"
+
+PACKAGECONFIG ?= "libgphoto2"
+
+PACKAGECONFIG[afc] = "--enable-afc, --disable-afc, libimobiledevice libplist"
+PACKAGECONFIG[archive] = "--enable-archive, --disable-archive, libarchive"
+PACKAGECONFIG[avahi] = "--enable-avahi, --disable-avahi, avahi"
+PACKAGECONFIG[gtk] = "--enable-gtk, --disable-gtk, gtk+3"
+PACKAGECONFIG[http] = "--enable-http, --disable-http, libsoup-2.4"
+PACKAGECONFIG[libmtp] = "--enable-libmtp, --disable-libmtp, libmtp"
+PACKAGECONFIG[libgphoto2] = "--enable-gphoto2, --disable-gphoto2, libgphoto2"
+PACKAGECONFIG[samba] = "--enable-samba, --disable-samba, samba"
+
+# needs meta-filesystems
+PACKAGECONFIG[fuse] = "--enable-fuse, --disable-fuse, fuse"
+
+# libcdio-paranoia recipe doesn't exist yet
+PACKAGECONFIG[cdda] = "--enable-cdda, --disable-cdda, libcdio-paranoia"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gweather/libgweather3_3.0.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gweather/libgweather3_3.0.2.bb
new file mode 100644
index 0000000..6e1997f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gweather/libgweather3_3.0.2.bb
@@ -0,0 +1,28 @@
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SECTION = "x11/gnome/libs"
+DEPENDS = "libxml2 gconf libsoup-2.4 gtk+3"
+
+PNBLACKLIST[libgweather3] ?= "CONFLICT: 876 files are conflicting with libgweather"
+# e.g. sysroots/qemux86-64/usr/share/libgweather/locations.dtd
+#      sysroots/qemux86-64/usr/share/libgweather/Locations.zh_TW.xml
+
+BPN = "libgweather"
+
+inherit gnome
+SRC_URI[archive.md5sum] = "f1a96c6f19c9a0bc6b4e12acc9a8a85d"
+SRC_URI[archive.sha256sum] = "9041526fa0466b99dae5cf06c2cc70376f25531eec5d58b1e1378acfb302410c"
+
+do_configure_prepend() {
+    sed -i -e 's: doc : :g' ${S}/Makefile.am
+}
+
+FILES_${PN} += "${datadir}/gnome* \
+                ${datadir}/icons"
+
+PACKAGES =+ "${PN}-locationdata"
+FILES_${PN}-locationdata = "${datadir}/libgweather/*ocations*"
+
+
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gweather/libgweather_2.30.3.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gweather/libgweather_2.30.3.bb
new file mode 100644
index 0000000..aeec2d3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/gweather/libgweather_2.30.3.bb
@@ -0,0 +1,23 @@
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SECTION = "x11/gnome/libs"
+DEPENDS = "libxml2 gconf libsoup-2.4 gtk+ libgnome-keyring"
+
+inherit gnome
+
+SRC_URI[archive.md5sum] = "bf6a0a05051341ecb250f332e3edfb88"
+SRC_URI[archive.sha256sum] = "b835374661423f37c46aa8e37368ae24a68856f117b7c21e475a21efdba5264c"
+GNOME_COMPRESS_TYPE="bz2"
+
+do_configure_prepend() {
+    sed -i -e 's: doc : :g' ${S}/Makefile.am
+}
+
+FILES_${PN} += "${datadir}/gnome* \
+                ${datadir}/icons"
+
+PACKAGES =+ "${PN}-locationdata"
+FILES_${PN}-locationdata = "${datadir}/libgweather/Locations*"
+
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/Makefile.am.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/Makefile.am.patch
new file mode 100644
index 0000000..190ba96
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/Makefile.am.patch
@@ -0,0 +1,17 @@
+Upstream-Status: Inappropriate [configuration]
+
+Index: libart_lgpl-2.3.21/Makefile.am
+===================================================================
+--- libart_lgpl-2.3.21.orig/Makefile.am	2009-04-18 05:29:25.000000000 -0700
++++ libart_lgpl-2.3.21/Makefile.am	2010-11-23 23:12:32.445450075 -0800
+@@ -7,8 +7,8 @@
+ 
+ BUILT_SOURCES = art_config.h
+ 
+-art_config.h:
+-	./gen_art_config.sh > art_config.h
++#art_config.h:
++#	./gen_art_config.sh > art_config.h
+ 
+ EXTRA_DIST = 			\
+ 	libart.def		\
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/aarch64/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/aarch64/art_config.h
new file mode 100644
index 0000000..500ffc3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/aarch64/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 8
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/aarch64be/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/aarch64be/art_config.h
new file mode 100644
index 0000000..500ffc3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/aarch64be/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 8
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/aarch64be_32/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/aarch64be_32/art_config.h
new file mode 100644
index 0000000..b0e74ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/aarch64be_32/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 4
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/arm/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/arm/art_config.h
new file mode 100644
index 0000000..b0e74ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/arm/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 4
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/armeb/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/armeb/art_config.h
new file mode 100644
index 0000000..b0e74ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/armeb/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 4
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/i386/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/i386/art_config.h
new file mode 100644
index 0000000..b0e74ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/i386/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 4
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/i586/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/i586/art_config.h
new file mode 100644
index 0000000..b0e74ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/i586/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 4
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/i686/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/i686/art_config.h
new file mode 100644
index 0000000..b0e74ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/i686/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 4
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mips/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mips/art_config.h
new file mode 100644
index 0000000..b0e74ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mips/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 4
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mips64/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mips64/art_config.h
new file mode 100644
index 0000000..d10cd95
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mips64/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 8
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mips64el/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mips64el/art_config.h
new file mode 100644
index 0000000..d10cd95
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mips64el/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 8
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mipsel/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mipsel/art_config.h
new file mode 100644
index 0000000..b0e74ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/mipsel/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 4
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/powerpc/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/powerpc/art_config.h
new file mode 100644
index 0000000..b0e74ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/powerpc/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 4
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/powerpc64/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/powerpc64/art_config.h
new file mode 100644
index 0000000..500ffc3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/powerpc64/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 8
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/x86_64/art_config.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/x86_64/art_config.h
new file mode 100644
index 0000000..500ffc3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl/x86_64/art_config.h
@@ -0,0 +1,10 @@
+/* Automatically generated by gen_art_config.c */
+
+#define ART_SIZEOF_CHAR 1
+#define ART_SIZEOF_SHORT 2
+#define ART_SIZEOF_INT 4
+#define ART_SIZEOF_LONG 8
+
+typedef unsigned char art_u8;
+typedef unsigned short art_u16;
+typedef unsigned int art_u32;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl_2.3.21.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl_2.3.21.bb
new file mode 100644
index 0000000..4966ea4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libart-lgpl/libart-lgpl_2.3.21.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Library of functions for 2D graphics"
+SECTION = "x11/gnome"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+PR = "r2"
+
+ART_CONFIG = "${HOST_ARCH}/art_config.h"
+
+# can't use gnome.oeclass due to _ in filename
+SRC_URI = "${GNOME_MIRROR}/libart_lgpl/2.3/libart_lgpl-${PV}.tar.bz2 \
+       file://${ART_CONFIG} \
+       file://Makefile.am.patch"
+
+SRC_URI[md5sum] = "08559ff3c67fd95d57b0c5e91a6b4302"
+SRC_URI[sha256sum] = "fdc11e74c10fc9ffe4188537e2b370c0abacca7d89021d4d303afdf7fd7476fa"
+
+inherit autotools pkgconfig
+
+DEPENDS = ""
+
+FILES_${PN} = "${libdir}/*.so.*"
+FILES_${PN}-dev += "${bindir}/libart2-config"
+
+S = "${WORKDIR}/libart_lgpl-${PV}"
+
+do_configure_prepend() {
+	cp ${WORKDIR}/${ART_CONFIG} ${S}/art_config.h
+}
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.16.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.16.1.bb
new file mode 100644
index 0000000..2a6f04b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.16.1.bb
@@ -0,0 +1,27 @@
+SUMMARY = "GLib-based library for accessing online service APIs using the GData protocol"
+HOMEPAGE = "http://live.gnome.org/libgdata"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24 \
+                    file://gdata/gdata.h;endline=20;md5=079a554efcf65d46f96a515806e7e99a \
+                    file://gdata/gdata-types.h;endline=20;md5=7399b111aac8718da13888fc634be6ef"
+
+DEPENDS = "libxml2 glib-2.0 libsoup-2.4 intltool-native liboauth gcr json-glib"
+
+inherit gnomebase pkgconfig autotools-brokensep gettext gtk-doc vala gobject-introspection
+
+do_configure_prepend_class-target () {
+    # introspection.m4 pre-packaged with upstream tarballs does not yet
+    # have our fixes
+    rm -f ${S}/introspection.m4
+}
+
+do_compile_prepend() {
+    export GIR_EXTRA_LIBS_PATH="${B}/gdata/.libs"
+}
+
+EXTRA_OECONF += "--disable-goa --disable-tests"
+
+SRC_URI[archive.md5sum] = "eb552a8a8482e4231a3d1baf7262e64d"
+SRC_URI[archive.sha256sum] = "8740e071ecb2ae0d2a4b9f180d2ae5fdf9dc4c41e7ff9dc7e057f62442800827"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnome/0001-libgnome-Makefile.am-allow-deprecated-symbols.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnome/0001-libgnome-Makefile.am-allow-deprecated-symbols.patch
new file mode 100644
index 0000000..b658303
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnome/0001-libgnome-Makefile.am-allow-deprecated-symbols.patch
@@ -0,0 +1,35 @@
+From ce1cd20fceea7dbcc5b983d94de771461eccf7cf Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Mon, 29 Apr 2013 14:17:13 +0200
+Subject: [PATCH] libgnome/Makefile.am: allow deprecated symbols
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fixes:
+
+| gnome-program.c: In function 'gnome_program_init_common':
+| gnome-program.c:2067:2: error: implicit declaration of function 'g_atexit' [-Werror=implicit-function-declaration]
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ libgnome/Makefile.am |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+diff --git a/libgnome/Makefile.am b/libgnome/Makefile.am
+index 9c8cd3e..aa01f6c 100644
+--- a/libgnome/Makefile.am
++++ b/libgnome/Makefile.am
+@@ -17,7 +17,6 @@ INCLUDES = \
+ 	-I$(srcdir)/..						\
+ 	$(WARN_CFLAGS)						\
+ 	$(LIBGNOME_CFLAGS)					\
+-	-DG_DISABLE_DEPRECATED					\
+ 	-DLIBGNOME_PREFIX=\""$(prefix)"\"			\
+ 	-DLIBGNOME_LIBDIR=\""$(libdir)"\"			\
+ 	-DLIBGNOME_DATADIR=\""$(datadir)"\"			\
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnome_2.32.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnome_2.32.1.bb
new file mode 100644
index 0000000..27b8b9a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnome_2.32.1.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Gnome application programming libraries"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
+SECTION = "x11/gnome/libs"
+
+inherit gnome lib_package
+
+PR = "r2"
+
+SRC_URI[archive.md5sum] = "a4345e6087ae6195d65a4674ffdca559"
+SRC_URI[archive.sha256sum] = "b2c63916866485793b87398266dd7778548c1734923c272a94d84ee011b6f7a4"
+SRC_URI += "file://0001-libgnome-Makefile.am-allow-deprecated-symbols.patch"
+GNOME_COMPRESS_TYPE="bz2"
+
+DEPENDS += "libcanberra gconf-native gnome-vfs libbonobo esound"
+
+EXTRA_OECONF += "--disable-gtk-doc"
+
+do_configure_prepend() {
+    sed -i -e s:docs::g ${S}/Makefile.am
+    echo "EXTRA_DIST = version.xml" > gnome-doc-utils.make
+    echo "EXTRA_DIST = version.xml" > gtk-doc.make
+}
+
+FILES_${PN} += "${libdir}/bonobo/servers ${libdir}/bonobo/monikers/*.so \
+                ${datadir}/gnome-background-properties ${datadir}/pixmaps"
+FILES_${PN}-dev += "${libdir}/bonobo/monikers/*.la"
+FILES_${PN}-staticdev += "${libdir}/bonobo/monikers/*.a"
+
+PACKAGES =+ "gnome-common-schemas"
+
+FILES_gnome-common-schemas = "${datadir}/gnome-background-properties ${datadir}/pixmaps ${sysconfdir}"
+
+RDEPENDS_${PN} = "gnome-common-schemas"
+
+FILES_${PN}-dbg += "${libdir}/bonobo/monikers/.debug"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomecanvas_2.30.3.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomecanvas_2.30.3.bb
new file mode 100644
index 0000000..a0f0b51
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomecanvas_2.30.3.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A powerful object-oriented display"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
+SECTION = "x11/gnome/libs"
+
+inherit gnomebase gtk-doc
+
+# intltool to provide IT_PROG_INTLTOOL
+# configure: line 12654: syntax error near unexpected token `0.35.0'
+# configure: line 12654: `IT_PROG_INTLTOOL(0.35.0)'
+DEPENDS = "gtk+ libglade libart-lgpl xineramaproto intltool-native"
+
+SRC_URI[archive.md5sum] = "ffcbb719c671ff5cd86e59aeba8d0b92"
+SRC_URI[archive.sha256sum] = "859b78e08489fce4d5c15c676fec1cd79782f115f516e8ad8bed6abcb8dedd40"
+GNOME_COMPRESS_TYPE="bz2"
+
+FILES_${PN} += "${libdir}/libglade/*/libcanvas.so"
+FILES_${PN}-dbg += "${libdir}/libglade/*/.debug/"
+FILES_${PN}-dev += "${libdir}/libglade/*/libcanvas*.la"
+FILES_${PN}-staticdev += "${libdir}/libglade/*/libcanvas*.a"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomekbd_2.32.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomekbd_2.32.0.bb
new file mode 100644
index 0000000..969df3b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomekbd_2.32.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "GNOME keyboard library"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=6e29c688d912da12b66b73e32b03d812"
+
+SECTION = "x11/gnome/libs"
+
+DEPENDS = "gconf gtk+ glib-2.0 libxklavier"
+
+inherit gnome
+
+SRC_URI[archive.md5sum] = "de32a6e3e3464b566eecdc4332bf34bd"
+SRC_URI[archive.sha256sum] = "ddd52c4cc7d83ad7ef964a1bcb4db87407e65b00ffc3e70c088ca4ee7383d256"
+GNOME_COMPRESS_TYPE="bz2"
+
+do_configure_append() {
+    find ${B} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
+    find ${B} -name Makefile | xargs sed -i s:'-I/usr/include':'-I${STAGING_INCDIR}':g
+}
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui.inc b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui.inc
new file mode 100644
index 0000000..26997b8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui.inc
@@ -0,0 +1,24 @@
+DESCRIPTION = "GNOME User Interface Library"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
+
+SECTION = "x11/gnome/libs"
+DEPENDS = "libgnome libgnomecanvas libbonoboui libgnome-keyring intltool-native"
+
+inherit gnome 
+
+FILES_${PN} += "${libdir}/gtk-2.0/*/filesystems/lib*.so \
+                ${libdir}/libglade/*/lib*.so \
+                ${datadir}/pixmaps/gnome-about-logo.png"
+FILES_${PN}-dev += "${libdir}/gtk-2.0/*/filesystems/*.la ${libdir}/gtk-2.0/*/filesystems/*.a ${libdir}/libglade/*/*.la"
+FILES_${PN}-staticdev += "${libdir}/libglade/*/*.a"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/*/filesystems/.debug/ ${libdir}/libglade/*/.debug/"
+
+SRC_URI += "file://gnome-stock-pixbufs.h file://no-pixbuf-csource.patch"
+
+EXTRA_OECONF = "--disable-gtk-doc"
+
+do_configure_prepend() {
+    install -m 0644 ${WORKDIR}/gnome-stock-pixbufs.h ${S}/libgnomeui/pixmaps/gnome-stock-pixbufs.h
+}
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui/gnome-stock-pixbufs.h b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui/gnome-stock-pixbufs.h
new file mode 100644
index 0000000..953a8ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui/gnome-stock-pixbufs.h
@@ -0,0 +1,4030 @@
+/* gnome stock icons in GdmPixbuf usable rgb data
+ *
+ * Copyright (C) 1997 the Free Software Foundation
+ *
+ * the pixmaps for button_cancel, save_as, trash, mail_receive, stop
+ * right_arrow, home, save, book_blue, trash_full, undo, search, mail_forward
+ * revert, mail_compose, mic, copy, jump_to, convert, button_apply, timer
+ * mail, book_red, book_yellow, help, redo, new, mail_send, button_yes, cut
+ * properties, print, mail_reply, refresh, search_replace, open, preferences
+ * left_arrow, undelete, close, volume, button_no, exit, book_green
+ * book_open, paste, line_in, spellcheck, timer_stopped
+ * are Copyright (C) 1998 Tuomas Kuosmanen
+ */
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_attach)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_attach[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_attach[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\21\0\0\0\2\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\26\0"
+  "\0\0\"\0\0\0$\0\0\0%\0\0\0%\0\0\0\377\0\0\0l\0\0\0\377\0\0\0\377\0\0"
+  "\0\10\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\"\0\0\0\20\0"
+  "\0\0$\0\0\0~\1\1\1\377QQQ\377\232\232\232\377\317\317\317\377ooo\377"
+  "\0\0\0\377\0\0\0\16\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0x\0\0\0"
+  "\377FFF\377\245\245\245\377\342\342\342\377\377\377\377\377\377\377\377"
+  "\377\366\366\366\377\212\212\212\377999\377\0\0\0(\0\0\0\10\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\0"
+  "B\0\0\0\377\34\34\34\377\213\213\213\377\346\346\346\377\356\356\356"
+  "\377\341\341\341\377\377\377\377\377\370\370\370\377\367\367\367\377"
+  "\366\366\366\377\314\314\314\377VVV\377\0\0\0^\0\0\0\12\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0\0\377>>>\377\201\201\201"
+  "\377\324\324\324\377\34\34\34\377\347\347\347\377\327\327\327\377\372"
+  "\372\372\377\371\371\371\377\370\370\370\377\302\302\302\377\313\313"
+  "\313\377\365\365\365\377\331\331\331\377\201\201\201\377\0\0\0\377\0"
+  "\0\0\25\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\3\3\3\377TTT\377\346\346"
+  "\346\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377\327"
+  "\327\327\377\336\336\336\377\263\263\263\377yyy\377\0\0\0\377\342\342"
+  "\342\377\366\366\366\377\365\365\365\377\364\364\364\377\235\235\235"
+  "\377(((\377\0\0\0)\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\366\366"
+  "\366\377\377\377\377\377\377\377\377\377\372\372\372\377\372\372\372"
+  "\377\373\373\373\377\0\0\0\377\246\246\246\377\305\305\305\377\360\360"
+  "\360\377\370\370\370\377\0\0\0\377\342\342\342\377\302\302\302\377\312"
+  "\312\312\377\364\364\364\377\307\307\307\377VVV\377\0\0\0^\0\0\0\12\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\362\362\362\377\370\370\370\377\371"
+  "\371\371\377\316\316\316\377\304\304\304\377\305\305\305\377\0\0\0\377"
+  "\325\325\325\377\371\371\371\377\370\370\370\377\370\370\370\377\0\0"
+  "\0\377\263\263\263\377\332\332\332\377\364\364\364\377\363\363\363\377"
+  "\363\363\363\377yyy\377\0\0\0\377\0\0\0\25\0\0\0\3\0\0\0\0\0\0\0\0\0"
+  "\0\0h\205\205\205\377\377\377\377\377\370\370\370\377\276\276\276\377"
+  "\371\371\371\377\371\371\371\377\0\0\0\377\323\323\323\377\334\334\334"
+  "\377\302\302\302\377\302\302\302\377\0\0\0\377\342\342\342\377\365\365"
+  "\365\377\364\364\364\377\363\363\363\377\362\362\362\377\234\234\234"
+  "\377(((\377\0\0\0)\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\40HHH\377\377\377\377"
+  "\377\367\367\367\377\367\367\367\377\370\370\370\377\370\370\370\377"
+  "\0\0\0\377\247\247\247\377\326\326\326\377\367\367\367\377\366\366\366"
+  "\377\0\0\0\377\342\342\342\377\364\364\364\377\304\304\304\377\310\310"
+  "\310\377\362\362\362\377\306\306\306\377LLL\377\0\0\0^\0\0\0\12\0\0\0"
+  "\0\0\0\0\0\0\0\0\1\0\0\0\377\352\352\352\377\377\377\377\377\366\366"
+  "\366\377\276\276\276\377\302\302\302\377\0\0\0\377\345\345\345\377\330"
+  "\330\330\377\366\366\366\377\365\365\365\377\0\0\0\377\255\255\255\377"
+  "\274\274\274\377\352\352\352\377\340\340\340\377\361\361\361\377\352"
+  "\352\352\377\220\220\220\377\0\0\0\377\0\0\0\25\0\0\0\3\0\0\0\0\0\0\0"
+  "\0\0\0\0ihhh\377\377\377\377\377\365\365\365\377\366\366\366\377\366"
+  "\366\366\377\242\242\242\377\0\0\0\377\300\300\300\377\301\301\301\377"
+  "\0\0\0\377xxx\377\326\326\326\377\363\363\363\377\362\362\362\377\361"
+  "\361\361\377\361\361\361\377\325\325\325\377\256\256\256\377\25\25\25"
+  "\377\0\0\0)\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\4""999\377\377\377\377\377"
+  "\364\364\364\377\365\365\365\377\365\365\365\377\332\332\332\377\232"
+  "\232\232\377\0\0\0\377\0\0\0\377yyy\377\326\326\326\377\362\362\362\377"
+  "\362\362\362\377\361\361\361\377\326\326\326\377\320\320\320\377\227"
+  "\227\227\377rrr\377JJJ\377\0\0\0.\0\0\0\11\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\354\354\354\377\377\377\377\377\364\364\364\377\254\254\254"
+  "\377\272\272\272\377\335\335\335\377\363\363\363\377\316\316\316\377"
+  "\333\333\333\377\354\354\354\377\327\327\327\377\326\326\326\377\261"
+  "\261\261\377\201\201\201\377VVV\377###\377\0\0\0\377\0\0\0q\0\0\0)\0"
+  "\0\0\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0hiii\377\377\377\377\377\363\363"
+  "\363\377\363\363\363\377\363\363\363\377\363\363\363\377\362\362\362"
+  "\377\362\362\362\377\327\327\327\377\267\267\267\377\202\202\202\377"
+  "@@@\377###\377\0\0\0\377\0\0\0\204\0\0\0""2\0\0\0.\0\0\0)\0\0\0\25\0"
+  "\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4(((\377\377\377\377\377\363\363"
+  "\363\377\362\362\362\377\362\362\362\377\327\327\327\377\276\276\276"
+  "\377\226\226\226\377222\377###\377\0\0\0\377\0\0\0u\0\0\0H\0\0\0/\0\0"
+  "\0*\0\0\0\31\0\0\0\13\0\0\0\10\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\346\346\346\377\350\350\350\377\314\314\314\377"
+  "\232\232\232\377@@@\377###\377\0\0\0\377\0\0\0\221\0\0\0I\0\0\0/\0\0"
+  "\0*\0\0\0\30\0\0\0\16\0\0\0\11\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0;999\377\202\202\202\377999\377"
+  "\22\22\22\377\0\0\0\204\0\0\0I\0\0\0/\0\0\0*\0\0\0\33\0\0\0\16\0\0\0"
+  "\11\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\377\0\0\0\377\0\0\0u\0\0"
+  "\0""1\0\0\0*\0\0\0\31\0\0\0\16\0\0\0\11\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\11\0\0\0&\0\0\0)\0\0\0\27\0\0\0"
+  "\12\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\7\0\0\0\10\0\0\0\3\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_book_blue)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_book_blue[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_book_blue[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0""9\0\0\0\302\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\357\0\0\0\356\0\0\0\346\0\0\0\342\0\0\0w\0\0\0\13\0\0"
+  "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\21\26\35\377\227"
+  "\250\276\377}\223\254\377s\212\243\377l\204\234\377d|\226\377^v\217\377"
+  "Wo\210\377Pi\202\377Pi\202\377Pi\202\377Pi\202\377Pi\202\377Vn\206\377"
+  "IXi\377\21\30\"\376\0\0\0.\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\273v\213\242\377\216\242\270\377v\215\247\377Vr\220\377"
+  "Nj\210\377Fb\200\377=Zx\3775Rp\3771Nk\3771Nk\3776Ro\3776Ro\377<Ws\377"
+  "6Ro\3773@O\377\25\34%\372\0\0\0N\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\22\12\15\21\377\231\254\300\377\200\226\256\377[v\224\377"
+  "So\215\377Jg\205\377B_}\377:Wu\3772Om\3771Nk\3771Nk\3771Nk\3771Nk\377"
+  ";Wr\377-D\\\377#/6\377\0\0\0^\0\0\0D\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\255[iy\377\231\254\300\377u\215\246\377Ws\221\377Ok\210"
+  "\377Gc\201\377\77[y\3776Sq\3771Nk\3771Nk\3771Nk\3771Nk\3774Pm\377;Wr"
+  "\377)\77V\3775<A\375\0\0\0\377\0\0\0%\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\21\0\0\0\377\231\254\300\377\200\227\260\377\\x\226\377Tp\216"
+  "\377Kh\206\377C`~\377;Xv\3773Pn\3771Nk\3771Nk\3773Pk\3771Nk\3779Uq\377"
+  "-D\\\377\27\",\377~\202\205\377578\377\0\0\0F\0\0\0\15\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\232[iy\377\217\243\271\377u\215\246\377Xt\222\377Pl"
+  "\212\377Hd\202\377@\\z\3778Tr\3771Nk\3771Nk\3771Nk\3771Nk\3772Ol\377"
+  "=Yt\377)\77V\377!'.\376JLM\377\216\220\222\377\0\0\0Q\0\0\0\20\0\0\0"
+  "\0\0\0\0\0\0\0\0\20\0\0\0\377\230\253\277\375\177\226\257\377]y\227\377"
+  "Uq\217\377Mi\207\377Da\177\377<Yw\3774Qo\3771Nk\3771Nk\3771Nk\3771Nk"
+  "\3778Tp\377/F]\377\30$-\377TWY\366eij\377334\377\0\0\0Q\0\0\0\20\0\0"
+  "\0\0\0\0\0\0\0\0\0\335eu\203\377\215\242\271\377v\215\247\377Zu\223\377"
+  "Qm\213\377Ie\203\377A]{\3779Us\3771Nk\3771Nk\3771Nk\3771Nk\3771Nk\377"
+  "<Ws\377*BZ\377#+2\377FHJ\377\220\222\225\377\0\0\0\377\0\0\0c\0\0\0\21"
+  "\0\0\0\0\0\0\0!\0\0\0\377\233\254\273\377\207\234\264\377c~\233\377V"
+  "r\220\377Nj\210\377Fb\200\377=Zx\3775Rp\3771Nk\3771Nk\3771Nk\3771Nk\377"
+  "5Rn\3774Kb\377\31$-\377dhk\377mop\3770G]\377\0\0\0\373\0\0\0R\0\0\0\25"
+  "\0\0\0\0\0\0\0\245ep}\377\221\245\274\377q\213\246\377\\x\226\377Tp\216"
+  "\377Kh\206\377C`~\377;Xv\3773Pn\3771Nk\3771Nk\3771Nk\3771Nk\377=Yt\377"
+  ")\77V\377&.3\377WXY\377\213\217\225\377\11\15\21\372\0\0\0\234\0\0\0"
+  "I\0\0\0\17\0\0\0\13\0\0\0\377~\216\237\337\212\237\266\377l\205\241\377"
+  "Xt\222\377Pl\212\377Hd\202\377@\\z\3778Tr\3771Nk\3771Nk\3771Nk\3771N"
+  "k\3771Nk\3775Lc\377\32%0\377HLN\377suv\377C[s\370\0\0\0\364\0\0\0U\0"
+  "\0\0+\0\0\0\7\0\0\0\206uww\377\275\306\323\375\256\276\314\377\247\266"
+  "\306\377\243\262\302\377\236\255\275\377\232\252\271\377\220\240\260"
+  "\377{\217\241\377y\214\237\377y\214\237\377y\214\237\377y\214\237\377"
+  "p\204\231\377Ufy\37725;\377[^a\377\216\223\230\377\12\16\21\372\0\0\0"
+  "\233\0\0\0G\0\0\0\21\0\0\0\1\2\7\11\331\260\272\304\377,>Q\377$6J\377"
+  "$6J\377$6J\377$6J\377$6J\377$6J\377$6J\377$6J\377$6J\377$6J\377$6J\377"
+  "$6J\377+5\77\377^bh\377wxz\377F`z\377\0\0\0\365\0\0\0U\0\0\0*\0\0\0\6"
+  "\0\0\0\0\15\17\21\377\207\223\235\377@AE\377_``\373ttt\377\226\226\226"
+  "\377\261\261\261\377\257\257\260\377\305\305\306\377\316\316\317\377"
+  "\264\273\301\377\274\302\311\377\275\304\312\377\304\313\322\377\313"
+  "\322\331\377\326\332\336\377\220\226\233\377\205\212\217\377\24\33!\371"
+  "\0\0\0\234\0\0\0H\0\0\0\22\0\0\0\1\0\0\0\0\14\16\17\377k{\213\377WWW"
+  "\377}~\200\377\342\344\346\377\342\344\346\377\341\341\341\377\337\337"
+  "\340\377\337\337\340\377\362\362\362\377\375\375\376\377\361\363\365"
+  "\377\361\363\365\377\361\363\365\377\247\250\252\377\262\265\271\377"
+  "imq\377F`z\377\0\1\2\370\0\0\0U\0\0\0*\0\0\0\6\0\0\0\0\0\0\0\0$%'\377"
+  "cr\201\377i|\216\377Tk\203\377E]x\377\326\334\341\377\347\352\355\377"
+  "\355\357\361\377\355\357\362\377\345\346\347\377\336\336\337\377\341"
+  "\341\342\377\341\341\342\377\337\337\340\377\341\342\343\377rz\203\377"
+  "\213\217\224\377\25\33!\367\0\0\0\234\0\0\0I\0\0\0\22\0\0\0\1\0\0\0\0"
+  "\0\0\0\0\0\0\0""9\0\0\0\377\4\6\12\3548J]\363Mbx\351Th\177\357Sj\202"
+  "\377Wo\206\377\207\227\247\377\327\335\341\377\342\346\351\377\351\354"
+  "\356\377\370\371\372\377\370\371\372\377\201\205\212\377\245\247\250"
+  "\377\234\242\250\377\1\2\3\370\0\0\0U\0\0\0*\0\0\0\7\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0&\0\0\0e\0\0\0\276\0\0\0\346\0\0\0\360\0\0\0\363"
+  ";K^\371DVi\371Tg}\367Uk\200\366Vl\203\377\254\270\303\377\334\341\345"
+  "\377\350\353\355\377\237\243\246\377\25\35$\373\0\0\0\234\0\0\0H\0\0"
+  "\0\22\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\17\0\0\0"
+  "\34\0\0\0""4\0\0\0C\0\0\0g\0\0\0\251\0\0\0\344\0\0\0\361\0\0\0\3560>"
+  "M\365=N`\371O_s\372Se{\367Lc|\357\1\3\5\367\0\0\0U\0\0\0+\0\0\0\7\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\12"
+  "\0\0\0\15\0\0\0\20\0\0\0\33\0\0\0""0\0\0\0C\0\0\0_\0\0\0\235\0\0\0\327"
+  "\0\0\0\356\0\0\0\354\0\0\0\347\0\0\0{\0\0\0F\0\0\0\21\0\0\0\1\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\3\0\0\0\10\0\0\0\15\0\0\0\20\0\0\0\30\0\0\0,\0\0\0"
+  "\77\0\0\0H\0\0\0H\0\0\0@\0\0\0\37\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\7\0\0\0\13\0\0\0\16\0"
+  "\0\0\16\0\0\0\14\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_book_green)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_book_green[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_book_green[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0""9\0\0\0\302\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\357\0\0\0\356\0\0\0\346\0\0\0\342\0\0\0w\0\0\0\13\0\0"
+  "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\21\34\21\377\225"
+  "\276\225\377y\255y\377n\246n\377e\241e\377^\233^\377Y\222Y\377S\212S"
+  "\377O\202O\377O\202O\377O\202O\377O\202O\377O\202O\377R\210R\377CnC\377"
+  "\22\36\22\376\0\0\0.\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\273o\247o\377\214\271\214\377r\251r\377V\216V\377P\204P\377Jz"
+  "J\377CoC\377=e=\377:`:\377:`:\377=e=\377=e=\377AkA\377=e=\3770P0\377"
+  "\26#\26\372\0\0\0N\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22"
+  "\11\17\11\377\227\277\227\377}\260}\377Y\223Y\377T\213T\377M\177M\377"
+  "GuG\377AkA\377;a;\377:`:\377:`:\377:`:\377:`:\377@j@\3773T3\377!6!\377"
+  "\0\0\0^\0\0\0D\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255O\203"
+  "O\377\227\277\227\377q\250q\377W\217W\377P\204P\377K|K\377ErE\377>f>"
+  "\377:`:\377:`:\377:`:\377:`:\377<c<\377@j@\377/N/\377,I,\375\0\0\0\377"
+  "\0\0\0%\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\21\0\0\0\377\227\277\227"
+  "\377~\260~\377[\226[\377U\214U\377N\201N\377HwH\377BmB\377<c<\377:`:"
+  "\377:`:\377;a;\377:`:\377@i@\3773T3\377\30(\30\377\201\201\201\377(B"
+  "(\377\0\0\0F\0\0\0\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\232O\203O\377\215"
+  "\271\215\377q\250q\377X\221X\377R\207R\377L}L\377FsF\377@i@\377:`:\377"
+  ":`:\377:`:\377:`:\377;a;\377BmB\377/N/\377\35""0\35\376KKK\377\220\220"
+  "\220\377\0\0\0Q\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0\377\226\277\226"
+  "\375}\260}\377\\\227\\\377V\215V\377O\203O\377IxI\377CnC\377=d=\377:"
+  "`:\377:`:\377:`:\377:`:\377\77h\77\3774V4\377\31*\31\377VVV\366ggg\377"
+  "333\377\0\0\0Q\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\335W\217W\377\214\271\214"
+  "\377r\251r\377Y\222Y\377R\210R\377L~L\377FtF\377@j@\377:`:\377:`:\377"
+  ":`:\377:`:\377:`:\377AkA\3771Q1\377\37""3\37\377HHH\377w\254w\377\0\0"
+  "\0\377\0\0\0c\0\0\0\21\0\0\0\0\0\0\0!\0\0\0\377\226\277\226\377\204\264"
+  "\204\377_\235_\377V\216V\377P\204P\377JzJ\377CoC\377=e=\377:`:\377:`"
+  ":\377:`:\377:`:\377=d=\3778]8\377\32+\32\377ggg\377nnn\3774V4\377\0\0"
+  "\0\373\0\0\0R\0\0\0\25\0\0\0\0\0\0\0\245U\214U\377\220\273\220\377n\246"
+  "n\377[\226[\377U\214U\377N\201N\377HwH\377BmB\377<c<\377:`:\377:`:\377"
+  ":`:\377:`:\377BmB\377/N/\377!6!\377XXX\377t\253t\377\11\17\11\372\0\0"
+  "\0\234\0\0\0I\0\0\0\17\0\0\0\13\0\0\0\377t\247t\337\210\266\210\377h"
+  "\243h\377X\221X\377R\207R\377L}L\377FsF\377@i@\377:`:\377:`:\377:`:\377"
+  ":`:\377:`:\3779^9\377\33.\33\377KKK\377ttt\377EpE\370\0\0\0\364\0\0\0"
+  "U\0\0\0+\0\0\0\7\0\0\0\206Y\222Y\377\272\325\272\375\254\314\254\377"
+  "\243\307\243\377\237\304\237\377\230\300\230\377\223\275\223\377\210"
+  "\266\210\377r\251r\377o\247o\377o\247o\377o\247o\377o\247o\377e\241e"
+  "\377M\177M\377(B(\377^^^\377x\255x\377\11\17\11\372\0\0\0\233\0\0\0G"
+  "\0\0\0\21\0\0\0\1\3\5\3\331\250\312\250\377.L.\377)D)\377)D)\377)D)\377"
+  ")D)\377)D)\377)D)\377)D)\377)D)\377)D)\377)D)\377)D)\377)D)\377'A'\377"
+  "ccc\377xxx\377HwH\377\0\0\0\365\0\0\0U\0\0\0*\0\0\0\6\0\0\0\0\13\22\13"
+  "\377w\254w\3771Q1\377___\373ttt\377\226\226\226\377\261\261\261\377\257"
+  "\257\257\377\305\305\305\377\316\316\316\377\272\272\272\377\302\302"
+  "\302\377\303\303\303\377\313\313\313\377\322\322\322\377\332\332\332"
+  "\377\225\225\225\377m\246m\377\23\37\23\371\0\0\0\234\0\0\0H\0\0\0\22"
+  "\0\0\0\1\0\0\0\0\11\17\11\377\\\230\\\377AkA\377~~~\377\344\344\344\377"
+  "\344\344\344\377\341\341\341\377\337\337\337\377\337\337\337\377\362"
+  "\362\362\377\375\375\375\377\363\363\363\377\363\363\363\377\363\363"
+  "\363\377\250\250\250\377\265\265\265\377mmm\377HwH\377\0\1\0\370\0\0"
+  "\0U\0\0\0*\0\0\0\6\0\0\0\0\0\0\0\0\33.\33\377V\215V\377\\\230\\\377P"
+  "\204P\377FtF\377\333\333\333\377\352\352\352\377\357\357\357\377\357"
+  "\357\357\377\346\346\346\377\336\336\336\377\341\341\341\377\341\341"
+  "\341\377\337\337\337\377\342\342\342\377zzz\377s\252s\377\24\40\24\367"
+  "\0\0\0\234\0\0\0I\0\0\0\22\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0""9\0\0\0\377"
+  "\5\10\5\3548[8\363MxM\351Q\200Q\357O\203O\377R\210R\377\227\227\227\377"
+  "\334\334\334\377\345\345\345\377\353\353\353\377\371\371\371\377\371"
+  "\371\371\377\205\205\205\377\246\246\246\377\213\270\213\377\1\2\1\370"
+  "\0\0\0U\0\0\0*\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\0\0\0e"
+  "\0\0\0\276\0\0\0\346\0\0\0\360\0\0\0\3639]9\371AjA\371O\200O\367Q\203"
+  "Q\366Q\206Q\377\245\310\245\377\340\340\340\377\352\352\352\377\213\270"
+  "\213\377\25\"\25\373\0\0\0\234\0\0\0H\0\0\0\22\0\0\0\1\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\17\0\0\0\34\0\0\0""4\0\0\0C\0\0\0g\0"
+  "\0\0\251\0\0\0\344\0\0\0\361\0\0\0\356/L/\365;a;\371HvH\372M}M\367Lz"
+  "L\357\2\3\2\367\0\0\0U\0\0\0+\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\12\0\0\0\15\0\0\0\20\0\0\0\33"
+  "\0\0\0""0\0\0\0C\0\0\0_\0\0\0\235\0\0\0\327\0\0\0\356\0\0\0\354\0\0\0"
+  "\347\0\0\0{\0\0\0F\0\0\0\21\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0"
+  "\10\0\0\0\15\0\0\0\20\0\0\0\30\0\0\0,\0\0\0\77\0\0\0H\0\0\0H\0\0\0@\0"
+  "\0\0\37\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\2\0\0\0\7\0\0\0\13\0\0\0\16\0\0\0\16\0\0\0\14\0\0\0\5\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_book_open)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_book_open[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_book_open[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3OOOD\0\0\0\377\4\5\6"
+  "\377\0\0\0;\0\0\0\20\0\0\0\6\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\3NNNE\13\17\22\377\225\237\252\377\303\306"
+  "\312\356\0\0\0\377\0\0\0&\0\0\0\22\0\0\0\5\0\0\0\1\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0.\13\17\22\377\202\220\236\377\361\361"
+  "\361\377\325\327\330\377\12\15\20\377\0\0\0_\0\0\0\40\0\0\0\13\0\0\0"
+  "\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0.\21\27\34\377\206\223\240"
+  "\377\357\360\360\377\336\336\336\377\325\325\325\377\233\237\244\324"
+  "\0\0\0\377\0\0\0/\0\0\0\24\0\0\0\5\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0"
+  ".\16\23\27\377\205\222\237\377\357\360\360\377\333\333\333\377\312\312"
+  "\312\377\310\310\310\377\310\311\312\377\14\17\23\377\0\0\0[\0\0\0\40"
+  "\0\0\0\13\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0.\24\32\40\377y\210\225\370\361\361"
+  "\361\377\325\325\325\377\312\312\312\377\322\322\322\377\303\303\303"
+  "\377\315\315\315\377ty~\275\0\0\0\377\0\0\0-\0\0\0\24\0\0\0\6\0\0\0\2"
+  "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0-\27\37&\377\177\215\232\361\357\360\360\377\332\332\332\377\323\323"
+  "\323\377\304\304\304\377\316\316\316\377\300\300\300\377\312\312\312"
+  "\377\261\261\261\336\15\21\25\377\0\0\0Y\0\0\0#\0\0\0\22\0\0\0\14\0\0"
+  "\0\12\0\0\0\12\0\0\0\12\0\0\0\11\0\0\0\7\0\0\0\4\0\0\0\1\0\0\0\0\0\0"
+  "\0\377v\205\222\350\356\357\357\377\331\331\331\377\323\323\323\377\320"
+  "\320\320\377\302\302\302\377\313\313\313\377\311\311\311\377\274\274"
+  "\274\377\244\247\251\344hkl\351333\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\352\0\0\0\177\0\0\0=\0\0\0\20\0\0\0\6\0\0"
+  "\0\1AO]\377\255\265\274\363\352\352\352\377\322\322\322\377\277\277\277"
+  "\377\315\315\315\377\313\313\313\377\275\275\275\377\306\306\306\377"
+  "\265\266\267\365\211\220\226\370\270\270\270\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377@AB\342\0\0\0\177\0\0\0%\0\0\0\20\0\0\0\4\0\0"
+  "\0\377M`t\340\353\353\353\377\321\321\321\377\303\303\303\377\301\301"
+  "\301\377\310\310\310\377\267\267\267\377\303\303\303\377\227\237\247"
+  "\347\241\243\244\376\374\375\375\377\363\364\364\377\353\354\355\377"
+  "\352\353\354\377\351\352\353\377\356\357\361\377\366\367\370\377\344"
+  "\345\346\376\222\223\225\375\0\0\0\377\0\0\0""9\0\0\0\33\0\0\0\7\0\0"
+  "\0=2AO\377\214\230\242\362\347\347\347\377\311\311\311\377\273\273\273"
+  "\377\304\304\304\377\302\302\302\377\244\247\253\346\223\226\231\375"
+  "\327\330\330\377\374\375\375\377\372\374\374\377\371\372\373\377\370"
+  "\371\372\377\367\370\371\377\365\366\370\377\367\367\371\377\306\307"
+  "\307\377O^j\375\0\0\0\360\0\0\0B\0\0\0\37\0\0\0\11\0\0\0\23\0\0\0\377"
+  "L_r\340\350\350\350\377\306\306\306\377\276\276\276\377\270\270\270\377"
+  "\265\265\266\361\227\236\244\356\250\250\250\377\375\376\376\377\365"
+  "\366\366\377\347\351\351\377\353\354\355\377\352\353\354\377\360\361"
+  "\362\377\370\371\372\377\340\342\343\377\217\226\235\376\25\34\"\377"
+  "\0\0\0\201\0\0\0>\0\0\0\34\0\0\0\10\0\0\0\13\0\0\0A5DS\377\215\231\242"
+  "\363\343\343\343\377\301\301\301\377\276\276\276\377\216\224\232\316"
+  "\235\237\237\376\377\377\377\377\375\376\376\377\374\375\375\377\372"
+  "\374\374\377\362\363\364\377\361\362\363\377\367\370\371\377\366\366"
+  "\367\377\246\250\253\377s\177\212\376\4\5\6\377\0\0\0P\0\0\0""1\0\0\0"
+  "\24\0\0\0\5\0\0\0\5\0\0\0\24\0\0\0\377K_q\340\345\345\345\377\301\301"
+  "\301\377\236\237\240\326\227\231\233\375\331\331\331\377\377\377\377"
+  "\377\347\350\350\377\356\357\357\377\364\365\365\377\371\372\373\377"
+  "\370\371\372\377\373\373\373\377\330\330\332\377\223\233\243\377\17\24"
+  "\30\377\0\0\0t\0\0\0B\0\0\0\"\0\0\0\14\0\0\0\3\0\0\0\2\0\0\0\13\0\0\0"
+  "A9IW\377\202\217\227\360\333\333\333\370\212\216\222\347\264\264\264"
+  "\377\377\377\377\377\377\377\377\377\375\376\376\377\365\366\366\377"
+  "\354\356\356\377\346\347\350\377\372\372\373\377\365\365\367\377\256"
+  "\262\266\377\\l|\377\0\0\0\377\0\0\0P\0\0\0""1\0\0\0\25\0\0\0\6\0\0\0"
+  "\1\0\0\0\0\0\0\0\5\0\0\0\24\0\0\0\377J]p\336\273\273\273\321\253\253"
+  "\253\377\377\377\377\377\370\370\370\377\361\361\361\377\357\360\360"
+  "\377\374\375\375\377\372\373\373\377\371\372\373\377\373\374\374\377"
+  "\336\341\343\377\235\246\256\377\12\15\20\377\0\0\0t\0\0\0A\0\0\0\"\0"
+  "\0\0\13\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\13\0\0\0A$/:\377imq\346"
+  "wxy\377\362\363\363\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\360\360\360\377\363\363\363\377\373\374\374\377\371\371\372\377\273"
+  "\277\304\377Vgy\377\0\0\0\377\0\0\0P\0\0\0""1\0\0\0\25\0\0\0\6\0\0\0"
+  "\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0\24\0\0\0\377J_t\3701>K\376\263"
+  "\275\306\375\321\327\335\377\331\336\343\377\366\367\367\377\365\365"
+  "\365\377\377\377\377\377\377\377\377\377\321\322\324\377\232\243\254"
+  "\377\4\5\6\377\0\0\0t\0\0\0A\0\0\0!\0\0\0\13\0\0\0\2\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\13\0\0\0""7\0\0\0\256+4<\366)2;\377O_"
+  "p\377^q\204\376\221\236\253\375\237\253\266\375\277\307\320\377\350\354"
+  "\356\377\262\270\276\377q}\210\376\0\0\0\377\0\0\0P\0\0\0""1\0\0\0\25"
+  "\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0"
+  "\0\22\0\0\0&\0\0\0:\0\0\0Y\0\0\0\200\0\0\0\301%-5\377Qar\377Vgy\375z"
+  "\206\225\375v\205\224\374\0\0\0\377\0\0\0r\0\0\0\77\0\0\0!\0\0\0\13\0"
+  "\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0"
+  "\6\0\0\0\20\0\0\0\34\0\0\0%\0\0\0-\0\0\0""8\0\0\0X\0\0\0\200\0\0\0\275"
+  ",4=\377!'.\377\0\0\0p\0\0\0D\0\0\0*\0\0\0\23\0\0\0\5\0\0\0\1\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0"
+  "\0\10\0\0\0\14\0\0\0\21\0\0\0\31\0\0\0\"\0\0\0,\0\0\0""7\0\0\0A\0\0\0"
+  "C\0\0\0;\0\0\0)\0\0\0\26\0\0\0\10\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2"
+  "\0\0\0\4\0\0\0\6\0\0\0\13\0\0\0\20\0\0\0\30\0\0\0\37\0\0\0\40\0\0\0\33"
+  "\0\0\0\21\0\0\0\10\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\1\0\0\0\2\0\0\0\4\0\0\0\6\0\0\0\10\0\0\0\11\0\0\0\7\0\0\0\4"
+  "\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_book_red)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_book_red[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_book_red[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0""9\0\0\0\302\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\357\0\0\0\356\0\0\0\346\0\0\0\342\0\0\0w\0\0\0\13\0\0"
+  "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\37\21\16\377\310"
+  "\225\213\377\272ym\377\264n`\377\260fW\377\252^O\377\240YK\377\226SF"
+  "\377\216OC\377\216OC\377\216OC\377\216OC\377\216OC\377\225RF\377xC8\377"
+  "!\22\17\376\0\0\0.\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\273\265pb\377\303\214\201\377\266re\377\234WI\377\221PD\377\206"
+  "J>\377zD9\377o>4\377i;1\377i;1\377o>4\377o>4\377vA7\377o>4\377X0)\377"
+  "'\26\22\372\0\0\0N\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22"
+  "\21\11\10\377\311\227\215\377\274}q\377\241ZK\377\230TG\377\214MA\377"
+  "\201G<\377vA7\377k;2\377i;1\377i;1\377i;1\377i;1\377tA6\377\\3+\377;"
+  "!\33\377\0\0\0^\0\0\0D\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\255\217OC\377\311\227\215\377\265qc\377\235WI\377\221PD\377\210K\77"
+  "\377|E:\377p>4\377i;1\377i;1\377i;1\377i;1\377l<3\377tA6\377U/(\377O"
+  ",%\375\0\0\0\377\0\0\0%\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\21\0\0"
+  "\0\377\311\227\215\377\275~r\377\244[L\377\231UH\377\215NB\377\202H<"
+  "\377wB8\377l<3\377i;1\377i;1\377k;2\377i;1\377s@6\377\\3+\377,\30\24"
+  "\377\201\201\201\377I(\"\377\0\0\0F\0\0\0\15\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\232\217OC\377\304\215\202\377\265qc\377\237XJ\377\223RE\377\211"
+  "L@\377~F;\377s@6\377i;1\377i;1\377i;1\377i;1\377k;2\377wB8\377U/(\377"
+  "4\35\30\376KKK\377\220\220\220\377\0\0\0Q\0\0\0\20\0\0\0\0\0\0\0\0\0"
+  "\0\0\20\0\0\0\377\310\226\214\375\274}q\377\245\\M\377\232VH\377\217"
+  "OC\377\203I=\377xC8\377m=3\377i;1\377i;1\377i;1\377i;1\377q\77""5\377"
+  "_4,\377-\31\25\377VVV\366ggg\377333\377\0\0\0Q\0\0\0\20\0\0\0\0\0\0\0"
+  "\0\0\0\0\335\235WI\377\303\214\201\377\266re\377\240YK\377\225RF\377"
+  "\212L@\377\177G;\377tA6\377i;1\377i;1\377i;1\377i;1\377i;1\377vA7\377"
+  "Y1)\3778\37\32\377HHH\377\270wj\377\0\0\0\377\0\0\0c\0\0\0\21\0\0\0\0"
+  "\0\0\0!\0\0\0\377\310\226\214\377\300\205y\377\254`P\377\234WI\377\221"
+  "PD\377\206J>\377zD9\377o>4\377i;1\377i;1\377i;1\377i;1\377m=3\377f8/"
+  "\377/\32\26\377ggg\377nnn\377_4,\377\0\0\0\373\0\0\0R\0\0\0\25\0\0\0"
+  "\0\0\0\0\245\231UH\377\305\220\205\377\264n`\377\244[L\377\231UH\377"
+  "\215NB\377\202H<\377wB8\377l<3\377i;1\377i;1\377i;1\377i;1\377wB8\377"
+  "U/(\377;!\33\377XXX\377\267tg\377\21\11\10\372\0\0\0\234\0\0\0I\0\0\0"
+  "\17\0\0\0\13\0\0\0\377\262th\337\302\210}\377\261hY\377\237XJ\377\223"
+  "RE\377\211L@\377~F;\377s@6\377i;1\377i;1\377i;1\377i;1\377i;1\377g90"
+  "\3772\33\27\377KKK\377ttt\377zE:\370\0\0\0\364\0\0\0U\0\0\0+\0\0\0\7"
+  "\0\0\0\206\240YK\377\333\272\264\375\324\254\244\377\320\243\233\377"
+  "\315\237\226\377\312\231\217\377\307\224\211\377\302\210}\377\266re\377"
+  "\265pb\377\265pb\377\265pb\377\265pb\377\260fW\377\214MA\377I(\"\377"
+  "^^^\377\271xk\377\21\11\10\372\0\0\0\233\0\0\0G\0\0\0\21\0\0\0\1\6\3"
+  "\3\331\322\250\240\377T.'\377J)#\377J)#\377J)#\377J)#\377J)#\377J)#\377"
+  "J)#\377J)#\377J)#\377J)#\377J)#\377J)#\377G'!\377ccc\377xxx\377\202H"
+  "<\377\0\0\0\365\0\0\0U\0\0\0*\0\0\0\6\0\0\0\0\24\13\11\377\270wj\377"
+  "Y1)\377___\373ttt\377\226\226\226\377\261\261\261\377\257\257\257\377"
+  "\305\305\305\377\316\316\316\377\272\272\272\377\302\302\302\377\303"
+  "\303\303\377\313\313\313\377\322\322\322\377\332\332\332\377\225\225"
+  "\225\377\264m_\377\"\23\20\371\0\0\0\234\0\0\0H\0\0\0\22\0\0\0\1\0\0"
+  "\0\0\21\11\10\377\247]N\377vA7\377~~~\377\344\344\344\377\344\344\344"
+  "\377\341\341\341\377\337\337\337\377\337\337\337\377\362\362\362\377"
+  "\375\375\375\377\363\363\363\377\363\363\363\377\363\363\363\377\250"
+  "\250\250\377\265\265\265\377mmm\377\202H<\377\1\0\0\370\0\0\0U\0\0\0"
+  "*\0\0\0\6\0\0\0\0\0\0\0\0""2\33\27\377\232VH\377\247]N\377\221PD\377"
+  "\177G;\377\333\333\333\377\352\352\352\377\357\357\357\377\357\357\357"
+  "\377\346\346\346\377\336\336\336\377\341\341\341\377\341\341\341\377"
+  "\337\337\337\377\342\342\342\377zzz\377\267sf\377$\24\21\367\0\0\0\234"
+  "\0\0\0I\0\0\0\22\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0""9\0\0\0\377\11\5\4\354"
+  "c80\363\203MB\351\214QE\357\217OC\377\225RF\377\227\227\227\377\334\334"
+  "\334\377\345\345\345\377\353\353\353\377\371\371\371\377\371\371\371"
+  "\377\205\205\205\377\246\246\246\377\303\213\200\377\2\1\1\370\0\0\0"
+  "U\0\0\0*\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\0\0\0e\0\0\0"
+  "\276\0\0\0\346\0\0\0\360\0\0\0\363f:1\371sA7\371\214OC\367\217QE\366"
+  "\222QD\377\320\245\234\377\340\340\340\377\352\352\352\377\303\213\200"
+  "\377%\25\21\373\0\0\0\234\0\0\0H\0\0\0\22\0\0\0\1\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\6\0\0\0\17\0\0\0\34\0\0\0""4\0\0\0C\0\0\0g\0\0\0\251"
+  "\0\0\0\344\0\0\0\361\0\0\0\356S/(\365j;2\371\201I=\372\211MB\367\205"
+  "LA\357\3\2\1\367\0\0\0U\0\0\0+\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\12\0\0\0\15\0\0\0\20\0\0\0\33"
+  "\0\0\0""0\0\0\0C\0\0\0_\0\0\0\235\0\0\0\327\0\0\0\356\0\0\0\354\0\0\0"
+  "\347\0\0\0{\0\0\0F\0\0\0\21\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0"
+  "\10\0\0\0\15\0\0\0\20\0\0\0\30\0\0\0,\0\0\0\77\0\0\0H\0\0\0H\0\0\0@\0"
+  "\0\0\37\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\2\0\0\0\7\0\0\0\13\0\0\0\16\0\0\0\16\0\0\0\14\0\0\0\5\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_book_yellow)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_book_yellow[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_book_yellow[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0""9\0\0\0\302\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\357\0\0\0\356\0\0\0\346\0\0\0\342\0\0\0w\0\0\0\13\0\0"
+  "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32(\40\5\377\352\315"
+  "i\377\344\300C\377\342\2733\377\341\267&\377\333\261\36\377\317\247\34"
+  "\377\303\235\32\377\270\224\31\377\270\224\31\377\270\224\31\377\270"
+  "\224\31\377\270\224\31\377\301\234\32\377\234~\25\377*\"\6\376\0\0\0"
+  ".\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\273\343\274"
+  "4\377\350\311]\377\343\2758\377\312\243\33\377\273\227\32\377\255\214"
+  "\30\377\236\177\25\377\220t\23\377\211n\22\377\211n\22\377\220t\23\377"
+  "\220t\23\377\230{\25\377\220t\23\377r\\\17\3771(\7\372\0\0\0N\0\0\0\20"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22\26\22\3\377\352\316m\377\345"
+  "\302H\377\321\250\34\377\304\236\33\377\264\222\31\377\246\206\27\377"
+  "\230{\25\377\212p\23\377\211n\22\377\211n\22\377\211n\22\377\211n\22"
+  "\377\227y\24\377w`\20\377M>\12\377\0\0\0^\0\0\0D\0\0\0\16\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\255\272\226\31\377\352\316m\377\343\2746\377"
+  "\313\244\34\377\273\227\32\377\257\215\30\377\241\202\26\377\221u\24"
+  "\377\211n\22\377\211n\22\377\211n\22\377\211n\22\377\214q\23\377\227"
+  "y\24\377nY\17\377fR\16\375\0\0\0\377\0\0\0%\0\0\0\5\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\21\0\0\0\377\352\316m\377\345\303J\377\324\253\35\377\306"
+  "\240\33\377\266\223\31\377\250\210\27\377\232|\25\377\214q\23\377\211"
+  "n\22\377\211n\22\377\212p\23\377\211n\22\377\225x\24\377w`\20\3779.\10"
+  "\377\201\201\201\377^L\15\377\0\0\0F\0\0\0\15\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\232\272\226\31\377\350\312_\377\343\2746\377\315\245\34\377\277"
+  "\232\32\377\261\217\30\377\243\203\26\377\225x\24\377\211n\22\377\211"
+  "n\22\377\211n\22\377\211n\22\377\212p\23\377\232|\25\377nY\17\377C6\11"
+  "\376KKK\377\220\220\220\377\0\0\0Q\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\20"
+  "\0\0\0\377\351\315k\375\345\302H\377\326\255\35\377\310\241\33\377\272"
+  "\226\31\377\252\211\27\377\234~\25\377\216r\23\377\211n\22\377\211n\22"
+  "\377\211n\22\377\211n\22\377\223w\24\377zc\21\377;0\10\377VVV\366ggg"
+  "\377333\377\0\0\0Q\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\335\313\244\34\377"
+  "\350\311]\377\343\2758\377\317\247\34\377\301\234\32\377\263\220\30\377"
+  "\245\205\26\377\227y\24\377\211n\22\377\211n\22\377\211n\22\377\211n"
+  "\22\377\211n\22\377\230{\25\377s]\20\377I;\12\377HHH\377\344\277\77\377"
+  "\0\0\0\377\0\0\0c\0\0\0\21\0\0\0\0\0\0\0!\0\0\0\377\352\316k\377\347"
+  "\306R\377\337\264\36\377\312\243\33\377\273\227\32\377\255\214\30\377"
+  "\236\177\25\377\220t\23\377\211n\22\377\211n\22\377\211n\22\377\211n"
+  "\22\377\216r\23\377\203j\22\377=1\10\377ggg\377nnn\377zc\21\377\0\0\0"
+  "\373\0\0\0R\0\0\0\25\0\0\0\0\0\0\0\245\306\240\33\377\351\313b\377\342"
+  "\2733\377\324\253\35\377\306\240\33\377\266\223\31\377\250\210\27\377"
+  "\232|\25\377\214q\23\377\211n\22\377\211n\22\377\211n\22\377\211n\22"
+  "\377\232|\25\377nY\17\377M>\12\377XXX\377\344\276;\377\25\21\3\372\0"
+  "\0\0\234\0\0\0I\0\0\0\17\0\0\0\13\0\0\0\377\326\266D\337\347\307X\377"
+  "\341\270*\377\315\245\34\377\277\232\32\377\261\217\30\377\243\203\26"
+  "\377\225x\24\377\211n\22\377\211n\22\377\211n\22\377\211n\22\377\211"
+  "n\22\377\205k\22\377A4\10\377KKK\377ttt\377\234\177\30\370\0\0\0\364"
+  "\0\0\0U\0\0\0+\0\0\0\7\0\0\0\206\317\247\34\377\360\336\236\375\356\330"
+  "\213\377\355\324~\377\354\322w\377\353\317n\377\352\314g\377\347\307"
+  "X\377\343\2758\377\343\2744\377\343\2744\377\343\2744\377\343\2744\377"
+  "\341\267&\377\264\222\31\377^L\15\377^^^\377\344\300A\377\25\21\3\372"
+  "\0\0\0\233\0\0\0G\0\0\0\21\0\0\0\1\7\6\1\331\356\326\205\377lW\17\377"
+  "`N\15\377`N\15\377`N\15\377`N\15\377`N\15\377`N\15\377`N\15\377`N\15"
+  "\377`N\15\377`N\15\377`N\15\377`N\15\377]K\14\377ccc\377xxx\377\250\210"
+  "\27\377\0\0\0\365\0\0\0U\0\0\0*\0\0\0\6\0\0\0\0\32\25\3\377\344\277\77"
+  "\377s]\20\377___\373ttt\377\226\226\226\377\261\261\261\377\257\257\257"
+  "\377\305\305\305\377\316\316\316\377\272\272\272\377\302\302\302\377"
+  "\303\303\303\377\313\313\313\377\322\322\322\377\332\332\332\377\225"
+  "\225\225\377\342\2721\377,#\6\371\0\0\0\234\0\0\0H\0\0\0\22\0\0\0\1\0"
+  "\0\0\0\26\22\3\377\330\256\35\377\230{\25\377~~~\377\344\344\344\377"
+  "\344\344\344\377\341\341\341\377\337\337\337\377\337\337\337\377\362"
+  "\362\362\377\375\375\375\377\363\363\363\377\363\363\363\377\363\363"
+  "\363\377\250\250\250\377\265\265\265\377mmm\377\250\210\27\377\1\1\0"
+  "\370\0\0\0U\0\0\0*\0\0\0\6\0\0\0\0\0\0\0\0A4\10\377\310\241\33\377\330"
+  "\256\35\377\273\227\32\377\245\205\26\377\333\333\333\377\352\352\352"
+  "\377\357\357\357\377\357\357\357\377\346\346\346\377\336\336\336\377"
+  "\341\341\341\377\341\341\341\377\337\337\337\377\342\342\342\377zzz\377"
+  "\343\275:\377-%\7\367\0\0\0\234\0\0\0I\0\0\0\22\0\0\0\1\0\0\0\0\0\0\0"
+  "\0\0\0\0""9\0\0\0\377\13\10\1\354~e\25\363\243\206!\351\260\220\40\357"
+  "\272\226\31\377\301\234\32\377\227\227\227\377\334\334\334\377\345\345"
+  "\345\377\353\353\353\377\371\371\371\377\371\371\371\377\205\205\205"
+  "\377\246\246\246\377\350\310[\377\2\2\0\370\0\0\0U\0\0\0*\0\0\0\7\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\0\0\0e\0\0\0\276\0\0\0\346\0\0\0"
+  "\360\0\0\0\363\202i\24\371\224w\26\371\262\220\35\367\266\224\36\366"
+  "\275\231\32\377\355\325\200\377\340\340\340\377\352\352\352\377\350\310"
+  "[\3770&\6\373\0\0\0\234\0\0\0H\0\0\0\22\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\6\0\0\0\17\0\0\0\34\0\0\0""4\0\0\0C\0\0\0g\0\0\0\251"
+  "\0\0\0\344\0\0\0\361\0\0\0\356iU\21\365\207n\25\371\245\206\31\372\257"
+  "\215\33\367\250\211\36\357\4\3\0\367\0\0\0U\0\0\0+\0\0\0\7\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\12\0\0\0"
+  "\15\0\0\0\20\0\0\0\33\0\0\0""0\0\0\0C\0\0\0_\0\0\0\235\0\0\0\327\0\0"
+  "\0\356\0\0\0\354\0\0\0\347\0\0\0{\0\0\0F\0\0\0\21\0\0\0\1\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\3\0\0\0\10\0\0\0\15\0\0\0\20\0\0\0\30\0\0\0,\0\0\0\77"
+  "\0\0\0H\0\0\0H\0\0\0@\0\0\0\37\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\7\0\0\0\13\0\0\0\16\0\0"
+  "\0\16\0\0\0\14\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_line_in)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_line_in[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_line_in[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0-..\257###\377\10\10\10x\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\25\25\25\377\345\345\346\377###\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0fff\315\356\356\356\377MMM\217\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\2\2\2\337\277\277\277\377\3\3\3\325\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\33\0\0\0i\0\0\0s\0\0\0_\0\0"
+  "\0=\0\0\0!\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\21"
+  "\21\22\377\354\354\355\377\22\22\22\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0\0\0\262\216\216\216\260\210\210\210"
+  "\233TTT\210$$$v\0\0\0b\0\0\0F\0\0\0&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0$$%\243\273\273\273\377\0\0\0O\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\212lll\326\316\316\316\311\245\245\245\274\0"
+  "\0\0\242\0\0\0\214\0\0\0v\0\0\0U\0\0\0;\0\0\0+\0\0\0\"\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\352\352\352\377\0\0\0\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\230mmm\347\316\316\316\345\10\10\10"
+  "\313\10\10\10\231\0\0\0G\0\0\0=\0\0\0""1\0\0\0:\0\0\0""2\0\0\0#\0\0\0"
+  "\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377RRR\377\332\332\334\377===\377\0"
+  "\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\343\265\265\265\363KK"
+  "K\351\0\0\0M\0\0\0\21\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\33"
+  "\0\0\0\35\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\373\373\373\377\234\233"
+  "\234\377\324\324\324\377\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\231"
+  "GGG\361\244\244\244\365\0\0\0\242\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\31\0\0\0\0\0\0\0\0\0\0\0\377\221\221"
+  "\221\377===\377===\377\36\36\36\377\77\77\77\377\0\0\0\377\0\0\0\0\0"
+  "\0\0\0\0\0\0\331___\367###\362\0\0\0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\377\221"
+  "\221\221\377===\377===\377\36\36\36\377BBB\377\0\0\0\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\342SSS\355\0\0\0\353\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\221\221\221\377===\377===\377\36\36\36\377BBB\377\0\0\0\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\330SSS\353\0\0\0\355\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\221\221\221\377===\377===\377\36\36\36\377BBB\377\0\0\0\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\262'''\332\"\"\"\367\0\0\0<\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\221\221\221\377===\377===\377\36\36\36\377BBB\377\0\0\0\377"
+  "\0\0\0\0\0\0\0\0\0\0\0D\0\0\0\315UUU\362\0\0\0\313\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\221\221\221\377===\377===\377\36\36\36\377EEE\377\0\0\0"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\241LLL\322FFF\336\0\0\0\234\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377AAA\377ddd\377%%%\377,,,\377<<<\377\0\0\0\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\35\0\0\0\236XXX\257FFF\273\0\0\0q\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\25\25\25\377\7\7\7\377(((\377\0\0\0\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0""9\0\0\0\205ZZZ\233\0\0\0\236\0\0\0b\0\0"
+  "\0\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377+++\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0\0cXXX{\0\0\0{\0\0\0""3\0\0\0%\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\324"
+  "+++\324\0\0\0\324\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0""7\0\0\0T\0\0\0_\0\0\0^\0\0\0#\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\252+++\252\0\0\0\252"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\13\0\0\0@\0\0\0F\0\0\0J\0\0\0""2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\177+++\177\0\0\0\177\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""1"
+  "\0\0\0:\7\7\7@\0\0\0,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0U+++U\0\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\27\0\0\0/\0\0\0""2\10\10\10""5\0"
+  "\0\0+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0*+++*\0\0\0*\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\23\0\0\0""0\0\0\0-\14\14\14-\0\0\0+\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_mail)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_mail[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_mail[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\2"
+  "\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0"
+  "\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0m\0"
+  "\0\0\10\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\377SSS\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\376\376\376\377"
+  "\375\375\375\377\374\374\374\377\373\373\373\377\371\371\371\377\370"
+  "\370\370\377\367\367\367\377\366\366\366\377\365\365\365\377\364\364"
+  "\364\377\343\343\343\377SSS\377\0\0\0\377\0\0\0\31\0\0\0\10\0\0\0\1\0"
+  "\0\0\0\0\0\0\2\0\0\0\377\356\356\356\377OOO\377\377\377\377\377\365\365"
+  "\365\377\364\364\364\377\363\363\363\377\362\362\362\377\362\362\362"
+  "\377\361\361\361\377\360\360\360\377\360\360\360\377\357\357\357\377"
+  "\356\356\356\377\355\355\355\377\343\343\343\377OOO\377\256\256\256\377"
+  "\0\0\0\377\0\0\0(\0\0\0\17\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377"
+  "\377\377\344\344\344\377CCC\377\375\375\375\377\363\363\363\377\362\362"
+  "\362\377\362\362\362\377\361\361\361\377\360\360\360\377\357\357\357"
+  "\377\356\356\356\377\356\356\356\377\355\355\355\377\343\343\343\377"
+  "OOO\377\254\254\254\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0"
+  "\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\365\365\365\377\344\344"
+  "\344\377OOO\377\373\373\373\377\361\361\361\377\360\360\360\377\360\360"
+  "\360\377\357\357\357\377\356\356\356\377\355\355\355\377\355\355\355"
+  "\377\343\343\343\377CCC\377\240\240\240\377\324\324\324\377\310\310\310"
+  "\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377"
+  "\377\377\377\373\373\373\377\365\365\365\377\344\344\344\377CCC\377\370"
+  "\370\370\377\360\360\360\377\357\357\357\377\356\356\356\377\355\355"
+  "\355\377\354\354\354\377\343\343\343\377OOO\377\225\225\225\377\324\324"
+  "\324\377\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0"
+  "\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\365\365\365\377\365"
+  "\365\365\377\365\365\365\377\344\344\344\377>>>\377\365\365\365\377\356"
+  "\356\356\377\355\355\355\377\354\354\354\377\343\343\343\377MMM\377\201"
+  "\201\201\377\306\306\306\377\344\344\344\377\344\344\344\377\310\310"
+  "\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377"
+  "\377\377\377\377\373\373\373\377\365\365\365\377\365\365\365\377\344"
+  "\344\344\377jjj\377CCC\377\363\363\363\377\354\354\354\377\343\343\343"
+  "\377OOO\377jjj\377\306\306\306\377\306\306\306\377\365\365\365\377\344"
+  "\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0"
+  "\0\0\0\0\2\0\0\0\377\377\377\377\377\365\365\365\377\365\365\365\377"
+  "\344\344\344\377ccc\377\377\377\377\377\271\271\271\377OOO\377\360\360"
+  "\360\377OOO\377\225\225\225\377\306\306\306\377sss\377\306\306\306\377"
+  "\365\365\365\377\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0"
+  "\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\373\373\373\377"
+  "\344\344\344\377ccc\377\377\377\377\377\365\365\365\377\344\344\344\377"
+  "\324\324\324\377OOO\377\254\254\254\377\306\306\306\377\344\344\344\377"
+  "\344\344\344\377|||\377\344\344\344\377\344\344\344\377\310\310\310\377"
+  "\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377"
+  "\377\377\344\344\344\377sss\377\377\377\377\377\365\365\365\377\365\365"
+  "\365\377\365\365\365\377\365\365\365\377\344\344\344\377\344\344\344"
+  "\377\365\365\365\377\365\365\365\377\365\365\365\377\344\344\344\377"
+  "|||\377\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0"
+  "\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377|||\377\377\377\377\377"
+  "\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\344"
+  "\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344"
+  "\344\377\344\344\344\377\344\344\344\377\344\344\344\377|||\377\310\310"
+  "\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377"
+  "sss\377\274\274\274\377\274\274\274\377\274\274\274\377\274\274\274\377"
+  "\274\274\274\377\274\274\274\377\274\274\274\377\274\274\274\377\274"
+  "\274\274\377\274\274\274\377\274\274\274\377\274\274\274\377\274\274"
+  "\274\377\274\274\274\377\274\274\274\377ccc\377\0\0\0\377\0\0\0-\0\0"
+  "\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0m\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\207\0\0\0(\0\0\0\17\0\0\0\2\0\0\0\0\0\0\0\1\0\0\0\10\0\0\0\31"
+  "\0\0\0(\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0"
+  "-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0(\0\0\0\31\0\0\0\10"
+  "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\10\0\0\0\16\0\0\0\21\0\0\0\21"
+  "\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0"
+  "\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\16\0\0\0\10\0"
+  "\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0"
+  "\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0"
+  "\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_mail_compose)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_mail_compose[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_mail_compose[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\321\257"
+  "a\377\361\343\254\377\373\251\17\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\265\265"
+  "\265\377\240k\11\377\361\343\254\377\373\251\17\377\201`\0\377\0\0\0"
+  "\377\340\340\340\377\301\301\301\377\0\0\0\377\0\0\0D\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\364\364\364\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\375\375\375\377\375\375\375\377\0\0\0\377\346\303p\377\361\323\207\377"
+  "\325\217\14\377\0\0\0\377\262\262\262\377\303\303\303\377\373\373\373"
+  "\377\250\250\250\377\0\0\0\377\0\0\0V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\366\366\366\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\375\375\375\377\375\375\375\377\375\375\375\377\263\263"
+  "\263\377\240k\11\377\361\343\254\377\373\251\17\377\201`\0\377\0\0\0"
+  "\377\372\372\372\377\255\255\255\377vvv\377]]]\377@@@\377\0\0\0\377\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\366\366\366\377\377"
+  "\377\377\377\373\373\373\377\373\373\373\377\373\373\373\377\373\373"
+  "\373\377\370\370\370\377\0\0\0\377\346\303p\377\361\320~\377\325\217"
+  "\14\377\0\0\0\377\254\254\254\377\370\370\366\377\342\342\342\377\205"
+  "\205\205\377KKI\377\26\26\26\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\364\364\364\377\375\375\375\377\375\375\375"
+  "\377\373\373\373\377\373\373\373\377\373\373\372\377}}}\377\240k\11\377"
+  "\361\343\254\377\373\251\17\377\201`\0\377\0\0\0\377\364\364\364\377"
+  "\362\362\362\377\360\360\360\377\357\357\357\377\325\325\325\377\255"
+  "\255\255\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\362\362\362\377\371\371\371\377\366\366\366\377\366\366\366\377"
+  "\366\366\363\377\363\363\363\377\0\0\0\377\346\303p\377\361\320~\377"
+  "\325\217\14\377\0\0\0\377\207\207\206\377\345\345\345\377\342\342\342"
+  "\377\337\337\337\377\353\353\353\377\342\342\342\377\301\301\301\377"
+  "\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\360\360"
+  "\360\377\370\370\370\377\370\370\370\377\370\370\370\377\370\370\366"
+  "\377\256\256\256\377{S\7\377\361\343\254\377\373\251\17\377\201`\0\377"
+  "\0\0\0\377\355\355\355\377\353\353\353\377\353\353\351\377\351\351\347"
+  "\377\351\351\347\377\340\340\336\377\277\277\277\377\0\0\0\377\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\357\357\357\377\363\363"
+  "\363\377\360\360\360\377\360\360\355\377\355\355\355\377\0\0\0\377\346"
+  "\303p\377\361\322\204\377\312\207\13\377\0\0\0\377\236\236\234\377\334"
+  "\334\331\377\331\331\331\377\331\331\326\377\326\326\324\377\345\345"
+  "\344\377\331\331\327\377\272\272\272\377\0\0\0\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\355\355\355\377\364\364\364\377\364"
+  "\364\364\377\362\362\362\377\252\252\252\377\240k\11\377\361\343\254"
+  "\377\373\251\17\377\201`\0\377\0\0\0\377\347\347\345\377\345\345\344"
+  "\377\345\345\344\377\344\344\342\377\340\340\336\377\342\342\340\377"
+  "\331\331\327\377\272\272\272\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\353\353\353\377\356\356\354\377\347\347\345"
+  "\377\345\345\345\377\0\0\0\377\346\303p\377\361\322\204\377\312\207\13"
+  "\377\0\0\0\377\227\227\226\377\324\324\321\377\342\342\340\377\340\340"
+  "\336\377\336\336\334\377\336\336\333\377\336\336\334\377\331\331\327"
+  "\377\275\275\274\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\347\347\347\377\357\357\355\377\353\353\353\377\246\246"
+  "\245\377\272|\12\377\373\251\17\377\373\251\17\377z[\0\377\0\0\0\377"
+  "\342\342\340\377\340\340\336\377\336\336\334\377\336\336\333\377\334"
+  "\334\331\377\333\333\331\377\333\333\331\377\325\325\323\377\274\274"
+  "\274\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\345\345\345\377\343\343\343\377\331\331\331\377\0\0\0\377\362\346\266"
+  "\377{{{\377pK\5\377\0\0\0\377ggd\377\313\313\307\377\311\311\307\377"
+  "\334\334\331\377\333\333\327\377\331\331\327\377\327\327\325\377\331"
+  "\331\327\377\327\327\323\377\264\264\264\377\0\0\0\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\342\342\340\377\345\345\344\377"
+  "\344\344\344\377\0\0\0\377\333\325\301\377~oW\377uX\0\377\0\0\0\377\334"
+  "\334\331\377\333\333\331\377\333\333\327\377\331\331\325\377\327\327"
+  "\323\377\325\325\323\377\325\325\321\377\327\327\323\377\320\320\316"
+  "\377\272\272\270\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\336\336\334\377\335\335\333\377\321\321\317\377\16\16\16"
+  "\377SSS\377\0\0\0\377\0\0\0\377\215\215\213\377\304\304\301\377\304\304"
+  "\277\377\301\301\274\377\325\325\321\377\325\325\321\377\323\323\320"
+  "\377\321\321\320\377\323\323\320\377\320\320\316\377\272\272\270\377"
+  "\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\334\334"
+  "\333\377\340\340\334\377\335\335\333\377\0\0\0\377\0\0\0\377\211\211"
+  "\207\377\311\311\306\377\315\315\312\377\320\320\315\377\316\316\313"
+  "\377\320\320\315\377\320\320\315\377\320\320\315\377\320\320\315\377"
+  "\317\317\314\377\320\320\315\377\320\320\314\377\266\266\266\377\0\0"
+  "\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\333\333\331"
+  "\377\324\324\320\377\303\303\300\377[[[\377\221\221\215\377\221\221\217"
+  "\377\237\237\235\377\257\257\254\377\271\271\266\377\276\276\273\377"
+  "\303\303\300\377\305\305\302\377\310\310\305\377\312\312\307\377\313"
+  "\313\310\377\314\314\311\377\314\314\310\377\262\262\262\377\0\0\0\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\322\322\320\377\322"
+  "\322\317\377\317\317\314\377\277\277\275\377\237\237\234\377\210\210"
+  "\206\377\207\207\205\377\214\214\212\377\225\225\223\377\234\234\232"
+  "\377\250\250\245\377\261\261\256\377\265\265\263\377\273\273\270\377"
+  "\276\276\273\377\277\277\274\377\302\302\276\377\262\262\262\377\0\0"
+  "\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\321\321\316"
+  "\377\320\320\314\377\314\314\311\377\317\317\314\377\303\303\300\377"
+  "\256\256\253\377\235\235\232\377\227\227\224\377\227\227\224\377\224"
+  "\224\221\377\232\232\227\377\237\237\234\377\243\243\240\377\250\250"
+  "\245\377\252\252\247\377\260\260\254\377\270\270\265\377\260\260\256"
+  "\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\322"
+  "\322\317\377\321\321\316\377\321\321\316\377\321\321\316\377\317\317"
+  "\315\377\313\313\310\377\276\276\274\377\264\264\260\377\254\254\250"
+  "\377\244\244\242\377\240\240\234\377\240\240\234\377\244\244\240\377"
+  "\244\244\242\377\250\250\246\377\253\253\247\377\262\262\256\377\244"
+  "\244\244\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\321\321\320\377\321\321\316\377\320\320\316\377\316\316\314\377"
+  "\316\316\312\377\316\316\312\377\314\314\310\377\306\306\302\377\274"
+  "\274\271\377\263\263\257\377\264\264\260\377\253\253\251\377\246\246"
+  "\243\377\240\240\235\377\246\246\243\377\252\252\247\377\254\254\251"
+  "\377\241\241\241\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\261\261\257\377\264\264\263\377\264\264\261\377\264\264"
+  "\261\377\264\264\261\377\263\263\261\377\263\263\261\377\262\262\256"
+  "\377\256\256\252\377\247\247\244\377\242\242\240\377\245\245\241\377"
+  "\245\245\241\377\231\231\227\377\222\222\220\377\224\224\220\377\235"
+  "\235\233\377\205\205\203\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0r\0\0"
+  "\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_mail_forward)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_mail_forward[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_mail_forward[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1"
+  "\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0"
+  "\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2"
+  "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0m\0\0\0\10\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\377"
+  "SSS\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\376\376\376\377\375\375\375\377\374\374\374\377\373\373\373\377\371"
+  "\371\371\377\370\370\370\377\367\367\367\377\366\366\366\377\365\365"
+  "\365\377\364\364\364\377\343\343\343\377SSS\377\0\0\0\377\0\0\0\31\0"
+  "\0\0\10\0\0\0\1\0\0\0\0\0\0\0\2\0\0\0\377\356\356\356\377OOO\377\377"
+  "\377\377\377\365\365\365\377\364\364\364\377\363\363\363\377\362\362"
+  "\362\377\362\362\362\377\361\361\361\377\360\360\360\377\360\360\360"
+  "\377\357\357\357\377\356\356\356\377\355\355\355\377\343\343\343\377"
+  "OOO\377\256\256\256\377\0\0\0\377\0\0\0(\0\0\0\17\0\0\0\2\0\0\0\0\0\0"
+  "\0\2\0\0\0\377\377\377\377\377\344\344\344\377CCC\377\375\375\375\377"
+  "\363\363\363\377\362\362\362\377\362\362\362\377\361\361\361\377\360"
+  "\360\360\377\357\357\357\377\356\356\356\377\356\356\356\377\355\355"
+  "\355\377\343\343\343\377OOO\377\254\254\254\377\310\310\310\377\0\0\0"
+  "\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377"
+  "\365\365\365\377\344\344\344\377OOO\377\373\373\373\377\361\361\361\377"
+  "\360\360\360\377\360\360\360\377\357\357\357\377\356\356\356\377\355"
+  "\355\355\377\355\355\355\377\343\343\343\377CCC\377\240\240\240\377\324"
+  "\324\324\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0"
+  "\0\0\0\0\2\0\0\0\377\377\377\377\377\373\373\373\377\365\365\365\377"
+  "\344\344\344\377CCC\377\370\370\370\377\360\360\360\377\357\357\357\377"
+  "\356\356\356\377\355\355\355\377\354\354\354\377\343\343\343\377OOO\377"
+  "\225\225\225\377\324\324\324\377\344\344\344\377\310\310\310\377\0\0"
+  "\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377"
+  "\377\365\365\365\377\365\365\365\377\365\365\365\377\344\344\344\377"
+  ">>>\377\365\365\365\377\356\356\356\377\355\355\355\377\354\354\354\377"
+  "\343\343\343\377MMM\377\201\201\201\377\306\306\306\377\344\344\344\377"
+  "\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0"
+  "\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\373\373\373\377\365\365\365"
+  "\377\365\365\365\377\344\344\344\377jjj\377CCC\377\363\363\363\377\354"
+  "\354\354\377\343\343\343\377OOO\377jjj\377\306\306\306\377\306\306\306"
+  "\377\365\365\365\377\0\0\0\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0"
+  "\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\365\365\365\377"
+  "\365\365\365\377\344\344\344\377ccc\377\377\377\377\377\271\271\271\377"
+  "OOO\377\360\360\360\377OOO\377\225\225\225\377\306\306\306\377sss\377"
+  "\306\306\306\377\365\365\365\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\373\373"
+  "\373\377\344\344\344\377ccc\377\377\377\377\377\365\365\365\377\344\344"
+  "\344\377\324\324\324\377OOO\377\254\254\254\377\306\306\306\377\344\344"
+  "\344\377\344\344\344\377|||\377\344\344\344\377\0\0\0\377[\210\262\377"
+  "\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377"
+  "\377\377\344\344\344\377sss\377\377\377\377\377\365\365\365\377\365\365"
+  "\365\377\365\365\365\377\365\365\365\377\344\344\344\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\236\270\321"
+  "\377P\200\255\377\0\0\0\377\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377"
+  "\377\377\377\377|||\377\377\377\377\377\344\344\344\377\344\344\344\377"
+  "\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\0\0"
+  "\0\377\265\311\334\377\257\305\332\377\262\307\333\377\266\312\335\377"
+  "\266\312\335\377\266\312\335\377\244\275\325\377\234\267\321\377P\200"
+  "\255\377\10\15\21\377\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377sss\377\274\274"
+  "\274\377\274\274\274\377\274\274\274\377\274\274\274\377\274\274\274"
+  "\377\274\274\274\377\274\274\274\377\274\274\274\377\0\0\0\377\233\266"
+  "\320\377\240\272\323\377\234\267\321\377\234\267\321\377\233\266\320"
+  "\377\232\265\317\377\240\272\323\377\234\267\321\377\227\263\316\377"
+  "_\213\264\377\0\0\0\377\0\0\0\0\0\0\0\2\0\0\0m\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\221\260\314\377\236\270\321\377\232\265\317\377\232\265\317"
+  "\377\233\266\320\377\234\267\321\377\234\267\321\377\234\267\321\377"
+  "\240\272\323\377\225\262\316\377Ly\243\377\0\0\0\377\0\0\0\1\0\0\0\10"
+  "\0\0\0\31\0\0\0(\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0"
+  "\0\377It\234\377\77e\210\377\77e\210\377\77e\210\377\77e\210\377\77e"
+  "\210\377\77e\210\377\77e\210\377\77e\210\377*C[\377\0\0\0\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\2\0\0\0\10\0\0\0\16\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21"
+  "\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\377Eo\226\3777Yx\3777Yx\3777Yx\377"
+  "7Yx\3777Yx\377\77e\210\377\77e\210\377*C[\377\0\0\0\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0"
+  "\0\0\2\0\0\0\2\0\0\0\2\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\77e\210\377*C[\377\0\0\0\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377*C[\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_mail_receive)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_mail_receive[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_mail_receive[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\311\333\307\377\311\332\307\377\311\332\307\377\201\232y\377"
+  "XuM\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\262\311\260\377\251\304\247\377\255\310\253"
+  "\377[yP\377MgD\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\273\320\271\377\256\307\254\377"
+  "\256\307\254\377[yP\377MgD\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\324\0\0\0\377\0\0\0\377\0\0\0\377\271\316\267"
+  "\377\256\307\254\377\252\307\250\377[yP\377MgD\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\315\336\313"
+  "\377\261\311\260\377\265\316\265\377\260\311\260\377\255\306\253\377"
+  "[yP\377[yP\377[yP\377MhD\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0"
+  "\0\0\2\0\0\0\2\0\0\0\377\315\336\313\377\264\313\262\377\263\312\261"
+  "\377\255\306\253\377[yP\377[yP\377MhD\377\0\0\0\377\0\0\0\2\0\0\0\2\0"
+  "\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "f\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\315\336"
+  "\313\377\252\307\250\377\260\307\256\377[yP\377MhD\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0m\0\0\0\10\0\0\0"
+  "\2\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\377SSS\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\376\376\376\377\0\0\0\377\315\336"
+  "\313\377\255\310\253\377TqJ\377\0\0\0\377\367\367\367\377\366\366\366"
+  "\377\365\365\365\377\364\364\364\377\343\343\343\377SSS\377\0\0\0\377"
+  "\0\0\0\31\0\0\0\10\0\0\0\1\0\0\0\0\0\0\0\2\0\0\0\377\356\356\356\377"
+  "OOO\377\377\377\377\377\365\365\365\377\364\364\364\377\363\363\363\377"
+  "\362\362\362\377\0\0\0\377\317\337\314\377\0\0\0\377\360\360\360\377"
+  "\357\357\357\377\356\356\356\377\355\355\355\377\343\343\343\377OOO\377"
+  "\256\256\256\377\0\0\0\377\0\0\0(\0\0\0\17\0\0\0\2\0\0\0\0\0\0\0\2\0"
+  "\0\0\377\377\377\377\377\344\344\344\377CCC\377\375\375\375\377\363\363"
+  "\363\377\362\362\362\377\362\362\362\377\361\361\361\377---\377\357\357"
+  "\357\377\356\356\356\377\356\356\356\377\355\355\355\377\343\343\343"
+  "\377OOO\377\254\254\254\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21"
+  "\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\365\365\365\377\344"
+  "\344\344\377OOO\377\373\373\373\377\361\361\361\377\360\360\360\377\360"
+  "\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377\355\355"
+  "\355\377\343\343\343\377CCC\377\240\240\240\377\324\324\324\377\310\310"
+  "\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377"
+  "\377\377\377\377\373\373\373\377\365\365\365\377\344\344\344\377CCC\377"
+  "\370\370\370\377\360\360\360\377\357\357\357\377\356\356\356\377\355"
+  "\355\355\377\354\354\354\377\343\343\343\377OOO\377\225\225\225\377\324"
+  "\324\324\377\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21"
+  "\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\365\365\365\377\365"
+  "\365\365\377\365\365\365\377\344\344\344\377>>>\377\365\365\365\377\356"
+  "\356\356\377\355\355\355\377\354\354\354\377\343\343\343\377MMM\377\201"
+  "\201\201\377\306\306\306\377\344\344\344\377\344\344\344\377\310\310"
+  "\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377"
+  "\377\377\377\377\373\373\373\377\365\365\365\377\365\365\365\377\344"
+  "\344\344\377jjj\377CCC\377\363\363\363\377\354\354\354\377\343\343\343"
+  "\377OOO\377jjj\377\306\306\306\377\306\306\306\377\365\365\365\377\344"
+  "\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0"
+  "\0\0\0\0\2\0\0\0\377\377\377\377\377\365\365\365\377\365\365\365\377"
+  "\344\344\344\377ccc\377\377\377\377\377\271\271\271\377OOO\377\360\360"
+  "\360\377OOO\377\225\225\225\377\306\306\306\377sss\377\306\306\306\377"
+  "\365\365\365\377\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0"
+  "\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\373\373\373\377"
+  "\344\344\344\377ccc\377\377\377\377\377\365\365\365\377\344\344\344\377"
+  "\324\324\324\377OOO\377\254\254\254\377\306\306\306\377\344\344\344\377"
+  "\344\344\344\377|||\377\344\344\344\377\344\344\344\377\310\310\310\377"
+  "\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377"
+  "\377\377\344\344\344\377sss\377\377\377\377\377\365\365\365\377\365\365"
+  "\365\377\365\365\365\377\365\365\365\377\344\344\344\377\344\344\344"
+  "\377\365\365\365\377\365\365\365\377\365\365\365\377\344\344\344\377"
+  "|||\377\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0"
+  "\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377|||\377\377\377\377\377"
+  "\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\344"
+  "\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344"
+  "\344\377\344\344\344\377\344\344\344\377\344\344\344\377|||\377\310\310"
+  "\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377"
+  "sss\377\274\274\274\377\274\274\274\377\274\274\274\377\274\274\274\377"
+  "\274\274\274\377\274\274\274\377\274\274\274\377\274\274\274\377\274"
+  "\274\274\377\274\274\274\377\274\274\274\377\274\274\274\377\274\274"
+  "\274\377\274\274\274\377\274\274\274\377ccc\377\0\0\0\377\0\0\0-\0\0"
+  "\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0m\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\207\0\0\0(\0\0\0\17\0\0\0\2\0\0\0\0\0\0\0\1\0\0\0\10\0\0\0\31"
+  "\0\0\0(\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0"
+  "-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0(\0\0\0\31\0\0\0\10"
+  "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\10\0\0\0\16\0\0\0\21\0\0\0\21"
+  "\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0"
+  "\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\16\0\0\0\10\0"
+  "\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0"
+  "\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0"
+  "\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0"
+  "\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_mail_reply)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_mail_reply[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_mail_reply[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0"
+  "\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2"
+  "\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0m\0\0\0\10\0\0\0\2\0\0\0\0\0\0\0\0"
+  "\0\0\0\1\0\0\0\377SSS\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\376\376\376\377\375\375\375\377\374\374\374\377"
+  "\373\373\373\377\371\371\371\377\370\370\370\377\367\367\367\377\366"
+  "\366\366\377\365\365\365\377\364\364\364\377\343\343\343\377SSS\377\0"
+  "\0\0\377\0\0\0\31\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\377\356\356"
+  "\356\377OOO\377\377\377\377\377\365\365\365\377\364\364\364\377\363\363"
+  "\363\377\362\362\362\377\362\362\362\377\361\361\361\377\360\360\360"
+  "\377\360\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377"
+  "\343\343\343\377OOO\377\256\256\256\377\0\0\0\377\0\0\0(\0\0\0\17\0\0"
+  "\0\0\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\344\344\344\377CCC\377"
+  "\375\375\375\377\363\363\363\377\362\362\362\377\362\362\362\377\361"
+  "\361\361\377\360\360\360\377\357\357\357\377\356\356\356\377\356\356"
+  "\356\377\355\355\355\377\343\343\343\377OOO\377\254\254\254\377\310\310"
+  "\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\377"
+  "\377\377\377\377\365\365\365\377\344\344\344\377OOO\377\373\373\373\377"
+  "\361\361\361\377\360\360\360\377\360\360\360\377\357\357\357\377\356"
+  "\356\356\377\355\355\355\377\355\355\355\377\343\343\343\377CCC\377\240"
+  "\240\240\377\324\324\324\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21"
+  "\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\373\373\373\377\365"
+  "\365\365\377\344\344\344\377CCC\377\370\370\370\377\360\360\360\377\357"
+  "\357\357\377\356\356\356\377\355\355\355\377\354\354\354\377\343\343"
+  "\343\377OOO\377\225\225\225\377\324\324\324\377\344\344\344\377\310\310"
+  "\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\377"
+  "\377\377\377\377\365\365\365\377\365\365\365\377\365\365\365\377\344"
+  "\344\344\377>>>\377\365\365\365\377\356\356\356\377\355\355\355\377\354"
+  "\354\354\377\343\343\343\377MMM\377\201\201\201\377\306\306\306\377\344"
+  "\344\344\377\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21"
+  "\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\373\373\373\377=\32"
+  "\23\377\365\365\365\377\344\344\344\377jjj\377CCC\377\363\363\363\377"
+  "\354\354\354\377\343\343\343\377OOO\377jjj\377\306\306\306\377\306\306"
+  "\306\377\365\365\365\377\344\344\344\377\310\310\310\377\0\0\0\377\0"
+  "\0\0-\0\0\0\21\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\0\0"
+  "\0\377\0\0\0\377\344\344\344\377ccc\377\377\377\377\377\271\271\271\377"
+  "OOO\377\360\360\360\377OOO\377\225\225\225\377\306\306\306\377sss\377"
+  "\306\306\306\377\365\365\365\377\344\344\344\377\310\310\310\377\0\0"
+  "\0\377\0\0\0-\0\0\0\21\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\377\0\0\0\377\352"
+  "\300\272\377\0\0\0\377ccc\377\377\377\377\377\365\365\365\377\344\344"
+  "\344\377\324\324\324\377OOO\377\254\254\254\377\306\306\306\377\344\344"
+  "\344\377\344\344\344\377|||\377\344\344\344\377\344\344\344\377\310\310"
+  "\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\377"
+  "\352\300\272\377\337\236\225\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\344\344\344\377\365\365\365\377\365"
+  "\365\365\377\365\365\365\377\344\344\344\377|||\377\344\344\344\377\310"
+  "\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\0\0\0\0\0\0\0\0\377\352"
+  "\300\272\377\340\241\230\377\341\245\235\377\342\247\236\377\343\253"
+  "\243\377\342\247\236\377\343\252\242\377\337\236\225\377\314bS\377\0"
+  "\0\0\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344"
+  "\377\344\344\344\377\344\344\344\377|||\377\310\310\310\377\0\0\0\377"
+  "\0\0\0-\0\0\0\21\0\0\0\0\0\0\0\377\352\300\272\377\335\227\215\377\337"
+  "\237\227\377\337\236\225\377\336\232\220\377\335\226\214\377\335\226"
+  "\214\377\336\232\220\377\335\224\212\377\261C4\377\0\0\0\377\274\274"
+  "\274\377\274\274\274\377\274\274\274\377\274\274\274\377\274\274\274"
+  "\377\274\274\274\377\274\274\274\377ccc\377\0\0\0\377\0\0\0-\0\0\0\21"
+  "C\31\23\377\352\302\274\377\336\232\220\377\337\234\222\377\335\231\217"
+  "\377\335\231\217\377\335\227\215\377\336\232\220\377\336\232\220\377"
+  "\336\232\220\377\336\232\220\377\265E5\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\207\0\0\0(\0\0\0\17\0\0\0\0\0\0\0\377e&\35\377\230:,\377\230:,\377"
+  "\230:,\377\230:,\377\230:,\377\230:,\377\230:,\377\230:,\377|/$\377\0"
+  "\0\0\377\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0"
+  "\0(\0\0\0\31\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\377e&\35\377\230:,\377\230"
+  ":,\377c%\35\377c%\35\377c%\35\377c%\35\377c%\35\377l)\37\377\0\0\0\377"
+  "\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0"
+  "\21\0\0\0\16\0\0\0\10\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377e&\35"
+  "\377\230:,\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0"
+  "\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377e&\35\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_mail_send)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_mail_send[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_mail_send[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0O\77\12\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\364\346\265\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\364\345"
+  "\263\377\355\326\204\377u_\20\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\364\345"
+  "\263\377\355\325\200\377\356\326\205\377\257\215\30\377u_\20\377\0\0"
+  "\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\364\345\263\377\357\331\214\377\356\330\213\377\355\325\202"
+  "\377\257\215\30\377\257\215\30\377u_\20\377\0\0\0\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\377\364\345\263\377\356\330\211\377"
+  "\357\332\222\377\356\330\211\377\355\325\202\377\257\215\30\377\257\215"
+  "\30\377\257\215\30\377u_\20\377\0\0\0\377\0\0\0\2\0\0\0\2\0\0\0\2\0\0"
+  "\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\333\223\377\355\326\204"
+  "\377\355\325\200\377\257\215\30\377s]\20\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0m\0\0\0\10\0\0\0\2\0\0\0\0"
+  "\0\0\0\0\0\0\0\1\0\0\0\377SSS\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\0\0\0\377\360\334\227\377\355\326\204\377"
+  "\355\326\204\377\257\215\30\377s]\20\377\0\0\0\377\366\366\366\377\365"
+  "\365\365\377\364\364\364\377\343\343\343\377SSS\377\0\0\0\377\0\0\0\31"
+  "\0\0\0\10\0\0\0\1\0\0\0\0\0\0\0\2\0\0\0\377\356\356\356\377OOO\377\377"
+  "\377\377\377\365\365\365\377\364\364\364\377\0\0\0\377\356\330\211\377"
+  "\355\323|\377\355\326\204\377\257\215\30\377s]\20\377\0\0\0\377\356\356"
+  "\356\377\355\355\355\377\343\343\343\377OOO\377\256\256\256\377\0\0\0"
+  "\377\0\0\0(\0\0\0\17\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377"
+  "\344\344\344\377CCC\377\375\375\375\377\363\363\363\377\0\0\0\377\344"
+  "\277=\377\313\244\34\377\321\250\34\377\220t\23\377|d\21\377\0\0\0\377"
+  "\355\355\355\377\343\343\343\377OOO\377\254\254\254\377\310\310\310\377"
+  "\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377"
+  "\377\377\365\365\365\377\344\344\344\377OOO\377\373\373\373\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\343"
+  "\343\343\377CCC\377\240\240\240\377\324\324\324\377\310\310\310\377\0"
+  "\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377"
+  "\377\373\373\373\377\365\365\365\377\344\344\344\377CCC\377\370\370\370"
+  "\377\360\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377"
+  "\354\354\354\377\343\343\343\377OOO\377\225\225\225\377\324\324\324\377"
+  "\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0"
+  "\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\365\365\365\377\365\365\365"
+  "\377\365\365\365\377\344\344\344\377>>>\377\365\365\365\377\356\356\356"
+  "\377\355\355\355\377\354\354\354\377\343\343\343\377MMM\377\201\201\201"
+  "\377\306\306\306\377\344\344\344\377\344\344\344\377\310\310\310\377"
+  "\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377"
+  "\377\377\373\373\373\377\365\365\365\377\365\365\365\377\344\344\344"
+  "\377jjj\377CCC\377\363\363\363\377\354\354\354\377\343\343\343\377OO"
+  "O\377jjj\377\306\306\306\377\306\306\306\377\365\365\365\377\344\344"
+  "\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0"
+  "\0\0\2\0\0\0\377\377\377\377\377\365\365\365\377\365\365\365\377\344"
+  "\344\344\377ccc\377\377\377\377\377\271\271\271\377OOO\377\360\360\360"
+  "\377OOO\377\225\225\225\377\306\306\306\377sss\377\306\306\306\377\365"
+  "\365\365\377\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21"
+  "\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\373\373\373\377\344"
+  "\344\344\377ccc\377\377\377\377\377\365\365\365\377\344\344\344\377\324"
+  "\324\324\377OOO\377\254\254\254\377\306\306\306\377\344\344\344\377\344"
+  "\344\344\377|||\377\344\344\344\377\344\344\344\377\310\310\310\377\0"
+  "\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377"
+  "\377\344\344\344\377sss\377\377\377\377\377\365\365\365\377\365\365\365"
+  "\377\365\365\365\377\365\365\365\377\344\344\344\377\344\344\344\377"
+  "\365\365\365\377\365\365\365\377\365\365\365\377\344\344\344\377|||\377"
+  "\344\344\344\377\310\310\310\377\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0"
+  "\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377|||\377\377\377\377\377\344\344"
+  "\344\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344"
+  "\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377"
+  "\344\344\344\377\344\344\344\377\344\344\344\377|||\377\310\310\310\377"
+  "\0\0\0\377\0\0\0-\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\377sss\377\274"
+  "\274\274\377\274\274\274\377\274\274\274\377\274\274\274\377\274\274"
+  "\274\377\274\274\274\377\274\274\274\377\274\274\274\377\274\274\274"
+  "\377\274\274\274\377\274\274\274\377\274\274\274\377\274\274\274\377"
+  "\274\274\274\377\274\274\274\377ccc\377\0\0\0\377\0\0\0-\0\0\0\21\0\0"
+  "\0\2\0\0\0\0\0\0\0\2\0\0\0m\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\207"
+  "\0\0\0(\0\0\0\17\0\0\0\2\0\0\0\0\0\0\0\1\0\0\0\10\0\0\0\31\0\0\0(\0\0"
+  "\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0"
+  "\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0-\0\0\0(\0\0\0\31\0\0\0\10\0\0\0\1\0"
+  "\0\0\0\0\0\0\0\0\0\0\2\0\0\0\10\0\0\0\16\0\0\0\21\0\0\0\21\0\0\0\21\0"
+  "\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21"
+  "\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\21\0\0\0\16\0\0\0\10\0\0\0\2\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0"
+  "\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0"
+  "\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_menu_about)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_menu_about[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_menu_about[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (1024) */
+  "\0\0\4\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (64) */
+  "\0\0\0@"
+  /* width (16) */
+  "\0\0\0\20"
+  /* height (16) */
+  "\0\0\0\20"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\"\10\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0LN\23l\0\0\0\377\25\26\6#\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\11\0\0\0\377\356\366>\377\0\0\0\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\21\4\7dg\32"
+  "x\0\0\0\377\0\0\0\377\352\361=\377\360\370\77\377\313\3225\370\0\0\0"
+  "\377\0\0\0\377JL\23k\0\0\0\0\20\21\4\0dg\32\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\34\35\7\0\0\0\0\377\360\370\77\377\360\370\77\377\360\370\77\377\360"
+  "\370\77\377\360\370\77\377\360\370\77\377\351\360=\377\0\0\0\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\37\37\10%\0\0\0"
+  "\377\360\370\77\377\360\370\77\377\360\370\77\377\360\370\77\377\345"
+  "\354<\377\0\0\0\377\5\5\1\7\0\0\0\0\0\0\0\0\37\37\10\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\350\360=\377\360\370\77\377\360"
+  "\370\77\377\360\370\77\377\253\260-\372\0\0\0\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\360\370"
+  "\77\377\354\363>\377\0\0\0\377\357\367\77\377\316\3266\377\0\0\0\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\264\272/\363\0\0\0\377\30\30\6\77\0\0\0\377\315\3245\375"
+  "\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\36\37\10g\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\26\27\5F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_menu_blank)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_menu_blank[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_menu_blank[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (1024) */
+  "\0\0\4\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (64) */
+  "\0\0\0@"
+  /* width (16) */
+  "\0\0\0\20"
+  /* height (16) */
+  "\0\0\0\20"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_scores)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_scores[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_scores[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\4\0\0\0\4\0\0"
+  "\0\3\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\215\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\227\0\0\0\22\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\2\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\341\341\341\377\0\0\0\377\0\0\0""2\0\0\0\22\0\0\0\2\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\377\377\377\377\377\353"
+  "\353\353\377\0\0\0\377\355\355\355\377\322\322\322\377\0\0\0\377\0\0"
+  "\0L\0\0\0\34\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0"
+  "\0\377\377\377\377\377\0\0\0\377\0\0\0\377\356\356\356\377\322\322\322"
+  "\377\0\0\0\377\0\0\0T\0\0\0\40\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\3\0"
+  "\0\0\4\0\0\0\10\0\0\0\377\377\377\377\377\355\355\355\377\0\0\0\377\357"
+  "\357\357\377\323\323\323\377\0\0\0\377\0\0\0U\0\0\0\40\0\0\0\4\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\215\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\377"
+  "\377\356\356\356\377\0\0\0\377\360\360\360\377\324\324\324\377\0\0\0"
+  "\377\0\0\0W\0\0\0$\0\0\0\10\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\325\325\325\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\205\0\0\0\20\0\0\0\5\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\377\377\377\377\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\355\355\355\377\356\356\356\377\357\357\357\377\361\361"
+  "\361\377\362\362\362\377\363\363\363\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377\0\0\0"
+  "1\0\0\0\21\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\377\377\377"
+  "\377\377\353\353\353\377\354\354\354\377\0\0\0\377\356\356\356\377\357"
+  "\357\357\377\360\360\360\377\361\361\361\377\363\363\363\377\364\364"
+  "\364\377\365\365\365\377\0\0\0\377\0\0\0\377\0\0\0\377\333\333\333\377"
+  "\0\0\0\377\0\0\0K\0\0\0\34\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0"
+  "\0\0\377\377\377\377\377\0\0\0\377\0\0\0\377\0\0\0\377\357\357\357\377"
+  "\360\360\360\377\361\361\361\377\362\362\362\377\363\363\363\377\365"
+  "\365\365\377\366\366\366\377\367\367\367\377\370\370\370\377\0\0\0\377"
+  "\334\334\334\377\0\0\0\377\0\0\0T\0\0\0\40\0\0\0\4\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\4\0\0\0\377\377\377\377\377\0\0\0\377\356\356\356\377\357"
+  "\357\357\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363"
+  "\363\377\364\364\364\377\365\365\365\377\367\367\367\377\370\370\370"
+  "\377\0\0\0\377\0\0\0\377\335\335\335\377\0\0\0\377\0\0\0U\0\0\0\40\0"
+  "\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\377\377\377\377\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\361\361\361\377\362\362\362\377\363\363\363"
+  "\377\364\364\364\377\365\365\365\377\366\366\366\377\367\367\367\377"
+  "\371\371\371\377\372\372\372\377\0\0\0\377\336\336\336\377\0\0\0\377"
+  "\0\0\0U\0\0\0\40\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\377\377"
+  "\377\377\377\357\357\357\377\360\360\360\377\361\361\361\377\362\362"
+  "\362\377\363\363\363\377\364\364\364\377\365\365\365\377\366\366\366"
+  "\377\367\367\367\377\370\370\370\377\0\0\0\377\0\0\0\377\0\0\0\377\337"
+  "\337\337\377\0\0\0\377\0\0\0U\0\0\0\40\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\4\0\0\0\377\341\341\341\377\323\323\323\377\324\324\324\377"
+  "\325\325\325\377\326\326\326\377\327\327\327\377\330\330\330\377\331"
+  "\331\331\377\331\331\331\377\332\332\332\377\333\333\333\377\334\334"
+  "\334\377\335\335\335\377\337\337\337\377\340\340\340\377\0\0\0\377\0"
+  "\0\0T\0\0\0\40\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\254\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\273\0\0\0L\0\0\0\34\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\2\0\0\0\23\0\0\0""5\0\0\0M\0\0\0T\0\0\0U\0\0\0U\0\0\0U\0\0\0U"
+  "\0\0\0U\0\0\0U\0\0\0U\0\0\0U\0\0\0U\0\0\0U\0\0\0U\0\0\0T\0\0\0L\0\0\0"
+  "2\0\0\0\22\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\23\0"
+  "\0\0\35\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40"
+  "\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\37\0\0\0\34\0\0\0"
+  "\22\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0"
+  "\0\0\3\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0"
+  "\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_mic)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_mic[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_mic[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0<\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0<\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<RRR\377\332"
+  "\332\333\377\372\372\373\377\361\361\363\377\370\370\371\377\335\334"
+  "\335\377\0\0\0\377\0\0\0E\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\332\331\332\377\363\362\365\377\326\325\334\377\350"
+  "\350\353\377\267\265\275\377\324\322\327\377ifl\377\0\0\0\377\0\0\0\13"
+  "\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\372\372\373\377"
+  "\334\334\342\377\354\353\356\377\301\277\307\377\330\326\333\377\220"
+  "\217\226\377\214\212\217\377\0\0\0\377\0\0\0\26\0\0\0\4\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\363\361\364\377\357\357\362\377\312"
+  "\307\321\377\337\336\343\377\235\234\244\377\275\273\301\377CBF\377\0"
+  "\0\0\377\0\0\0\31\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0\0]\0\0\0\1\0\0\0\377"
+  "\372\372\372\377\324\322\331\377\350\346\353\377\261\260\272\377\311"
+  "\307\316\377tqz\377qpv\377\0\0\0\377\0\0\0\31\0\0\0_\0\0\0J\0\0\0\1\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "]\0\0\0\377\0\0\0\377\0\0\0\377\361\360\363\377\355\354\360\377\303\301"
+  "\312\377\330\326\335\377\214\211\225\377\250\246\257\377226\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0b\0\0\0\7\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\377\0\0\0\26\0\0\0\377"
+  "\371\371\372\377\317\316\326\377\344\342\347\377\250\247\261\377\303"
+  "\301\310\377ebl\377aae\377\0\0\0\377\0\0\0\34\0\0\0\377\0\0\0\27\0\0"
+  "\0\12\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\0\0\0\25\0\0\0\377\360\356\361\377\353\352\356\377"
+  "\276\273\306\377\325\324\332\377\204\200\214\377\236\235\246\377-,0\377"
+  "\0\0\0\377\0\0\0\32\0\0\0\377\0\0\0\25\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\24"
+  "\0\0\0\377\370\370\371\377\312\307\321\377\337\336\342\377\234\232\244"
+  "\377\270\266\276\377YW_\377][a\377\0\0\0\377\0\0\0\31\0\0\0\377\0\0\0"
+  "\24\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\0\0\0\24\0\0\0\377\354\352\355\377\343\342\346"
+  "\377\250\247\260\377\307\305\314\377rqx\377\222\220\231\377(&*\377\0"
+  "\0\0\377\0\0\0\31\0\0\0\377\0\0\0\24\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\24\0"
+  "\0\0\377\350\347\352\377\265\263\272\377\314\314\322\377\205\204\212"
+  "\377\245\244\253\377JIO\377MLQ\377\0\0\0\377\0\0\0\31\0\0\0\377\0\0\0"
+  "\24\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\0\0\0\24\0\0\0C\0\0\0\377\206\204\210\37776"
+  ":\377aac\377$#&\377DDI\377\0\0\0\377\0\0\0\232\0\0\0\30\0\0\0\377\0\0"
+  "\0\24\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\24\0\0\0\6\0\0\0D\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\232\0\0\0\32\0\0\0\17\0\0\0\377"
+  "\0\0\0\24\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0k\0\0\0\206\0\0\0\6\0\0\0\3\0\0\0\13\0\0\0"
+  "\26\0\0\0{\0\0\0\32\0\0\0\31\0\0\0\27\0\0\0\17\0\0\0\200\0\0\0m\0\0\0"
+  "\22\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\2\0\0\0o\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0m\0\0\0\13\0"
+  "\0\0\13\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\13\0\0\0\22\0\0\0\24KKK\377"
+  "aaa\377\0\0\0\377\0\0\0\30\0\0\0\25\0\0\0\24\0\0\0\22\0\0\0\13\0\0\0"
+  "\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\4\0\0\0\5KKK\377\177\177"
+  "\177\377\0\0\0\377\0\0\0m\0\0\0;\0\0\0\6\0\0\0\5\0\0\0\2\0\0\0\33\0\0"
+  "\0]\0\0\0\34\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0KKK\377\177\177\177\377"
+  "\0\0\0\377\0\0\0\32\0\0\0\12\0\0\0L\0\0\0\2\0\0\0\0\0\0\0I\0\0\0\4\0"
+  "\0\0M\0\0\0\37\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""3\40\40\40\377hhh\377\0\0\0"
+  "\377\0\0\0G\0\0\0\7\0\0\0\2\0\0\0k\0\0\0]\0\0\0\2\0\0\0\5\0\0\0\3\0\0"
+  "\0l\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377gd[\377\0\0\0\377VRH\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0`\0\0\0"
+  "\2\0\0\0o\0\0\0\7\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\33\33\33\377\257\255"
+  "\251\377\205\202{\377wtl\377VRH\377VRH\377VRH\377VRH\377VRH\377VRH\377"
+  "VRH\377VRH\377VRH\377LI@\377;:2\377\40\37\32\377\0\0\0\377\0\0\0\14\0"
+  "\0\0\37\0\0\0\7\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\27\0\0\0\5\0\0\0K\0\0\0W\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\4\0\0\0\25\0\0\0\31\0\0\0\31\0\0\0\31\0\0\0\31\0\0\0\31\0\0\0\31\0"
+  "\0\0\31\0\0\0\31\0\0\0\31\0\0\0\31\0\0\0\31\0\0\0\31\0\0\0\31\0\0\0\31"
+  "\0\0\0\31\0\0\0\25\0\0\0\4\0\0\0\1\0\0\0\5"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_multiple_file)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_multiple_file[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_multiple_file[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (4096) */
+  "\0\0\20\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (128) */
+  "\0\0\0\200"
+  /* width (32) */
+  "\0\0\0\40"
+  /* height (32) */
+  "\0\0\0\40"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\33\0\0\0\14\0\0\0\2\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\340\340\340\377"
+  "\301\301\301\377\0\0\0\377\0\0\0+\0\0\0\16\0\0\0\3\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0-\0"
+  "\0\0\16\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\340\340\340\377\301\301\301\377\0\0\0\377\0\0\0"
+  "-\0\0\0\16\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\375\375\375\377\373\373\373\377"
+  "\372\372\371\377\303\303\303\377\373\373\373\377\250\250\250\377\0\0"
+  "\0\377\0\0\0-\0\0\0\20\0\0\0\6\0\0\0\4\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\33\0\0\0\14\0\0\0\2\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\340\340\340\377\301\301"
+  "\301\377\0\0\0\377\0\0\0+\0\0\0\16\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\0\0\0\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\375\375\375\377\373\373\373\377\372"
+  "\372\371\377\303\303\303\377\373\373\373\377\250\250\250\377\0\0\0\377"
+  "\0\0\0-\0\0\0\16\0\0\0\3\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\0\0\0\377\377\377\377\377\377\377\377\377\321\321\321\377"
+  "\252\252\252\377\323\323\323\377\377\377\377\377\323\323\323\377\377"
+  "\377\377\377\252\252\252\377\252\252\252\377\375\375\375\377\320\320"
+  "\320\377\372\372\372\377\371\371\370\377\367\367\366\377\255\255\255"
+  "\377vvv\377]]]\377@@@\377\0\0\0\377\0\0\0+\0\0\0\14\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\375\375\375\377\374\374\374\377\0\0\0\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\376\376\376\377\374\374\374\377"
+  "\373\373\372\377\371\371\371\377\367\367\367\377\366\366\365\377\364"
+  "\364\364\377\342\342\342\377\205\205\205\377KKI\377\26\26\26\377\0\0"
+  "\0\377\0\0\0N\0\0\0\33\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377\377"
+  "\377\377\377\376\376\376\377\374\374\374\377\373\373\372\377\371\371"
+  "\371\377\0\0\0\377\377\377\377\377\377\377\377\377\252\252\252\377\271"
+  "\271\271\377\323\323\323\377\323\323\323\377\376\376\376\377\250\250"
+  "\250\377\236\236\236\377\235\235\235\377\245\245\244\377\366\366\366"
+  "\377\243\243\242\377\311\311\310\377\362\362\361\377\360\360\357\377"
+  "\356\356\355\377\355\355\353\377\235\235\235\377\0\0\0\377\0\0\0]\0\0"
+  "\0#\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377\377\373\373"
+  "\373\377\371\371\371\377\370\370\367\377\366\366\366\377\0\0\0\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\375\375\375\377\373\373\373\377\372\372\371\377\370\370\370"
+  "\377\367\367\366\377\365\365\364\377\364\364\363\377\362\362\361\377"
+  "\360\360\357\377\357\357\356\377\355\355\354\377\354\354\352\377\352"
+  "\352\350\377\244\244\243\377\0\0\0\377\0\0\0_\0\0\0$\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\0\0\0\377\377\377\377\377\370\370\370\377\367\367\366"
+  "\377\365\365\364\377\364\364\363\377\0\0\0\377\377\377\377\377\377\377"
+  "\377\377\252\252\252\377\321\321\321\377\374\374\374\377\316\316\316"
+  "\377\371\371\370\377\244\244\244\377\243\243\243\377\232\232\231\377"
+  "\257\257\256\377\361\361\360\377\237\237\236\377rrq\377\225\225\224\377"
+  "\223\223\223\377\351\351\347\377\347\347\346\377\244\244\244\377\0\0"
+  "\0\377\0\0\0_\0\0\0$\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377\377"
+  "\377\377\377\365\365\365\377\364\364\363\377\362\362\361\377\361\361"
+  "\360\377\0\0\0\377\377\377\377\377\376\376\376\377\374\374\374\377\373"
+  "\373\372\377\371\371\371\377\367\367\367\377\366\366\365\377\364\364"
+  "\364\377\363\363\362\377\361\361\360\377\360\360\356\377\356\356\355"
+  "\377\354\354\353\377\353\353\351\377\351\351\350\377\350\350\346\377"
+  "\346\346\344\377\345\345\343\377\242\242\242\377\0\0\0\377\0\0\0_\0\0"
+  "\0$\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377\377\363\363"
+  "\362\377\361\361\360\377\360\360\356\377\356\356\355\377\0\0\0\377\377"
+  "\377\377\377\373\373\373\377\264\264\264\377\263\263\263\377\366\366"
+  "\366\377\261\261\261\377\260\260\257\377\230\230\230\377\227\227\226"
+  "\377\356\356\355\377oon\377nnn\377nnm\377mml\377llk\377kkj\377\343\343"
+  "\341\377\342\342\340\377\242\242\242\377\0\0\0\377\0\0\0_\0\0\0$\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377\377\360\360\357"
+  "\377\356\356\355\377\355\355\353\377\353\353\352\377\0\0\0\377\377\377"
+  "\377\377\370\370\370\377\367\367\366\377\365\365\364\377\364\364\363"
+  "\377\362\362\361\377\360\360\357\377\357\357\356\377\355\355\354\377"
+  "\354\354\352\377nnm\377\207\226\245\377\206\226\244\377\205\225\243\377"
+  "\205\224\243\377jji\377\341\341\336\377\337\337\335\377\243\243\242\377"
+  "\0\0\0\377\0\0\0_\0\0\0$\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377"
+  "\377\377\377\377\355\355\354\377\354\354\352\377\352\352\350\377\351"
+  "\351\347\377\0\0\0\377\377\377\377\377\365\365\365\377\261\261\260\377"
+  "\230\230\230\377\307\307\306\377\305\305\304\377\356\356\354\377\303"
+  "\303\302\377\301\301\300\377\351\351\347\377lll\377\217\236\254\377\275"
+  "\270\225\377p|i\377\214\233\252\377iih\377\336\336\333\377\334\334\332"
+  "\377\243\243\242\377\0\0\0\377\0\0\0_\0\0\0$\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\0\0\0\377\377\377\377\377\352\352\351\377\351\351\347\377\347"
+  "\347\346\377\346\346\344\377\0\0\0\377\377\377\377\377\363\363\362\377"
+  "\361\361\360\377\360\360\356\377\356\356\355\377\354\354\353\377\353"
+  "\353\351\377\351\351\350\377\350\350\346\377\346\346\344\377kkj\377\226"
+  "\245\264\377\323\307\215\377\237\234d\377o\177w\377hhf\377\333\333\330"
+  "\377\332\332\327\377\240\240\237\377\0\0\0\377\0\0\0_\0\0\0$\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377\377\350\350\346\377"
+  "\346\346\344\377\345\345\343\377\343\343\341\377\0\0\0\377\377\377\377"
+  "\377\360\360\357\377\243\243\242\377\225\225\224\377\224\224\223\377"
+  "\251\251\250\377\232\232\231\377\247\247\246\377\275\275\273\377\343"
+  "\343\341\377jji\377\235\254\273\377\315\304\226\377fsW\377\233\252\271"
+  "\377ffe\377\330\330\325\377\327\327\324\377\242\242\241\377\0\0\0\377"
+  "\0\0\0_\0\0\0$\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377"
+  "\377\345\345\343\377\343\343\341\377\342\342\340\377\340\340\336\377"
+  "\0\0\0\377\377\377\377\377\355\355\354\377\354\354\352\377\352\352\350"
+  "\377\351\351\347\377\347\347\345\377\345\345\343\377\344\344\342\377"
+  "\342\342\340\377\341\341\336\377hhh\377\245\264\303\377\313\305\235\377"
+  "l}o\377o\200s\377eec\377\326\326\322\377\324\324\321\377\242\242\241"
+  "\377\0\0\0\377\0\0\0_\0\0\0$\0\0\0\0\0\0\0\377\377\377\377\377\0\0\0"
+  "\377\377\377\377\377\342\342\340\377\341\341\336\377\337\337\335\377"
+  "\336\336\333\377\0\0\0\377\377\377\377\377\352\352\351\377\233\233\232"
+  "\377\215\215\214\377\346\346\344\377\274\274\273\377\217\217\215\377"
+  "\216\216\214\377\271\271\266\377\336\336\333\377ggf\377gge\377ffd\377"
+  "eed\377ddc\377ddb\377\323\323\320\377\321\321\316\377\241\241\240\377"
+  "\0\0\0\377\0\0\0_\0\0\0$\0\0\0\0\0\0\0\377\320\320\320\377\0\0\0\377"
+  "\377\377\377\377\340\340\335\377\336\336\333\377\334\334\332\377\333"
+  "\333\330\377\0\0\0\377\377\377\377\377\350\350\346\377\346\346\344\377"
+  "\345\345\343\377\343\343\341\377\341\341\337\377\340\340\336\377\336"
+  "\336\334\377\335\335\332\377\333\333\330\377\332\332\327\377\330\330"
+  "\325\377\326\326\323\377\325\325\322\377\323\323\320\377\322\322\316"
+  "\377\320\320\315\377\317\317\313\377\240\240\237\377\0\0\0\377\0\0\0"
+  "_\0\0\0$\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\377\377\377\377\335\335"
+  "\332\377\333\333\330\377\332\332\327\377\330\330\325\377\0\0\0\377\377"
+  "\377\377\377\345\345\343\377\227\227\226\377\216\216\215\377\215\215"
+  "\214\377\214\214\212\377\335\335\333\377\222\222\220\377\236\236\233"
+  "\377\234\234\232\377\207\207\205\377\325\325\322\377\257\257\254\377"
+  "\230\230\226\377\213\213\210\377\253\253\247\377\315\315\312\377\314"
+  "\314\310\377\242\242\241\377\0\0\0\377\0\0\0_\0\0\0$\0\0\0\0\0\0\0\40"
+  "\0\0\0T\0\0\0\377\320\320\320\377\261\261\257\377\264\264\263\377\264"
+  "\264\261\377\240\240\235\377\0\0\0\377\377\377\377\377\342\342\340\377"
+  "\341\341\336\377\337\337\335\377\336\336\333\377\334\334\331\377\332"
+  "\332\330\377\331\331\326\377\327\327\324\377\326\326\322\377\324\324"
+  "\321\377\323\323\317\377\321\321\315\377\317\317\314\377\316\316\312"
+  "\377\314\314\310\377\314\314\307\377\314\314\307\377\242\242\240\377"
+  "\0\0\0\377\0\0\0_\0\0\0$\0\0\0\0\0\0\0\12\0\0\0\37\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\377\377\340"
+  "\340\335\377\224\224\222\377\266\266\264\377\333\333\330\377\235\235"
+  "\233\377\210\210\206\377\326\326\323\377\325\325\321\377\214\214\212"
+  "\377\217\217\215\377\203\203\200\377\316\316\312\377\224\224\221\377"
+  "\224\224\220\377\314\314\307\377\314\314\307\377\314\314\307\377\237"
+  "\237\237\377\0\0\0\377\0\0\0_\0\0\0$\0\0\0\0\0\0\0\2\0\0\0\10\0\0\0%"
+  "\0\0\0T\0\0\0j\0\0\0m\0\0\0m\0\0\0o\0\0\0\377\377\377\377\377\335\335"
+  "\332\377\333\333\330\377\332\332\327\377\330\330\325\377\326\326\323"
+  "\377\325\325\322\377\323\323\320\377\322\322\316\377\320\320\315\377"
+  "\317\317\313\377\315\315\311\377\314\314\307\377\314\314\307\377\314"
+  "\314\307\377\314\314\307\377\314\314\307\377\314\314\307\377\240\240"
+  "\237\377\0\0\0\377\0\0\0_\0\0\0$\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\13\0\0"
+  "\0\34\0\0\0&\0\0\0(\0\0\0(\0\0\0,\0\0\0\377\320\320\320\377\261\261\257"
+  "\377\264\264\263\377\264\264\261\377\240\240\235\377\240\240\235\377"
+  "\237\237\235\377\237\237\235\377\237\237\233\377\231\231\225\377\215"
+  "\215\211\377\213\213\211\377\213\213\211\377\213\213\211\377\211\211"
+  "\211\377\211\211\211\377\203\203\177\377\204\204\202\377]]\\\377\0\0"
+  "\0\377\0\0\0^\0\0\0$\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\4\0\0\0\6"
+  "\0\0\0\7\0\0\0\7\0\0\0\13\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\263\0\0\0T\0\0\0\37\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0!\0\0\0S\0\0"
+  "\0i\0\0\0m\0\0\0m\0\0\0m\0\0\0n\0\0\0n\0\0\0n\0\0\0n\0\0\0n\0\0\0n\0"
+  "\0\0n\0\0\0n\0\0\0n\0\0\0n\0\0\0n\0\0\0n\0\0\0n\0\0\0l\0\0\0`\0\0\0:"
+  "\0\0\0\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\1\0\0\0\12\0\0\0\34\0\0\0&\0\0\0(\0\0\0(\0\0\0(\0\0\0)\0\0"
+  "\0)\0\0\0)\0\0\0)\0\0\0)\0\0\0)\0\0\0)\0\0\0)\0\0\0)\0\0\0)\0\0\0)\0"
+  "\0\0)\0\0\0)\0\0\0(\0\0\0#\0\0\0\25\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\4\0\0\0"
+  "\6\0\0\0\7\0\0\0\7\0\0\0\7\0\0\0\7\0\0\0\7\0\0\0\7\0\0\0\7\0\0\0\7\0"
+  "\0\0\7\0\0\0\7\0\0\0\7\0\0\0\7\0\0\0\7\0\0\0\7\0\0\0\7\0\0\0\7\0\0\0"
+  "\7\0\0\0\6\0\0\0\4\0\0\0\1"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_not)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_not[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_not[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0b\0\0\0\260\0\0\0\342"
+  "\0\0\0\373\0\0\0\373\0\0\0\343\0\0\0\263\0\0\0j\0\0\0\13\0\0\0\5\0\0"
+  "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0b\0\0\0\341n\35\15\377\2670\25\377\315"
+  "4\27\377\3173\27\377\3152\26\377\310/\25\377\260(\22\377h\27\12\377\0"
+  "\0\0\345\0\0\0o\0\0\0\14\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\225K\24\11\377\3105\27\377"
+  "\3237\31\377\3215\30\377\3173\27\377\3151\26\377\3140\25\377\312.\25"
+  "\377\310,\24\377\306+\23\377\270'\21\377D\16\5\377\0\0\0\243\0\0\0\24"
+  "\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0"
+  "\0\225o\36\15\377\3238\31\377\3236\30\377\331_H\377\361\317\311\377\371"
+  "\364\363\377\371\371\371\377\364\353\352\377\350\273\265\377\325vj\377"
+  "\307\77-\377\302'\21\377\300%\21\377c\22\10\377\0\0\0\246\0\0\0\26\0"
+  "\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0bK\24\11\377\323"
+  "8\31\377\3226\30\377\353\261\246\377\372\372\372\377\372\372\372\377"
+  "\372\372\372\377\371\371\371\377\370\370\370\377\370\370\370\377\355"
+  "\324\320\377\277#\20\377\277#\20\377\276#\20\377\274!\17\377B\13\5\377"
+  "\0\0\0|\0\0\0\24\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\341\307"
+  "4\27\377\3226\30\377\353\261\246\377\373\373\373\377\372\372\372\377"
+  "\372\372\372\377\371\371\371\377\370\370\370\377\370\370\370\377\355"
+  "\324\320\377\277#\20\377\277#\20\377\277#\20\377\277#\20\377\272\37\16"
+  "\377\255\34\14\377\0\0\0\351\0\0\0(\0\0\0\14\0\0\0\1\0\0\0\0\0\0\0\0"
+  "\0\0\0bm\34\14\377\3225\30\377\326WA\377\372\372\372\377\372\372\372"
+  "\377\372\372\372\377\371\371\371\377\370\370\370\377\370\370\370\377"
+  "\355\324\320\377\277#\20\377\277#\20\377\277#\20\377\277#\20\377\277"
+  "#\20\377\303C6\377\266\34\14\377^\16\5\377\0\0\0\204\0\0\0\31\0\0\0\5"
+  "\0\0\0\0\0\0\0\1\0\0\0\260\266.\24\377\3173\27\377\341\232\220\377\372"
+  "\372\372\377\371\371\371\377\371\371\371\377\370\370\370\377\370\370"
+  "\370\377\355\324\320\377\277#\20\377\277#\20\377\277#\20\377\277#\20"
+  "\377\277#\20\377\347\306\302\377\335\247\242\377\264\32\13\377\233\25"
+  "\11\377\0\0\0\304\0\0\0'\0\0\0\13\0\0\0\1\0\0\0\2\0\0\0\342\3132\26\377"
+  "\3151\26\377\353\306\302\377\371\371\371\377\371\371\371\377\370\370"
+  "\370\377\367\367\367\377\355\324\320\377\277#\20\377\277#\20\377\277"
+  "#\20\377\277#\20\377\277#\20\377\347\306\302\377\362\362\362\377\347"
+  "\312\306\377\262\30\12\377\255\26\12\377\0\0\0\352\0\0\0""4\0\0\0\22"
+  "\0\0\0\2\0\0\0\3\0\0\0\373\3141\26\377\313/\25\377\361\337\335\377\371"
+  "\371\371\377\370\370\370\377\367\367\367\377\355\324\320\377\277#\20"
+  "\377\277#\20\377\277#\20\377\277#\20\377\277#\20\377\347\306\302\377"
+  "\362\362\362\377\361\361\361\377\355\343\342\377\260\26\12\377\256\24"
+  "\11\377\0\0\0\374\0\0\0<\0\0\0\26\0\0\0\3\0\0\0\3\0\0\0\373\312/\25\377"
+  "\311-\24\377\361\337\335\377\370\370\370\377\367\367\367\377\355\324"
+  "\320\377\277#\20\377\277#\20\377\277#\20\377\277#\20\377\277#\20\377"
+  "\347\306\302\377\362\362\362\377\361\361\361\377\361\361\361\377\351"
+  "\327\325\377\256\24\11\377\254\22\10\377\0\0\0\374\0\0\0A\0\0\0\30\0"
+  "\0\0\3\0\0\0\3\0\0\0\343\305,\23\377\307+\23\377\347\272\265\377\367"
+  "\367\367\377\355\324\320\377\277#\20\377\277#\20\377\277#\20\377\277"
+  "#\20\377\277#\20\377\347\306\302\377\362\362\362\377\361\361\361\377"
+  "\361\361\361\377\360\360\360\377\346\321\316\377\255\22\10\377\247\20"
+  "\7\377\0\0\0\353\0\0\0A\0\0\0\30\0\0\0\3\0\0\0\3\0\0\0\263\255%\20\377"
+  "\305)\22\377\335\226\215\377\352\310\304\377\277#\20\377\277#\20\377"
+  "\277#\20\377\277#\20\377\277#\20\377\347\306\302\377\362\362\362\377"
+  "\361\361\361\377\361\361\361\377\360\360\360\377\357\357\357\377\333"
+  "\254\250\377\253\20\7\377\223\14\5\377\0\0\0\310\0\0\0=\0\0\0\26\0\0"
+  "\0\3\0\0\0\2\0\0\0jf\25\11\377\302'\21\377\307A1\377\277#\20\377\277"
+  "#\20\377\277#\20\377\277#\20\377\277#\20\377\347\305\301\377\362\362"
+  "\362\377\361\361\361\377\360\360\360\377\360\360\360\377\357\357\357"
+  "\377\356\356\356\377\267:3\377\250\16\6\377V\6\2\377\0\0\0\222\0\0\0"
+  "4\0\0\0\22\0\0\0\2\0\0\0\1\0\0\0\13\0\0\0\345\264#\20\377\277#\20\377"
+  "\277#\20\377\277#\20\377\277#\20\377\277#\20\377\347\305\301\377\362"
+  "\362\362\377\361\361\361\377\360\360\360\377\360\360\360\377\357\357"
+  "\357\377\356\356\356\377\321\223\217\377\250\16\6\377\233\13\5\377\0"
+  "\0\0\353\0\0\0I\0\0\0'\0\0\0\13\0\0\0\1\0\0\0\0\0\0\0\5\0\0\0oC\14\5"
+  "\377\274!\17\377\273\40\16\377\277#\20\377\277#\20\377\344\273\266\377"
+  "\362\362\362\377\361\361\361\377\360\360\360\377\360\360\360\377\357"
+  "\357\357\377\355\355\355\377\321\223\217\377\247\15\6\377\245\13\5\377"
+  "9\3\1\377\0\0\0\224\0\0\0;\0\0\0\31\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\1\0"
+  "\0\0\14\0\0\0\243a\20\7\377\270\36\15\377\267\34\14\377\300=1\377\326"
+  "\212\201\377\337\255\246\377\344\303\276\377\354\343\341\377\346\321"
+  "\316\377\332\253\247\377\26780\377\247\15\5\377\244\13\5\377U\5\1\377"
+  "\0\0\0\267\0\0\0F\0\0\0(\0\0\0\14\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\4\0\0\0\24\0\0\0\246@\12\3\377\251\31\12\377\263\30\13\377\261\26"
+  "\12\377\257\25\11\377\255\23\10\377\253\21\10\377\252\20\7\377\250\16"
+  "\6\377\246\14\5\377\232\12\4\3779\3\1\377\0\0\0\267\0\0\0I\0\0\0/\0\0"
+  "\0\24\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0\26"
+  "\0\0\0|\0\0\0\351\\\13\5\377\230\22\10\377\252\23\10\377\253\21\7\377"
+  "\251\17\7\377\244\16\6\377\221\13\4\377U\5\2\377\0\0\0\353\0\0\0\224"
+  "\0\0\0F\0\0\0/\0\0\0\26\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0\24\0\0\0(\0\0\0\204\0\0\0\304\0\0\0"
+  "\352\0\0\0\374\0\0\0\374\0\0\0\353\0\0\0\310\0\0\0\222\0\0\0I\0\0\0;"
+  "\0\0\0(\0\0\0\24\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0\0\14\0\0\0\31\0\0\0'\0\0\0""4"
+  "\0\0\0<\0\0\0A\0\0\0A\0\0\0<\0\0\0""4\0\0\0'\0\0\0\31\0\0\0\14\0\0\0"
+  "\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\13\0\0\0\22\0\0\0\26\0\0"
+  "\0\30\0\0\0\30\0\0\0\26\0\0\0\22\0\0\0\13\0\0\0\5\0\0\0\1\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0\3\0\0"
+  "\0\3\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_table_borders)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_table_borders[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_table_borders[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\16\0\0\0\3\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\375\375\375\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\336\336\336\377\0\0"
+  "\0\377\0\0\0E\0\0\0\16\0\0\0\0\0\0\0\377\377\377\377\377\360\360\360"
+  "\377\360\360\360\377\360\360\360\377\360\360\360\377\360\360\360\377"
+  "\360\360\360\377\360\360\360\377\362\362\362\377nnn\377\363\363\363\377"
+  "\363\363\363\377\364\364\364\377\365\365\365\377\365\365\365\377\366"
+  "\366\366\377\366\366\366\377\367\367\367\377\346\346\346\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\360\360\360\377\360"
+  "\360\360\377\360\360\360\377\360\360\360\377\360\360\360\377\360\360"
+  "\360\377\360\360\360\377\362\362\362\377\362\362\362\377\363\363\363"
+  "\377\363\363\363\377\364\364\364\377\365\365\365\377\365\365\365\377"
+  "\366\366\366\377\366\366\366\377\367\367\367\377\346\346\346\377\0\0"
+  "\0\377\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\360\360\360"
+  "\377\360\360\360\377\360\360\360\377\360\360\360\377\360\360\360\377"
+  "\360\360\360\377\361\361\361\377\362\362\362\377jjj\377\363\363\363\377"
+  "\364\364\364\377\365\365\365\377\365\365\365\377\366\366\366\377\366"
+  "\366\366\377\367\367\367\377\367\367\367\377\347\347\347\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\360\360\360\377\360"
+  "\360\360\377\360\360\360\377\360\360\360\377\360\360\360\377\361\361"
+  "\361\377\362\362\362\377\363\363\363\377\363\363\363\377\364\364\364"
+  "\377\365\365\365\377\365\365\365\377\366\366\366\377\366\366\366\377"
+  "\367\367\367\377\367\367\367\377\370\370\370\377\350\350\350\377\0\0"
+  "\0\377\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\360\360\360"
+  "\377\360\360\360\377\360\360\360\377\360\360\360\377\361\361\361\377"
+  "\362\362\362\377\362\362\362\377\363\363\363\377kkk\377\365\365\365\377"
+  "\365\365\365\377\366\366\366\377\366\366\366\377\367\367\367\377\367"
+  "\367\367\377\370\370\370\377\371\371\371\377\350\350\350\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\360\360\360\377\360"
+  "\360\360\377\360\360\360\377\361\361\361\377\362\362\362\377\362\362"
+  "\362\377\363\363\363\377\364\364\364\377\365\365\365\377\365\365\365"
+  "\377\366\366\366\377\366\366\366\377\367\367\367\377\367\367\367\377"
+  "\370\370\370\377\371\371\371\377\371\371\371\377\351\351\351\377\0\0"
+  "\0\377\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\360\360\360"
+  "\377\360\360\360\377\361\361\361\377\362\362\362\377\362\362\362\377"
+  "\363\363\363\377\363\363\363\377\365\365\365\377kkk\377\366\366\366\377"
+  "\366\366\366\377\367\367\367\377\367\367\367\377\370\370\370\377\371"
+  "\371\371\377\371\371\371\377\372\372\372\377\351\351\351\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\361\361\361\377\361"
+  "\361\361\377\362\362\362\377\362\362\362\377\363\363\363\377\363\363"
+  "\363\377\364\364\364\377\365\365\365\377\366\366\366\377\366\366\366"
+  "\377\367\367\367\377\367\367\367\377\370\370\370\377\371\371\371\377"
+  "\371\371\371\377\372\372\372\377\372\372\372\377\352\352\352\377\0\0"
+  "\0\377\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\376\376\376\377kkk\377\362\362"
+  "\362\377jjj\377\363\363\363\377jjj\377\364\364\364\377kkk\377\366\366"
+  "\366\377lll\377\367\367\367\377lll\377\370\370\370\377mmm\377\371\371"
+  "\371\377mmm\377\372\372\372\377nnn\377\353\353\353\377\0\0\0\377\0\0"
+  "\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\362\362\362\377\362\362"
+  "\362\377\363\363\363\377\363\363\363\377\364\364\364\377\365\365\365"
+  "\377\365\365\365\377\366\366\366\377\367\367\367\377\367\367\367\377"
+  "\370\370\370\377\371\371\371\377\371\371\371\377\372\372\372\377\372"
+  "\372\372\377\373\373\373\377\374\374\374\377\353\353\353\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\363\363\363\377\363"
+  "\363\363\377\363\363\363\377\364\364\364\377\365\365\365\377\365\365"
+  "\365\377\366\366\366\377\367\367\367\377lll\377\370\370\370\377\371\371"
+  "\371\377\371\371\371\377\372\372\372\377\372\372\372\377\373\373\373"
+  "\377\374\374\374\377\374\374\374\377\354\354\354\377\0\0\0\377\0\0\0"
+  "R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\363\363\363\377\363\363"
+  "\363\377\364\364\364\377\365\365\365\377\365\365\365\377\366\366\366"
+  "\377\366\366\366\377\367\367\367\377\370\370\370\377\371\371\371\377"
+  "\371\371\371\377\372\372\372\377\372\372\372\377\373\373\373\377\374"
+  "\374\374\377\374\374\374\377\375\375\375\377\354\354\354\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\364\364\364\377\364"
+  "\364\364\377\365\365\365\377\365\365\365\377\366\366\366\377\366\366"
+  "\366\377\367\367\367\377\370\370\370\377mmm\377\371\371\371\377\372\372"
+  "\372\377\372\372\372\377\373\373\373\377\374\374\374\377\374\374\374"
+  "\377\375\375\375\377\375\375\375\377\355\355\355\377\0\0\0\377\0\0\0"
+  "R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\365\365\365\377\365\365"
+  "\365\377\365\365\365\377\366\366\366\377\366\366\366\377\367\367\367"
+  "\377\367\367\367\377\371\371\371\377\371\371\371\377\372\372\372\377"
+  "\372\372\372\377\373\373\373\377\374\374\374\377\374\374\374\377\375"
+  "\375\375\377\375\375\375\377\376\376\376\377\356\356\356\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\365\365\365\377\365"
+  "\365\365\377\366\366\366\377\366\366\366\377\367\367\367\377\367\367"
+  "\367\377\370\370\370\377\371\371\371\377mmm\377\372\372\372\377\373\373"
+  "\373\377\374\374\374\377\374\374\374\377\375\375\375\377\375\375\375"
+  "\377\376\376\376\377\377\377\377\377\356\356\356\377\0\0\0\377\0\0\0"
+  "R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\366\366\366\377\366\366"
+  "\366\377\366\366\366\377\367\367\367\377\367\367\367\377\370\370\370"
+  "\377\371\371\371\377\372\372\372\377\372\372\372\377\373\373\373\377"
+  "\374\374\374\377\374\374\374\377\375\375\375\377\375\375\375\377\376"
+  "\376\376\377\377\377\377\377\377\377\377\377\356\356\356\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\366\366\366\377\366"
+  "\366\366\377\367\367\367\377\367\367\367\377\370\370\370\377\371\371"
+  "\371\377\371\371\371\377\372\372\372\377nnn\377\374\374\374\377\374\374"
+  "\374\377\375\375\375\377\375\375\375\377\376\376\376\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\356\356\356\377\0\0\0\377\0\0\0"
+  "R\0\0\0\20\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0R\0\0\0\20\0"
+  "\0\0\0\0\0\0\15\0\0\0D\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0"
+  "\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0"
+  "\0\0R\0\0\0R\0\0\0R\0\0\0E\0\0\0\16\0\0\0\0\0\0\0\2\0\0\0\15\0\0\0\20"
+  "\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0"
+  "\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0"
+  "\0\0\20\0\0\0\20\0\0\0\20\0\0\0\16\0\0\0\3"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_table_fill)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_table_fill[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_table_fill[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\16\0\0\0\3\0\0\0\0\0\0\0\377\262\262\262\377\262\262\262\377\262"
+  "\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\262\262"
+  "\262\377\262\262\262\377\262\262\262\377\260\260\260\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\336\336\336\377\0\0"
+  "\0\377\0\0\0E\0\0\0\16\0\0\0\0\0\0\0\377\262\262\262\377\247\247\247"
+  "\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377"
+  "\247\247\247\377\247\247\247\377\250\250\250\377LLL\377\363\363\363\377"
+  "\363\363\363\377\364\364\364\377\365\365\365\377\365\365\365\377\366"
+  "\366\366\377\366\366\366\377\367\367\367\377\346\346\346\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\262\262\262\377\247\247\247\377\247"
+  "\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247"
+  "\247\377\247\247\247\377\250\250\250\377\250\250\250\377\363\363\363"
+  "\377\363\363\363\377\364\364\364\377\365\365\365\377\365\365\365\377"
+  "\366\366\366\377\366\366\366\377\367\367\367\377\346\346\346\377\0\0"
+  "\0\377\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\262\262\262\377\247\247\247"
+  "\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377"
+  "\247\247\247\377\250\250\250\377\250\250\250\377III\377\363\363\363\377"
+  "\364\364\364\377\365\365\365\377\365\365\365\377\366\366\366\377\366"
+  "\366\366\377\367\367\367\377\367\367\367\377\347\347\347\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\262\262\262\377\247\247\247\377\247"
+  "\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377\250\250"
+  "\250\377\250\250\250\377\251\251\251\377\251\251\251\377\364\364\364"
+  "\377\365\365\365\377\365\365\365\377\366\366\366\377\366\366\366\377"
+  "\367\367\367\377\367\367\367\377\370\370\370\377\350\350\350\377\0\0"
+  "\0\377\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\262\262\262\377\247\247\247"
+  "\377\247\247\247\377\247\247\247\377\247\247\247\377\250\250\250\377"
+  "\250\250\250\377\250\250\250\377\251\251\251\377JJJ\377\365\365\365\377"
+  "\365\365\365\377\366\366\366\377\366\366\366\377\367\367\367\377\367"
+  "\367\367\377\370\370\370\377\371\371\371\377\350\350\350\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\262\262\262\377\247\247\247\377\247"
+  "\247\247\377\247\247\247\377\250\250\250\377\250\250\250\377\250\250"
+  "\250\377\251\251\251\377\252\252\252\377\253\253\253\377\365\365\365"
+  "\377\366\366\366\377\366\366\366\377\367\367\367\377\367\367\367\377"
+  "\370\370\370\377\371\371\371\377\371\371\371\377\351\351\351\377\0\0"
+  "\0\377\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\262\262\262\377\247\247\247"
+  "\377\247\247\247\377\250\250\250\377\250\250\250\377\250\250\250\377"
+  "\251\251\251\377\251\251\251\377\253\253\253\377JJJ\377\366\366\366\377"
+  "\366\366\366\377\367\367\367\377\367\367\367\377\370\370\370\377\371"
+  "\371\371\377\371\371\371\377\372\372\372\377\351\351\351\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\262\262\262\377\250\250\250\377\250"
+  "\250\250\377\250\250\250\377\250\250\250\377\251\251\251\377\251\251"
+  "\251\377\252\252\252\377\253\253\253\377\253\253\253\377\366\366\366"
+  "\377\367\367\367\377\367\367\367\377\370\370\370\377\371\371\371\377"
+  "\371\371\371\377\372\372\372\377\372\372\372\377\352\352\352\377\0\0"
+  "\0\377\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\261\261\261\377JJJ\377\250\250"
+  "\250\377III\377\251\251\251\377III\377\252\252\252\377JJJ\377\253\253"
+  "\253\377KKK\377\254\254\254\377KKK\377\255\255\255\377LLL\377\255\255"
+  "\255\377LLL\377\256\256\256\377LLL\377\244\244\244\377\0\0\0\377\0\0"
+  "\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\362\362\362\377\362\362"
+  "\362\377\363\363\363\377\363\363\363\377\364\364\364\377\365\365\365"
+  "\377\365\365\365\377\366\366\366\377\254\254\254\377\254\254\254\377"
+  "\255\255\255\377\255\255\255\377\255\255\255\377\256\256\256\377\256"
+  "\256\256\377\257\257\257\377\257\257\257\377\244\244\244\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\363\363\363\377\363"
+  "\363\363\377\363\363\363\377\364\364\364\377\365\365\365\377\365\365"
+  "\365\377\366\366\366\377\367\367\367\377KKK\377\255\255\255\377\255\255"
+  "\255\377\255\255\255\377\256\256\256\377\256\256\256\377\257\257\257"
+  "\377\257\257\257\377\257\257\257\377\244\244\244\377\0\0\0\377\0\0\0"
+  "R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\363\363\363\377\363\363"
+  "\363\377\364\364\364\377\365\365\365\377\365\365\365\377\366\366\366"
+  "\377\366\366\366\377\367\367\367\377\255\255\255\377\255\255\255\377"
+  "\255\255\255\377\256\256\256\377\256\256\256\377\257\257\257\377\257"
+  "\257\257\377\257\257\257\377\260\260\260\377\244\244\244\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\364\364\364\377\364"
+  "\364\364\377\365\365\365\377\365\365\365\377\366\366\366\377\366\366"
+  "\366\377\367\367\367\377\370\370\370\377LLL\377\255\255\255\377\256\256"
+  "\256\377\256\256\256\377\257\257\257\377\257\257\257\377\257\257\257"
+  "\377\260\260\260\377\260\260\260\377\245\245\245\377\0\0\0\377\0\0\0"
+  "R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\365\365\365\377\365\365"
+  "\365\377\365\365\365\377\366\366\366\377\366\366\366\377\367\367\367"
+  "\377\367\367\367\377\371\371\371\377\255\255\255\377\256\256\256\377"
+  "\256\256\256\377\257\257\257\377\257\257\257\377\257\257\257\377\260"
+  "\260\260\377\260\260\260\377\261\261\261\377\246\246\246\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\365\365\365\377\365"
+  "\365\365\377\366\366\366\377\366\366\366\377\367\367\367\377\367\367"
+  "\367\377\370\370\370\377\371\371\371\377LLL\377\256\256\256\377\257\257"
+  "\257\377\257\257\257\377\257\257\257\377\260\260\260\377\260\260\260"
+  "\377\261\261\261\377\262\262\262\377\246\246\246\377\0\0\0\377\0\0\0"
+  "R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\366\366\366\377\366\366"
+  "\366\377\366\366\366\377\367\367\367\377\367\367\367\377\370\370\370"
+  "\377\371\371\371\377\372\372\372\377\256\256\256\377\257\257\257\377"
+  "\257\257\257\377\257\257\257\377\260\260\260\377\260\260\260\377\261"
+  "\261\261\377\262\262\262\377\262\262\262\377\246\246\246\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\377\377\377\377\366\366\366\377\366"
+  "\366\366\377\367\367\367\377\367\367\367\377\370\370\370\377\371\371"
+  "\371\377\371\371\371\377\372\372\372\377LLL\377\257\257\257\377\257\257"
+  "\257\377\260\260\260\377\260\260\260\377\261\261\261\377\262\262\262"
+  "\377\262\262\262\377\262\262\262\377\246\246\246\377\0\0\0\377\0\0\0"
+  "R\0\0\0\20\0\0\0\0\0\0\0\377\356\356\356\377\346\346\346\377\346\346"
+  "\346\377\346\346\346\377\347\347\347\377\350\350\350\377\350\350\350"
+  "\377\351\351\351\377\352\352\352\377\244\244\244\377\244\244\244\377"
+  "\244\244\244\377\244\244\244\377\245\245\245\377\246\246\246\377\246"
+  "\246\246\377\246\246\246\377\246\246\246\377\232\232\232\377\0\0\0\377"
+  "\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0R\0\0\0\20\0\0\0\0\0\0\0\15\0\0\0"
+  "D\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0"
+  "\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0\0\0R\0"
+  "\0\0E\0\0\0\16\0\0\0\0\0\0\0\2\0\0\0\15\0\0\0\20\0\0\0\20\0\0\0\20\0"
+  "\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20"
+  "\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0\20\0\0\0"
+  "\20\0\0\0\16\0\0\0\3"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_text_bulleted_list)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_text_bulleted_list[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_text_bulleted_list[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\27\0\0\0\224\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\232"
+  "\0\0\0'\0\0\0\6\0\0\0\1\0\0\0\224\342\342\342\377\362\362\362\377\362"
+  "\362\362\377\362\362\362\377\362\362\362\377\363\363\363\377\363\363"
+  "\363\377\363\363\363\377\364\364\364\377\364\364\364\377\364\364\364"
+  "\377\365\365\365\377\365\365\365\377\365\365\365\377\366\366\366\377"
+  "\366\366\366\377\367\367\367\377\367\367\367\377\364\364\364\377\333"
+  "\333\333\377\0\0\0\243\0\0\0\25\0\0\0\6\0\0\0\377\360\360\360\377\340"
+  "\340\340\377\340\340\340\377\341\341\341\377\342\342\342\377\343\343"
+  "\343\377\344\344\344\377\345\345\345\377\346\346\346\377\347\347\347"
+  "\377\350\350\350\377\350\350\350\377\351\351\351\377\352\352\352\377"
+  "\353\353\353\377\354\354\354\377\355\355\355\377\356\356\356\377\357"
+  "\357\357\377\355\355\355\377\0\0\0\377\0\0\0)\0\0\0\16\0\0\0\377\362"
+  "\362\362\377\341\341\341\377\341\341\341\377\342\342\342\377\343\343"
+  "\343\377\344\344\344\377\345\345\345\377\346\346\346\377\347\347\347"
+  "\377\350\350\350\377\351\351\351\377\352\352\352\377\352\352\352\377"
+  "\353\353\353\377\354\354\354\377\355\355\355\377\356\356\356\377\357"
+  "\357\357\377\360\360\360\377\361\361\361\377\0\0\0\377\0\0\0""8\0\0\0"
+  "\25\0\0\0\377\362\362\362\377\342\342\342\377\343\343\343\377\236\236"
+  "\236\377mmm\377\237\237\237\377\346\346\346\377\347\347\347\377ooo\377"
+  "ppp\377ppp\377qqq\377qqq\377qqq\377rrr\377rrr\377sss\377\360\360\360"
+  "\377\361\361\361\377\362\362\362\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0"
+  "\377\363\363\363\377\343\343\343\377\344\344\344\377nnn\377nnn\377nn"
+  "n\377\347\347\347\377\350\350\350\377\351\351\351\377\352\352\352\377"
+  "\353\353\353\377\354\354\354\377\355\355\355\377\355\355\355\377\356"
+  "\356\356\377\357\357\357\377\360\360\360\377\361\361\361\377\362\362"
+  "\362\377\363\363\363\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\363\363"
+  "\363\377\344\344\344\377\345\345\345\377\240\240\240\377ooo\377\241\241"
+  "\241\377\350\350\350\377\351\351\351\377ppp\377qqq\377qqq\377rrr\377"
+  "rrr\377sss\377sss\377sss\377ttt\377\362\362\362\377\363\363\363\377\364"
+  "\364\364\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\363\363\363\377\345"
+  "\345\345\377\346\346\346\377\347\347\347\377\350\350\350\377\351\351"
+  "\351\377\351\351\351\377\352\352\352\377\353\353\353\377\354\354\354"
+  "\377\355\355\355\377\356\356\356\377\357\357\357\377\360\360\360\377"
+  "\356\356\356\377\360\360\360\377\361\361\361\377\363\363\363\377\364"
+  "\364\364\377\365\365\365\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\364"
+  "\364\364\377\346\346\346\377\347\347\347\377\350\350\350\377\351\351"
+  "\351\377\352\352\352\377\352\352\352\377\353\353\353\377qqq\377rrr\377"
+  "rrr\377sss\377sss\377ttt\377\362\362\362\377\363\363\363\377\363\363"
+  "\363\377\364\364\364\377\365\365\365\377\366\366\366\377\0\0\0\377\0"
+  "\0\0=\0\0\0\27\0\0\0\377\364\364\364\377\347\347\347\377\350\350\350"
+  "\377\351\351\351\377\352\352\352\377\353\353\353\377\354\354\354\377"
+  "\354\354\354\377\355\355\355\377\356\356\356\377\357\357\357\377\360"
+  "\360\360\377\361\361\361\377\362\362\362\377\363\363\363\377\364\364"
+  "\364\377\365\365\365\377\365\365\365\377\366\366\366\377\367\367\367"
+  "\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\365\365\365\377\350\350\350"
+  "\377\351\351\351\377\352\352\352\377\353\353\353\377\354\354\354\377"
+  "\355\355\355\377\356\356\356\377\356\356\356\377\357\357\357\377\360"
+  "\360\360\377\361\361\361\377\362\362\362\377\363\363\363\377\364\364"
+  "\364\377\365\365\365\377\366\366\366\377\367\367\367\377\367\367\367"
+  "\377\370\370\370\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\365\365\365"
+  "\377\351\351\351\377\352\352\352\377\353\353\353\377\354\354\354\377"
+  "\355\355\355\377\356\356\356\377\357\357\357\377\360\360\360\377\360"
+  "\360\360\377\361\361\361\377\362\362\362\377\363\363\363\377\364\364"
+  "\364\377\365\365\365\377\366\366\366\377\367\367\367\377\370\370\370"
+  "\377\370\370\370\377\371\371\371\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0"
+  "\377\365\365\365\377\352\352\352\377\353\353\353\377\354\354\354\377"
+  "\355\355\355\377\356\356\356\377\357\357\357\377\360\360\360\377\361"
+  "\361\361\377\362\362\362\377\362\362\362\377\363\363\363\377\364\364"
+  "\364\377\365\365\365\377\366\366\366\377\367\367\367\377\370\370\370"
+  "\377\371\371\371\377\372\372\372\377\372\372\372\377\0\0\0\377\0\0\0"
+  "=\0\0\0\27\0\0\0\377\366\366\366\377\353\353\353\377\354\354\354\377"
+  "\303\303\303\377rrr\377\304\304\304\377\360\360\360\377\361\361\361\377"
+  "ttt\377uuu\377\203\203\203\377uuu\377vvv\377vvv\377www\377www\377xxx"
+  "\377\372\372\372\377\373\373\373\377\374\374\374\377\0\0\0\377\0\0\0"
+  "=\0\0\0\27\0\0\0\377\367\367\367\377\355\355\355\377\355\355\355\377"
+  "rrr\377sss\377sss\377\361\361\361\377\362\362\362\377\363\363\363\377"
+  "\364\364\364\377\365\365\365\377\365\365\365\377\366\366\366\377\367"
+  "\367\367\377\370\370\370\377\371\371\371\377\372\372\372\377\373\373"
+  "\373\377\374\374\374\377\375\375\375\377\0\0\0\377\0\0\0=\0\0\0\27\0"
+  "\0\0\377\367\367\367\377\356\356\356\377\357\357\357\377\304\304\304"
+  "\377sss\377\306\306\306\377\362\362\362\377\363\363\363\377uuu\377vv"
+  "v\377vvv\377www\377www\377www\377xxx\377xxx\377\373\373\373\377\374\374"
+  "\374\377\375\375\375\377\376\376\376\377\0\0\0\377\0\0\0=\0\0\0\27\0"
+  "\0\0\377\370\370\370\377\360\360\360\377\361\361\361\377\362\362\362"
+  "\377\362\362\362\377\363\363\363\377\364\364\364\377\365\365\365\377"
+  "\366\366\366\377\367\367\367\377\370\370\370\377\371\371\371\377\372"
+  "\372\372\377\373\373\373\377\373\373\373\377\374\374\374\377\375\375"
+  "\375\377\376\376\376\377\377\377\377\377\377\377\377\377\0\0\0\377\0"
+  "\0\0=\0\0\0\27\0\0\0\377\370\370\370\377\361\361\361\377\362\362\362"
+  "\377\363\363\363\377\364\364\364\377\364\364\364\377\365\365\365\377"
+  "\366\366\366\377\367\367\367\377\370\370\370\377\371\371\371\377\372"
+  "\372\372\377\373\373\373\377\374\374\374\377\375\375\375\377\375\375"
+  "\375\377\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\362\362\362\377\362\362\362"
+  "\377\363\363\363\377\364\364\364\377\365\365\365\377\366\366\366\377"
+  "\366\366\366\377\367\367\367\377\370\370\370\377\371\371\371\377\372"
+  "\372\372\377\373\373\373\377\374\374\374\377\375\375\375\377\376\376"
+  "\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\354\354\354\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\232\311\311\311"
+  "\377\355\355\355\377\370\370\370\377\365\365\365\377\366\366\366\377"
+  "\367\367\367\377\370\370\370\377\370\370\370\377\371\371\371\377\372"
+  "\372\372\377\373\373\373\377\374\374\374\377\375\375\375\377\376\376"
+  "\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\356\356\356\377\275\275\275\377\0\0\0\324\0\0\0:\0\0\0\26\0\0\0"
+  "\34\0\0\0\243\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\324\0"
+  "\0\0Y\0\0\0-\0\0\0\20\0\0\0\6\0\0\0\24\0\0\0)\0\0\0""8\0\0\0<\0\0\0="
+  "\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0"
+  "=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0""9\0\0\0-\0\0\0\31\0\0\0\7\0\0\0"
+  "\1\0\0\0\6\0\0\0\16\0\0\0\24\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0"
+  "\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27"
+  "\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\25\0\0\0\20\0\0\0\7\0\0\0"
+  "\2\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0"
+  "\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0"
+  "\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_text_indent)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_text_indent[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_text_indent[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\27\0\0\0\224\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\232"
+  "\0\0\0'\0\0\0\6\0\0\0\1\0\0\0\224\342\342\342\377\362\362\362\377\362"
+  "\362\362\377\362\362\362\377\362\362\362\377\363\363\363\377\363\363"
+  "\363\377\363\363\363\377\364\364\364\377\364\364\364\377\364\364\364"
+  "\377\365\365\365\377\365\365\365\377\365\365\365\377\366\366\366\377"
+  "\366\366\366\377\367\367\367\377\367\367\367\377\364\364\364\377\333"
+  "\333\333\377\0\0\0\243\0\0\0\25\0\0\0\6\0\0\0\377\360\360\360\377\340"
+  "\340\340\377\340\340\340\377\341\341\341\377\342\342\342\377\343\343"
+  "\343\377\344\344\344\377\345\345\345\377\256\256\256\377\347\347\347"
+  "\377\350\350\350\377\350\350\350\377\351\351\351\377\352\352\352\377"
+  "\353\353\353\377\354\354\354\377\355\355\355\377\356\356\356\377\357"
+  "\357\357\377\343\343\343\377\0\0\0\377\0\0\0)\0\0\0\16\0\0\0\377\362"
+  "\362\362\377\341\341\341\377\341\341\341\377\342\342\342\377\343\343"
+  "\343\377\344\344\344\377\345\345\345\377\346\346\346\377\347\347\347"
+  "\377\350\350\350\377\351\351\351\377\352\352\352\377\352\352\352\377"
+  "\353\353\353\377\354\354\354\377\355\355\355\377\356\356\356\377\357"
+  "\357\357\377\360\360\360\377\347\347\347\377\0\0\0\377\0\0\0""8\0\0\0"
+  "\25\0\0\0\377\362\362\362\377\342\342\342\377\254\254\254\377\254\254"
+  "\254\377\255\255\255\377\256\256\256\377\256\256\256\377\257\257\257"
+  "\377\260\260\260\377\261\261\261\377\262\262\262\377\262\262\262\377"
+  "\263\263\263\377\263\263\263\377\264\264\264\377\265\265\265\377\265"
+  "\265\265\377\266\266\266\377\361\361\361\377\350\350\350\377\0\0\0\377"
+  "\0\0\0=\0\0\0\27\0\0\0\377\363\363\363\377\343\343\343\377\344\344\344"
+  "\377\345\345\345\377\345\345\345\377\346\346\346\377\347\347\347\377"
+  "\350\350\350\377\351\351\351\377\352\352\352\377\353\353\353\377\354"
+  "\354\354\377\355\355\355\377\355\355\355\377\356\356\356\377\357\357"
+  "\357\377\360\360\360\377\361\361\361\377\362\362\362\377\351\351\351"
+  "\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\363\363\363\377\344\344\344"
+  "\377\345\345\345\377\346\346\346\377\347\347\347\377\347\347\347\377"
+  "\350\350\350\377\351\351\351\377\352\352\352\377\353\353\353\377\354"
+  "\354\354\377\355\355\355\377\356\356\356\377\357\357\357\377\357\357"
+  "\357\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363\363"
+  "\377\352\352\352\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\363\363\363"
+  "\377\345\345\345\377\346\346\346\377\347\347\347\377\350\350\350\377"
+  "\351\351\351\377\351\351\351\377\352\352\352\377uuu\377vvv\377vvv\377"
+  "www\377www\377xxx\377xxx\377xxx\377yyy\377yyy\377\364\364\364\377\353"
+  "\353\353\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\364\364\364\377\346"
+  "\346\346\377\347\347\347\377\350\350\350\377\252\252\252\377\352\352"
+  "\352\377\352\352\352\377\353\353\353\377\354\354\354\377\355\355\355"
+  "\377\356\356\356\377\357\357\357\377\360\360\360\377\361\361\361\377"
+  "\362\362\362\377\363\363\363\377\363\363\363\377\364\364\364\377\365"
+  "\365\365\377\354\354\354\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\364"
+  "\364\364\377\347\347\347\377\350\350\350\377\351\351\351\377\0\0\0\377"
+  "\254\254\254\377\354\354\354\377\354\354\354\377vvv\377www\377www\377"
+  "xxx\377xxx\377yyy\377yyy\377zzz\377zzz\377zzz\377\366\366\366\377\355"
+  "\355\355\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\365\365\365\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\255\255\255\377\356\356"
+  "\356\377\356\356\356\377\357\357\357\377\360\360\360\377\361\361\361"
+  "\377\362\362\362\377\363\363\363\377\364\364\364\377\365\365\365\377"
+  "\366\366\366\377\367\367\367\377\367\367\367\377\356\356\356\377\0\0"
+  "\0\377\0\0\0=\0\0\0\27\0\0\0\377\365\365\365\377\351\351\351\377\352"
+  "\352\352\377\353\353\353\377\0\0\0\377\255\255\255\377\356\356\356\377"
+  "\357\357\357\377xxx\377xxx\377xxx\377yyy\377yyy\377zzz\377zzz\377{{{"
+  "\377{{{\377|||\377\370\370\370\377\357\357\357\377\0\0\0\377\0\0\0=\0"
+  "\0\0\27\0\0\0\377\365\365\365\377\352\352\352\377\353\353\353\377\354"
+  "\354\354\377\255\255\255\377\356\356\356\377\357\357\357\377\360\360"
+  "\360\377\361\361\361\377\362\362\362\377\362\362\362\377\363\363\363"
+  "\377\364\364\364\377\365\365\365\377\366\366\366\377\367\367\367\377"
+  "\370\370\370\377\371\371\371\377\372\372\372\377\360\360\360\377\0\0"
+  "\0\377\0\0\0=\0\0\0\27\0\0\0\377\366\366\366\377\353\353\353\377\354"
+  "\354\354\377\355\355\355\377\356\356\356\377\357\357\357\377\360\360"
+  "\360\377\361\361\361\377yyy\377yyy\377zzz\377zzz\377zzz\377\366\366\366"
+  "\377\367\367\367\377\370\370\370\377\371\371\371\377\372\372\372\377"
+  "\373\373\373\377\362\362\362\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377"
+  "\367\367\367\377\355\355\355\377\355\355\355\377\356\356\356\377\357"
+  "\357\357\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363"
+  "\363\377\364\364\364\377\365\365\365\377\365\365\365\377\366\366\366"
+  "\377\367\367\367\377\370\370\370\377\371\371\371\377\372\372\372\377"
+  "\373\373\373\377\374\374\374\377\363\363\363\377\0\0\0\377\0\0\0=\0\0"
+  "\0\27\0\0\0\377\367\367\367\377\356\356\356\377\357\357\357\377\357\357"
+  "\357\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363\363"
+  "\377\364\364\364\377\365\365\365\377\366\366\366\377\367\367\367\377"
+  "\367\367\367\377\370\370\370\377\371\371\371\377\372\372\372\377\373"
+  "\373\373\377\374\374\374\377\375\375\375\377\364\364\364\377\0\0\0\377"
+  "\0\0\0=\0\0\0\27\0\0\0\377\370\370\370\377\360\360\360\377\267\267\267"
+  "\377\270\270\270\377\270\270\270\377\270\270\270\377\271\271\271\377"
+  "\272\272\272\377\273\273\273\377\273\273\273\377\274\274\274\377\275"
+  "\275\275\377\276\276\276\377\276\276\276\377\276\276\276\377\277\277"
+  "\277\377\300\300\300\377\301\301\301\377\377\377\377\377\365\365\365"
+  "\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\370\370\370\377\361\361\361"
+  "\377\362\362\362\377\363\363\363\377\364\364\364\377\364\364\364\377"
+  "\365\365\365\377\366\366\366\377\367\367\367\377\370\370\370\377\371"
+  "\371\371\377\372\372\372\377\373\373\373\377\374\374\374\377\375\375"
+  "\375\377\375\375\375\377\376\376\376\377\377\377\377\377\377\377\377"
+  "\377\365\365\365\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\362\362\362"
+  "\377\362\362\362\377\363\363\363\377\364\364\364\377\365\365\365\377"
+  "\366\366\366\377\366\366\366\377\367\367\367\377\274\274\274\377\371"
+  "\371\371\377\372\372\372\377\373\373\373\377\374\374\374\377\375\375"
+  "\375\377\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\331\331\331\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0"
+  "\232\311\311\311\377\332\332\332\377\356\356\356\377\353\353\353\377"
+  "\354\354\354\377\355\355\355\377\356\356\356\377\356\356\356\377\357"
+  "\357\357\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363"
+  "\363\377\364\364\364\377\365\365\365\377\365\365\365\377\365\365\365"
+  "\377\365\365\365\377\344\344\344\377\275\275\275\377\0\0\0\324\0\0\0"
+  ":\0\0\0\26\0\0\0\34\0\0\0\243\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\324\0\0\0Y\0\0\0-\0\0\0\20\0\0\0\6\0\0\0\24\0\0\0)\0\0\0""8\0"
+  "\0\0<\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0="
+  "\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0""9\0\0\0-\0\0\0\31\0"
+  "\0\0\7\0\0\0\1\0\0\0\6\0\0\0\16\0\0\0\24\0\0\0\27\0\0\0\27\0\0\0\27\0"
+  "\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27"
+  "\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\25\0\0\0\20\0\0\0"
+  "\7\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0\3\0\0\0\3\0"
+  "\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0"
+  "\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_text_numbered_list)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_text_numbered_list[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_text_numbered_list[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\27\0\0\0\224\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\232"
+  "\0\0\0'\0\0\0\6\0\0\0\1\0\0\0\224\342\342\342\377\362\362\362\377\362"
+  "\362\362\377\362\362\362\377\362\362\362\377\363\363\363\377\363\363"
+  "\363\377\363\363\363\377\364\364\364\377\364\364\364\377\364\364\364"
+  "\377\365\365\365\377\365\365\365\377\365\365\365\377\366\366\366\377"
+  "\366\366\366\377\367\367\367\377\367\367\367\377\364\364\364\377\333"
+  "\333\333\377\0\0\0\243\0\0\0\25\0\0\0\6\0\0\0\377\360\360\360\377\340"
+  "\340\340\377\340\340\340\377\341\341\341\377\342\342\342\377\343\343"
+  "\343\377\344\344\344\377\345\345\345\377\346\346\346\377\347\347\347"
+  "\377\350\350\350\377\350\350\350\377\351\351\351\377\352\352\352\377"
+  "\353\353\353\377\354\354\354\377\355\355\355\377\356\356\356\377\357"
+  "\357\357\377\355\355\355\377\0\0\0\377\0\0\0)\0\0\0\16\0\0\0\377\362"
+  "\362\362\377\341\341\341\377\341\341\341\377\314\314\314\377mmm\377\344"
+  "\344\344\377\345\345\345\377\346\346\346\377\347\347\347\377\350\350"
+  "\350\377\351\351\351\377\352\352\352\377\352\352\352\377\353\353\353"
+  "\377\354\354\354\377\355\355\355\377\356\356\356\377\357\357\357\377"
+  "\360\360\360\377\361\361\361\377\0\0\0\377\0\0\0""8\0\0\0\25\0\0\0\377"
+  "\362\362\362\377\342\342\342\377\315\315\315\377mmm\377mmm\377\345\345"
+  "\345\377\346\346\346\377\347\347\347\377ooo\377ppp\377ppp\377qqq\377"
+  "qqq\377qqq\377rrr\377rrr\377sss\377\360\360\360\377\361\361\361\377\362"
+  "\362\362\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\363\363\363\377\343"
+  "\343\343\377\344\344\344\377\345\345\345\377nnn\377\346\346\346\377\347"
+  "\347\347\377\350\350\350\377\351\351\351\377\352\352\352\377\353\353"
+  "\353\377\354\354\354\377\355\355\355\377\355\355\355\377\356\356\356"
+  "\377\357\357\357\377\360\360\360\377\361\361\361\377\362\362\362\377"
+  "\363\363\363\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\363\363\363\377"
+  "\344\344\344\377\345\345\345\377\346\346\346\377ooo\377\347\347\347\377"
+  "\350\350\350\377\351\351\351\377ppp\377qqq\377qqq\377rrr\377rrr\377s"
+  "ss\377sss\377sss\377ttt\377\362\362\362\377\363\363\363\377\364\364\364"
+  "\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\363\363\363\377\345\345\345"
+  "\377\346\346\346\377\347\347\347\377ooo\377\351\351\351\377\351\351\351"
+  "\377\352\352\352\377\353\353\353\377\354\354\354\377\355\355\355\377"
+  "\356\356\356\377\357\357\357\377\360\360\360\377\356\356\356\377\360"
+  "\360\360\377\361\361\361\377\363\363\363\377\364\364\364\377\365\365"
+  "\365\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\364\364\364\377\346\346"
+  "\346\377\347\347\347\377\350\350\350\377\351\351\351\377\352\352\352"
+  "\377\352\352\352\377\353\353\353\377\206\206\206\377rrr\377rrr\377ss"
+  "s\377sss\377ttt\377\362\362\362\377\363\363\363\377\363\363\363\377\364"
+  "\364\364\377\365\365\365\377\366\366\366\377\0\0\0\377\0\0\0=\0\0\0\27"
+  "\0\0\0\377\364\364\364\377\347\347\347\377\350\350\350\377\351\351\351"
+  "\377\352\352\352\377\353\353\353\377\354\354\354\377\354\354\354\377"
+  "\355\355\355\377\356\356\356\377\357\357\357\377\360\360\360\377\361"
+  "\361\361\377\362\362\362\377\363\363\363\377\364\364\364\377\365\365"
+  "\365\377\365\365\365\377\366\366\366\377\367\367\367\377\0\0\0\377\0"
+  "\0\0=\0\0\0\27\0\0\0\377\365\365\365\377\350\350\350\377\351\351\351"
+  "\377\352\352\352\377\353\353\353\377\354\354\354\377\355\355\355\377"
+  "\356\356\356\377\356\356\356\377\357\357\357\377\360\360\360\377\361"
+  "\361\361\377\362\362\362\377\363\363\363\377\364\364\364\377\365\365"
+  "\365\377\366\366\366\377\367\367\367\377\367\367\367\377\370\370\370"
+  "\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\365\365\365\377\351\351\351"
+  "\377\352\352\352\377\353\353\353\377\354\354\354\377\355\355\355\377"
+  "\356\356\356\377\357\357\357\377\360\360\360\377\360\360\360\377\361"
+  "\361\361\377\362\362\362\377\363\363\363\377\364\364\364\377\365\365"
+  "\365\377\366\366\366\377\367\367\367\377\370\370\370\377\370\370\370"
+  "\377\371\371\371\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\365\365\365"
+  "\377\352\352\352\377\353\353\353\377\303\303\303\377rrr\377\327\327\327"
+  "\377\357\357\357\377\360\360\360\377\361\361\361\377\362\362\362\377"
+  "\362\362\362\377\363\363\363\377\364\364\364\377\365\365\365\377\366"
+  "\366\366\377\367\367\367\377\370\370\370\377\371\371\371\377\372\372"
+  "\372\377\372\372\372\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\366\366"
+  "\366\377\353\353\353\377\354\354\354\377rrr\377\356\356\356\377sss\377"
+  "\360\360\360\377\361\361\361\377ttt\377uuu\377\203\203\203\377uuu\377"
+  "vvv\377vvv\377www\377www\377xxx\377\372\372\372\377\373\373\373\377\374"
+  "\374\374\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\367\367\367\377\355"
+  "\355\355\377\355\355\355\377\356\356\356\377\330\330\330\377sss\377\361"
+  "\361\361\377\362\362\362\377\363\363\363\377\364\364\364\377\365\365"
+  "\365\377\365\365\365\377\366\366\366\377\367\367\367\377\370\370\370"
+  "\377\371\371\371\377\372\372\372\377\373\373\373\377\374\374\374\377"
+  "\375\375\375\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\367\367\367\377"
+  "\356\356\356\377\357\357\357\377\330\330\330\377sss\377\332\332\332\377"
+  "\362\362\362\377\363\363\363\377uuu\377vvv\377vvv\377www\377www\377w"
+  "ww\377xxx\377xxx\377\373\373\373\377\374\374\374\377\375\375\375\377"
+  "\376\376\376\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\370\370\370\377"
+  "\360\360\360\377\361\361\361\377ttt\377ttt\377uuu\377\364\364\364\377"
+  "\365\365\365\377\366\366\366\377\367\367\367\377\370\370\370\377\371"
+  "\371\371\377\372\372\372\377\373\373\373\377\373\373\373\377\374\374"
+  "\374\377\375\375\375\377\376\376\376\377\377\377\377\377\377\377\377"
+  "\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\370\370\370\377\361\361\361"
+  "\377\362\362\362\377\363\363\363\377\364\364\364\377\364\364\364\377"
+  "\365\365\365\377\366\366\366\377\367\367\367\377\370\370\370\377\371"
+  "\371\371\377\372\372\372\377\373\373\373\377\374\374\374\377\375\375"
+  "\375\377\375\375\375\377\376\376\376\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\362\362\362"
+  "\377\362\362\362\377\363\363\363\377\364\364\364\377\365\365\365\377"
+  "\366\366\366\377\366\366\366\377\367\367\367\377\370\370\370\377\371"
+  "\371\371\377\372\372\372\377\373\373\373\377\374\374\374\377\375\375"
+  "\375\377\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\354\354\354\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0"
+  "\232\311\311\311\377\355\355\355\377\370\370\370\377\365\365\365\377"
+  "\366\366\366\377\367\367\367\377\370\370\370\377\370\370\370\377\371"
+  "\371\371\377\372\372\372\377\373\373\373\377\374\374\374\377\375\375"
+  "\375\377\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\356\356\356\377\275\275\275\377\0\0\0\324\0\0\0"
+  ":\0\0\0\26\0\0\0\34\0\0\0\243\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\324\0\0\0Y\0\0\0-\0\0\0\20\0\0\0\6\0\0\0\24\0\0\0)\0\0\0""8\0"
+  "\0\0<\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0="
+  "\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0""9\0\0\0-\0\0\0\31\0"
+  "\0\0\7\0\0\0\1\0\0\0\6\0\0\0\16\0\0\0\24\0\0\0\27\0\0\0\27\0\0\0\27\0"
+  "\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27"
+  "\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\25\0\0\0\20\0\0\0"
+  "\7\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0\3\0\0\0\3\0"
+  "\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0"
+  "\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_text_unindent)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_text_unindent[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_text_unindent[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\27\0\0\0\224\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\232"
+  "\0\0\0'\0\0\0\6\0\0\0\1\0\0\0\224\342\342\342\377\362\362\362\377\362"
+  "\362\362\377\362\362\362\377\362\362\362\377\363\363\363\377\363\363"
+  "\363\377\363\363\363\377\364\364\364\377\364\364\364\377\364\364\364"
+  "\377\365\365\365\377\365\365\365\377\365\365\365\377\366\366\366\377"
+  "\366\366\366\377\367\367\367\377\367\367\367\377\364\364\364\377\333"
+  "\333\333\377\0\0\0\243\0\0\0\25\0\0\0\6\0\0\0\377\360\360\360\377\340"
+  "\340\340\377\340\340\340\377\341\341\341\377\342\342\342\377\343\343"
+  "\343\377\344\344\344\377\345\345\345\377\256\256\256\377\347\347\347"
+  "\377\350\350\350\377\350\350\350\377\351\351\351\377\352\352\352\377"
+  "\353\353\353\377\354\354\354\377\355\355\355\377\356\356\356\377\357"
+  "\357\357\377\343\343\343\377\0\0\0\377\0\0\0)\0\0\0\16\0\0\0\377\362"
+  "\362\362\377\341\341\341\377\341\341\341\377\342\342\342\377\343\343"
+  "\343\377\344\344\344\377\345\345\345\377\346\346\346\377\347\347\347"
+  "\377\350\350\350\377\351\351\351\377\352\352\352\377\352\352\352\377"
+  "\353\353\353\377\354\354\354\377\355\355\355\377\356\356\356\377\357"
+  "\357\357\377\360\360\360\377\347\347\347\377\0\0\0\377\0\0\0""8\0\0\0"
+  "\25\0\0\0\377\362\362\362\377\342\342\342\377\254\254\254\377\254\254"
+  "\254\377\255\255\255\377\256\256\256\377\256\256\256\377\257\257\257"
+  "\377\260\260\260\377\261\261\261\377\262\262\262\377\262\262\262\377"
+  "\263\263\263\377\263\263\263\377\264\264\264\377\265\265\265\377\265"
+  "\265\265\377\266\266\266\377\361\361\361\377\350\350\350\377\0\0\0\377"
+  "\0\0\0=\0\0\0\27\0\0\0\377\363\363\363\377\343\343\343\377\344\344\344"
+  "\377\345\345\345\377\345\345\345\377\346\346\346\377\347\347\347\377"
+  "\350\350\350\377\351\351\351\377\352\352\352\377\353\353\353\377\354"
+  "\354\354\377\355\355\355\377\355\355\355\377\356\356\356\377\357\357"
+  "\357\377\360\360\360\377\361\361\361\377\362\362\362\377\351\351\351"
+  "\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\363\363\363\377\344\344\344"
+  "\377\345\345\345\377\346\346\346\377\347\347\347\377\347\347\347\377"
+  "\350\350\350\377\351\351\351\377\352\352\352\377\353\353\353\377\354"
+  "\354\354\377\355\355\355\377\356\356\356\377\357\357\357\377\357\357"
+  "\357\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363\363"
+  "\377\352\352\352\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\363\363\363"
+  "\377\345\345\345\377\346\346\346\377\347\347\347\377\350\350\350\377"
+  "\351\351\351\377\351\351\351\377\352\352\352\377uuu\377vvv\377vvv\377"
+  "www\377www\377xxx\377xxx\377xxx\377yyy\377yyy\377\364\364\364\377\353"
+  "\353\353\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\364\364\364\377\346"
+  "\346\346\377\347\347\347\377\252\252\252\377\351\351\351\377\352\352"
+  "\352\377\352\352\352\377\353\353\353\377\354\354\354\377\355\355\355"
+  "\377\356\356\356\377\357\357\357\377\360\360\360\377\361\361\361\377"
+  "\362\362\362\377\363\363\363\377\363\363\363\377\364\364\364\377\365"
+  "\365\365\377\354\354\354\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\364"
+  "\364\364\377\347\347\347\377\252\252\252\377\0\0\0\377\352\352\352\377"
+  "\353\353\353\377\354\354\354\377\354\354\354\377vvv\377www\377www\377"
+  "xxx\377xxx\377yyy\377yyy\377zzz\377zzz\377zzz\377\366\366\366\377\355"
+  "\355\355\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\365\365\365\377\252"
+  "\252\252\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\356\356"
+  "\356\377\356\356\356\377\357\357\357\377\360\360\360\377\361\361\361"
+  "\377\362\362\362\377\363\363\363\377\364\364\364\377\365\365\365\377"
+  "\366\366\366\377\367\367\367\377\367\367\367\377\356\356\356\377\0\0"
+  "\0\377\0\0\0=\0\0\0\27\0\0\0\377\365\365\365\377\351\351\351\377\253"
+  "\253\253\377\0\0\0\377\354\354\354\377\355\355\355\377\356\356\356\377"
+  "\357\357\357\377xxx\377xxx\377xxx\377yyy\377yyy\377zzz\377zzz\377{{{"
+  "\377{{{\377|||\377\370\370\370\377\357\357\357\377\0\0\0\377\0\0\0=\0"
+  "\0\0\27\0\0\0\377\365\365\365\377\352\352\352\377\353\353\353\377\255"
+  "\255\255\377\355\355\355\377\356\356\356\377\357\357\357\377\360\360"
+  "\360\377\361\361\361\377\362\362\362\377\362\362\362\377\363\363\363"
+  "\377\364\364\364\377\365\365\365\377\366\366\366\377\367\367\367\377"
+  "\370\370\370\377\371\371\371\377\372\372\372\377\360\360\360\377\0\0"
+  "\0\377\0\0\0=\0\0\0\27\0\0\0\377\366\366\366\377\353\353\353\377\354"
+  "\354\354\377\355\355\355\377\356\356\356\377\357\357\357\377\360\360"
+  "\360\377\361\361\361\377yyy\377yyy\377zzz\377zzz\377zzz\377\366\366\366"
+  "\377\367\367\367\377\370\370\370\377\371\371\371\377\372\372\372\377"
+  "\373\373\373\377\362\362\362\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377"
+  "\367\367\367\377\355\355\355\377\355\355\355\377\356\356\356\377\357"
+  "\357\357\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363"
+  "\363\377\364\364\364\377\365\365\365\377\365\365\365\377\366\366\366"
+  "\377\367\367\367\377\370\370\370\377\371\371\371\377\372\372\372\377"
+  "\373\373\373\377\374\374\374\377\363\363\363\377\0\0\0\377\0\0\0=\0\0"
+  "\0\27\0\0\0\377\367\367\367\377\356\356\356\377\357\357\357\377\357\357"
+  "\357\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363\363"
+  "\377\364\364\364\377\365\365\365\377\366\366\366\377\367\367\367\377"
+  "\367\367\367\377\370\370\370\377\371\371\371\377\372\372\372\377\373"
+  "\373\373\377\374\374\374\377\375\375\375\377\364\364\364\377\0\0\0\377"
+  "\0\0\0=\0\0\0\27\0\0\0\377\370\370\370\377\360\360\360\377\267\267\267"
+  "\377\270\270\270\377\270\270\270\377\270\270\270\377\271\271\271\377"
+  "\272\272\272\377\273\273\273\377\273\273\273\377\274\274\274\377\275"
+  "\275\275\377\276\276\276\377\276\276\276\377\276\276\276\377\277\277"
+  "\277\377\300\300\300\377\301\301\301\377\377\377\377\377\365\365\365"
+  "\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\370\370\370\377\361\361\361"
+  "\377\362\362\362\377\363\363\363\377\364\364\364\377\364\364\364\377"
+  "\365\365\365\377\366\366\366\377\367\367\367\377\370\370\370\377\371"
+  "\371\371\377\372\372\372\377\373\373\373\377\374\374\374\377\375\375"
+  "\375\377\375\375\375\377\376\376\376\377\377\377\377\377\377\377\377"
+  "\377\365\365\365\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0\377\362\362\362"
+  "\377\362\362\362\377\363\363\363\377\364\364\364\377\365\365\365\377"
+  "\366\366\366\377\366\366\366\377\367\367\367\377\274\274\274\377\371"
+  "\371\371\377\372\372\372\377\373\373\373\377\374\374\374\377\375\375"
+  "\375\377\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\331\331\331\377\0\0\0\377\0\0\0=\0\0\0\27\0\0\0"
+  "\232\311\311\311\377\332\332\332\377\356\356\356\377\353\353\353\377"
+  "\354\354\354\377\355\355\355\377\356\356\356\377\356\356\356\377\357"
+  "\357\357\377\360\360\360\377\361\361\361\377\362\362\362\377\363\363"
+  "\363\377\364\364\364\377\365\365\365\377\365\365\365\377\365\365\365"
+  "\377\365\365\365\377\344\344\344\377\275\275\275\377\0\0\0\324\0\0\0"
+  ":\0\0\0\26\0\0\0\34\0\0\0\243\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\324\0\0\0Y\0\0\0-\0\0\0\20\0\0\0\6\0\0\0\24\0\0\0)\0\0\0""8\0"
+  "\0\0<\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0="
+  "\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0=\0\0\0""9\0\0\0-\0\0\0\31\0"
+  "\0\0\7\0\0\0\1\0\0\0\6\0\0\0\16\0\0\0\24\0\0\0\27\0\0\0\27\0\0\0\27\0"
+  "\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27"
+  "\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\27\0\0\0\25\0\0\0\20\0\0\0"
+  "\7\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0\3\0\0\0\3\0"
+  "\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0"
+  "\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_timer)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_timer[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_timer[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\23\0"
+  "\0\0o\0\0\0\266\0\0\0\344\0\0\0\373\0\0\0\373\0\0\0\345\0\0\0\270\0\0"
+  "\0t\0\0\0\31\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\205\0\0\0"
+  "\373\207\207\207\377\300\300\300\377\323\323\323\377\326\326\326\377"
+  "\325\325\325\377\322\322\322\377\275\275\275\377\204\204\204\377\0\0"
+  "\0\374\0\0\0\217\0\0\0\10\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377[\210\262\377\0\0\0\377\324\324"
+  "\324\377\342\342\342\377\365\365\365\377\374\374\374\377\374\374\374"
+  "\377\374\374\374\377\373\373\373\377\363\363\363\377\354\354\354\377"
+  "\341\341\341\377\220\220\220\377\0\0\0\324\0\0\0""6\0\0\0\3\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\236"
+  "\270\321\377P\200\255\377\0\0\0\377\375\375\375\377\375\375\375\377\375"
+  "\375\375\377\316\316\316\377\310\310\310\377\374\374\374\377\373\373"
+  "\373\377\373\373\373\377\367\367\367\377\350\350\350\377\272\272\272"
+  "\377\0\0\0\352\0\0\0\77\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\377\277\321\341"
+  "\377\257\305\332\377\262\307\333\377\266\312\335\377\244\275\325\377"
+  "\234\267\321\377P\200\255\377\10\15\21\377\375\375\375\377\375\375\375"
+  "\377\277\277\277\377\270\270\270\377\373\373\373\377\373\373\373\377"
+  "\372\372\372\377\371\371\371\377\370\370\370\377\350\350\350\377\301"
+  "\301\301\377\0\0\0\330\0\0\0\32\0\0\0\4\0\0\0\0\0\0\0\377\302\322\341"
+  "\377\240\272\323\377\234\267\321\377\232\265\317\377\240\272\323\377"
+  "\234\267\321\377\227\263\316\377_\213\264\377\0\0\0\377\375\375\375\377"
+  "\260\260\260\377\251\251\251\377\373\373\373\377\373\373\373\377\371"
+  "\371\371\377\371\371\371\377\367\367\367\377\366\366\366\377\345\345"
+  "\345\377\217\217\217\377\0\0\0\242\0\0\0\20\0\0\0\1\0\0\0\377\310\326"
+  "\344\377\236\270\321\377\232\265\317\377\234\267\321\377\234\267\321"
+  "\377\234\267\321\377\240\272\323\377\225\262\316\377Ly\243\377\0\0\0"
+  "\377\241\241\241\377\231\231\231\377\373\373\373\377\372\372\372\377"
+  "\371\371\371\377\370\370\370\377\367\367\367\377\365\365\365\377\363"
+  "\363\363\377\350\350\350\377\0\0\0\374\0\0\0>\0\0\0\11\0\0\0\377g\213"
+  "\254\377\77e\210\377\77e\210\377\77e\210\377\77e\210\377\77e\210\377"
+  "\77e\210\377*C[\377\0\0\0\377\375\375\375\377\221\221\221\377\212\212"
+  "\212\377\373\373\373\377\372\372\372\377\371\371\371\377\370\370\370"
+  "\377\366\366\366\377\365\365\365\377\363\363\363\377\355\355\355\377"
+  "\216\216\216\377\0\0\0\227\0\0\0\25\0\0\0\377d\207\247\3777Yx\3777Yx"
+  "\3777Yx\377\77e\210\377\77e\210\377*C[\377\0\0\0\377\377\377\377\377"
+  "\376\376\376\377\201\201\201\377zzz\377\373\373\373\377\371\371\371\377"
+  "\370\370\370\377\367\367\367\377\365\365\365\377\364\364\364\377\362"
+  "\362\362\377\357\357\357\377\323\323\323\377\0\0\0\314\0\0\0(\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\77e\210\377*C[\377\0\0\0\377"
+  "\375\375\375\377\376\376\376\377\375\375\375\377rrr\377kkk\377\356\356"
+  "\356\377\371\371\371\377\370\370\370\377\366\366\366\377\364\364\364"
+  "\377\363\363\363\377\361\361\361\377\357\357\357\377\367\367\367\377"
+  "\0\0\0\354\0\0\0""9\0\0\0\0\0\0\0\373\350\350\350\377\372\372\372\377"
+  "\0\0\0\377*C[\377\0\0\0\377\374\374\374\377\374\374\374\377\374\374\374"
+  "\377\374\374\374\377ccc\377[[[\377\313\313\313\377\345\345\345\377\367"
+  "\367\367\377\365\365\365\377\364\364\364\377\362\362\362\377\273\273"
+  "\273\377\356\356\356\377\370\370\370\377\0\0\0\374\0\0\0D\0\0\0\0\0\0"
+  "\0\373\336\336\336\377\371\371\371\377\0\0\0\377\0\0\0\377\373\373\373"
+  "\377\373\373\373\377\373\373\373\377\373\373\373\377\373\373\373\377"
+  "\221\221\221\377LLL\377EEE\377bbb\377\300\300\300\377\335\335\335\377"
+  "\362\362\362\377\361\361\361\377\265\265\265\377\355\355\355\377\370"
+  "\370\370\377\0\0\0\374\0\0\0J\0\0\0\0\0\0\0\346\332\332\332\377\370\370"
+  "\370\377\0\0\0\377\371\371\371\377\371\371\371\377\371\371\371\377\372"
+  "\372\372\377\372\372\372\377\372\372\372\377\352\352\352\377\276\276"
+  "\276\377ddd\377...\377'''\377III\377\361\361\361\377\357\357\357\377"
+  "\355\355\355\377\371\371\371\377\367\367\367\377\0\0\0\355\0\0\0J\0\0"
+  "\0\0\0\0\0\273\275\275\275\377\365\365\365\377\367\367\367\377\370\370"
+  "\370\377\370\370\370\377\370\370\370\377\370\370\370\377\370\370\370"
+  "\377\370\370\370\377\367\367\367\377\366\366\366\377\335\335\335\377"
+  "\276\276\276\377WWW\377xxx\377\357\357\357\377\356\356\356\377\354\354"
+  "\354\377\371\371\371\377\323\323\323\377\0\0\0\316\0\0\0D\0\0\0\0\0\0"
+  "\0t\177\177\177\377\341\341\341\377\366\366\366\377\366\366\366\377\366"
+  "\366\366\377\366\366\366\377\367\367\367\377\366\366\366\377\366\366"
+  "\366\377\365\365\365\377\364\364\364\377\364\364\364\377\362\362\362"
+  "\377\361\361\361\377\357\357\357\377\356\356\356\377\355\355\355\377"
+  "\364\364\364\377\370\370\370\377\214\214\214\377\0\0\0\237\0\0\0""9\0"
+  "\0\0\0\0\0\0\31\0\0\0\374\320\320\320\377\353\353\353\377\364\364\364"
+  "\377\364\364\364\377\365\365\365\377\364\364\364\377\364\364\364\377"
+  "\364\364\364\377\363\363\363\377\362\362\362\377\361\361\361\377\360"
+  "\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377\354\354"
+  "\354\377\370\370\370\377\361\361\361\377\0\0\0\374\0\0\0_\0\0\0(\0\0"
+  "\0\0\0\0\0\2\0\0\0\217\211\211\211\377\324\324\324\377\362\362\362\377"
+  "\362\362\362\377\362\362\362\377\362\362\362\377\362\362\362\377\361"
+  "\361\361\377\361\361\361\377\360\360\360\377\360\360\360\377\357\357"
+  "\357\377\356\356\356\377\355\355\355\377\354\354\354\377\371\371\371"
+  "\377\370\370\370\377\230\230\230\377\0\0\0\260\0\0\0H\0\0\0\25\0\0\0"
+  "\0\0\0\0\0\0\0\0\10\0\0\0\324\253\253\253\377\323\323\323\377\360\360"
+  "\360\377\360\360\360\377\360\360\360\377\360\360\360\377\360\360\360"
+  "\377\357\357\357\377\357\357\357\377\356\356\356\377\356\356\356\377"
+  "\355\355\355\377\354\354\354\377\371\371\371\377\370\370\370\377\304"
+  "\304\304\377\0\0\0\335\0\0\0Q\0\0\0.\0\0\0\11\0\0\0\0\0\0\0\0\0\0\0\1"
+  "\0\0\0""6\0\0\0\352\253\253\253\377\322\322\322\377\344\344\344\377\356"
+  "\356\356\377\356\356\356\377\356\356\356\377\256\256\256\377\255\255"
+  "\255\377\355\355\355\377\354\354\354\377\353\353\353\377\370\370\370"
+  "\377\370\370\370\377\302\302\302\377\0\0\0\355\0\0\0p\0\0\0<\0\0\0\20"
+  "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\77\0\0\0\330\202\202\202"
+  "\377\315\315\315\377\331\331\331\377\354\354\354\377\354\354\354\377"
+  "\354\354\354\377\354\354\354\377\353\353\353\377\364\364\364\377\370"
+  "\370\370\377\367\367\367\377\214\214\214\377\0\0\0\335\0\0\0q\0\0\0B"
+  "\0\0\0\32\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0"
+  "\0\32\0\0\0\242\0\0\0\374\210\210\210\377\310\310\310\377\335\335\335"
+  "\377\370\370\370\377\370\370\370\377\367\367\367\377\361\361\361\377"
+  "\300\300\300\377\0\0\0\374\0\0\0\260\0\0\0Q\0\0\0<\0\0\0\32\0\0\0\5\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0"
+  "\20\0\0\0>\0\0\0\227\0\0\0\314\0\0\0\354\0\0\0\374\0\0\0\374\0\0\0\355"
+  "\0\0\0\316\0\0\0\237\0\0\0_\0\0\0H\0\0\0.\0\0\0\20\0\0\0\4\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\1\0\0\0\10\0\0\0\25\0\0\0(\0\0\0""9\0\0\0D\0\0\0J\0\0\0J\0\0\0D\0\0"
+  "\0""9\0\0\0(\0\0\0\25\0\0\0\10\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\1\0\0\0\6\0\0\0\12\0\0\0\15\0\0\0\17\0\0\0\17\0\0\0\15\0\0\0\12"
+  "\0\0\0\6\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_timer_stopped)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_timer_stopped[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_timer_stopped[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\23\0\0"
+  "\0o\0\0\0\266\0\0\0\344\0\0\0\373\0\0\0\373\0\0\0\345\0\0\0\270\0\0\0"
+  "t\0\0\0\31\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\205\0\0\0\373\207"
+  "\207\207\377\300\300\300\377\323\323\323\377\326\326\326\377\325\325"
+  "\325\377\322\322\322\377\275\275\275\377\204\204\204\377\0\0\0\374\0"
+  "\0\0\217\0\0\0\10\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0\314\223\223\223\377\324\324\324\377"
+  "\342\342\342\377\365\365\365\377\374\374\374\377\374\374\374\377\374"
+  "\374\374\377\373\373\373\377\363\363\363\377\354\354\354\377\341\341"
+  "\341\377\220\220\220\377\0\0\0\324\0\0\0""6\0\0\0\3\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0\344\277\277\277\377\336\336"
+  "\336\377\360\360\360\377\375\375\375\377\375\375\375\377\375\375\375"
+  "\377\316\316\316\377\310\310\310\377\374\374\374\377\373\373\373\377"
+  "\373\373\373\377\367\367\367\377\350\350\350\377\272\272\272\377\0\0"
+  "\0\352\0\0\0\77\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\314\267\267\267\377\342\342\342\377\373\373\373\377\375\375\375\377"
+  "\375\375\375\377\375\375\375\377\375\375\375\377\277\277\277\377\270"
+  "\270\270\377\373\373\373\377\373\373\373\377\372\372\372\377\371\371"
+  "\371\377\370\370\370\377\350\350\350\377\301\301\301\377\0\0\0\330\0"
+  "\0\0\32\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\205\207\207\207\377\336"
+  "\336\336\377\373\373\373\377\375\375\375\377\375\375\375\377\375\375"
+  "\375\377\375\375\375\377\375\375\375\377\260\260\260\377\251\251\251"
+  "\377\373\373\373\377\373\373\373\377\371\371\371\377\371\371\371\377"
+  "\367\367\367\377\366\366\366\377\345\345\345\377\217\217\217\377\0\0"
+  "\0\242\0\0\0\20\0\0\0\1\0\0\0\0\0\0\0\23\0\0\0\373\324\324\324\377\367"
+  "\367\367\377\375\375\375\377\375\375\375\377\375\375\375\377\375\375"
+  "\375\377\375\375\375\377\375\375\375\377\241\241\241\377\231\231\231"
+  "\377\373\373\373\377\372\372\372\377\371\371\371\377\370\370\370\377"
+  "\367\367\367\377\365\365\365\377\363\363\363\377\350\350\350\377\0\0"
+  "\0\374\0\0\0>\0\0\0\11\0\0\0\0\0\0\0o\207\207\207\377\342\342\342\377"
+  "\374\374\374\377\375\375\375\377\375\375\375\377\375\375\375\377\375"
+  "\375\375\377\376\376\376\377\375\375\375\377\221\221\221\377\212\212"
+  "\212\377\373\373\373\377\372\372\372\377\371\371\371\377\370\370\370"
+  "\377\366\366\366\377\365\365\365\377\363\363\363\377\355\355\355\377"
+  "\216\216\216\377\0\0\0\227\0\0\0\25\0\0\0\0\0\0\0\266\300\300\300\377"
+  "\364\364\364\377\374\374\374\377\374\374\374\377\375\375\375\377\375"
+  "\375\375\377\376\376\376\377\377\377\377\377\376\376\376\377\201\201"
+  "\201\377zzz\377\373\373\373\377\371\371\371\377\370\370\370\377\367\367"
+  "\367\377\365\365\365\377\364\364\364\377\362\362\362\377\357\357\357"
+  "\377\323\323\323\377\0\0\0\314\0\0\0(\0\0\0\0\0\0\0\346\323\323\323\377"
+  "\372\372\372\377\373\373\373\377\374\374\374\377\374\374\374\377\375"
+  "\375\375\377\375\375\375\377\376\376\376\377\375\375\375\377rrr\377k"
+  "kk\377\356\356\356\377\371\371\371\377\370\370\370\377\366\366\366\377"
+  "\364\364\364\377\363\363\363\377\361\361\361\377\357\357\357\377\367"
+  "\367\367\377\0\0\0\354\0\0\0""9\0\0\0\0\0\0\0\373\350\350\350\377\372"
+  "\372\372\377\337\337\337\377\373\373\373\377\374\374\374\377\374\374"
+  "\374\377\374\374\374\377\374\374\374\377\374\374\374\377ccc\377[[[\377"
+  "\313\313\313\377\345\345\345\377\367\367\367\377\365\365\365\377\364"
+  "\364\364\377\362\362\362\377\273\273\273\377\356\356\356\377\370\370"
+  "\370\377\0\0\0\374\0\0\0D\0\0\0\0\0\0\0\373\336\336\336\377\371\371\371"
+  "\377\332\332\332\377\372\372\372\377\373\373\373\377\373\373\373\377"
+  "\373\373\373\377\373\373\373\377\373\373\373\377\221\221\221\377LLL\377"
+  "EEE\377bbb\377\300\300\300\377\335\335\335\377\362\362\362\377\361\361"
+  "\361\377\265\265\265\377\355\355\355\377\370\370\370\377\0\0\0\374\0"
+  "\0\0J\0\0\0\0\0\0\0\346\332\332\332\377\370\370\370\377\371\371\371\377"
+  "\371\371\371\377\371\371\371\377\371\371\371\377\372\372\372\377\372"
+  "\372\372\377\372\372\372\377\352\352\352\377\276\276\276\377ddd\377."
+  "..\377'''\377III\377\361\361\361\377\357\357\357\377\355\355\355\377"
+  "\371\371\371\377\367\367\367\377\0\0\0\355\0\0\0J\0\0\0\0\0\0\0\273\275"
+  "\275\275\377\365\365\365\377\367\367\367\377\370\370\370\377\370\370"
+  "\370\377\370\370\370\377\370\370\370\377\370\370\370\377\370\370\370"
+  "\377\367\367\367\377\366\366\366\377\335\335\335\377\276\276\276\377"
+  "WWW\377xxx\377\357\357\357\377\356\356\356\377\354\354\354\377\371\371"
+  "\371\377\323\323\323\377\0\0\0\316\0\0\0D\0\0\0\0\0\0\0t\177\177\177"
+  "\377\341\341\341\377\366\366\366\377\366\366\366\377\366\366\366\377"
+  "\366\366\366\377\367\367\367\377\366\366\366\377\366\366\366\377\365"
+  "\365\365\377\364\364\364\377\364\364\364\377yyy\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\234"
+  "\0\0\0\0\0\0\0\31\0\0\0\374\320\320\320\377\353\353\353\377\364\364\364"
+  "\377\364\364\364\377\365\365\365\377\364\364\364\377\364\364\364\377"
+  "\364\364\364\377\363\363\363\377\362\362\362\377\361\361\361\377\0\0"
+  "\0\377\351\\\23\377\362g\37\377\356b\32\377\345Y\23\377\333T\22\377\322"
+  "S\27\377\312R\33\377\276D\17\377\0\0\0\377\0\0\0\0\0\0\0\2\0\0\0\217"
+  "\211\211\211\377\324\324\324\377\362\362\362\377\362\362\362\377\362"
+  "\362\362\377\362\362\362\377\362\362\362\377\361\361\361\377\361\361"
+  "\361\377\360\360\360\377\360\360\360\377\0\0\0\377\353a\33\377\376\362"
+  "\353\377\374\346\333\377\350k,\377\337e)\377\370\342\330\377\373\361"
+  "\355\377\300K\30\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\324\253"
+  "\253\253\377\323\323\323\377\360\360\360\377\360\360\360\377\360\360"
+  "\360\377\360\360\360\377\360\360\360\377\357\357\357\377\357\357\357"
+  "\377\356\356\356\377\0\0\0\377\345[\26\377\372\337\322\377\377\377\377"
+  "\377\372\346\334\377\372\344\331\377\377\377\377\377\364\334\322\377"
+  "\275G\23\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0""6\0\0\0\352\253"
+  "\253\253\377\322\322\322\377\344\344\344\377\356\356\356\377\356\356"
+  "\356\377\356\356\356\377\256\256\256\377\255\255\255\377\355\355\355"
+  "\377\0\0\0\377\335U\22\377\342d%\377\371\340\324\377\377\377\377\377"
+  "\377\377\377\377\365\336\323\377\307U\"\377\271B\16\377\0\0\0\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\77\0\0\0\330\202\202\202\377\315\315"
+  "\315\377\331\331\331\377\354\354\354\377\354\354\354\377\354\354\354"
+  "\377\354\354\354\377\353\353\353\377\0\0\0\377\323O\21\377\332a)\377"
+  "\371\343\331\377\377\377\377\377\377\377\377\377\366\344\333\377\304"
+  "W(\377\265@\16\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5"
+  "\0\0\0\32\0\0\0\242\0\0\0\374\210\210\210\377\310\310\310\377\335\335"
+  "\335\377\370\370\370\377\370\370\370\377\367\367\367\377\0\0\0\377\312"
+  "N\23\377\367\341\327\377\377\377\377\377\364\335\323\377\364\335\323"
+  "\377\377\377\377\377\364\342\332\377\262B\23\377\0\0\0\377\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\20\0\0\0>\0\0\0\227\0\0"
+  "\0\314\0\0\0\354\0\0\0\374\0\0\0\374\0\0\0\355\0\0\0\377\302K\26\377"
+  "\370\353\345\377\363\333\321\377\304S\"\377\300R\"\377\361\332\320\377"
+  "\367\353\347\377\255A\25\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\10\0\0\0\25\0\0\0(\0\0\0""9\0\0\0D\0"
+  "\0\0J\0\0\0J\0\0\0\377\267@\16\377\272E\23\377\270C\21\377\266@\16\377"
+  "\263>\15\377\260>\20\377\253\77\23\377\2447\14\377\0\0\0\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0"
+  "\0\6\0\0\0\12\0\0\0\15\0\0\0\17\0\0\0\17\0\0\0\206\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\177"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_trash)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_trash[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_trash[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0R\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "X\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0\220\34\34"
+  "\34\377vvv\377\346\346\346\377\323\323\323\377\303\303\303\377\220\220"
+  "\220\377III\377\0\0\0\377\0\0\0\276\0\0\0,\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\0\0\0\240\0\0\0"
+  "\377\0\0\0\377HG=\377\272\270\246\377\342\342\337\377\361\361\360\377"
+  "\352\351\346\377\362\362\356\377\353\352\345\377\301\300\265\377WVJ\377"
+  "RQF\377\0\0\0\377\0\0\0\377\0\0\0\227\0\0\0""3\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0T\0\0\0\377\250\246\217\377\275\273\241\377\300"
+  "\276\243\377\243\241\212\377ml\\\377||r\377LLI\377EE\77\377DC:\377oo"
+  "g\377\306\305\271\377\266\265\233\377ml]\377\263\261\233\377\247\246"
+  "\216\377\220\217z\377\0\0\0\377\0\0\0E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\252\251\223\377\314\313\265\377\320\316\272\377\325\323"
+  "\301\377\256\255\243\377\224\223\212\377EDB\377##!\377541\377)(#\377"
+  "\36\36\32\377SRF\377\255\254\223\377\222\221\211\377\302\301\257\377"
+  "\261\257\226\377\254\252\222\377\223\222}\377\0\0\0\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\10\10\10\377\321\320\301\377\314\313\265\377\326\325"
+  "\304\377\337\336\321\377\316\315\300\377\254\254\246\377\220\217\212"
+  "\377~}w\377\\\\U\377GF>\377edV\377wve\377\200~o\377\276\275\247\377\265"
+  "\263\232\377\266\265\233\377\265\263\232\377\241\237\210\377\0\0\0\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\331\330\314\377\366\365\362"
+  "\377\333\332\321\377\332\331\316\377\345\344\331\377\320\317\303\377"
+  "\323\323\311\377\312\311\274\377\267\266\246\377\270\266\241\377\260"
+  "\257\226\377\241\237\210\377\271\270\235\377\271\267\235\377\270\266"
+  "\234\377\304\302\251\377\257\255\227\377\213\211v\377\0\0\0\377\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\252\251\230\377\266\266\262\377"
+  "\371\371\367\377\372\372\370\377\364\364\360\377\342\341\332\377\331"
+  "\331\316\377\333\332\317\377\325\323\301\377\323\321\276\377\304\302"
+  "\251\377\300\276\243\377\305\304\254\377\326\325\303\377\315\314\277"
+  "\377\273\272\255\377|zi\377qp`\377\0\0\0\336\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\23\23\23\316\231\230\202\377\257\256\235\377\303\303\276\377"
+  "\336\336\334\377\351\351\350\377\373\373\372\377\375\375\374\377\375"
+  "\375\375\377\374\373\372\377\371\371\367\377\362\362\357\377\352\351"
+  "\343\377\333\332\321\377\300\277\261\377\225\224\204\377xwf\377nm]\377"
+  "[[M\377\0\0\0\315\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\222]\\O\377\223"
+  "\222}\377\243\242\223\377\270\267\246\377\330\327\320\377\333\333\324"
+  "\377\323\322\312\377\310\310\303\377\306\305\275\377\275\274\255\377"
+  "\272\270\250\377\237\236\213\377\216\214x\377\214\213w\377\216\214x\377"
+  "zyh\377lk]\377NME\377\0\0\0y\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""2"
+  "\0\0\0\377BBB\377{{s\377\237\237\226\377\322\321\307\377\334\333\322"
+  "\377\314\313\276\377\321\320\302\377\304\303\266\377\261\257\226\377"
+  "\261\257\226\377\261\257\226\377\232\230\203\377\200\177m\377}|k\377"
+  "ji^\377@@>\377\0\0\0\377\0\0\0""3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\37777-\377\17\17\17\377874\377xxu\377\231\230\223\377\212"
+  "\211~\377\263\262\244\377\252\252\236\377\243\241\212\377\207\206s\377"
+  "\217\215y\377baU\377TTQ\37711.\377\0\0\0\377++#\377\0\0\0\377\0\0\0\17"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377qq]\377WWK\377BB:\377"
+  "&&\40\377!!!\377\33\33\33\377\0\0\0\377$$$\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\26\26\23\377**\"\37700'\377\77\77""4\377\0\0\0\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377zze\377[[Q"
+  "\377\205\205v\377vvk\377\230\230\216\377uuk\377QQF\377\177\177t\377j"
+  "jX\377@@5\377bbQ\377TTE\377>>3\377UUF\37744+\377QQC\377\0\0\0\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\205\205n\377]"
+  "]T\377\221\221\202\377\202\202x\377\252\252\243\377zzq\377NNE\377\212"
+  "\212\200\377||m\377BB7\377``R\377ZZJ\377<<2\377NNA\37755,\377TTE\377"
+  "\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\3\0\0\0\377"
+  "\205\205n\377[[Q\377\254\254\234\377\205\205{\377\273\273\263\377\243"
+  "\243\232\377TTK\377\223\223\212\377\221\221\205\377BB7\377``R\377hhV"
+  "\377AA6\377jjX\377CC7\377jjX\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\1\0\0\0\5\0\0\0\10\0\0\0\377\205\205n\377[[Q\377\244\244\223\377"
+  "\205\205{\377\301\301\266\377\261\261\242\377kk_\377\261\261\242\377"
+  "\235\235\213\377TTE\377\204\204p\377qq^\377CC7\377jjX\377CC7\377jjX\377"
+  "\0\0\0\377\0\0\0\6\0\0\0\3\0\0\0\0\0\0\0\2\0\0\0\12\0\0\0\24\0\0\0\377"
+  "\205\205n\377[[Q\377\245\245\224\377\205\205{\377\302\302\267\377\261"
+  "\261\242\377kk_\377\261\261\242\377\235\235\213\377TTE\377\204\204p\377"
+  "qq^\377CC7\377jjX\377CC7\377jjX\377\0\0\0\377\0\0\0\26\0\0\0\13\0\0\0"
+  "\2\0\0\0\3\0\0\0\26\0\0\0+\0\0\0\377\205\205n\377[[Q\377\235\235\213"
+  "\377\205\205{\377\301\301\266\377\261\261\242\377kk_\377\261\261\242"
+  "\377\235\235\213\377TTE\377\204\204p\377qq^\377CC7\377jjX\377CC7\377"
+  "jjX\377\0\0\0\377\0\0\0""1\0\0\0\32\0\0\0\4\0\0\0\7\0\0\0#\0\0\0I\0\0"
+  "\0\377{{e\377[[Q\377\244\244\223\377\205\205{\377\301\301\266\377\261"
+  "\261\242\377kk_\377\261\261\242\377\235\235\213\377TTE\377\204\204p\377"
+  "qq^\377CC7\377jjX\377CC7\377__O\377\0\0\0\377\0\0\0H\0\0\0*\0\0\0\7\0"
+  "\0\0\12\0\0\0,\0\0\0X\0\0\0\377ffT\377[[Q\377\244\244\223\377\202\202"
+  "x\377\301\301\266\377\261\261\242\377kk_\377\261\261\242\377\235\235"
+  "\213\377TTE\377\204\204p\377qq^\377CC7\377jjX\377II<\377WWH\377\0\0\0"
+  "\377\0\0\0P\0\0\0*\0\0\0\7\0\0\0\6\0\0\0\35\0\0\0C\0\0\0r\0\0\0\377W"
+  "WJ\377}}m\377vvi\377\263\263\250\377\241\241\224\377mma\377\263\263\245"
+  "\377\235\235\213\377TTE\377\204\204p\377iiW\377AA5\377VVG\377DD8\377"
+  "\0\0\0\377\0\0\0\177\0\0\0C\0\0\0\35\0\0\0\4\0\0\0\1\0\0\0\13\0\0\0\34"
+  "\0\0\0""2\0\0\0g\0\0\0\320\0\0\0\377\0\0\0\377YYQ\377XXI\377NN@\377t"
+  "tg\377aaS\377NNA\377II<\377II<\377\0\0\0\377\0\0\0\377\0\0\0\304\0\0"
+  "\0t\0\0\0>\0\0\0%\0\0\0\11\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0\17\0"
+  "\0\0\31\0\0\0\37\0\0\0r\0\0\0\264\0\0\0\302\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\271\0\0\0\217\0\0\0S\0\0\0,"
+  "\0\0\0*\0\0\0\33\0\0\0\10\0\0\0\1\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_trash_full)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_trash_full[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_trash_full[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10"
+  "\10\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\6\6\6\21\6\6\6K\16\16\16\377BBB\377JJJ\377>>>\377,,,\377\0"
+  "\0\0\377\6\6\6>\6\6\6!\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\377\10\10\10"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\6\6\6:\0\0\0\377\0\0\0\377\205\203q\377\360\355\330\377\362\361\351"
+  "\377\356\355\344\377\307\306\272\377SRF\377\0\0\0\377\0\0\0\377\6\6\6"
+  "K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\6\6\6>\20\20\20\377\302\300\245\377\301\277\245"
+  "\377zyg\377HG@\377''%\37765.\377\207\205r\377\240\236\210\377\243\241"
+  "\212\377\245\243\214\377\0\0\0\377\6\6\6!\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0+++\377\323\321\274"
+  "\377\334\332\304\377\342\340\317\377\271\267\242\377db[\377986\377<<"
+  "3\377a`S\377\232\230\203\377\267\265\233\377\263\262\230\377\244\242"
+  "\213\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\350\344\323\377\364\361\351"
+  "\377\362\361\344\377\352\351\332\377\345\342\322\377\325\322\276\377"
+  "\303\301\247\377\257\255\224\377\300\276\244\377\306\304\254\377\270"
+  "\266\234\377ywf\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\10\10\10\377\10\10\10\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\212\211"
+  "u\377\361\355\322\377\373\370\351\377\371\365\355\377\370\367\356\377"
+  "\370\367\354\377\365\363\346\377\354\352\331\377\336\335\313\377\0\0"
+  "\0\377\0\0\0\377BA8\377\0\0\0\377\0\0\0\0\0\0\0>\0\0\0\377\0\0\0W\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\202RQF\377sqe\377"
+  "\237\235\221\377\344\341\310\377\351\345\317\377\342\340\313\377\321"
+  "\321\313\377\216\215\177\377\0\0\0\377\377\377\377\377\301\301\301\377"
+  "\0\0\0\377\0\0\0\240\0\0\0L\0\0\0\377\377\377\377\377\0\0\0\377\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\37\37\33\377440\377"
+  "KID\377hgb\377pof\377kkd\377nl]\377XWK\377++%\377\0\0\0\377\377\377\377"
+  "\377\222\222\222\377\2\2\2\377\0\0\0\377\346\346\346\377\0\0\0\377\0"
+  "\0\0>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0**#\377"
+  "\240\240\225\377MM@\377660\377**&\377//*\377\17\17\15\377\13\13\11\377"
+  "\20\20\15\377(($\377\0\0\0\377\274\274\274\377nnn\377\355\355\355\377"
+  "\0\0\0\377\0\0\0L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0++$\377\245\244\231\377\267\266\256\377qpg\377\241\241\222"
+  "\377tsc\377@@5\377ii[\377%%\36\377\34\34\34\377\354\354\354\377\317\317"
+  "\317\377ooo\377\257\257\257\377\0\0\0\377\0\0\0!\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,,%\377\255\255\243\377\331"
+  "\331\322\377\213\213\177\377\326\325\316\377\210\210{\377XWO\377\177"
+  "\177u\377\0\0\0\377\336\336\336\377\377\377\377\377\336\336\336\377\336"
+  "\336\336\377\311\311\311\377\0\0\0\377\0\0\0\77\0\0\0\1\0\0\0\1\0\0\0"
+  "\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6,,%\377\255\255\243\377\332"
+  "\332\323\377\217\216\201\377\335\335\324\377\254\253\231\377]]R\377i"
+  "i`\377mmm\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\347\347\347\377\223\223\223\377\0\0\0\377\0\0\0+\0\0\0\13\0"
+  "\0\0\7\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\5\0\0\0\21++$\377~~u\377\330\330"
+  "\321\377\215\215\200\377\335\335\323\377\254\253\231\377PPG\377\30\30"
+  "\30\377\311\311\311\377\307\340\307\377x\265x\377\233\310\233\377\377"
+  "\377\377\377\347\347\347\377\306\306\306\377\0\0\0\377\0\0\0U\0\0\0\35"
+  "\0\0\0\27\0\0\0\15\0\0\0\3\0\0\0\1\0\0\0\11\0\0\0\34''!\377CC=\377\216"
+  "\216\206\377^^U\377\332\332\320\377\254\253\231\37755.\377]]]\377\324"
+  "\347\324\377]\246]\377\307\340\307\377\377\377\377\377]\246]\377\215"
+  "\272\215\377\345\345\345\377\206\206\206\377\0\0\0\377\0\0\0G\0\0\0'"
+  "\0\0\0\31\0\0\0\10\0\0\0\1\0\0\0\11\0\0\0\34\4\4\4k\6\6\6\377\6\6\6\377"
+  "BA:\377\217\217{\377zzl\377\0\0\0\377\304\304\304\377s\262s\377\307\340"
+  "\307\377\377\377\377\377\377\377\377\377x\265x\377n\253n\377\345\345"
+  "\345\377\220\220\220\377\0\0\0\377\0\0\0w\0\0\0.\0\0\0\"\0\0\0\16\0\0"
+  "\0\1\0\0\0\5\0\0\0\23\0\0\0&\0\0\0""0\4\4\4y\6\6\6\377\0\0\0\377\17\17"
+  "\17\377\0\0\0\377\327\327\327\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\364\364\364\377S\235S\377"
+  "\277\277\277\377JJJ\377\0\0\0\377\0\0\0""1\0\0\0(\0\0\0\23\0\0\0\0\0"
+  "\0\0\1\0\0\0\6\0\0\0\23\0\0\0\40\0\0\0)\0\0\0-\0\0\0.\0\0\0""0\0\0\0"
+  "\377\354\354\354\377x\265x\377\377\377\377\377\377\377\377\377\307\340"
+  "\307\377\377\377\377\377\272\323\272\377\212\270\212\377\212\267\212"
+  "\377qqq\377\0\0\0\377\0\0\0""2\0\0\0*\0\0\0\27\0\0\0\0\0\0\0\0\0\0\0"
+  "\1\0\0\0\3\0\0\0\12\0\0\0\21\0\0\0\26\0\0\0\33\0\0\0\"\0\0\0\377\254"
+  "\254\254\377\354\354\354\377o\254o\377o\254o\377n\253n\377T\235T\377"
+  "\262\314\262\377\212\270\212\377\222\222\222\377aaa\377\0\0\0\377\0\0"
+  "\0""1\0\0\0'\0\0\0\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1"
+  "\0\0\0\2\0\0\0\10\0\0\0\22\0\0\0U\0\0\0\377\0\0\0\377iii\377\200\200"
+  "\200\377}\220}\377\241\241\241\377\203\203\203\377zzz\377CCC\377\0\0"
+  "\0\377\0\0\0w\0\0\0*\0\0\0\34\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\7\0\0\0\21\0\0\0""9\0\0\0p\0"
+  "\0\0\234\0\0\0\304\0\0\0\377\0\0\0\377\0\0\0\377(((\377444\263888q\0"
+  "\0\0#\0\0\0\32\0\0\0\13\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0\14\0\0\0\21\0\0\0\23"
+  "\0\0\0\24\0\0\0\26\0\0\0\26\0\0\0\26\0\0\0\25\0\0\0\25\0\0\0\24\0\0\0"
+  "\17\0\0\0\10\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\4\0\0\0\6\0\0"
+  "\0\6\0\0\0\7\0\0\0\10\0\0\0\7\0\0\0\6\0\0\0\6\0\0\0\4\0\0\0\2\0\0\0\1"
+  "\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_volume)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_volume[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_volume[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0,\0\0\0\377\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0I@f\320I@f+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0-\0\0\0\377"
+  "\0\0\0\377\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0I@f\377I@f+\0\0\0\0I@f+I@f"
+  "\252I@f+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0-\0\0\0\377\256\253\237\377\0\0\0\377\0\0\0"
+  "\21\0\0\0\2\0\0\0\0\0\0\0\0I@f+I@f\377I@f+\0\0\0\0I@f\213I@fO\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0o\0\0\0\377\256\253\237\377\334\331\323\377\0\0\0\377\0\0\0\221"
+  "\0\0\0\4I@f\377I@f+\0\0\0\0I@f\252I@fO\0\0\0\0I@fcI@f\213\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\7\0\0\0\377\233\230\212\377\200~r"
+  "\377\0\0\0\377\256\253\237\377\342\341\334\377\362\362\360\377\0\0\0"
+  "\377\0\0\0\347\0\0\0\12I@f+I@f\377\0\0\0\0I@fOI@f\252\0\0\0\0I@f@I@f"
+  "\252\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\22\0\0\0\377\343\342"
+  "\335\377\266\266\261\377\0\0\0\377\356\355\352\377\352\352\346\377\305"
+  "\301\267\377\0\0\0\377III\377\0\0\0\24\0\0\0\0I@f\377\0\0\0\0I@f+I@f"
+  "\320\0\0\0\0I@f#I@f\320\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0"
+  "\30\0\0\0\377\260\254\234\377\222\216\201\377\0\0\0\377\315\312\301\377"
+  "\270\264\246\377\277\273\257\377\0\0\0\377\11\11\11\377\0\0\0\30\0\0"
+  "\0\0I@f\377\0\0\0\0\0\0\0\0I@f\377\0\0\0\0\0\0\0\0I@f\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\31\0\0\0\377\233\230\212\377\200~"
+  "r\377\0\0\0\377\236\232\214\377\260\254\234\377\260\254\234\377\0\0\0"
+  "\377+++\377\0\0\0\27\0\0\0\0I@f\377\0\0\0\0I@f+I@f\320\0\0\0\0I@f#I@"
+  "f\320\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\31\0\0\0\377yvl\377"
+  "dbY\377\0\0\0\377\236\232\214\377\236\232\214\377\236\232\214\377\0\0"
+  "\0\377\10\10\10\376\0\0\0\27I@f+I@f\377\0\0\0\0I@fOI@f\252\0\0\0\0I@"
+  "f@I@f\252\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\31\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\240\0\0\0\377\215\212}\377\236\232\214\377"
+  "\0\0\0\377\0\0\0\300\0\0\0\30I@f\377I@f+\0\0\0\0I@f\252I@fO\0\0\0\0I"
+  "@fYI@f\213\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\30\0\0\0>\0"
+  "\0\0S\0\0\0S\0\0\0Q\0\0\0r\0\0\0\377~{p\377\0\0\0\377\0\0\0=\0\0\0\32"
+  "\0\0\0\0\0\0\0\0I@f+I@f\320I@f+\0\0\0\0I@f\213I@fO\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\2\0\0\0\22\0\0\0/\0\0\0=\0\0\0;\0\0\0""8\0\0\0C"
+  "\0\0\0o\0\0\0\377\0\0\0\377\0\0\0""1\0\0\0\26\0\0\0\0\0\0\0\0I@f\377"
+  "I@f+\0\0\0\0I@f+I@f\213I@f+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0"
+  "\0\0\7\0\0\0\22\0\0\0\27\0\0\0\26\0\0\0\26\0\0\0%\0\0\0>\0\0\0l\0\0\0"
+  "\377\0\0\0\"\0\0\0\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0I@f\320"
+  "I@f+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2"
+  "\0\0\0\3\0\0\0\3\0\0\0\4\0\0\0\15\0\0\0#\0\0\0;\0\0\0""8\0\0\0\30\0\0"
+  "\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\3\0\0\0\15\0\0\0\37\0\0\0%\0\0\0\21\0\0\0\2\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\3\0\0\0\11\0\0\0\15\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_midi)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_midi[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_midi[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\24\0\0\0n\0\0\0\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\36\0\0"
+  "\0\206\0\0\0$\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0$\0\0\0^\0\0\0u\0\0\0\231\0\0\0\231\0\0\0Q\0\0\0<\0\0\0"
+  "(\0\0\0\17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0.\0\0\0\276\0\0\0X\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "^\0\0\0C\0\0\0u\0\0\0$\0\0\0\24\0\0\0E\0\0\0w\0\0\0}\0\0\0X\0\0\0""7"
+  "\0\0\0\15\0\0\0A\0\0\0\225\0\0\0""8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\271\0\0\0$\0\0\0"
+  "\177\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\0\0\0>\0\0\0\201\0\0\0\311"
+  "\0\0\0\200\0\0\0G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\0\0\0\364\0\0\0b\0\0\0\362\0\0\0"
+  "U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\355\377\377\377\377\0\0\0\355\377\377\377\377"
+  "\0\0\0\356\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\250\250\250\377\0\0\0\355\267\267"
+  "\267\377\0\0\0\356\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0{\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0z\0\0\0\0\0\0\0\0\0\0\0\377\323\321\316\377\274\272\265"
+  "\377\254\252\244\377\230\226\217\377\230\226\217\377\230\226\217\377"
+  "\230\226\217\377\230\226\217\377\230\226\217\377\230\226\217\377\230"
+  "\226\217\377\230\226\217\377\230\226\217\377\230\226\217\377\230\226"
+  "\217\377\230\226\217\377\230\226\217\377zxr\377b`[\377USO\377\0\0\0\377"
+  "\0\0\0\23\0\0\0\0\0\0\0\377\257\255\251\377\234\232\225\377\204\202|"
+  "\377fd]\377fd]\377fd]\377fd]\377fd]\377fd]\377fd]\377fd]\377fd]\377f"
+  "d]\377fd]\377fd]\377fd]\377fd]\377RPJ\377RPJ\377A@;\377\0\0\0\377\0\0"
+  "\0,\0\0\0\3\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0""6\0\0\0\7\0\0\0\377\315\315\315\377VVV\377"
+  "\0\0\0\377\312\312\312\377VVV\377\0\0\0\377\310\310\310\377VVV\377\0"
+  "\0\0\377\305\305\305\377\302\302\302\377\271\271\271\377\303\303\303"
+  "\377VVV\377\0\0\0\377\300\300\300\377VVV\377\0\0\0\377\276\276\276\377"
+  "\270\270\270\377\0\0\0\377\0\0\0\77\0\0\0\14\0\0\0\377\377\377\377\377"
+  "kkk\377\0\0\0\377\374\374\374\377kkk\377\0\0\0\377\370\370\370\377kk"
+  "k\377\0\0\0\377\366\366\366\377\361\361\361\377\346\346\346\377\362\362"
+  "\362\377kkk\377\0\0\0\377\360\360\360\377kkk\377\0\0\0\377\355\355\355"
+  "\377\346\346\346\377\0\0\0\377\0\0\0E\0\0\0\22\0\0\0\377\377\377\377"
+  "\377kkk\377\0\0\0\377\373\373\373\377kkk\377\0\0\0\377\367\367\367\377"
+  "kkk\377\0\0\0\377\365\365\365\377\361\361\361\377\345\345\345\377\362"
+  "\362\362\377kkk\377\0\0\0\377\357\357\357\377kkk\377\0\0\0\377\354\354"
+  "\354\377\345\345\345\377\0\0\0\377\0\0\0D\0\0\0\23\0\0\0\377\377\377"
+  "\377\377kkk\377\0\0\0\377\372\372\372\377kkk\377\0\0\0\377\367\367\367"
+  "\377kkk\377\0\0\0\377\365\365\365\377\360\360\360\377\344\344\344\377"
+  "\362\362\362\377kkk\377\0\0\0\377\356\356\356\377kkk\377\0\0\0\377\353"
+  "\353\353\377\344\344\344\377\0\0\0\377\0\0\0D\0\0\0\20\0\0\0\377\376"
+  "\376\376\377NNN\377\0\0\0\377\372\372\372\377NNN\377\0\0\0\377\366\366"
+  "\366\377NNN\377\0\0\0\377\365\365\365\377\357\357\357\377\344\344\344"
+  "\377\361\361\361\377NNN\377\0\0\0\377\356\356\356\377NNN\377\0\0\0\377"
+  "\353\353\353\377\343\343\343\377\0\0\0\377\0\0\0D\0\0\0\16\0\0\0\377"
+  "\375\375\375\377\374\374\374\377\360\360\360\377\372\372\372\377\367"
+  "\367\367\377\354\354\354\377\366\366\366\377\363\363\363\377\347\347"
+  "\347\377\364\364\364\377\356\356\356\377\343\343\343\377\360\360\360"
+  "\377\352\352\352\377\336\336\336\377\356\356\356\377\346\346\346\377"
+  "\332\332\332\377\353\353\353\377\343\343\343\377\0\0\0\377\0\0\0D\0\0"
+  "\0\16\0\0\0\377\374\374\374\377\373\373\373\377\357\357\357\377\372\372"
+  "\372\377\366\366\366\377\353\353\353\377\366\366\366\377\362\362\362"
+  "\377\347\347\347\377\363\363\363\377\356\356\356\377\342\342\342\377"
+  "\360\360\360\377\351\351\351\377\336\336\336\377\355\355\355\377\345"
+  "\345\345\377\331\331\331\377\352\352\352\377\342\342\342\377\0\0\0\377"
+  "\0\0\0D\0\0\0\16\0\0\0\377\374\374\374\377\373\373\373\377\370\370\370"
+  "\377\373\373\373\377\373\373\373\377\366\366\366\377\373\373\373\377"
+  "\371\371\371\377\366\366\366\377\371\371\371\377\370\370\370\377\363"
+  "\363\363\377\370\370\370\377\366\366\366\377\361\361\361\377\370\370"
+  "\370\377\364\364\364\377\360\360\360\377\370\370\370\377\341\341\341"
+  "\377\0\0\0\377\0\0\0D\0\0\0\16\0\0\0\377\301\301\301\377\300\300\300"
+  "\377\267\267\267\377\301\301\301\377\275\275\275\377\270\270\270\377"
+  "\275\275\275\377\272\272\272\377\264\264\264\377\272\272\272\377\270"
+  "\270\270\377\251\251\251\377\272\272\272\377\263\263\263\377\251\251"
+  "\251\377\266\266\266\377\257\257\257\377\246\246\246\377\264\264\264"
+  "\377\255\255\255\377\0\0\0\377\0\0\0D\0\0\0\16\0\0\0n\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\227\0\0\0\77\0"
+  "\0\0\14\0\0\0\6\0\0\0#\0\0\0>\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0"
+  "\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0"
+  "\0\0D\0\0\0D\0\0\0D\0\0\0\77\0\0\0#\0\0\0\6\0\0\0\1\0\0\0\6\0\0\0\14"
+  "\0\0\0\15\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0"
+  "\16\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\16\0"
+  "\0\0\16\0\0\0\16\0\0\0\16\0\0\0\14\0\0\0\6\0\0\0\1"};
+
+
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (stock_authentication)
+#endif
+#ifdef __GNUC__
+static const guint8 stock_authentication[] __attribute__ ((__aligned__ (4))) = 
+#else
+static const guint8 stock_authentication[] = 
+#endif
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (9216) */
+  "\0\0$\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (192) */
+  "\0\0\0\300"
+  /* width (48) */
+  "\0\0\0""0"
+  /* height (48) */
+  "\0\0\0""0"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\3"
+  "\0\0\0\4\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\1\0\0"
+  "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\1\0\0\0\2\0\0\0\4\0\0\0\7\0\0\0\12\0\0\0\16\0\0\0\21\0\0\0\23\0\0"
+  "\0\23\0\0\0\23\0\0\0\21\0\0\0\16\0\0\0\12\0\0\0\7\0\0\0\4\0\0\0\2\0\0"
+  "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0\0\10\0\0"
+  "\0\16\0\0\0g\0\0\0\253\0\0\0\332\0\0\0\366\1\1\1\377\0\0\0\366\0\0\0"
+  "\334\0\0\0\260\0\0\0q\0\0\0\36\0\0\0\25\0\0\0\16\0\0\0\10\0\0\0\4\0\0"
+  "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\5\0\0\0\14\0\0\0\203\0\0\0\354"
+  "\1\1\1\377\233\233\233\377\320\320\320\377\343\343\343\377\351\351\351"
+  "\377\335\335\335\377\306\306\306\377\221\221\221\377\1\1\1\377\0\0\0"
+  "\356\0\0\0\221\0\0\0#\0\0\0\27\0\0\0\15\0\0\0\5\0\0\0\2\0\0\0\1\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0"
+  "\0\0\7\0\0\0>\0\0\0\320\1\1\1\377\276\276\276\377\352\352\352\377\361"
+  "\361\361\377\363\363\363\377\361\361\361\377\355\355\355\377\352\352"
+  "\352\377\346\346\346\377\342\342\342\377\330\330\330\377\234\234\234"
+  "\377\1\1\1\377\0\0\0\330\0\0\0W\0\0\0\36\0\0\0\20\0\0\0\7\0\0\0\2\0\0"
+  "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\7"
+  "\0\0\0R\0\0\0\366```\377\343\343\343\377\363\363\363\377\360\360\360"
+  "\377\354\354\354\377\346\346\346\377\344\344\344\377\343\343\343\377"
+  "\342\342\342\377\342\342\342\377\342\342\342\377\341\341\341\377\326"
+  "\326\326\377\267\267\267\377EEE\377\0\0\0\367\0\0\0m\0\0\0\"\0\0\0\22"
+  "\0\0\0\7\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0"
+  "\0\5\0\0\0>\0\0\0\366\205\205\205\377\354\354\354\377\363\363\363\377"
+  "\352\352\352\377\343\343\343\377\331\331\331\377\316\316\316\377\302"
+  "\302\302\377\302\302\302\377\314\314\314\377\325\325\325\377\334\334"
+  "\334\377\340\340\340\377\335\335\335\377\310\310\310\377\271\271\271"
+  "\377bbb\377\0\0\0\370\0\0\0Y\0\0\0!\0\0\0\17\0\0\0\5\0\0\0\1\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0\0\15\0\0\0\320^^^\377\354\354\354"
+  "\377\363\363\363\377\350\350\350\377\334\334\334\377\274\274\274\370"
+  "XXX\360\24\24\24\341\0\0\0\333\0\0\0\326\0\0\0\324{{{\352\276\276\276"
+  "\366\340\340\340\377\337\337\337\377\334\334\334\377\303\303\303\377"
+  "\273\273\273\377LLL\377\0\0\0\273\0\0\0""5\0\0\0\33\0\0\0\13\0\0\0\3"
+  "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\10\0\0\0\203\1\1\1\377\342\342"
+  "\342\377\363\363\363\377\351\351\351\377\330\330\330\377\227\227\227"
+  "\354\0\0\0\352\0\0\0\274\0\0\0g\0\0\0Y\0\0\0S\0\0\0Q\0\0\0Y\0\0\0\305"
+  "\234\234\234\351\335\335\335\371\340\340\340\377\330\330\330\377\273"
+  "\273\273\377\266\266\266\377\1\1\1\377\0\0\0x\0\0\0*\0\0\0\23\0\0\0\7"
+  "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\3\0\0\0\15\0\0\0\354\271\271\271\377\363"
+  "\363\363\377\353\353\353\377\330\330\330\377\212\212\212\356\0\0\0\342"
+  "\0\0\0}\0\0\0W\0\0\0F\0\0\0""9\0\0\0""0\0\0\0.\0\0\0""1\0\0\0;\0\0\0"
+  "\224\222\222\222\337\333\333\333\367\337\337\337\377\316\316\316\377"
+  "\263\263\263\377\223\223\223\377\0\0\0\313\0\0\0:\0\0\0\36\0\0\0\13\0"
+  "\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0E\1\1\1\377\352\352\352\377\361\361"
+  "\361\377\335\335\335\377\300\300\300\377\2\2\2\350\0\0\0\214\0\0\0T\0"
+  "\0\0<\0\0\0)\0\0\0\34\0\0\0\25\0\0\0\23\0\0\0\26\0\0\0\37\0\0\0.\0\0"
+  "\0\240\242\242\242\337\345\345\345\377\335\335\335\377\300\300\300\377"
+  "\266\266\266\377\1\1\1\377\0\0\0a\0\0\0)\0\0\0\22\0\0\0\5\0\0\0\1\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\2\0\0\0\11\0\0\0p\240\240\240\377\361\361\361\377\350\350\350\377"
+  "\306\306\306\377\201\201\201\354\0\0\0\322\0\0\0Z\0\0\0>\0\0\0%\0\0\0"
+  "\24\0\0\0\13\0\0\0\7\0\0\0\5\0\0\0\7\0\0\0\15\0\0\0\30\0\0\0""0\2\2\2"
+  "\313\334\334\334\357\352\352\352\377\321\321\321\377\256\256\256\377"
+  "vvv\377\0\0\0\220\0\0\0""4\0\0\0\30\0\0\0\10\0\0\0\2\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\14"
+  "\0\0\0\223\320\320\320\377\362\362\362\377\331\331\331\377\300\300\300"
+  "\377///\345\0\0\0\213\0\0\0J\0\0\0,\0\0\0\25\0\0\0\11\0\0\0\3\0\0\0\1"
+  "\0\0\0\1\0\0\0\2\0\0\0\4\0\0\0\13\0\0\0\31\0\0\0n\202\202\202\340\356"
+  "\356\356\377\334\334\334\377\265\265\265\377\237\237\237\377\0\0\0\274"
+  "\0\0\0>\0\0\0\37\0\0\0\13\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0\0\16\0\0\0\325\341\341\341"
+  "\377\361\361\361\377\314\314\314\377\300\300\300\377\17\17\17\331\0\0"
+  "\0e\0\0\0=\0\0\0\40\0\0\0\16\0\0\0\5\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1"
+  "\0\0\0\2\0\0\0\5\0\0\0\17\0\0\0#\37\37\37\323\354\354\354\377\342\342"
+  "\342\377\300\300\300\377\250\250\250\377\0\0\0\325\0\0\0G\0\0\0%\0\0"
+  "\0\16\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0\336\346\346\346\377\357\357\357\377"
+  "\313\313\313\377\267\267\267\377\0\0\0\322\0\0\0W\0\0\0""6\0\0\0\34\0"
+  "\0\0\15\0\0\0\10\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\10\0\0"
+  "\0\16\0\0\0\35\0\0\0\301\351\351\351\377\345\345\345\377\305\305\305"
+  "\377\256\256\256\377\0\0\0\360\0\0\0O\0\0\0.\0\0\0\25\0\0\0\10\0\0\0"
+  "\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\6\0\0\0"
+  "\17\0\0\0\37\0\0\0\354\332\332\332\377\353\353\353\377\312\312\312\377"
+  "\253\253\253\377\0\0\0\322\0\0\0Y\0\0\0<\0\0\0%\0\0\0\32\0\0\0\26\0\0"
+  "\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\26\0\0\0\32\0\0\0&\0"
+  "\0\0\300\344\344\344\377\343\343\343\377\312\312\312\377\255\254\252"
+  "\377\0\0\0\371\0\0\0Y\0\0\0;\0\0\0\"\0\0\0\23\0\0\0\12\0\0\0\5\0\0\0"
+  "\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5""1\26\7f7\31\10\3777\31\10\377"
+  "7\31\10\377\234R\27\377\270n%\377\271k&\377\247Z\34\3777\31\10\3777\31"
+  "\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10"
+  "\3777\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10\377"
+  "7\31\10\377\245^\37\377\274s*\377\270o'\377\227U\32\3777\31\10\3777\31"
+  "\10\3777\31\10\3777\31\10\377%\20\5_\0\0\0\33\0\0\0\16\0\0\0\5\0\0\0"
+  "\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\3\0\0\0\12""7\31\10\377\311\234b\377\364\341\313"
+  "\377\364\340\311\377\357\333\276\377\354\325\267\377\353\322\264\377"
+  "\352\322\263\377\353\317\260\377\351\316\256\377\350\314\253\377\347"
+  "\314\250\377\350\307\241\377\346\306\241\377\346\306\241\377\346\306"
+  "\241\377\346\306\241\377\346\306\241\377\350\307\241\377\350\307\241"
+  "\377\346\306\241\377\345\305\240\377\345\305\240\377\343\302\232\377"
+  "\340\300\233\377\340\275\223\377\337\272\222\377\337\272\216\377\335"
+  "\263\206\377\325\254|\377\242a\33\3777\31\10\377\0\0\0""1\0\0\0\32\0"
+  "\0\0\12\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0\0\20""7\31\10\377\365\346\320"
+  "\377\352\323\257\377\352\317\257\377\343\302\232\377\332\270\213\377"
+  "\332\266\207\377\330\260\201\377\326\256\177\377\323\253|\377\321\251"
+  "t\377\317\245n\377\314\243m\377\312\237g\377\312\237g\377\312\237g\377"
+  "\312\237g\377\312\237g\377\312\237g\377\312\237g\377\310\236g\377\306"
+  "\233c\377\302\230a\377\302\223[\377\277\220R\377\274\210K\377\275\204"
+  "@\377\272~=\377\263v4\377\247j\"\377\215S\24\3777\31\10\377\0\0\0E\0"
+  "\0\0&\0\0\0\17\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\23""7\31\10\377\365"
+  "\344\316\377\351\316\256\377\347\315\250\377\337\275\220\377\330\261"
+  "\203\377\325\255~\377\322\252{\377\322\246w\377\320\247q\377\315\243"
+  "l\377\310\237h\377\305\233d\377\304\231a\377\304\231a\377\304\231a\377"
+  "\305\232b\377\305\232b\377\305\232b\377\305\232b\377\304\231a\377\302"
+  "\230]\377\301\224Z\377\277\220T\377\276\216O\377\274\207I\377\272\202"
+  "\77\377\272~=\377\261t2\377\247j\"\377\213R\24\3777\31\10\377\0\0\0Q"
+  "\0\0\0.\0\0\0\23\0\0\0\5\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\24""7\31\10\377\365"
+  "\346\320\377\353\317\260\377\351\316\256\377\340\277\227\377\333\264"
+  "\206\377\330\260\201\377\327\257\200\377\322\254{\377\322\246w\377\320"
+  "\246o\377\314\243m\377\265\216\\\377\240~P\377\232yM\377\232yM\377\262"
+  "\214Y\377\307\234d\377\307\234d\377\307\234d\377\305\232b\377\302\227"
+  "_\377\302\223[\377\277\220T\377\276\216O\377\274\204A\377\272\202\77"
+  "\377\265|8\377\257s,\377\243f\36\377\207P\24\3777\31\10\377\0\0\0W\0"
+  "\0\0""2\0\0\0\25\0\0\0\5\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25""7\31\10\377\365"
+  "\344\316\377\352\317\257\377\350\315\251\377\337\274\222\377\325\255"
+  "~\377\322\253}\377\322\252{\377\320\253u\377\320\246o\377\315\243l\377"
+  "\263\216]\377\224tJ\377w^<\377\40\31\20\377\0\0\0\377\40\31\20\377y`"
+  ">\377\310\237h\377\312\237g\377\307\235f\377\305\233d\377\304\231a\377"
+  "\302\230]\377\277\221V\377\276\216O\377\276\206E\377\274\203\77\377\266"
+  "|7\377\252l#\377\215U\24\3777\31\10\377\0\0\0X\0\0\0""3\0\0\0\25\0\0"
+  "\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25""7\31\10\377\365\344\316\377\351\316"
+  "\256\377\350\316\251\377\341\274\224\377\332\264\207\377\330\262\201"
+  "\377\327\257\200\377\322\252{\377\320\250s\377\317\245n\377\222tM\377"
+  "z`>\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377y`\77\377\312"
+  "\237g\377\305\233d\377\305\232b\377\302\227_\377\301\224Z\377\276\217"
+  "Q\377\274\207I\377\272\201=\377\267~:\377\263y4\377\246i!\377\213R\24"
+  "\3777\31\10\377\0\0\0X\0\0\0""3\0\0\0\25\0\0\0\6\0\0\0\1\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5"
+  "\0\0\0\25""7\31\10\377\364\341\313\377\350\315\251\377\345\311\244\377"
+  "\335\272\220\377\325\255~\377\322\252{\377\322\252{\377\322\245u\377"
+  "\321\247p\377\314\243m\377\225uL\377\40\32\20\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377!\32\20\377\327\267\216\377\310\236g\377"
+  "\306\233c\377\304\231a\377\302\227_\377\277\221V\377\275\214L\377\274"
+  "\210E\377\273\202>\377\266|7\377\251k\"\377\215S\24\3777\31\10\377\0"
+  "\0\0X\0\0\0""3\0\0\0\25\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25""7\31\10"
+  "\377\365\344\316\377\351\315\254\377\347\313\246\377\337\274\222\377"
+  "\330\260\201\377\326\256\177\377\322\253}\377\322\252{\377\321\245r\377"
+  "\315\243l\377\226wN\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\341\313\255\377\307\235f\377\304\231a\377\302"
+  "\227_\377\300\223Y\377\276\217Q\377\275\214L\377\274\205C\377\272~=\377"
+  "\263x2\377\247j\"\377\213R\24\3777\31\10\377\0\0\0X\0\0\0""3\0\0\0\25"
+  "\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25""7\31\10\377\364\341\313\377\350"
+  "\314\247\377\345\312\244\377\334\271\217\377\326\256\177\377\323\253"
+  "|\377\322\252{\377\322\245u\377\317\245n\377\312\241k\377\225uL\377\40"
+  "\31\20\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\40\31\17"
+  "\377\336\306\247\377\302\230a\377\301\222V\377\277\220T\377\275\215N"
+  "\377\274\207I\377\272\202\77\377\265}:\377\265x6\377\255r,\377\244f\35"
+  "\377\207P\24\3777\31\10\377\0\0\0X\0\0\0""3\0\0\0\25\0\0\0\6\0\0\0\1"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\1\0\0\0\5\0\0\0\25""7\31\10\377\365\344\316\377\351\315\254\377\347"
+  "\313\246\377\335\272\220\377\325\255~\377\322\253y\377\321\250r\377\317"
+  "\245n\377\312\241k\377\310\237h\377\305\232b\377u\\8\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377u[7\377\335\307\247\377\302\223"
+  "[\377\301\222V\377\277\220R\377\276\216O\377\274\210K\377\274\203\77"
+  "\377\267\177<\377\266|7\377\260u/\377\244h!\377\211Q\24\3777\31\10\377"
+  "\0\0\0X\0\0\0""3\0\0\0\25\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25""7\31\10"
+  "\377\365\346\320\377\352\317\257\377\351\316\252\377\341\274\224\377"
+  "\333\264\206\377\332\263\205\377\332\263\205\377\326\256\177\377\322"
+  "\253y\377\320\250s\377\317\245n\377\314\243m\377z`>\377!\32\20\377\0"
+  "\0\0\377\40\32\21\377\222~c\377\343\317\263\377\324\263\210\377\306\233"
+  "c\377\302\230]\377\301\224Z\377\277\220T\377\275\214L\377\273\204D\377"
+  "\267\177<\377\266z9\377\261v0\377\244h!\377\213R\24\3777\31\10\377\0"
+  "\0\0X\0\0\0""3\0\0\0\25\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25""7\31\10"
+  "\377\364\341\313\377\351\316\252\377\345\311\244\377\332\270\213\377"
+  "\322\254w\377\322\245u\377\321\250r\377\315\244n\377\312\241k\377\310"
+  "\236g\377\304\231a\377\302\230]\377\245}M\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\331\277\236\377\312\243q\377\304\231a\377\302\230a\377\302\223"
+  "[\377\277\221V\377\277\220T\377\275\214L\377\274\210E\377\272\202\77"
+  "\377\267}8\377\263x2\377\255o&\377\211Q\24\3777\31\10\377\0\0\0X\0\0"
+  "\0""3\0\0\0\25\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25""7\31\10\377\365"
+  "\344\316\377\351\316\252\377\347\313\246\377\334\271\217\377\326\256"
+  "\177\377\323\253|\377\322\252{\377\322\245u\377\320\246o\377\312\241"
+  "k\377\310\236g\377\272\223^\377\225tJ\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\305\263\233\377\304\231a\377\304\231a\377\302\230a\377\301\222V\377"
+  "\277\221V\377\276\216O\377\274\207I\377\274\203\77\377\267~:\377\265"
+  "y8\377\255v.\377\257r*\377\207P\24\3777\31\10\377\0\0\0X\0\0\0""3\0\0"
+  "\0\25\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25""7\31\10\377\365\346\320\377"
+  "\352\317\257\377\351\316\252\377\341\275\226\377\333\264\206\377\330"
+  "\260\201\377\326\256\177\377\322\254{\377\320\250s\377\315\243l\377\312"
+  "\240i\377\265\217]\377\203fA\377\0\0\0\377\0\0\0\377\0\0\0\377\217uT"
+  "\377\336\306\247\377\304\231a\377\302\230]\377\301\222V\377\277\220T"
+  "\377\275\215N\377\274\211G\377\274\203\77\377\267~:\377\265y8\377\257"
+  "s,\377\275\202B\377\207P\24\3777\31\10\377\0\0\0X\0\0\0""3\0\0\0\25\0"
+  "\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25""7\31\10\377\364\341\313\377\347"
+  "\314\250\377\346\306\241\377\333\270\216\377\323\253|\377\322\253y\377"
+  "\321\247v\377\320\246o\377\314\242k\377\312\237g\377\305\232b\377\264"
+  "\215Y\377lT3\377\0\0\0\377\0\0\0\377\0\0\0\377mU6\377\336\306\247\377"
+  "\304\231a\377\302\230a\377\302\223[\377\301\222V\377\277\220R\377\274"
+  "\210K\377\273\204D\377\272~=\377\264{7\377\261v0\377\300\215Q\377\211"
+  "N\24\3777\31\10\377\0\0\0X\0\0\0""3\0\0\0\25\0\0\0\6\0\0\0\1\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0"
+  "\0\5\0\0\0\25""7\31\10\377\364\340\311\377\347\313\246\377\346\306\241"
+  "\377\334\263\207\377\321\253v\377\321\245r\377\320\246o\377\315\243l"
+  "\377\310\237h\377\304\231a\377\262\213W\377\254\203N\377\77""0\34\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377@2\36\377\322\275\237\377\310\242q\377"
+  "\302\223[\377\277\221V\377\277\220T\377\275\215N\377\274\211G\377\270"
+  "\200=\377\265|8\377\265x6\377\257t.\377\300\215Q\377\206L\23\3777\31"
+  "\10\377\0\0\0X\0\0\0""3\0\0\0\25\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25"
+  "7\31\10\377\364\341\313\377\346\312\245\377\346\306\241\377\333\264\206"
+  "\377\321\253v\377\320\247q\377\317\245n\377\312\241k\377\310\236g\377"
+  "\304\231a\377\262\207S\377\232uE\377\77""0\34\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\77""0\34\377\211h>\377\332\301\240\377\275\216P\377\275\215"
+  "N\377\274\210K\377\273\204D\377\272\202\77\377\267~:\377\264{7\377\261"
+  "w2\377\255q*\377\312\235c\377\207M\24\3777\31\10\377\0\0\0X\0\0\0""3"
+  "\0\0\0\25\0\0\0\6\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\25""7\31\10\377\364\341\313"
+  "\377\350\314\247\377\344\310\243\377\332\270\215\377\323\253|\377\322"
+  "\246w\377\320\253u\377\320\246o\377\313\242l\377\310\237h\377\267\217"
+  "[\377\177c\77\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377r"
+  "Y8\377\323\263\211\377\302\230a\377\301\222V\377\277\221V\377\276\217"
+  "Q\377\274\210K\377\274\204A\377\265}:\377\265|8\377\261v0\377\314\237"
+  "i\377\211Q\24\3777\31\10\377\0\0\0X\0\0\0""3\0\0\0\25\0\0\0\6\0\0\0\1"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\1\0\0\0\5\0\0\0\25""7\31\10\377\365\344\316\377\350\315\251\377\345"
+  "\311\244\377\334\271\217\377\325\255~\377\322\252{\377\322\253y\377\321"
+  "\247p\377\317\245n\377\312\241k\377\310\237h\377\305\232b\377\305\232"
+  "b\377\305\232b\377\305\232b\377\305\232b\377\305\232b\377\305\232b\377"
+  "\305\232b\377\304\231a\377\302\223[\377\277\221V\377\277\220R\377\274"
+  "\207I\377\274\203\77\377\267~:\377\270\177;\377\274\202=\377\316\241"
+  "k\377\211N\24\3777\31\10\377\0\0\0X\0\0\0""3\0\0\0\25\0\0\0\6\0\0\0\1"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\1\0\0\0\5\0\0\0\25""7\31\10\377\364\341\313\377\350\313\245\377\345"
+  "\311\244\377\332\270\213\377\322\252{\377\322\245u\377\321\247p\377\315"
+  "\244n\377\312\237g\377\307\234d\377\304\231a\377\301\227\\\377\300\223"
+  "Y\377\300\222W\377\300\222W\377\300\222W\377\300\222W\377\300\222W\377"
+  "\300\222W\377\277\221V\377\277\220R\377\276\216O\377\274\211G\377\273"
+  "\204D\377\271\201>\377\265|8\377\270\177;\377\274\205E\377\315\240j\377"
+  "\207P\24\3777\31\10\377\0\0\0X\0\0\0""3\0\0\0\25\0\0\0\6\0\0\0\1\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1"
+  "\0\0\0\5\0\0\0\25""7\31\10\377\364\340\311\377\346\311\243\377\345\305"
+  "\240\377\331\270\210\377\323\246v\377\320\247q\377\317\245n\377\313\242"
+  "l\377\312\237g\377\306\233c\377\305\232b\377\304\231a\377\302\230]\377"
+  "\302\230a\377\302\230a\377\304\231a\377\304\231a\377\305\232b\377\305"
+  "\232b\377\304\231a\377\301\224Z\377\300\223Y\377\277\220T\377\274\214"
+  "M\377\274\211G\377\276\212M\377\304\231a\377\276\213O\377\307\235`\377"
+  "\211N\24\3777\31\10\377\0\0\0W\0\0\0""3\0\0\0\25\0\0\0\5\0\0\0\1\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1"
+  "\0\0\0\5\0\0\0\24""7\31\10\377\364\340\311\377\346\310\241\377\341\303"
+  "\234\377\332\263\205\377\321\245r\377\317\245n\377\315\243l\377\310\237"
+  "h\377\305\233d\377\302\231_\377\302\223[\377\300\222W\377\277\221V\377"
+  "\277\221V\377\300\222W\377\302\223[\377\301\227\\\377\305\232b\377\310"
+  "\236g\377\315\243l\377\315\243l\377\316\241k\377\316\241k\377\322\253"
+  "y\377\322\252w\377\321\245r\377\324\247s\377\277\212L\377\261s0\377\207"
+  "M\24\3777\31\10\377\0\0\0T\0\0\0""0\0\0\0\24\0\0\0\5\0\0\0\1\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0"
+  "\0\5\0\0\0\22""3\27\7\301\262u-\377\307\235`\377\304\232]\377\275\214"
+  "L\377\272~=\377\270~9\377\266z9\377\265x6\377\263u2\377\257w.\377\255"
+  "r,\377\254t+\377\252r)\377\252r)\377\252r)\377\256q)\377\256q)\377\256"
+  "q)\377\256q)\377\252r)\377\251m&\377\252l#\377\245i\"\377\243g\40\377"
+  "\242e\35\377\236a\31\377\233_\30\377\231]\26\377\222V\25\377X0\15\377"
+  "&\21\5\264\0\0\0K\0\0\0*\0\0\0\21\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0\0\16"
+  "+\23\6q1\26\7\3077\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10"
+  "\3777\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10\377"
+  "7\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31"
+  "\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10\3777\31\10"
+  "\3777\31\10\3777\31\10\3777\31\10\3777\31\10\377&\21\5\264\14\5\1e\0"
+  "\0\0;\0\0\0\40\0\0\0\14\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\11\0\0\0\30"
+  "\0\0\0,\0\0\0A\0\0\0O\0\0\0U\0\0\0W\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0"
+  "X\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0"
+  "\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0X\0\0\0W\0\0\0S\0"
+  "\0\0K\0\0\0;\0\0\0'\0\0\0\24\0\0\0\7\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0"
+  "\0\4\0\0\0\15\0\0\0\30\0\0\0$\0\0\0,\0\0\0""0\0\0\0""3\0\0\0""3\0\0\0"
+  "3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0"
+  "\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3"
+  "\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""2\0\0\0""0\0\0\0"
+  "*\0\0\0\40\0\0\0\24\0\0\0\11\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\2\0\0\0\4\0\0\0\11\0\0\0\16\0\0\0\22\0\0\0\24\0\0\0\25\0\0\0\25\0"
+  "\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25"
+  "\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0"
+  "\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\25\0\0\0\24\0"
+  "\0\0\21\0\0\0\14\0\0\0\7\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\4\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0"
+  "\0\5\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6"
+  "\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0"
+  "\0\6\0\0\0\6\0\0\0\6\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\4\0\0\0\3\0\0\0\2"
+  "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0"
+  "\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1"
+  "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0"
+  "\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui/no-pixbuf-csource.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui/no-pixbuf-csource.patch
new file mode 100644
index 0000000..e0765ba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui/no-pixbuf-csource.patch
@@ -0,0 +1,11 @@
+--- libgnomeui-2.6.1.1/configure.in.old	2004-08-04 00:28:43.582266664 +0100
++++ libgnomeui-2.6.1.1/configure.in	2004-08-04 00:29:27.496590672 +0100
+@@ -235,7 +235,7 @@
+ 
+ dnl This is installed from GTK+ 2.0's gdk-pixbuf
+ AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource)
+-test -z "$GDK_PIXBUF_CSOURCE" && AC_MSG_ERROR([
++test -z "$GDK_PIXBUF_CSOURCE" && AC_MSG_WARN([
+ *** You need the gdk-pixbuf-csource tool which is installed
+ *** from GTK+ 2.0's gdk-pixbuf.
+ ***
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui_2.24.3.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui_2.24.3.bb
new file mode 100644
index 0000000..6fb2786
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgnome/libgnomeui_2.24.3.bb
@@ -0,0 +1,7 @@
+require libgnomeui.inc
+
+PR = "r1"
+
+SRC_URI[archive.md5sum] = "ceab6f4370581d1a03c09f15cc103099"
+SRC_URI[archive.sha256sum] = "04c81f3bb5a337cdf3ed1230916f82d29857ee95eb884f58dd2f5c6860efe803"
+GNOME_COMPRESS_TYPE="bz2"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgsf/files/0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgsf/files/0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch
new file mode 100644
index 0000000..bc0090e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgsf/files/0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch
@@ -0,0 +1,103 @@
+From 16d2c2e74350fda5505982fb150e72af7aee7454 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 19 Feb 2016 16:23:56 +0200
+Subject: [PATCH] configure.ac: drop a copy-paste of introspection.m4 macros
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.ac | 78 +-----------------------------------------------------------
+ 1 file changed, 1 insertion(+), 77 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 54f7663..3038535 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -77,83 +77,7 @@ libgsf_reqs="
+ "
+ 
+ PKG_CHECK_MODULES(LIBGSF, $libgsf_reqs)
+-# GObject Introspection
+-GIR_REQ=1.0.0
+-AC_ARG_ENABLE(introspection,
+-          AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
+-                         [Enable introspection for this build]),, 
+-                         [enable_introspection=no])
+-
+-AC_MSG_CHECKING([for gobject-introspection])
+-
+-dnl presence/version checking
+-AS_CASE([$enable_introspection],
+-[no], [
+-    found_introspection="no (disabled, use --enable-introspection to enable)"
+-],
+-[yes],[
+-    PKG_CHECK_EXISTS([gobject-introspection-1.0],,
+-                     AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
+-    PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $GIR_REQ],
+-                     found_introspection=yes,
+-                     AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
+-],
+-[auto],[
+-    PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $GIR_REQ], found_introspection=yes, found_introspection=no)
+-dnl Canonicalize enable_introspection
+-enable_introspection=$found_introspection
+-],
+-[	
+-    AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
+-])
+-
+-AC_MSG_RESULT([$found_introspection])
+-
+-if test "x$found_introspection" = "xyes"; then
+-   dnl You can override INTROSPECTION_GIRDIR and INTROSPECTION_TYPELIBDIR
+-   dnl if you wish.  If you override the latter, you might want to set
+-   dnl GI_TYPELIB_PATH to include the same directory.  For example
+-   dnl
+-   dnl GI_TYPELIB_PATH=$PREFIX/lib64/girepository-1.0
+-   dnl INTROSPECTION_TYPELIBDIR=$GI_TYPELIB_PATH
+-   dnl INTROSPECTION_GIRDIR=$PREFIX/share/gir-1.0
+-   dnl
+-   dnl Note, that unlike binaries produced with libgsf, nothing tells
+-   dnl python where to find libgsf, so you might also need to set
+-   dnl LD_LIBRARY_PATH.
+-
+-   INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+-   INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+-   INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+-   if test "x$INTROSPECTION_GIRDIR" = x; then
+-     INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+-   fi
+-   if test "x$INTROSPECTION_TYPELIBDIR" = x; then
+-     INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
+-   fi
+-   INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+-   INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+-   INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+-else
+-   INTROSPECTION_SCANNER=
+-   INTROSPECTION_COMPILER=
+-   INTROSPECTION_GENERATE=
+-   INTROSPECTION_GIRDIR=
+-   INTROSPECTION_TYPELIBDIR=
+-   INTROSPECTION_CFLAGS=
+-   INTROSPECTION_LIBS=
+-   INTROSPECTION_MAKEFILE=
+-fi
+-AC_SUBST(INTROSPECTION_SCANNER)
+-AC_SUBST(INTROSPECTION_COMPILER)
+-AC_SUBST(INTROSPECTION_GENERATE)
+-AC_SUBST(INTROSPECTION_GIRDIR)
+-AC_SUBST(INTROSPECTION_TYPELIBDIR)
+-AC_SUBST(INTROSPECTION_CFLAGS)
+-AC_SUBST(INTROSPECTION_LIBS)
+-AC_SUBST(INTROSPECTION_MAKEFILE)
+-
+-AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
++GOBJECT_INTROSPECTION_CHECK([1.46.0])
+ dnl we need to change the install directories for distcheck
+ AC_ARG_WITH([gir-dir],
+ 	AS_HELP_STRING(
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.29.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.29.bb
new file mode 100644
index 0000000..be79ec1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.29.bb
@@ -0,0 +1,29 @@
+SUMMARY = "GNOME Structured File Library"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dc7371b50816c96e145fa0f8ade8e24d \
+                    file://COPYING.LIB;md5=61464cfe342798eeced82efe9ae55f63"
+
+SECTION = "libs"
+
+DEPENDS= "libxml2 bzip2 glib-2.0 zlib"
+
+inherit autotools pkgconfig gnome gconf gobject-introspection
+
+SRC_URI += "file://0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch"
+
+SRC_URI[archive.md5sum] = "3056b94bb3281dbc8311371bfc23cf72"
+SRC_URI[archive.sha256sum] = "4d8bca33424eb711acdb6a060cb488b132063d699c4fa201db24c2c89c62529c"
+
+GNOME_COMPRESS_TYPE = "xz"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gdk-pixbuf] = "--with-gdk-pixbuf,--without-gdk-pixbuf,gdk-pixbuf"
+
+EXTRA_OECONF = "\
+    --disable-gtk-doc \
+    --with-bz2 \
+"
+
+RDEPENDS_${PN} = "gconf" 
+
+FILES_${PN} += "${datadir}/thumbnailers"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgtkstylus/files/gtkstylus.sh b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgtkstylus/files/gtkstylus.sh
new file mode 100644
index 0000000..b1302ed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgtkstylus/files/gtkstylus.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+GTK_MODULES=libgtkstylus.so
+
+export GTK_MODULES
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgtkstylus/libgtkstylus_0.5.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgtkstylus/libgtkstylus_0.5.bb
new file mode 100644
index 0000000..3cd7910
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgtkstylus/libgtkstylus_0.5.bb
@@ -0,0 +1,27 @@
+SUMMARY = "GTK plugin for stylus based systems"
+SECTION = "libs"
+DEPENDS = "gtk+"
+LICENSE = "LGPL-2.0+"
+LIC_FILES_CHKSUM = "file://tap.c;beginline=1;endline=20;md5=71756eeb144e9eeb177c69aa672b1635"
+PR = "r4"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://burtonini.com/temp/${BP}.tar.gz \
+    file://gtkstylus.sh"
+SRC_URI[md5sum] = "fa1c82cd9fd2fafd7ff10d78eb5781c5"
+SRC_URI[sha256sum] = "383e0a22a537f653b8d41688277560f95678a042967198085ec7caa1a5cc2f4c"
+
+do_install_append() {
+    install -d ${D}/${sysconfdir}/X11/Xsession.d
+    install -m 755 ${WORKDIR}/gtkstylus.sh ${D}/${sysconfdir}/X11/Xsession.d/45gtkstylus
+}
+
+# Horrible but rpm falls over if you use '*'
+GTKVER = "2.10.0"
+
+FILES_${PN} = "${sysconfdir} \
+               ${libdir}/gtk-2.0/${GTKVER}/modules/libgtkstylus.so.*"
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/${GTKVER}/modules/.debug"
+FILES_${PN}-dev += "${libdir}/gtk-2.0/${GTKVER}/modules/libgtkstylus.so"
+FILES_${PN}-staticdev += "${libdir}/gtk-2.0/${GTKVER}/modules/libgtkstylus.*a"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.30.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.30.0.bb
new file mode 100644
index 0000000..d79b9e5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.30.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "LibGTop2"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://copyright.txt;md5=dbc839bf158d19a20e661db14db7a58c"
+
+inherit gnomebase lib_package gtk-doc distro_features_check gobject-introspection
+# depends on libxau
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[archive.md5sum] = "ee29a9ef60659ebf4b075ac281f71cb2"
+SRC_URI[archive.sha256sum] = "463bcbe5737b1b93f3345ee34abf601e8eb864f507c49ff1921c2737abafc1e5"
+
+DEPENDS = "glib-2.0 intltool-native libxau"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libidl/libidl-native_0.8.14.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libidl/libidl-native_0.8.14.bb
new file mode 100644
index 0000000..a27da5e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libidl/libidl-native_0.8.14.bb
@@ -0,0 +1,10 @@
+SECTION = "libs"
+require libidl_${PV}.bb
+inherit native
+
+PR = "r1"
+
+DEPENDS = "bison-native glib-2.0-native"
+
+SRC_URI[md5sum] = "bb8e10a218fac793a52d404d14adedcb"
+SRC_URI[sha256sum] = "c5d24d8c096546353fbc7cedf208392d5a02afe9d56ebcc1cccb258d7c4d2220"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libidl/libidl.inc b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libidl/libidl.inc
new file mode 100644
index 0000000..a402037
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libidl/libidl.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "Library for parsing CORBA IDL files"
+SECTION = "x11/gnome/libs"
+LICENSE = "LGPLv2+"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/libIDL/0.8/libIDL-${PV}.tar.bz2"
+
+S = "${WORKDIR}/libIDL-${PV}"
+
+FILES_${PN} = "${libdir}/*.so.*"
+FILES_${PN}-dev += " ${bindir}"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libidl/libidl_0.8.14.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libidl/libidl_0.8.14.bb
new file mode 100644
index 0000000..86dfcf2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libidl/libidl_0.8.14.bb
@@ -0,0 +1,13 @@
+require libidl.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
+
+DEPENDS = "glib-2.0 flex-native libidl-native"
+
+PR = "r1"
+
+BINCONFIG_GLOB = "*-config-2"
+inherit autotools pkgconfig binconfig
+
+SRC_URI[md5sum] = "bb8e10a218fac793a52d404d14adedcb"
+SRC_URI[sha256sum] = "c5d24d8c096546353fbc7cedf208392d5a02afe9d56ebcc1cccb258d7c4d2220"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck_2.31.0.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck_2.31.0.bb
new file mode 100644
index 0000000..d273e6c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck_2.31.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Window navigation construction toolkit"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+SECTION = "x11/libs"
+DEPENDS = "intltool-native gtk+ gdk-pixbuf-native libxres"
+
+PACKAGECONFIG ??= "startup-notification"
+PACKAGECONFIG[startup-notification] = "--enable-startup-notification,--disable-startup-notification,startup-notification"
+
+inherit gnomebase gobject-introspection
+GNOME_COMPRESS_TYPE = "xz"
+SRC_URI[archive.md5sum] = "f03e1139296e2a3a92e3b65a3080cd32"
+SRC_URI[archive.sha256sum] = "83f732d20781fc88b22cdc6aaf2d4f388db6d3d4ff28d1a8fd45be9fb7743a9e"
+
+do_install_append() {
+    # to avoid conflicts with libwnck3 remove cmdline tools
+    # if the tools are requrired add libwnck3 to your image
+    rm ${D}${bindir}/wnckprop
+    rm ${D}${bindir}/wnck-urgency-monitor
+    rmdir ${D}${bindir}
+}
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier_5.3.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier_5.3.bb
new file mode 100644
index 0000000..384841a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier_5.3.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Helper lib for keyboard management"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=6e29c688d912da12b66b73e32b03d812"
+
+DEPENDS = "xkbcomp gtk+ iso-codes libxi libxml2"
+
+GNOME_COMPRESS_TYPE = "xz"
+
+inherit gnomebase gettext gobject-introspection
+SRC_URI[archive.md5sum] = "290ea2a8abc40f78a3a16bdae6f02808"
+SRC_URI[archive.sha256sum] = "ebec3bc54b5652838502b96223152fb1cd8fcb14ace5cb02d718fc3276bbd404"
+
+EXTRA_OECONF = "--with-xkb-bin-base=${bindir}"
+
+do_configure_append() {
+    find ${B} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
+    find ${B} -name Makefile | xargs sed -i s:'-I/usr/include':'-I${STAGING_INCDIR}':g
+}
+
+do_compile_append() {
+    sed -i -e s:${STAGING_DIR_TARGET}::g \
+           -e s:/${TARGET_SYS}::g \
+              libxklavier.pc
+}
+
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity/remove-yelp-help-rules-var.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity/remove-yelp-help-rules-var.patch
new file mode 100644
index 0000000..1970e9a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity/remove-yelp-help-rules-var.patch
@@ -0,0 +1,28 @@
+Remove unused variable (YELP_HELP_RULES)
+
+Upstream-Status: Pending
+Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
+
+Index: metacity-2.34.13/doc/creating_themes/Makefile.am
+===================================================================
+--- metacity-2.34.13.orig/doc/creating_themes/Makefile.am
++++ metacity-2.34.13/doc/creating_themes/Makefile.am
+@@ -1,6 +1,5 @@
+ ### This part of Makefile.am can be customized by you.
+ 
+-@YELP_HELP_RULES@
+ 
+ # The name of the directory in /usr/share/gnome/help/, 
+ # and the name of the main .xml file:
+Index: metacity-2.34.13/doc/creating_themes/Makefile.in
+===================================================================
+--- metacity-2.34.13.orig/doc/creating_themes/Makefile.in
++++ metacity-2.34.13/doc/creating_themes/Makefile.in
+@@ -455,7 +455,6 @@ uninstall-am:
+ 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+ 
+-@YELP_HELP_RULES@
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_2.34.13.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_2.34.13.bb
new file mode 100644
index 0000000..662c90d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_2.34.13.bb
@@ -0,0 +1,32 @@
+SECTION = "x11/wm"
+SUMMARY = "Metacity is the boring window manager for the adult in you"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://src/include/main.h;endline=24;md5=c2242df552c880280315989bab626b90"
+
+DEPENDS = "gsettings-desktop-schemas startup-notification gtk+ gconf gdk-pixbuf-native libcanberra gnome-doc-utils libgtop intltool-native"
+PR = "r1"
+
+inherit gnomebase update-alternatives distro_features_check
+# depends on startup-notification which depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+GNOME_COMPRESS_TYPE = "xz"
+
+SRC_URI += "file://remove-yelp-help-rules-var.patch"
+SRC_URI[archive.md5sum] = "6d89b71672d4fa49fc87f83d610d0ef6"
+SRC_URI[archive.sha256sum] = "8cf4dbf0da0a6f36357ce7db7f829ec685908a7792453c662fb8184572b91075"
+
+ALTERNATIVE_${PN} = "x-window-manager"
+ALTERNATIVE_TARGET[x-window-manager] = "${bindir}/metacity"
+ALTERNATIVE_PRIORITY = "10"
+
+EXTRA_OECONF += "--disable-xinerama"
+
+do_configure_prepend() {
+    sed -i -e 's:$ZENITY:$NOZENITY:g' -e 's:-Werror::g' ${S}/configure.in
+}
+
+FILES_${PN} += "${datadir}/themes ${datadir}/gnome-control-center ${datadir}/gnome"
+RDEPENDS_${PN} += "gsettings-desktop-schemas"
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/idl-sysroot.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/idl-sysroot.patch
new file mode 100644
index 0000000..0062cfb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/idl-sysroot.patch
@@ -0,0 +1,7 @@
+Index: nautilus-2.24.2/add-include-prefix
+===================================================================
+--- nautilus-2.24.2.orig/add-include-prefix	2008-10-06 17:22:21.000000000 +0000
++++ nautilus-2.24.2/add-include-prefix	2009-04-09 16:00:05.000000000 +0000
+@@ -1 +1 @@
+-sed -e 's/^/ /' -e 's/  */ /g' -e 's/ / -I /g' -e 's/ -I $//'
++sed -e 's:^: :' -e 's:  *: :g' -e 's: : -I '"$SYSROOT"':g' -e 's: -I '"$SYSROOT"'$::'
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/no-G_DISABLE_DEPRECATED.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/no-G_DISABLE_DEPRECATED.patch
new file mode 100644
index 0000000..43a6152
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/no-G_DISABLE_DEPRECATED.patch
@@ -0,0 +1,44 @@
+From e7233d98c114b03c7c8b96d1f41770452da14aa7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmx.de>
+Date: Mon, 17 Oct 2011 00:59:01 +0200
+Subject: [PATCH] nautilus build fails for newer glib versions
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+build with glib-2.0 v2.30.0 run into errors for at least G_CONST_RETURN missing
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmx.de>
+---
+ configure.in    |    2 +-
+ eel/Makefile.am |    1 -
+ 2 files changed, 1 insertions(+), 2 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 97e171e..859a097 100644
+--- a/configure.in
++++ b/configure.in
+@@ -342,7 +342,7 @@ AC_SUBST(CORE_CFLAGS)
+ CORE_LIBS="`$PKG_CONFIG --libs $CORE_MODULES` $x_libs"
+ AC_SUBST(CORE_LIBS)
+ 
+-DISABLE_DEPRECATED_CFLAGS="-DG_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED"
++DISABLE_DEPRECATED_CFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED"
+ AC_SUBST(DISABLE_DEPRECATED_CFLAGS)
+ 
+ dnl Multimedia keys
+diff --git a/eel/Makefile.am b/eel/Makefile.am
+index b1fe356..c1d56cd 100644
+--- a/eel/Makefile.am
++++ b/eel/Makefile.am
+@@ -10,7 +10,6 @@ INCLUDES =						\
+ 	-DDATADIR=\""$(datadir)"\"			\
+ 	-DSOURCE_DATADIR=\""$(top_srcdir)/data"\"	\
+ 	-DGNOMELOCALEDIR=\""$(prefix)/${DATADIRNAME}/locale"\"	\
+-	-DG_DISABLE_DEPRECATED				\
+ 	-DGDK_PIXBUF_DISABLE_DEPRECATED			\
+ 	-DGMENU_I_KNOW_THIS_IS_UNSTABLE			\
+ 	$(NULL)
+-- 
+1.7.4.4
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/no-try-run-strftime.diff b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/no-try-run-strftime.diff
new file mode 100644
index 0000000..ccd2934
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/no-try-run-strftime.diff
@@ -0,0 +1,28 @@
+--- /tmp/configure.in	2009-04-13 11:26:43.000000000 +0200
++++ nautilus-2.26.1/configure.in	2009-04-13 11:28:37.000000000 +0200
+@@ -375,25 +375,6 @@
+ 
+ dnl ===========================================================================
+ 
+-dnl strftime checks
+-
+-AC_TRY_RUN([#include <time.h>
+-                int main ()
+-                {
+-                  char buf[100];
+-                  struct tm tm = {0};
+-                  tm.tm_year = 99;
+-                  if (strftime(buf, 100, "%EY", &tm) == 4 &&
+-		      strcmp (buf, "1999")==0)
+-                    return 0;
+-                  return 1;
+-                }
+-            ],
+-	    AC_DEFINE(HAVE_STRFTIME_EXTENSION, 1, [Define if strftime supports %E and %O modifiers.])
+-            )
+-
+-dnl ===========================================================================
+-
+ #
+ # Checks for Xft/XRender
+ #
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus3/no-try-run-strftime.diff b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus3/no-try-run-strftime.diff
new file mode 100644
index 0000000..56d2e15
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus3/no-try-run-strftime.diff
@@ -0,0 +1,41 @@
+From dc9c8cf2676c8c91ea0ae250cfedf863352f3ccd Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 24 Jun 2011 20:24:08 +0200
+Subject: [PATCH] hack out check that tries to run generated binaries
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ configure.in |   17 +----------------
+ 1 files changed, 1 insertions(+), 16 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index c3aa371..1d3ecdc 100644
+--- a/configure.in
++++ b/configure.in
+@@ -251,22 +251,7 @@ AC_SUBST(WARNING_CFLAGS)
+ 
+ dnl ===========================================================================
+ 
+-dnl strftime checks
+-
+-AC_TRY_RUN([#include <time.h>
+-                int main ()
+-                {
+-                  char buf[100];
+-                  struct tm tm = {0};
+-                  tm.tm_year = 99;
+-                  if (strftime(buf, 100, "%EY", &tm) == 4 &&
+-		      strcmp (buf, "1999")==0)
+-                    return 0;
+-                  return 1;
+-                }
+-            ],
+-	    AC_DEFINE(HAVE_STRFTIME_EXTENSION, 1, [Define if strftime supports %E and %O modifiers.])
+-            )
++AC_DEFINE(HAVE_STRFTIME_EXTENSION, 1, [Define if strftime supports %E and %O modifiers.])
+ 
+ dnl ==========================================================================
+ 	
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus3_3.2.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus3_3.2.1.bb
new file mode 100644
index 0000000..4655c83
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus3_3.2.1.bb
@@ -0,0 +1,54 @@
+# nautilus OE build file
+# Copyright (C) 2005, Advanced Micro Devices, Inc.  All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+LICENSE="GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f08a446809913fc9b3c718f0eaea0426 \
+                    file://COPYING.LIB;md5=f30a9716ef3762e3467a2f62bf790f0a"
+
+PR = "r4"
+
+DEPENDS = "libnotify gtk+3 libunique gvfs librsvg libexif gnome-desktop3"
+# optional: tracker
+
+# to include nautilus3/no-try-run-strftime.diff before the rest
+FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
+BPN = "nautilus"
+inherit gnome
+
+SRC_URI += "file://no-try-run-strftime.diff"
+SRC_URI[archive.md5sum] = "12314328b59aa1dfd83619f718b81bd5"
+SRC_URI[archive.sha256sum] = "c482d6e7babcc238304cf55586cdf7e2b2806025214a143ed355f0d89b33b154"
+
+EXTRA_OECONF = " --disable-gtk-doc  --disable-update-mimedb --enable-nst-extension"
+export SYSROOT = "${STAGING_DIR_HOST}"
+
+do_configure() {
+    sed -i -e /docs/d ${S}/Makefile.am
+    autotools_do_configure
+}
+
+RDEPENDS_${PN} = "gvfs gvfsd-ftp gvfsd-sftp gvfsd-trash glib-2.0-utils"
+FILES_${PN} += "${datadir}/icons \
+                /usr/libexec/ \
+                ${datadir}/nautilus* \
+                ${datadir}/dbus-1 \
+                ${libdir}/nautilus/extensions*/*.so \
+"
+FILES_${PN}-dbg += "/usr/libexec/.debug \
+    ${libdir}/nautilus/extensions*/.debug"
+
+# Don't make nautils drag us in
+PRIVATE_LIBS = "libnautilus-extension.so.1"
+
+pkg_postinst_${PN} () {
+if [ -n "$D" ]; then
+    exit 1
+fi
+
+glib-compile-schemas ${datadir}/glib-2.0/schemas
+}
+
+# 3.2.1-r4/nautilus-3.2.1/eel/eel-gnome-extensions.c:34:50: fatal error: libgnome-desktop/gnome-desktop-utils.h: No such file or directory
+# 3.2.1-r4/nautilus-3.2.1/eel/eel-editable-label.c:3105:55: error: 'GTK_STOCK_CUT' undeclared (first use in this function)
+PNBLACKLIST[nautilus3] ?= "BROKEN: fails to build, maybe missing dependency on gnome-desktop-utils.h provider"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_2.32.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_2.32.2.bb
new file mode 100644
index 0000000..d29385e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_2.32.2.bb
@@ -0,0 +1,41 @@
+# nautilus OE build file
+# Copyright (C) 2005, Advanced Micro Devices, Inc.  All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+LICENSE="GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7c0048536e43642a1f3a724c2909872b \
+                    file://COPYING.LIB;md5=f30a9716ef3762e3467a2f62bf790f0a"
+
+PR = "r6"
+
+DEPENDS = "gdk-pixbuf gtk+ libunique gvfs librsvg libexif esound gnome-desktop orbit2-native"
+# optional: tracker
+
+inherit gnome gobject-introspection
+
+SRC_URI[archive.md5sum] = "51565aa10d1625dff56e381228346911"
+SRC_URI[archive.sha256sum] = "2d4ff28c7a7aa5d40eb2468149954a564c257a305183773057584d22d15347a2"
+GNOME_COMPRESS_TYPE="bz2"
+
+SRC_URI += "file://idl-sysroot.patch \
+            file://no-try-run-strftime.diff \
+            file://no-G_DISABLE_DEPRECATED.patch \
+"
+
+
+EXTRA_OECONF = " --disable-gtk-doc  --disable-update-mimedb "
+export SYSROOT = "${STAGING_DIR_HOST}"
+
+do_configure() {
+    sed -i -e /docs/d ${S}/Makefile.am
+    autotools_do_configure
+    # We need native orbit-idl with target idl files. No way to say it in a clean way:
+    find ${B} -name Makefile -exec sed -i '/\/usr\/bin\/orbit-idl-2/{s:/usr/bin:${STAGING_BINDIR_NATIVE}:;s:/usr/share:${STAGING_DATADIR}:g}' {} \;
+}
+
+RDEPENDS_${PN} = "gvfs gvfsd-ftp gvfsd-sftp gvfsd-trash glib-networking"
+FILES_${PN} += "${datadir}/icons"
+
+# Don't make nautils3 drag us in
+PRIVATE_LIBS = "libnautilus-extension.so.1"
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/0001-linc2-src-Makefile.am-fix-build-with-glib-2.36.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/0001-linc2-src-Makefile.am-fix-build-with-glib-2.36.patch
new file mode 100644
index 0000000..daf7464
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/0001-linc2-src-Makefile.am-fix-build-with-glib-2.36.patch
@@ -0,0 +1,34 @@
+From 10bd8094e1d94e5c737791c7f4b6b844f535c120 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Fri, 3 May 2013 10:00:16 +0200
+Subject: [PATCH] linc2/src/Makefile.am: fix build with glib 2.36
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Submitted [1]
+
+[1] https://bugzilla.gnome.org/show_bug.cgi?id=696900
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ linc2/src/Makefile.am |    3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+diff --git a/linc2/src/Makefile.am b/linc2/src/Makefile.am
+index 357a2dd..ba0e347 100644
+--- a/linc2/src/Makefile.am
++++ b/linc2/src/Makefile.am
+@@ -12,8 +12,7 @@ INCLUDES =                         \
+ 	-I$(top_builddir)/linc2/include  \
+ 	-I$(top_srcdir)/linc2/include    \
+ 	$(LINC_CFLAGS)             \
+-	$(WARN_CFLAGS)             \
+-	-DG_DISABLE_DEPRECATED
++	$(WARN_CFLAGS)
+ 
+ if OS_WIN32
+ else
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/0002-Use-AM_CPPFLAGS-instead-of-INCLUDES-and-fix-problem-.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/0002-Use-AM_CPPFLAGS-instead-of-INCLUDES-and-fix-problem-.patch
new file mode 100644
index 0000000..7993abb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/0002-Use-AM_CPPFLAGS-instead-of-INCLUDES-and-fix-problem-.patch
@@ -0,0 +1,42 @@
+From d91dbb42dc3b6073720027f68827acd0abee6d75 Mon Sep 17 00:00:00 2001
+From: Kjartan Maraas <kmaraas@gnome.org>
+Date: Tue, 14 May 2013 13:29:53 +0200
+Subject: [PATCH] Use AM_CPPFLAGS instead of INCLUDES and fix problem using
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Backport [1]
+
+[1] https://git.gnome.org/browse/ORBit2/commit/test/everything/Makefile.am?id=d91dbb42dc3b6073720027f68827acd0abee6d75
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ test/everything/Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/everything/Makefile.am b/test/everything/Makefile.am
+index 32beb36..cb4b1d6 100644
+--- a/test/everything/Makefile.am
++++ b/test/everything/Makefile.am
+@@ -10,7 +10,7 @@ EVERYTHING_IDLOUT =          \
+ 	$(EVERYTHING_BUILT)  \
+ 	everything-imodule.c
+ 
+-INCLUDES =                                 \
++AM_CPPFLAGS =                              \
+ 	-I$(top_srcdir)/include            \
+ 	-I$(top_builddir)/include          \
+ 	-I$(top_builddir)/src              \
+@@ -78,7 +78,7 @@ include $(top_srcdir)/Makefile.shared
+ BUILT_SOURCES = ${EVERYTHING_BUILT} everything-imodule.c
+ CLEANFILES = ${BUILT_SOURCES} iorfile
+ 
+-TESTS = $(srcdir)/test.sh
++TESTS = $(top_builddir)/test/everything/test.sh
+ 
+ EXTRA_DIST = $(IDL_FILES) test.sh $(included_src)
+ 
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/configure-lossage.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/configure-lossage.patch
new file mode 100644
index 0000000..5fc1de5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/configure-lossage.patch
@@ -0,0 +1,37 @@
+--- ORBit2-2.14.17/configure.in-orig	2009-01-10 09:36:18.000000000 -0800
++++ ORBit2-2.14.17/configure.in	2009-06-17 15:10:59.000000000 -0700
+@@ -217,20 +217,20 @@ dnl
+ dnl   So many people with broken linking setups asked about this
+ dnl it turned out to be necessary to check for this.
+ dnl
+-dofus_save_libs="$LIBS"
+-LIBS="$ORBIT_LIBS $LIBS"
+-AC_TRY_RUN([ #include <stdio.h>
+-             main ()
+-             {
+-               return 0;
+-             } ],,
+-           AC_MSG_ERROR([
+-Linking is badly borked on your system. Please ensure your library path is correct
+-Check config.log for details - check near the end of the log above 'failed program was'
+-Alternatively ensure that your /etc/ld.so.conf (and/or LD_LIBRARY_PATH) includes the
+-prefix you're compiling on: '${prefix}' ]), 
+-AC_MSG_WARN([Could not check for borked linking while cross-compiling]))
+-LIBS="$dofus_save_libs"
++dnl dofus_save_libs="$LIBS"
++dnl LIBS="$ORBIT_LIBS $LIBS"
++dnl AC_TRY_RUN([ #include <stdio.h>
++dnl             main ()
++dnl              {
++dnl                return 0;
++dnl              } ],,
++dnl            AC_MSG_ERROR([
++dnl Linking is badly borked on your system. Please ensure your library path is correct
++dnl Check config.log for details - check near the end of the log above 'failed program was'
++dnl Alternatively ensure that your /etc/ld.so.conf (and/or LD_LIBRARY_PATH) includes the
++dnl prefix you're compiling on: '${prefix}' ]), 
++dnl AC_MSG_WARN([Could not check for borked linking while cross-compiling]))
++dnl LIBS="$dofus_save_libs"
+ 
+ orig_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $ORBIT_CFLAGS"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/pkgconfig-fix.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/pkgconfig-fix.patch
new file mode 100644
index 0000000..f629e50
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2/pkgconfig-fix.patch
@@ -0,0 +1,12 @@
+diff -urN ORBit2-2.14.12.orig/ORBit-2.0.pc.in ORBit2-2.14.12/ORBit-2.0.pc.in
+--- ORBit2-2.14.12.orig/ORBit-2.0.pc.in	2008-01-29 13:45:22.000000000 +0100
++++ ORBit2-2.14.12/ORBit-2.0.pc.in	2008-09-23 20:13:07.000000000 +0200
+@@ -2,7 +2,7 @@
+ exec_prefix=@exec_prefix@
+ libdir=@libdir@
+ includedir=@includedir@
+-orbit_idl=@bindir@/orbit-idl-2@EXEEXT@
++orbit_idl=@exec_prefix@/bin/orbit-idl-2@EXEEXT@
+ 
+ 
+ Name: ORBit-2.0
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2_2.14.19.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2_2.14.19.bb
new file mode 100644
index 0000000..1afcd49
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/orbit2/orbit2_2.14.19.bb
@@ -0,0 +1,41 @@
+SUMMARY = "CORBA ORB"
+SECTION = "x11/gnome/libs"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+SRC_NAME = "ORBit2"
+SHRT_VER = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}"
+SRC_URI = " \
+    ${GNOME_MIRROR}/${SRC_NAME}/${SHRT_VER}/${SRC_NAME}-${PV}.tar.bz2 \
+    file://configure-lossage.patch \
+    file://pkgconfig-fix.patch \
+    file://0001-linc2-src-Makefile.am-fix-build-with-glib-2.36.patch \
+    file://0002-Use-AM_CPPFLAGS-instead-of-INCLUDES-and-fix-problem-.patch \
+"
+SRC_URI[md5sum] = "7082d317a9573ab338302243082d10d1"
+SRC_URI[sha256sum] = "55c900a905482992730f575f3eef34d50bda717c197c97c08fa5a6eafd857550"
+
+BBCLASSEXTEND = "native"
+
+IDL_COMPILER_DEPENDS = "orbit2-native"
+IDL_COMPILER_DEPENDS_class-native = " "
+DEPENDS = "libidl popt ${IDL_COMPILER_DEPENDS}"
+
+# IDL_COMPILER_DEPENDS_class-native for some reason didn't work and orbit2-native
+# was still in orbit2-native DEPENDS causing circular dependency
+DEPENDS_class-native = "libidl-native popt-native"
+PARALLEL_MAKE = ""
+
+
+FILES_${PN} += "${libdir}/orbit-2.0/*.so"
+FILES_${PN}-dev += "${libdir}/orbit-2.0/*.la"
+FILES_${PN}-staticdev += "${libdir}/orbit-2.0/*.a"
+FILES_${PN}-dbg += "${libdir}/orbit-2.0/.debug"
+
+S = "${WORKDIR}/${SRC_NAME}-${PV}"
+
+LEAD_SONAME = "libORBit-2.so"
+
+inherit autotools pkgconfig gtk-doc
+
+EXTRA_OEMAKE = "IDL_COMPILER='${STAGING_BINDIR_NATIVE}/orbit-idl-2'"
+EXTRA_OEMAKE_class-native = " "
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts.inc b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts.inc
new file mode 100644
index 0000000..fedd223
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts.inc
@@ -0,0 +1,28 @@
+DESCRIPTION = "Address-book application."
+HOMEPAGE = "http://pimlico-project.org/contacts.html"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "GPLv2 & GPLv2+ & GPLv3+ "
+SECTION = "x11"
+DEPENDS = "glib-2.0 gtk+ evolution-data-server intltool-native"
+RDEPENDS_${PN} = "libedata-book"
+
+inherit autotools pkgconfig gconf
+
+EXTRA_OECONF += "--disable-gnome-vfs"
+EXTRA_OEMAKE += "GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1"
+
+do_install_append () {
+    install -d ${D}/${datadir}/pixmaps
+    install -m 0644 ${WORKDIR}/stock_contact.png ${D}/${datadir}/pixmaps
+    install -m 0644 ${WORKDIR}/stock_person.png ${D}/${datadir}/pixmaps
+}
+
+FILES_${PN} += "${datadir}/pixmaps/stock_contact.png \
+        ${datadir}/pixmaps/stock_person.png \
+        ${datadir}/icons/hicolor"
+
+SRC_URI = "file://stock_contact.png \
+           file://stock_person.png \
+           file://contacts-conditionally-install-schema.patch \
+"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/contacts-conditionally-install-schema.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/contacts-conditionally-install-schema.patch
new file mode 100644
index 0000000..2ab7882
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/contacts-conditionally-install-schema.patch
@@ -0,0 +1,37 @@
+Install schema should respect to GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
+
+If GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL is set, the schema should not
+be installed.
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+
+Upstream-Status: Pending
+---
+ data/Makefile.am |    7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/data/Makefile.am b/data/Makefile.am
+index f790823..b6fd643 100644
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -14,13 +14,14 @@ dist_man1_MANS = contacts.1
+ 
+ if HAVE_GCONF
+ install-data-local:
+-	GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
++	if [ "$(GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL)" != "1" ]; then \
++		GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
+ 		$(GCONFTOOL) --makefile-install-rule $(schema_DATA) || \
+ 		(echo ;\
+ 		echo "*****************************************************"; \
+ 		echo "Installation of schemas failed, install them manually"; \
+-		echo "*****************************************************";)
+-		@true
++		echo "*****************************************************";); \
++	fi
+ endif
+ 
+ CLEANFILES = $(desktop_DATA)
+-- 
+1.7.7.6
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/make-382.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/make-382.patch
new file mode 100644
index 0000000..a7cfee3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/make-382.patch
@@ -0,0 +1,16 @@
+Fix for stricter parser in make 3.82. This fix has been pushed to upstream git.
+
+JL - 15/12/10
+
+Upstream-Status: Accepted
+
+Index: git/Makefile.am
+===================================================================
+--- git.orig/Makefile.am
++++ git/Makefile.am
+@@ -11,4 +11,4 @@ DISTCLEANFILES = $(INTLTOOL_BUILT)
+ MAINTAINERCLEANFILES = aclocal.m4 compile config.guess config.sub configure depcomp $(INTLTOOL_BUILT:=.in) install-sh ltmain.sh mkinstalldirs Makefile.in missing
+ 
+ snapshot:
+-        $(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"`
++	$(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"`
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/stock_contact.png b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/stock_contact.png
new file mode 100644
index 0000000..123b448
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/stock_contact.png
Binary files differ
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/stock_person.png b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/stock_person.png
new file mode 100644
index 0000000..2b1328b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts/stock_person.png
Binary files differ
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts_0.9.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts_0.9.bb
new file mode 100644
index 0000000..bdc7f48
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts_0.9.bb
@@ -0,0 +1,18 @@
+require contacts.inc
+
+PR = "r8"
+
+SRC_URI =+ "http://pimlico-project.org/sources/${BPN}/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "aab5affbf93d6fa7b978b323a8d44de0"
+SRC_URI[sha256sum] = "9cacec98f8123993033aaa255f3f4c04c86a1be65e487dd21f0aaa54384a6f6d"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://src/contacts-main.h;endline=18;md5=0371af46fbc72e33575e0072dca5fb19 \
+                    file://src/contacts-dbus.c;endline=18;md5=e4da9ac1a0539fafc7df431010904fd5 \
+                    file://src/contacts-gtk.c;endline=21;md5=1c2e3f55b215635eff4ba76f7696f8ee"
+
+do_configure_prepend () {
+    # It used 8 spaces to instead of a tab, but it doesn't work for us
+    sed -i 's/^        $(MAKE) dist distdir=/\t$(MAKE) dist distdir/' Makefile.am
+}
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts_git.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts_git.bb
new file mode 100644
index 0000000..8a4a071
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/contacts_git.bb
@@ -0,0 +1,19 @@
+require contacts.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://src/contacts-main.h;endline=20;md5=9dc3531c914fb6d6d4a8d1aee4519fef \
+                    file://src/contacts-dbus.c;endline=20;md5=95e02d77f155fbd07a14dba3348b9b03 \
+                    file://src/contacts-gtk.c;endline=23;md5=e1ee9b9e72045f2d3aa44cf17313b46e"
+
+SRCREV = "19853893fdb595de6aa59db0d9dc2f9451ed2933"
+PV = "0.12+git${SRCPV}"
+PR = "r4"
+
+S = "${WORKDIR}/git"
+
+SRC_URI =+ "git://git.gnome.org/${BPN} \
+        file://make-382.patch"
+
+S = "${WORKDIR}/git"
+
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates.inc b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates.inc
new file mode 100644
index 0000000..12d2f83
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates.inc
@@ -0,0 +1,11 @@
+DESCRIPTION = "Dates is a calendar application."
+HOMEPAGE = "http://pimlico-project.org/dates.html"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "GPLv2 & GPLv2+ & LGPLv2+"
+
+SECTION = "x11"
+DEPENDS = "glib-2.0 gtk+ libglade evolution-data-server intltool-native"
+RDEPENDS_${PN} = "libedata-cal"
+
+inherit autotools gettext pkgconfig gtk-icon-cache
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/0001-Update-to-new-evolution-data-server-e_source_-color-.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/0001-Update-to-new-evolution-data-server-e_source_-color-.patch
new file mode 100644
index 0000000..4550d29
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/0001-Update-to-new-evolution-data-server-e_source_-color-.patch
@@ -0,0 +1,72 @@
+From a8ddfc4b91f2ab3d955fe528ddb98ce2c5545795 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sun, 4 Aug 2013 13:44:50 +0200
+Subject: [PATCH] Update to new evolution-data-server e_source_*color APIs
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/dates_gtk.c  | 6 +++---
+ src/dates_main.c | 2 +-
+ src/dates_view.c | 6 +++++-
+ 3 files changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/src/dates_gtk.c b/src/dates_gtk.c
+index 78e71bb..ac539d2 100644
+--- a/src/dates_gtk.c
++++ b/src/dates_gtk.c
+@@ -1072,7 +1072,7 @@ calendar_do_new_dialog (GtkWindow *parent, DatesData *d)
+ #endif
+ 
+ 			/* Set the colour */
+-			e_source_set_color (source, new_colour);
++			e_source_set_color_spec (source, new_colour);
+ 
+ 			/* Set the group for the source */
+ 			e_source_set_group (source, group);
+@@ -1335,7 +1335,7 @@ calendar_do_edit_dialog (GtkWindow *parent, ESource *source, DatesData *d)
+ 	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+ 
+ 	/* Get the colour from the the source */
+-	e_source_get_color (source, &raw_colour);
++	raw_colour = e_source_peek_color_spec (source);
+ 
+ 	/* Munge this into something usable */
+ 	colour.red = (guint16)(((raw_colour & 0xff0000) >> 16) << 8);
+@@ -1459,7 +1459,7 @@ calendar_do_edit_dialog (GtkWindow *parent, ESource *source, DatesData *d)
+ 			new_colour <<= 8;
+ #endif
+ 			/* Update the colour */
+-			e_source_set_color (source, new_colour);
++			e_source_set_color_spec (source, new_colour);
+ 
+ 			/* And the name */
+ 			e_source_set_name (source, (gtk_entry_get_text (GTK_ENTRY (name_entry))));
+diff --git a/src/dates_main.c b/src/dates_main.c
+index ce05fe8..7273c63 100644
+--- a/src/dates_main.c
++++ b/src/dates_main.c
+@@ -112,7 +112,7 @@ dates_load_calendars (DatesData *d)
+ 		system_source = e_source_new (_("Personal"), "system");
+ 
+ 		/* Default Evolution colour */
+-		e_source_set_color (system_source, 0xBECEDD);
++		e_source_set_color_spec (system_source, 0xBECEDD);
+ 
+ 		/* Set the group for the source and put it in the group */
+ 		e_source_set_group (system_source, local_group);
+diff --git a/src/dates_view.c b/src/dates_view.c
+index d65db2f..f8efb9c 100644
+--- a/src/dates_view.c
++++ b/src/dates_view.c
+@@ -4876,7 +4880,7 @@ dates_view_add_calendar (DatesView *view, ECal *ecal)
+ 	cal->text_gc = gdk_gc_new (
+ 		GDK_DRAWABLE (priv->main->window));
+ 
+-	if (e_source_get_color (source, &colour)) {
++	if (colour = e_source_peek_color_spec (source)) {
+ 		GdkColor gcolour, dgcolour, tgcolour;
+ 		gcolour.red = ((colour & 0xFF0000) >> 16) * 0x101;
+ 		gcolour.green = ((colour & 0xFF00) >> 8)  * 0x101;
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/dso_linking_change_build_fix.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/dso_linking_change_build_fix.patch
new file mode 100644
index 0000000..649d59d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/dso_linking_change_build_fix.patch
@@ -0,0 +1,44 @@
+after gcc linking has changed, all the libraries must be explicitely specified 
+This patch avoids these linking errors:
+
+
+| make[2]: Entering directory `/disk0/pokybuild/build1/tmp/work/i586-poky-linux/dates-0.4.11+git0+514185dc1f6588085fda41eb59898b93d0487dd4-r2/git/src'^M
+...
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: e: invalid DSO for symbol `pow@@GLIBC_2.0' definition^M
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libm.so: could not read symbols: Bad value^M
+| collect2: ld returned 1 exit status^M
+| make[2]: *** [dates] Error 1
+
+
+
+| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: z: invalid DSO for symbol `pango_layout_get_extents' definition
+| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libpango-1.0.so: could not read symbols: Bad value
+| collect2: ld returned 1 exit status
+| make[2]: *** [dates] Error 1
+
+
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/11
+
+Update:
+This is identified as a libtool issue. While creating the libgtkdatesview.la 
+file, libtool should have added these needed libraries in there.
+ A bug has been created for this issue: 
+   http://bugzilla.pokylinux.org/show_bug.cgi?id=664
+Nitin A Kamble <nitin.a.kamble@intel.com>
+Date: 2011/01/19
+
+Upstream-Status: Pending
+
+Index: git/src/Makefile.am
+===================================================================
+--- git.orig/src/Makefile.am
++++ git/src/Makefile.am
+@@ -34,6 +34,6 @@ dates_SOURCES = $(platform) 	\
+ 	gconf-bridge.h		\
+ 	gconf-bridge.c
+ 
+-dates_LDADD = $(DATES_LIBS) $(OWL_LIBS) libgtkdatesview.la
++dates_LDADD = $(DATES_LIBS) $(OWL_LIBS) libgtkdatesview.la -lm -lpango-1.0
+ 
+ MAINTAINERCLEANFILES = config.h.in Makefile.in
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/make-382.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/make-382.patch
new file mode 100644
index 0000000..fad3c58
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/make-382.patch
@@ -0,0 +1,18 @@
+Make 3.82 is offended by the use of spaces instead of tabs. This has been fixed
+in upstream git.
+
+JL - 15/12/10
+
+Upstream-Status: Accepted
+
+Index: git/Makefile.am
+===================================================================
+--- git.orig/Makefile.am
++++ git/Makefile.am
+@@ -7,5 +7,5 @@ DISTCLEANFILES = intltool-extract intlto
+ MAINTAINERCLEANFILES = $(DISTCLEANFILES) aclocal.m4 compile config.guess config.sub configure depcomp install-sh ltmain.sh Makefile.in missing
+ 
+ snapshot:
+-        $(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"`
++	$(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"`
+ 
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/uclibc-NL_TIME_FIRST_WEEKDAY-absent.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/uclibc-NL_TIME_FIRST_WEEKDAY-absent.patch
new file mode 100644
index 0000000..6ade470
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates/uclibc-NL_TIME_FIRST_WEEKDAY-absent.patch
@@ -0,0 +1,37 @@
+uclibc has langinfo.h but it does not define _NL_TIME_FIRST_WEEKDAY
+therefore we introduce a check in configure for the this define
+and then we make sure that we use it when it really exists
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+
+Index: git/configure.ac
+===================================================================
+--- git.orig/configure.ac	2011-07-18 10:34:15.000000000 -0700
++++ git/configure.ac	2011-07-18 10:54:26.403798188 -0700
+@@ -98,6 +98,8 @@
+ 		src/libgtkdatesview.pc
+ ])
+ 
++AC_CHECK_DECLS([_NL_TIME_FIRST_WEEKDAY],[],[],[[#include <langinfo.h>]])
++
+ AC_OUTPUT
+ 
+ echo " "
+Index: git/src/dates_view.c
+===================================================================
+--- git.orig/src/dates_view.c	2011-07-18 10:34:15.000000000 -0700
++++ git/src/dates_view.c	2011-07-18 10:58:46.093798136 -0700
+@@ -1505,7 +1505,11 @@
+ 	priv->days = 1;
+ 	priv->months = 0;
+ 	priv->months_in_row = 4;
++#if HAVE_DECL__NL_TIME_FIRST_WEEKDAY
+ 	priv->week_start = *nl_langinfo (_NL_TIME_FIRST_WEEKDAY) - 1;
++#else
++	priv->week_start = 0;
++#endif
+ 	priv->dragbox = TRUE;
+ 	priv->single_click = TRUE;
+ 	priv->double_click = FALSE;
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates_git.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates_git.bb
new file mode 100644
index 0000000..a4a572f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/dates_git.bb
@@ -0,0 +1,19 @@
+require dates.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+                    file://src/dates_view.h;endline=22;md5=29f934f356eb970309cdeb6693b3123a \
+                    file://src/dates_hildon.c;endline=19;md5=63938904198b25de429abb65fbdbdb8a \
+                    file://src/gconf-bridge.c;endline=22;md5=ad7626c6daf4aec590474a243f4912fa"
+
+SRCREV = "514185dc1f6588085fda41eb59898b93d0487dd4"
+PV = "0.4.11+git${SRCPV}"
+PR = "r9"
+
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://git.gnome.org/${BPN} \
+    file://make-382.patch \
+    file://dso_linking_change_build_fix.patch \
+    file://uclibc-NL_TIME_FIRST_WEEKDAY-absent.patch \
+    file://0001-Update-to-new-evolution-data-server-e_source_-color-.patch \
+"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/tasks.inc b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/tasks.inc
new file mode 100644
index 0000000..f8217dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/tasks.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "Task list application"
+HOMEPAGE = "http://pimlico-project.org/tasks.html"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "GPLv2 & GPLv2+"
+
+SECTION = "x11"
+DEPENDS = "glib-2.0 gtk+ evolution-data-server intltool-native"
+
+inherit autotools pkgconfig gtk-icon-cache
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/tasks_0.19.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/tasks_0.19.bb
new file mode 100644
index 0000000..992596e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/tasks_0.19.bb
@@ -0,0 +1,13 @@
+require tasks.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://src/gtk/main.c;endline=19;md5=8659d0b7fd68a2ad6ac30c6539ea5b82 \
+                    file://src/omoko/openmoko-tasks.c;endline=20;md5=04d56a46863c9f4247694f40257a836a \
+                    file://src/hildon/hildon-tasks.c;endline=21;md5=488ddf31dc14b2196dec7cc736211b52"
+
+SRC_URI = "http://pimlico-project.org/sources/${BPN}/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "0afd969758561599fd782e1effb39c08"
+SRC_URI[sha256sum] = "1a7fdc5f95a2193a1a25fdb13f071867fb7e42245ce19ccee4bcccb69e557f2e"
+
+PR = "r3"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/tasks_git.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/tasks_git.bb
new file mode 100644
index 0000000..6a06da3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/pimlico/tasks_git.bb
@@ -0,0 +1,9 @@
+require tasks.inc
+
+SRC_URI = "git://git.gnome.org/${BPN}"
+
+SRCREV = "ea52d46d691c5fce4473ea4e24a35411381f3a65"
+PV = "0.13+git${SRCPV}"
+PR = "r3"
+
+S = "${WORKDIR}/git"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/system-tools/system-tools-backends-2.10.2/add-angstrom-distro.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/system-tools/system-tools-backends-2.10.2/add-angstrom-distro.patch
new file mode 100644
index 0000000..cb03fd8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/system-tools/system-tools-backends-2.10.2/add-angstrom-distro.patch
@@ -0,0 +1,41 @@
+From b5084616a3bc2a0d485f43aeae69c6025f3f857e Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 10 Jun 2011 18:44:21 +0200
+Subject: [PATCH] add support for the angstrom distribtion
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ Utils/Platform.pm |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/Utils/Platform.pm b/Utils/Platform.pm
+index fc76360..8b8c770 100644
+--- a/Utils/Platform.pm
++++ b/Utils/Platform.pm
+@@ -92,6 +92,7 @@ my $PLATFORM_INFO = {
+   "nexenta-1.0"     => [ "Nexenta GNU/Solaris", "1.0", "Ellate" ],
+   "yellowdog-4.1"   => [ "Yellow Dog Linux", "4.1", "Sagitta" ],
+   "guadalinex-v4"   => [ "Guadalinex", "v4", "Toro" ],
++  "angstrom"        => [ "Angstrom", "", "" ],
+ };
+ 
+ sub get_platform_info
+@@ -143,6 +144,7 @@ sub ensure_distro_map
+      "vine-3.1"         => "vine-3.0",
+      "vlos-1.2"         => "gentoo",
+      "nexenta-1.0"      => "solaris-2.11",
++     "angstrom"         => "debian",
+      );
+ 
+   return $metamap{$distro} if ($metamap{$distro});
+@@ -375,6 +377,7 @@ sub guess
+                   [ \&check_ark ],
+                   [ \&check_yoper ],
+                   [ \&check_distro_file, "/etc/yellowdog-release", "yellowdog", "^Yellow Dog Linux release (\\S+)" ],
++                  [ \&check_file_exists, "/etc/angstrom-version", "angstrom" ],
+                  ],
+     "FreeBSD" => [[ \&check_freebsd ]],
+     "SunOS"   => [[ \&check_solaris ]]
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/system-tools/system-tools-backends-2.10.2/system-tools-backends b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/system-tools/system-tools-backends-2.10.2/system-tools-backends
new file mode 100644
index 0000000..704c36d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/system-tools/system-tools-backends-2.10.2/system-tools-backends
@@ -0,0 +1,74 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          system-tools-backends
+# Required-Start:    $local_fs dbus
+# Required-Stop:     $local_fs dbus
+# Should-Start:	     $syslog
+# Should-Stop:       $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      1
+# Short-Description: Gnome System Tools Backends
+# Description:       The Gnome System Tools Backends daemon handles root-needed
+#                    operations to configure your machine with the Gnome System
+#		     Tools.
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/bin/system-tools-backends
+PIDDIR=/var/run
+PIDFILE=$PIDDIR/system-tools-backends.pid
+NAME=system-tools-backends
+DESC="System Tools Backends"
+
+test -x $DAEMON || exit 0
+
+set -e
+
+do_start() {
+    echo "Starting $DESC"
+    start-stop-daemon --start --startas $DAEMON --quiet --pidfile $PIDFILE
+}
+
+do_stop() {
+    echo "Stopping $DESC"
+    start-stop-daemon --stop --oknodo --quiet --pidfile $PIDFILE --startas $DAEMON
+}
+
+case "$1" in
+  start)
+    do_start
+    ;;
+  stop)
+    do_stop
+    ;;
+  #reload)
+    #
+    # If the daemon can reload its config files on the fly
+    # for example by sending it SIGHUP, do it here.
+    #
+    # If the daemon responds to changes in its config file
+    # directly anyway, make this a do-nothing entry.
+    #
+    # echo "Reloading $DESC configuration files."
+    # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+    #   /var/run/$NAME.pid --exec $DAEMON
+  #;;
+  restart|force-reload)
+    #
+    #   If the "reload" option is implemented, move the "force-reload"
+    #   option to the "reload" entry above. If not, "force-reload" is
+    #   just the same as "restart".
+    #
+    do_stop
+    sleep 5
+    do_start
+    ;;
+  *)
+    N=/etc/init.d/$NAME
+    echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
+    exit 1
+    ;;
+esac
+
+exit 0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/system-tools/system-tools-backends_2.10.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/system-tools/system-tools-backends_2.10.2.bb
new file mode 100644
index 0000000..1693f37
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/system-tools/system-tools-backends_2.10.2.bb
@@ -0,0 +1,54 @@
+SUMMARY = "gnome system tools backends"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "dbus dbus-glib glib-2.0 polkit"
+
+inherit gnome pkgconfig update-rc.d gettext
+
+SRC_URI[archive.md5sum] = "edae148b31342aecae035051adc70c74"
+SRC_URI[archive.sha256sum] = "1dbe5177df46a9c7250735e05e77129fe7ec04840771accfa87690111ca2c670"
+
+SRC_URI += " \
+            file://system-tools-backends \
+"
+
+# This needs to move to meta-angstrom
+SRC_URI_append_angstrom = " \
+            file://add-angstrom-distro.patch \
+"
+
+EXTRA_OECONF = " --with-net-dbus=${libdir}/perl5 "
+
+do_configure() {
+    rm missing || true
+    automake --add-missing
+    sed -i -e 's:CC=$(CC):CC="$(CC)":g' ${S}/Net-DBus/Makefile.am
+    sed -i -e 's:CC=$(CC):CC="$(CC)":g' ${S}/Net-DBus/Makefile.in
+    libtoolize --force --install
+    aclocal
+    gnu-configize
+    oe_runconf
+    cp ${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool ${S}
+}
+
+do_install_append () {
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/system-tools-backends ${D}/${sysconfdir}/init.d/    
+}
+
+INITSCRIPT_NAME = "system-tools-backends"
+INITSCRIPT_PARAMS = "start 50 2 3 4 5 . stop 70 1 ."
+
+# Shadow added so there is a full adduser/deluser
+# (Gnome images tend to pull in shadow anyway)
+RDEPENDS_${PN} = "shadow"
+
+FILES_${PN} += " ${sysconfdir}/dbus-1/system.d"
+FILES_${PN} += " ${libdir}/pkgconfig"
+FILES_${PN} += " ${datadir}/dbus-1/system-services"
+FILES_${PN} += " ${datadir}/system-tools-backends-2.0/files"
+FILES_${PN} += " ${datadir}/system-tools-backends-2.0/scripts"
+FILES_${PN} += " ${datadir}/polkit*"
+
+PNBLACKLIST[system-tools-backends] ?= "does not build with distroless qemuarm as reported in 'State of bitbake world' thread, nobody volunteered to fix them"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/themes/gnome-themes/drop-localedir-override.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/themes/gnome-themes/drop-localedir-override.patch
new file mode 100644
index 0000000..e37482b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/themes/gnome-themes/drop-localedir-override.patch
@@ -0,0 +1,22 @@
+Causes locale file to be installed in /usr/locale instead of /usr/share/locale
+
+Apply the same fix as in evolution-data-server:
+https://git.gnome.org/browse/evolution-data-server/commit/configure.ac?id=ec46c763e9342f604b7228c660623d271dfeb101
+
+Upstream-Status: Pending
+
+diff -uNr gnome-themes-2.32.1.orig/configure.in gnome-themes-2.32.1/configure.in
+--- gnome-themes-2.32.1.orig/configure.in	2015-09-18 15:01:25.152055729 +0200
++++ gnome-themes-2.32.1/configure.in	2015-09-18 15:09:03.312072156 +0200
+@@ -19,11 +19,6 @@
+ 
+ AM_GLIB_GNU_GETTEXT
+ 
+-# AM_GLIB_GNU_GETTEXT above subst. $DATADIRNAME
+-# this is the directory where the *.{mo,gmo} files are installed
+-localedir='${prefix}/${DATADIRNAME}/locale'
+-AC_SUBST(localedir)
+-
+ # Workaround to make aclocal get the right flags
+ AC_SUBST(ACLOCAL_AMFLAGS, "\${ACLOCAL_FLAGS}")
+ 
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/themes/gnome-themes/iconpath-option.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/themes/gnome-themes/iconpath-option.patch
new file mode 100644
index 0000000..1b4096d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/themes/gnome-themes/iconpath-option.patch
@@ -0,0 +1,52 @@
+
+The patch is ported from sato-icon-theme.
+
+pkg-config will only search the target sysroot and we want the native script. This 
+patch adds an option to allow the path to the tool to be specified.
+
+Upstream-Status: Pending
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ configure.in |   26 ++++++++++++++++----------
+ 1 file changed, 16 insertions(+), 10 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 5f7a18c..e8fc31e 100644
+--- a/configure.in
++++ b/configure.in
+@@ -74,16 +74,22 @@ AC_ARG_ENABLE([icon-mapping],
+ ICONMAP="true"
+ if test "x$enable_mapping" != "xno"; then
+    UTILS_REQUIRED=0.8.7
+-
+-   AC_MSG_CHECKING([icon-naming-utils >= $UTILS_REQUIRED])
+-   PKG_CHECK_EXISTS(icon-naming-utils >= $UTILS_REQUIRED, have_utils=yes, have_utils=no)
+-   if test "x$have_utils" = "xyes"; then
+-      UTILS_PATH="`$PKG_CONFIG --variable=program_path icon-naming-utils`"
+-      ICONMAP="$UTILS_PATH/icon-name-mapping"
+-      AC_MSG_RESULT([yes])
+-   else
+-	AC_MSG_RESULT([no])
+-   	AC_MSG_ERROR([icon-naming-utils >= $UTILS_REQUIRED is required to build and install gnome-themes])
++   PKG_PROG_PKG_CONFIG()
++   AC_ARG_WITH(iconmap,
++   	    AC_HELP_STRING([--with-iconmap=<dir>], [The location of the icon-name-mapping script to use]),
++   	    ICONMAP=$withval, ICONMAP="")
++   if test "x$ICONMAP" = "x"; then
++      AC_MSG_CHECKING([icon-naming-utils >= $UTILS_REQUIRED])
++      PKG_CHECK_EXISTS(icon-naming-utils >= $UTILS_REQUIRED, have_utils=yes, have_utils=no)
++      if test "x$have_utils" = "xyes"; then
++         UTILS_PATH="`$PKG_CONFIG --variable=program_path icon-naming-utils`"
++         ICONMAP="$UTILS_PATH/icon-name-mapping"
++
++         AC_MSG_RESULT([yes])
++      else
++         AC_MSG_RESULT([no])
++         AC_MSG_ERROR([icon-naming-utils >= $UTILS_REQUIRED is required to build and install gnome-themes"])
++      fi
+    fi
+ fi
+ AC_SUBST(ICONMAP)
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/themes/gnome-themes_2.32.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/themes/gnome-themes_2.32.1.bb
new file mode 100644
index 0000000..3aa743e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/themes/gnome-themes_2.32.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "GNOME themes"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2b543dc97eb7594d026af39d9b54204b"
+
+PR = "r3"
+
+SECTION = "x11/gnome"
+DEPENDS = "gtk-engines icon-naming-utils icon-naming-utils-native glib-2.0 intltool-native libxml-simple-perl-native"
+RDEPENDS_${PN} = "adwaita-icon-theme"
+
+EXTRA_OECONF += "--enable-all-themes \
+    --with-iconmap=${STAGING_LIBEXECDIR_NATIVE}/icon-name-mapping \
+"
+
+inherit gnomebase perlnative
+
+PACKAGES =+ " gnome-theme-crux gnome-theme-highcontrast gnome-theme-highcontrastinverse gnome-theme-highcontrastlargeprint gnome-theme-highcontrastlargeprintinverse gnome-theme-largeprint gnome-theme-mist"
+FILES_gnome-theme-crux = "${datadir}/themes/Crux ${datadir}/icons/Crux"
+FILES_gnome-theme-highcontrast = "${datadir}/themes/HighContrast ${datadir}/icons/HighContrast"
+FILES_gnome-theme-highcontrastinverse = "${datadir}/themes/HighContrastInverse ${datadir}/icons/HighContrastInverse"
+FILES_gnome-theme-highcontrastlargeprint = "${datadir}/themes/HighContrastLargePrint ${datadir}/icons/HighContrastLargePrint"
+FILES_gnome-theme-highcontrastlargeprintinverse = "${datadir}/themes/HighContrastLargePrintInverse ${datadir}/icons/HighContrastLargePrintInverse"
+FILES_gnome-theme-largeprint = "${datadir}/themes/LargePrint ${datadir}/icons/LargePrint"
+FILES_gnome-theme-mist = "${datadir}/themes/Mist ${datadir}/icons/Mist"
+
+FILES_${PN} += "${datadir}/themes ${datadir}/icons"
+
+SRC_URI += "file://iconpath-option.patch \
+    file://drop-localedir-override.patch \
+" 
+SRC_URI[archive.md5sum] = "41db9e3cb25d35af2675c599e67944d1"
+SRC_URI[archive.sha256sum] = "8601ee24c2e096593221cbd6ebdb6686042225a03c02a01c0d67c163f9febd1a"
+GNOME_COMPRESS_TYPE="bz2"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/wv/wv-1.2.4/0001-configure-use-foreign-mode-to-avoid-errors-with-miss.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/wv/wv-1.2.4/0001-configure-use-foreign-mode-to-avoid-errors-with-miss.patch
new file mode 100644
index 0000000..a8c5bc7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/wv/wv-1.2.4/0001-configure-use-foreign-mode-to-avoid-errors-with-miss.patch
@@ -0,0 +1,29 @@
+From eebe1f27f4b27b05eb4b9b55f9df1124acf4d092 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 1 Aug 2014 12:25:24 +0200
+Subject: [PATCH] configure: use 'foreign' mode to avoid errors with missing
+ NEWS/AUTHORS/etc
+
+Upstream-status: Pending
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 3d7eef6..1784bdd 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -41,7 +41,7 @@ VERSION=$WV_VERSION
+ PACKAGE=wv
+ 
+ dnl Initialize automake stuff
+-AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
++AM_INIT_AUTOMAKE([foreign])
+ 
+ # Specify a configuration file
+ AM_CONFIG_HEADER(config.h)
+-- 
+1.9.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/wv/wv-1.2.4/pkgconfig.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/wv/wv-1.2.4/pkgconfig.patch
new file mode 100644
index 0000000..136d893
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/wv/wv-1.2.4/pkgconfig.patch
@@ -0,0 +1,13 @@
+Index: wv-1.2.0/wv-1.0.pc.in
+===================================================================
+--- wv-1.2.0.orig/wv-1.0.pc.in	2008-03-19 22:25:18.000000000 +0000
++++ wv-1.2.0/wv-1.0.pc.in	2008-03-19 22:26:32.000000000 +0000
+@@ -6,5 +6,6 @@
+ Name: wvWare
+ Description: Word Document Filter library and utilities
+ Version: @VERSION@
+-Libs: -L${libdir} -lwv @WMF_LIBS@ @XML_LIBS@ @GLIB_LIBS@ @GSF_LIBS@ @PNG_LIBS@ @ZLIB_LIBS@ @LIBS@ -lm
+-Cflags: -I${includedir}/wv @GSF_CFLAGS@
++Requires: libgsf-1
++Libs: -L${libdir} -lwv @WMF_LIBS@ @XML_LIBS@ @PNG_LIBS@ @ZLIB_LIBS@ @LIBS@ -lm
++Cflags: -I${includedir}/wv
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/wv/wv_1.2.4.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/wv/wv_1.2.4.bb
new file mode 100644
index 0000000..6489c6f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/wv/wv_1.2.4.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Programs for accessing Microsoft Word documents"
+HOMEPAGE = "http://wvware.sourceforge.net/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6cbca01f1c9178aca280e8ff64d85b2f"
+
+DEPENDS = "libgsf glib-2.0 libpng"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/wvware/wv-${PV}.tar.gz \
+           file://pkgconfig.patch \
+           file://0001-configure-use-foreign-mode-to-avoid-errors-with-miss.patch \
+          "
+
+SRC_URI[md5sum] = "c1861c560491f121e12917fa76970ac5"
+SRC_URI[sha256sum] = "673109910e22d4cf94cc8be4dcb9a0c41b5fbdb1736d4b7bdc7778894d57c2d6"
+
+inherit autotools pkgconfig
+
+S = "${WORKDIR}/${PN}-${PV}"
+
+EXTRA_OECONF = ""
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/zenity/files/0001-Makefile.am-don-t-build-help.patch b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/zenity/files/0001-Makefile.am-don-t-build-help.patch
new file mode 100644
index 0000000..50c9cb9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/zenity/files/0001-Makefile.am-don-t-build-help.patch
@@ -0,0 +1,39 @@
+From 17e5606f8c4c8ff26ba18489aad4c484cf8e2949 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Mon, 29 Apr 2013 11:34:27 +0200
+Subject: [PATCH] Makefile.am: don't build help
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+it crashes with:
+
+| warning: failed to load external entity "/usr/share/xml/gnome/xslt/docbook/omf/db2omf.xsl"
+| cannot parse /usr/share/xml/gnome/xslt/docbook/omf/db2omf.xsl
+| make[2]: *** [zenity-bg.omf] Error 1
+| make[2]: Leaving directory `/home/andreas/tmp/oe-core-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/zenity/2.32.1-r2/zenity-2.32.1/help'
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ Makefile.am |    3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 03accc1..caec7f0 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,8 +1,7 @@
+ SUBDIRS = \
+ 	src	\
+ 	po	\
+-	data	\
+-	help
++	data
+ 
+ EXTRA_DIST = \
+ 	autogen.sh		\
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_2.32.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_2.32.1.bb
new file mode 100644
index 0000000..4e01c5c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_2.32.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Display dialog boxes from the commandline and shell scripts"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+
+PR = "r2"
+
+PNBLACKLIST[zenity] ?= "BROKEN: doesn't build with B!=S"
+
+DEPENDS = "gtk+ glib-2.0 libnotify gnome-doc-utils"
+
+inherit gnomebase
+SRC_URI += "file://0001-Makefile.am-don-t-build-help.patch"
+SRC_URI[archive.md5sum] = "aa66ec35451b16e424519b4973082170"
+SRC_URI[archive.sha256sum] = "8838be041a07364b62a4281c971392e4a09bb01bb3237a836ec0457ec0ea18ac"
+
+EXTRA_OECONF += "--disable-scrollkeeper"
+# remove -I/usr/include from zenity_CPPFLAGS
+do_configure_prepend() {
+    sed -i -e '/-I$(includedir)/d' src/Makefile.am
+}
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/florence/files/0001-Fix-glib-includes.patch b/import-layers/meta-openembedded/meta-gnome/recipes-support/florence/files/0001-Fix-glib-includes.patch
new file mode 100644
index 0000000..83e598e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/florence/files/0001-Fix-glib-includes.patch
@@ -0,0 +1,33 @@
+From c8419ef05ff92ffa3de2e626eb6acd5d2df3baa1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Tue, 15 May 2012 13:40:05 +0200
+Subject: [PATCH] Fix glib includes
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Upstream-Status: unknown
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ src/trace.c |    5 +----
+ 1 files changed, 1 insertions(+), 4 deletions(-)
+
+diff --git a/src/trace.c b/src/trace.c
+index 5ea5c13..774c56d 100644
+--- a/src/trace.c
++++ b/src/trace.c
+@@ -21,10 +21,7 @@
+ 
+ #include "trace.h"
+ #include "system.h"
+-#include <glib/gprintf.h>
+-#include <glib/gutils.h>
+-#include <glib/gslist.h>
+-#include <glib/gstrfuncs.h>
++#include <glib.h>
+ #include <stdio.h>
+ #include <stdarg.h>
+ 
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/florence/florence_0.5.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-support/florence/florence_0.5.1.bb
new file mode 100644
index 0000000..71014f0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/florence/florence_0.5.1.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Florence is a virtual keyboard (also called on-screen-keyboard), which allows the user to input text through a touchscreen."
+HOMEPAGE = "http://florence.sourceforge.net/english.html"
+
+#NOTICE: If florence can't find its gconf settings, you need to start florence with --config for one time and save the configuration once.
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+PR = "r1"
+
+DEPENDS = "gtk+ libxml2 libglade librsvg libxtst gconf cairo intltool-native gnome-doc-utils libnotify"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/florence/florence/${PV}/florence-${PV}.tar.bz2 \
+           file://0001-Fix-glib-includes.patch"
+SRC_URI[md5sum] = "56d12e5b47c100d9df172aa5ddc0f609"
+SRC_URI[sha256sum] = "7b06ed84ef2b7b22d8d2cf0c7d013a05409bd82028240ac8719a68b192d5bc62"
+
+inherit gettext autotools gconf pkgconfig
+
+EXTRA_OECONF = "--disable-scrollkeeper --without-docs --without-at-spi --without-panelapplet"
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/0001-configure.ac-fix-paths-to-introspection-tools.patch b/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/0001-configure.ac-fix-paths-to-introspection-tools.patch
new file mode 100644
index 0000000..a645978
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/0001-configure.ac-fix-paths-to-introspection-tools.patch
@@ -0,0 +1,41 @@
+From 8e158c16cd15fff08b42ed86edc55816d3387837 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 19 Feb 2016 16:04:24 +0200
+Subject: [PATCH] configure.ac: fix paths to introspection tools
+
+They need to be prefixed with $PKG_CONFIG_SYSROOT_DIR
+
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.ac | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 6d2b747..3b28463 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -706,9 +706,9 @@ if test "x$found_introspection" = "xyes"; then
+    dnl python where to find libgoffice, so you might also need to set
+    dnl LD_LIBRARY_PATH.
+ 
+-   INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+-   INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+-   INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
++   INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
++   INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
++   INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+    if test "x$INTROSPECTION_GIRDIR" = x; then
+      INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+    fi
+@@ -717,7 +717,7 @@ if test "x$found_introspection" = "xyes"; then
+    fi
+    INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+    INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+-   INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
++   INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+ else
+    INTROSPECTION_SCANNER=
+    INTROSPECTION_COMPILER=
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/c99math.patch b/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/c99math.patch
new file mode 100644
index 0000000..24e6c31
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/c99math.patch
@@ -0,0 +1,12 @@
+Index: goffice-0.7.14/configure.in
+===================================================================
+--- goffice-0.7.14.orig/configure.in	2009-11-14 19:14:37.106109501 +0100
++++ goffice-0.7.14/configure.in	2009-11-14 19:19:40.907333188 +0100
+@@ -66,6 +66,7 @@
+ 
+ AC_ISC_POSIX
+ AC_PROG_CC
++AC_PROG_CC_C99
+ AC_PROG_YACC
+ AM_PROG_LEX
+ AC_PROG_LN_S
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/nodolt.patch b/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/nodolt.patch
new file mode 100644
index 0000000..ea1777a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/nodolt.patch
@@ -0,0 +1,12 @@
+Index: goffice-0.7.14/configure.in
+===================================================================
+--- goffice-0.7.14.orig/configure.in
++++ goffice-0.7.14/configure.in
+@@ -71,7 +71,6 @@ AC_PROG_YACC
+ AM_PROG_LEX
+ AC_PROG_LN_S
+ AM_PROG_LIBTOOL
+-DOLT
+ AC_STDC_HEADERS
+ AC_SYS_LARGEFILE
+ 
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/pcre-8.30.patch b/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/pcre-8.30.patch
new file mode 100644
index 0000000..ae9370c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice/pcre-8.30.patch
@@ -0,0 +1,19 @@
+Taken from http://trac.macports.org/ticket/34812
+
+Fixes abiword build failing with:
+/usr/lib/libgoffice-0.8.so: undefined reference to `pcre_info'
+
+Upstream-Status: pending
+
+http://www.linuxfromscratch.org/blfs/view/cvs/x/goffice.html
+--- a/goffice/utils/regutf8.c.orig	2009-09-05 18:52:09.000000000 -0500
++++ b/goffice/utils/regutf8.c	2012-06-09 18:04:29.000000000 -0500
+@@ -155,7 +155,7 @@
+ 		default: return GO_REG_BADPAT;
+ 		}
+ 	} else {
+-		gor->re_nsub = pcre_info (r, NULL, NULL);
++		gor->re_nsub = pcre_fullinfo (r, NULL, 0, NULL);
+ 		gor->nosub = (cflags & GO_REG_NOSUB) != 0;
+ 		return 0;
+ 	}
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice_0.10.1.bb b/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice_0.10.1.bb
new file mode 100644
index 0000000..919aa7b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/goffice/goffice_0.10.1.bb
@@ -0,0 +1,49 @@
+DESCRIPTION="Gnome Office Library"
+
+LICENSE="GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6dc33ff21e1ba1ac1a2a1069d361e29e"
+
+DEPENDS = "libxml-parser-perl-native glib-2.0 gtk+3 pango cairo libgsf libpcre libxml2 libart-lgpl librsvg intltool"
+
+inherit gnomebase pkgconfig perlnative gobject-introspection
+
+GNOME_COMPRESS_TYPE = "xz"
+
+SRC_URI += "file://0001-configure.ac-fix-paths-to-introspection-tools.patch"
+
+SRC_URI[archive.md5sum] = "90fd17c6fe205b779571e00d9b0b4727"
+SRC_URI[archive.sha256sum] = "5c38f4e81e874cc8e89481b080f77c47c72bfd6fe2526f4fc2ef87c17f96cad0"
+
+FILES_${PN}-dbg += "${libdir}/goffice/${PV}/plugins/*/.debug"
+
+RRECOMMENDS_${PN} = " \
+    goffice-plugin-plot-barcol \
+    goffice-plugin-plot-distrib \
+    goffice-plugin-plot-pie \
+    goffice-plugin-plot-radar \
+    goffice-plugin-plot-surface \
+    goffice-plugin-plot-xy \
+    goffice-plugin-reg-linear \
+    goffice-plugin-reg-logfit \
+    goffice-plugin-smoothing \
+"
+
+FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*${SOLIBS} \
+    ${sysconfdir} ${sharedstatedir} ${localstatedir} \
+    ${base_bindir}/* ${base_sbindir}/* \
+    ${base_libdir}/*${SOLIBS} \
+    ${datadir}/${PN} \
+    ${datadir}/pixmaps ${datadir}/applications \
+    ${datadir}/idl ${datadir}/omf ${datadir}/sounds \
+    ${libdir}/bonobo/servers"
+
+FILES_${PN}-locale = "${libdir}/locale"
+
+PACKAGES_DYNAMIC += "^goffice-plugin-.*"
+
+python populate_packages_prepend () {
+    goffice_libdir = d.expand('${libdir}/goffice/${PV}/plugins/')
+
+    do_split_packages(d, goffice_libdir, '(.*)', 'goffice-plugin-%s', 'Goffice plugin for %s', allow_dirs=True)
+}
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/90tracker b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/90tracker
new file mode 100644
index 0000000..9594b91
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/90tracker
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+/usr/bin/trackerd -m &
+
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/tracker-dbus.service b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/tracker-dbus.service
new file mode 100644
index 0000000..c97f49a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/tracker-dbus.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=tracker DBus session bus handler
+Before=tracker-store.service
+After=dbus.service
+Requires=dbus.service
+BindTo=tracker-store.service
+
+[Service]
+Type=forking
+EnvironmentFile=-/tmp/tracker.env
+ExecStartPre=@BASE_BINDIR@/rm -rf /tmp/tracker.env
+ExecStart=/bin/sh -c 'echo "DBUS_SESSION_BUS_ADDRESS=`dbus-daemon --fork --session --print-address`" > /tmp/tracker.env'
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/tracker-miner-fs.service b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/tracker-miner-fs.service
new file mode 100644
index 0000000..34d9a1e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/tracker-miner-fs.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=tracker-miner-fs
+After=syslog.target local-fs.target udev.service dbus.service tracker-store.service
+Requires=tracker-store.service
+
+[Service]
+Environment=HOME=/home/root
+EnvironmentFile=-/tmp/tracker.env
+ExecStart=@LIBEXECDIR@/tracker-miner-fs
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/tracker-store.service b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/tracker-store.service
new file mode 100644
index 0000000..c5037f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/files/tracker-store.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=tracker-store
+After=syslog.target local-fs.target dbus.service
+Requires=dbus.service tracker-dbus.service
+BindTo=tracker-dbus.service
+
+[Service]
+EnvironmentFile=-/tmp/tracker.env
+ExecStart=@LIBEXECDIR@/tracker-store
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker-0.14.2/0005-Fix-missing-gobject-introspection-checks.patch b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker-0.14.2/0005-Fix-missing-gobject-introspection-checks.patch
new file mode 100644
index 0000000..8701f58
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker-0.14.2/0005-Fix-missing-gobject-introspection-checks.patch
@@ -0,0 +1,17 @@
+diff -Naur ../tracker-0.10.8/configure.ac tracker-0.10.8//configure.ac
+--- ../tracker-0.10.8/configure.ac	2011-04-08 15:03:30.000000000 +0300
++++ tracker-0.10.8//configure.ac	2011-04-11 13:47:16.625914002 +0300
+@@ -218,7 +218,12 @@
+ 
+ # Needed to generate .gir files,
+ # see http://live.gnome.org/GnomeGoals/AddGObjectIntrospectionSupport
+-GOBJECT_INTROSPECTION_CHECK([0.9.5])
++#GOBJECT_INTROSPECTION_CHECK([0.9.5])
++# Satisfy missing introspection foo
++AM_CONDITIONAL(HAVE_INTROSPECTION, test "0" == "1")
++
++INTROSPECTION_CFLAGS=""
++AC_SUBST(INTROSPECTION_CFLAGS)
+ 
+ # NOTE: dbus and dbus-glib-1 are only used now for libtracker-client
+ # which is deprecated and tracker-writeback which will be refactored
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker-0.14.2/enable-sqlite-crosscompile.patch b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker-0.14.2/enable-sqlite-crosscompile.patch
new file mode 100644
index 0000000..5dadda2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker-0.14.2/enable-sqlite-crosscompile.patch
@@ -0,0 +1,13 @@
+Index: tracker-0.10.17/m4/sqlite-threadsafe.m4
+===================================================================
+--- tracker-0.10.17.orig/m4/sqlite-threadsafe.m4
++++ tracker-0.10.17/m4/sqlite-threadsafe.m4
+@@ -45,7 +45,7 @@ int main ()
+   ]])],
+        [ax_cv_sqlite_threadsafe=yes],
+        [ax_cv_sqlite_threadsafe=no],
+-       [ax_cv_sqlite_threadsafe=no])])
++       [ax_cv_sqlite_threadsafe=yes])])
+ 
+   LIBS="$save_LIBS"
+ ])
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker-0.14.2/fix-removable-media-detection.patch b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker-0.14.2/fix-removable-media-detection.patch
new file mode 100644
index 0000000..6c3d9de
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker-0.14.2/fix-removable-media-detection.patch
@@ -0,0 +1,30 @@
+Index: tracker-0.14.2/src/libtracker-miner/tracker-storage.c
+===================================================================
+--- tracker-0.14.2.orig/src/libtracker-miner/tracker-storage.c	2011-08-03 13:53:16.000000000 +0100
++++ tracker-0.14.2/src/libtracker-miner/tracker-storage.c	2012-09-10 08:25:18.322215126 +0100
+@@ -20,6 +20,7 @@
+ #include "config.h"
+ 
+ #include <string.h>
++#include <sys/stat.h>
+ 
+ #include <gio/gio.h>
+ #include <gio/gunixmounts.h>
+@@ -646,6 +647,17 @@
+ 				gchar *content_type;
+ 				gboolean is_multimedia;
+ 				gboolean is_blank;
++                                struct stat st;
++
++                                /*
++                                 * Consider all files under /media to be
++                                 * removable unless the file .this-is-root is
++                                 * present.
++                                 */
++                                if (!strncmp (mount_path, "/media/",
++                                              strlen ("/media/")) &&
++                                    stat ("/media/.this-is-root", &st))
++                                  is_removable = TRUE;
+ 
+ 				content_type = mount_guess_content_type (mount, &is_optical, &is_multimedia, &is_blank);
+ 
diff --git a/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb
new file mode 100644
index 0000000..c52d95e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/recipes-support/tracker/tracker_0.14.2.bb
@@ -0,0 +1,82 @@
+DESCRIPTION = "Tracker is a tool designed to extract information and metadata about your personal data so that it can be searched easily and quickly."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ee31012bf90e7b8c108c69f197f3e3a4"
+DEPENDS = "file gstreamer dbus libexif gettext sqlite3 icu gst-plugins-base libgnome-keyring poppler tiff enca libgsf libunistring giflib taglib bzip2 upower gtk+3 libgee networkmanager"
+
+RDEPENDS_${PN} += " gvfs gsettings-desktop-schemas"
+HOMEPAGE = "http://projects.gnome.org/tracker/"
+
+PR = "r7"
+
+inherit autotools pkgconfig gnomebase gettext gsettings systemd gobject-introspection
+
+VER_DIR = "${@gnome_verdir("${PV}")}"
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/tracker/${VER_DIR}/tracker-${PV}.tar.xz \
+           file://enable-sqlite-crosscompile.patch \
+	   file://fix-removable-media-detection.patch \
+           file://90tracker \
+           file://tracker-store.service \
+           file://tracker-miner-fs.service \
+           file://tracker-dbus.service \
+           "
+
+SYSTEMD_SERVICE_${PN} = " tracker-store.service tracker-miner-fs.service tracker-dbus.service "
+SYSTEMD_AUTO_ENABLE = "disable"
+
+EXTRA_OECONF += " tracker_cv_have_ioprio=yes"
+
+PACKAGECONFIG ?= "nautilus"
+PACKAGECONFIG[nautilus] = "--enable-nautilus-extension,--disable-nautilus-extension,nautilus"
+
+# Disable the desktop-centric miners
+EXTRA_OECONF += "--disable-miner-thunderbird --disable-miner-firefox \
+                 --disable-miner-evolution --disable-miner-flickr"
+
+LEAD_SONAME = "libtrackerclient.so.0"
+
+do_compile_prepend() {
+        export GIR_EXTRA_LIBS_PATH="${B}/src/libtracker-sparql-backend/.libs:${B}/src/libtracker-data/.libs:${B}/src/libtracker-common/.libs"
+}
+
+do_install_append() {
+    cp -PpR ${D}${STAGING_DATADIR}/* ${D}${datadir}/ || true
+#   install -d ${D}/${sysconfdir}/X11/Xsession.d/
+#   install -m 0755 ${WORKDIR}/90tracker  ${D}/${sysconfdir}/X11/Xsession.d/
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/tracker-store.service ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/tracker-miner-fs.service ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/tracker-dbus.service ${D}${systemd_unitdir}/system
+    sed -i -e 's,@LIBEXECDIR@,${libexecdir},g' \
+           -e 's,@BASE_BINDIR@,${base_bindir},g' \
+               ${D}${systemd_unitdir}/system/*.service
+}
+
+PACKAGES =+ "${PN}-tests ${PN}-vala ${PN}-nautilus-extension"
+
+FILES_${PN} += "${datadir}/dbus-1/ \
+                ${libdir}/tracker-${VER_DIR}/*.so.* \
+                ${libdir}/tracker-${VER_DIR}/extract-modules/*.so \
+                ${libdir}/tracker-${VER_DIR}/writeback-modules/*.so \
+                ${datadir}/icons/hicolor/*/apps/tracker.* \
+                ${libdir}/nautilus/extensions-2.0/*.la \
+                ${datadir}/glib-2.0/schemas/* \
+                ${systemd_unitdir}/system/tracker-store.service \
+                ${systemd_unitdir}/system/tracker-miner-fs.service \
+                ${systemd_unitdir}/system/tracker-dbus.service \
+"
+
+FILES_${PN}-dev += "${libdir}/tracker-${VER_DIR}/*.la \
+                    ${libdir}/tracker-${VER_DIR}/*.so \
+                    ${libdir}/tracker-${VER_DIR}/*/*.la \
+                    ${libdir}/tracker-${VER_DIR}/extract-modules/*.la"
+
+FILES_${PN}-staticdev += "${libdir}/nautilus/extensions-2.0/*.a"
+FILES_${PN}-dbg += "${libdir}/*/*/.debug \
+                    ${libdir}/*/.debug"
+FILES_${PN}-tests = "${datadir}/tracker-tests/"
+FILES_${PN}-vala = "${datadir}/vala/"
+FILES_${PN}-nautilus-extension += "${libdir}/nautilus/extensions-2.0/*.so"
+
+SRC_URI[md5sum] = "f3a871beeebf86fd752863ebd22af9ac"
+SRC_URI[sha256sum] = "9b59330aa2e9e09feee587ded895e9247f71fc25f46b023d616d9969314bc7f1"
diff --git a/import-layers/meta-openembedded/meta-gnome/site/arm-64 b/import-layers/meta-openembedded/meta-gnome/site/arm-64
new file mode 100644
index 0000000..f474d2c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/site/arm-64
@@ -0,0 +1,13 @@
+# ORBit2
+ac_cv_alignof_CORBA_boolean=1
+ac_cv_alignof_CORBA_char=1
+ac_cv_alignof_CORBA_double=8
+ac_cv_alignof_CORBA_float=4
+ac_cv_alignof_CORBA_long=4
+ac_cv_alignof_CORBA_long_double=8
+ac_cv_alignof_CORBA_long_long=8
+ac_cv_alignof_CORBA_octet=1
+ac_cv_alignof_CORBA_pointer=4
+ac_cv_alignof_CORBA_short=2
+ac_cv_alignof_CORBA_struct=1
+ac_cv_alignof_CORBA_wchar=2
diff --git a/import-layers/meta-openembedded/meta-gnome/site/x86_64-linux b/import-layers/meta-openembedded/meta-gnome/site/x86_64-linux
new file mode 100644
index 0000000..eba1fee
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gnome/site/x86_64-linux
@@ -0,0 +1,17 @@
+# ORBit2
+ac_cv_alignof_CORBA_boolean=1
+ac_cv_alignof_CORBA_char=1
+ac_cv_alignof_CORBA_double=8
+ac_cv_alignof_CORBA_float=4
+ac_cv_alignof_CORBA_long=4
+ac_cv_alignof_CORBA_long_double=8
+ac_cv_alignof_CORBA_long_long=8
+ac_cv_alignof_CORBA_octet=1
+ac_cv_alignof_CORBA_pointer=8
+ac_cv_alignof_CORBA_short=2
+ac_cv_alignof_CORBA_struct=1
+ac_cv_alignof_CORBA_wchar=2
+
+lf_cv_sane_realloc=yes
+as_cv_unaligned_access=${as_cv_unaligned_access=yes}
+
diff --git a/import-layers/meta-openembedded/meta-gpe/README b/import-layers/meta-openembedded/meta-gpe/README
new file mode 100644
index 0000000..70055af
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/README
@@ -0,0 +1,17 @@
+This layer depends on:
+
+URI: git://github.com/openembedded/oe-core.git
+branch: krogoth
+revision: HEAD
+
+URI: git://github.com/openembedded/meta-oe.git
+branch: krogoth
+revision: HEAD
+
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-gpe][krogoth]' in the subject'
+
+When sending single patches, please using something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-gpe][krogoth][PATCH'
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
diff --git a/import-layers/meta-openembedded/meta-gpe/conf/layer.conf b/import-layers/meta-openembedded/meta-gpe/conf/layer.conf
new file mode 100644
index 0000000..00f3929
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/conf/layer.conf
@@ -0,0 +1,15 @@
+# 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 += "gpe-layer"
+BBFILE_PATTERN_gpe-layer := "^${LAYERDIR}/"
+BBFILE_PRIORITY_gpe-layer = "7"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_gpe-layer = "1"
+
+LAYERDEPENDS_gpe-layer = "core openembedded-layer"
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-graphics/gpe-scap/gpe-scap/0001-Fix-the-ordering-of-LDADD-options-to-fix-a-compilati.patch b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/gpe-scap/gpe-scap/0001-Fix-the-ordering-of-LDADD-options-to-fix-a-compilati.patch
new file mode 100644
index 0000000..c976ff4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/gpe-scap/gpe-scap/0001-Fix-the-ordering-of-LDADD-options-to-fix-a-compilati.patch
@@ -0,0 +1,28 @@
+From c551dece6768f67b74b508e9c0133320205ef2df Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Mon, 23 May 2011 15:03:29 +0200
+Subject: [PATCH] Fix the ordering of LDADD options to fix a compilation failure.
+
+"invalid DSO for symbol `XUngrabServer' definition "
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ src/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 2fddc98..45bd850 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -6,7 +6,7 @@ INCLUDES = -DPKGDATADIR=\"$(pkgdatadir)\" \
+ 	   $(GLADE_CFLAGS) \
+        -D_GNU_SOURCE
+ 
+-LIBS = $(GTK_LIBS) $(GLADE_LIBS) $(XSHAPE_LIBS)
++LIBS = -lX11 $(XSHAPE_LIBS) $(GLADE_LIBS) $(GTK_LIBS) 
+ 
+ bin_PROGRAMS = gpe-scap
+ gpe_scap_SOURCES = scr-i18n.h \
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-graphics/gpe-scap/gpe-scap/use.libsoup-2.4.patch b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/gpe-scap/gpe-scap/use.libsoup-2.4.patch
new file mode 100644
index 0000000..3cfe5d7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/gpe-scap/gpe-scap/use.libsoup-2.4.patch
@@ -0,0 +1,42 @@
+diff -uNr gpe-scap-1.4.orig/configure.ac gpe-scap-1.4/configure.ac
+--- gpe-scap-1.4.orig/configure.ac	2009-03-05 18:53:53.000000000 +0100
++++ gpe-scap-1.4/configure.ac	2012-05-06 10:18:29.348308322 +0200
+@@ -24,7 +24,7 @@
+ AC_SUBST(LDFLAGS)
+ 
+ dnl libraries
+-GTK_MODULES="gtk+-2.0 >= 2.6.0 gthread-2.0 libsoup-2.2"
++GTK_MODULES="gtk+-2.0 >= 2.6.0 gthread-2.0 libsoup-2.4"
+ PKG_CHECK_MODULES(GTK, $GTK_MODULES)
+ AC_SUBST(GTK_CFLAGS)
+ AC_SUBST(GTK_LIBS)
+diff -uNr gpe-scap-1.4.orig/src/scr-shot-common.c gpe-scap-1.4/src/scr-shot-common.c
+--- gpe-scap-1.4.orig/src/scr-shot-common.c	2009-03-05 12:13:20.000000000 +0100
++++ gpe-scap-1.4/src/scr-shot-common.c	2012-05-06 10:30:52.299371576 +0200
+@@ -182,12 +182,12 @@
+   /* create session and message */
+   session = soup_session_sync_new ();
+   message = soup_message_new ("POST", url);
+-  soup_message_add_header (message->request_headers, "User-Agent", "gpe-scap/" VERSION);
+-  soup_message_add_header (message->request_headers, "Accept",
++  soup_message_headers_append (message->request_headers, "User-Agent", "gpe-scap/" VERSION);
++  soup_message_headers_append (message->request_headers, "Accept",
+ 			   "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
+-/*  soup_message_add_header (message->request_headers, "Accept-Charset", "Accept-Charset=ISO-8859-1,utf-8;q=0.7,*;q=0.7");
+-  soup_message_add_header (message->request_headers, "Keep-Alive", "100");
+-  soup_message_add_header (message->request_headers, "Connection", "keep-alive");
++/*  soup_message_headers_append (message->request_headers, "Accept-Charset", "Accept-Charset=ISO-8859-1,utf-8;q=0.7,*;q=0.7");
++  soup_message_headers_append (message->request_headers, "Keep-Alive", "100");
++  soup_message_headers_append (message->request_headers, "Connection", "keep-alive");
+   soup_message_wire	add_header (message->request_headers, "Accept-Encoding", "gzip,deflate");
+ */
+   /* build message body */
+@@ -207,7 +207,7 @@
+   memcpy (body + strlen (cmd) + len, tail, strlen (tail));
+ 
+   soup_message_set_request (message, "multipart/form-data; boundary="SEP,
+-                            SOUP_BUFFER_SYSTEM_OWNED, body, content_len);
++                            SOUP_MEMORY_TAKE, body, content_len);
+ 
+   soup_session_send_message (session, message);
+ 
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-graphics/gpe-scap/gpe-scap_1.4.bb b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/gpe-scap/gpe-scap_1.4.bb
new file mode 100644
index 0000000..3f1e27e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/gpe-scap/gpe-scap_1.4.bb
@@ -0,0 +1,23 @@
+SUMMARY = "A GPE application that allows you to take screenshots"
+SECTION = "gpe"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
+
+DEPENDS = "glib-2.0 gtk+ libgpewidget libglade libsoup-2.4"
+
+PR = "r3"
+
+SRC_URI[md5sum] = "eaf545561b0ad981c9d01833f30fcf95"
+SRC_URI[sha256sum] = "762778421fae7c62d5ec6a9d27986166c0dbbe2ff51fc10bb9b8baff5c367534"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools pkgconfig
+
+SRC_URI += "file://0001-Fix-the-ordering-of-LDADD-options-to-fix-a-compilati.patch \
+    file://use.libsoup-2.4.patch \
+"
+
+RREPLACES_${PN} = "gpe-screenshot"
+
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-graphics/libgpewidget/libgpewidget/glib-2.32.patch b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/libgpewidget/libgpewidget/glib-2.32.patch
new file mode 100644
index 0000000..f590caa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/libgpewidget/libgpewidget/glib-2.32.patch
@@ -0,0 +1,11 @@
+diff -uNr libgpewidget-0.117.orig/gpehelp.c libgpewidget-0.117/gpehelp.c
+--- libgpewidget-0.117.orig/gpehelp.c	2006-10-12 12:20:33.000000000 +0200
++++ libgpewidget-0.117/gpehelp.c	2012-04-30 07:45:57.813293792 +0200
+@@ -33,7 +33,6 @@
+ #include <gdk-pixbuf/gdk-pixbuf.h>
+ #include <gdk/gdk.h>
+ #include <glib.h>
+-#include <glib/gkeyfile.h>
+ 
+ 
+ /* helper function definitions*/
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-graphics/libgpewidget/libgpewidget/pkgconfig.patch b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/libgpewidget/libgpewidget/pkgconfig.patch
new file mode 100644
index 0000000..317e01a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/libgpewidget/libgpewidget/pkgconfig.patch
@@ -0,0 +1,11 @@
+--- configure.ac.orig	2006-02-04 17:37:55.000000000 +0100
++++ configure.ac	2006-02-06 00:56:28.000000000 +0100
+@@ -36,7 +36,7 @@
+ 	ENABLE_CAIRO=$enableval
+ ],
+ [
+-       	PKG_CHECK_EXISTS(cairo, [ENABLE_CAIRO=yes], [ENABLE_CAIRO=no])
++       	PKG_CHECK_MODULES(cairo, [ENABLE_CAIRO=yes], [ENABLE_CAIRO=no])
+ ])
+ 
+ ENABLE_HILDON=false
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-graphics/libgpewidget/libgpewidget_0.117.bb b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/libgpewidget/libgpewidget_0.117.bb
new file mode 100644
index 0000000..df774ee
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/libgpewidget/libgpewidget_0.117.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "libgpewidget contains a collection of widgets and other common code shared by many GPE applications."
+SECTION = "gpe/libs"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=d8045f3b8f929c1cb29a1e3fd737b499"
+
+DEPENDS = "gtk+ cairo libxinerama libxcomposite libxrender" 
+PR = "r5"
+
+inherit gpe pkgconfig autotools gtk-doc
+
+SRC_URI += "file://pkgconfig.patch;striplevel=0 \
+    file://glib-2.32.patch \
+"
+SRC_URI[md5sum] = "b85a839264a35d0faf9a1a38c486e189"
+SRC_URI[sha256sum] = "f96d30c09b0395ea4e146730fd52d9ea303b619bb139051d9f12d3f868a9e18c"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+EXTRA_OECONF = "--enable-cairo"
+LDFLAGS += " -L${STAGING_LIBDIR}"
+
+PACKAGES =+ "${PN}-bin"
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-graphics/minilite/minilite/makefile-fix.patch b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/minilite/minilite/makefile-fix.patch
new file mode 100644
index 0000000..1be6cea
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/minilite/minilite/makefile-fix.patch
@@ -0,0 +1,11 @@
+--- /tmp/Makefile.old	2006-01-16 22:51:34.000000000 +0100
++++ minilite-050/Makefile	2009-05-01 16:36:32.000000000 +0200
+@@ -45,7 +45,7 @@
+ 
+ install-program: all
+ 	mkdir -p $(DESTDIR)$(PREFIX)/bin
+-	$(INSTALL) -s $(PACKAGE) $(DESTDIR)$(PREFIX)/bin/$(PACKAGE)
++	$(INSTALL) $(PACKAGE) $(DESTDIR)$(PREFIX)/bin/$(PACKAGE)
+ 	mkdir -p $(DESTDIR)$(PREFIX)/share/applications
+ 	$(INSTALL) -m 644 $(PACKAGE).desktop $(DESTDIR)$(PREFIX)/share/applications/$(PACKAGE).desktop
+ 	mkdir -p $(DESTDIR)$(PREFIX)/share/pixmaps/
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-graphics/minilite/minilite_0.50.bb b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/minilite/minilite_0.50.bb
new file mode 100644
index 0000000..90960a2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-graphics/minilite/minilite_0.50.bb
@@ -0,0 +1,16 @@
+SUMMARY = "GPE Screen light control dockapp"
+SECTION = "gpe"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://minilite.c;beginline=8;endline=11;md5=fe9332aaecbce9f74ce2bfeb91680ed1"
+
+DEPENDS = "libgpewidget"
+
+inherit gpe
+
+SRC_URI = "${GPE_MIRROR}/${BP}.tar.gz \
+           file://makefile-fix.patch"
+SRC_URI[md5sum] = "d81cecf269ad7bab0da960e6e7228332"
+SRC_URI[sha256sum] = "2b299425203246090a4949e034f1d0efb3ff99cd1591d0e16c57370a530b361e"
+
+export CVSBUILD="no"
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader-0.12.10/Makefile.patch b/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader-0.12.10/Makefile.patch
new file mode 100644
index 0000000..0e498c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader-0.12.10/Makefile.patch
@@ -0,0 +1,22 @@
+diff -uri fbreader-0.12.1.orig/fbreader/Makefile fbreader-0.12.1/fbreader/Makefile
+--- fbreader-0.12.1.orig/fbreader/Makefile	2009-12-13 09:03:11.000000000 +0100
++++ fbreader-0.12.1/fbreader/Makefile	2009-12-14 17:18:47.548638783 +0100
+@@ -37,7 +37,6 @@
+ 	@install $(TARGET) $(DESTDIR)$(BINDIR)/FBReader
+ 	@install -d $(FBSHAREDIR)
+ 	@install -d $(FBSHAREDIR)/help
+-	@./scripts/install_help.sh $(VARIANT) $(FBSHAREDIR)/help
+ 	@install -d $(FBSHAREDIR)/network
+ 	@install -m 0644 $(wildcard data/network/*.xml) $(FBSHAREDIR)/network
+ 	@install -d $(FBSHAREDIR)/network/certificates
+@@ -58,8 +57,8 @@
+ 	@install -d $(FBSHAREDIR)/resources
+ 	@install -m 0644 $(wildcard data/resources/*.xml) $(FBSHAREDIR)/resources
+ 	@install -d $(DESTDIR)$(APPIMAGEDIR_REAL)
+-	@install -m 0644 $(wildcard data/icons/toolbar/$(VARIANT)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL)
+-	@install -m 0644 $(wildcard data/icons/filetree/$(VARIANT)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL)
++	@install -m 0644 $(wildcard data/icons/toolbar/$(TARGET_ARCH)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL)
++	@install -m 0644 $(wildcard data/icons/filetree/$(TARGET_ARCH)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL)
+ 	@install -m 0644 $(wildcard data/icons/booktree/new/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL)
+ 	@make -C $(TARGET_ARCH) RESOLUTION=$(RESOLUTION) install
+ 
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader-0.12.10/gcc45.patch b/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader-0.12.10/gcc45.patch
new file mode 100644
index 0000000..00cba10
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader-0.12.10/gcc45.patch
@@ -0,0 +1,20 @@
+  Fix compilation with gcc 4.5
+
+  [FBreader Ticket #340] -- http://old.fbreader.org/mantis/view.php?id=340
+
+  Without that patch we have:
+    Compiling Library.o ...Library.cpp:42:1: error: 'Library::Library' names the constructor, not the type
+
+  Upstream-Status: Accepted [Fixed in Version 0.14.0]
+
+--- fbreader-0.12.10-orig/fbreader/src/library/Library.cpp	2010-04-01 15:14:24.000000000 +0200
++++ fbreader-0.12.10/fbreader/src/library/Library.cpp	2010-04-13 13:34:06.000000000 +0200
+@@ -39,7 +39,7 @@
+ shared_ptr<Library> Library::ourInstance;
+ const size_t Library::MaxRecentListSize = 10;
+ 
+-Library::Library &Library::Instance() {
++Library &Library::Instance() {
+ 	if (ourInstance.isNull()) {
+ 		ourInstance = new Library();
+ 	}
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader_0.12.10.bb b/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader_0.12.10.bb
new file mode 100644
index 0000000..e9ead0f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader_0.12.10.bb
@@ -0,0 +1,42 @@
+SUMMARY = "FBreader is an ebook reader"
+HOMEPAGE = "http://www.fbreader.org"
+SECTION = "x11/utils"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://fbreader/LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "gtk+ enca expat bzip2 libgpewidget virtual/libiconv liblinebreak libfribidi curl sqlite3"
+
+PR = "r1"
+
+SRC_URI = "http://www.fbreader.org/fbreader-sources-${PV}.tgz \
+file://Makefile.patch \
+file://gcc45.patch"
+
+# Set the defaults
+READER_RESOLUTION ?= "1024x600"
+READER_ARCH       ?= "desktop"
+READER_UI         ?= "gtk"
+READER_STATUS     ?= "release"
+
+FILES_${PN} += "${datadir}/FBReader ${datadir}/zlibrary ${libdir}/zlibrary"
+FILES_${PN}-dbg += "${libdir}/zlibrary/ui/.debug/"
+
+CFLAGS_append = " RESOLUTION=${READER_RESOLUTION} INSTALLDIR=${prefix}"
+EXTRA_OEMAKE = "CC='${CXX}' LD='${CXX}' LDFLAGS='${LDFLAGS}' INCPATH='${STAGING_INCDIR}' LIBPATH='${STAGING_LIBDIR}'"
+
+inherit pkgconfig
+
+do_configure() {
+    cd ${WORKDIR}/${PN}-${PV}
+    mv makefiles/target.mk makefiles/target.mk.orig
+
+    echo "TARGET_ARCH = ${READER_ARCH}" > makefiles/target.mk
+    echo "UI_TYPE = ${READER_UI}" >> makefiles/target.mk
+    echo "TARGET_STATUS = ${READER_STATUS}" >> makefiles/target.mk
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D} RESOLUTION=${READER_RESOLUTION}
+}
+
+SRC_URI[md5sum] = "da9ec4721efdb0ec0aaa182bff16ad82"
+SRC_URI[sha256sum] = "328aec454db80e225aa0b5c31adef74bf62a14357482947e87e9731686b3c624"
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader_git.bb b/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader_git.bb
new file mode 100644
index 0000000..763889a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/fbreader_git.bb
@@ -0,0 +1,42 @@
+SUMMARY = "FBreader is an ebook reader"
+HOMEPAGE = "http://www.fbreader.org"
+SECTION = "x11/utils"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://fbreader/LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "gtk+ enca expat bzip2 libgpewidget virtual/libiconv liblinebreak libfribidi curl sqlite3"
+SRCREV = "2cf1ec0e306e1122dbed850bfa005cd59a6168ee"
+PV = "0.99.5+gitr${SRCPV}"
+
+PR = "r1"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "git://github.com/geometer/FBReader.git;protocol=http;branch=master \
+           file://0001-Fix-installation-of-the-icons-when-RESOLUTION-is-set.patch"
+
+# Set the defaults
+READER_RESOLUTION ?= "1024x600"
+READER_ARCH       ?= "desktop"
+READER_UI         ?= "gtk"
+READER_STATUS     ?= "release"
+
+FILES_${PN} += "${datadir}/FBReader ${datadir}/zlibrary ${libdir}/zlibrary"
+FILES_${PN}-dbg += "${libdir}/zlibrary/ui/.debug/"
+
+CFLAGS_append = " RESOLUTION=${READER_RESOLUTION} INSTALLDIR=${prefix}"
+EXTRA_OEMAKE = "CC='${CXX}' LD='${CXX}' INCPATH='${STAGING_INCDIR}' LIBPATH='${STAGING_LIBDIR}'"
+inherit pkgconfig
+
+S = "${WORKDIR}/git"
+
+do_configure() {
+    cd "${S}"
+
+    echo "TARGET_ARCH = ${READER_ARCH}" > makefiles/target.mk
+    echo "UI_TYPE = ${READER_UI}" >> makefiles/target.mk
+    echo "TARGET_STATUS = ${READER_STATUS}" >> makefiles/target.mk
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D} RESOLUTION=${READER_RESOLUTION}
+}
diff --git a/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/files/0001-Fix-installation-of-the-icons-when-RESOLUTION-is-set.patch b/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/files/0001-Fix-installation-of-the-icons-when-RESOLUTION-is-set.patch
new file mode 100644
index 0000000..f6e1202
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-gpe/recipes-support/fbreader/files/0001-Fix-installation-of-the-icons-when-RESOLUTION-is-set.patch
@@ -0,0 +1,40 @@
+From da4170b61bb41eff0af170d1d77bfd90f9ebe5dd Mon Sep 17 00:00:00 2001
+From: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
+Date: Fri, 20 Jan 2012 11:34:42 +0100
+Subject: [PATCH] Fix installation of the icons when RESOLUTION is set
+
+When resolution is set, the following code(in fbreader/Makefile) is executed:
+  VARIANT = $(TARGET_ARCH)
+  ifneq "$(RESOLUTION)" ""
+    VARIANT = $(TARGET_ARCH)_$(RESOLUTION)
+  endif
+
+This fix is based on a patch from the openembedded project,
+  which can be found here:
+    http://cgit.openembedded.org/openembedded/tree/recipes/fbreader/fbreader-0.12.1/Makefile.patch
+
+Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
+---
+ Submitted trough github to git://github.com/geometer/FBReader.git as a pull request
+
+ fbreader/Makefile |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/fbreader/Makefile b/fbreader/Makefile
+index bfa9242..03e6cc3 100644
+--- a/fbreader/Makefile
++++ b/fbreader/Makefile
+@@ -60,8 +60,8 @@ do_install:
+ 	@install -d $(FBSHAREDIR)/resources
+ 	@install -m 0644 $(wildcard data/resources/*.xml) $(FBSHAREDIR)/resources
+ 	@install -d $(DESTDIR)$(APPIMAGEDIR_REAL)
+-	@install -m 0644 $(wildcard data/icons/toolbar/$(VARIANT)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL)
+-	@install -m 0644 $(wildcard data/icons/filetree/$(VARIANT)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL)
++	@install -m 0644 $(wildcard data/icons/toolbar/$(TARGET_ARCH)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL)
++	@install -m 0644 $(wildcard data/icons/filetree/$(TARGET_ARCH)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL)
+ 	@install -m 0644 $(wildcard data/icons/booktree/new/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL)
+ 	@make -C $(TARGET_ARCH) RESOLUTION=$(RESOLUTION) install
+ 
+-- 
+1.7.4.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/COPYING.MIT b/import-layers/meta-openembedded/meta-initramfs/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-initramfs/README b/import-layers/meta-openembedded/meta-initramfs/README
new file mode 100644
index 0000000..ea03a1d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/README
@@ -0,0 +1,37 @@
+meta-initramfs
+==============
+
+This layer contains the metadata necessary to build the klibc library and
+utilities (shared and static) plus other tools useful for the creation of
+small-sized initramfs.
+
+
+Dependencies
+------------
+
+This layer depends on:
+
+URI: git://github.com/openembedded/oe-core.git
+branch: krogoth
+revision: HEAD
+
+
+Maintenance
+-----------
+
+Send patches / pull requests to openembedded-devel@lists.openembedded.org
+with '[meta-initramfs][krogoth]' in the subject.
+
+When sending single patches, please using something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-initramfs][krogoth][PATCH'
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
+
+
+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-openembedded/meta-initramfs/classes/klibc.bbclass b/import-layers/meta-openembedded/meta-initramfs/classes/klibc.bbclass
new file mode 100644
index 0000000..f864104
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/classes/klibc.bbclass
@@ -0,0 +1,15 @@
+# klcc-cross depends on klibc
+DEPENDS =+ "klcc-cross"
+
+# Default for klcc is to build static binaries.
+# Set CC = "${TARGET_PREFIX}klcc -shared" to build the dynamic version.
+
+export CC = "${TARGET_PREFIX}klcc ${TOOLCHAIN_OPTIONS}"
+export CC_armv4_linux-gnueabi = "${TARGET_PREFIX}klcc ${TOOLCHAIN_OPTIONS} -march=armv4 -mthumb-interwork"
+
+export CPP = "${CC} -E"
+
+# klcc uses own optimizations by default. See klcc(1) man file.
+export CFLAGS=""
+export CPPFLAGS=""
+export LDFLAGS=""
diff --git a/import-layers/meta-openembedded/meta-initramfs/conf/layer.conf b/import-layers/meta-openembedded/meta-initramfs/conf/layer.conf
new file mode 100644
index 0000000..d9b7c4c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/conf/layer.conf
@@ -0,0 +1,21 @@
+# Layer configuration for meta-initramfs layer
+
+# 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 += "meta-initramfs"
+BBFILE_PATTERN_meta-initramfs := "^${LAYERDIR}/"
+
+# Define the priority for recipes (.bb files) from this layer,
+# choosing carefully how this layer interacts with all of the
+# other layers.
+
+BBFILE_PRIORITY_meta-initramfs = "8"
+LAYERDEPENDS_meta-initramfs = "core"
+
+SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
+  dracut->virtual/kernel \
+"
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-debug-image.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-debug-image.bb
new file mode 100644
index 0000000..be7350a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-debug-image.bb
@@ -0,0 +1,22 @@
+# Simple initramfs image. Mostly used for live images.
+DESCRIPTION = "Small image capable of booting a device. The kernel includes \
+the Minimal RAM-based Initial Root Filesystem (initramfs), which one can use \
+to check the hardware efficiently."
+
+PACKAGE_INSTALL = "initramfs-debug busybox base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
+
+# Do not pollute the initrd image with rootfs features
+IMAGE_FEATURES = ""
+
+export IMAGE_BASENAME = "initramfs-debug-image"
+IMAGE_LINGUAS = ""
+
+LICENSE = "MIT"
+
+IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
+inherit core-image
+
+IMAGE_ROOTFS_SIZE = "8192"
+IMAGE_ROOTFS_EXTRA_SPACE = "0"
+
+BAD_RECOMMENDATIONS += "busybox-syslog"
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb
new file mode 100644
index 0000000..45ff50d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Initramfs image for kexecboot kernel"
+DESCRIPTION = "This image provides kexecboot (linux as bootloader) and helpers."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
+
+# avoid circular dependencies
+EXTRA_IMAGEDEPENDS = ""
+
+# We really need just kexecboot, kexec and ubiattach
+IMAGE_INSTALL = "kexecboot kexec mtd-utils-ubifs"
+
+# Do not pollute the initrd image with rootfs features
+IMAGE_FEATURES = ""
+
+IMAGE_LINGUAS = ""
+
+FEED_DEPLOYDIR_BASE_URI = ""
+LDCONFIGDEPEND = ""
+
+IMAGE_ROOTFS_EXTRA_SPACE = "0"
+
+inherit image
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb
new file mode 100644
index 0000000..df97511
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb
@@ -0,0 +1,7 @@
+require initramfs-kexecboot-image.bb
+
+SUMMARY = "Initramfs image for kexecboot kernel (klibc-static binaries)"
+
+# We really need just kexecboot, kexec and ubiattach
+# statically compiled against klibc
+IMAGE_INSTALL = "kexecboot-klibc kexec-klibc ubiattach-klibc"
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/initrdscripts/files/init-debug.sh b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/initrdscripts/files/init-debug.sh
new file mode 100644
index 0000000..7edbd70
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/initrdscripts/files/init-debug.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+do_mount_fs() {
+	grep -q "$1" /proc/filesystems || return
+	test -d "$2" || mkdir -p "$2"
+	mount -t "$1" "$1" "$2"
+}
+
+do_mknod() {
+	test -e "$1" || mknod "$1" "$2" "$3" "$4"
+}
+
+mkdir -p /proc
+mount -t proc proc /proc
+
+do_mount_fs sysfs /sys
+do_mount_fs debugfs /sys/kernel/debug
+do_mount_fs devtmpfs /dev
+do_mount_fs devpts /dev/pts
+do_mount_fs tmpfs /dev/shm
+
+mkdir -p /run
+mkdir -p /var/run
+
+do_mknod /dev/console c 5 1
+do_mknod /dev/null c 1 3
+do_mknod /dev/zero c 1 5
+
+exec sh </dev/console >/dev/console 2>/dev/console 
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/initrdscripts/initramfs-debug_1.0.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/initrdscripts/initramfs-debug_1.0.bb
new file mode 100644
index 0000000..b7defff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/initrdscripts/initramfs-debug_1.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Extremely basic live image init script"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+SRC_URI = "file://init-debug.sh"
+
+S = "${WORKDIR}"
+
+do_install() {
+        install -m 0755 ${WORKDIR}/init-debug.sh ${D}/init
+}
+
+inherit allarch
+
+FILES_${PN} += " /init "
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0001-kexecboot-fix-build-when-S-B.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0001-kexecboot-fix-build-when-S-B.patch
new file mode 100644
index 0000000..6d3270f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0001-kexecboot-fix-build-when-S-B.patch
@@ -0,0 +1,61 @@
+From 8519d61a7097498b0ee93fb8dc8262286825f3e5 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Thu, 1 May 2014 23:58:51 +0200
+Subject: [PATCH 1/4] kexecboot: fix build when S != B
+
+* fatal error: ../config.h: No such file or directory
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ machine/zaurus.c | 2 +-
+ res/theme-gui.h  | 2 +-
+ res/theme-tui.h  | 4 ++--
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/machine/zaurus.c b/machine/zaurus.c
+index ea21047..83be13b 100644
+--- a/machine/zaurus.c
++++ b/machine/zaurus.c
+@@ -25,7 +25,7 @@
+  *
+  */
+ 
+-#include "../config.h"
++#include "config.h"
+ 
+ #ifdef USE_ZAURUS
+ 
+diff --git a/res/theme-gui.h b/res/theme-gui.h
+index f8fef7f..79bed39 100644
+--- a/res/theme-gui.h
++++ b/res/theme-gui.h
+@@ -15,7 +15,7 @@
+  *
+  */
+ 
+-#include "../config.h"
++#include "config.h"
+ 
+ #ifdef USE_ICONS
+ /** Icons **/
+diff --git a/res/theme-tui.h b/res/theme-tui.h
+index 94e7693..909be56 100644
+--- a/res/theme-tui.h
++++ b/res/theme-tui.h
+@@ -15,11 +15,11 @@
+  *
+  */
+ 
+-#include "../config.h"
++#include "config.h"
+ 
+ #ifdef USE_TEXTUI
+ /** TEXT UI colors **/
+-#include "../termseq.h"
++#include "termseq.h"
+ 
+ /* Background color pair */
+ #define TUI_CLR_BG		TERM_CSI TERM_BG_BLACK ";" TERM_FG_WHITE TERM_SGR
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0002-kexecboot-fix-configure-warnings.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0002-kexecboot-fix-configure-warnings.patch
new file mode 100644
index 0000000..ecf422b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0002-kexecboot-fix-configure-warnings.patch
@@ -0,0 +1,33 @@
+From b8938acc3f1ab35273fa9a2fa7728050ef72ff65 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Fri, 2 May 2014 00:19:24 +0200
+Subject: [PATCH 2/4] kexecboot: fix configure warnings
+
+Makefile.am:5: warning: source file 'fstype/fstype.c' is in a subdirectory,
+Makefile.am:5: but option 'subdir-objects' is disabled
+automake: warning: possible forward-incompatibility.
+...
+Makefile.am:5: warning: source file 'machine/zaurus.c' is in a subdirectory,
+...
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0ca4b81..66ec54e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1,7 +1,7 @@
+ AC_PREREQ(2.53)
+ AC_INIT([kexecboot], [0.6], [kexecboot-devel@linuxtogo.org])
+ AC_CANONICAL_HOST
+-AM_INIT_AUTOMAKE([-Wall foreign])
++AM_INIT_AUTOMAKE([-Wall foreign] [subdir-objects])
+ AC_CONFIG_SRCDIR(kexecboot.c)
+ AC_CONFIG_HEADERS(config.h)
+ AM_MAINTAINER_MODE
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0003-kexecboot-do-not-hardcode-MOUNTPOINT.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0003-kexecboot-do-not-hardcode-MOUNTPOINT.patch
new file mode 100644
index 0000000..4caa0d5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0003-kexecboot-do-not-hardcode-MOUNTPOINT.patch
@@ -0,0 +1,97 @@
+From 800dae0d34f8629a34c638a612166b76dda03e27 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sat, 2 Aug 2014 01:13:08 +0200
+Subject: [PATCH 3/4] kexecboot: do not hardcode MOUNTPOINT
+
+Avoid to hardcode it: could be requested as a new configure option.
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ cfgparser.c |  6 +++---
+ kexecboot.c | 18 ++++++++++--------
+ 2 files changed, 13 insertions(+), 11 deletions(-)
+
+diff --git a/cfgparser.c b/cfgparser.c
+index 8f6688c..dec27b1 100644
+--- a/cfgparser.c
++++ b/cfgparser.c
+@@ -141,7 +141,7 @@ static int set_kernel(struct cfgdata_t *cfgdata, char *value)
+ 		return -1;
+ 	}
+ 
+-	strcpy(sc->kernelpath, "/mnt");
++	strcpy(sc->kernelpath, MOUNTPOINT);
+ 	strcat(sc->kernelpath, value);
+ 	return 0;
+ }
+@@ -155,7 +155,7 @@ static int set_icon(struct cfgdata_t *cfgdata, char *value)
+ 
+ 	dispose(sc->iconpath);
+ 	/* Add our mountpoint, since the enduser won't know it */
+-	sc->iconpath = malloc(sizeof(MOUNTPOINT)+strlen(value));
++	sc->iconpath = malloc(strlen(MOUNTPOINT)+strlen(value)+1);
+ 	if (NULL == sc->iconpath) {
+ 		DPRINTF("Can't allocate memory to store iconpath '%s'", value);
+ 		return -1;
+@@ -194,7 +194,7 @@ static int set_initrd(struct cfgdata_t *cfgdata, char *value)
+ 		return -1;
+ 	}
+ 
+-	strcpy(sc->initrd, "/mnt");
++	strcpy(sc->initrd, MOUNTPOINT);
+ 	strcat(sc->initrd, value);
+ 	return 0;
+ }
+diff --git a/kexecboot.c b/kexecboot.c
+index d6657a0..7268d6b 100644
+--- a/kexecboot.c
++++ b/kexecboot.c
+@@ -57,20 +57,22 @@
+ #endif
+ 
+ #ifdef USE_MACHINE_KERNEL
+-/* Machine-dependent kernel patch */
++/* Machine-dependent kernel path */
+ char *machine_kernel = NULL;
+ #endif
+ 
++#define PREPEND_MOUNTPATH(string) MOUNTPOINT""string
++
+ /* NULL-terminated array of kernel search paths
+  * First item should be filled with machine-dependent path */
+ char *default_kernels[] = {
+ #ifdef USE_ZIMAGE
+-	"/mnt/boot/zImage",
+-	"/mnt/zImage",
++	PREPEND_MOUNTPATH("/boot/zImage"),
++	PREPEND_MOUNTPATH("/zImage"),
+ #endif
+ #ifdef USE_UIMAGE
+-	"/mnt/boot/uImage",
+-	"/mnt/uImage",
++	PREPEND_MOUNTPATH("/boot/uImage"),
++	PREPEND_MOUNTPATH("/uImage"),
+ #endif
+ 	NULL
+ };
+@@ -149,14 +151,14 @@ char *get_machine_kernelpath() {
+ 			++tmp;
+ 		}
+ 
+-		/* Prepend "/mnt/boot/zImage-" to hw */
+-		tmp = malloc(strlen(hw) + 17 + 1);	/* strlen("/mnt/boot/zImage-") */
++		/* Prepend  MOUNTPOINT"/boot/zImage-" to hw */
++		tmp = malloc(strlen(PREPEND_MOUNTPATH("/boot/zImage-")) + strlen(hw) + 1);
+ 		if (NULL == tmp) {
+ 			DPRINTF("Can't allocate memory for machine-specific kernel path");
+ 			return NULL;
+ 		}
+ 
+-		strcpy(tmp, "/mnt/boot/zImage-");
++		strcpy(tmp, PREPEND_MOUNTPATH("/boot/zImage-"));
+ 		strcat(tmp, hw);
+ 
+ 		return tmp;
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0004-kexecboot.c-workaround-for-absolute-kernel-and-initr.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0004-kexecboot.c-workaround-for-absolute-kernel-and-initr.patch
new file mode 100644
index 0000000..6d81d83
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0004-kexecboot.c-workaround-for-absolute-kernel-and-initr.patch
@@ -0,0 +1,135 @@
+From de9a6284df8add6ec03e1d9981d0b6d0595bbc69 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Mon, 10 Nov 2014 23:37:23 +0100
+Subject: [PATCH 4/4] kexecboot.c: workaround for absolute kernel and initrd
+ symlinks
+
+Add MOUNTPOINT prefix if the kernel/initrd symlinks start with '/'.
+Do nothing if the path is a relative symbolic link or not a symlink.
+
+Fix following situation:
+
+root@mizar:/var/tmp# ls -al boot/
+total 2076
+drwxr-xr-x 2 root root    4096 lug  5 01:38 .
+drwxrwxrwt 4 root root    4096 lug  5 12:26 ..
+-rw-r--r-- 1 root root     831 lug  5 01:24 boot.cfg
+-rw-r--r-- 1 root root    1322 lug  5 01:24 icon.xpm
+lrwxrwxrwx 1 root root      34 lug  5 12:26 zImage ->
+/boot/zImage-3.14.5-yocto-standard
+-rw-r--r-- 1 root root 2106832 lug  5 01:20 zImage-3.14.5-yocto-standard
+
+Cannot open `/mnt/boot/zImage': No such file or directory
+Nothing has been loaded!
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ kexecboot.c | 53 ++++++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 44 insertions(+), 9 deletions(-)
+
+diff --git a/kexecboot.c b/kexecboot.c
+index 7268d6b..8a7a7d2 100644
+--- a/kexecboot.c
++++ b/kexecboot.c
+@@ -208,11 +208,16 @@ void start_kernel(struct params_t *params, int choice)
+ 	const char *load_argv[] = { NULL, "-l", NULL, NULL, NULL, NULL };
+ 	const char *exec_argv[] = { NULL, "-e", NULL, NULL};
+ 
+-	char *cmdline_arg = NULL, *initrd_arg = NULL;
++	char *cmdline_arg = NULL, *initrd_arg = NULL, *kernel_arg = NULL;
+ 	int n, idx, u;
+ 	struct stat sinfo;
+ 	struct boot_item_t *item;
+ 
++	/* buffer for readlink (could be truncated) */
++	char buf[512];
++	int len;
++
++
+ 	item = params->bootcfg->list[choice];
+ 
+ 	exec_argv[0] = kexec_path;
+@@ -306,10 +311,17 @@ void start_kernel(struct params_t *params, int choice)
+ 		}
+ 	}
+ 
++	/* Mount boot device */
++	if ( -1 == mount(mount_dev, mount_point, mount_fstype,
++			MS_RDONLY, NULL) ) {
++		perror("Can't mount boot device");
++		exit(-1);
++	}
++
+ 	/* fill '--initrd' option */
+ 	if (item->initrd) {
+ 		/* allocate space */
+-		n = sizeof(str_initrd_start) + strlen(item->initrd);
++		n = sizeof(str_initrd_start) + strlen(item->initrd) + 1 + sizeof(mount_point) + sizeof(buf);
+ 
+ 		initrd_arg = (char *)malloc(n);
+ 		if (NULL == initrd_arg) {
+@@ -317,24 +329,46 @@ void start_kernel(struct params_t *params, int choice)
+ 		} else {
+ 			strcpy(initrd_arg, str_initrd_start);	/* --initrd= */
+ 			strcat(initrd_arg, item->initrd);
++
++			if ((len = readlink(item->initrd, buf, sizeof(buf)-1)) != -1) {
++				buf[len] = '\0';
++				/* Fix absolute symlinks: prepend MOUNTPOINT */
++				if (buf[0] == '/') {
++					strcpy(initrd_arg, str_initrd_start);	/* --initrd= */
++					strcat(initrd_arg, mount_point);
++					strcat(initrd_arg, buf);
++				}
++			}
+ 			load_argv[idx] = initrd_arg;
+ 			++idx;
+ 		}
+ 	}
+ 
+ 	/* Append kernelpath as last arg of kexec */
+-	load_argv[idx] = item->kernelpath;
++		/* allocate space */
++		n = strlen(item->kernelpath) + 1 + sizeof(mount_point) + sizeof(buf);
++
++		kernel_arg = (char *)malloc(n);
++		if (NULL == kernel_arg) {
++			perror("Can't allocate memory for kernel_arg");
++		} else {
++			strcpy(kernel_arg, item->kernelpath);
++
++			if ((len = readlink(item->kernelpath, buf, sizeof(buf)-1)) != -1) {
++				buf[len] = '\0';
++				/* Fix absolute symlinks: prepend MOUNTPOINT */
++				if (buf[0] == '/') {
++					strcpy(kernel_arg, mount_point);
++					strcat(kernel_arg, buf);
++				}
++			}
++			load_argv[idx] = kernel_arg;
++		}
+ 
+ 	DPRINTF("load_argv: %s, %s, %s, %s, %s", load_argv[0],
+ 			load_argv[1], load_argv[2],
+ 			load_argv[3], load_argv[4]);
+ 
+-	/* Mount boot device */
+-	if ( -1 == mount(mount_dev, mount_point, mount_fstype,
+-			MS_RDONLY, NULL) ) {
+-		perror("Can't mount boot device");
+-		exit(-1);
+-	}
+ 
+ 	/* Load kernel */
+ 	n = fexecw(kexec_path, (char *const *)load_argv, envp);
+@@ -347,6 +381,7 @@ void start_kernel(struct params_t *params, int choice)
+ 
+ 	dispose(cmdline_arg);
+ 	dispose(initrd_arg);
++	dispose(kernel_arg);
+ 
+ 	/* Check /proc/sys/net presence */
+ 	if ( -1 == stat("/proc/sys/net", &sinfo) ) {
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0005-rgb.h-fix-build-with-gcc5.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0005-rgb.h-fix-build-with-gcc5.patch
new file mode 100644
index 0000000..b54199b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/files/0005-rgb.h-fix-build-with-gcc5.patch
@@ -0,0 +1,35 @@
+From b2c4fc69868a4831ec798ad98f5e7fce200cf0e3 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Thu, 24 Sep 2015 00:02:48 +0200
+Subject: [PATCH] rgb.h: fix build with gcc 5 (C99 inline semantic)
+
+Building with gcc 5.2 we trigger the following error:
+
+rgb.h:55:1: warning: inline function 'rgba2comp' declared but never defined
+|  rgba2comp(kx_rgba rgba, kx_ccomp *red, kx_ccomp *green,
+|  ^
+
+https://gcc.gnu.org/gcc-5/porting_to.html
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ rgb.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/rgb.h b/rgb.h
+index 0ba987a..4f64622 100644
+--- a/rgb.h
++++ b/rgb.h
+@@ -51,8 +51,7 @@ typedef struct {
+ } kx_named_color;
+ 
+ /* Convert RGBA uint32 to red/green/blue/alpha components */
+-inline void
+-rgba2comp(kx_rgba rgba, kx_ccomp *red, kx_ccomp *green,
++void rgba2comp(kx_rgba rgba, kx_ccomp *red, kx_ccomp *green,
+ 		kx_ccomp *blue, kx_ccomp *alpha);
+ 
+ /* Convert hex rgb color to rgba color */
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg/icon.xpm b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg/icon.xpm
new file mode 100644
index 0000000..6e6fd77
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg/icon.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * icon_xpm[] = {
+"32 32 8 1",
+" 	c None",
+".	c #D6DBDE",
+"+	c #9BA6AE",
+"@	c #60727D",
+"#	c #B8BFC5",
+"$	c #A9E8F6",
+"%	c #12BCE4",
+"&	c #57D2EC",
+"                                ",
+"                                ",
+"                                ",
+"           .++@@@@++.           ",
+"         +@@@@@@@@@@@@+         ",
+"       #@@@@@@@@@@@@@@@@#       ",
+"      +@@@@@@@@@@@@@@@@@@+      ",
+"    .@@@@@@@@++##+@@@@@@@@@.    ",
+"    @@@@@@@.        .@@@@@@@    ",
+"   +@@@@@+    $$$$    #@@@@@+   ",
+"  #@@@@@.  $%%%%%%%%$  .@@@@@#  ",
+"  @@@@@.  &%%%%%%%%%%&  .@@@@@  ",
+" #@@@@+  %%%%%%%%%%%%%%  +@@@@# ",
+" @@@@@  &%%%%%%%%%%%%%%&  @@@@@ ",
+".@@@@. $%%%%%&   $%%%%%&  .@@@@.",
+"+@@@@  %%%%%    $%%%%%&    @@@@+",
+"+@@@+  %%%%$   $%%%%%&  $$ +@@@+",
+"@@@@+ $%%%%   $%%%%%&  $%$ +@@@@",
+"@@@@# &%%%&   &%%%%&  $%%& #@@@@",
+"@@@@. &%%%&   %%%%&  $%%%& .@@@@",
+"@@@@# $%%%&   &%%&   &%%%$ #@@@@",
+"+@@@+ $%%%%          %%%%$ +@@@+",
+"+@@@@  %%%%&        &%%%%  @@@@+",
+"#@@@@  &%%%%&      &%%%%&  @@@@#",
+" @@@@+  %%%%%%&$$&%%%%%%  +@@@@ ",
+" +@@@@. $%%%%%%%%%%%%%%$ .@@@@+ ",
+" .@@@@@  $%%%%%%%%%%%%$  @@@@@. ",
+"  #++++.   &%%%%%%%%&   .++++#  ",
+"            $&&%%&&$            ",
+"                                ",
+"                                ",
+"                                "};
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.2.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.2.bb
new file mode 100644
index 0000000..69f3872
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.2.bb
@@ -0,0 +1,60 @@
+SUMMARY = "Configuration files for kexecboot"
+DESCRIPTION = "Default icon and boot.cfg for kexecboot linux-as-bootloader."
+SECTION = "base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+SRC_URI = "file://icon.xpm"
+
+S = "${WORKDIR}"
+
+do_install_prepend () {
+echo '# /boot/boot.cfg - KEXECBOOT configuration file.
+#
+# First kernel stanza.
+# Show this label in kexecboot menu.
+#
+LABEL=${KEXECBOOT_LABEL}
+#
+# Specify full kernel path on target.
+KERNEL=/boot/${KERNEL_IMAGETYPE}
+#
+# Append this tags to the kernel cmdline.
+APPEND=${CMDLINE} ${CMDLINE_DEBUG}
+#
+# Specify optional initrd/initramfs.
+# INITRD=/boot/initramfs.cpio.gz
+#
+# Specify full path for a custom icon for the menu-item.
+# If not set, use device-icons as default (NAND, SD, CF, ...).
+# ICON=/boot/icon.xpm
+#
+# Priority of item in kexecboot menu.
+# Items with highest priority will be shown at top of menu.
+# Default: 0 (lowest, ordered by device ordering)
+# PRIORITY=10
+#
+#
+# Second kernel stanza.
+# LABEL=${KEXECBOOT_LABEL}-test
+# KERNEL=/boot/${KERNEL_IMAGETYPE}-test
+# APPEND=${CMDLINE}
+#' > ${S}/boot.cfg
+}
+do_install () {
+    install -d ${D}/boot
+    install -m 0644 boot.cfg ${D}/boot/boot.cfg
+    install -m 0644 icon.xpm ${D}/boot/icon.xpm
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+FILES_${PN} += "/boot/*"
+
+CMDLINE ?= ""
+CMDLINE_DEBUG ?= "quiet"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+# Note: for qvga the label is currently limited to about 24 chars
+KEXECBOOT_LABEL ?= "${@d.getVar('DISTRO', True) or d.getVar('DISTRO_VERSION', True)}-${MACHINE}"
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot_0.6.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot_0.6.bb
new file mode 100644
index 0000000..45095f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot_0.6.bb
@@ -0,0 +1,75 @@
+###########################
+# Configure options:
+#
+#  --enable-static-linking compile kexecboot as static executable [default=no]
+#  --enable-fbui           support framebuffer menu [default=yes]
+#  --enable-fbui-width     limit FB UI width to specified value [default=no]
+#  --enable-fbui-height    limit FB UI height to specified value [default=no]
+#  --enable-textui         support console text user interface [default=no]
+#  --enable-cfgfiles       support config files [default=yes]
+#  --enable-icons          support custom icons (depends on fbui) [default=yes]
+#  --enable-zaurus         compile Sharp Zaurus specific code [default=no]
+#  --enable-zimage         compile with zImage support [default=yes]
+#  --enable-uimage         compile with uImage support [default=no]
+#  --enable-machine-kernel look for machine-specific zImage kernel [default=no]
+#  --enable-devices-recreating
+#                          enable devices re-creating [default=yes]
+#  --enable-debug          enable debug output [default=no]
+#  --enable-host-debug     allow for non-destructive executing of kexecboot on
+#                            host system [default=no]
+#  --enable-numkeys        enable menu item selection by keys [0-9] [default=yes]
+#  --enable-bg-buffer      enable buffer for pre-drawed FB GUI background
+#
+#  --enable-timeout        allow to boot 1st kernel after timeout in seconds
+#                            [default=no]
+#  --enable-delay          specify delay before device scanning, allowing
+#                            initialization of old CF/SD cards [default=1]
+#  --enable-bpp            enable support of specified bpp modes
+#                            (all,32,24,18,16,4,2,1) [default=all]
+#  --enable-evdev-rate     change evdev (keyboard/mouse) repeat rate
+#                            in milliseconds e.g. "1000,250" [default=no]
+#  --with-kexec-binary     look for kexec binary at path
+#                            [default="/usr/sbin/kexec"]
+##########################
+SUMMARY = "kexecboot linux-as-bootloader"
+DESCRIPTION = "kexecboot is a graphical linux-as-bootloader implementation based on kexec."
+HOMEPAGE = "http://kexecboot.org"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+S = "${WORKDIR}/kexecboot-${PV}"
+SRC_URI = "https://github.com/kexecboot/kexecboot/archive/v${PV}.tar.gz"
+SRC_URI[md5sum] = "46b7c1a6f20531be56445ebb8669a2b8"
+SRC_URI[sha256sum] = "6b360b8aa59bc5d68a96705349a0dd416f8ed704e931fa0ac7849298258f0f15"
+
+SRC_URI += "\
+            file://0001-kexecboot-fix-build-when-S-B.patch \
+            file://0002-kexecboot-fix-configure-warnings.patch \
+            file://0003-kexecboot-do-not-hardcode-MOUNTPOINT.patch \
+            file://0004-kexecboot.c-workaround-for-absolute-kernel-and-initr.patch \
+            \
+            file://0005-rgb.h-fix-build-with-gcc5.patch \
+            "
+
+inherit autotools
+
+EXTRA_OECONF = "--enable-textui --enable-delay=2 --enable-evdev-rate=1000,250"
+
+do_install () {
+    install -d ${D}${bindir}
+    install -m 0755 kexecboot ${D}${bindir}
+    install -d ${D}/proc
+    install -d ${D}/mnt
+    install -d ${D}/dev
+    install -d ${D}/sys
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+FILES_${PN} += " ${bindir}/kexecboot /init /proc /mnt /dev /sys"
+
+pkg_postinst_${PN} () {
+    ln -sf ${bindir}/kexecboot $D/init
+}
+
+BBCLASSEXTEND = "klibc"
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
new file mode 100644
index 0000000..c978263
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
@@ -0,0 +1,61 @@
+SUMMARY = "Initramfs generator using udev"
+DESCRIPTION = "Dracut is an event driven initramfs infrastructure. dracut (the tool) is used to create an initramfs image by copying tools and files from an installed system and combining it with the dracut framework, usually found in /usr/lib/dracut/modules.d."
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+PE = "1"
+PV = "044+git${SRCREV}"
+
+# v044 tag
+SRCREV = "1bc3e733f96033a508841e97fe08da7a12851782"
+SRC_URI = "git://git.kernel.org/pub/scm/boot/dracut/dracut.git;protocol=http"
+
+inherit bash-completion
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF = "--prefix=${prefix} \
+                --libdir=${prefix}/lib \
+                --datadir=${datadir} \
+                --sysconfdir=${sysconfdir} \
+                --sbindir=${sbindir} \
+                --disable-documentation \
+                --bindir=${bindir} \
+                --includedir=${includedir} \
+                --localstatedir=${localstatedir} \
+               "
+
+# RDEPEND on systemd optionally
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,,,systemd"
+
+EXTRA_OEMAKE += 'libdir=${prefix}/lib'
+
+do_configure() {
+    ./configure ${EXTRA_OECONF}
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+    # Its Makefile uses cp -arx to install modules.d, so fix the owner
+    # to root:root
+    chown -R root:root ${D}/${prefix}/lib/dracut/modules.d
+}
+
+FILES_${PN} += "${prefix}/lib/kernel \
+                ${prefix}/lib/dracut \
+                ${systemd_unitdir} \
+               "
+FILES_${PN}-dbg += "${prefix}/lib/dracut/.debug"
+
+CONFFILES_${PN} += "${sysconfdir}/dracut.conf"
+
+RDEPENDS_${PN} = "findutils cpio util-linux-blkid util-linux-getopt util-linux bash ldd"
+
+# This could be optimized a bit, but let's avoid non-booting systems :)
+RRECOMMENDS_${PN} = " \
+                     kernel-modules \
+                     busybox \
+                     coreutils \ 
+                    "
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klcc-cross_2.0.4.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klcc-cross_2.0.4.bb
new file mode 100644
index 0000000..2f4afce
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klcc-cross_2.0.4.bb
@@ -0,0 +1,40 @@
+SUMMARY = "The klcc crosscompiler for klibc"
+
+require klibc.inc
+DEPENDS = "klibc"
+
+FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:"
+
+SRC_URI += "file://use-env-for-perl.patch"
+
+# disable task already run in klibc recipe
+do_configure[noexec] = "1"
+
+do_compile() {
+    oe_runmake 'INSTALLDIR=${STAGING_DIR_TARGET}${libdir}/klibc' klcc
+}
+
+do_install() {
+    install -d ${D}${bindir_crossscripts}/
+    install -m 0755 klcc/klcc ${D}${bindir_crossscripts}/${TARGET_PREFIX}klcc
+    # Insert an unencoded path as a comment to trigger the sstate renaming functions
+    sed -i '2i #${STAGING_DIR_TARGET}' ${D}${bindir_crossscripts}/${TARGET_PREFIX}klcc
+}
+
+SYSROOT_PREPROCESS_FUNCS += "klcc_sysroot_preprocess"
+
+klcc_sysroot_preprocess () {
+       sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
+}
+
+deltask do_package
+deltask do_packagedata
+deltask do_package_write_ipk
+deltask do_package_write_rpm
+deltask do_package_write_deb
+deltask do_package_write_tar
+
+SSTATE_SCAN_FILES = "*"
+EXTRA_STAGING_FIXMES = "MANGLEDSTAGINGDIRTARGET MANGLEDSTAGINGDIR"
+MANGLEDSTAGINGDIR = "${@d.getVar("STAGING_DIR", True).replace("/", "\\\\/").replace("-", "\\\\-")}"
+MANGLEDSTAGINGDIRTARGET = "${@d.getVar("STAGING_DIR_TARGET", True).replace("/", "\\\\/").replace("-", "\\\\-")}"
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/armv4-fix-v4bx.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/armv4-fix-v4bx.patch
new file mode 100644
index 0000000..6bb384b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/armv4-fix-v4bx.patch
@@ -0,0 +1,15 @@
+Status: not applicable upstream, in OE/Yocto we use $(FIX_V4BX)
+which is "" in case of armv5 or thumbs.
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+--- a/usr/klibc/arch/arm/MCONFIG	2013-01-09 01:12:02.000000000 +0100
++++ b/usr/klibc/arch/arm/MCONFIG	2013-01-08 23:45:59.000000000 +0100
+@@ -29,6 +29,7 @@
+ KLIBCSHAREDFLAGS = -Ttext 0x01800200
+ ifeq ($(CONFIG_AEABI),y)
+ KLIBCREQFLAGS += -mabi=aapcs-linux -mno-thumb-interwork
++KLIBCLDFLAGS += $(FIX_ARMV4_EABI_BX)
+ else
+ KLIBCREQFLAGS += -mabi=apcs-gnu -mno-thumb-interwork
+ endif
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klcc-consider-sysroot.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klcc-consider-sysroot.patch
new file mode 100644
index 0000000..9bc4835
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klcc-consider-sysroot.patch
@@ -0,0 +1,14 @@
+diff --git a/klcc/klcc.in b/klcc/klcc.in
+index 43d0984..61e9385 100644
+--- a/klcc/klcc.in
++++ b/klcc/klcc.in
+@@ -204,6 +204,9 @@ while ( defined($a = shift(@ARGV)) ) {
+ 	# Libraries
+ 	push(@libs, $a);
+ 	push(@libs, shift(@ARGV)) if ( $2 eq '' );
++    } elsif ( $a =~ /^--([sysroot=])(.*)$/ ) {
++	# Override gcc encoded sysroot
++	push(@ccopt, $a);
+     } else {
+ 	die "$0: unknown option: $a\n";
+     }
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-config-eabi.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-config-eabi.patch
new file mode 100644
index 0000000..316c80a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-config-eabi.patch
@@ -0,0 +1,14 @@
+Patch was imported from the OpenEmbedded git server
+(git://git.openembedded.org/openembedded)
+as of commit id b6764cf32ec93547531130dca364fb95e1c495f4
+Signed-off-by: Thomas Kunze <thommycheck@gmx.de>
+
+diff -Nur klibc-1.5/defconfig klibc-1.5p/defconfig
+--- klibc-1.5/defconfig	2007-03-04 02:52:10.000000000 +0100
++++ klibc-1.5p/defconfig	2008-02-08 19:24:22.337127756 +0100
+@@ -5,4 +5,4 @@
+ CONFIG_REGPARM=y
+ # ARM options
+ # CONFIG_KLIBC_THUMB is not set
+-# CONFIG_AEABI is not set
++CONFIG_AEABI=y
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-linux-libc-dev.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-linux-libc-dev.patch
new file mode 100644
index 0000000..2043064
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/klibc-linux-libc-dev.patch
@@ -0,0 +1,22 @@
+commit 43adf69062254fb4f8d4d11fb5fe36a60ae25d5a
+Author: Ben Hutchings <ben@decadent.org.uk>
+Date:   Sun Mar 14 18:41:56 2010 +0000
+
+    Taken from debian "Fix klibc Debian specific build trouble"
+    Adapted for klibc_2.0.2
+
+Index: klibc-2.0~rc2/scripts/Kbuild.install
+===================================================================
+--- klibc-2.0~rc2.orig/scripts/Kbuild.install	2012-02-11 18:50:21.000000000 +0000
++++ klibc-2.0~rc2/scripts/Kbuild.install	2012-02-11 19:04:52.000000000 +0000
+@@ -95,7 +95,9 @@
+ 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib
+ 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin
+-	$(Q)$(MAKE) -C $(KLIBCKERNELSRC) ARCH=$(KLIBCARCH) INSTALL_HDR_PATH=$(INSTALLROOT)$(INSTALLDIR)/$(KCROSS) headers_install
++	$(Q)for x in ../../../include/asm ../../../include/asm-generic ../../../include/linux ../../../include/mtd; do \
++		ln -sf $${x} $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/ || exit; \
++	done
+ 	$(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/.
+ 	$(Q)chmod -R a+rX $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ 	$(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/staging.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/staging.patch
new file mode 100644
index 0000000..c01c712
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/staging.patch
@@ -0,0 +1,144 @@
+Patch was imported from the OpenEmbedded git server
+(git://git.openembedded.org/openembedded)
+as of commit id eefb99a313bbcc8f34c8b32bf0c5aa2dd2580735
+Signed-off-by: Thomas Kunze <thommycheck@gmx.de>
+
+Minor edits following upstream changes
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+
+Index: klibc-1.5.24/scripts/Kbuild.install
+===================================================================
+--- a/scripts/Kbuild.install	2011-07-27 15:50:53.000000000 +0200
++++ b/scripts/Kbuild.install	2011-08-01 00:03:03.000000000 +0200
+@@ -88,13 +88,10 @@
+ header:
+ 	$(Q)echo "  INSTALL headers + man pages to $(INSTALLROOT)$(INSTALLDIR)"
+ 	$(Q)mkdir -p $(INSTALLROOT)$(bindir)
+-	$(Q)mkdir -p $(INSTALLROOT)$(mandir)/man1
+-	$(Q)mkdir -p $(INSTALLROOT)$(SHLIBDIR)
+ 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)
+ 	$(Q)-rm -rf $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib
+-	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin
+ 	$(Q)for x in ../../../include/asm ../../../include/asm-generic ../../../include/linux ../../../include/mtd; do \
+ 		ln -sf $${x} $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/ || exit; \
+ 	done
+@@ -103,7 +100,6 @@
+ 	done
+ 	$(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/.
+ 	$(Q)chmod -R a+rX,go-w $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+-	$(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1
+ 	$(Q)$(install-bin) $(objtree)/klcc/$(KCROSS)klcc $(INSTALLROOT)$(bindir)
+ 
+ footer: header
+
+Index: klibc-1.5.24/usr/dash/Kbuild
+===================================================================
+--- a/usr/dash/Kbuild	2011-07-27 15:50:53.000000000 +0200
++++ b/usr/dash/Kbuild	2011-08-01 00:07:56.000000000 +0200
+@@ -92,5 +92,3 @@
+ $(obj)/syntax.h: $(obj)/syntax.c
+ 	$(Q):
+ 
+-# Targets to install
+-install-y := sh.shared
+
+Index: klibc-1.5.24/usr/gzip/Kbuild
+===================================================================
+--- a/usr/gzip/Kbuild	2011-07-27 15:50:53.000000000 +0200
++++ b/usr/gzip/Kbuild	2011-08-01 00:06:39.000000000 +0200
+@@ -21,5 +21,3 @@
+ # Cleaning
+ targets := gzip gzip.g gunzip zcat
+ 
+-# Targets to install
+-install-y := gzip gunzip zcat
+
+Index: klibc-1.5.24/usr/kinit/fstype/Kbuild
+===================================================================
+--- a/usr/kinit/fstype/Kbuild	2011-07-27 15:50:53.000000000 +0200
++++ b/usr/kinit/fstype/Kbuild	2011-08-01 00:09:12.000000000 +0200
+@@ -21,5 +21,3 @@
+ # Cleaning
+ clean-dirs := static shared
+ 
+-# install binary
+-install-y := $(shared-y)
+
+Index: klibc-1.5.24/usr/kinit/ipconfig/Kbuild
+===================================================================
+--- a/usr/kinit/ipconfig/Kbuild	2011-07-27 15:50:53.000000000 +0200
++++ b/usr/kinit/ipconfig/Kbuild	2011-08-01 00:10:52.000000000 +0200
+@@ -27,5 +27,3 @@
+ # Cleaning
+ clean-dirs := static shared
+ 
+-# install binary
+-install-y := $(shared-y)
+
+Index: klibc-1.5.24/usr/kinit/Kbuild
+===================================================================
+--- a/usr/kinit/Kbuild	2011-07-27 15:50:53.000000000 +0200
++++ b/usr/kinit/Kbuild	2011-08-01 00:20:18.000000000 +0200
+@@ -33,5 +33,3 @@
+ subdir- := fstype ipconfig nfsmount resume run-init
+ 
+ 
+-# install binary
+-install-y := kinit kinit.shared
+
+Index: klibc-1.5.24/usr/kinit/nfsmount/Kbuild
+===================================================================
+--- a/usr/kinit/nfsmount/Kbuild	2011-07-27 15:50:53.000000000 +0200
++++ b/usr/kinit/nfsmount/Kbuild	2011-08-01 00:12:52.000000000 +0200
+@@ -23,5 +23,3 @@
+ 
+ clean-dirs := static shared
+ 
+-# Install binary
+-install-y := $(shared-y)
+
+Index: klibc-1.5.24/usr/kinit/resume/Kbuild
+===================================================================
+--- a/usr/kinit/resume/Kbuild	2011-07-27 15:50:53.000000000 +0200
++++ b/usr/kinit/resume/Kbuild	2011-08-01 00:13:51.000000000 +0200
+@@ -26,5 +26,3 @@
+ # Cleaning
+ clean-dirs := static shared
+ 
+-# install binary
+-install-y := $(shared-y)
+
+Index: klibc-1.5.24/usr/kinit/run-init/Kbuild
+===================================================================
+--- a/usr/kinit/run-init/Kbuild	2011-07-27 15:50:53.000000000 +0200
++++ b/usr/kinit/run-init/Kbuild	2011-08-01 00:14:41.000000000 +0200
+@@ -25,5 +25,3 @@
+ # Cleaning
+ clean-dirs := static shared
+ 
+-# install binary
+-install-y := $(shared-y)
+
+Index: klibc-1.5.24/usr/klibc/Kbuild
+===================================================================
+--- a/usr/klibc/Kbuild	2011-07-27 15:50:53.000000000 +0200
++++ b/usr/klibc/Kbuild	2011-08-01 00:18:11.000000000 +0200
+@@ -177,5 +177,3 @@
+ 	          $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)lib))
+ 	$(Q)$(install-lib) $(obj)/klibc-$(SOLIBHASH).so \
+ 	                      $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)lib
+-	$(Q)$(install-lib) $(obj)/klibc-$(SOLIBHASH).so \
+-	                      $(INSTALLROOT)$(SHLIBDIR)
+
+Index: klibc-1.5.24/usr/utils/Kbuild
+===================================================================
+--- a/usr/utils/Kbuild	2011-07-27 15:50:53.000000000 +0200
++++ b/usr/utils/Kbuild	2011-08-01 00:19:13.000000000 +0200
+@@ -72,5 +72,3 @@
+ # Clean deletes the static and shared dir
+ clean-dirs := static shared
+ 
+-# install only install the shared binaries
+-install-y := $(shared-y) shared/reboot shared/poweroff
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/use-env-for-perl.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/use-env-for-perl.patch
new file mode 100644
index 0000000..eac128c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-2.0.4/use-env-for-perl.patch
@@ -0,0 +1,25 @@
+Patch was imported from the OpenEmbedded git server
+(git://git.openembedded.org/openembedded)
+as of commit id 676cbb54d42c89a4832871064cfcb7ee2ad372ee
+
+klcc-cross: Add patch to use /usr/bin/env perl
+Certain configurations (such as autobuilders) may build in very
+deep paths (that are longer than the #! mechanism allows) which
+makes it unsafe to use the direct path for perl.  In our case we know
+that /usr/bin/env perl will always return ours (if it has been built).
+
+Signed-off-by: Tom Rini <tom_rini@mentor.com>
+
+Index: klibc-1.5.20/klcc/makeklcc.pl
+===================================================================
+--- a/klcc/makeklcc.pl
++++ b/klcc/makeklcc.pl
+@@ -26,7 +26,7 @@ sub pathsearch($) {
+     return undef;
+ }
+ 
+-print "#!${perlpath}\n";
++print "#!/usr/bin/env perl\n";
+ 
+ open(KLIBCCONF, "< $klibcconf\0")
+     or die "$0: cannot open $klibcconf: $!\n";
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-static-utils_2.0.4.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-static-utils_2.0.4.bb
new file mode 100644
index 0000000..c835fd6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-static-utils_2.0.4.bb
@@ -0,0 +1,12 @@
+SUMMARY = "klibc utils for initramfs statically compiled"
+
+FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:"
+
+PACKAGES = "${PN}"
+FILES_${PN} = ""
+
+KLIBC_UTILS_VARIANT = "static"
+KLIBC_UTILS_PKGNAME = "klibc-static-utils"
+
+require klibc-utils.inc
+require klibc.inc
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-utils.inc b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-utils.inc
new file mode 100644
index 0000000..9014f52
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-utils.inc
@@ -0,0 +1,60 @@
+do_install() {
+    install -d ${D}${base_bindir}
+    install -d ${D}${base_sbindir}
+    # debian packages kinit + kinit.shared but only sh.shared
+    if [ "${KLIBC_UTILS_VARIANT}" = "shared" ]; then
+        install -m 755 usr/kinit/kinit ${D}${base_bindir}/kinit
+        install -m 755 usr/kinit/kinit.shared ${D}${base_bindir}/kinit.shared
+        install -m 755 usr/dash/sh.shared ${D}${base_bindir}/sh.shared
+    else
+        install -m 755 usr/dash/sh ${D}${base_bindir}/sh
+        install -m 755 usr/kinit/kinit ${D}${base_bindir}/kinit
+    fi
+    install -m 755 usr/gzip/gzip ${D}${base_bindir}
+    install -m 755 usr/kinit/fstype/${KLIBC_UTILS_VARIANT}/fstype ${D}${base_bindir}
+    install -m 755 usr/kinit/ipconfig/${KLIBC_UTILS_VARIANT}/ipconfig ${D}${base_bindir}
+    install -m 755 usr/kinit/nfsmount/${KLIBC_UTILS_VARIANT}/nfsmount ${D}${base_bindir}
+    install -m 755 usr/kinit/resume/${KLIBC_UTILS_VARIANT}/resume ${D}${base_bindir}
+    install -m 755 usr/kinit/run-init/${KLIBC_UTILS_VARIANT}/run-init ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/cat ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/chroot ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/cpio ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/dd ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/dmesg ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/false ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/halt ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/kill ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/ln ${D}${base_bindir}
+    # losetup goes in ${base_sbindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/losetup ${D}${base_sbindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/ls ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/minips ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mkdir ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mkfifo ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mknod ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mount ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mv ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/nuke ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/pivot_root ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/poweroff ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/readlink ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/reboot ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/sleep ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/sync ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/true ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/umount ${D}${base_bindir}
+    install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/uname ${D}${base_bindir}
+    ln -s gzip ${D}${base_bindir}/gunzip
+    ln -s gzip ${D}${base_bindir}/zcat
+}
+
+EXTRA_KLIBC_DEPS = "${@base_conditional('KLIBC_UTILS_VARIANT', 'shared', '${THIS_LIBKLIBC}', '', d)}"
+
+PACKAGES_DYNAMIC += "^${KLIBC_UTILS_PKGNAME}-.*"
+
+python populate_packages_prepend () {
+    base_bin_dir = d.expand('${base_bindir}')
+    do_split_packages(d, base_bin_dir, '(.*)', '${KLIBC_UTILS_PKGNAME}-%s', 'Klibc util for %s', extra_depends='${EXTRA_KLIBC_DEPS}', allow_links=True, allow_dirs=True)
+    base_sbin_dir = d.expand('${base_sbindir}')
+    do_split_packages(d, base_sbin_dir, '(.*)', '${KLIBC_UTILS_PKGNAME}-%s', 'Klibc util for %s', extra_depends='${EXTRA_KLIBC_DEPS}', allow_dirs=True)
+}
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-utils_2.0.4.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-utils_2.0.4.bb
new file mode 100644
index 0000000..06e71cb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc-utils_2.0.4.bb
@@ -0,0 +1,14 @@
+SUMMARY = "klibc utils for initramfs"
+
+FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:"
+
+PACKAGES = "${PN}"
+FILES_${PN} = ""
+
+KLIBC_UTILS_VARIANT = "shared"
+KLIBC_UTILS_PKGNAME = "klibc-utils"
+
+require klibc-utils.inc
+require klibc.inc
+
+DEPENDS = "klibc"
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc
new file mode 100644
index 0000000..65ee868
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc
@@ -0,0 +1,51 @@
+DESCRIPTION = "klibc is intended to be a minimalistic libc subset for \
+use with initramfs.  It is deliberately written for small size, \
+minimal entaglement, and portability, not speed."
+SECTION = "libs"
+LICENSE = "BSD-3-Clause & GPL-2.0 & MIT & Zlib"
+LIC_FILES_CHKSUM = "file://usr/klibc/LICENSE;md5=d75181f10e998c21eb147f6d2e43ce8b"
+DEPENDS = "linux-libc-headers perl-native"
+SRCREV = "4d19974d7020488f63651244e1f9f51727c3f66c"
+
+SRC_URI = "git://git.kernel.org/pub/scm/libs/klibc/klibc.git"
+SRC_URI_append_linux-gnueabi = " file://klibc-config-eabi.patch \
+                                 file://armv4-fix-v4bx.patch \
+                                 "
+SRC_URI_append_linux-uclibceabi = " file://klibc-config-eabi.patch \
+                                    file://armv4-fix-v4bx.patch \
+                                    "
+SRC_URI += "file://klibc-linux-libc-dev.patch \
+            file://staging.patch \
+            file://klcc-consider-sysroot.patch \
+            "
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "'KLIBCARCH=${KLIBC_ARCH}' \
+                'CROSS_COMPILE=${TARGET_PREFIX}' \
+                'KLIBCKERNELSRC=${STAGING_DIR_TARGET}${exec_prefix}' \
+                'KLIBCLIBGCC=${STAGING_DIR_TARGET}${libdir}/${TARGET_SYS}/*/libgcc.a' \
+                'prefix=${exec_prefix}' \
+                'INSTALLROOT=${D}' \
+                'SHLIBDIR=${libdir}' \
+                "
+
+export FIX_ARMV4_EABI_BX = "${FIX_V4BX}"
+
+do_configure () {
+    ln -sf "${STAGING_DIR_TARGET}${exec_prefix}" linux
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+INSANE_SKIP_${PN} = "already-stripped"
+INSANE_SKIP_libklibc-dev = "dev-elf"
+KLIBC_ARCH = "${TARGET_ARCH}"
+KLIBC_ARCH_aarch64 = "arm64"
+KLIBC_ARCH_armeb = "arm"
+KLIBC_ARCH_mipsel = "mips"
+KLIBC_ARCH_x86 = "i386"
+KLIBC_ARCH_x86-64 = "x86_64"
+KLIBC_ARCH_powerpc = "ppc"
+KLIBC_ARCH_powerpc64 = "ppc64"
+THIS_LIBKLIBC = "libklibc (= ${PV}-${PR})"
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc_2.0.4.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc_2.0.4.bb
new file mode 100644
index 0000000..bc80f38
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc_2.0.4.bb
@@ -0,0 +1,24 @@
+SUMMARY = "klibc, a small C library for use with initramfs"
+
+do_install() {
+    oe_runmake install
+    # the crosscompiler is packaged by klcc-cross
+    # remove klcc
+    rm ${D}${bindir}/klcc
+    # remove now empty dir
+    rmdir ${D}${bindir}
+    install -d ${D}${libdir}
+    install -m 755 usr/klibc/klibc-*.so ${D}${libdir}
+    (cd  ${D}${libdir}; ln -s klibc-*.so klibc.so)
+}
+
+PACKAGES = "libklibc libklibc-staticdev libklibc-dev"
+
+FILES_libklibc = "${libdir}/klibc-*.so"
+FILES_libklibc-staticdev = "${libdir}/klibc/lib/libc.a"
+FILES_libklibc-dev = "${libdir}/klibc.so \
+                      ${libdir}/klibc/lib/* \
+                      ${libdir}/klibc/include/* \
+                      "
+
+require klibc.inc
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0001-Makefile-only-build-ubi-utils.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0001-Makefile-only-build-ubi-utils.patch
new file mode 100644
index 0000000..9d5e4eb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0001-Makefile-only-build-ubi-utils.patch
@@ -0,0 +1,87 @@
+From c4e6bd9378645d577e9d9f85da85f1438afe7c50 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sun, 29 Jun 2014 00:32:29 +0200
+Subject: [PATCH 1/6] Makefile: build ubi-utils only
+
+We build all the static ubi-utils but actually only ubiattach is needed in
+a minimalistic initramfs for the mount of ubi volumes.
+
+More fixes are needed in order to build the full mtd-utils.
+The first issue is:
+
+| mkfs.jffs2.c:64:20: fatal error: libgen.h: No such file or directory
+|  #include <libgen.h>
+
+Removing the include then the second error is:
+
+| mkfs.jffs2.c:1570:22: error: '_SC_PAGESIZE' undeclared
+| (first use in this function)
+|   page_size = sysconf(_SC_PAGESIZE);
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ Makefile | 24 ++----------------------
+ 1 file changed, 2 insertions(+), 22 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index eade234..2275865 100644
+--- a/Makefile
++++ b/Makefile
+@@ -16,28 +16,13 @@ endif
+ 
+ TESTS = tests
+ 
+-MTD_BINS = \
+-	ftl_format flash_erase nanddump doc_loadbios \
+-	ftl_check mkfs.jffs2 flash_lock flash_unlock \
+-	flash_otp_info flash_otp_dump flash_otp_lock flash_otp_write \
+-	mtd_debug flashcp nandwrite nandtest \
+-	jffs2dump \
+-	nftldump nftl_format docfdisk \
+-	rfddump rfdformat \
+-	serve_image recv_image \
+-	sumtool jffs2reader
+ UBI_BINS = \
+ 	ubiupdatevol ubimkvol ubirmvol ubicrc32 ubinfo ubiattach \
+ 	ubidetach ubinize ubiformat ubirename mtdinfo ubirsvol ubiblock
+ 
+-BINS = $(MTD_BINS)
+-BINS += mkfs.ubifs/mkfs.ubifs
+-BINS += $(addprefix ubi-utils/,$(UBI_BINS))
+-SCRIPTS = flash_eraseall
++BINS = $(addprefix ubi-utils/,$(UBI_BINS))
+ 
+ TARGETS = $(BINS)
+-TARGETS += lib/libmtd.a
+-TARGETS += ubi-utils/libubi.a
+ 
+ OBJDEPS = $(BUILDDIR)/include/version.h
+ 
+@@ -61,12 +46,9 @@ endif
+ 	rm -f $(BUILDDIR)/include/version.h
+ 	$(MAKE) -C $(TESTS) clean
+ 
+-install:: $(addprefix $(BUILDDIR)/,${BINS}) ${SCRIPTS}
++install:: $(addprefix $(BUILDDIR)/,${BINS})
+ 	mkdir -p ${DESTDIR}/${SBINDIR}
+ 	install -m 0755 $^ ${DESTDIR}/${SBINDIR}/
+-	mkdir -p ${DESTDIR}/${MANDIR}/man1
+-	install -m 0644 mkfs.jffs2.1 ${DESTDIR}/${MANDIR}/man1/
+-	-gzip -9f ${DESTDIR}/${MANDIR}/man1/*.1
+ 
+ tests::
+ 	$(MAKE) -C $(TESTS)
+@@ -91,8 +73,6 @@ LDLIBS_mkfs.jffs2  = -lz $(LZOLDLIBS)
+ LDFLAGS_jffs2reader = $(ZLIBLDFLAGS) $(LZOLDFLAGS)
+ LDLIBS_jffs2reader  = -lz $(LZOLDLIBS)
+ 
+-$(foreach v,$(MTD_BINS),$(eval $(call mkdep,,$(v))))
+-
+ #
+ # Common libmtd
+ #
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0002-common.mk-for-klibc-CC-is-klcc.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0002-common.mk-for-klibc-CC-is-klcc.patch
new file mode 100644
index 0000000..f46824b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0002-common.mk-for-klibc-CC-is-klcc.patch
@@ -0,0 +1,27 @@
+From f3609c7c0450b4c31e1d4603fcf2cfb1ba46f994 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sun, 29 Jun 2014 00:37:28 +0200
+Subject: [PATCH 2/6] common.mk: for klibc $(CC) is klcc
+
+Do not hardcode: assign the value to the variable if it is not already defined.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ common.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/common.mk b/common.mk
+index ba87377..59c56df 100644
+--- a/common.mk
++++ b/common.mk
+@@ -1,4 +1,4 @@
+-CC := $(CROSS)gcc
++CC ?= $(CROSS)gcc
+ AR := $(CROSS)ar
+ RANLIB := $(CROSS)ranlib
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0003-libubi.c-add-klibc-specific-fixes.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0003-libubi.c-add-klibc-specific-fixes.patch
new file mode 100644
index 0000000..962b368
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0003-libubi.c-add-klibc-specific-fixes.patch
@@ -0,0 +1,76 @@
+From 72a39bb3290a79e76b0dbf59eef83ea2d9b577a1 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sun, 29 Jun 2014 00:40:15 +0200
+Subject: [PATCH 3/6] libubi.c: add klibc specific fixes for ioctl
+
+First issue is that ioctl() in klibc doesn't expect a constant as arg3.
+Second issue is that arg3 in klibc ioctl() implementation is not optional.
+
+Fixes:
+
+| ubi-utils/libubi.c: In function 'do_attach':
+| ubi-utils/libubi.c:698:8: warning: passing argument 3 of 'ioctl' discards
+| 'const' qualifier from pointer target type
+|   ret = ioctl(fd, UBI_IOCATT, r);
+|         ^
+| In file included from ubi-utils/libubi.c:32:0:
+| .../lib/klibc/include/sys/ioctl.h:15:14: note: expected 'void *' but argument
+| is of type 'const struct ubi_attach_req *'
+|  __extern int ioctl(int, int, void *);
+|               ^
+
+| ubi-utils/libubi.c: In function 'ubi_vol_block_create':
+| ubi-utils/libubi.c:1118:9: error: too few arguments to function 'ioctl'
+|   return ioctl(fd, UBI_IOCVOLCRBLK);
+|          ^
+| In file included from ubi-utils/libubi.c:32:0:
+| .../lib/klibc/include/sys/ioctl.h:15:14: note: declared here
+|  __extern int ioctl(int, int, void *);
+|               ^
+| ubi-utils/libubi.c: In function 'ubi_vol_block_remove':
+| ubi-utils/libubi.c:1123:9: error: too few arguments to function 'ioctl'
+|   return ioctl(fd, UBI_IOCVOLRMBLK);
+|          ^
+| In file included from ubi-utils/libubi.c:32:0:
+| .../usr/lib/klibc/include/sys/ioctl.h:15:14: note: declared here
+|  __extern int ioctl(int, int, void *);
+|               ^
+
+Upstream-Status: Inappropriate [klibc specific]
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ ubi-utils/libubi.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/ubi-utils/libubi.c b/ubi-utils/libubi.c
+index 1e08b7d..491e525 100644
+--- a/ubi-utils/libubi.c
++++ b/ubi-utils/libubi.c
+@@ -687,7 +687,7 @@ void libubi_close(libubi_t desc)
+  * success and %-1 in case of failure. @r->ubi_num contains newly created UBI
+  * device number.
+  */
+-static int do_attach(const char *node, const struct ubi_attach_req *r)
++static int do_attach(const char *node, struct ubi_attach_req *r)
+ {
+ 	int fd, ret;
+ 
+@@ -1115,12 +1115,12 @@ int ubi_rsvol(libubi_t desc, const char *node, int vol_id, long long bytes)
+ 
+ int ubi_vol_block_create(int fd)
+ {
+-	return ioctl(fd, UBI_IOCVOLCRBLK);
++	return ioctl(fd, UBI_IOCVOLCRBLK, NULL);
+ }
+ 
+ int ubi_vol_block_remove(int fd)
+ {
+-	return ioctl(fd, UBI_IOCVOLRMBLK);
++	return ioctl(fd, UBI_IOCVOLRMBLK, NULL);
+ }
+ 
+ int ubi_update_start(libubi_t desc, int fd, long long bytes)
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0004-common.h-klibc-fixes-1.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0004-common.h-klibc-fixes-1.patch
new file mode 100644
index 0000000..fee1cbc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0004-common.h-klibc-fixes-1.patch
@@ -0,0 +1,84 @@
+From e56767b9caa02e7c41803499c77dc939d5a7f64a Mon Sep 17 00:00:00 2001
+From: Thorsten Glaser <tg@mirbsd.org>
+Date: Fri, 20 Jun 2014 10:56:27 +0000
+Subject: [PATCH 4/6] Restore compatibility to dietlibc, klibc, musl libc after commit 4f1b108
+
+Each C library has their own way to define off_t, and the <features.h>
+header is nonstandard and specific to the GNU libc and those that clone
+it (uClibc). Fefe’s dietlibc uses different flags, and klibc always uses
+a 64-bit off_t (like the BSDs); musl libc cannot be recognised using cpp
+instructions, so we assume 64 bit there (and on unknown C libraries) and
+leave it to the user to submit a follow-up fix if we guess wrong. I also
+added a static assertion to verify the 64 bit guess is correct.
+
+It would be really better using a configure script for this instead.
+
+Fixes:
+|   CC      lib/libmtd.o
+| In file included from ubi-utils/ubiutils-common.c:35:0:
+| ./include/common.h:29:22: fatal error: features.h: No such file or directory
+|  #include <features.h>
+|                       ^
+| compilation terminated.
+
+Upstream-Status: Pending
+
+Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ include/common.h | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+diff --git a/include/common.h b/include/common.h
+index 6895e5c..77f3f7d 100644
+--- a/include/common.h
++++ b/include/common.h
+@@ -26,7 +26,9 @@
+ #include <string.h>
+ #include <fcntl.h>
+ #include <errno.h>
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ #include <features.h>
++#endif
+ #include <inttypes.h>
+ #include "version.h"
+ 
+@@ -52,6 +54,21 @@ extern "C" {
+ #endif
+ 
+ /* define a print format specifier for off_t */
++#if defined(__KLIBC__)
++/* always 64 bit on klibc */
++#define PRIxoff_t PRIx64
++#define PRIdoff_t PRId64
++#elif defined(__dietlibc__)
++/* depends on compiler flags on dietlibc */
++#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
++#define PRIxoff_t PRIx64
++#define PRIdoff_t PRId64
++#else
++#define PRIxoff_t "l"PRIx32
++#define PRIdoff_t "l"PRId32
++#endif
++#elif defined(__GLIBC__) || defined(__UCLIBC__)
++/* depends on compiler flags on glibc and uClibc */
+ #ifdef __USE_FILE_OFFSET64
+ #define PRIxoff_t PRIx64
+ #define PRIdoff_t PRId64
+@@ -59,6 +76,13 @@ extern "C" {
+ #define PRIxoff_t "l"PRIx32
+ #define PRIdoff_t "l"PRId32
+ #endif
++#else
++/* unknown libc or musl */
++#define PRIxoff_t PRIx64
++#define PRIdoff_t PRId64
++/* verify our guess of 64 bit is correct */
++static char __PRIxoff_t_static_assert[sizeof(off_t) == 8 ? 1 : -1];
++#endif
+ 
+ /* Verbose messages */
+ #define bareverbose(verbose, fmt, ...) do {                        \
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0005-common.h-klibc-fixes-2.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0005-common.h-klibc-fixes-2.patch
new file mode 100644
index 0000000..2e43d5d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0005-common.h-klibc-fixes-2.patch
@@ -0,0 +1,61 @@
+From 8318852ef4f768bed31072aa7b57e11adc1f639c Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sun, 29 Jun 2014 00:44:03 +0200
+Subject: [PATCH 5/6] common.h: more workarounds for klibc compatibility
+
+Patch is addressing two issues:
+* First,  Klibc doesn't have rpmatch().
+* Second, Klibc lacks getline()
+
+Fixes:
+|   LD      ubi-utils/ubiformat
+| .../git/ubi-utils/ubiformat.o: In function `prompt':
+| .../git/./include/common.h:157: undefined reference to `getline'
+| .../git/./include/common.h:164: undefined reference to `rpmatch'
+| .../git/./include/common.h:157: undefined reference to `getline'
+| .../git/./include/common.h:164: undefined reference to `rpmatch'
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ include/common.h | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/include/common.h b/include/common.h
+index 77f3f7d..2cbee0f 100644
+--- a/include/common.h
++++ b/include/common.h
+@@ -126,7 +126,7 @@ static char __PRIxoff_t_static_assert[sizeof(off_t) == 8 ? 1 : -1];
+ 	fprintf(stderr, "%s: warning!: " fmt "\n", PROGRAM_NAME, ##__VA_ARGS__); \
+ } while(0)
+ 
+-#if defined(__UCLIBC__)
++#if defined(__UCLIBC__) || defined(__KLIBC__)
+ /* uClibc versions before 0.9.34 don't have rpmatch() */
+ #if __UCLIBC_MAJOR__ == 0 && \
+ 		(__UCLIBC_MINOR__ < 9 || \
+@@ -146,15 +146,17 @@ static inline int __rpmatch(const char *resp)
+  */
+ static inline bool prompt(const char *msg, bool def)
+ {
+-	char *line = NULL;
+-	size_t len;
++	char *line;
+ 	bool ret = def;
+ 
++	const int sizeof_line = 2;
++	line = malloc(sizeof_line);
++
+ 	do {
+ 		normsg_cont("%s (%c/%c) ", msg, def ? 'Y' : 'y', def ? 'n' : 'N');
+ 		fflush(stdout);
+ 
+-		while (getline(&line, &len, stdin) == -1) {
++		while (fgets(line, sizeof_line, stdin) == NULL) {
+ 			printf("failed to read prompt; assuming '%s'\n",
+ 				def ? "yes" : "no");
+ 			break;
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0006-libiniparser-remove-unused-function-needing-float.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0006-libiniparser-remove-unused-function-needing-float.patch
new file mode 100644
index 0000000..043a89d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc/0006-libiniparser-remove-unused-function-needing-float.patch
@@ -0,0 +1,85 @@
+From 72a04a9b9ed33c889d2e2b86f306c5be9f6cde35 Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sun, 29 Jun 2014 00:44:57 +0200
+Subject: [PATCH 6/6] libiniparser: remove unused function needing float
+
+Fixes:
+|   LD      ubi-utils/ubiformat
+| .../git/ubi-utils/libiniparser.a(libiniparser.o): In function
+| `  LD      ubi-utils/ubirename
+| iniparser_getdouble':
+| .../git/ubi-utils/libiniparser.c:336: undefined reference to `atof'
+
+Grep doesn't reveal any occurrence of iniparser_getdouble(), using atof() so
+remove it: floating-point is not supported in klibc
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ ubi-utils/include/libiniparser.h | 15 ---------------
+ ubi-utils/libiniparser.c         | 22 ----------------------
+ 2 files changed, 37 deletions(-)
+
+diff --git a/ubi-utils/include/libiniparser.h b/ubi-utils/include/libiniparser.h
+index be3c667..abd77aa 100644
+--- a/ubi-utils/include/libiniparser.h
++++ b/ubi-utils/include/libiniparser.h
+@@ -158,21 +158,6 @@ int iniparser_getint(dictionary * d, const char * key, int notfound);
+ 
+ /*-------------------------------------------------------------------------*/
+ /**
+-  @brief    Get the string associated to a key, convert to a double
+-  @param    d Dictionary to search
+-  @param    key Key string to look for
+-  @param    notfound Value to return in case of error
+-  @return   double
+-
+-  This function queries a dictionary for a key. A key as read from an
+-  ini file is given as "section:key". If the key cannot be found,
+-  the notfound value is returned.
+- */
+-/*--------------------------------------------------------------------------*/
+-double iniparser_getdouble(dictionary * d, char * key, double notfound);
+-
+-/*-------------------------------------------------------------------------*/
+-/**
+   @brief    Get the string associated to a key, convert to a boolean
+   @param    d Dictionary to search
+   @param    key Key string to look for
+diff --git a/ubi-utils/libiniparser.c b/ubi-utils/libiniparser.c
+index 898f57f..ba70c08 100644
+--- a/ubi-utils/libiniparser.c
++++ b/ubi-utils/libiniparser.c
+@@ -316,28 +316,6 @@ int iniparser_getint(dictionary * d, const char * key, int notfound)
+ 
+ /*-------------------------------------------------------------------------*/
+ /**
+-  @brief    Get the string associated to a key, convert to a double
+-  @param    d Dictionary to search
+-  @param    key Key string to look for
+-  @param    notfound Value to return in case of error
+-  @return   double
+-
+-  This function queries a dictionary for a key. A key as read from an
+-  ini file is given as "section:key". If the key cannot be found,
+-  the notfound value is returned.
+- */
+-/*--------------------------------------------------------------------------*/
+-double iniparser_getdouble(dictionary * d, char * key, double notfound)
+-{
+-    char    *   str ;
+-
+-    str = iniparser_getstring(d, key, INI_INVALID_KEY);
+-    if (str==INI_INVALID_KEY) return notfound ;
+-    return atof(str);
+-}
+-
+-/*-------------------------------------------------------------------------*/
+-/**
+   @brief    Get the string associated to a key, convert to a boolean
+   @param    d Dictionary to search
+   @param    key Key string to look for
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_1.5.1.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_1.5.1.bb
new file mode 100644
index 0000000..8ca1ca7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_1.5.1.bb
@@ -0,0 +1,50 @@
+SUMMARY = "UBI utils statically compiled against klibc"
+DESCRIPTION = "Small sized tools from mtd-utils for use with initramfs."
+SECTION = "base"
+DEPENDS = "zlib lzo e2fsprogs util-linux"
+HOMEPAGE = "http://www.linux-mtd.infradead.org/"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
+                    file://include/common.h;beginline=1;endline=17;md5=ba05b07912a44ea2bf81ce409380049c"
+
+inherit klibc
+
+SRC_URI = "git://git.infradead.org/mtd-utils.git;tag=b7455d847ab4f9eeeb6a729efc306bfda7bddc99 \
+             file://0001-Makefile-only-build-ubi-utils.patch \
+             file://0002-common.mk-for-klibc-CC-is-klcc.patch \
+             file://0003-libubi.c-add-klibc-specific-fixes.patch \
+             file://0004-common.h-klibc-fixes-1.patch \
+             file://0005-common.h-klibc-fixes-2.patch \
+             file://0006-libiniparser-remove-unused-function-needing-float.patch \
+             "
+
+S = "${WORKDIR}/git/"
+
+EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} -I${S}include -DWITHOUT_XATTR' 'BUILDDIR=${S}'"
+
+do_install () {
+
+    install -d ${D}${sbindir}
+    oe_runmake DESTDIR="${D}" install
+
+}
+
+PACKAGES = "ubi-utils-klibc-dbg"
+
+PACKAGES =+ "mtdinfo-klibc ubiattach-klibc ubiblock-klibc ubicrc32-klibc ubidetach-klibc \
+             ubiformat-klibc ubimkvol-klibc ubinfo-klibc ubinize-klibc ubirename-klibc \
+             ubirmvol-klibc ubirsvol-klibc ubiupdatevol-klibc"
+
+FILES_mtdinfo-klibc = "${sbindir}/mtdinfo"
+FILES_ubiattach-klibc = "${sbindir}/ubiattach"
+FILES_ubiblock-klibc = "${sbindir}/ubiblock"
+FILES_ubicrc32-klibc = "${sbindir}/ubicrc32"
+FILES_ubidetach-klibc = "${sbindir}/ubidetach"
+FILES_ubiformat-klibc = "${sbindir}/ubiformat"
+FILES_ubimkvol-klibc = "${sbindir}/ubimkvol"
+FILES_ubinfo-klibc = "${sbindir}/ubinfo"
+FILES_ubinize-klibc = "${sbindir}/ubinize"
+FILES_ubirename-klibc = "${sbindir}/ubirename"
+FILES_ubirmvol-klibc = "${sbindir}/ubirmvol"
+FILES_ubirsvol-klibc = "${sbindir}/ubirsvol"
+FILES_ubiupdatevol-klibc = "${sbindir}/ubiupdatevol"
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/arm_crashdump.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/arm_crashdump.patch
new file mode 100644
index 0000000..0ff61e5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/arm_crashdump.patch
@@ -0,0 +1,12 @@
+--- a/kexec/arch/arm/crashdump-arm.c
++++ b/kexec/arch/arm/crashdump-arm.c
+@@ -20,7 +20,7 @@
+  * along with this program; if not, write to the Free Software
+  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+  */
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include <errno.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/cflags_static.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/cflags_static.patch
new file mode 100644
index 0000000..35100a3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/cflags_static.patch
@@ -0,0 +1,11 @@
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -46,7 +46,7 @@
+ # where necessary.
+ CPPFLAGS	= @CPPFLAGS@ -I$(srcdir)/include -I$(srcdir)/util_lib/include \
+			-Iinclude/
+-CFLAGS		= @CFLAGS@ -fno-strict-aliasing -Wall -Wstrict-prototypes
++CFLAGS		= @CFLAGS@ -static -fno-strict-aliasing -Wall -Wstrict-prototypes
+ PURGATORY_EXTRA_CFLAGS = @PURGATORY_EXTRA_CFLAGS@
+ ASFLAGS		= @ASFLAGS@
+ LDFLAGS		= @LDFLAGS@
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/fix-out-of-tree-build.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/fix-out-of-tree-build.patch
new file mode 100644
index 0000000..ccbb24d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/fix-out-of-tree-build.patch
@@ -0,0 +1,54 @@
+From 37737527725e465833be649101c4a6f8352c5d5e Mon Sep 17 00:00:00 2001
+From: Tyler Hall <tylerwhall@gmail.com>
+Date: Tue, 7 Feb 2012 18:50:05 -0500
+Subject: Fix out-of-tree build
+
+Use automatic variables for prerequisites when copying man pages and
+include a makefile relative to $(srcdir).
+
+Backported to 2.0.2-klibc
+
+Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
+Signed-off-by: Simon Horman <horms@verge.net.au>
+
+diff --git a/kdump/Makefile b/kdump/Makefile
+index 1e2b72c..5dfa928 100644
+--- a/kdump/Makefile
++++ b/kdump/Makefile
+@@ -22,7 +22,7 @@ $(KDUMP): $(KDUMP_OBJS)
+ 
+ $(KDUMP_MANPAGE): kdump/kdump.8
+ 	$(MKDIR) -p     $(MANDIR)/man8
+-	cp kdump/kdump.8 $(KDUMP_MANPAGE)
++	cp $^ $(KDUMP_MANPAGE)
+ echo::
+ 	@echo "KDUMP_SRCS $(KDUMP_SRCS)"
+ 	@echo "KDUMP_DEPS $(KDUMP_DEPS)"
+diff --git a/kexec/Makefile b/kexec/Makefile
+index 2137cab..8c815b5 100644
+--- a/kexec/Makefile
++++ b/kexec/Makefile
+@@ -82,7 +82,7 @@ $(KEXEC): CPPFLAGS+=-I$(srcdir)/kexec/arch/$(ARCH)/include
+ 
+ $(KEXEC_MANPAGE): kexec/kexec.8
+ 	@$(MKDIR) -p     $(MANDIR)/man8
+-	cp kexec/kexec.8 $(KEXEC_MANPAGE)
++	cp $^ $(KEXEC_MANPAGE)
+ echo::
+ 	@echo "KEXEC_SRCS $(KEXEC_SRCS)"
+ 	@echo "KEXEC_DEPS $(KEXEC_DEPS)"
+diff --git a/kexec/arch/ppc/Makefile b/kexec/arch/ppc/Makefile
+index 3dba7cf..41242a5 100644
+--- a/kexec/arch/ppc/Makefile
++++ b/kexec/arch/ppc/Makefile
+@@ -1,7 +1,7 @@
+ #
+ # kexec ppc (linux booting linux)
+ #
+-include kexec/arch/ppc/libfdt/Makefile.libfdt
++include $(srcdir)/kexec/arch/ppc/libfdt/Makefile.libfdt
+ 
+ ppc_KEXEC_SRCS =  kexec/arch/ppc/kexec-ppc.c
+ ppc_KEXEC_SRCS += kexec/arch/ppc/kexec-elf-ppc.c
+
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ifdown_errno.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ifdown_errno.patch
new file mode 100644
index 0000000..7f8cddd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ifdown_errno.patch
@@ -0,0 +1,11 @@
+--- a/kexec/ifdown.c
++++ b/kexec/ifdown.c
+@@ -14,7 +14,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
+ #include <sys/time.h>
+-#include <sys/errno.h>
++#include <errno.h>
+ 
+ #include <net/if.h>
+ #include <netinet/in.h>
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-elf-rel.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-elf-rel.patch
new file mode 100644
index 0000000..c666afc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-elf-rel.patch
@@ -0,0 +1,61 @@
+--- a/kexec/kexec-elf-rel.c
++++ b/kexec/kexec-elf-rel.c
+@@ -4,7 +4,7 @@
+ #include <stdio.h>
+ #include <errno.h>
+ #include <stdlib.h>
+-#include "elf.h"
++#include "../include/elf.h"
+ #include <boot/elf_boot.h>
+ #include "kexec.h"
+ #include "kexec-elf.h"
+
+--- a/kexec/arch/arm/kexec-elf-rel-arm.c
++++ b/kexec/arch/arm/kexec-elf-rel-arm.c
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+ 
+
+--- a/kexec/arch/i386/kexec-elf-rel-x86.c
++++ b/kexec/arch/i386/kexec-elf-rel-x86.c
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+ 
+
+--- a/kexec/arch/ppc/kexec-elf-rel-ppc.c
++++ b/kexec/arch/ppc/kexec-elf-rel-ppc.c
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+ 
+
+--- a/kexec/arch/ppc64/kexec-elf-rel-ppc64.c
++++ b/kexec/arch/ppc64/kexec-elf-rel-ppc64.c
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include <string.h>
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+
+--- a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
++++ b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
+@@ -1,5 +1,5 @@
+ #include <stdio.h>
+-#include <elf.h>
++#include "../../../include/elf.h"
+ #include "../../kexec.h"
+ #include "../../kexec-elf.h"
+ 
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-syscall.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-syscall.patch
new file mode 100644
index 0000000..081de1b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/kexec-syscall.patch
@@ -0,0 +1,44 @@
+--- a/kexec/kexec-syscall.h
++++ b/kexec/kexec-syscall.h
+@@ -2,7 +2,7 @@
+ #define KEXEC_SYSCALL_H
+ 
+ #define __LIBRARY__
+-#include <syscall.h>
++/*#include <syscall.h>*/
+ #include <sys/syscall.h>
+ #include <unistd.h>
+ 
+@@ -23,6 +23,7 @@
+ #define LINUX_REBOOT_CMD_KEXEC		0x45584543
+ 
+ #ifndef __NR_kexec_load
++/*
+ #ifdef __i386__
+ #define __NR_kexec_load		283
+ #endif
+@@ -61,19 +62,21 @@
+ #ifndef __NR_kexec_load
+ #error Unknown processor architecture.  Needs a kexec_load syscall number.
+ #endif
++*/
+ #endif /*ifndef __NR_kexec_load*/
+ 
+ struct kexec_segment;
+-
++/*
+ static inline long kexec_load(void *entry, unsigned long nr_segments,
+ 			struct kexec_segment *segments, unsigned long flags)
+ {
+ 	return (long) syscall(__NR_kexec_load, entry, nr_segments, segments, flags);
+ }
+-
++*/
+ static inline long kexec_reboot(void)
+ {
+-	return (long) syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0);
++	//return (long) syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0);
++	return __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0);
+ }
+ 
+ 
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ppc__lshrdi3.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ppc__lshrdi3.patch
new file mode 100644
index 0000000..56cdfb0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/ppc__lshrdi3.patch
@@ -0,0 +1,18 @@
+--- a/purgatory/arch/ppc/crt.S
++++ b/purgatory/arch/ppc/crt.S
+@@ -249,6 +249,7 @@
+  *
+  */
+ 
++/* already defined in misc.S
+ _GLOBAL(__lshrdi3)
+ 	subfic	6,5,32
+ 	srw	4,4,5	# LSW = count > 31 ? 0 : LSW >> count
+@@ -259,5 +260,7 @@
+ 	srw	3,3,5	# MSW = MSW >> count
+ 	or	4,4,7	# LSW |= t2
+ 	blr
++*/
++
+ #endif
+ #endif
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_flags.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_flags.patch
new file mode 100644
index 0000000..41fc116
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_flags.patch
@@ -0,0 +1,21 @@
+--- a/purgatory/Makefile
++++ b/purgatory/Makefile
+@@ -47,7 +47,7 @@
+ $(PURGATORY): CC=$(TARGET_CC)
+ $(PURGATORY): CFLAGS+=$(PURGATORY_EXTRA_CFLAGS) \
+		      $($(ARCH)_PURGATORY_EXTRA_CFLAGS) \
+-		      -Os -fno-builtin -ffreestanding
++		      -Os -fno-builtin -ffreestanding -nostdinc
+ 
+ $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \
+			-I$(srcdir)/purgatory/include \
+@@ -61,7 +61,8 @@
+ 
+ $(PURGATORY): $(PURGATORY_OBJS)
+	$(MKDIR) -p $(@D)
+-	$(CC) $(LDFLAGS) -o $@ $^
++#	$(CC) $(LDFLAGS) -o $@ $^
++	$(LD) $(LDFLAGS) -o $@ $^
+ 
+ #	$(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) --no-undefined -e purgatory_start -r -o $@ $(PURGATORY_OBJS) $(UTIL_LIB)
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_string.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_string.patch
new file mode 100644
index 0000000..5710561
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/purgatory_string.patch
@@ -0,0 +1,9 @@
+--- a/purgatory/string.c
++++ b/purgatory/string.c
+@@ -1,5 +1,5 @@
+ #include <stddef.h>
+-#include <string.h>
++/* #include <string.h> */
+ 
+ size_t strnlen(const char *s, size_t max)
+ {
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sha256.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sha256.patch
new file mode 100644
index 0000000..85bf7aa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sha256.patch
@@ -0,0 +1,13 @@
+--- a/util_lib/include/sha256.h
++++ b/util_lib/include/sha256.h
+@@ -1,7 +1,8 @@
+ #ifndef SHA256_H
+ #define SHA256_H
+ 
+-#include <sys/types.h>
++//#include <sys/types.h>
++#include <stddef.h>
+ #include <stdint.h>
+ 
+ typedef struct
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sysconf_nrprocessors.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sysconf_nrprocessors.patch
new file mode 100644
index 0000000..04a97e6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/sysconf_nrprocessors.patch
@@ -0,0 +1,13 @@
+--- a/kexec/crashdump-elf.c
++++ b/kexec/crashdump-elf.c
+@@ -47,7 +47,8 @@
+	if (xen_present())
+		nr_cpus = xen_get_nr_phys_cpus();
+	else
+-		nr_cpus = sysconf(_SC_NPROCESSORS_CONF);
++		/*nr_cpus = sysconf(_SC_NPROCESSORS_CONF);*/
++		nr_cpus = 1;
+ 
+	if (nr_cpus < 0) {
+		return -1;
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_basename.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_basename.patch
new file mode 100644
index 0000000..77a1c01
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_basename.patch
@@ -0,0 +1,14 @@
+--- a/kexec/arch/i386/x86-linux-setup.c
++++ b/kexec/arch/i386/x86-linux-setup.c
+@@ -280,9 +280,9 @@ static int add_edd_entry(struct x86_linu
+	memset(edd_info, 0, sizeof(struct edd_info));
+ 
+ 	/* extract the device number */
+-	if (sscanf(basename(sysfs_name), "int13_dev%hhx", &devnum) != 1) {
++	if (sscanf(strrchr(sysfs_name,'/') + 1, "int13_dev%hhx", &devnum) != 1) {
+ 		fprintf(stderr, "Invalid format of int13_dev dir "
+-				"entry: %s\n", basename(sysfs_name));
++				"entry: %s\n", strrchr(sysfs_name,'/') + 1);
+ 		return -1;
+ 	}
+ 
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_kexec_test.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_kexec_test.patch
new file mode 100644
index 0000000..9500bd6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_kexec_test.patch
@@ -0,0 +1,13 @@
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -106,8 +106,8 @@
+ 
+ MAN_PAGES:= kexec/kexec.8
+ MAN_PAGES+= kdump/kdump.8
+-BINARIES_i386:=  $(SBINDIR)/kexec $(PKGLIBDIR)/kexec_test
+-BINARIES_x86_64:=$(SBINDIR)/kexec $(PKGLIBDIR)/kexec_test
++BINARIES_i386:=  $(SBINDIR)/kexec
++BINARIES_x86_64:=$(SBINDIR)/kexec
+ BINARIES:=$(SBINDIR)/kexec $(SBINDIR)/kdump $(BINARIES_$(ARCH))
+ 
+ TARGETS:=$(BINARIES) $(MAN_PAGES)
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_sys_io.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_sys_io.patch
new file mode 100644
index 0000000..a497c9a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_sys_io.patch
@@ -0,0 +1,21 @@
+--- a/purgatory/arch/i386/pic.c
++++ b/purgatory/arch/i386/pic.c
+@@ -16,7 +16,7 @@
+  * along with this program; if not, write to the Free Software
+  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+  */
+-#include <sys/io.h>
++#include "include/arch/io.h"
+ #include <purgatory.h>
+ #include "purgatory-x86.h"
+ 
+
+--- a/purgatory/arch/i386/vga.c
++++ b/purgatory/arch/i386/vga.c
+@@ -1,4 +1,4 @@
+-#include <sys/io.h>
++#include "include/arch/io.h"
+ #include <purgatory.h>
+ #include "purgatory-x86.h"
+ 
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_vfscanf.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_vfscanf.patch
new file mode 100644
index 0000000..cad6951
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/x86_vfscanf.patch
@@ -0,0 +1,27 @@
+--- a/kexec/arch/i386/x86-linux-setup.c
++++ b/kexec/arch/i386/x86-linux-setup.c
+@@ -176,6 +176,8 @@ static int file_scanf(const char *dir, c
+ 	FILE *fp;
+ 	int retno;
+ 	char filename[PATH_MAX];
++	long line_size = MAX_LINE;
++	char *line;
+ 
+ 	snprintf(filename, PATH_MAX, "%s/%s", dir, file);
+ 	filename[PATH_MAX-1] = 0;
+@@ -186,7 +188,14 @@ static int file_scanf(const char *dir, c
+ 	}
+ 
+ 	va_start(argptr, scanf_line);
+-	retno = vfscanf(fp, scanf_line, argptr);
++
++	line = xmalloc(sizeof(line) * line_size);
++	while(fgets(line, sizeof(line), fp) != NULL ) {
++		line_size += MAX_LINE;
++		line = xrealloc(line,line_size);
++	}
++	retno = vsscanf(line, scanf_line, argptr);
++
+ 	va_end(argptr);
+ 
+ 	fclose(fp);
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb
new file mode 100644
index 0000000..c9fec25
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb
@@ -0,0 +1,40 @@
+# the binaries are statically linked against klibc
+require recipes-kernel/kexec/kexec-tools.inc
+SUMMARY = "Kexec tools, statically compiled against klibc"
+SRC_URI[md5sum] = "92eff93b097475b7767f8c98df84408a"
+SRC_URI[sha256sum] = "09e180ff36dee087182cdc939ba6c6917b6adbb5fc12d589f31fd3659b6471f2"
+
+inherit klibc
+
+FILESPATH =. "${FILE_DIRNAME}/kexec-tools-${PV}:"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz"
+
+SRC_URI += " \
+            file://kexec-elf-rel.patch \
+            file://kexec-syscall.patch \
+            file://cflags_static.patch  \
+            file://ifdown_errno.patch  \
+            file://purgatory_flags.patch \
+            file://purgatory_string.patch \
+            file://sha256.patch \
+            file://sysconf_nrprocessors.patch \
+            file://fix-out-of-tree-build.patch \
+            "
+
+SRC_URI_append_arm = " file://arm_crashdump.patch"
+SRC_URI_append_powerpc = " file://ppc__lshrdi3.patch"
+SRC_URI_append_x86 = " file://x86_sys_io.patch file://x86_basename.patch file://x86_vfscanf.patch file://x86_kexec_test.patch"
+SRC_URI_append_x86-64 = " file://x86_sys_io.patch file://x86_basename.patch file://x86_vfscanf.patch file://x86_kexec_test.patch"
+
+S = "${WORKDIR}/kexec-tools-${PV}"
+
+EXTRA_OECONF += "--without-zlib --without-lzma --without-xen"
+
+CFLAGS += "-I${STAGING_DIR_HOST}${libdir}/klibc/include -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits32"
+CFLAGS_x86-64 += "-I${STAGING_DIR_HOST}${libdir}/klibc/include -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits64"
+
+PACKAGES =+ "kexec-klibc kdump-klibc"
+
+FILES_kexec-klibc = "${sbindir}/kexec"
+FILES_kdump-klibc = "${sbindir}/kdump"
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/linux/linux-yocto-tiny-kexecboot/revert-check-console.patch b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/linux/linux-yocto-tiny-kexecboot/revert-check-console.patch
new file mode 100644
index 0000000..5e5e8d9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/linux/linux-yocto-tiny-kexecboot/revert-check-console.patch
@@ -0,0 +1,47 @@
+From a74e0bf51adcc867b73fc44050eb9bde985c9cba Mon Sep 17 00:00:00 2001
+From: Andrea Adami <andrea.adami@gmail.com>
+Date: Sun, 28 Feb 2016 01:09:19 +0100
+Subject: [PATCH] main.c: revert check on console device
+
+Fix kernel panic because of the missing /dev/console.
+
+Revert Yocto-specific : "check console device file on fs when booting".
+
+The initramfs used in this kernel needs to be of the smallest possible
+size so we save a few kb by deploying an empty /dev which is populated
+after boot by the init (kexecboot checks and recreates the devices
+with or without devtmpfs).
+
+Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
+---
+ init/main.c | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/init/main.c b/init/main.c
+index d191d2a..9e64d70 100644
+--- a/init/main.c
++++ b/init/main.c
+@@ -976,7 +976,6 @@ static int __ref kernel_init(void *unused)
+ 
+ static noinline void __init kernel_init_freeable(void)
+ {
+-	struct stat console_stat;
+ 	/*
+ 	 * Wait until kthreadd is all set-up.
+ 	 */
+@@ -1008,12 +1007,6 @@ static noinline void __init kernel_init_freeable(void)
+ 
+ 	do_basic_setup();
+ 
+-	/* Use /dev/console to infer if the rootfs is setup properly */
+-	if (sys_newlstat((char __user *) "/dev/console", (struct stat __user *) &console_stat)
+-			|| !S_ISCHR(console_stat.st_mode)) {
+-		panic("/dev/console is missing or not a character device!\nPlease ensure your rootfs is properly configured\n");
+-	}
+-
+ 	/* Open the /dev/console on the rootfs, this should never fail */
+ 	if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
+ 		pr_err("Warning: unable to open an initial console.\n");
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/linux/linux-yocto-tiny-kexecboot_4.4.bb b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/linux/linux-yocto-tiny-kexecboot_4.4.bb
new file mode 100644
index 0000000..66e0e53
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-initramfs/recipes-kernel/linux/linux-yocto-tiny-kexecboot_4.4.bb
@@ -0,0 +1,29 @@
+require recipes-kernel/linux/linux-yocto-tiny_${PV}.bb
+SUMMARY = "Yocto tiny kernel embedding a minimalistic kexecboot initramfs"
+
+SRC_URI += "file://revert-check-console.patch"
+
+PACKAGES = ""
+PROVIDES = ""
+
+KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-yocto-tiny-kexecboot-${PV}-${MACHINE}"
+KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-yocto-tiny-kexecboot-${MACHINE}"
+
+INITRAMFS_IMAGE = "initramfs-kexecboot-klibc-image"
+INITRAMFS_TASK = "${INITRAMFS_IMAGE}:do_image_complete"
+
+# disable unneeded tasks
+do_shared_workdir[noexec] = "1"
+do_install[noexec] = "1"
+do_package[noexec] = "1"
+do_package_qa[noexec] = "1"
+do_packagedata[noexec] = "1"
+do_package_deb[noexec] = "1"
+do_package_ipk[noexec] = "1"
+do_package_rpm[noexec] = "1"
+do_package_tar[noexec] = "1"
+do_package_write_deb[noexec] = "1"
+do_package_write_ipk[noexec] = "1"
+do_package_write_rpm[noexec] = "1"
+do_package_write_tar[noexec] = "1"
+do_populate_sysroot[noexec] = "1"
diff --git a/import-layers/meta-openembedded/meta-multimedia/COPYING.MIT b/import-layers/meta-openembedded/meta-multimedia/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-multimedia/README b/import-layers/meta-openembedded/meta-multimedia/README
new file mode 100644
index 0000000..9364618
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/README
@@ -0,0 +1,20 @@
+This layer depends on:
+
+URI: git://github.com/openembedded/oe-core.git
+branch: krogoth
+revision: HEAD
+
+URI: git://github.com/openembedded/meta-oe.git
+layers: meta-oe, meta-ruby
+branch: krogoth
+revision: HEAD
+
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-multimedia][krogoth]' in the subject'
+
+When sending single patches, please use something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-multimedia][krogoth][PATCH
+
+You are encouraged to fork the mirror on github https://github.com/openembedded/meta-oe/ to share your patches, this is preferred for patch sets consisting of more than one patch. Other services like gitorious, repo.or.cz or self hosted setups are of course accepted as well, 'git fetch <remote>' works the same on all of them. We recommend github because it is free, easy to use, has been proven to be reliable and has a really good web GUI.
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
diff --git a/import-layers/meta-openembedded/meta-multimedia/conf/layer.conf b/import-layers/meta-openembedded/meta-multimedia/conf/layer.conf
new file mode 100644
index 0000000..64a0a44
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/conf/layer.conf
@@ -0,0 +1,25 @@
+# It really depends on order of the layers appearing in BBLAYERS
+# variable in toplevel bblayers.conf file, where bitbake will search
+# for .inc files and others where bitbake uses BBPATH since it will
+# search the directories from first to last as specified in BBPATH
+# Therefore if you want a given layer to be considered high priority
+# for the .inc and .conf etc. then consider it adding at the beginning
+# of BBPATH. For bblayers bitbake will use BBFILES_PRIORITY to resolve
+# the recipe contention so the order of directories in BBFILES does 
+# not matter.
+
+# 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 += "multimedia-layer"
+BBFILE_PATTERN_multimedia-layer := "^${LAYERDIR}/"
+
+# Define the priority for recipes (.bb files) from this layer,
+# choosing carefully how this layer interacts with all of the
+# other layers.
+
+BBFILE_PRIORITY_multimedia-layer = "6"
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gssdp.inc b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gssdp.inc
new file mode 100644
index 0000000..23f17ed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gssdp.inc
@@ -0,0 +1,20 @@
+SUMMARY = "Resource discovery and announcement over SSDP"
+DESCRIPTION = "GSSDP implements resource discovery and announcement over SSDP (Simpe Service Discovery Protocol)."
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+DEPENDS = "glib-2.0 libsoup-2.4"
+
+inherit autotools pkgconfig gobject-introspection vala
+
+# Copy vapigen.m4 so that it doesn't get removed by vala class
+# (normally this would be the right thing to do, but in gssdp the vapigen.m4 has only a custom macro)
+do_configure_prepend() {
+        cp -f ${S}/m4/vapigen.m4 ${S}/m4/vapigen-custom.m4 || true
+}
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)}"
+PACKAGECONFIG[gtk] = "--with-gtk,--without-gtk,gtk+"
+
+PACKAGES =+ "gssdp-tools"
+
+FILES_gssdp-tools = "${bindir}/gssdp* ${datadir}/gssdp/*.glade"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gssdp_0.14.8.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gssdp_0.14.8.bb
new file mode 100644
index 0000000..9457abc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gssdp_0.14.8.bb
@@ -0,0 +1,9 @@
+require gssdp.inc
+
+inherit gtk-doc
+
+PACKAGECONFIG[gtk] = "--with-gtk,--without-gtk,gtk+3"
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/0.14/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "b8658e480d047caf2d92baa4a51b9ae7"
+SRC_URI[sha256sum] = "4c3ffa01435e84dc31c954e669e1ca0749b962f76a333e74f5c2cb0de5803a13"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-av.inc b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-av.inc
new file mode 100644
index 0000000..0544501
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-av.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Helpers for AV applications using UPnP"
+DESCRIPTION = "GUPnP-AV is a collection of helpers for building AV (audio/video) applications using GUPnP."
+LICENSE = "LGPLv2"
+DEPENDS = "gupnp"
+
+inherit autotools pkgconfig gobject-introspection vala
+
+# Copy vapigen.m4 so that it doesn't get removed by vala class
+# (normally this would be the right thing to do, but in gupnp-av the vapigen.m4 has only a custom macro)
+do_configure_prepend() {
+        cp -f ${S}/m4/vapigen.m4 ${S}/m4/vapigen-custom.m4 || true
+}
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-av_0.12.6.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-av_0.12.6.bb
new file mode 100644
index 0000000..b8cfa27
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-av_0.12.6.bb
@@ -0,0 +1,8 @@
+require gupnp-av.inc
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/0.12/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "f56cdb269376a9e6cb062eb9960ccf57"
+SRC_URI[sha256sum] = "e0553d60dd7c7277c65c02a68a270c4dcb9036a4c7075c902fc8111c6a5e6a44"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+                    file://libgupnp-av/gupnp-av.h;beginline=1;endline=22;md5=2b47b7b5f799d2ebabe62b895e848820"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-dlna_0.9.4.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-dlna_0.9.4.bb
new file mode 100644
index 0000000..053604e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-dlna_0.9.4.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Helpers for AV applications using DLNA"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://libgupnp-dlna/gupnp-dlna-profile.h;beginline=1;endline=22;md5=1b85459f65cb1e73a885ca137aab6274"
+
+DEPENDS = "libxml2 glib-2.0"
+
+SRC_URI = "http://download.gnome.org/sources/${BPN}/0.9/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "f93665e535a512e4d515a86311435cb6"
+SRC_URI[sha256sum] = "69969713f36c0e815fbbbcfdfb3ad9bd447cfd10d0fd86227d82dfd8edb6c807"
+
+inherit autotools pkgconfig gobject-introspection vala
+
+PACKAGECONFIG ?= "gstreamer"
+PACKAGECONFIG[gstreamer] = "--enable-gstreamer-metadata-backend,--disable-gstreamer-metadata-backend,gstreamer1.0 gstreamer1.0-plugins-base"
+
+FILES_${PN} += "${datadir}/gupnp-dlna-2.0/dlna-profiles"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-igd_0.2.2.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-igd_0.2.2.bb
new file mode 100644
index 0000000..0cc4a3a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-igd_0.2.2.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Helpers for interacting with Internet Gateway Devices over UPnP"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+                    file://libgupnp-igd/gupnp-simple-igd.c;beginline=1;endline=21;md5=aa292c0d9390463a6e1055dc5fc68e80"
+
+DEPENDS = "glib-2.0 gupnp sqlite3"
+
+SRC_URI = "http://download.gnome.org/sources/${BPN}/0.2/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "f881323304185c02634034e3bda714ba"
+SRC_URI[sha256sum] = "73b6a98a0f13b29b34c3bfc07f99f78b1319211cb95a8585752873af2b9067d3"
+
+inherit autotools pkgconfig gtk-doc gobject-introspection
+
+EXTRA_OECONF = "--disable-python"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-tools_0.8.10.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-tools_0.8.10.bb
new file mode 100644
index 0000000..821b5a3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-tools_0.8.10.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Tools for GUPnP"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+                    file://src/network-light/main.c;beginline=1;endline=21;md5=2c39b3a000495dabd4932f231c7efed8"
+DEPENDS = "gupnp gupnp-av gtk+3"
+RRECOMMENDS_${PN} = "adwaita-icon-theme"
+
+SRC_URI = "http://download.gnome.org/sources/${BPN}/0.8/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "ad8423d036e98bc6f877528d6b846f6a"
+SRC_URI[sha256sum] = "592c53289ff1cd70e676405c56ca87b28d2da37a385d34a3bb9b944ba9108d17"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp.inc b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp.inc
new file mode 100644
index 0000000..6ce9631
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp.inc
@@ -0,0 +1,25 @@
+SUMMARY = "UPnP framework"
+DESCRIPTION = "GUPnP is an elegant, object-oriented open source framework for creating UPnP  devices and control points, written in C using GObject and libsoup. The GUPnP API is intended to be easy to use, efficient and flexible. It provides the same set of features as libupnp, but shields the developer from most of UPnP's internals."
+LICENSE = "LGPLv2+"
+
+DEPENDS = "e2fsprogs gssdp libsoup-2.4 libxml2"
+
+inherit autotools pkgconfig vala gobject-introspection
+
+# Copy vapigen.m4 so that it doesn't get removed by vala class
+# (normally this would be the right thing to do, but in gupnp the vapigen.m4 has only a custom macro)
+do_configure_prepend() {
+        cp -f ${S}/m4/vapigen.m4 ${S}/m4/vapigen-custom.m4 || true
+}
+
+FILES_${PN} = "${libdir}/*.so.*"
+FILES_${PN}-dev += "${bindir}/gupnp-binding-tool"
+
+RDEPENDS_${PN}-dev = "python-textutils python-xml"
+
+SYSROOT_PREPROCESS_FUNCS += "gupnp_sysroot_preprocess"
+
+gupnp_sysroot_preprocess () {
+    install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+    install -m 755 ${D}${bindir}/gupnp-binding-tool ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+}
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp_0.20.14.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp_0.20.14.bb
new file mode 100644
index 0000000..ed07175
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp_0.20.14.bb
@@ -0,0 +1,8 @@
+require gupnp.inc
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/0.20/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "63346ef90ac5cd925c3a941f51d8bca6"
+SRC_URI[sha256sum] = "77ffb940ba77c4a6426d09d41004c75d92652dcbde86c84ac1c847dbd9ad59bd"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+                    file://libgupnp/gupnp.h;beginline=1;endline=20;md5=d78a69d9b6e63ee2dc72e7b674d97520"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/libupnp/libupnp/avoid-redefining-strnlen-and-strndup.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/libupnp/libupnp/avoid-redefining-strnlen-and-strndup.patch
new file mode 100644
index 0000000..3c3f230
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/libupnp/libupnp/avoid-redefining-strnlen-and-strndup.patch
@@ -0,0 +1,47 @@
+From 22fba4f2765f92cd592a58e1fe5c450b187e30e1 Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Wed, 3 Jun 2015 21:39:03 -0700
+Subject: [PATCH] avoid redefining strnlen() and strndup()
+
+Rely on string.h definitions instead. Workaround for compiler errors such as:
+
+  | i686-rdk-linux-libtool: compile:  i686-rdk-linux-gcc -m32 -march=atom -mtune=atom -fschedule-insns -fsched-pressure -msse3 -mfpmath=sse --sysroot=/home/andre/build/tmp/sysroots/7401 -DHAVE_CONFIG_H -I. -I/home/andre/build/tmp/work/core2-32-rdk-linux/libupnp/1.6.19-r0/libupnp-1.6.19/upnp -I.. -I../upnp/inc -I/home/andre/build/tmp/work/core2-32-rdk-linux/libupnp/1.6.19-r0/libupnp-1.6.19/upnp/inc -I/home/andre/build/tmp/work/core2-32-rdk-linux/libupnp/1.6.19-r0/libupnp-1.6.19/threadutil/inc -I/home/andre/build/tmp/work/core2-32-rdk-linux/libupnp/1.6.19-r0/libupnp-1.6.19/ixml/inc -I/home/andre/build/tmp/work/core2-32-rdk-linux/libupnp/1.6.19-r0/libupnp-1.6.19/upnp/src/inc -pthread -O2 -pipe -g -feliminate-unused-debug-types -Os -Wall -c /home/andre/build/tmp/work/core2-32-rdk-linux/libupnp/1.6.19-r0/libupnp-1.6.19/upnp/src/gena/gena_callback2.c -o src/gena/libupnp_la-gena_callback2.o >/dev/null 2>&1
+  | In file included from /home/andre/build/tmp/sysroots/7401/usr/include/string.h:634:0,
+  |                  from /home/andre/build/tmp/work/core2-32-rdk-linux/libupnp/1.6.19-r0/libupnp-1.6.19/upnp/src/api/UpnpString.c:23:
+  | /home/andre/build/tmp/work/core2-32-rdk-linux/libupnp/1.6.19-r0/libupnp-1.6.19/upnp/src/api/UpnpString.c:47:15: error: expected identifier or '(' before '__extension__'
+  |   extern char *strndup(__const char *__string, size_t __n);
+  |                ^
+  | make[3]: *** [src/api/libupnp_la-UpnpString.lo] Error 1
+
+Upstream-Status: Pending
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+---
+ upnp/src/api/UpnpString.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/upnp/src/api/UpnpString.c b/upnp/src/api/UpnpString.c
+index 41c9898..2fa09d7 100644
+--- a/upnp/src/api/UpnpString.c
++++ b/upnp/src/api/UpnpString.c
+@@ -32,7 +32,7 @@
+ 	/* VC has strnlen which is already included but with (potentially) different linkage */
+ 	/* strnlen() is a GNU extension. */
+ 	#if HAVE_STRNLEN
+-		extern size_t strnlen(const char *s, size_t maxlen);
++//		extern size_t strnlen(const char *s, size_t maxlen);
+ 	#else /* HAVE_STRNLEN */
+ 		static size_t strnlen(const char *s, size_t n)
+ 		{
+@@ -44,7 +44,7 @@
+ 
+ /* strndup() is a GNU extension. */
+ #if HAVE_STRNDUP && !defined(WIN32)
+-	extern char *strndup(__const char *__string, size_t __n);
++//	extern char *strndup(__const char *__string, size_t __n);
+ #else /* HAVE_STRNDUP && !defined(WIN32) */
+ 	static char *strndup(const char *__string, size_t __n)
+ 	{
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/libupnp/libupnp/sepbuildfix.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/libupnp/libupnp/sepbuildfix.patch
new file mode 100644
index 0000000..cd9768d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/libupnp/libupnp/sepbuildfix.patch
@@ -0,0 +1,60 @@
+From e198f0a87660a048164ca0e16d18517d0aee846e Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Tue, 9 Jun 2015 12:20:45 -0700
+Subject: [PATCH] Fix builds when using separate source and build directories.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+---
+ configure.ac           | 8 ++++----
+ ixml/Makefile.am       | 2 +-
+ threadutil/Makefile.am | 2 +-
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index e2c3f47..11d5e22 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -714,8 +714,8 @@ AC_OUTPUT
+ #
+ # Files copied for windows compilation.
+ #
+-echo "configure: copying \"autoconfig.h\"          to \"build/inc/autoconfig.h\""
+-cp autoconfig.h build/inc/autoconfig.h
+-echo "configure: copying \"upnp/inc/upnpconfig.h\" to \"build/inc/upnpconfig.h\""
+-cp upnp/inc/upnpconfig.h build/inc/upnpconfig.h
++echo "configure: copying \"autoconfig.h\"          to \"\$srcdir/build/inc/autoconfig.h\""
++cp autoconfig.h $srcdir/build/inc/autoconfig.h
++echo "configure: copying \"upnp/inc/upnpconfig.h\" to \"\$srcdir/build/inc/upnpconfig.h\""
++cp upnp/inc/upnpconfig.h $srcdir/build/inc/upnpconfig.h
+ 
+diff --git a/ixml/Makefile.am b/ixml/Makefile.am
+index 49da766..0e9ab2c 100644
+--- a/ixml/Makefile.am
++++ b/ixml/Makefile.am
+@@ -7,7 +7,7 @@
+ 
+ SUBDIRS 		= doc
+ 
+-AM_CPPFLAGS		= -I$(srcdir)/inc -I$(srcdir)/src/inc
++AM_CPPFLAGS		= -I$(top_srcdir)/upnp/inc -I$(srcdir)/inc -I$(srcdir)/src/inc
+ AM_CFLAGS		= 
+ 
+ LDADD			= libixml.la
+diff --git a/threadutil/Makefile.am b/threadutil/Makefile.am
+index a4ed325..42d0726 100644
+--- a/threadutil/Makefile.am
++++ b/threadutil/Makefile.am
+@@ -4,7 +4,7 @@
+ # (C) Copyright 2005 Remi Turboult <r3mi@users.sourceforge.net>
+ #
+ 
+-AM_CPPFLAGS		= -I$(srcdir)/inc -I$(srcdir)/src/inc
++AM_CPPFLAGS		= -I$(top_srcdir)/upnp/inc -I$(srcdir)/inc -I$(srcdir)/src/inc
+ 
+ if ENABLE_DEBUG
+     AM_CPPFLAGS		+= -DDEBUG -DSTATS
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/libupnp/libupnp_1.6.19.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/libupnp/libupnp_1.6.19.bb
new file mode 100644
index 0000000..133a8eb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/libupnp/libupnp_1.6.19.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Portable SDK for UPnP* Devices"
+DESCRIPTION = "The Portable SDK for UPnP Devices is an SDK for development of \
+UPnP device and control point applications. It consists of the core UPnP \
+protocols along with a UPnP-specific eXtensible Markup Language (XML) parser \
+supporting the Document Object Model (DOM) Level 2 API and an optional, \
+integrated mini web server for serving UPnP related documents."
+HOMEPAGE = "http://pupnp.sourceforge.net/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b3190d5244e08e78e4c8ee78544f4863"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pupnp/${BP}.tar.bz2 \
+           file://avoid-redefining-strnlen-and-strndup.patch \
+           file://sepbuildfix.patch \
+"
+
+SRC_URI[md5sum] = "ee16e5d33a3ea7506f38d71facc057dd"
+SRC_URI[sha256sum] = "b3142b39601243b50532eec90f4a27dba85eb86f58d4b849ac94edeb29d9b22a"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.28.2.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.28.2.bb
new file mode 100644
index 0000000..5cb7d43
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.28.2.bb
@@ -0,0 +1,59 @@
+SUMMARY = "A UPnP AV media server and renderer"
+DESCRIPTION = "Rygel is a home media solution (UPnP AV MediaServer) that \
+allow you to easily share audio, video and pictures to other devices. \
+Additionally, media player software may use Rygel to become a MediaRenderer \
+that may be controlled remotely by a UPnP or DLNA Controller."
+HOMEPAGE = "http://live.gnome.org/Rygel"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
+                    file://src/rygel/rygel-main.vala;endline=27;md5=99324118da4c012d25edae2f779ae9b3"
+
+DEPENDS = "libxml2 glib-2.0 gssdp gupnp gupnp-av gupnp-dlna gstreamer1.0 gstreamer1.0-plugins-base ossp-uuid libgee libsoup-2.4 libmediaart-2.0 libunistring sqlite3"
+RDEPENDS_${PN} = "gstreamer1.0-plugins-base-playback shared-mime-info"
+RRECOMMENDS_${PN} = "rygel-plugin-media-export"
+
+GNOME_COMPRESS_TYPE = "xz"
+SRC_URI[archive.md5sum] = "9fbe4fb53b6cfa2f3f3723b7649a2215"
+SRC_URI[archive.sha256sum] = "9ea23df7186caac5f1aad3137edf6d507d339b9a469fc3133df4043fa66b61f5"
+
+inherit gnomebase vala gobject-introspection
+
+EXTRA_OECONF = "--disable-tracker-plugin --with-media-engine=gstreamer"
+
+PACKAGECONFIG ?= "external mpris mediathek ruih media-export gst-launch gtk+3"
+PACKAGECONFIG[external] = "--enable-external-plugin,--disable-external-plugin"
+PACKAGECONFIG[mpris] = "--enable-mpris-plugin,--disable-mpris-plugin"
+PACKAGECONFIG[mediathek] = "--enable-mediathek-plugin,--disable-mediathek-plugin"
+PACKAGECONFIG[ruih] = "--enable-ruih-plugin,--disable-ruih-plugin"
+PACKAGECONFIG[media-export] = "--enable-media-export-plugin,--disable-media-export-plugin"
+PACKAGECONFIG[gst-launch] = "--enable-gst-launch-plugin,--disable-gst-launch-plugin"
+PACKAGECONFIG[gtk+3] = ",--without-ui,gtk+3"
+
+LIBV = "2.6"
+
+do_install_append() {
+       # Remove .la files for loadable modules
+       rm -f ${D}/${libdir}/rygel-${LIBV}/engines/*.la
+       rm -f ${D}/${libdir}/rygel-${LIBV}/plugins/*.la
+}
+
+FILES_${PN} += "${libdir}/rygel-${LIBV}/engines ${datadir}/dbus-1 ${datadir}/icons"
+FILES_${PN}-dbg += "${libdir}/rygel-${LIBV}/engines/.debug ${libdir}/rygel-${LIBV}/plugins/.debug"
+
+PACKAGES += "${PN}-meta"
+ALLOW_EMPTY_${PN}-meta = "1"
+
+PACKAGES_DYNAMIC = "${PN}-plugin-*"
+
+python populate_packages_prepend () {
+    rygel_libdir = d.expand('${libdir}/rygel-${LIBV}')
+    postinst = d.getVar('plugin_postinst', True)
+    pkgs = []
+
+    pkgs += do_split_packages(d, oe.path.join(rygel_libdir, "plugins"), 'librygel-(.*)\.so$', d.expand('${PN}-plugin-%s'), 'Rygel plugin for %s', postinst=postinst, extra_depends=d.expand('${PN}'))
+    pkgs += do_split_packages(d, oe.path.join(rygel_libdir, "plugins"), '(.*)\.plugin$', d.expand('${PN}-plugin-%s'), 'Rygel plugin for %s', postinst=postinst, extra_depends=d.expand('${PN}'))
+
+    metapkg = d.getVar('PN', True) + '-meta'
+    d.setVar('RDEPENDS_' + metapkg, ' '.join(pkgs))
+}
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/dvb-apps/dvb-apps_1.1.1.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/dvb-apps/dvb-apps_1.1.1.bb
new file mode 100644
index 0000000..1c0d686
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/dvb-apps/dvb-apps_1.1.1.bb
@@ -0,0 +1,106 @@
+HOMEPAGE = "http://www.linuxtv.org"
+SUMMARY = "Linux DVB API applications and utilities"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "hg://linuxtv.org/hg;module=dvb-apps;protocol=http"
+SRCREV = "3fc7dfa68484"
+
+S = "${WORKDIR}/${BPN}"
+
+do_configure() {
+    sed -i -e s:/usr/include:${STAGING_INCDIR}:g util/av7110_loadkeys/generate-keynames.sh 
+}
+
+do_install() {
+    make DESTDIR=${D} install
+    install -d ${D}/${bindir}
+    install -d ${D}/${docdir}/dvb-apps
+    install -d ${D}/${docdir}/dvb-apps/scan
+    install -d ${D}/${docdir}/dvb-apps/szap
+    chmod a+rx ${D}/${libdir}/*.so*
+
+    # Install tests
+    install -m 0755 ${S}/test/setvoltage      ${D}${bindir}/test_setvoltage
+    install -m 0755 ${S}/test/set22k          ${D}${bindir}/test_set22k
+    install -m 0755 ${S}/test/sendburst       ${D}${bindir}/test_sendburst
+    install -m 0755 ${S}/test/diseqc          ${D}${bindir}/test_diseqc
+    install -m 0755 ${S}/test/test_sections   ${D}${bindir}/
+    install -m 0755 ${S}/test/test_av_play    ${D}${bindir}/
+    install -m 0755 ${S}/test/test_stillimage ${D}${bindir}/
+    install -m 0755 ${S}/test/test_dvr_play   ${D}${bindir}/
+    install -m 0755 ${S}/test/test_tt         ${D}${bindir}/
+    install -m 0755 ${S}/test/test_sec_ne     ${D}${bindir}/
+    install -m 0755 ${S}/test/test_stc        ${D}${bindir}/
+    install -m 0755 ${S}/test/test_av         ${D}${bindir}/
+    install -m 0755 ${S}/test/test_vevent     ${D}${bindir}/
+    install -m 0755 ${S}/test/test_pes        ${D}${bindir}/
+    install -m 0755 ${S}/test/test_dvr        ${D}${bindir}/
+
+    cp -pPR ${S}/util/szap/channels-conf* ${D}/${docdir}/dvb-apps/szap/
+    cp -pPR ${S}/util/szap/README   ${D}/${docdir}/dvb-apps/szap/
+}
+
+python populate_packages_prepend () {
+    dvb_libdir = bb.data.expand('${libdir}', d)
+    do_split_packages(d, dvb_libdir, '^lib(.*)\.so$', 'lib%s', 'DVB %s package', extra_depends='', allow_links=True)
+    do_split_packages(d, dvb_libdir, '^lib(.*)\.la$', 'lib%s-dev', 'DVB %s development package', extra_depends='${PN}-dev')
+    do_split_packages(d, dvb_libdir, '^lib(.*)\.a$', 'lib%s-dev', 'DVB %s development package', extra_depends='${PN}-dev')
+    do_split_packages(d, dvb_libdir, '^lib(.*)\.so\.*', 'lib%s', 'DVB %s library', extra_depends='', allow_links=True)
+}
+
+PACKAGES =+ "dvb-evtest dvb-evtest-dbg \
+             dvbapp-tests dvbapp-tests-dbg \
+             dvbdate dvbdate-dbg \
+             dvbtraffic dvbtraffic-dbg \
+             dvbnet dvbnet-dbg \
+             dvb-scan dvb-scan-dbg dvb-scan-data \
+             dvb-azap dvb-azap-dbg \
+             dvb-czap dvb-czap-dbg \
+             dvb-szap dvb-szap-dbg \
+             dvb-tzap dvb-tzap-dbg \
+             dvb-femon dvb-femon-dbg \
+             dvb-zap-data"
+
+
+FILES_${PN} = "${bindir} ${datadir}/dvb"
+FILES_${PN}-doc = ""
+FILES_${PN}-dev = "${includedir}"
+
+FILES_dvb-evtest = "${bindir}/evtest"
+FILES_dvb-evtest-dbg = "${bindir}/.debug/evtest"
+RCONFLICTS_dvb-evtest = "evtest"
+
+FILES_dvbapp-tests = "${bindir}/*test* "
+FILES_dvbapp-tests-dbg = "${bindir}/.debug/*test*"
+
+FILES_dvbdate = "${bindir}/dvbdate"
+FILES_dvbdate-dbg = "${bindir}/.debug/dvbdate"
+
+FILES_dvbtraffic = "${bindir}/dvbtraffic"
+FILES_dvbtraffic-dbg = "${bindir}/.debug/dvbtraffic"
+
+FILES_dvbnet = "${bindir}/dvbnet"
+FILES_dvbnet-dbg = "${bindir}/.debug/dvbnet"
+
+FILES_dvb-scan = "${bindir}/*scan "
+FILES_dvb-scan-dbg = "${bindir}/.debug/*scan"
+FILES_dvb-scan-data = "${docdir}/dvb-apps/scan"
+
+FILES_dvb-azap = "${bindir}/azap"
+FILES_dvb-azap-dbg = "${bindir}/.debug/azap"
+
+FILES_dvb-czap = "${bindir}/czap"
+FILES_dvb-czap-dbg = "${bindir}/.debug/czap"
+
+FILES_dvb-szap = "${bindir}/szap"
+FILES_dvb-szap-dbg = "${bindir}/.debug/szap"
+
+FILES_dvb-tzap = "${bindir}/tzap"
+FILES_dvb-tzap-dbg = "${bindir}/.debug/tzap"
+
+FILES_dvb-femon = "${bindir}/femon"
+FILES_dvb-femon-dbg = "${bindir}/.debug/femon"
+
+FILES_dvb-zap-data = "${docdir}/dvb-apps/szap"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam/respect-cflags.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam/respect-cflags.patch
new file mode 100644
index 0000000..179d04a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam/respect-cflags.patch
@@ -0,0 +1,38 @@
+Upstream-Status: Backport
+http://www.streamboard.tv/oscam/changeset/10068
+http://www.streamboard.tv/oscam/changeset/10070
+
+Index: /CMakeLists.txt
+===================================================================
+--- a/CMakeLists.txt	(revision 10067)
++++ b/CMakeLists.txt	(revision 10068)
+@@ -625,8 +625,8 @@
+     list(GET GCC_VERSION_COMPONENTS 0 GCC_MINOR)
+     add_definitions ("-W -Wall ")
+-    set (CMAKE_C_FLAGS "-Wall -O2")
+-	set (CMAKE_CXX_FLAGS "-Wall -O2")
+-    set (CMAKE_C_FLAGS_DEBUG "-O0 -ggdb")
+-    set (CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb")
++    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O2")
++	set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O2")
++    set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -ggdb")
++    set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb")
+ endif (CMAKE_COMPILER_IS_GNUCC)
+ # some optimisations
+Index: /csctapi/CMakeLists.txt
+===================================================================
+--- a/csctapi/CMakeLists.txt	(revision 10069)
++++ b/csctapi/CMakeLists.txt	(revision 10070)
+@@ -6,8 +6,8 @@
+     list(GET GCC_VERSION_COMPONENTS 0 GCC_MINOR)
+     add_definitions ("-W -Wall ")
+-    set (CMAKE_C_FLAGS "-Wall -O2")
+-	set (CMAKE_CXX_FLAGS "-Wall -O2")
+-    set (CMAKE_C_FLAGS_DEBUG "-O0 -ggdb")
+-    set (CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb")
++    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O2")
++	set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O2")
++    set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -ggdb")
++    set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb")
+ endif (CMAKE_COMPILER_IS_GNUCC)
+ # Mac extra removes to avoid ranlib warnings in some situations
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb
new file mode 100644
index 0000000..cac517f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb
@@ -0,0 +1,20 @@
+SUMMARY = "OSCam: Open Source Conditional Access Module"
+HOMEPAGE = "http://www.streamboard.tv/oscam/"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "libusb1 openssl pcsc-lite"
+
+SRC_URI = "svn://www.streamboard.tv/svn/oscam;module=trunk;protocol=http \
+    file://respect-cflags.patch \
+"
+SRCREV = "9164"
+PV = "1.10+${SRCPV}"
+
+S = "${WORKDIR}/trunk"
+
+inherit cmake
+
+EXTRA_OECMAKE = "-DDEFAULT_CS_CONFDIR=${sysconfdir} -DCMAKE_BUILD_TYPE=Debug"
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-Move-tvheadend-specific-LD-CFLAGS-into-a-helper-vari.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-Move-tvheadend-specific-LD-CFLAGS-into-a-helper-vari.patch
new file mode 100644
index 0000000..9dfcce0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-Move-tvheadend-specific-LD-CFLAGS-into-a-helper-vari.patch
@@ -0,0 +1,92 @@
+From 2ee64b359464b48f751683faa5ded3ee8200fe90 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 21 Dec 2012 10:15:42 +0100
+Subject: [PATCH] Move tvheadend specific LD/CFLAGS into a helper variable to
+ avoid being overwritten
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+Upstream-Status: Inappropriate [OE specific]
+---
+ Makefile              |   20 ++++++++++----------
+ support/configure.inc |    8 ++++----
+ 2 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 8c6b293..daf5f14 100644
+--- a/Makefile
++++ b/Makefile
+@@ -27,12 +27,12 @@ PROG = ${BUILDDIR}/tvheadend
+ # Common compiler flags
+ #
+ 
+-CFLAGS  += -Wall -Werror -Wwrite-strings -Wno-deprecated-declarations
+-CFLAGS  += -Wmissing-prototypes -fms-extensions
+-CFLAGS  += -g -funsigned-char -O2 
+-CFLAGS  += -D_FILE_OFFSET_BITS=64
+-CFLAGS  += -I${BUILDDIR} -I${CURDIR}/src -I${CURDIR}
+-LDFLAGS += -lrt -ldl -lpthread -lm
++TVH_CFLAGS  += -Wall -Werror -Wwrite-strings -Wno-deprecated-declarations
++TVH_CFLAGS  += -Wmissing-prototypes -fms-extensions
++TVH_CFLAGS  += -g -funsigned-char -O2 
++TVH_CFLAGS  += -D_FILE_OFFSET_BITS=64
++TVH_CFLAGS  += -I${BUILDDIR} -I${CURDIR}/src -I${CURDIR}
++TVH_LDFLAGS += -lrt -ldl -lpthread -lm
+ 
+ #
+ # Other config
+@@ -179,8 +179,8 @@ SRCS-${CONFIG_CWC}  += src/ffdecsa/ffdecsa_interface.c \
+ 	src/ffdecsa/ffdecsa_int.c
+ SRCS-${CONFIG_MMX}  += src/ffdecsa/ffdecsa_mmx.c
+ SRCS-${CONFIG_SSE2} += src/ffdecsa/ffdecsa_sse2.c
+-${BUILDDIR}/src/ffdecsa/ffdecsa_mmx.o  : CFLAGS += -mmmx
+-${BUILDDIR}/src/ffdecsa/ffdecsa_sse2.o : CFLAGS += -msse2
++${BUILDDIR}/src/ffdecsa/ffdecsa_mmx.o  : TVH_CFLAGS += -mmmx
++${BUILDDIR}/src/ffdecsa/ffdecsa_sse2.o : TVH_CFLAGS += -msse2
+ endif
+ 
+ # File bundles
+@@ -217,12 +217,12 @@ all: ${PROG}
+ 
+ # Binary
+ ${PROG}: $(OBJS) $(ALLDEPS)
+-	$(CC) -o $@ $(OBJS) $(CFLAGS) $(LDFLAGS)
++	$(CC) -o $@ $(OBJS) $(TVH_CFLAGS) $(TVH_LDFLAGS) $(CFLAGS) $(LDFLAGS)
+ 
+ # Object
+ ${BUILDDIR}/%.o: %.c
+ 	@mkdir -p $(dir $@)
+-	$(CC) -MD -MP $(CFLAGS) -c -o $@ $(CURDIR)/$<
++	$(CC) -MD -MP $(TVH_CFLAGS) $(CFLAGS) -c -o $@ $(CURDIR)/$<
+ 
+ # Add-on
+ ${BUILDDIR}/%.so: ${SRCS_EXTRA}
+diff --git a/support/configure.inc b/support/configure.inc
+index 0130880..332511e 100644
+--- a/support/configure.inc
++++ b/support/configure.inc
+@@ -464,8 +464,8 @@ ifeq (\$(origin CC),default)
+ CC        = ${CC}
+ endif
+ PYTHON   ?= ${PYTHON}
+-CFLAGS   += ${CFLAGS}
+-LDFLAGS  += ${LDFLAGS}
++TVH_CFLAGS   += ${CFLAGS}
++TVH_LDFLAGS  += ${LDFLAGS}
+ prefix    = ${prefix}
+ bindir    = ${bindir}
+ mandir    = ${mandir}
+@@ -482,8 +482,8 @@ EOF
+   # Add package config
+   for pkg in ${PACKAGES[*]}; do
+     cat >>${CONFIG_MK} <<EOF
+-LDFLAGS += $(pkg-config --libs $pkg)
+-CFLAGS  += $(pkg-config --cflags $pkg)
++TVH_LDFLAGS += $(pkg-config --libs $pkg)
++TVH_CFLAGS  += $(pkg-config --cflags $pkg)
+ EOF
+   done
+ 
+-- 
+1.7.7.6
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
new file mode 100644
index 0000000..65d43c6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Tvheadend TV streaming server"
+HOMEPAGE = "https://www.lonelycoder.com/redmine/projects/tvheadend"
+
+DEPENDS = "avahi zlib openssl python-native"
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9eef91148a9b14ec7f9df333daebc746"
+
+SRC_URI = "git://github.com/tvheadend/tvheadend.git \
+           file://0001-Move-tvheadend-specific-LD-CFLAGS-into-a-helper-vari.patch \
+"
+SRCREV = "a420c83a0e0d2c31c2c15d0fec6fedc3f5a36dfe"
+PV = "3.3"
+
+S = "${WORKDIR}/git"
+
+do_configure() {
+    ./configure --prefix=${prefix} \
+                --libdir=${libdir} \
+                --bindir=${bindir} \
+                --datadir=${datadir} \
+                --arch=${TARGET_ARCH} \
+                --disable-dvbscan \
+                --disable-bundle
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+}
+
+FILES_${PN} += "${datadir}/${BPN}"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0001-configure-don-t-run-python-distutils-to-find-STAGING.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0001-configure-don-t-run-python-distutils-to-find-STAGING.patch
new file mode 100644
index 0000000..dfc3959
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0001-configure-don-t-run-python-distutils-to-find-STAGING.patch
@@ -0,0 +1,31 @@
+From 0dce5a2abd9f42876616c35772a4d71c5399543c Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Sat, 17 Dec 2011 11:38:15 +0100
+Subject: [PATCH 1/4] configure: don't run python distutils to find STAGING_INCDIR/python, it is not safe for per-machine sysroots
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ m4/ax_python_devel.m4 |    7 +------
+ 1 files changed, 1 insertions(+), 6 deletions(-)
+
+diff --git a/m4/ax_python_devel.m4 b/m4/ax_python_devel.m4
+index adbd207..dee70f6 100644
+--- a/m4/ax_python_devel.m4
++++ b/m4/ax_python_devel.m4
+@@ -151,12 +151,7 @@ $ac_distutils_result])
+ 	#
+ 	AC_MSG_CHECKING([for Python include path])
+ 	if test -z "$PYTHON_CPPFLAGS"; then
+-		python_path=`$PYTHON -c "import distutils.sysconfig; \
+-			print (distutils.sysconfig.get_python_inc ());"`
+-		if test -n "${python_path}"; then
+-			python_path="-I$python_path"
+-		fi
+-		PYTHON_CPPFLAGS=$python_path
++		PYTHON_CPPFLAGS="-I${STAGING_INCDIR}/${PYTHON_DIR}"
+ 	fi
+ 	AC_MSG_RESULT([$PYTHON_CPPFLAGS])
+ 	AC_SUBST([PYTHON_CPPFLAGS])
+-- 
+1.7.2.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0002-Revert-fixed-ios-Add-memory-barriers-to-atomic-Add-S.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0002-Revert-fixed-ios-Add-memory-barriers-to-atomic-Add-S.patch
new file mode 100644
index 0000000..e0a4037
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0002-Revert-fixed-ios-Add-memory-barriers-to-atomic-Add-S.patch
@@ -0,0 +1,97 @@
+From 7b2a8a7869d257cba35f53f6d877877c29cdac27 Mon Sep 17 00:00:00 2001
+From: Paul Menzel <paulepanter@users.sourceforge.net>
+Date: Sun, 14 Aug 2011 21:53:47 +0200
+Subject: [PATCH 2/4] Revert "fixed:[ios] Add memory barriers to atomic Add/Subtract and Increment/Decrement functions to ensure synchronized accesses."
+
+This reverts commit 9a10c48710df79118e39e9b3bb0a15bf1fe694d1.
+
+The build (OpenEmbedded `angstrom-2010.x` for `MACHINE = "beagleboard") fails with the following error.
+
+        make -C xbmc/threads
+        make[1]: Entering directory `/oe/build-angstrom-next/angstrom-dev/work/armv7a-angstrom-linux-gnueabi/xbmc-10.05-r11+gitr0+9a10c48710df79118e39e9b3bb0a15bf1fe694d1/git/xbmc/threads'
+        CPP     Atomics.o
+        /tmp/ccIzTm3L.s: Assembler messages:
+        /tmp/ccIzTm3L.s:40: Error: garbage following instruction -- `dmb ish'
+        /tmp/ccIzTm3L.s:48: Error: garbage following instruction -- `dmb ish'
+        /tmp/ccIzTm3L.s:76: Error: garbage following instruction -- `dmb ish'
+        /tmp/ccIzTm3L.s:83: Error: garbage following instruction -- `dmb ish'
+        /tmp/ccIzTm3L.s:111: Error: garbage following instruction -- `dmb ish'
+        /tmp/ccIzTm3L.s:118: Error: garbage following instruction -- `dmb ish'
+        /tmp/ccIzTm3L.s:145: Error: garbage following instruction -- `dmb ish'
+        /tmp/ccIzTm3L.s:152: Error: garbage following instruction -- `dmb ish'
+        /tmp/ccIzTm3L.s:180: Error: garbage following instruction -- `dmb ish'
+        /tmp/ccIzTm3L.s:187: Error: garbage following instruction -- `dmb ish'
+        make[1]: *** [Atomics.o] Error 1
+        make[1]: Leaving directory `/oe/build-angstrom-next/angstrom-dev/work/armv7a-angstrom-linux-gnueabi/xbmc-10.05-r11+gitr0+9a10c48710df79118e39e9b3bb0a15bf1fe694d1/git/xbmc/threads'
+        make: *** [xbmc/threads/threads.a] Error 2
+---
+ xbmc/threads/Atomics.cpp |    8 --------
+ 1 files changed, 0 insertions(+), 8 deletions(-)
+
+diff --git a/xbmc/threads/Atomics.cpp b/xbmc/threads/Atomics.cpp
+index 5b09f18..0a98a7e 100644
+--- a/xbmc/threads/Atomics.cpp
++++ b/xbmc/threads/Atomics.cpp
+@@ -194,14 +194,12 @@ long AtomicIncrement(volatile long* pAddr)
+ {
+   register long val;
+   asm volatile (
+-                "dmb      ish            \n" // Memory barrier. Make sure all memory accesses appearing before this complete before any that appear after
+                 "1:                     \n" 
+                 "ldrex   %0, [%1]       \n" // (val = *pAddr)
+                 "add     %0,  #1        \n" // (val += 1)
+                 "strex   r1,  %0, [%1]	\n"
+                 "cmp     r1,   #0       \n"
+                 "bne     1b             \n"
+-                "dmb     ish            \n" // Memory barrier.
+                 : "=&r" (val)
+                 : "r"(pAddr)
+                 : "r1"
+@@ -273,14 +271,12 @@ long AtomicAdd(volatile long* pAddr, long amount)
+ {
+   register long val;
+   asm volatile (
+-                "dmb      ish            \n" // Memory barrier. Make sure all memory accesses appearing before this complete before any that appear after
+                 "1:                     \n" 
+                 "ldrex   %0, [%1]       \n" // (val = *pAddr)
+                 "add     %0,  %2        \n" // (val += amount)
+                 "strex   r1,  %0, [%1]	\n"
+                 "cmp     r1,   #0       \n"
+                 "bne     1b             \n"
+-                "dmb     ish            \n" // Memory barrier.
+                 : "=&r" (val)
+                 : "r"(pAddr), "r"(amount)
+                 : "r1"
+@@ -351,14 +347,12 @@ long AtomicDecrement(volatile long* pAddr)
+ {
+   register long val;
+   asm volatile (
+-                "dmb      ish            \n" // Memory barrier. Make sure all memory accesses appearing before this complete before any that appear after
+                 "1:                     \n" 
+                 "ldrex   %0, [%1]       \n" // (val = *pAddr)
+                 "sub     %0,  #1        \n" // (val -= 1)
+                 "strex   r1,  %0, [%1]	\n"
+                 "cmp     r1,   #0       \n"
+                 "bne     1b             \n"
+-                "dmb     ish            \n" // Memory barrier.
+                 : "=&r" (val)
+                 : "r"(pAddr)
+                 : "r1"
+@@ -431,14 +425,12 @@ long AtomicSubtract(volatile long* pAddr, long amount)
+ {
+   register long val;
+   asm volatile (
+-                "dmb     ish            \n" // Memory barrier. Make sure all memory accesses appearing before this complete before any that appear after
+                 "1:                     \n" 
+                 "ldrex   %0, [%1]       \n" // (val = *pAddr)
+                 "sub     %0,  %2        \n" // (val -= amount)
+                 "strex   r1,  %0, [%1]	\n"
+                 "cmp     r1,   #0       \n"
+                 "bne     1b             \n"
+-                "dmb     ish            \n" // Memory barrier.
+                 : "=&r" (val)
+                 : "r"(pAddr), "r"(amount)
+                 : "r1"
+-- 
+1.7.2.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0003-Revert-fixed-ios-Add-memory-barriers-to-cas-assembly.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0003-Revert-fixed-ios-Add-memory-barriers-to-cas-assembly.patch
new file mode 100644
index 0000000..629017b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0003-Revert-fixed-ios-Add-memory-barriers-to-cas-assembly.patch
@@ -0,0 +1,69 @@
+From aaae1616a09d359b52e929f944ca0ceb4bb7f831 Mon Sep 17 00:00:00 2001
+From: Paul Menzel <paulepanter@users.sourceforge.net>
+Date: Sun, 14 Aug 2011 21:55:09 +0200
+Subject: [PATCH 3/4] Revert "fixed:[ios] Add memory barriers to cas() assembly to ensure alignment of memory accesses."
+
+This reverts commit 92bab651e2253d172879995b50985645b77fecd2.
+
+The build (OpenEmbedded `angstrom-2010.x` for `MACHINE = "beagleboard") fails with the following error.
+
+        CPP     Atomics.o
+        make[1]: Entering directory `/oe/build-angstrom-next/angstrom-dev/work/armv7a-angstrom-linux-gnueabi/xbmc-10.05-r11+gitr0+92bab651e2253d172879995b50985645b77fecd2/git/xbmc/windows'
+        CPP     GUIMediaWindow.o
+        /tmp/ccrsywuV.s: Assembler messages:
+        /tmp/ccrsywuV.s:40: Error: garbage following instruction -- `dmb ish'
+        /tmp/ccrsywuV.s:48: Error: garbage following instruction -- `dmb ish'
+        make[1]: *** [Atomics.o] Error 1
+        make[1]: Leaving directory `/oe/build-angstrom-next/angstrom-dev/work/armv7a-angstrom-linux-gnueabi/xbmc-10.05-r11+gitr0+92bab651e2253d172879995b50985645b77fecd2/git/xbmc/threads'
+        make: *** [xbmc/threads/threads.a] Error 2
+---
+ xbmc/threads/Atomics.cpp |   33 ++++++++++++++++-----------------
+ 1 files changed, 16 insertions(+), 17 deletions(-)
+
+diff --git a/xbmc/threads/Atomics.cpp b/xbmc/threads/Atomics.cpp
+index 0a98a7e..0967eb2 100644
+--- a/xbmc/threads/Atomics.cpp
++++ b/xbmc/threads/Atomics.cpp
+@@ -49,23 +49,22 @@ long cas(volatile long *pAddr, long expectedVal, long swapVal)
+ #elif defined(__arm__)
+ long cas(volatile long* pAddr, long expectedVal, long swapVal)
+ {
+-  register long prev;
+-  asm volatile (
+-                "dmb      ish            \n" // Memory barrier. Make sure all memory accesses appearing before this complete before any that appear after
+-                "1:                      \n"
+-                "ldrex    %0, [%1]       \n" // Load the current value of *pAddr(%1) into prev (%0) and lock pAddr,
+-                "cmp      %0,  %2        \n" // Verify that the current value (%0) == old value (%2)
+-                "bne      2f             \n" // Bail if the two values are not equal [not as expected]
+-                "strex    r1,  %3, [%1]  \n"
+-                "cmp      r1,  #0        \n"
+-                "bne      1b             \n"
+-                "dmb      ish            \n" // Memory barrier.
+-                "2:                      \n"
+-                : "=&r" (prev)
+-                : "r"(pAddr), "r"(expectedVal),"r"(swapVal)
+-                : "r1"
+-                );
+-  return prev;
++  return(__sync_val_compare_and_swap(pAddr, expectedVal, swapVal));
++//  register long prev;
++//  asm volatile (
++//                "1:                      \n"
++//                "ldrex    %0, [%1]       \n" /* Load the current value of *pAddr(%1) into prev (%0) and lock pAddr,  */
++//                "cmp      %0,  %2        \n" /* Verify that the current value (%0) == old value (%2) */
++//                "bne      2f             \n" /* Bail if the two values are not equal [not as expected] */
++//                "strex    r1,  %3, [%1]  \n"
++//                "cmp      r1,  #0        \n"                
++//                "bne      1b             \n"
++//                "2:                        "
++//                : "=&r" (prev)
++//                : "r"(pAddr), "r"(expectedVal),"r"(swapVal)
++//                : "r1"
++//                );
++//  return prev;
+ }
+ 
+ #elif defined(__mips__)
+-- 
+1.7.2.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0004-configure-cope-with-ld-is-gold-DISTRO_FEATURE.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0004-configure-cope-with-ld-is-gold-DISTRO_FEATURE.patch
new file mode 100644
index 0000000..345e20e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/0004-configure-cope-with-ld-is-gold-DISTRO_FEATURE.patch
@@ -0,0 +1,43 @@
+From fd8f73826240aae543a41a2bfeea0056e2fe594d Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Mon, 11 Mar 2013 11:04:29 +0100
+Subject: [PATCH] configure: cope with ld-is-gold DISTRO_FEATURE
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+
+Upstream-Stature: backport
+
+ configure.in |   12 +++++++-----
+ 1 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index ef94683..c8b459b 100755
+--- a/configure.in
++++ b/configure.in
+@@ -18,9 +18,14 @@ tolower(){
+ # check for library basenames
+ AC_DEFUN([XB_FIND_SONAME],
+ [
++  #set -x
+   if [[ "$host_vendor" != "apple" ]]; then
+     AC_MSG_CHECKING([for lib$2 soname])
+     $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-M 2>/dev/null | grep "^LOAD.*$2" | awk '{V=2; print $V}')
++    if [[ -z $$1_FILENAME ]]; then
++      #try gold linker syntax
++      $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-t 3>&1 1>&2 2>&3 | grep "$2")
++    fi
+     if [[ ! -z $$1_FILENAME ]]; then
+       $1_SONAME=$(objdump -p $$1_FILENAME | grep "SONAME.*$2" | awk '{V=2; print $V}')
+     fi
+@@ -55,6 +60,7 @@ AC_DEFUN([XB_FIND_SONAME],
+     AC_MSG_RESULT([$$1_SONAME])
+     AC_SUBST($1_SONAME)
+   fi
++  #set +x
+ ])
+ 
+ # Function to push and pop libs and includes for a command
+-- 
+1.7.7.6
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/configure.in-Avoid-running-code.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/configure.in-Avoid-running-code.patch
new file mode 100644
index 0000000..5c14059
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc/configure.in-Avoid-running-code.patch
@@ -0,0 +1,32 @@
+From cfd851660a594801a591e80dc820c65cb7bd7836 Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Sat, 6 Oct 2012 06:40:03 -0300
+Subject: [PATCH] configure.in: Avoid running code or we break cross-compile
+
+Upstream-Status: Backport [similar change done for 12.0]
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ configure.in |    6 +-----
+ 1 files changed, 1 insertions(+), 5 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index ef94683..d7efcb0 100755
+--- a/configure.in
++++ b/configure.in
+@@ -1246,11 +1246,7 @@ if test "$use_external_ffmpeg" = "yes"; then
+   AC_DEFINE([USE_EXTERNAL_FFMPEG], [1], [Whether to use external FFmpeg libraries.])
+ 
+   # Disable vdpau support if external libavcodec doesn't have it
+-  AC_RUN_IFELSE(
+-    AC_LANG_PROGRAM([[#include <libavcodec/avcodec.h>]],
+-      [[avcodec_register_all();
+-        AVCodec *codec = avcodec_find_decoder_by_name("vc1_vdpau");
+-        return (codec) ? 0 : 1;]]),,
++  AC_CHECK_LIB([avcodec], [ff_vdpau_vc1_decode_picture],,
+     [if test "x$use_vdpau" = "xyes"; then
+       AC_MSG_ERROR($ffmpeg_vdpau_not_supported)
+     else
+-- 
+1.7.2.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc_git.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc_git.bb
new file mode 100644
index 0000000..f14d4e1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-mediacentre/xbmc/xbmc_git.bb
@@ -0,0 +1,99 @@
+SUMMARY = "XBMC Media Center"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=6eb631b6da7fdb01508a80213ffc35ff"
+
+DEPENDS = "libusb1 libcec libplist expat yajl gperf-native libxmu fribidi mpeg2dec ffmpeg samba fontconfig curl python libass libmodplug libmicrohttpd wavpack libmms cmake-native libsdl-image libsdl-mixer virtual/egl mysql5 sqlite3 libmms faad2 libcdio libpcre boost lzo enca avahi libsamplerate0 libxinerama libxrandr libxtst bzip2 virtual/libsdl jasper zip-native zlib libtinyxml libmad"
+#require recipes/egl/egl.inc
+
+
+SRCREV = "82388d55dae79cbb2e486e307e23202e76a43efa"
+
+# multiple issues
+PNBLACKLIST[xbmc] ?= "/usr/include/c++/ctime:70:11: error: '::gmtime' has not been declared"
+
+PV = "11.0+gitr${SRCPV}"
+PR = "r14"
+SRC_URI = "git://github.com/xbmc/xbmc.git;branch=Eden \
+           file://0001-configure-don-t-run-python-distutils-to-find-STAGING.patch \
+           file://0002-Revert-fixed-ios-Add-memory-barriers-to-atomic-Add-S.patch \
+           file://0003-Revert-fixed-ios-Add-memory-barriers-to-cas-assembly.patch \
+           file://0004-configure-cope-with-ld-is-gold-DISTRO_FEATURE.patch \
+           file://configure.in-Avoid-running-code.patch \
+"
+
+inherit autotools gettext python-dir
+
+S = "${WORKDIR}/git"
+
+# breaks compilation
+CCACHE = ""
+
+CACHED_CONFIGUREVARS += " \
+    ac_cv_path_PYTHON="${STAGING_BINDIR_NATIVE}/python-native/python" \
+"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl', 'openglesv2', d)}"
+PACKAGECONFIG[opengl] = "--enable-gl,--enable-gles,glew"
+PACKAGECONFIG[openglesv2] = "--enable-gles,--enable-gl,"
+
+EXTRA_OECONF = " \
+    --disable-rpath \
+    --enable-libusb \
+    --enable-airplay \
+    --disable-optical-drive \
+    --enable-external-libraries \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '--enable-gl', '--enable-gles', d)} \
+"
+
+FULL_OPTIMIZATION_armv7a = "-fexpensive-optimizations -fomit-frame-pointer -O4 -ffast-math"
+BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
+
+EXTRA_OECONF_append_armv7a = "--cpu=cortex-a8"
+
+# for python modules
+export HOST_SYS
+export BUILD_SYS
+export STAGING_LIBDIR
+export STAGING_INCDIR
+export PYTHON_DIR
+
+do_configure() {
+    sh bootstrap
+    oe_runconf
+}
+
+PARALLEL_MAKE = ""
+
+do_compile_prepend() {
+    for i in $(find . -name "Makefile") ; do
+        sed -i -e 's:I/usr/include:I${STAGING_INCDIR}:g' $i
+    done
+
+    for i in $(find . -name "*.mak*" -o    -name "Makefile") ; do
+        sed -i -e 's:I/usr/include:I${STAGING_INCDIR}:g' -e 's:-rpath \$(libdir):-rpath ${libdir}:g' $i
+    done
+}
+
+INSANE_SKIP_${PN} = "rpaths"
+
+# on ARM architectures xbmc will use GLES which will make the regular wrapper fail, so start it directly
+do_install_append_arm() {
+    sed -i -e 's:Exec=xbmc:Exec=${libdir}/xbmc/xbmc.bin:g' ${D}${datadir}/applications/xbmc.desktop
+}
+
+FILES_${PN} += "${datadir}/xsessions ${datadir}/icons"
+FILES_${PN}-dbg += "${libdir}/xbmc/.debug ${libdir}/xbmc/*/.debug ${libdir}/xbmc/*/*/.debug ${libdir}/xbmc/*/*/*/.debug"
+
+# xbmc uses some kind of dlopen() method for libcec so we need to add it manually
+# OpenGL builds need glxinfo, that's in mesa-demos
+RRECOMMENDS_${PN}_append = " libcec \
+                             python \
+                             python-lang \
+                             python-re \
+                             python-netclient \
+                             libcurl \
+                             xdpyinfo \
+                             ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-demos', '', d)} \
+"
+RRECOMMENDS_${PN}_append_libc-glibc = " glibc-charmap-ibm850 glibc-gconv-ibm850"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-mkv/libebml/libebml_1.3.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-mkv/libebml/libebml_1.3.0.bb
new file mode 100644
index 0000000..71e2bfc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-mkv/libebml/libebml_1.3.0.bb
@@ -0,0 +1,33 @@
+SUMMARY = "libebml is a C++ libary to parse EBML files"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=f14599a2f089f6ff8c97e2baa4e3d575"
+
+SRC_URI = "http://dl.matroska.org/downloads/libebml/libebml-${PV}.tar.bz2"
+SRC_URI[md5sum] = "efec729bf5a51e649e1d9d1f61c0ae7a"
+SRC_URI[sha256sum] = "83b074d6b62715aa0080406ea84d33df2e44b5d874096640233a4db49b8096de"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_compile() {
+    cd ${S}/make/linux
+    oe_runmake CROSS="${TARGET_PREFIX}"
+}
+
+do_install() {
+    cd ${S}/make/linux
+
+    install -d ${D}${libdir}
+    install -m 0644 libebml.a ${D}${libdir}
+    install -m 0755 libebml.so.* ${D}${libdir}
+    cp -R --no-dereference --preserve=mode,links -v libebml.so ${D}${libdir}
+
+    install -d ${D}${includedir}/ebml
+    for i in ../../ebml/*.h; do
+        install -m 0644 $i ${D}${includedir}/ebml
+    done
+
+    install -d ${D}${includedir}/ebml/c
+    for i in ../../ebml/c/*.h; do
+        install -m 0644 $i ${D}${includedir}/ebml/c
+    done
+}
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska_1.4.1.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska_1.4.1.bb
new file mode 100644
index 0000000..1ad87cb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska_1.4.1.bb
@@ -0,0 +1,35 @@
+SUMMARY = "libmatroska is a C++ libary to parse Matroska files (.mkv and .mka)"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "libebml"
+
+SRC_URI = "http://dl.matroska.org/downloads/${BPN}/${BPN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "f61b2e5086f4bb9d24a43cc8af43a719"
+SRC_URI[sha256sum] = "086f21873e925679babdabf793c3bb85c353d0cd79423543a3355e08e8a4efb7"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_compile() {
+    cd ${S}/make/linux
+    oe_runmake CROSS="${TARGET_PREFIX}"
+}
+
+do_install() {
+    cd ${S}/make/linux
+
+    install -d ${D}${libdir}
+    install -m 0644 libmatroska.a ${D}${libdir}
+    install -m 0755 libmatroska.so.* ${D}${libdir}
+    cp -R --no-dereference --preserve=mode,links -v libmatroska.so ${D}${libdir}
+
+    install -d ${D}${includedir}/matroska
+    for i in ../../matroska/*.h; do
+        install -m 0644 $i ${D}${includedir}/matroska
+    done
+
+    install -d ${D}${includedir}/matroska/c
+    for i in ../../matroska/c/*.h; do
+        install -m 0644 $i ${D}${includedir}/matroska/c
+    done
+}
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-mkv/mkvtoolnix/mkvtoolnix_git.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-mkv/mkvtoolnix/mkvtoolnix_git.bb
new file mode 100644
index 0000000..fe44ccf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-mkv/mkvtoolnix/mkvtoolnix_git.bb
@@ -0,0 +1,57 @@
+SUMMARY = "MKVToolNix -- Cross-platform tools for Matroska"
+HOMEPAGE = "http://www.bunkus.org/videotools/mkvtoolnix/source.html"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "curl boost expat zlib libebml libmatroska libogg libvorbis bzip2 lzo file ruby-native"
+
+PV = "8.4.0+git${SRCPV}"
+SRCREV_mkvtoolnix = "7f63ea48ee474754a95838f37aba8f6118c94a65"
+SRCREV_libebml = "04b34b0dbded40e0cec93cafa6a4f4c8e90c3206"
+SRCREV_libmatroska = "db5d627b5bf48516c9e0b540254c0d36595760c3"
+SRCREV_FORMAT = "mkvtoolnix"
+SRC_URI = " \
+           git://github.com/mbunkus/mkvtoolnix.git;name=mkvtoolnix \
+           git://github.com/Matroska-Org/libebml.git;name=libebml;destsuffix=git/lib/libebml \
+           git://github.com/Matroska-Org/libmatroska.git;name=libmatroska;destsuffix=git/lib/libmatroska \
+          "
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep gettext
+
+# make sure rb files are used from sysroot, not from host
+# ruby-1.9.3-always-use-i386.patch is doing target_cpu=`echo $target_cpu | sed s/i.86/i386/`
+# we need to replace it too (a bit longer version without importing re)
+RUBY_SYS = "${@ '${BUILD_SYS}'.replace('i486', 'i386').replace('i586', 'i386').replace('i686', 'i386') }"
+export RUBYLIB="${STAGING_DATADIR_NATIVE}/rubygems:${STAGING_LIBDIR_NATIVE}/ruby:${STAGING_LIBDIR_NATIVE}/ruby/${RUBY_SYS}"
+
+PACKAGECONFIG ??= "flac ${@bb.utils.contains('BBFILE_COLLECTIONS', 'qt5-layer', 'qt5', '', d)}"
+PACKAGECONFIG[flac] = "--with-flac,--without-flac,flac"
+PACKAGECONFIG[qt5] = "--enable-qt --with-moc=${STAGING_BINDIR_NATIVE}/qt5/moc --with-uic=${STAGING_BINDIR_NATIVE}/qt5/uic --with-rcc=${STAGING_BINDIR_NATIVE}/qt5/rcc,--disable-qt,qtbase"
+
+EXTRA_OECONF = " --with-boost-libdir=${STAGING_LIBDIR} \
+"
+
+FILES_${PN} += "${datadir}"
+
+# remove some hardcoded searchpaths
+do_configure_prepend() {
+    sed -i -e s:/usr/local/lib:${STAGING_LIBDIR}:g -e s:/usr/local/include:${STAGING_INCDIR}:g ${S}/ac/qt5.m4
+}
+
+# Yeah, no makefile
+do_compile() {
+    LC_ALL="en_US.UTF-8" ${S}/drake ${PARALLEL_MAKE}
+}
+
+do_install() {
+    LC_ALL="en_US.UTF-8" ${S}/drake install DESTDIR=${D}
+}
+
+# | In file included from src/common/utf8_codecvt_facet.cpp:22:0:
+# | src/common/../../lib/boost/utf8_codecvt_facet/utf8_codecvt_facet.cpp:174:5: error: 'int mtx::utf8_codecvt_facet::do_length' is not a static data member of 'struct mtx::utf8_codecvt_facet'
+# |      BOOST_CODECVT_DO_LENGTH_CONST std::mbstate_t &,
+# |      ^
+PNBLACKLIST[mkvtoolnix] ?= "BROKEN: Failx to build with gcc-5"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/cdparanoia_10.2.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/cdparanoia_10.2.bb
new file mode 100644
index 0000000..86ba527
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/cdparanoia_10.2.bb
@@ -0,0 +1,26 @@
+SUMMARY = "cdparanoia library"
+DESCRIPTION = "library used to read audio CDs, which is able to perform \
+error corrections, hence the name paranoia."
+HOMEPAGE = "https://www.xiph.org/"
+SECTION = "multimedia"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING-LGPL;md5=d370feaa1c9edcdbd29ca27ea3d2304d"
+
+SRC_URI = "http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-${PV}.src.tgz \
+           file://0001-Use-DESTDIR-in-install-Makefile-rule.patch \
+           file://0002-interface-remove-C-reserved-keyword.patch \
+"
+SRC_URI[md5sum] = "b304bbe8ab63373924a744eac9ebc652"
+SRC_URI[sha256sum] = "005db45ef4ee017f5c32ec124f913a0546e77014266c6a1c50df902a55fe64df"
+
+# Uppercase letters are not allowed in the recipe name, thus the recipe can not be named cdparanoia-III and
+# we need to add the path to the extracted sources explicitely:
+S = "${WORKDIR}/cdparanoia-III-${PV}"
+
+# cdparanoia Makefile can not be used with several threads (because the static library target and the shared
+# library target use object files which are compiled in the same directory, the object files are just removed
+# between the compilation of those two targets)
+PARALLEL_MAKE = ""
+
+inherit autotools-brokensep
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-Use-DESTDIR-in-install-Makefile-rule.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-Use-DESTDIR-in-install-Makefile-rule.patch
new file mode 100644
index 0000000..7b08300
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-Use-DESTDIR-in-install-Makefile-rule.patch
@@ -0,0 +1,70 @@
+From 97c06ae955b270851f4fd2396c715f9c76591f37 Mon Sep 17 00:00:00 2001
+From: Etienne Cordonnier <etienne.cordonnier@streamunlimited.com>
+Date: Thu, 2 Apr 2015 10:15:08 +0200
+Subject: [PATCH] Use DESTDIR in "install" Makefile rule
+
+This change allows to perform installations in a sysroot folder, which is required e.g. by
+the recipes inheriting yocto autotool class, and is an autotool standard:
+make install DESTDIR=~/mysysroot
+
+Upstream-Status: Inappropriate (the upstream project is dead)
+
+Signed-off-by: Etienne Cordonnier <etienne.cordonnier@streamunlimited.com>
+---
+ Makefile.in | 36 ++++++++++++++++++------------------
+ 1 file changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 3d235ad..df544c7 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -63,28 +63,28 @@ slib:
+ 	cd paranoia && $(MAKE) slib
+ 
+ install:
+-	$(INSTALL) -d -m 0755 $(BINDIR)
+-	$(INSTALL) -m 755 $(srcdir)/cdparanoia $(BINDIR)
+-	$(INSTALL) -d -m 0755 $(MANDIR)
+-	$(INSTALL) -d -m 0755 $(MANDIR)/man1
+-	$(INSTALL) -m 0644 $(srcdir)/cdparanoia.1 $(MANDIR)/man1
+-	$(INSTALL) -d -m 0755 $(INCLUDEDIR)
+-	$(INSTALL) -m 0644 $(srcdir)/paranoia/cdda_paranoia.h $(INCLUDEDIR)
+-	$(INSTALL) -d -m 0755 $(LIBDIR)
+-	$(INSTALL) -m 0644 $(srcdir)/paranoia/libcdda_paranoia.so.0.$(VERSION) $(LIBDIR)
+-	$(INSTALL) -m 0644 $(srcdir)/paranoia/libcdda_paranoia.a $(LIBDIR)
+-	$(INSTALL) -m 0644 $(srcdir)/interface/cdda_interface.h $(INCLUDEDIR)
+-	$(INSTALL) -m 0644 $(srcdir)/interface/libcdda_interface.so.0.$(VERSION) $(LIBDIR)
+-	$(INSTALL) -m 0644 $(srcdir)/interface/libcdda_interface.a $(LIBDIR)
+-	$(INSTALL) -m 0644 $(srcdir)/utils.h $(INCLUDEDIR)
++	$(INSTALL) -d -m 0755 $(DESTDIR)$(BINDIR)
++	$(INSTALL) -m 755 $(srcdir)/cdparanoia $(DESTDIR)$(BINDIR)
++	$(INSTALL) -d -m 0755 $(DESTDIR)$(MANDIR)
++	$(INSTALL) -d -m 0755 $(DESTDIR)$(MANDIR)/man1
++	$(INSTALL) -m 0644 $(srcdir)/cdparanoia.1 $(DESTDIR)$(MANDIR)/man1
++	$(INSTALL) -d -m 0755 $(DESTDIR)$(INCLUDEDIR)
++	$(INSTALL) -m 0644 $(srcdir)/paranoia/cdda_paranoia.h $(DESTDIR)$(INCLUDEDIR)
++	$(INSTALL) -d -m 0755 $(DESTDIR)$(LIBDIR)
++	$(INSTALL) -m 0644 $(srcdir)/paranoia/libcdda_paranoia.so.0.$(VERSION) $(DESTDIR)$(LIBDIR)
++	$(INSTALL) -m 0644 $(srcdir)/paranoia/libcdda_paranoia.a $(DESTDIR)$(LIBDIR)
++	$(INSTALL) -m 0644 $(srcdir)/interface/cdda_interface.h $(DESTDIR)$(INCLUDEDIR)
++	$(INSTALL) -m 0644 $(srcdir)/interface/libcdda_interface.so.0.$(VERSION) $(DESTDIR)$(LIBDIR)
++	$(INSTALL) -m 0644 $(srcdir)/interface/libcdda_interface.a $(DESTDIR)$(LIBDIR)
++	$(INSTALL) -m 0644 $(srcdir)/utils.h $(DESTDIR)$(INCLUDEDIR)
+ 	ln -fs libcdda_interface.so.0.$(VERSION) \
+-		$(LIBDIR)/libcdda_interface.so.0
++		$(DESTDIR)$(LIBDIR)/libcdda_interface.so.0
+ 	ln -fs libcdda_interface.so.0.$(VERSION) \
+-		$(LIBDIR)/libcdda_interface.so
++		$(DESTDIR)$(LIBDIR)/libcdda_interface.so
+ 	ln -fs libcdda_paranoia.so.0.$(VERSION) \
+-		$(LIBDIR)/libcdda_paranoia.so.0
++		$(DESTDIR)$(LIBDIR)/libcdda_paranoia.so.0
+ 	ln -fs libcdda_paranoia.so.0.$(VERSION) \
+-		$(LIBDIR)/libcdda_paranoia.so
++		$(DESTDIR)$(LIBDIR)/libcdda_paranoia.so
+ 
+ cdparanoia:	$(OFILES) $(LIBDEP)
+ 		$(LD) $(CFLAGS) $(LDFLAGS) $(OFILES) \
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0002-interface-remove-C-reserved-keyword.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0002-interface-remove-C-reserved-keyword.patch
new file mode 100644
index 0000000..a5600a1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0002-interface-remove-C-reserved-keyword.patch
@@ -0,0 +1,605 @@
+From 12ea28398f8e5d4a4a23c62d511fc4f53584e51d Mon Sep 17 00:00:00 2001
+From: Etienne Cordonnier <etienne.cordonnier@streamunlimited.com>
+Date: Tue, 7 Apr 2015 11:07:56 +0200
+Subject: [PATCH] interface: remove C++ reserved keyword
+
+Because "private" was used in cdda_interface.h, this header file could not be
+compiled in C++.
+
+Upstream-Status: Inappropriate (the upstream project is dead)
+
+Signed-off-by: Etienne Cordonnier <etienne.cordonnier@streamunlimited.com>
+---
+ interface/cdda_interface.h   |   2 +-
+ interface/cooked_interface.c |   8 +--
+ interface/interface.c        |   8 +--
+ interface/scan_devices.c     |  22 ++++----
+ interface/scsi_interface.c   | 128 +++++++++++++++++++++----------------------
+ interface/test_interface.c   |   4 +-
+ 6 files changed, 86 insertions(+), 86 deletions(-)
+
+diff --git a/interface/cdda_interface.h b/interface/cdda_interface.h
+index 8487cb7..b738825 100644
+--- a/interface/cdda_interface.h
++++ b/interface/cdda_interface.h
+@@ -84,7 +84,7 @@ typedef struct cdrom_drive{
+   int is_atapi;
+   int is_mmc;
+ 
+-  cdda_private_data_t *private;
++  cdda_private_data_t *priv; /* private is a C++ reserved keyword */
+   void         *reserved;
+   unsigned char inqbytes[4];
+ 
+diff --git a/interface/cooked_interface.c b/interface/cooked_interface.c
+index de29055..ea9d0fc 100644
+--- a/interface/cooked_interface.c
++++ b/interface/cooked_interface.c
+@@ -13,13 +13,13 @@
+ static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){
+   struct timespec tv1;
+   struct timespec tv2;
+-  int ret1=clock_gettime(d->private->clock,&tv1);
++  int ret1=clock_gettime(d->priv->clock,&tv1);
+   int ret2=ioctl(fd, command,arg);
+-  int ret3=clock_gettime(d->private->clock,&tv2);
++  int ret3=clock_gettime(d->priv->clock,&tv2);
+   if(ret1<0 || ret3<0){
+-    d->private->last_milliseconds=-1;
++    d->priv->last_milliseconds=-1;
+   }else{
+-    d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
++    d->priv->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+   }
+   return ret2;
+ }
+diff --git a/interface/interface.c b/interface/interface.c
+index e8a90cd..526c2a9 100644
+--- a/interface/interface.c
++++ b/interface/interface.c
+@@ -39,9 +39,9 @@ int cdda_close(cdrom_drive *d){
+     if(d->drive_model)free(d->drive_model);
+     if(d->cdda_fd!=-1)close(d->cdda_fd);
+     if(d->ioctl_fd!=-1 && d->ioctl_fd!=d->cdda_fd)close(d->ioctl_fd);
+-    if(d->private){
+-      if(d->private->sg_hd)free(d->private->sg_hd);
+-      free(d->private);
++    if(d->priv){
++      if(d->priv->sg_hd)free(d->priv->sg_hd);
++      free(d->priv);
+     }
+ 
+     free(d);
+@@ -127,7 +127,7 @@ long cdda_read_timed(cdrom_drive *d, void *buffer, long beginsector, long sector
+ 	}
+       }	
+     }
+-    if(ms)*ms=d->private->last_milliseconds;
++    if(ms)*ms=d->priv->last_milliseconds;
+     return(sectors);
+   }
+   
+diff --git a/interface/scan_devices.c b/interface/scan_devices.c
+index fc58110..5f6c4e3 100644
+--- a/interface/scan_devices.c
++++ b/interface/scan_devices.c
+@@ -264,11 +264,11 @@ cdrom_drive *cdda_identify_cooked(const char *dev, int messagedest,
+   d->interface=COOKED_IOCTL;
+   d->bigendianp=-1; /* We don't know yet... */
+   d->nsectors=-1;
+-  d->private=calloc(1,sizeof(*d->private));
++  d->priv=calloc(1,sizeof(*d->priv));
+   {
+     /* goddamnit */
+     struct timespec tv;
+-    d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
++    d->priv->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+   }
+   idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description);
+   return(d);
+@@ -674,15 +674,15 @@ cdrom_drive *cdda_identify_scsi(const char *generic_device,
+   d->bigendianp=-1; /* We don't know yet... */
+   d->nsectors=-1;
+   d->messagedest = messagedest;
+-  d->private=calloc(1,sizeof(*d->private));
++  d->priv=calloc(1,sizeof(*d->priv));
+   {
+     /* goddamnit */
+     struct timespec tv;
+-    d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
++    d->priv->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+   }
+   if(use_sgio){
+     d->interface=SGIO_SCSI;
+-    d->private->sg_buffer=(unsigned char *)(d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
++    d->priv->sg_buffer=(unsigned char *)(d->priv->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
+     g_fd=d->cdda_fd=dup(d->ioctl_fd);
+   }else{
+     version=verify_SG_version(d,messagedest,messages);
+@@ -696,8 +696,8 @@ cdrom_drive *cdda_identify_scsi(const char *generic_device,
+     }
+ 
+     /* malloc our big buffer for scsi commands */
+-    d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
+-    d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
++    d->priv->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
++    d->priv->sg_buffer=((unsigned char *)d->priv->sg_hd)+SG_OFF;
+   }
+ 
+   {
+@@ -772,9 +772,9 @@ cdda_identify_scsi_fail:
+   if(i_fd!=-1)close(i_fd);
+   if(g_fd!=-1)close(g_fd);
+   if(d){
+-    if(d->private){
+-      if(d->private->sg_hd)free(d->private->sg_hd);
+-      free(d->private);
++    if(d->priv){
++      if(d->priv->sg_hd)free(d->priv->sg_hd);
++      free(d->priv);
+     }
+     free(d);
+   }
+@@ -821,7 +821,7 @@ cdrom_drive *cdda_identify_test(const char *filename, int messagedest,
+   d->interface=TEST_INTERFACE;
+   d->bigendianp=-1; /* We don't know yet... */
+   d->nsectors=-1;
+-  d->private=calloc(1,sizeof(*d->private));
++  d->priv=calloc(1,sizeof(*d->priv));
+   d->drive_model=copystring("File based test interface");
+   idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",d->drive_model);
+   
+diff --git a/interface/scsi_interface.c b/interface/scsi_interface.c
+index adbb9bf..75d90d4 100644
+--- a/interface/scsi_interface.c
++++ b/interface/scsi_interface.c
+@@ -15,13 +15,13 @@
+ static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){
+   struct timespec tv1;
+   struct timespec tv2;
+-  int ret1=clock_gettime(d->private->clock,&tv1);
++  int ret1=clock_gettime(d->priv->clock,&tv1);
+   int ret2=ioctl(fd, command,arg);
+-  int ret3=clock_gettime(d->private->clock,&tv2);
++  int ret3=clock_gettime(d->priv->clock,&tv2);
+   if(ret1<0 || ret3<0){
+-    d->private->last_milliseconds=-1;
++    d->priv->last_milliseconds=-1;
+   }else{
+-    d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
++    d->priv->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+   }
+   return ret2;
+ }
+@@ -96,7 +96,7 @@ static void tweak_SG_buffer(cdrom_drive *d) {
+ static void clear_garbage(cdrom_drive *d){
+   fd_set fdset;
+   struct timeval tv;
+-  struct sg_header *sg_hd=d->private->sg_hd;
++  struct sg_header *sg_hd=d->priv->sg_hd;
+   int flag=0;
+ 
+   /* clear out any possibly preexisting garbage */
+@@ -185,7 +185,7 @@ static int sg2_handle_scsi_cmd(cdrom_drive *d,
+   struct timespec tv2;
+   int tret1,tret2;
+   int status = 0;
+-  struct sg_header *sg_hd=d->private->sg_hd;
++  struct sg_header *sg_hd=d->priv->sg_hd;
+   long writebytes=SG_OFF+cmd_len+in_size;
+ 
+   /* generic scsi device services */
+@@ -195,7 +195,7 @@ static int sg2_handle_scsi_cmd(cdrom_drive *d,
+ 
+   memset(sg_hd,0,sizeof(sg_hd)); 
+   memset(sense_buffer,0,SG_MAX_SENSE); 
+-  memcpy(d->private->sg_buffer,cmd,cmd_len+in_size);
++  memcpy(d->priv->sg_buffer,cmd,cmd_len+in_size);
+   sg_hd->twelve_byte = cmd_len == 12;
+   sg_hd->result = 0;
+   sg_hd->reply_len = SG_OFF + out_size;
+@@ -209,7 +209,7 @@ static int sg2_handle_scsi_cmd(cdrom_drive *d,
+      tell if the command failed.  Scared yet? */
+ 
+   if(bytecheck && out_size>in_size){
+-    memset(d->private->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); 
++    memset(d->priv->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); 
+     /* the size does not remove cmd_len due to the way the kernel
+        driver copies buffers */
+     writebytes+=(out_size-in_size);
+@@ -243,7 +243,7 @@ static int sg2_handle_scsi_cmd(cdrom_drive *d,
+   }
+ 
+   sigprocmask (SIG_BLOCK, &(d->sigset), NULL );
+-  tret1=clock_gettime(d->private->clock,&tv1);  
++  tret1=clock_gettime(d->priv->clock,&tv1);  
+   errno=0;
+   status = write(d->cdda_fd, sg_hd, writebytes );
+ 
+@@ -289,7 +289,7 @@ static int sg2_handle_scsi_cmd(cdrom_drive *d,
+     }
+   }
+ 
+-  tret2=clock_gettime(d->private->clock,&tv2);  
++  tret2=clock_gettime(d->priv->clock,&tv2);  
+   errno=0;
+   status = read(d->cdda_fd, sg_hd, SG_OFF + out_size);
+   sigprocmask ( SIG_UNBLOCK, &(d->sigset), NULL );
+@@ -313,7 +313,7 @@ static int sg2_handle_scsi_cmd(cdrom_drive *d,
+   if(bytecheck && in_size+cmd_len<out_size){
+     long i,flag=0;
+     for(i=in_size;i<out_size;i++)
+-      if(d->private->sg_buffer[i]!=bytefill){
++      if(d->priv->sg_buffer[i]!=bytefill){
+ 	flag=1;
+ 	break;
+       }
+@@ -326,9 +326,9 @@ static int sg2_handle_scsi_cmd(cdrom_drive *d,
+ 
+   errno=0;
+   if(tret1<0 || tret2<0){
+-    d->private->last_milliseconds=-1;
++    d->priv->last_milliseconds=-1;
+   }else{
+-    d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
++    d->priv->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
+   }
+   return(0);
+ }
+@@ -347,7 +347,7 @@ static int sgio_handle_scsi_cmd(cdrom_drive *d,
+ 
+   memset(&hdr,0,sizeof(hdr));
+   memset(sense,0,sizeof(sense));
+-  memcpy(d->private->sg_buffer,cmd+cmd_len,in_size);
++  memcpy(d->priv->sg_buffer,cmd+cmd_len,in_size);
+ 
+   hdr.cmdp = cmd;
+   hdr.cmd_len = cmd_len;
+@@ -355,7 +355,7 @@ static int sgio_handle_scsi_cmd(cdrom_drive *d,
+   hdr.mx_sb_len = SG_MAX_SENSE;
+   hdr.timeout = 50000;
+   hdr.interface_id = 'S';
+-  hdr.dxferp =  d->private->sg_buffer;
++  hdr.dxferp =  d->priv->sg_buffer;
+   hdr.flags = SG_FLAG_DIRECT_IO;  /* direct IO if we can get it */
+ 
+   /* scary buffer fill hack */
+@@ -400,7 +400,7 @@ static int sgio_handle_scsi_cmd(cdrom_drive *d,
+   if(bytecheck && in_size<out_size){
+     long i,flag=0;
+     for(i=in_size;i<out_size;i++)
+-      if(d->private->sg_buffer[i]!=bytefill){
++      if(d->priv->sg_buffer[i]!=bytefill){
+ 	flag=1;
+ 	break;
+       }
+@@ -412,7 +412,7 @@ static int sgio_handle_scsi_cmd(cdrom_drive *d,
+   }
+ 
+   /* Can't rely on .duration because we can't be certain kernel has HZ set to something useful */
+-  /* d->private->last_milliseconds = hdr.duration; */
++  /* d->priv->last_milliseconds = hdr.duration; */
+ 
+   errno = 0;
+   return 0;
+@@ -445,9 +445,9 @@ static int test_unit_ready(cdrom_drive *d){
+ 
+   handle_scsi_cmd(d, cmd, 6, 0, 56, 0,0, sense);
+ 
+-  key = d->private->sg_buffer[2] & 0xf;
+-  ASC = d->private->sg_buffer[12];
+-  ASCQ = d->private->sg_buffer[13];
++  key = d->priv->sg_buffer[2] & 0xf;
++  ASC = d->priv->sg_buffer[12];
++  ASCQ = d->priv->sg_buffer[13];
+   
+   if(key == 2 && ASC == 4 && ASCQ == 1) return 0;
+   return 1;
+@@ -492,7 +492,7 @@ static int mode_sense_atapi(cdrom_drive *d,int size,int page){
+   if (handle_scsi_cmd (d, cmd, 10, 0, size+4,'\377',1,sense)) return(1);
+ 
+   {
+-    unsigned char *b=d->private->sg_buffer;
++    unsigned char *b=d->priv->sg_buffer;
+     if(b[0])return(1); /* Handles only up to 256 bytes */
+     if(b[6])return(1); /* Handles only up to 256 bytes */
+ 
+@@ -604,8 +604,8 @@ static int mode_select(cdrom_drive *d,int density,int secsize){
+ static unsigned int get_orig_sectorsize(cdrom_drive *d){
+   if(mode_sense(d,12,0x01))return(-1);
+ 
+-  d->orgdens = d->private->sg_buffer[4];
+-  return(d->orgsize = ((int)(d->private->sg_buffer[10])<<8)+d->private->sg_buffer[11]);
++  d->orgdens = d->priv->sg_buffer[4];
++  return(d->orgsize = ((int)(d->priv->sg_buffer[10])<<8)+d->priv->sg_buffer[11]);
+ }
+ 
+ /* switch CDROM scsi drives to given sector size  */
+@@ -664,8 +664,8 @@ static int scsi_read_toc (cdrom_drive *d){
+     return(-4);
+   }
+ 
+-  first=d->private->sg_buffer[2];
+-  last=d->private->sg_buffer[3];
++  first=d->priv->sg_buffer[2];
++  last=d->priv->sg_buffer[3];
+   tracks=last-first+1;
+ 
+   if (last > MAXTRK || first > MAXTRK || last<0 || first<0) {
+@@ -683,7 +683,7 @@ static int scsi_read_toc (cdrom_drive *d){
+       return(-5);
+     }
+     {
+-      scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
++      scsi_TOC *toc=(scsi_TOC *)(d->priv->sg_buffer+4);
+ 
+       d->disc_toc[i-first].bFlags=toc->bFlags;
+       d->disc_toc[i-first].bTrack=i;
+@@ -704,7 +704,7 @@ static int scsi_read_toc (cdrom_drive *d){
+     return(-2);
+   }
+   {
+-    scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
++    scsi_TOC *toc=(scsi_TOC *)(d->priv->sg_buffer+4);
+     
+     d->disc_toc[i-first].bFlags=toc->bFlags;
+     d->disc_toc[i-first].bTrack=0xAA;
+@@ -738,7 +738,7 @@ static int scsi_read_toc2 (cdrom_drive *d){
+   }
+ 
+   /* copy to our structure and convert start sector */
+-  tracks = d->private->sg_buffer[1];
++  tracks = d->priv->sg_buffer[1];
+   if (tracks > MAXTRK) {
+     cderror(d,"003: CDROM reporting illegal number of tracks\n");
+     return(-3);
+@@ -754,33 +754,33 @@ static int scsi_read_toc2 (cdrom_drive *d){
+       return(-5);
+     }
+     
+-    d->disc_toc[i].bFlags = d->private->sg_buffer[10];
++    d->disc_toc[i].bFlags = d->priv->sg_buffer[10];
+     d->disc_toc[i].bTrack = i + 1;
+ 
+     d->disc_toc[i].dwStartSector= d->adjust_ssize * 
+-	(((signed char)(d->private->sg_buffer[2])<<24) | 
+-	 (d->private->sg_buffer[3]<<16)|
+-	 (d->private->sg_buffer[4]<<8)|
+-	 (d->private->sg_buffer[5]));
++	(((signed char)(d->priv->sg_buffer[2])<<24) | 
++	 (d->priv->sg_buffer[3]<<16)|
++	 (d->priv->sg_buffer[4]<<8)|
++	 (d->priv->sg_buffer[5]));
+   }
+ 
+   d->disc_toc[i].bFlags = 0;
+   d->disc_toc[i].bTrack = i + 1;
+-  memcpy (&foo, d->private->sg_buffer+2, 4);
+-  memcpy (&bar, d->private->sg_buffer+6, 4);
++  memcpy (&foo, d->priv->sg_buffer+2, 4);
++  memcpy (&bar, d->priv->sg_buffer+6, 4);
+   d->disc_toc[i].dwStartSector = d->adjust_ssize * (be32_to_cpu(foo) +
+ 						    be32_to_cpu(bar));
+ 
+   d->disc_toc[i].dwStartSector= d->adjust_ssize * 
+-    ((((signed char)(d->private->sg_buffer[2])<<24) | 
+-      (d->private->sg_buffer[3]<<16)|
+-      (d->private->sg_buffer[4]<<8)|
+-      (d->private->sg_buffer[5]))+
++    ((((signed char)(d->priv->sg_buffer[2])<<24) | 
++      (d->priv->sg_buffer[3]<<16)|
++      (d->priv->sg_buffer[4]<<8)|
++      (d->priv->sg_buffer[5]))+
+      
+-     ((((signed char)(d->private->sg_buffer[6])<<24) | 
+-       (d->private->sg_buffer[7]<<16)|
+-       (d->private->sg_buffer[8]<<8)|
+-       (d->private->sg_buffer[9]))));
++     ((((signed char)(d->priv->sg_buffer[6])<<24) | 
++       (d->priv->sg_buffer[7]<<16)|
++       (d->priv->sg_buffer[8]<<8)|
++       (d->priv->sg_buffer[9]))));
+ 
+ 
+   d->cd_extra = FixupTOC(d,tracks+1);
+@@ -817,7 +817,7 @@ static int i_read_28 (cdrom_drive *d, void *p, long begin, long sectors, unsigne
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -836,7 +836,7 @@ static int i_read_A8 (cdrom_drive *d, void *p, long begin, long sectors, unsigne
+   cmd[9] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -854,7 +854,7 @@ static int i_read_D4_10 (cdrom_drive *d, void *p, long begin, long sectors, unsi
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -872,7 +872,7 @@ static int i_read_D4_12 (cdrom_drive *d, void *p, long begin, long sectors, unsi
+   cmd[9] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -890,7 +890,7 @@ static int i_read_D5 (cdrom_drive *d, void *p, long begin, long sectors, unsigne
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -908,7 +908,7 @@ static int i_read_D8 (cdrom_drive *d, void *p, long begin, long sectors, unsigne
+   cmd[9] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -922,7 +922,7 @@ static int i_read_mmc (cdrom_drive *d, void *p, long begin, long sectors, unsign
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -936,7 +936,7 @@ static int i_read_mmcB (cdrom_drive *d, void *p, long begin, long sectors, unsig
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -950,7 +950,7 @@ static int i_read_mmc2 (cdrom_drive *d, void *p, long begin, long sectors, unsig
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -964,7 +964,7 @@ static int i_read_mmc2B (cdrom_drive *d, void *p, long begin, long sectors, unsi
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -978,7 +978,7 @@ static int i_read_mmc3 (cdrom_drive *d, void *p, long begin, long sectors, unsig
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -992,7 +992,7 @@ static int i_read_mmc3B (cdrom_drive *d, void *p, long begin, long sectors, unsi
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -1026,7 +1026,7 @@ static int i_read_msf (cdrom_drive *d, void *p, long begin, long sectors, unsign
+ 
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -1039,7 +1039,7 @@ static int i_read_msf2 (cdrom_drive *d, void *p, long begin, long sectors, unsig
+ 
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -1052,7 +1052,7 @@ static int i_read_msf3 (cdrom_drive *d, void *p, long begin, long sectors, unsig
+   
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->priv->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+ 
+@@ -1275,7 +1275,7 @@ long scsi_read_msf3 (cdrom_drive *d, void *p, long begin,
+ static int count_2352_bytes(cdrom_drive *d){
+   long i;
+   for(i=2351;i>=0;i--)
+-    if(d->private->sg_buffer[i]!=(unsigned char)'\177')
++    if(d->priv->sg_buffer[i]!=(unsigned char)'\177')
+       return(((i+3)>>2)<<2);
+ 
+   return(0);
+@@ -1284,7 +1284,7 @@ static int count_2352_bytes(cdrom_drive *d){
+ static int verify_nonzero(cdrom_drive *d){
+   long i,flag=0;
+   for(i=0;i<2352;i++)
+-    if(d->private->sg_buffer[i]!=0){
++    if(d->priv->sg_buffer[i]!=0){
+       flag=1;
+       break;
+     }
+@@ -1625,7 +1625,7 @@ static int check_mmc(cdrom_drive *d){
+   d->is_mmc=0;
+   if(mode_sense(d,22,0x2A)==0){
+   
+-    b=d->private->sg_buffer;
++    b=d->priv->sg_buffer;
+     b+=b[3]+4;
+     
+     if((b[0]&0x3F)==0x2A){
+@@ -1673,7 +1673,7 @@ unsigned char *scsi_inquiry(cdrom_drive *d){
+     cderror(d,"008: Unable to identify CDROM model\n");
+     return(NULL);
+   }
+-  return (d->private->sg_buffer);
++  return (d->priv->sg_buffer);
+ }
+ 
+ int scsi_init_drive(cdrom_drive *d){
+@@ -1742,8 +1742,8 @@ int scsi_init_drive(cdrom_drive *d){
+   check_cache(d);
+ 
+   d->error_retry=1;
+-  d->private->sg_hd=realloc(d->private->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
+-  d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
++  d->priv->sg_hd=realloc(d->priv->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
++  d->priv->sg_buffer=((unsigned char *)d->priv->sg_hd)+SG_OFF;
+   d->report_all=1;
+   return(0);
+ }
+diff --git a/interface/test_interface.c b/interface/test_interface.c
+index 11bec25..e1cefaa 100644
+--- a/interface/test_interface.c
++++ b/interface/test_interface.c
+@@ -66,9 +66,9 @@ static long test_read(cdrom_drive *d, void *p, long begin, long sectors){
+   if(!fd)fd=fdopen(d->cdda_fd,"r");
+ 
+   if(begin<lastread)
+-    d->private->last_milliseconds=20;
++    d->priv->last_milliseconds=20;
+   else
+-    d->private->last_milliseconds=sectors;
++    d->priv->last_milliseconds=sectors;
+ 
+ #ifdef CDDA_TEST_UNDERRUN
+   sectors-=1;
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/coriander/coriander/cross-compile.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/coriander/coriander/cross-compile.patch
new file mode 100644
index 0000000..49350fe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/coriander/coriander/cross-compile.patch
@@ -0,0 +1,17 @@
+In a cross compile environment adding paths like /usr are not correct.
+With this patch we make it so that its relative to sysroot if the compiler
+defines one.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Index: a/src/Makefile.am
+===================================================================
+--- a/src/Makefile.am	2013-02-08 22:35:08.000000000 -0800
++++ b/src/Makefile.am	2013-10-13 01:31:38.812869080 -0700
+@@ -33,5 +33,5 @@
+ 	video_encode.c video_encode.h \
+ 	subtitles.c subtitles.h 
+ 
+-coriander_LDADD = -L/usr/X11R6/lib/ @PACKAGE_LIBS@ $(INTLLIBS) $(LIBTIFF_LIBS) $(FTPLIB_LIBS) $(SDLLIB_LIBS) $(LIBDC_LIBS) $(LIBRAW_LIBS) $(XV_LIBS) $(COR_LFS_LDFLAGS) -lgthread-2.0 $(FFMPEG_LIBS) $(X11_LIBS)
++coriander_LDADD = -L=/usr/X11R6/lib/ @PACKAGE_LIBS@ $(INTLLIBS) $(LIBTIFF_LIBS) $(FTPLIB_LIBS) $(SDLLIB_LIBS) $(LIBDC_LIBS) $(LIBRAW_LIBS) $(XV_LIBS) $(COR_LFS_LDFLAGS) -lgthread-2.0 $(FFMPEG_LIBS) $(X11_LIBS)
+ 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/coriander/coriander_2.0.2.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/coriander/coriander_2.0.2.bb
new file mode 100755
index 0000000..a9f52ca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/coriander/coriander_2.0.2.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Control and capture GUI for IIDC compliant cameras"
+HOMEPAGE = "http://damien.douxchamps.net/ieee1394/coriander/"
+SECTION = "applications"
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+DEPENDS = "gtk+ libgnomeui libraw1394 libdc1394 libxv tiff"
+
+PNBLACKLIST[coriander] ?= "BROKEN: fails to use SDL probably because libsdl-config was removed, error: unknown type name 'SDL_Overlay'"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/coriander-2/${PV}/${BP}.tar.gz \
+           file://cross-compile.patch \
+          "
+
+SRC_URI[md5sum] = "431d98fb013217681f97ade168201fb8"
+SRC_URI[sha256sum] = "5c7fd31cb58d398e2742352bf1ffbd2ca22e06686c6668ecfd437735c2b79123"
+
+inherit autotools gettext
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-connector-dbus_0.3.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-connector-dbus_0.3.0.bb
new file mode 100644
index 0000000..f23bc6c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-connector-dbus_0.3.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "D-Bus connector for dLeyna libraries"
+HOMEPAGE = "https://01.org/dleyna/"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://src/connector-dbus.c;endline=21;md5=0a1695cef53beefc36651de439f643b5"
+
+DEPENDS = "glib-2.0 dbus dleyna-core"
+
+SRC_URI = "git://github.com/01org/${BPN}.git"
+SRCREV = "de913c35e5c936e2d40ddbd276ee902cd802bd3a"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${libdir}/dleyna-1.0/connectors/*.so"
+FILES_${PN}-dev += "${libdir}/dleyna-1.0/connectors/*.la"
+FILES_${PN}-dbg += "${libdir}/dleyna-1.0/connectors/.debug/*.so"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-core_0.6.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-core_0.6.0.bb
new file mode 100644
index 0000000..a3b2793
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-core_0.6.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Utility functions for dLeyna libraries"
+DESCRIPTION = "dleyna-core is a library of utility functions that are used \
+by the higher level dLeyna libraries that communicate with DLNA devices, \
+e.g., dleyna-server. In brief, it provides APIs for logging, error, settings \
+and task management and an IPC asbstraction API."
+HOMEPAGE = "https://01.org/dleyna/"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://libdleyna/core/core.c;endline=21;md5=139cba0c634344abc9456694fbb5083b"
+
+DEPENDS = "glib-2.0 gupnp"
+
+SRC_URI = "git://github.com/01org/${BPN}.git"
+SRCREV = "27a3786ec013f64fd58243410a60798f824acec3"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-renderer_0.6.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-renderer_0.6.0.bb
new file mode 100644
index 0000000..b30aee9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-renderer_0.6.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "DLNA renderer libraries"
+DESCRIPTION = "dleyna-renderer is a library for implementing services \
+that allow clients to discover and manipulate Digital Media Renderers. \
+An implementation of such a service for linux is also included."
+HOMEPAGE = "https://01.org/dleyna/"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://libdleyna/renderer/server.c;endline=21;md5=f51acd4757fb6a779a87122c43cf1346"
+
+DEPENDS = "glib-2.0 gssdp gupnp gupnp-av gupnp-dlna libsoup-2.4 dleyna-core"
+RDEPENDS_${PN} = "dleyna-connector-dbus"
+
+SRC_URI = "git://github.com/01org/${BPN}.git"
+SRCREV = "50fd1ec9d51328e7dea98874129dc8d6fe3ea1dd"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+CFLAGS += " -I${S}"
+
+FILES_${PN} += "${datadir}/dbus-1"
+FILES_${PN}-dev += "${libdir}/${PN}/*.so"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-server_0.6.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-server_0.6.0.bb
new file mode 100644
index 0000000..ae16765
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-server_0.6.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "DLNA server libraries"
+DESCRIPTION = "dleyna-server is a library for implementing services that \
+allow clients to discover, browse and manipulate Digital Media Servers. \
+An implementation of such a service for linux is also included."
+HOMEPAGE = "https://01.org/dleyna/"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://libdleyna/server/server.c;endline=22;md5=dfa6dc3f914206c2408c0510c234f8c8"
+
+DEPENDS = "glib-2.0 gssdp gupnp gupnp-av gupnp-dlna libsoup-2.4 libxml2 dleyna-core"
+RDEPENDS_${PN} = "dleyna-connector-dbus"
+
+SRC_URI = "git://github.com/01org/${BPN}.git"
+SRCREV = "38651783914c76bd861f7fe8651b25e3986d7be8"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${datadir}/dbus-1"
+FILES_${PN}-dev += "${libdir}/${PN}/*.so"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/media-service-upnp_0.5.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/media-service-upnp_0.5.0.bb
new file mode 100644
index 0000000..baaf42b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/media-service-upnp_0.5.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "discover, browse and search UPNP/DLNA media servers"
+HOMEPAGE = "https://01.org/dleyna/"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://src/media-service-upnp.c;beginline=1;endline=21;md5=584eb103b4f6f3432c43d169b6a123a1"
+
+DEPENDS = "dbus glib-2.0 gssdp gupnp gupnp-av gupnp-dlna libsoup-2.4"
+
+SRC_URI = "git://github.com/01org/${BPN}.git"
+SRCREV = "0dbc74a79aa07a8f8c7d32e1d2de6c4d3a0f95bc"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+do_install_append() {
+    install -d ${D}${bindir}
+    install -m 0755 dms-info ${D}${bindir}
+}
+
+PACKAGES =+ "${PN}-tests"
+
+FILES_${PN} += "${datadir}/dbus-1/services/*.service"
+FILES_${PN}-tests = "${bindir}/dms-info"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/renderer-service-upnp_0.3.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/renderer-service-upnp_0.3.0.bb
new file mode 100644
index 0000000..68d59fa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/renderer-service-upnp_0.3.0.bb
@@ -0,0 +1,29 @@
+SUMMARY = "discover and manipulate UPNP/DLNA media renderers"
+HOMEPAGE = "https://01.org/dleyna/"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://src/renderer-service-upnp.c;beginline=1;endline=21;md5=c25c3082684eb4ca87474b7528c6dc15"
+
+PNBLACKLIST[renderer-service-upnp] ?= "BROKEN: doesn't build with B!=S (trying to install rendererconsole.py from ${B} instead of ${S})"
+
+DEPENDS = "dbus glib-2.0 gssdp gupnp gupnp-av gupnp-dlna libsoup-2.4"
+
+SRC_URI = "git://github.com/01org/${BPN}.git"
+SRCREV = "4a0b1d7cd8e22d3cb0e09c77c344ceccbcbbd34f"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+do_install_append() {
+    install -d ${D}${bindir}
+    install -m 0755 test/rendererconsole.py ${D}${bindir}
+}
+
+PACKAGES =+ "${PN}-tests"
+
+RDEPENDS_${PN}-tests = "python-dbus python-json python-misc python-pkgutil python-xml"
+
+FILES_${PN} += "${datadir}/dbus-1/services/*.service"
+# When we have GI, package cap
+FILES_${PN}-tests = "${bindir}/rendererconsole.py"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/faac/faac_1.28.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/faac/faac_1.28.bb
new file mode 100644
index 0000000..d96c1a4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/faac/faac_1.28.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Freeware Advanced Audio Coder (MPEG2-AAC, MPEG4-AAC)"
+SECTION = "libs"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+                    file://libfaac/coder.h;beginline=5;endline=17;md5=fa1fd6a5fa8cdc877d63a12530d273e0"
+
+inherit autotools-brokensep
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/faac/${BP}.tar.gz \
+           file://build-fix.patch"
+
+SRC_URI[md5sum] = "80763728d392c7d789cde25614c878f6"
+SRC_URI[sha256sum] = "c5141199f4cfb17d749c36ba8cfe4b25f838da67c22f0fec40228b6b9c3d19df"
+
+PACKAGES =+ "lib${BPN} lib${BPN}-dev"
+
+FILES_${PN} = " ${bindir}/faac "
+FILES_lib${PN} = " ${libdir}/libfaac.so.*"
+FILES_lib${PN}-dev = "${includedir}/faac.h ${includedir}/faaccfg.h ${libdir}/libfaac.so ${libdir}/libfaac.la"
+FILES_lib${PN}-staticdev = "${libdir}/libfaac.a"
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/faac/files/build-fix.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/faac/files/build-fix.patch
new file mode 100644
index 0000000..83cff8f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/faac/files/build-fix.patch
@@ -0,0 +1,332 @@
+Patch fixing build error and warnings. Error consisted of redefining
+strcasestr function from string.h. Warnings consisted of deprecated conversions
+of string constants to char*, using '%llu' for type uint64_t (which on 64 bit
+systems, is defined as unsigned long int by stdint.h), and using '==' for
+equality of two strings.
+
+Patch originally from Debian.
+
+Upstream-Status: Pending
+
+==========================================================================
+--- a/common/mp4v2/mpeg4ip.h
++++ b/common/mp4v2/mpeg4ip.h
+@@ -120,14 +120,6 @@
+ #endif
+ #include <sys/param.h>
+ 
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-char *strcasestr(const char *haystack, const char *needle);
+-#ifdef __cplusplus
+-}
+-#endif
+-
+ #define OPEN_RDWR O_RDWR
+ #define OPEN_CREAT O_CREAT 
+ #define OPEN_RDONLY O_RDONLY
+@@ -135,7 +127,6 @@
+ #define closesocket close
+ #define IOSBINARY ios::bin
+ 
+-#if SIZEOF_LONG == 8
+ #define MAX_UINT64 -1LU
+ #define D64F "ld"
+ #define U64F  "lu"
+@@ -143,15 +134,6 @@
+ 
+ #define TO_D64(a) (a##L)
+ #define TO_U64(a) (a##LU)
+-#else
+-#define MAX_UINT64 -1LLU
+-#define D64F "lld"
+-#define U64F  "llu"
+-#define X64F "llx"
+-
+-#define TO_D64(a) (a##LL)
+-#define TO_U64(a) (a##LLU)
+-#endif
+ 
+ #ifdef HAVE_FPOS_T___POS
+ #define FPOS_TO_VAR(fpos, typed, var) (var) = (typed)((fpos).__pos)
+--- a/configure.in
++++ b/configure.in
+@@ -4,6 +4,9 @@
+ AM_INIT_AUTOMAKE
+ 
+ AM_CONFIG_HEADER(config.h)
++AH_TOP([#ifndef CONFIG_H
++#define CONFIG_H])
++AH_BOTTOM([#endif /* CONFIG_H */])
+ 
+ AC_ARG_WITH( mp4v2,  [  --with-mp4v2            compile libmp4v2],WITHMP4V2=$withval, WITHMP4V2=yes)
+ AC_ARG_ENABLE( drm,  [  --enable-drm            Digital Radio Mondiale support], enable_drm=$enableval, enable_drm=no)
+--- a/common/mp4v2/atom_avcC.cpp
++++ b/common/mp4v2/atom_avcC.cpp
+@@ -29,7 +29,7 @@
+ class SizeTableProperty : public MP4TableProperty 
+ {
+  public:
+-  SizeTableProperty(char *name, MP4IntegerProperty *pCountProperty) :
++  SizeTableProperty(const char *name, MP4IntegerProperty *pCountProperty) :
+     MP4TableProperty(name, pCountProperty) {};
+  protected:
+   void ReadEntry(MP4File *pFile, u_int32_t index) {
+--- a/common/mp4v2/atom_ohdr.cpp
++++ b/common/mp4v2/atom_ohdr.cpp
+@@ -21,7 +21,7 @@
+       \param useCountedFormat    counted format flag.
+       \param useUnicode          unicode flag.
+   */
+-	OhdrMP4StringProperty(char* name, bool useCountedFormat = false,
++	OhdrMP4StringProperty(const char* name, bool useCountedFormat = false,
+     bool useUnicode = false): MP4StringProperty(name, useCountedFormat,
+     useUnicode) {
+   }
+--- a/common/mp4v2/atom_stz2.cpp
++++ b/common/mp4v2/atom_stz2.cpp
+@@ -30,7 +30,7 @@
+ class MP4HalfSizeTableProperty : public MP4TableProperty
+ {
+ public:
+-  MP4HalfSizeTableProperty(char *name, MP4IntegerProperty *pCountProperty) :
++  MP4HalfSizeTableProperty(const char *name, MP4IntegerProperty *pCountProperty) :
+     MP4TableProperty(name, pCountProperty) {};
+ 
+   // The count is half the actual size
+--- a/common/mp4v2/mp4atom.cpp
++++ b/common/mp4v2/mp4atom.cpp
+@@ -806,7 +806,7 @@
+ 	AddProperty(new MP4Integer24Property("flags"));
+ }
+ 
+-void MP4Atom::AddReserved(char* name, u_int32_t size) 
++void MP4Atom::AddReserved(const char* name, u_int32_t size)
+ {
+ 	MP4BytesProperty* pReserved = new MP4BytesProperty(name, size); 
+ 	pReserved->SetReadOnly();
+--- a/common/mp4v2/mp4atom.h
++++ b/common/mp4v2/mp4atom.h
+@@ -204,7 +204,7 @@
+ 
+ 	void AddVersionAndFlags();
+ 
+-	void AddReserved(char* name, u_int32_t size);
++	void AddReserved(const char* name, u_int32_t size);
+ 
+ 	void ExpectChildAtom(const char* name, 
+ 		bool mandatory, bool onlyOne = true);
+--- a/common/mp4v2/mp4file.cpp
++++ b/common/mp4v2/mp4file.cpp
+@@ -718,7 +718,7 @@
+ 	}
+ }
+ 
+-void MP4File::ProtectWriteOperation(char* where)
++void MP4File::ProtectWriteOperation(const char* where)
+ {
+ 	if (m_mode == 'r') {
+ 		throw new MP4Error("operation not permitted in read mode", where);
+@@ -1274,7 +1274,7 @@
+ }
+ 
+ // NULL terminated list of brands which require the IODS atom
+-char *brandsWithIods[] = { "mp42",
++const char *brandsWithIods[] = { "mp42",
+                            "isom",
+                            NULL};
+ 
+@@ -2211,11 +2211,11 @@
+ 	for (u_int32_t i = 0; i < m_pTracks.Size(); i++) {
+ 		if (!strcmp(normType, m_pTracks[i]->GetType())) {
+ 			if (subType) {
+-				if (normType == MP4_AUDIO_TRACK_TYPE) {
++				if (!strcmp(normType,MP4_AUDIO_TRACK_TYPE)) {
+ 					if (subType != GetTrackEsdsObjectTypeId(m_pTracks[i]->GetId())) {
+ 						continue;
+ 					}
+-				} else if (normType == MP4_VIDEO_TRACK_TYPE) {
++				} else if (!strcmp(normType,MP4_VIDEO_TRACK_TYPE)) {
+ 					if (subType != GetTrackEsdsObjectTypeId(m_pTracks[i]->GetId())) {
+ 						continue;
+ 					}
+@@ -2278,11 +2278,11 @@
+   for (u_int32_t i = 0; i < m_pTracks.Size(); i++) {
+     if (!strcmp(normType, m_pTracks[i]->GetType())) {
+       if (subType) {
+-	if (normType == MP4_AUDIO_TRACK_TYPE) {
++	if (!strcmp(normType,MP4_AUDIO_TRACK_TYPE)) {
+ 	  if (subType != GetTrackEsdsObjectTypeId(m_pTracks[i]->GetId())) {
+ 	    continue;
+ 	  }
+-	} else if (normType == MP4_VIDEO_TRACK_TYPE) {
++	} else if (!strcmp(normType,MP4_VIDEO_TRACK_TYPE)) {
+ 	  if (subType != GetTrackEsdsObjectTypeId(m_pTracks[i]->GetId())) {
+ 	    continue;
+ 	  }
+--- a/common/mp4v2/mp4file.h
++++ b/common/mp4v2/mp4file.h
+@@ -700,7 +700,7 @@
+ 	const char* TempFileName();
+ 	void Rename(const char* existingFileName, const char* newFileName);
+ 
+-	void ProtectWriteOperation(char* where);
++	void ProtectWriteOperation(const char* where);
+ 
+ 	void FindIntegerProperty(const char* name, 
+ 		MP4Property** ppProperty, u_int32_t* pIndex = NULL);
+--- a/common/mp4v2/mp4property.cpp
++++ b/common/mp4v2/mp4property.cpp
+@@ -313,7 +313,7 @@
+ 
+ // MP4StringProperty
+ 
+-MP4StringProperty::MP4StringProperty(char* name, 
++MP4StringProperty::MP4StringProperty(const char* name,
+ 	bool useCountedFormat, bool useUnicode)
+ 	: MP4Property(name)
+ {
+@@ -420,7 +420,7 @@
+ 
+ // MP4BytesProperty
+ 
+-MP4BytesProperty::MP4BytesProperty(char* name, u_int32_t valueSize,
++MP4BytesProperty::MP4BytesProperty(const char* name, u_int32_t valueSize,
+                                    u_int32_t defaultValueSize)
+ 	: MP4Property(name)
+ {
+@@ -549,7 +549,7 @@
+ 
+ // MP4TableProperty
+ 
+-MP4TableProperty::MP4TableProperty(char* name, MP4IntegerProperty* pCountProperty)
++MP4TableProperty::MP4TableProperty(const char* name, MP4IntegerProperty* pCountProperty)
+ 	: MP4Property(name) 
+ {
+ 	m_pCountProperty = pCountProperty;
+@@ -725,7 +725,7 @@
+ 
+ // MP4DescriptorProperty
+   
+-MP4DescriptorProperty::MP4DescriptorProperty(char* name, 
++MP4DescriptorProperty::MP4DescriptorProperty(const char* name,
+ 	u_int8_t tagsStart, u_int8_t tagsEnd, bool mandatory, bool onlyOne)
+ 	: MP4Property(name) 
+ { 
+--- a/common/mp4v2/mp4property.h
++++ b/common/mp4v2/mp4property.h
+@@ -100,7 +100,7 @@
+ 
+ class MP4IntegerProperty : public MP4Property {
+ protected:
+-	MP4IntegerProperty(char* name)
++	MP4IntegerProperty(const char* name)
+ 		: MP4Property(name) { };
+ 
+ public:
+@@ -118,7 +118,7 @@
+ #define MP4INTEGER_PROPERTY_DECL2(isize, xsize) \
+ 	class MP4Integer##xsize##Property : public MP4IntegerProperty { \
+ 	public: \
+-		MP4Integer##xsize##Property(char* name) \
++		MP4Integer##xsize##Property(const char* name) \
+ 			: MP4IntegerProperty(name) { \
+ 			SetCount(1); \
+ 			m_values[0] = 0; \
+@@ -188,7 +188,7 @@
+ 
+ class MP4BitfieldProperty : public MP4Integer64Property {
+ public:
+-	MP4BitfieldProperty(char* name, u_int8_t numBits)
++	MP4BitfieldProperty(const char* name, u_int8_t numBits)
+ 		: MP4Integer64Property(name) {
+ 		ASSERT(numBits != 0);
+ 		ASSERT(numBits <= 64);
+@@ -213,7 +213,7 @@
+ 
+ class MP4Float32Property : public MP4Property {
+ public:
+-	MP4Float32Property(char* name)
++	MP4Float32Property(const char* name)
+ 		: MP4Property(name) {
+ 		m_useFixed16Format = false;
+ 		m_useFixed32Format = false;
+@@ -280,7 +280,7 @@
+ 
+ class MP4StringProperty : public MP4Property {
+ public:
+-	MP4StringProperty(char* name, 
++	MP4StringProperty(const char* name,
+ 	  bool useCountedFormat = false, bool useUnicode = false);
+ 
+ 	~MP4StringProperty();
+@@ -355,7 +355,7 @@
+ 
+ class MP4BytesProperty : public MP4Property {
+ public:
+-	MP4BytesProperty(char* name, u_int32_t valueSize = 0,
++	MP4BytesProperty(const char* name, u_int32_t valueSize = 0,
+                          u_int32_t defaultValueSize = 0);
+ 
+ 	~MP4BytesProperty();
+@@ -419,7 +419,7 @@
+ 
+ class MP4TableProperty : public MP4Property {
+ public:
+-	MP4TableProperty(char* name, MP4IntegerProperty* pCountProperty);
++	MP4TableProperty(const char* name, MP4IntegerProperty* pCountProperty);
+ 
+ 	~MP4TableProperty();
+ 
+@@ -469,7 +469,7 @@
+ 
+ class MP4DescriptorProperty : public MP4Property {
+ public:
+-	MP4DescriptorProperty(char* name = NULL, 
++	MP4DescriptorProperty(const char* name = NULL,
+ 	  u_int8_t tagsStart = 0, u_int8_t tagsEnd = 0,
+ 	  bool mandatory = false, bool onlyOne = false);
+ 
+@@ -531,7 +531,7 @@
+ 
+ class MP4QosQualifierProperty : public MP4DescriptorProperty {
+ public:
+-	MP4QosQualifierProperty(char* name = NULL, 
++	MP4QosQualifierProperty(const char* name = NULL,
+ 	  u_int8_t tagsStart = 0, u_int8_t tagsEnd = 0,
+ 	  bool mandatory = false, bool onlyOne = false) :
+ 	MP4DescriptorProperty(name, tagsStart, tagsEnd, mandatory, onlyOne) { }
+--- a/common/mp4v2/mp4track.cpp
++++ b/common/mp4v2/mp4track.cpp
+@@ -1360,7 +1360,7 @@
+   }
+ }
+ 
+-MP4Atom* MP4Track::AddAtom(char* parentName, char* childName)
++MP4Atom* MP4Track::AddAtom(const char* parentName, const char* childName)
+ {
+ 	MP4Atom* pChildAtom = MP4Atom::CreateAtom(childName);
+ 
+--- a/common/mp4v2/mp4track.h
++++ b/common/mp4v2/mp4track.h
+@@ -168,7 +168,7 @@
+ 	void UpdateSyncSamples(MP4SampleId sampleId, 
+ 		bool isSyncSample);
+ 
+-	MP4Atom* AddAtom(char* parentName, char* childName);
++	MP4Atom* AddAtom(const char* parentName, const char* childName);
+ 
+ 	void UpdateDurations(MP4Duration duration);
+ 	MP4Duration ToMovieDuration(MP4Duration trackDuration);
+--- a/common/mp4v2/ocidescriptors.cpp
++++ b/common/mp4v2/ocidescriptors.cpp
+@@ -171,7 +171,7 @@
+ 
+ class MP4CreatorTableProperty : public MP4TableProperty {
+ public:
+-	MP4CreatorTableProperty(char* name, MP4Integer8Property* pCountProperty) :
++	MP4CreatorTableProperty(const char* name, MP4Integer8Property* pCountProperty) :
+ 		MP4TableProperty(name, pCountProperty) {
+ 	};
+ protected:
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth_1.1.6.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth_1.1.6.bb
new file mode 100644
index 0000000..54e8697
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth_1.1.6.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Fluidsynth is a software synthesizer"
+HOMEPAGE = "http://www.fluidsynth.org/"
+SECTION = "libs/multimedia"
+LICENSE = "LGPL-2.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e198e9aac94943d0ec29a7dae8c29416"
+
+DEPENDS = "alsa-lib ncurses glib-2.0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BP}/${BP}.tar.gz"
+SRC_URI[md5sum] = "ae5aca6de824b4173667cbd3a310b263"
+SRC_URI[sha256sum] = "50853391d9ebeda9b4db787efb23f98b1e26b7296dd2bb5d0d96b5bccee2171c"
+
+inherit autotools-brokensep pkgconfig lib_package
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)}"
+PACKAGECONFIG[sndfile] = "--enable-libsndfile-support,--disable-libsndfile-support,libsndfile1"
+PACKAGECONFIG[jack] = "--enable-jack-support,--disable-jack-support,jack"
+PACKAGECONFIG[pulseaudio] = "--enable-pulse-support,--disable-pulse-support,pulseaudio"
+PACKAGECONFIG[portaudio] = "--enable-portaudio-support,--disable-portaudio-support,portaudio-v19"
+
+do_configure_prepend () {
+    rm -f ${S}/m4/*
+}
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-aacdec-check-channel-count.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-aacdec-check-channel-count.patch
new file mode 100644
index 0000000..7da0e14
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-aacdec-check-channel-count.patch
@@ -0,0 +1,34 @@
+gst-ffmpeg: aacdec: check channel count
+
+Prevent out of array accesses
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit 96f452ac647dae33c53c242ef3266b65a9beafb6)
+
+Upstream-Status: Backport 
+
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+---
+ libavcodec/aacdec.c |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
+index 239153a..6c17c33 100644
+--- a/gst-libs/ext/libav/libavcodec/aacdec.c
++++ b/gst-libs/ext/libav/libavcodec/aacdec.c
+@@ -914,6 +914,11 @@ static av_cold int aac_decode_init(AVCodecContext *avctx)
+         }
+     }
+ 
++    if (avctx->channels > MAX_CHANNELS) {
++        av_log(avctx, AV_LOG_ERROR, "Too many channels\n");
++        return AVERROR_INVALIDDATA;
++    }
++
+     AAC_INIT_VLC_STATIC( 0, 304);
+     AAC_INIT_VLC_STATIC( 1, 270);
+     AAC_INIT_VLC_STATIC( 2, 550);
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-alac-fix-nb_samples-order-case.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-alac-fix-nb_samples-order-case.patch
new file mode 100644
index 0000000..10ce0f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-alac-fix-nb_samples-order-case.patch
@@ -0,0 +1,30 @@
+From e0884eadf6a15e93142131b695f48776f9a0ac31 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Sat, 10 Nov 2012 17:14:04 +0100
+Subject: [PATCH] alac: fix nb_samples < order case
+
+Upstream-Status: Backport
+
+Commit e0884eadf6a15e93142131b695f48776f9a0ac31 release/1.0
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit fd4f4923cce6a2cbf4f48640b4ac706e614a1594)
+---
+ libavcodec/alac.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libavcodec/alac.c b/libavcodec/alac.c
+index 9cd1737..e8e844a 100644
+--- a/gst-libs/ext/libav/libavcodec/alac.c
++++ b/gst-libs/ext/libav/libavcodec/alac.c
+@@ -278,7 +278,7 @@ static void predictor_decompress_fir_ada
+ 
+     /* read warm-up samples */
+     if (predictor_coef_num > 0)
+-        for (i = 0; i < predictor_coef_num; i++) {
++        for (i = 0; i < predictor_coef_num && i < output_size; i++) {
+             int32_t val;
+ 
+             val = buffer_out[i] + error_buffer[i+1];
+-- 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-alsdec-check-block-length.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-alsdec-check-block-length.patch
new file mode 100644
index 0000000..73980f4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-alsdec-check-block-length.patch
@@ -0,0 +1,61 @@
+From 6df0d3e2916c223dbe4262bf1b876dff1cb3f980 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Wed, 12 Dec 2012 12:28:45 +0100
+Subject: [PATCH] alsdec: check block length
+
+Upstream-Status: Backport
+
+Commit 6df0d3e2916c223dbe4262bf1b876dff1cb3f980 release/1.0
+
+Fix writing over the end
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit 0ceca269b66ec12a23bf0907bd2c220513cdbf16)
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/alsdec.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c
+index 46dd0b4..1095b01 100644
+--- a/gst-libs/ext/libav/libavcodec/alsdec.c
++++ b/gst-libs/ext/libav/libavcodec/alsdec.c
+@@ -552,12 +552,15 @@ static void get_block_sizes(ALSDecContext *ctx, unsigned int *div_blocks,
+ 
+ /** Read the block data for a constant block
+  */
+-static void read_const_block_data(ALSDecContext *ctx, ALSBlockData *bd)
++static int read_const_block_data(ALSDecContext *ctx, ALSBlockData *bd)
+ {
+     ALSSpecificConfig *sconf = &ctx->sconf;
+     AVCodecContext *avctx    = ctx->avctx;
+     GetBitContext *gb        = &ctx->gb;
+ 
++    if (bd->block_length <= 0)
++        return -1;
++
+     *bd->raw_samples = 0;
+     *bd->const_block = get_bits1(gb);    // 1 = constant value, 0 = zero block (silence)
+     bd->js_blocks    = get_bits1(gb);
+@@ -572,6 +575,8 @@ static void read_const_block_data(ALSDecContext *ctx, ALSBlockData *bd)
+ 
+     // ensure constant block decoding by reusing this field
+     *bd->const_block = 1;
++
++    return 0;
+ }
+ 
+ 
+@@ -971,7 +976,8 @@ static int read_block(ALSDecContext *ctx, ALSBlockData *bd)
+         if (read_var_block_data(ctx, bd))
+             return -1;
+     } else {
+-        read_const_block_data(ctx, bd);
++        if (read_const_block_data(ctx, bd) < 0)
++            return -1;
+     }
+ 
+     return 0;
+-- 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-atrac3dec-Check-coding-mode-against-channels.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-atrac3dec-Check-coding-mode-against-channels.patch
new file mode 100644
index 0000000..42cb5f4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-atrac3dec-Check-coding-mode-against-channels.patch
@@ -0,0 +1,37 @@
+From 2502914c5f8eb77659d7c0868396862557a63245 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 9 Nov 2012 13:26:20 +0100
+Subject: [PATCH] atrac3dec: Check coding mode against channels.
+
+Upstream-Status: Backport
+
+Commit 2502914c5f8eb77659d7c0868396862557a63245 release/1.0
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit 13451f5520ce6b0afde861b2285dda659f8d4fb4)
+
+Conflicts:
+
+	libavcodec/atrac3.c
+---
+ libavcodec/atrac3.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/libavcodec/atrac3.c b/libavcodec/atrac3.c
+index 7d076be..1da4c78 100644
+--- a/gst-libs/ext/libav/libavcodec/atrac3.c
++++ b/gst-libs/ext/libav/libavcodec/atrac3.c
+@@ -955,6 +955,11 @@ static av_cold int atrac3_decode_init(AVCodecContext *avctx)
+     }
+     /* Check the extradata. */
+ 
++    if (q->codingMode == JOINT_STEREO && avctx->channels < 2) {
++        av_log(avctx, AV_LOG_ERROR, "Invalid coding mode\n");
++        return AVERROR_INVALIDDATA;
++    }
++
+     if (q->atrac3version != 4) {
+         av_log(avctx,AV_LOG_ERROR,"Version %d != 4.\n",q->atrac3version);
+         return AVERROR_INVALIDDATA;
+-- 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-dsputil-fix-signedness-in-sizeof-comparissio.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-dsputil-fix-signedness-in-sizeof-comparissio.patch
new file mode 100644
index 0000000..31fa51a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-dsputil-fix-signedness-in-sizeof-comparissio.patch
@@ -0,0 +1,40 @@
+From a99aff4e4bbef8e64b51f267cd1769214e1b4e80 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 30 Aug 2013 23:40:47 +0200
+Subject: [PATCH] avcodec/dsputil: fix signedness in sizeof() comparissions
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit 454a11a1c9c686c78aa97954306fb63453299760)
+
+Upstream-Status: Backport
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/dsputil.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c
+index 53dc2eb..6264832 100644
+--- a/gst-libs/ext/libav/libavcodec/dsputil.c
++++ b/gst-libs/ext/libav/libavcodec/dsputil.c
+@@ -1912,7 +1912,7 @@ void ff_set_cmp(DSPContext* c, me_cmp_func *cmp, int type){
+ 
+ static void add_bytes_c(uint8_t *dst, uint8_t *src, int w){
+     long i;
+-    for(i=0; i<=w-sizeof(long); i+=sizeof(long)){
++    for(i=0; i<=w-(int)sizeof(long); i+=sizeof(long)){
+         long a = *(long*)(src+i);
+         long b = *(long*)(dst+i);
+         *(long*)(dst+i) = ((a&pb_7f) + (b&pb_7f)) ^ ((a^b)&pb_80);
+@@ -1937,7 +1937,7 @@ static void diff_bytes_c(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w){
+         }
+     }else
+ #endif
+-    for(i=0; i<=w-sizeof(long); i+=sizeof(long)){
++    for(i=0; i<=w-(int)sizeof(long); i+=sizeof(long)){
+         long a = *(long*)(src1+i);
+         long b = *(long*)(src2+i);
+         *(long*)(dst+i) = ((a|pb_80) - (b&pb_7f)) ^ ((a^b^pb_80)&pb_80);
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-msrle-use-av_image_get_linesize-to-calculate.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-msrle-use-av_image_get_linesize-to-calculate.patch
new file mode 100644
index 0000000..b0a3fb1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-msrle-use-av_image_get_linesize-to-calculate.patch
@@ -0,0 +1,50 @@
+From 573d5fdedae72bf59d8c0b0766fdee171063d36f Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Sun, 16 Feb 2014 23:08:52 +0100
+Subject: [PATCH] avcodec/msrle: use av_image_get_linesize() to calculate the
+ linesize
+
+Upstream-Status: Backport
+
+Commit 573d5fdedae72bf59d8c0b0766fdee171063d36f release/0.9
+
+Fixes out of array access
+Fixes: 14a74a0a2dc67ede543f0e35d834fbbe-asan_heap-oob_49572c_556_cov_215466444_44_001_engine_room.mov
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit c919e1ca2ecfc47d796382973ba0e48b8f6f92a2)
+
+Conflicts:
+
+	libavcodec/msrle.c
+(cherry picked from commit bc1c8ec5e65098fd2ccd8456f667151dfc9cda42)
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/msrle.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/libavcodec/msrle.c b/libavcodec/msrle.c
+index 30159bb..c39ae7b 100644
+--- a/gst-libs/ext/libav/libavcodec/msrle.c
++++ b/gst-libs/ext/libav/libavcodec/msrle.c
+@@ -35,6 +35,7 @@
+ #include "avcodec.h"
+ #include "dsputil.h"
+ #include "msrledec.h"
++#include "libavutil/imgutils.h"
+ 
+ typedef struct MsrleContext {
+     AVCodecContext *avctx;
+@@ -107,7 +108,7 @@ static int msrle_decode_frame(AVCodecContext *avctx,
+ 
+     /* FIXME how to correctly detect RLE ??? */
+     if (avctx->height * istride == avpkt->size) { /* assume uncompressed */
+-        int linesize = avctx->width * avctx->bits_per_coded_sample / 8;
++        int linesize = av_image_get_linesize(avctx->pix_fmt, avctx->width, 0);
+         uint8_t *ptr = s->frame.data[0];
+         uint8_t *buf = avpkt->data + (avctx->height-1)*istride;
+         int i, j;
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-parser-reset-indexes-on-realloc-failure.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-parser-reset-indexes-on-realloc-failure.patch
new file mode 100644
index 0000000..5ff6583
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-parser-reset-indexes-on-realloc-failure.patch
@@ -0,0 +1,50 @@
+gst-ffmpeg: avcodec/parser: reset indexes on realloc failure
+
+Fixes Ticket2982
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit f31011e9abfb2ae75bb32bc44e2c34194c8dc40a)
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+
+Upstream-Status: Backport 
+
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+
+---
+ libavcodec/parser.c |   10 +++++++---
+ 1 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/libavcodec/parser.c b/libavcodec/parser.c
+index 2c6de6e..66eca06 100644
+--- a/gst-libs/ext/libav/libavcodec/parser.c
++++ b/gst-libs/ext/libav/libavcodec/parser.c
+@@ -241,8 +241,10 @@ int ff_combine_frame(ParseContext *pc, int next, const uint8_t **buf, int *buf_s
+     if(next == END_NOT_FOUND){
+         void* new_buffer = av_fast_realloc(pc->buffer, &pc->buffer_size, (*buf_size) + pc->index + FF_INPUT_BUFFER_PADDING_SIZE);
+ 
+-        if(!new_buffer)
++        if(!new_buffer) {
++            pc->index = 0;
+             return AVERROR(ENOMEM);
++        }
+         pc->buffer = new_buffer;
+         memcpy(&pc->buffer[pc->index], *buf, *buf_size);
+         pc->index += *buf_size;
+@@ -255,9 +257,11 @@ int ff_combine_frame(ParseContext *pc, int next, const uint8_t **buf, int *buf_s
+     /* append to buffer */
+     if(pc->index){
+         void* new_buffer = av_fast_realloc(pc->buffer, &pc->buffer_size, next + pc->index + FF_INPUT_BUFFER_PADDING_SIZE);
+-
+-        if(!new_buffer)
++        if(!new_buffer) {
++            pc->overread_index =
++            pc->index = 0;
+             return AVERROR(ENOMEM);
++        }
+         pc->buffer = new_buffer;
+         if (next > -FF_INPUT_BUFFER_PADDING_SIZE)
+             memcpy(&pc->buffer[pc->index], *buf,
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-rpza-Perform-pointer-advance-and-checks-befo.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-rpza-Perform-pointer-advance-and-checks-befo.patch
new file mode 100644
index 0000000..7f6eb48
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-rpza-Perform-pointer-advance-and-checks-befo.patch
@@ -0,0 +1,81 @@
+gst-ffmpeg: avcodec/rpza: Perform pointer advance and checks before
+ using the pointers
+
+Fixes out of array accesses
+Fixes Ticket2850
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit 3819db745da2ac7fb3faacb116788c32f4753f34)
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+
+Upstream-Status: Backport 
+
+Singed-off-by: Yue Tao <yue.tao@windriver.com>
+
+---
+ libavcodec/rpza.c |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/libavcodec/rpza.c b/libavcodec/rpza.c
+index 635b406..f291a95 100644
+--- a/gst-libs/ext/libav/libavcodec/rpza.c
++++ b/gst-libs/ext/libav/libavcodec/rpza.c
+@@ -83,7 +83,7 @@ static void rpza_decode_stream(RpzaContext *s)
+     unsigned short *pixels = (unsigned short *)s->frame.data[0];
+ 
+     int row_ptr = 0;
+-    int pixel_ptr = 0;
++    int pixel_ptr = -4;
+     int block_ptr;
+     int pixel_x, pixel_y;
+     int total_blocks;
+@@ -139,6 +139,7 @@ static void rpza_decode_stream(RpzaContext *s)
+             colorA = AV_RB16 (&s->buf[stream_ptr]);
+             stream_ptr += 2;
+             while (n_blocks--) {
++                ADVANCE_BLOCK()
+                 block_ptr = row_ptr + pixel_ptr;
+                 for (pixel_y = 0; pixel_y < 4; pixel_y++) {
+                     for (pixel_x = 0; pixel_x < 4; pixel_x++){
+@@ -147,7 +148,6 @@ static void rpza_decode_stream(RpzaContext *s)
+                     }
+                     block_ptr += row_inc;
+                 }
+-                ADVANCE_BLOCK();
+             }
+             break;
+ 
+@@ -184,6 +184,7 @@ static void rpza_decode_stream(RpzaContext *s)
+             color4[2] |= ((21 * ta + 11 * tb) >> 5);
+ 
+             while (n_blocks--) {
++                ADVANCE_BLOCK();
+                 block_ptr = row_ptr + pixel_ptr;
+                 for (pixel_y = 0; pixel_y < 4; pixel_y++) {
+                     index = s->buf[stream_ptr++];
+@@ -194,12 +195,12 @@ static void rpza_decode_stream(RpzaContext *s)
+                     }
+                     block_ptr += row_inc;
+                 }
+-                ADVANCE_BLOCK();
+             }
+             break;
+ 
+         /* Fill block with 16 colors */
+         case 0x00:
++            ADVANCE_BLOCK();
+             block_ptr = row_ptr + pixel_ptr;
+             for (pixel_y = 0; pixel_y < 4; pixel_y++) {
+                 for (pixel_x = 0; pixel_x < 4; pixel_x++){
+@@ -213,7 +214,6 @@ static void rpza_decode_stream(RpzaContext *s)
+                 }
+                 block_ptr += row_inc;
+             }
+-            ADVANCE_BLOCK();
+             break;
+ 
+         /* Unknown opcode */
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-smc-fix-off-by-1-error.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-smc-fix-off-by-1-error.patch
new file mode 100644
index 0000000..3ca6fc4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avcodec-smc-fix-off-by-1-error.patch
@@ -0,0 +1,32 @@
+From c17a0ad1df15a94d0b1239adc2afb593bdf0a153 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 3 Oct 2014 22:50:45 +0200
+Subject: [PATCH 1/2] avcodec/smc: fix off by 1 error
+
+Upstream-Status: Backport
+
+Fixes out of array access
+Fixes: asan_heap-oob_1685bf0_5_asan_heap-oob_1f35116_430_smc.mov
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/smc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gst-libs/ext/libav/libavcodec/smc.c b/gst-libs/ext/libav/libavcodec/smc.c
+index 3cd5e53..dec9f71 100644
+--- a/gst-libs/ext/libav/libavcodec/smc.c
++++ b/gst-libs/ext/libav/libavcodec/smc.c
+@@ -69,7 +69,7 @@ typedef struct SmcContext {
+         row_ptr += stride * 4; \
+     } \
+     total_blocks--; \
+-    if (total_blocks < 0) \
++    if (total_blocks < 0 + !!n_blocks) \
+     { \
+         av_log(s->avctx, AV_LOG_INFO, "warning: block counter just went negative (this should not happen)\n"); \
+         return; \
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avformat-mpegtsenc-Check-data-array-size-in-mpegts_w.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avformat-mpegtsenc-Check-data-array-size-in-mpegts_w.patch
new file mode 100644
index 0000000..68bb66e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-avformat-mpegtsenc-Check-data-array-size-in-mpegts_w.patch
@@ -0,0 +1,69 @@
+From 12770701856a05b6b3cd706f708f8e9a4e8a1336 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Thu, 13 Feb 2014 13:59:51 +0100
+Subject: [PATCH] avformat/mpegtsenc: Check data array size in
+ mpegts_write_pmt()
+
+Upstream-Status: Backport
+
+COmmit 12770701856a05b6b3cd706f708f8e9a4e8a1336 release/0.11
+
+Prevents out of array writes
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit 842b6c14bcfc1c5da1a2d288fd65386eb8c158ad)
+
+Conflicts:
+
+	libavformat/mpegtsenc.c
+(cherry picked from commit e87de3f50b765134588d0b048c32ed4b8acc16fb)
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavformat/mpegtsenc.c |    9 +++++++--
+ 1 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
+index 793e205..a12d19f 100644
+--- a/gst-libs/ext/libav/libavformat/mpegtsenc.c
++++ b/gst-libs/ext/libav/libavformat/mpegtsenc.c
+@@ -240,7 +240,7 @@ static void mpegts_write_pat(AVFormatContext *s)
+                           data, q - data);
+ }
+ 
+-static void mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
++static int mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
+ {
+     //    MpegTSWrite *ts = s->priv_data;
+     uint8_t data[1012], *q, *desc_length_ptr, *program_info_length_ptr;
+@@ -293,6 +293,10 @@ static void mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
+             stream_type = STREAM_TYPE_PRIVATE_DATA;
+             break;
+         }
++
++        if (q - data > sizeof(data) - 32)
++            return AVERROR(EINVAL);
++
+         *q++ = stream_type;
+         put16(&q, 0xe000 | ts_st->pid);
+         desc_length_ptr = q;
+@@ -324,7 +328,7 @@ static void mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
+                 len_ptr = q++;
+                 *len_ptr = 0;
+ 
+-                for (p = lang->value; next && *len_ptr < 255 / 4 * 4; p = next + 1) {
++                for (p = lang->value; next && *len_ptr < 255 / 4 * 4 && q - data < sizeof(data) - 4; p = next + 1) {
+                     next = strchr(p, ',');
+                     if (strlen(p) != 3 && (!next || next != p + 3))
+                         continue; /* not a 3-letter code */
+@@ -386,6 +390,7 @@ static void mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
+     }
+     mpegts_write_section1(&service->pmt, PMT_TID, service->sid, 0, 0, 0,
+                           data, q - data);
++    return 0;
+ }
+ 
+ /* NOTE: str == NULL is accepted for an empty string */
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-eamad-fix-out-of-array-accesses.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-eamad-fix-out-of-array-accesses.patch
new file mode 100644
index 0000000..f45e3fd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-eamad-fix-out-of-array-accesses.patch
@@ -0,0 +1,29 @@
+From 63ac64864c6e0e84355aa3caa5b92208997a9a8d Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Sat, 17 Nov 2012 16:26:55 +0100
+Subject: [PATCH] eamad: fix out of array accesses
+
+Upstream-Status: Backport
+
+Commit 63ac64864c6e0e84355aa3caa5b92208997a9a8d release/1.1
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/eamad.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libavcodec/eamad.c b/libavcodec/eamad.c
+index 2805195..e38650e 100644
+--- a/gst-libs/ext/libav/libavcodec/eamad.c
++++ b/gst-libs/ext/libav/libavcodec/eamad.c
+@@ -237,7 +237,7 @@ static int decode_frame(AVCodecContext *avctx,
+     int chunk_type;
+     int inter;
+ 
+-    if (buf_size < 17) {
++    if (buf_size < 26) {
+         av_log(avctx, AV_LOG_ERROR, "Input buffer too small\n");
+         *data_size = 0;
+         return -1;
+-- 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-error-concealment-initialize-block-index.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-error-concealment-initialize-block-index.patch
new file mode 100644
index 0000000..e0e4239
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-error-concealment-initialize-block-index.patch
@@ -0,0 +1,29 @@
+gst-ffmpeg: error concealment: initialize block index.
+
+Fixes CVE-2011-3941 (out of bounds write)
+
+Upstream-Status: Backport 
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/error_resilience.c |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/libavcodec/error_resilience.c b/libavcodec/error_resilience.c
+index 8bb5d0c..d55c000 100644
+--- a/gst-libs/ext/libav/libavcodec/error_resilience.c
++++ b/gst-libs/ext/libav/libavcodec/error_resilience.c
+@@ -45,6 +45,9 @@ static void decode_mb(MpegEncContext *s, int ref){
+     s->dest[1] = s->current_picture.data[1] + (s->mb_y * (16>>s->chroma_y_shift) * s->uvlinesize) + s->mb_x * (16>>s->chroma_x_shift);
+     s->dest[2] = s->current_picture.data[2] + (s->mb_y * (16>>s->chroma_y_shift) * s->uvlinesize) + s->mb_x * (16>>s->chroma_x_shift);
+ 
++    ff_init_block_index(s);
++    ff_update_block_index(s);
++
+     if(CONFIG_H264_DECODER && s->codec_id == CODEC_ID_H264){
+         H264Context *h= (void*)s;
+         h->mb_xy= s->mb_x + s->mb_y*s->mb_stride;
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-error_concealment-Check-that-the-picture-is-not-in-a.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-error_concealment-Check-that-the-picture-is-not-in-a.patch
new file mode 100644
index 0000000..8eef6e9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-error_concealment-Check-that-the-picture-is-not-in-a.patch
@@ -0,0 +1,37 @@
+gst-ffmpeg: error_concealment: Check that the picture is not in a half
+
+Fixes state becoming inconsistent
+Fixes a null pointer dereference
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit 23318a57358358e7a4dc551e830e4503f0638cfe)
+
+Upstream-Status: Backport 
+
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+
+---
+ libavcodec/error_resilience.c |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/libavcodec/error_resilience.c b/libavcodec/error_resilience.c
+index 01f7424..2b6bc42 100644
+--- a/gst-libs/ext/libav/libavcodec/error_resilience.c
++++ b/gst-libs/ext/libav/libavcodec/error_resilience.c
+@@ -793,6 +793,12 @@ void ff_er_frame_end(MpegEncContext *s){
+        s->picture_structure != PICT_FRAME || // we dont support ER of field pictures yet, though it should not crash if enabled
+        s->error_count==3*s->mb_width*(s->avctx->skip_top + s->avctx->skip_bottom)) return;
+ 
++    if (   s->picture_structure == PICT_FRAME
++        && s->current_picture.linesize[0] != s->current_picture_ptr->linesize[0]) {
++        av_log(s->avctx, AV_LOG_ERROR, "Error concealment not possible, frame not fully initialized\n");
++        return;
++    }
++
+     if(s->current_picture.motion_val[0] == NULL){
+         av_log(s->avctx, AV_LOG_ERROR, "Warning MVs not available\n");
+ 
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-ffserver-set-oformat.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-ffserver-set-oformat.patch
new file mode 100644
index 0000000..80325db
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-ffserver-set-oformat.patch
@@ -0,0 +1,36 @@
+gst-ffmpeg: ffserver: set oformat
+
+Fix Ticket1986
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit cbe43e62c9ac7d4aefdc13476f6f691bd626525f)
+
+Upstream-Status: Backport 
+
+---
+ ffserver.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/ffserver.c b/ffserver.c
+index 4044d0f..8740140 100644
+--- a/gst-libs/ext/libav/ffserver.c
++++ b/gst-libs/ext/libav/ffserver.c
+@@ -2937,12 +2937,14 @@ static int prepare_sdp_description(FFStream *stream, uint8_t **pbuffer,
+ {
+     AVFormatContext *avc;
+     AVStream *avs = NULL;
++    AVOutputFormat *rtp_format = av_guess_format("rtp", NULL, NULL);
+     int i;
+ 
+     avc =  avformat_alloc_context();
+-    if (avc == NULL) {
++    if (avc == NULL || !rtp_format) {
+         return -1;
+     }
++    avc->oformat = rtp_format;
+     av_dict_set(&avc->metadata, "title",
+                stream->title[0] ? stream->title : "No Title", 0);
+     avc->nb_streams = stream->nb_streams;
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264-correct-ref-count-check-and-limit-fix-out-of-ar.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264-correct-ref-count-check-and-limit-fix-out-of-ar.patch
new file mode 100644
index 0000000..d4f55b2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264-correct-ref-count-check-and-limit-fix-out-of-ar.patch
@@ -0,0 +1,29 @@
+From d6c184880ee2e09fd68c0ae217173832cee5afc1 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Sun, 18 Nov 2012 16:29:04 +0100
+Subject: [PATCH] h264: correct ref count check and limit, fix out of array
+ accesses.
+
+Upstream-Status: Backport
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/h264.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libavcodec/h264.c b/libavcodec/h264.c
+index da43f1e..32cede5 100644
+--- a/gst-libs/ext/libav/libavcodec/h264.c
++++ b/gst-libs/ext/libav/libavcodec/h264.c
+@@ -2870,6 +2870,9 @@ static int decode_slice_header(H264Conte
+             h->ref_count[0]= get_ue_golomb(&s->gb) + 1;
+             if(h->slice_type_nos==AV_PICTURE_TYPE_B)
+                 h->ref_count[1]= get_ue_golomb(&s->gb) + 1;
++            else
++                // full range is spec-ok in this case, even for frames
++                h->ref_count[1] = 1;
+ 
+             if(h->ref_count[0]-1 > 32-1 || h->ref_count[1]-1 > 32-1){
+                 av_log(h->s.avctx, AV_LOG_ERROR, "reference overflow\n");
+-- 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264-set-parameters-from-SPS-whenever-it-changes.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264-set-parameters-from-SPS-whenever-it-changes.patch
new file mode 100644
index 0000000..05a9de3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264-set-parameters-from-SPS-whenever-it-changes.patch
@@ -0,0 +1,145 @@
+gst-ffmpeg: h264: set parameters from SPS whenever it changes
+    
+Fixes a crash in the fuzzed sample sample_varPAR.avi_s26638 with
+alternating bit depths.
+
+Upstream-Status: Backport
+
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+
+diff --git a/gst-libs/ext/libav/libavcodec/h264.c.old b/gst-libs/ext/libav/libavcodec/h264.c
+index 3621f41..718906a 100644
+--- a/gst-libs/ext/libav/libavcodec/h264.c.old
++++ b/gst-libs/ext/libav/libavcodec/h264.c
+@@ -2491,6 +2491,34 @@ int ff_h264_get_profile(SPS *sps)
+     return profile;
+ }
+ 
++static int h264_set_parameter_from_sps(H264Context *h)
++{
++    MpegEncContext *s = &h->s;
++    AVCodecContext * avctx= s->avctx;
++
++    if (s->flags& CODEC_FLAG_LOW_DELAY ||
++        (h->sps.bitstream_restriction_flag && !h->sps.num_reorder_frames))
++        s->low_delay=1;
++
++    if(avctx->has_b_frames < 2)
++        avctx->has_b_frames= !s->low_delay;
++
++    if (avctx->bits_per_raw_sample != h->sps.bit_depth_luma) {
++        if (h->sps.bit_depth_luma >= 8 && h->sps.bit_depth_luma <= 10) {
++            avctx->bits_per_raw_sample = h->sps.bit_depth_luma;
++            h->pixel_shift = h->sps.bit_depth_luma > 8;
++
++            ff_h264dsp_init(&h->h264dsp, h->sps.bit_depth_luma);
++            ff_h264_pred_init(&h->hpc, s->codec_id, h->sps.bit_depth_luma);
++            dsputil_init(&s->dsp, s->avctx);
++        } else {
++            av_log(avctx, AV_LOG_DEBUG, "Unsupported bit depth: %d\n", h->sps.bit_depth_luma);
++            return -1;
++        }
++    }
++    return 0;
++}
++
+ /**
+  * decodes a slice header.
+  * This will also call MPV_common_init() and frame_start() as needed.
+@@ -2505,7 +2533,7 @@ static int decode_slice_header(H264Context *h, H264Context *h0){
+     MpegEncContext * const s0 = &h0->s;
+     unsigned int first_mb_in_slice;
+     unsigned int pps_id;
+-    int num_ref_idx_active_override_flag;
++    int num_ref_idx_active_override_flag, ret;
+     unsigned int slice_type, tmp, i, j;
+     int default_ref_list_done = 0;
+     int last_pic_structure;
+@@ -2569,7 +2597,17 @@ static int decode_slice_header(H264Context *h, H264Context *h0){
+         av_log(h->s.avctx, AV_LOG_ERROR, "non-existing SPS %u referenced\n", h->pps.sps_id);
+         return -1;
+     }
+-    h->sps = *h0->sps_buffers[h->pps.sps_id];
++
++    if (h->pps.sps_id != h->current_sps_id ||
++        h0->sps_buffers[h->pps.sps_id]->new) {
++        h0->sps_buffers[h->pps.sps_id]->new = 0;
++
++        h->current_sps_id = h->pps.sps_id;
++        h->sps            = *h0->sps_buffers[h->pps.sps_id];
++
++        if ((ret = h264_set_parameter_from_sps(h)) < 0)
++            return ret;
++    }
+ 
+     s->avctx->profile = ff_h264_get_profile(&h->sps);
+     s->avctx->level   = h->sps.level_idc;
+@@ -3811,26 +3811,8 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){
+         case NAL_SPS:
+             init_get_bits(&s->gb, ptr, bit_length);
+             ff_h264_decode_seq_parameter_set(h);
+-
+-            if (s->flags& CODEC_FLAG_LOW_DELAY ||
+-                (h->sps.bitstream_restriction_flag && !h->sps.num_reorder_frames))
+-                s->low_delay=1;
+-
+-            if(avctx->has_b_frames < 2)
+-                avctx->has_b_frames= !s->low_delay;
+-
+-            if (avctx->bits_per_raw_sample != h->sps.bit_depth_luma) {
+-                if (h->sps.bit_depth_luma >= 8 && h->sps.bit_depth_luma <= 10) {
+-                    avctx->bits_per_raw_sample = h->sps.bit_depth_luma;
+-                    h->pixel_shift = h->sps.bit_depth_luma > 8;
+-
+-                    ff_h264dsp_init(&h->h264dsp, h->sps.bit_depth_luma);
+-                    ff_h264_pred_init(&h->hpc, s->codec_id, h->sps.bit_depth_luma);
+-                    dsputil_init(&s->dsp, s->avctx);
+-                } else {
+-                    av_log(avctx, AV_LOG_DEBUG, "Unsupported bit depth: %d\n", h->sps.bit_depth_luma);
+-                    return -1;
+-                }
++            if (h264_set_parameter_from_sps(h) < 0) {
++                return -1;
+             }
+             break;
+         case NAL_PPS:
+diff --git a/gst-libs/ext/libav/libavcodec/h264.h.old b/gst-libs/ext/libav/libavcodec/h264.h
+index e3cc815..b77ad98 100644
+--- a/gst-libs/ext/libav/libavcodec/h264.h.old
++++ b/gst-libs/ext/libav/libavcodec/h264.h
+@@ -202,6 +202,7 @@ typedef struct SPS{
+     int bit_depth_chroma;              ///< bit_depth_chroma_minus8 + 8
+     int residual_color_transform_flag; ///< residual_colour_transform_flag
+     int constraint_set_flags;          ///< constraint_set[0-3]_flag
++    int new;                              ///< flag to keep track if the decoder context needs re-init due to changed SPS
+ }SPS;
+ 
+ /**
+@@ -333,6 +334,7 @@ typedef struct H264Context{
+     int emu_edge_width;
+     int emu_edge_height;
+ 
++    unsigned current_sps_id; ///< id of the current SPS
+     SPS sps; ///< current sps
+ 
+     /**
+diff --git a/gst-libs/ext/libav/libavcodec/h264_ps.c.old b/gst-libs/ext/libav/libavcodec/h264_ps.c
+index 7491807..0929098 100644
+--- a/gst-libs/ext/libav/libavcodec/h264_ps.c.old
++++ b/gst-libs/ext/libav/libavcodec/h264_ps.c
+@@ -438,10 +438,13 @@ int ff_h264_decode_seq_parameter_set(H264Context *h){
+                sps->timing_info_present_flag ? sps->time_scale : 0
+                );
+     }
++    sps->new = 1;
+ 
+     av_free(h->sps_buffers[sps_id]);
+-    h->sps_buffers[sps_id]= sps;
+-    h->sps = *sps;
++    h->sps_buffers[sps_id] = sps;
++    h->sps                 = *sps;
++    h->current_sps_id      = sps_id;
++
+     return 0;
+ fail:
+     av_free(sps);
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264-skip-error-concealment-when-SPS-and-slices-are-.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264-skip-error-concealment-when-SPS-and-slices-are-.patch
new file mode 100644
index 0000000..5d45c1a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264-skip-error-concealment-when-SPS-and-slices-are-.patch
@@ -0,0 +1,33 @@
+gst-ffmpeg: h264: skip error concealment when SPS and slices are
+ mismatching
+
+Fixes out of array accesses
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit 695af8eed642ff0104834495652d1ee784a4c14d)
+
+Upstream-Status: Backport
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+---
+ libavcodec/h264.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/libavcodec/h264.c b/libavcodec/h264.c
+index da144db..0aab4e7 100644
+--- a/gst-libs/ext/libav/libavcodec/h264.c
++++ b/gst-libs/ext/libav/libavcodec/h264.c
+@@ -2351,7 +2351,7 @@ static int field_end(H264Context *h, int in_setup)
+      * past end by one (callers fault) and resync_mb_y != 0
+      * causes problems for the first MB line, too.
+      */
+-    if (!FIELD_PICTURE)
++    if (!FIELD_PICTURE && h->current_slice && !h->sps.new)
+         ff_er_frame_end(s);
+ 
+     ff_MPV_frame_end(s);
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264_sei-Fix-infinite-loop.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264_sei-Fix-infinite-loop.patch
new file mode 100644
index 0000000..1e62b50
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-h264_sei-Fix-infinite-loop.patch
@@ -0,0 +1,39 @@
+gst-ffmpeg: h264_sei: Fix infinite loop.
+
+Fixsot yet fixed parts of CVE-2011-3946.
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+
+Upstream-Status: Backport 
+
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+
+---
+ libavcodec/h264_sei.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+
+diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
+index 374e53d..80d70e5 100644
+--- a/gst-libs/ext/libav/libavcodec/h264_sei.c
++++ b/gst-libs/ext/libav/libavcodec/h264_sei.c
+@@ -169,11 +169,15 @@ int ff_h264_decode_sei(H264Context *h){
+ 
+         type=0;
+         do{
++            if (get_bits_left(&s->gb) < 8)
++                return -1;
+             type+= show_bits(&s->gb, 8);
+         }while(get_bits(&s->gb, 8) == 255);
+ 
+         size=0;
+         do{
++            if (get_bits_left(&s->gb) < 8)
++                return -1;
+             size+= show_bits(&s->gb, 8);
+         }while(get_bits(&s->gb, 8) == 255);
+ 
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-huffyuvdec-Check-init_vlc-return-codes.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-huffyuvdec-Check-init_vlc-return-codes.patch
new file mode 100644
index 0000000..e859e44
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-huffyuvdec-Check-init_vlc-return-codes.patch
@@ -0,0 +1,87 @@
+From b666debffec1fcbb19ef377635a53b9a58bca8a4 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Tue, 29 Jan 2013 18:29:41 +0100
+Subject: [PATCH] huffyuvdec: Check init_vlc() return codes.
+
+Upstream-Status: Backport
+
+Commit b666debffec1fcbb19ef377635a53b9a58bca8a4 release/1.0
+
+Prevents out of array writes
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit f67a0d115254461649470452058fa3c28c0df294)
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/huffyuv.c | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/libavcodec/huffyuv.c b/libavcodec/huffyuv.c
+index 58da789..993e524 100644
+--- a/gst-libs/ext/libav/libavcodec/huffyuv.c
++++ b/gst-libs/ext/libav/libavcodec/huffyuv.c
+@@ -33,6 +33,7 @@
+ #include "put_bits.h"
+ #include "dsputil.h"
+ #include "thread.h"
++#include "libavutil/avassert.h"
+ 
+ #define VLC_BITS 11
+ 
+@@ -287,6 +287,7 @@ static void generate_joint_tables(HYuvCo
+                     int len1 = s->len[p][u];
+                     if (len1 > limit || !len1)
+                         continue;
++                    av_assert0(i < (1 << VLC_BITS));
+                     len[i] = len0 + len1;
+                     bits[i] = (s->bits[0][y] << len1) + s->bits[p][u];
+                     symbols[i] = (y<<8) + u;
+@@ -320,6 +321,7 @@ static void generate_joint_tables(HYuvCo
+                     int len2 = s->len[2][r&255];
+                     if (len2 > limit1 || !len2)
+                         continue;
++                    av_assert0(i < (1 << VLC_BITS));
+                     len[i] = len0 + len1 + len2;
+                     bits[i] = (code << len2) + s->bits[2][r&255];
+                     if(s->decorrelate){
+@@ -343,6 +345,7 @@ static void generate_joint_tables(HYuvCo
+ static int read_huffman_tables(HYuvContext *s, const uint8_t *src, int length){
+     GetBitContext gb;
+     int i;
++    int ret;
+ 
+     init_get_bits(&gb, src, length*8);
+ 
+@@ -353,7 +356,9 @@ static int read_huffman_tables(HYuvConte
+             return -1;
+         }
+         free_vlc(&s->vlc[i]);
+-        init_vlc(&s->vlc[i], VLC_BITS, 256, s->len[i], 1, 1, s->bits[i], 4, 4, 0);
++        if ((ret = init_vlc(&s->vlc[i], VLC_BITS, 256, s->len[i], 1, 1,
++                           s->bits[i], 4, 4, 0)) < 0)
++            return ret;
+     }
+ 
+     generate_joint_tables(s);
+@@ -365,6 +370,7 @@ static int read_old_huffman_tables(HYuvC
+ #if 1
+     GetBitContext gb;
+     int i;
++    int ret;
+ 
+     init_get_bits(&gb, classic_shift_luma, sizeof(classic_shift_luma)*8);
+     if(read_len_table(s->len[0], &gb)<0)
+@@ -385,7 +391,9 @@ static int read_old_huffman_tables(HYuvC
+ 
+     for(i=0; i<3; i++){
+         free_vlc(&s->vlc[i]);
+-        init_vlc(&s->vlc[i], VLC_BITS, 256, s->len[i], 1, 1, s->bits[i], 4, 4, 0);
++        if ((ret = init_vlc(&s->vlc[i], VLC_BITS, 256, s->len[i], 1, 1,
++                            s->bits[i], 4, 4, 0)) < 0)
++            return ret;
+     }
+ 
+     generate_joint_tables(s);
+-- 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-huffyuvdec-Skip-len-0-cases.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-huffyuvdec-Skip-len-0-cases.patch
new file mode 100644
index 0000000..94bf4b6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-huffyuvdec-Skip-len-0-cases.patch
@@ -0,0 +1,61 @@
+From db0f7f7394e1f994ed38db043f78ed0f10bde0da Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Tue, 29 Jan 2013 19:22:33 +0100
+Subject: [PATCH] huffyuvdec: Skip len==0 cases
+
+Upstream-Status: Backport
+
+Commit db0f7f7394e1f994ed38db043f78ed0f10bde0da release/1.0
+
+Fixes vlc decoding for hypothetical files that would contain such cases.
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit 0dfc01c2bbf4b71bb56201bc4a393321e15d1b31)
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/huffyuv.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/libavcodec/huffyuv.c b/libavcodec/huffyuv.c
+index 993e524..72ed351 100644
+--- a/gst-libs/ext/libav/libavcodec/huffyuv.c
++++ b/gst-libs/ext/libav/libavcodec/huffyuv.c
+@@ -281,11 +281,11 @@ static void generate_joint_tables(HYuvCo
+             for(i=y=0; y<256; y++){
+                 int len0 = s->len[0][y];
+                 int limit = VLC_BITS - len0;
+-                if(limit <= 0)
++                if(limit <= 0 || !len0)
+                     continue;
+                 for(u=0; u<256; u++){
+                     int len1 = s->len[p][u];
+-                    if(len1 > limit)
++                    if (len1 > limit || !len1)
+                         continue;
+                     len[i] = len0 + len1;
+                     bits[i] = (s->bits[0][y] << len1) + s->bits[p][u];
+@@ -308,17 +308,17 @@ static void generate_joint_tables(HYuvCo
+         for(i=0, g=-16; g<16; g++){
+             int len0 = s->len[p0][g&255];
+             int limit0 = VLC_BITS - len0;
+-            if(limit0 < 2)
++            if (limit0 < 2 || !len0)
+                 continue;
+             for(b=-16; b<16; b++){
+                 int len1 = s->len[p1][b&255];
+                 int limit1 = limit0 - len1;
+-                if(limit1 < 1)
++                if (limit1 < 1 || !len1)
+                     continue;
+                 code = (s->bits[p0][g&255] << len1) + s->bits[p1][b&255];
+                 for(r=-16; r<16; r++){
+                     int len2 = s->len[2][r&255];
+-                    if(len2 > limit1)
++                    if (len2 > limit1 || !len2)
+                         continue;
+                     len[i] = len0 + len1 + len2;
+                     bits[i] = (code << len2) + s->bits[2][r&255];
+-- 
+1.8.5.2.233.g932f7e4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-lavf-compute-probe-buffer-size-more-reliably.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-lavf-compute-probe-buffer-size-more-reliably.patch
new file mode 100644
index 0000000..ea4aa22
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-lavf-compute-probe-buffer-size-more-reliably.patch
@@ -0,0 +1,45 @@
+gst-ffmpeg: lavf: compute probe buffer size more reliably.
+
+The previous code computes the offset by reversing the growth
+of the allocated buffer size: it is complex and did lead to
+inconsistencies when the size limit is reached.
+
+Fix trac ticket #1991.
+(cherry picked from commit 03847eb8259291b4ff1bd840bd779d0699d71f96)
+
+Conflicts:
+	libavformat/utils.c
+
+Upstream-Status: Backport
+
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+
+---
+ libavformat/utils.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libavformat/utils.c b/libavformat/utils.c
+index 7940037..be73c4a 100644
+--- a/gst-libs/ext/libav/libavformat/utils.c
++++ b/gst-libs/ext/libav/libavformat/utils.c
+@@ -459,7 +459,7 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
+ {
+     AVProbeData pd = { filename ? filename : "", NULL, -offset };
+     unsigned char *buf = NULL;
+-    int ret = 0, probe_size;
++    int ret = 0, probe_size, buf_offset = 0;
+ 
+     if (!max_probe_size) {
+         max_probe_size = PROBE_BUF_MAX;
+@@ -499,7 +499,7 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
+             score = 0;
+             ret = 0;            /* error was end of file, nothing read */
+         }
+-        pd.buf_size += ret;
++        pd.buf_size = buf_offset += ret;
+         pd.buf = &buf[offset];
+ 
+         memset(pd.buf + pd.buf_size, 0, AVPROBE_PADDING_SIZE);
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-mjpegdec-check-SE.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-mjpegdec-check-SE.patch
new file mode 100644
index 0000000..d90bafa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-mjpegdec-check-SE.patch
@@ -0,0 +1,32 @@
+From 1f41cffe1e3e79620f587545bdfcbd7e6e68ed29 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Sun, 11 Nov 2012 00:01:24 +0100
+Subject: [PATCH] mjpegdec: check SE.
+
+Upstream-Status: Backport
+
+Commit 1f41cffe1e3e79620f587545bdfcbd7e6e68ed29 release/1.1
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/mjpegdec.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
+index 6b5266d..0a71a6f 100644
+--- a/gst-libs/ext/libav/libavcodec/mjpegdec.c
++++ b/gst-libs/ext/libav/libavcodec/mjpegdec.c
+@@ -905,6 +905,11 @@ static int mjpeg_decode_scan_progressive
+     int16_t *quant_matrix = s->quant_matrixes[ s->quant_index[c] ];
+     GetBitContext mb_bitmask_gb;
+ 
++    if (se > 63) {
++        av_log(s->avctx, AV_LOG_ERROR, "SE %d is too large\n", se);
++        return AVERROR_INVALIDDATA;
++    }
++
+     if (mb_bitmask) {
+         init_get_bits(&mb_bitmask_gb, mb_bitmask, s->mb_width*s->mb_height);
+     }
+-- 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-pgssubdec-check-RLE-size-before-copying.-Fix-out-of-.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-pgssubdec-check-RLE-size-before-copying.-Fix-out-of-.patch
new file mode 100644
index 0000000..1041347
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-pgssubdec-check-RLE-size-before-copying.-Fix-out-of-.patch
@@ -0,0 +1,34 @@
+From 28bf685bfc6d0c744369cdf367f61a78d80d0b01 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Thu, 15 Nov 2012 16:41:28 +0100
+Subject: [PATCH] pgssubdec: check RLE size before copying. Fix out of array
+ accesses
+
+Upstream-Status: Backport
+
+Commit 28bf685bfc6d0c744369cdf367f61a78d80d0b01 release/1.1
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit c0d68be555f5858703383040e04fcd6529777061)
+---
+ libavcodec/pgssubdec.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/libavcodec/pgssubdec.c b/libavcodec/pgssubdec.c
+index 728f178..26a3c2a 100644
+--- a/gst-libs/ext/libav/libavcodec/pgssubdec.c
++++ b/gst-libs/ext/libav/libavcodec/pgssubdec.c
+@@ -202,6 +202,11 @@ static int parse_picture_segment(AVCodec
+         return -1;
+     }
+ 
++    if (buf_size > rle_bitmap_len) {
++        av_log(avctx, AV_LOG_ERROR, "too much RLE data\n");
++        return AVERROR_INVALIDDATA;
++    }
++
+     ctx->picture.w = width;
+     ctx->picture.h = height;
+ 
+-- 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-pngdec-filter-dont-access-out-of-array-elements-at-t.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-pngdec-filter-dont-access-out-of-array-elements-at-t.patch
new file mode 100644
index 0000000..1e5fb7d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-pngdec-filter-dont-access-out-of-array-elements-at-t.patch
@@ -0,0 +1,44 @@
+gst-ffmpeg: pngdec/filter: dont access out of array elements at the end
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+
+Upstream-Status: Backport 
+
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+---
+ libavcodec/pngdec.c |   12 ++++--------
+ 1 files changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
+index 97c0ad1..193e35e 100644
+--- a/gst-libs/ext/libav/libavcodec/pngdec.c
++++ b/gst-libs/ext/libav/libavcodec/pngdec.c
+@@ -190,7 +190,7 @@ void ff_add_png_paeth_prediction(uint8_t *dst, uint8_t *src, uint8_t *top, int w
+     if(bpp >= 2) g = dst[1];\
+     if(bpp >= 3) b = dst[2];\
+     if(bpp >= 4) a = dst[3];\
+-    for(; i < size; i+=bpp) {\
++    for(; i <= size - bpp; i+=bpp) {\
+         dst[i+0] = r = op(r, src[i+0], last[i+0]);\
+         if(bpp == 1) continue;\
+         dst[i+1] = g = op(g, src[i+1], last[i+1]);\
+@@ -206,13 +206,9 @@ void ff_add_png_paeth_prediction(uint8_t *dst, uint8_t *src, uint8_t *top, int w
+     else if(bpp == 2) UNROLL1(2, op)\
+     else if(bpp == 3) UNROLL1(3, op)\
+     else if(bpp == 4) UNROLL1(4, op)\
+-    else {\
+-        for (; i < size; i += bpp) {\
+-            int j;\
+-            for (j = 0; j < bpp; j++)\
+-                dst[i+j] = op(dst[i+j-bpp], src[i+j], last[i+j]);\
+-        }\
+-    }
++    for (; i < size; i++) {\
++        dst[i] = op(dst[i-bpp], src[i], last[i]);\
++    }\
+ 
+ /* NOTE: 'dst' can be equal to 'last' */
+ static void png_filter_row(PNGDSPContext *dsp, uint8_t *dst, int filter_type,
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-qdm2-check-array-index-before-use-fix-out-of-array-a.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-qdm2-check-array-index-before-use-fix-out-of-array-a.patch
new file mode 100644
index 0000000..8c94232
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-qdm2-check-array-index-before-use-fix-out-of-array-a.patch
@@ -0,0 +1,30 @@
+gst-ffmpeg: qdm2: check array index before use, fix out of array
+ accesses
+
+Upstream-Status: Backport 
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/qdm2.c |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/libavcodec/qdm2.c b/libavcodec/qdm2.c
+index 4cf4b2f..1dfb8d5 100644
+--- a/gst-libs/ext/libav/libavcodec/qdm2.c
++++ b/gst-libs/ext/libav/libavcodec/qdm2.c
+@@ -1257,6 +1257,11 @@ static void qdm2_decode_super_block (QDM2Context *q)
+     for (i = 0; packet_bytes > 0; i++) {
+         int j;
+ 
++        if (i>=FF_ARRAY_ELEMS(q->sub_packet_list_A)) {
++            SAMPLES_NEEDED_2("too many packet bytes");
++            return;
++        }
++
+         q->sub_packet_list_A[i].next = NULL;
+ 
+         if (i > 0) {
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-qdm2dec-fix-buffer-overflow.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-qdm2dec-fix-buffer-overflow.patch
new file mode 100644
index 0000000..43ffc03
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-qdm2dec-fix-buffer-overflow.patch
@@ -0,0 +1,58 @@
+gst-ffmpeg: qdm2dec: fix buffer overflow. Fixes NGS00144
+
+This also adds a few lines of code from master that are needed for this fix.
+
+Thanks to Phillip for suggestions to improve the patch.
+Found-by: Phillip Langlois
+
+Upstream-Status: Backport 
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/qdm2.c |    9 +++++++--
+ 1 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/libavcodec/qdm2.c b/libavcodec/qdm2.c
+index 3aa9e5b..e000df8 100644
+--- a/gst-libs/ext/libav/libavcodec/qdm2.c
++++ b/gst-libs/ext/libav/libavcodec/qdm2.c
+@@ -76,6 +76,7 @@ do { \
+ #define SAMPLES_NEEDED_2(why) \
+      av_log (NULL,AV_LOG_INFO,"This file triggers some missing code. Please contact the developers.\nPosition: %s\n",why);
+ 
++#define QDM2_MAX_FRAME_SIZE 512
+ 
+ typedef int8_t sb_int8_array[2][30][64];
+ 
+@@ -168,7 +169,7 @@ typedef struct {
+     /// I/O data
+     const uint8_t *compressed_data;
+     int compressed_size;
+-    float output_buffer[1024];
++    float output_buffer[QDM2_MAX_FRAME_SIZE * MPA_MAX_CHANNELS * 2];
+ 
+     /// Synthesis filter
+     MPADSPContext mpadsp;
+@@ -1819,6 +1820,9 @@ static av_cold int qdm2_decode_init(AVCodecContext *avctx)
+     s->group_order = av_log2(s->group_size) + 1;
+     s->frame_size = s->group_size / 16; // 16 iterations per super block
+ 
++    if (s->frame_size > QDM2_MAX_FRAME_SIZE)
++        return AVERROR_INVALIDDATA;
++
+     s->sub_sampling = s->fft_order - 7;
+     s->frequency_range = 255 / (1 << (2 - s->sub_sampling));
+ 
+@@ -1887,6 +1891,9 @@ static int qdm2_decode (QDM2Context *q, const uint8_t *in, int16_t *out)
+     int ch, i;
+     const int frame_size = (q->frame_size * q->channels);
+ 
++    if((unsigned)frame_size > FF_ARRAY_ELEMS(q->output_buffer)/2)
++        return -1;
++
+     /* select input buffer */
+     q->compressed_data = in;
+     q->compressed_size = q->checksum_size;
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-roqvideodec-check-dimensions-validity.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-roqvideodec-check-dimensions-validity.patch
new file mode 100644
index 0000000..7e58afc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-roqvideodec-check-dimensions-validity.patch
@@ -0,0 +1,36 @@
+From 391e0fc6c90ced6656b74f50f3a487b6dc76ea63 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Thu, 29 Nov 2012 15:18:17 +0100
+Subject: [PATCH] roqvideodec: check dimensions validity
+
+Upstream-Status: Backport
+
+Commit 391e0fc6c90ced6656b74f50f3a487b6dc76ea63 release/0.7
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit 3ae610451170cd5a28b33950006ff0bd23036845)
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/roqvideodec.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/libavcodec/roqvideodec.c b/libavcodec/roqvideodec.c
+index f0977f6..4e34231 100644
+--- a/gst-libs/ext/libav/libavcodec/roqvideodec.c
++++ b/gst-libs/ext/libav/libavcodec/roqvideodec.c
+@@ -157,6 +157,12 @@ static av_cold int roq_decode_init(AVCodecContext *avctx)
+     RoqContext *s = avctx->priv_data;
+ 
+     s->avctx = avctx;
++
++    if (avctx->width%16 || avctx->height%16) {
++         av_log_ask_for_sample(avctx, "dimensions not being a multiple of 16 are unsupported\n");
++         return AVERROR_PATCHWELCOME;
++    }
++
+     s->width = avctx->width;
+     s->height = avctx->height;
+     avcodec_get_frame_defaults(&s->frames[0]);
+-- 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-smackerdec-Check-that-the-last-indexes-are-within-th.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-smackerdec-Check-that-the-last-indexes-are-within-th.patch
new file mode 100644
index 0000000..15b1614
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-smackerdec-Check-that-the-last-indexes-are-within-th.patch
@@ -0,0 +1,32 @@
+gst-ffmpeg: smackerdec: Check that the last indexes are within the
+ table.
+
+Fixes CVE-2011-3944
+
+Upstream-Status: Backport 
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/smacker.c |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/libavcodec/smacker.c b/libavcodec/smacker.c
+index 30f99b4..2a8bae8 100644
+--- a/gst-libs/ext/libav/libavcodec/smacker.c
++++ b/gst-libs/ext/libav/libavcodec/smacker.c
+@@ -259,6 +259,11 @@ static int smacker_decode_header_tree(SmackVContext *smk, GetBitContext *gb, int
+     if(ctx.last[0] == -1) ctx.last[0] = huff.current++;
+     if(ctx.last[1] == -1) ctx.last[1] = huff.current++;
+     if(ctx.last[2] == -1) ctx.last[2] = huff.current++;
++    if(huff.current > huff.length){
++        ctx.last[0] = ctx.last[1] = ctx.last[2] = 1;
++        av_log(smk->avctx, AV_LOG_ERROR, "bigtree damaged\n");
++        return -1;
++    }
+ 
+     *recodes = huff.values;
+ 
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-vp3-Copy-all-3-frames-for-thread-updates.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-vp3-Copy-all-3-frames-for-thread-updates.patch
new file mode 100644
index 0000000..a1989cf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-vp3-Copy-all-3-frames-for-thread-updates.patch
@@ -0,0 +1,32 @@
+gst-ffmpeg: vp3: Copy all 3 frames for thread updates.
+
+This fixes a double release of the current frame on deinit.
+Fixes CVE-2011-3934
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+
+Upstream-Status: Backport
+
+Signed-off-by: Yue.Tao <yue.tao@windriver.com>
+
+---
+ libavcodec/vp3.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c
+index 738ae9f..b5daafc 100644
+--- a/gst-libs/ext/libav/libavcodec/vp3.c
++++ b/gst-libs/ext/libav/libavcodec/vp3.c
+@@ -1859,7 +1859,7 @@ static int vp3_update_thread_context(AVCodecContext *dst, const AVCodecContext *
+         ||s->width != s1->width
+         ||s->height!= s1->height) {
+         if (s != s1)
+-            copy_fields(s, s1, golden_frame, current_frame);
++            copy_fields(s, s1, golden_frame, keyframe);
+         return -1;
+     }
+ 
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-vp3-fix-oob-read-for-negative-tokens-and-memleaks-on.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-vp3-fix-oob-read-for-negative-tokens-and-memleaks-on.patch
new file mode 100644
index 0000000..e83d8f4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-vp3-fix-oob-read-for-negative-tokens-and-memleaks-on.patch
@@ -0,0 +1,183 @@
+gst-ffmpeg: vp3: fix oob read for negative tokens and memleaks on error.
+
+Upstream-Status: Backport 
+
+Signed-off-by: Yue.Tao <yue.tao@windriver.com>
+
+---
+ libavcodec/vp3.c |   59 +++++++++++++++++++++++++++++++++++++++++------------
+ 1 files changed, 45 insertions(+), 14 deletions(-)
+
+diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c
+index 36715bb..ce14e63 100644
+--- a/gst-libs/ext/libav/libavcodec/vp3.c
++++ b/gst-libs/ext/libav/libavcodec/vp3.c
+@@ -45,6 +45,7 @@
+ #define FRAGMENT_PIXELS 8
+ 
+ static av_cold int vp3_decode_end(AVCodecContext *avctx);
++static void vp3_decode_flush(AVCodecContext *avctx);
+ 
+ //FIXME split things out into their own arrays
+ typedef struct Vp3Fragment {
+@@ -890,7 +891,7 @@ static int unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb,
+             /* decode a VLC into a token */
+             token = get_vlc2(gb, vlc_table, 11, 3);
+             /* use the token to get a zero run, a coefficient, and an eob run */
+-            if (token <= 6) {
++            if ((unsigned) token <= 6U) {
+                 eob_run = eob_run_base[token];
+                 if (eob_run_get_bits[token])
+                     eob_run += get_bits(gb, eob_run_get_bits[token]);
+@@ -908,7 +909,7 @@ static int unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb,
+                     coeff_i        += eob_run;
+                     eob_run = 0;
+                 }
+-            } else {
++            } else if (token >= 0) {
+                 bits_to_get = coeff_get_bits[token];
+                 if (bits_to_get)
+                     bits_to_get = get_bits(gb, bits_to_get);
+@@ -942,6 +943,10 @@ static int unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb,
+                 for (i = coeff_index+1; i <= coeff_index+zero_run; i++)
+                     s->num_coded_frags[plane][i]--;
+                 coeff_i++;
++            } else {
++                av_log(s->avctx, AV_LOG_ERROR,
++                       "Invalid token %d\n", token);
++                return -1;
+             }
+     }
+ 
+@@ -991,6 +996,8 @@ static int unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb)
+     /* unpack the Y plane DC coefficients */
+     residual_eob_run = unpack_vlcs(s, gb, &s->dc_vlc[dc_y_table], 0,
+         0, residual_eob_run);
++    if (residual_eob_run < 0)
++        return residual_eob_run;
+ 
+     /* reverse prediction of the Y-plane DC coefficients */
+     reverse_dc_prediction(s, 0, s->fragment_width[0], s->fragment_height[0]);
+@@ -998,8 +1005,12 @@ static int unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb)
+     /* unpack the C plane DC coefficients */
+     residual_eob_run = unpack_vlcs(s, gb, &s->dc_vlc[dc_c_table], 0,
+         1, residual_eob_run);
++    if (residual_eob_run < 0)
++        return residual_eob_run;
+     residual_eob_run = unpack_vlcs(s, gb, &s->dc_vlc[dc_c_table], 0,
+         2, residual_eob_run);
++    if (residual_eob_run < 0)
++        return residual_eob_run;
+ 
+     /* reverse prediction of the C-plane DC coefficients */
+     if (!(s->avctx->flags & CODEC_FLAG_GRAY))
+@@ -1036,11 +1047,17 @@ static int unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb)
+     for (i = 1; i <= 63; i++) {
+             residual_eob_run = unpack_vlcs(s, gb, y_tables[i], i,
+                 0, residual_eob_run);
++            if (residual_eob_run < 0)
++                return residual_eob_run;
+ 
+             residual_eob_run = unpack_vlcs(s, gb, c_tables[i], i,
+                 1, residual_eob_run);
++            if (residual_eob_run < 0)
++                return residual_eob_run;
+             residual_eob_run = unpack_vlcs(s, gb, c_tables[i], i,
+                 2, residual_eob_run);
++            if (residual_eob_run < 0)
++                return residual_eob_run;
+     }
+ 
+     return 0;
+@@ -1777,10 +1794,15 @@ static int vp3_update_thread_context(AVCodecContext *dst, const AVCodecContext *
+     Vp3DecodeContext *s = dst->priv_data, *s1 = src->priv_data;
+     int qps_changed = 0, i, err;
+ 
++#define copy_fields(to, from, start_field, end_field) memcpy(&to->start_field, &from->start_field, (char*)&to->end_field - (char*)&to->start_field)
++
+     if (!s1->current_frame.data[0]
+         ||s->width != s1->width
+-        ||s->height!= s1->height)
++        ||s->height!= s1->height) {
++        if (s != s1)
++            copy_fields(s, s1, golden_frame, current_frame);
+         return -1;
++    }
+ 
+     if (s != s1) {
+         // init tables if the first frame hasn't been decoded
+@@ -1796,8 +1818,6 @@ static int vp3_update_thread_context(AVCodecContext *dst, const AVCodecContext *
+             memcpy(s->motion_val[1], s1->motion_val[1], c_fragment_count * sizeof(*s->motion_val[1]));
+         }
+ 
+-#define copy_fields(to, from, start_field, end_field) memcpy(&to->start_field, &from->start_field, (char*)&to->end_field - (char*)&to->start_field)
+-
+         // copy previous frame data
+         copy_fields(s, s1, golden_frame, dsp);
+ 
+@@ -1987,9 +2007,6 @@ static av_cold int vp3_decode_end(AVCodecContext *avctx)
+     Vp3DecodeContext *s = avctx->priv_data;
+     int i;
+ 
+-    if (avctx->is_copy && !s->current_frame.data[0])
+-        return 0;
+-
+     av_free(s->superblock_coding);
+     av_free(s->all_fragments);
+     av_free(s->coded_fragment_list[0]);
+@@ -2016,12 +2033,7 @@ static av_cold int vp3_decode_end(AVCodecContext *avctx)
+     free_vlc(&s->motion_vector_vlc);
+ 
+     /* release all frames */
+-    if (s->golden_frame.data[0])
+-        ff_thread_release_buffer(avctx, &s->golden_frame);
+-    if (s->last_frame.data[0] && s->last_frame.type != FF_BUFFER_TYPE_COPY)
+-        ff_thread_release_buffer(avctx, &s->last_frame);
+-    /* no need to release the current_frame since it will always be pointing
+-     * to the same frame as either the golden or last frame */
++    vp3_decode_flush(avctx);
+ 
+     return 0;
+ }
+@@ -2341,6 +2353,23 @@ static void vp3_decode_flush(AVCodecContext *avctx)
+         ff_thread_release_buffer(avctx, &s->current_frame);
+ }
+ 
++static int vp3_init_thread_copy(AVCodecContext *avctx)
++{
++    Vp3DecodeContext *s = avctx->priv_data;
++
++    s->superblock_coding      = NULL;
++    s->all_fragments          = NULL;
++    s->coded_fragment_list[0] = NULL;
++    s->dct_tokens_base        = NULL;
++    s->superblock_fragments   = NULL;
++    s->macroblock_coding      = NULL;
++    s->motion_val[0]          = NULL;
++    s->motion_val[1]          = NULL;
++    s->edge_emu_buffer        = NULL;
++
++    return 0;
++}
++
+ AVCodec ff_theora_decoder = {
+     .name           = "theora",
+     .type           = AVMEDIA_TYPE_VIDEO,
+@@ -2352,6 +2381,7 @@ AVCodec ff_theora_decoder = {
+     .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_FRAME_THREADS,
+     .flush = vp3_decode_flush,
+     .long_name = NULL_IF_CONFIG_SMALL("Theora"),
++    .init_thread_copy      = ONLY_IF_THREADS_ENABLED(vp3_init_thread_copy),
+     .update_thread_context = ONLY_IF_THREADS_ENABLED(vp3_update_thread_context)
+ };
+ #endif
+@@ -2367,5 +2397,6 @@ AVCodec ff_vp3_decoder = {
+     .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_FRAME_THREADS,
+     .flush = vp3_decode_flush,
+     .long_name = NULL_IF_CONFIG_SMALL("On2 VP3"),
++    .init_thread_copy      = ONLY_IF_THREADS_ENABLED(vp3_init_thread_copy),
+     .update_thread_context = ONLY_IF_THREADS_ENABLED(vp3_update_thread_context)
+ };
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-vqavideo-check-chunk-sizes-before-reading-chunks.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-vqavideo-check-chunk-sizes-before-reading-chunks.patch
new file mode 100644
index 0000000..7e4f682
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0001-vqavideo-check-chunk-sizes-before-reading-chunks.patch
@@ -0,0 +1,51 @@
+From 2cac35086c9e103fa98960c546d5017e7363803a Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 25 Jan 2013 06:11:59 +0100
+Subject: [PATCH] vqavideo: check chunk sizes before reading chunks
+
+Upstream-Status: Backport
+
+Commit 2cac35086c9e103fa98960c546d5017e7363803a release/0.7
+
+Fixes out of array writes
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+(cherry picked from commit ab6c9332bfa1e20127a16392a0b85a4aa4840889)
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/vqavideo.c |   10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+diff --git a/libavcodec/vqavideo.c b/libavcodec/vqavideo.c
+index d1eab5b..6e1ce6c 100644
+--- a/gst-libs/ext/libav/libavcodec/vqavideo.c
++++ b/gst-libs/ext/libav/libavcodec/vqavideo.c
+@@ -527,6 +527,11 @@ static void vqa_decode_chunk(VqaContext *s)
+         chunk_size = AV_RB32(&s->buf[cbp0_chunk + 4]);
+         cbp0_chunk += CHUNK_PREAMBLE_SIZE;
+ 
++        if (chunk_size > MAX_CODEBOOK_SIZE - s->next_codebook_buffer_index) {
++            av_log(s->avctx, AV_LOG_ERROR, "cbp0 chunk too large (0x%X bytes)\n", chunk_size);
++            return AVERROR_INVALIDDATA;
++        }
++
+         /* accumulate partial codebook */
+         memcpy(&s->next_codebook_buffer[s->next_codebook_buffer_index],
+             &s->buf[cbp0_chunk], chunk_size);
+@@ -550,6 +555,11 @@ static void vqa_decode_chunk(VqaContext *s)
+         chunk_size = AV_RB32(&s->buf[cbpz_chunk + 4]);
+         cbpz_chunk += CHUNK_PREAMBLE_SIZE;
+ 
++        if (chunk_size > MAX_CODEBOOK_SIZE - s->next_codebook_buffer_index) {
++            av_log(s->avctx, AV_LOG_ERROR, "cbpz chunk too large (0x%X bytes)\n", chunk_size);
++            return AVERROR_INVALIDDATA;
++        }
++
+         /* accumulate partial codebook */
+         memcpy(&s->next_codebook_buffer[s->next_codebook_buffer_index],
+             &s->buf[cbpz_chunk], chunk_size);
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0002-avcodec-mjpegdec-check-bits-per-pixel-for-changes-si.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0002-avcodec-mjpegdec-check-bits-per-pixel-for-changes-si.patch
new file mode 100644
index 0000000..c8bafd5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/0002-avcodec-mjpegdec-check-bits-per-pixel-for-changes-si.patch
@@ -0,0 +1,68 @@
+From 6043c431c97d55173f339fafbd033d3c0642e2e9 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 3 Oct 2014 01:50:27 +0200
+Subject: [PATCH 2/2] avcodec/mjpegdec: check bits per pixel for changes
+ similar to dimensions
+
+Upstream-Status: Backport
+
+Fixes out of array accesses
+Fixes: asan_heap-oob_16668e9_2_asan_heap-oob_16668e9_346_miss_congeniality_pegasus_mjpg.avi
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+
+Conflicts:
+	libavcodec/mjpegdec.c
+---
+ libavcodec/mjpegdec.c | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/gst-libs/ext/libav/libavcodec/mjpegdec.c b/gst-libs/ext/libav/libavcodec/mjpegdec.c
+index 84343c0..c0137d8 100644
+--- a/gst-libs/ext/libav/libavcodec/mjpegdec.c
++++ b/gst-libs/ext/libav/libavcodec/mjpegdec.c
+@@ -210,16 +210,16 @@ int ff_mjpeg_decode_dht(MJpegDecodeContext *s)
+ 
+ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
+ {
+-    int len, nb_components, i, width, height, pix_fmt_id;
++    int len, nb_components, i, bits, width, height, pix_fmt_id;
+ 
+     /* XXX: verify len field validity */
+     len = get_bits(&s->gb, 16);
+-    s->bits= get_bits(&s->gb, 8);
++    bits= get_bits(&s->gb, 8);
+ 
+-    if(s->pegasus_rct) s->bits=9;
+-    if(s->bits==9 && !s->pegasus_rct) s->rct=1;    //FIXME ugly
++    if(s->pegasus_rct) bits=9;
++    if(bits==9 && !s->pegasus_rct) s->rct=1;    //FIXME ugly
+ 
+-    if (s->bits != 8 && !s->lossless){
++    if (bits != 8 && !s->lossless){
+         av_log(s->avctx, AV_LOG_ERROR, "only 8 bits/component accepted\n");
+         return -1;
+     }
+@@ -239,7 +239,7 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
+     if (nb_components <= 0 ||
+         nb_components > MAX_COMPONENTS)
+         return -1;
+-    if (s->ls && !(s->bits <= 8 || nb_components == 1)){
++    if (s->ls && !(bits <= 8 || nb_components == 1)){
+         av_log(s->avctx, AV_LOG_ERROR, "only <= 8 bits/component or 16-bit gray accepted for JPEG-LS\n");
+         return -1;
+     }
+@@ -272,10 +272,11 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
+ 
+     /* if different size, realloc/alloc picture */
+     /* XXX: also check h_count and v_count */
+-    if (width != s->width || height != s->height) {
++    if (width != s->width || height != s->height || bits != s->bits) {
+         av_freep(&s->qscale_table);
+ 
+         s->width = width;
++        s->bits= bits;
+         s->height = height;
+         s->interlaced = 0;
+ 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/configure-fix.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/configure-fix.patch
new file mode 100644
index 0000000..9ef6f7c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/configure-fix.patch
@@ -0,0 +1,22 @@
+Disable yasm for libav when --disable-yasm
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Shane Wang <shane.wang@intel.com>
+
+diff -r f2f8f74c6e30 configure.ac
+--- a/configure.ac	Thu Dec 22 23:56:09 2011 +0800
++++ b/configure.ac	Thu Dec 22 23:57:37 2011 +0800
+@@ -325,6 +325,12 @@
+         --enable-gpl"
+   fi
+ 
++ AC_ARG_ENABLE(yasm,
++              [AC_HELP_STRING([--disable-yasm], [disable use of yasm assembler])])
++  if test "x$enable_yasm" = "xno"; then
++    embffmpeg_configure_args="$embffmpeg_configure_args --disable-yasm"
++  fi
++
+   # if we are cross-compiling, tell ffmpeg so
+   target_os=`echo $host_os | sed 's/-gnu//'`
+   if test "x$cross_compiling" = xyes; then
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-CVE-2013-0855.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-CVE-2013-0855.patch
new file mode 100644
index 0000000..3c8d8e3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-CVE-2013-0855.patch
@@ -0,0 +1,100 @@
+gst-ffmpeg: Security Advisory - ffmpeg - CVE-2013-0855
+
+Upstream-Status: Backport 
+
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+
+diff --git a/gst-libs/ext/libav/libavcodec/alac.c.old b/gst-libs/ext/libav/libavcodec/alac.c
+index 2a0df8c..bcbd56d 100644
+--- a/gst-libs/ext/libav/libavcodec/alac.c.old
++++ b/gst-libs/ext/libav/libavcodec/alac.c
+@@ -87,18 +87,44 @@ typedef struct {
+     int wasted_bits;
+ } ALACContext;
+ 
+-static void allocate_buffers(ALACContext *alac)
++static av_cold int alac_decode_close(AVCodecContext *avctx)
++{
++    ALACContext *alac = avctx->priv_data;
++
++    int chan;
++    for (chan = 0; chan < MAX_CHANNELS; chan++) {
++        av_freep(&alac->predicterror_buffer[chan]);
++        av_freep(&alac->outputsamples_buffer[chan]);
++        av_freep(&alac->wasted_bits_buffer[chan]);
++    }
++
++    return 0;
++}
++
++static int allocate_buffers(ALACContext *alac)
+ {
+     int chan;
++    int buf_size;
++
++    if (alac->setinfo_max_samples_per_frame > INT_MAX / sizeof(int32_t))
++        goto buf_alloc_fail;
++    buf_size = alac->setinfo_max_samples_per_frame * sizeof(int32_t);
++
+     for (chan = 0; chan < MAX_CHANNELS; chan++) {
+-        alac->predicterror_buffer[chan] =
+-            av_malloc(alac->setinfo_max_samples_per_frame * 4);
+ 
+-        alac->outputsamples_buffer[chan] =
+-            av_malloc(alac->setinfo_max_samples_per_frame * 4);
++        FF_ALLOC_OR_GOTO(alac->avctx, alac->predicterror_buffer[chan],
++                         buf_size, buf_alloc_fail);
+ 
+-        alac->wasted_bits_buffer[chan] = av_malloc(alac->setinfo_max_samples_per_frame * 4);
++        FF_ALLOC_OR_GOTO(alac->avctx, alac->outputsamples_buffer[chan],
++                         buf_size, buf_alloc_fail);
++
++        FF_ALLOC_OR_GOTO(alac->avctx, alac->wasted_bits_buffer[chan],
++                         buf_size, buf_alloc_fail);
+     }
++    return 0;
++buf_alloc_fail:
++    alac_decode_close(alac->avctx);
++    return AVERROR(ENOMEM);
+ }
+ 
+ static int alac_set_info(ALACContext *alac)
+@@ -131,8 +157,6 @@ static int alac_set_info(ALACContext *alac)
+     bytestream_get_be32(&ptr);      /* bitrate ? */
+     bytestream_get_be32(&ptr);      /* samplerate */
+ 
+-    allocate_buffers(alac);
+-
+     return 0;
+ }
+ 
+@@ -659,6 +683,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
+ 
+ static av_cold int alac_decode_init(AVCodecContext * avctx)
+ {
++    int ret;
+     ALACContext *alac = avctx->priv_data;
+     alac->avctx = avctx;
+     alac->numchannels = alac->avctx->channels;
+@@ -674,18 +699,9 @@ static av_cold int alac_decode_init(AVCodecContext * avctx)
+         return -1;
+     }
+ 
+-    return 0;
+-}
+-
+-static av_cold int alac_decode_close(AVCodecContext *avctx)
+-{
+-    ALACContext *alac = avctx->priv_data;
+-
+-    int chan;
+-    for (chan = 0; chan < MAX_CHANNELS; chan++) {
+-        av_freep(&alac->predicterror_buffer[chan]);
+-        av_freep(&alac->outputsamples_buffer[chan]);
+-        av_freep(&alac->wasted_bits_buffer[chan]);
++    if ((ret = allocate_buffers(alac)) < 0) {
++        av_log(avctx, AV_LOG_ERROR, "Error allocating buffers\n");
++        return ret;
+     }
+ 
+     return 0;
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-CVE-2013-3674.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-CVE-2013-3674.patch
new file mode 100644
index 0000000..aa385f5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-CVE-2013-3674.patch
@@ -0,0 +1,26 @@
+avcodec/cdgraphics: check buffer size before use
+
+Fixes out of array accesses
+
+Backported from:http://git.videolan.org/?p=ffmpeg.git;a=commit;h=ad002e1a13a8df934bd6cb2c84175a4780ab8942
+
+Upstream-Status: Backport
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
+
+diff -urpN a/gst-libs/ext/libav/libavcodec/cdgraphics.c b/gst-libs/ext/libav/libavcodec/cdgraphics.c
+--- a/gst-libs/ext/libav/libavcodec/cdgraphics.c	2013-07-18 13:17:08.399876575 +0800
++++ b/gst-libs/ext/libav/libavcodec/cdgraphics.c	2013-07-18 13:18:05.880502267 +0800
+@@ -291,7 +291,9 @@ static int cdg_decode_frame(AVCodecConte
+     inst    = bytestream_get_byte(&buf);
+     inst    &= CDG_MASK;
+     buf += 2;  /// skipping 2 unneeded bytes
+-    bytestream_get_buffer(&buf, cdg_data, buf_size - CDG_HEADER_SIZE);
++
++    if (buf_size > CDG_HEADER_SIZE)
++        bytestream_get_buffer(&buf, cdg_data, buf_size - CDG_HEADER_SIZE);
+ 
+     if ((command & CDG_MASK) == CDG_COMMAND) {
+         switch (inst) {
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2011-4352.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2011-4352.patch
new file mode 100644
index 0000000..90f3fd0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2011-4352.patch
@@ -0,0 +1,64 @@
+From 8b94df0f2047e9728cb872adc9e64557b7a5152f Mon Sep 17 00:00:00 2001
+From: Reinhard Tartler <siretart@tauware.de>
+Date: Sun, 4 Dec 2011 10:10:33 +0100
+Subject: [PATCH] vp3dec: Check coefficient index in vp3_dequant()
+
+Based on a patch by Michael Niedermayer <michaelni@gmx.at>
+
+Fixes NGS00145, CVE-2011-4352
+
+Found-by: Phillip Langlois
+Signed-off-by: Reinhard Tartler <siretart@tauware.de>
+
+
+Upstream-Status: Backport
+
+http://git.videolan.org/?p=ffmpeg.git;a=commit;h=8b94df0f2047e9728cb872adc9e64557b7a5152f
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ libavcodec/vp3.c | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c
+index 51ab048..f44d084 100644
+--- a/gst-libs/ext/libav/libavcodec/vp3.c
++++ b/gst-libs/ext/libav/libavcodec/vp3.c
+@@ -1363,6 +1363,10 @@ static inline int vp3_dequant(Vp3DecodeContext *s, Vp3Fragment *frag,
+         case 1: // zero run
+             s->dct_tokens[plane][i]++;
+             i += (token >> 2) & 0x7f;
++            if (i > 63) {
++                av_log(s->avctx, AV_LOG_ERROR, "Coefficient index overflow\n");
++                return i;
++            }
+             block[perm[i]] = (token >> 9) * dequantizer[perm[i]];
+             i++;
+             break;
+@@ -1566,7 +1570,10 @@ static void render_slice(Vp3DecodeContext *s, int slice)
+                     /* invert DCT and place (or add) in final output */
+ 
+                     if (s->all_fragments[i].coding_method == MODE_INTRA) {
+-                        vp3_dequant(s, s->all_fragments + i, plane, 0, block);
++                        int index;
++                        index = vp3_dequant(s, s->all_fragments + i, plane, 0, block);
++                        if (index > 63)
++                            continue;
+                         if(s->avctx->idct_algo!=FF_IDCT_VP3)
+                             block[0] += 128<<3;
+                         s->dsp.idct_put(
+@@ -1574,7 +1581,10 @@ static void render_slice(Vp3DecodeContext *s, int slice)
+                             stride,
+                             block);
+                     } else {
+-                        if (vp3_dequant(s, s->all_fragments + i, plane, 1, block)) {
++                        int index = vp3_dequant(s, s->all_fragments + i, plane, 1, block);
++                        if (index > 63)
++                            continue;
++                        if (index > 0) {
+                         s->dsp.idct_add(
+                             output_plane + first_pixel,
+                             stride,
+-- 
+2.1.1
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-7933.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-7933.patch
new file mode 100644
index 0000000..3c537c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-7933.patch
@@ -0,0 +1,38 @@
+From 2266b8bc3370856d874334ba62b337ce4f1eb255 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Wed, 13 May 2015 16:46:06 +0800
+Subject: [PATCH 2/2] gst-ffmpeg: fix CVE-2014-7933
+
+Upstream-Status: Backport
+
+http://git.videolan.org/?p=ffmpeg.git;a=commit;h=33301f00
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ gst-libs/ext/libav/libavformat/matroskadec.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/gst-libs/ext/libav/libavformat/matroskadec.c b/gst-libs/ext/libav/libavformat/matroskadec.c
+index 59dce4f..e5f5fc1 100644
+--- a/gst-libs/ext/libav/libavformat/matroskadec.c
++++ b/gst-libs/ext/libav/libavformat/matroskadec.c
+@@ -1916,7 +1916,7 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index,
+                               int64_t timestamp, int flags)
+ {
+     MatroskaDemuxContext *matroska = s->priv_data;
+-    MatroskaTrack *tracks = matroska->tracks.elem;
++    MatroskaTrack *tracks = NULL;
+     AVStream *st = s->streams[stream_index];
+     int i, index, index_sub, index_min;
+ 
+@@ -1939,6 +1939,7 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index,
+         return 0;
+ 
+     index_min = index;
++    tracks = matroska->tracks.elem;
+     for (i=0; i < matroska->tracks.nb_elem; i++) {
+         tracks[i].audio.pkt_cnt = 0;
+         tracks[i].audio.sub_packet_cnt = 0;
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8542.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8542.patch
new file mode 100644
index 0000000..ca47c81
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8542.patch
@@ -0,0 +1,38 @@
+From 105654e376a736d243aef4a1d121abebce912e6b Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 3 Oct 2014 04:30:58 +0200
+Subject: [PATCH] avcodec/utils: Add case for jv to
+ avcodec_align_dimensions2()
+
+(Upstream commit 105654e376a736d243aef4a1d121abebce912e6b)
+
+Fixes out of array accesses
+Fixes: asan_heap-oob_12304aa_8_asan_heap-oob_4da4f3_300_intro.jv
+
+Upstream-Status: Backport
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+---
+ libavcodec/utils.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/libavcodec/utils.c b/libavcodec/utils.c
+index d4f5532..c2c5579 100644
+--- a/gst-libs/ext/libav/libavcodec/utils.c
++++ b/gst-libs/ext/libav/libavcodec/utils.c
+@@ -173,6 +173,10 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, int l
+             w_align=4;
+             h_align=4;
+         }
++        if (s->codec_id == CODEC_ID_JV){
++            w_align = 8;
++            h_align = 8;
++        }
+         break;
+     case PIX_FMT_BGR24:
+         if((s->codec_id == CODEC_ID_MSZH) || (s->codec_id == CODEC_ID_ZLIB)){
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8543.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8543.patch
new file mode 100644
index 0000000..b65e55f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8543.patch
@@ -0,0 +1,35 @@
+From 8b0e96e1f21b761ca15dbb470cd619a1ebf86c3e Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 3 Oct 2014 14:45:04 +0200
+Subject: [PATCH] avcodec/mmvideo: Bounds check 2nd line of HHV Intra blocks
+
+(Upstream commit 8b0e96e1f21b761ca15dbb470cd619a1ebf86c3e)
+
+Fixes out of array access
+Fixes: asan_heap-oob_4da4f3_8_asan_heap-oob_4da4f3_419_scene1a.mm
+
+Upstream-Status: Backport
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+---
+ libavcodec/mmvideo.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libavcodec/mmvideo.c b/libavcodec/mmvideo.c
+index 026d463..9ff6393 100644
+--- a/gst-libs/ext/libav/libavcodec/mmvideo.c
++++ b/gst-libs/ext/libav/libavcodec/mmvideo.c
+@@ -104,7 +104,7 @@ static void mm_decode_intra(MmContext * s, int half_horiz, int half_vert, const
+ 
+         if (color) {
+             memset(s->frame.data[0] + y*s->frame.linesize[0] + x, color, run_length);
+-            if (half_vert)
++            if (half_vert && y + half_vert < s->avctx->height)
+                 memset(s->frame.data[0] + (y+1)*s->frame.linesize[0] + x, color, run_length);
+         }
+         x+= run_length;
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8544.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8544.patch
new file mode 100644
index 0000000..a124e3a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8544.patch
@@ -0,0 +1,56 @@
+From e1c0cfaa419aa5d320540d5a1b3f8fd9b82ab7e5 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 3 Oct 2014 16:08:32 +0200
+Subject: [PATCH] avcodec/tiff: more completely check bpp/bppcount
+
+(Upstream commit e1c0cfaa419aa5d320540d5a1b3f8fd9b82ab7e5)
+
+Fixes pixel format selection
+Fixes out of array accesses
+Fixes: asan_heap-oob_1766029_6_asan_heap-oob_20aa045_332_cov_1823216757_m2-d1d366d7965db766c19a66c7a2ccbb6b.tif
+
+Upstream-Status: Backport
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+---
+ libavcodec/tiff.c |   13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c
+index 6e2096f..0870e31 100644
+--- a/gst-libs/ext/libav/libavcodec/tiff.c
++++ b/gst-libs/ext/libav/libavcodec/tiff.c
+@@ -324,11 +324,11 @@ static int tiff_decode_tag(TiffContext *s, const uint8_t *start, const uint8_t *
+         s->height = value;
+         break;
+     case TIFF_BPP:
+-        s->bppcount = count;
+-        if(count > 4){
+-            av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%d, %d components)\n", s->bpp, count);
++        if(count > 4U){
++            av_log(s->avctx, AV_LOG_ERROR, "This format is not supported (bpp=%d, %d components)\n", value, count);
+             return -1;
+         }
++        s->bppcount = count;
+         if(count == 1) s->bpp = value;
+         else{
+             switch(type){
+@@ -344,6 +344,13 @@ static int tiff_decode_tag(TiffContext *s, const uint8_t *start, const uint8_t *
+                 s->bpp = -1;
+             }
+         }
++        if (s->bpp > 64U) {
++            av_log(s->avctx, AV_LOG_ERROR,
++                   "This format is not supported (bpp=%d, %d components)\n",
++                   s->bpp, count);
++            s->bpp = 0;
++            return AVERROR_INVALIDDATA;
++        }
+         break;
+     case TIFF_SAMPLES_PER_PIXEL:
+         if (count != 1) {
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8545.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8545.patch
new file mode 100644
index 0000000..29d5f77
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8545.patch
@@ -0,0 +1,36 @@
+From 3e2b745020c2dbf0201fe7df3dad9e7e0b2e1bb6 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 3 Oct 2014 17:35:58 +0200
+Subject: [PATCH] avcodec/pngdec: Check bits per pixel before setting
+ monoblack pixel format
+
+(Upstream commit 3e2b745020c2dbf0201fe7df3dad9e7e0b2e1bb6)
+
+Fixes out of array accesses
+Fixes: asan_heap-oob_14dbfcf_4_asan_heap-oob_1ce5767_179_add_method_small.png
+
+Upstream-Status: Backport
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+---
+ libavcodec/pngdec.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
+index da91aab..f3603b3 100644
+--- a/gst-libs/ext/libav/libavcodec/pngdec.c
++++ b/gst-libs/ext/libav/libavcodec/pngdec.c
+@@ -481,7 +481,7 @@ static int decode_frame(AVCodecContext *avctx,
+                 } else if (s->bit_depth == 16 &&
+                            s->color_type == PNG_COLOR_TYPE_RGB) {
+                     avctx->pix_fmt = PIX_FMT_RGB48BE;
+-                } else if (s->bit_depth == 1 &&
++                } else if (s->bit_depth == 1 && s->bits_per_pixel == 1 &&
+                            s->color_type == PNG_COLOR_TYPE_GRAY) {
+                     avctx->pix_fmt = PIX_FMT_MONOBLACK;
+                 } else if (s->color_type == PNG_COLOR_TYPE_PALETTE) {
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8546.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8546.patch
new file mode 100644
index 0000000..d55d9eb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8546.patch
@@ -0,0 +1,35 @@
+From e7e5114c506957f40aafd794e06de1a7e341e9d5 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 3 Oct 2014 19:33:01 +0200
+Subject: [PATCH] avcodec/cinepak: fix integer underflow
+
+(Upstream commit e7e5114c506957f40aafd794e06de1a7e341e9d5)
+
+Fixes out of array access
+Fixes: asan_heap-oob_4da0ba_6_asan_heap-oob_4da0ba_241_cvid_crash.avi
+
+Upstream-status: Backport
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+---
+ libavcodec/cinepak.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libavcodec/cinepak.c b/libavcodec/cinepak.c
+index 4746289..f651c48 100644
+--- a/gst-libs/ext/libav/libavcodec/cinepak.c
++++ b/gst-libs/ext/libav/libavcodec/cinepak.c
+@@ -125,7 +125,7 @@ static int cinepak_decode_vectors (CinepakContext *s, cvid_strip *strip,
+     const uint8_t   *eod = (data + size);
+     uint32_t         flag, mask;
+     cvid_codebook   *codebook;
+-    unsigned int     x, y;
++    int             x, y;
+     uint32_t         iy[4];
+     uint32_t         iu[2];
+     uint32_t         iv[2];
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8547.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8547.patch
new file mode 100644
index 0000000..a8616fa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-8547.patch
@@ -0,0 +1,59 @@
+From 8f1457864be8fb9653643519dea1c6492f1dde57 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Fri, 3 Oct 2014 20:15:52 +0200
+Subject: [PATCH] avcodec/gifdec: factorize interleave end handling out
+
+(Upstream commit 8f1457864be8fb9653643519dea1c6492f1dde57)
+
+also change it to a loop
+Fixes out of array access
+Fixes: asan_heap-oob_ca5410_8_asan_heap-oob_ca5410_97_ID_LSD_Size_Less_Then_Data_Inter_3.gif
+
+Upstream-Status: Backport
+
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+---
+ libavcodec/gifdec.c |   15 +++++----------
+ 1 file changed, 5 insertions(+), 10 deletions(-)
+
+diff --git a/libavcodec/gifdec.c b/libavcodec/gifdec.c
+index dee48f5..90de38b 100644
+--- a/gst-libs/ext/libav/libavcodec/gifdec.c
++++ b/gst-libs/ext/libav/libavcodec/gifdec.c
+@@ -271,26 +271,21 @@ static int gif_read_image(GifState *s, AVFrame *frame)
+             case 1:
+                 y1 += 8;
+                 ptr += linesize * 8;
+-                if (y1 >= height) {
+-                    y1 = pass ? 2 : 4;
+-                    ptr = ptr1 + linesize * y1;
+-                    pass++;
+-                }
+                 break;
+             case 2:
+                 y1 += 4;
+                 ptr += linesize * 4;
+-                if (y1 >= height) {
+-                    y1 = 1;
+-                    ptr = ptr1 + linesize;
+-                    pass++;
+-                }
+                 break;
+             case 3:
+                 y1 += 2;
+                 ptr += linesize * 2;
+                 break;
+             }
++            while (y1 >= height) {
++                y1 = 4 >> pass;
++                ptr = ptr1 + linesize * y1;
++                pass++;
++            }
+         } else {
+             ptr += linesize;
+         }
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-9318.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-9318.patch
new file mode 100644
index 0000000..0553cee
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-9318.patch
@@ -0,0 +1,37 @@
+From 0d3a3b9f8907625b361420d48fe05716859620ff Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michaelni@gmx.at>
+Date: Wed, 26 Nov 2014 18:56:39 +0100
+Subject: [PATCH] avcodec/rawdec: Check the return code of
+ avpicture_get_size()
+
+(Upstream commit 1d3a3b9f8907625b361420d48fe05716859620ff)
+
+Fixes out of array access
+Fixes: asan_heap-oob_22388d0_3435_cov_3297128910_small_roll5_FlashCine1.cine
+Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
+
+Upstream-Status: Backport
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+Signed-off-by: Yue Tao <yue.tao@windriver.com>
+---
+ libavcodec/rawdec.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c
+index 28792a1..647dfa9 100644
+--- a/gst-libs/ext/libav/libavcodec/rawdec.c
++++ b/gst-libs/ext/libav/libavcodec/rawdec.c
+@@ -87,6 +87,9 @@ static av_cold int raw_init_decoder(AVCodecContext *avctx)
+ 
+     ff_set_systematic_pal2(context->palette, avctx->pix_fmt);
+     context->length = avpicture_get_size(avctx->pix_fmt, avctx->width, avctx->height);
++    if (context->length < 0)
++        return context->length;
++
+     if((avctx->bits_per_coded_sample == 4 || avctx->bits_per_coded_sample == 2) &&
+        avctx->pix_fmt==PIX_FMT_PAL8 &&
+        (!avctx->codec_tag || avctx->codec_tag == MKTAG('r','a','w',' '))){
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-9603.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-9603.patch
new file mode 100644
index 0000000..5dda4cc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/gst-ffmpeg-fix-CVE-2014-9603.patch
@@ -0,0 +1,41 @@
+From dc68faf8339a885bc55fabe5b01f1de4f8f3782c Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Wed, 13 May 2015 16:30:53 +0800
+Subject: [PATCH 1/2] gst-ffmpeg: fix CVE-2014-9603
+
+Upstream-Status: Backport
+
+Upstream is version 2.x and vmdav.c is splitted into 2 files vmdaudio.c
+and vmdvideo.c. Becuase source code changes, just partly backport commit which
+is applicable to version 0.10.13 to fix CVE-2014-9603.
+
+http://git.videolan.org/?p=ffmpeg.git;a=commit;h=3030fb7e0d41836f8add6399e9a7c7b740b48bfd
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ gst-libs/ext/libav/libavcodec/vmdav.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/gst-libs/ext/libav/libavcodec/vmdav.c b/gst-libs/ext/libav/libavcodec/vmdav.c
+index d258252..ba88ad8 100644
+--- a/gst-libs/ext/libav/libavcodec/vmdav.c
++++ b/gst-libs/ext/libav/libavcodec/vmdav.c
+@@ -294,10 +294,13 @@ static void vmd_decode(VmdVideoContext *s)
+                     len = *pb++;
+                     if (len & 0x80) {
+                         len = (len & 0x7F) + 1;
+-                        if (*pb++ == 0xFF)
++                        if (*pb++ == 0xFF) {
+                             len = rle_unpack(pb, &dp[ofs], len, frame_width - ofs);
+-                        else
++                        } else {
++                            if (ofs + len > frame_width)
++                                return;
+                             memcpy(&dp[ofs], pb, len);
++                        }
+                         pb += len;
+                         ofs += len;
+                     } else {
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/h264_qpel_mmx.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/h264_qpel_mmx.patch
new file mode 100644
index 0000000..ade24dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/h264_qpel_mmx.patch
@@ -0,0 +1,57 @@
+Backport http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=5f654897e325349dacf2546674e0510bb72ecb50;hp=250cebeb3b348c3da71f9972eb500d6005dc01f1
+
+Fixes these errors on x86
+
+libavcodec/x86/h264_qpel_mmx.c: Assembler messages:
+libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
+libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp'
+make[5]: *** [libavcodec/x86/dsputil_mmx.o] Error 1
+
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport
+Index: gst-ffmpeg-0.10.13/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c
+===================================================================
+--- gst-ffmpeg-0.10.13.orig/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c	2012-03-30 11:39:41.324522051 -0700
++++ gst-ffmpeg-0.10.13/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c	2012-03-30 11:54:08.152564075 -0700
+@@ -398,7 +398,7 @@
+             "2:                         \n\t"\
+             \
+             : "+a"(src), "+c"(dst)\
+-            : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "g"(h)\
++            : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "rm"(h)\
+             : "memory"\
+         );\
+         src += 4-(h+5)*srcStride;\
+@@ -446,7 +446,7 @@
+             QPEL_H264HV(%%mm3, %%mm4, %%mm5, %%mm0, %%mm1, %%mm2, 15*48)\
+             "2:                     \n\t"\
+             : "+a"(src)\
+-            : "c"(tmp), "S"((x86_reg)srcStride), "g"(size)\
++            : "c"(tmp), "S"((x86_reg)srcStride), "rm"(size)\
+             : "memory"\
+             );\
+         tmp += 4;\
+@@ -823,7 +823,7 @@
+         "2:                          \n\t"\
+         \
+         : "+a"(src), "+c"(dst)\
+-        : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "g"(h)\
++        : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "rm"(h)\
+         : XMM_CLOBBERS("%xmm0", "%xmm1", "%xmm2", "%xmm3", \
+                        "%xmm4", "%xmm5", "%xmm6", "%xmm7",)\
+           "memory"\
+@@ -878,7 +878,7 @@
+             QPEL_H264HV_XMM(%%xmm3, %%xmm4, %%xmm5, %%xmm0, %%xmm1, %%xmm2, 15*48)
+             "2:                         \n\t"
+             : "+a"(src)
+-            : "c"(tmp), "S"((x86_reg)srcStride), "g"(size)
++            : "c"(tmp), "S"((x86_reg)srcStride), "rm"(size)
+             : XMM_CLOBBERS("%xmm0", "%xmm1", "%xmm2", "%xmm3",
+                            "%xmm4", "%xmm5", "%xmm6", "%xmm7",)
+               "memory"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/libav-9.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/libav-9.patch
new file mode 100644
index 0000000..1860752
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/libav-9.patch
@@ -0,0 +1,9304 @@
+Taken from gentoo patchset:
+http://dev.gentoo.org/~tetromino/distfiles/gst-plugins-ffmpeg/gst-ffmpeg-0.10.13_p2012.11-libav-9-patches.tar.xz
+
+Upstream-Status: Pending
+
+Contains following changes, rebased to apply on top of our changes
+0002-Fix-includes-for-systemwide-build.patch
+0003-libav-Switch-to-non-deprecated-symbols.patch
+0005-av-Update-for-some-constant-changes.patch
+0006-av-Remove-palette-support-for-now.patch
+0007-av-Port-remaining-simple-bits.patch
+0008-av-Use-av_codec_is_-en-de-coder-API-instead-of-priva.patch
+0009-avprotocol-Port-from-the-URL-protocol-handler-to-san.patch
+0010-avdec-don-t-wait-for-keyframe.patch
+
+Following changes were skipped:
+0001-Partially-revert-commit-0300801b.patch
+0004-av-update-to-use-AVOption-variants.patch
+0011-av_get_bits_per_sample_format-was-removed-in-libav-9.patch
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpeg.c gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpeg.c
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpeg.c	2011-10-31 11:14:03.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpeg.c	2014-08-08 15:26:07.872857555 +0200
+@@ -151,9 +151,6 @@
+ #endif
+   gst_ffmpegaudioresample_register (plugin);
+ 
+-  av_register_protocol2 (&gstreamer_protocol, sizeof (URLProtocol));
+-  av_register_protocol2 (&gstpipe_protocol, sizeof (URLProtocol));
+-
+   /* Now we can return the pointer to the newly created Plugin object. */
+   return TRUE;
+ }
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpeg.h gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpeg.h
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpeg.h	2011-05-17 10:53:16.000000000 +0200
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpeg.h	2014-08-08 15:26:07.872857555 +0200
+@@ -58,10 +58,13 @@
+ int gst_ffmpeg_avcodec_close (AVCodecContext *avctx);
+ int gst_ffmpeg_av_find_stream_info(AVFormatContext *ic);
+ 
+-G_END_DECLS
++int gst_ffmpegdata_open (GstPad * pad, int flags, AVIOContext ** context);
++int gst_ffmpegdata_close (AVIOContext * h);
++typedef struct _GstFFMpegPipe GstFFMpegPipe;
++int gst_ffmpeg_pipe_open (GstFFMpegPipe *ffpipe, int flags, AVIOContext ** context);
++int gst_ffmpeg_pipe_close (AVIOContext * h);
+ 
+-extern URLProtocol gstreamer_protocol;
+-extern URLProtocol gstpipe_protocol;
++G_END_DECLS
+ 
+ /* use GST_FFMPEG URL_STREAMHEADER with URL_WRONLY if the first
+  * buffer should be used as streamheader property on the pad's caps. */
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegcfg.c gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegcfg.c
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegcfg.c	2011-07-12 16:35:27.000000000 +0200
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegcfg.c	2014-08-08 15:24:17.899853612 +0200
+@@ -147,7 +147,6 @@
+       {FF_DCT_FASTINT, "Fast Integer", "fastint"},
+       {FF_DCT_INT, "Accurate Integer", "int"},
+       {FF_DCT_MMX, "MMX", "mmx"},
+-      {FF_DCT_MLIB, "MLIB", "mlib"},
+       {FF_DCT_ALTIVEC, "ALTIVEC", "altivec"},
+       {FF_DCT_FAAN, "FAAN", "faan"},
+       {0, NULL, NULL},
+@@ -173,8 +172,6 @@
+       {FF_IDCT_SIMPLE, "Simple", "simple"},
+       {FF_IDCT_SIMPLEMMX, "Simple MMX", "simplemmx"},
+       {FF_IDCT_LIBMPEG2MMX, "LIBMPEG2MMX", "libmpeg2mmx"},
+-      {FF_IDCT_PS2, "PS2", "ps2"},
+-      {FF_IDCT_MLIB, "MLIB", "mlib"},
+       {FF_IDCT_ARM, "ARM", "arm"},
+       {FF_IDCT_ALTIVEC, "ALTIVEC", "altivec"},
+       {FF_IDCT_SH4, "SH4", "sh4"},
+@@ -263,16 +260,11 @@
+ 
+   if (!ffmpeg_flags_type) {
+     static const GFlagsValue ffmpeg_flags[] = {
+-      {CODEC_FLAG_OBMC, "Use overlapped block motion compensation (h263+)",
+-          "obmc"},
+       {CODEC_FLAG_QSCALE, "Use fixed qscale", "qscale"},
+       {CODEC_FLAG_4MV, "Allow 4 MV per MB", "4mv"},
+-      {CODEC_FLAG_H263P_AIV, "H.263 alternative inter VLC", "aiv"},
+       {CODEC_FLAG_QPEL, "Quartel Pel Motion Compensation", "qpel"},
+       {CODEC_FLAG_GMC, "GMC", "gmc"},
+       {CODEC_FLAG_MV0, "Always try a MB with MV (0,0)", "mv0"},
+-      {CODEC_FLAG_PART,
+-          "Store MV, DC and AC coefficients in seperate partitions", "part"},
+       {CODEC_FLAG_LOOP_FILTER, "Loop filter", "loop-filter"},
+       {CODEC_FLAG_GRAY, "Only decode/encode grayscale", "gray"},
+       {CODEC_FLAG_NORMALIZE_AQP,
+@@ -282,13 +274,9 @@
+           "global-headers"},
+       {CODEC_FLAG_AC_PRED, "H263 Advanced Intra Coding / MPEG4 AC prediction",
+           "aic"},
+-      {CODEC_FLAG_H263P_UMV, "Unlimited Motion Vector", "umv"},
+       {CODEC_FLAG_CBP_RD, "Rate Distoration Optimization for CBP", "cbp-rd"},
+       {CODEC_FLAG_QP_RD, "Rate Distoration Optimization for QP selection",
+           "qp-rd"},
+-      {CODEC_FLAG_H263P_SLICE_STRUCT, "H263 slice struct", "ss"},
+-      {CODEC_FLAG_SVCD_SCAN_OFFSET,
+-          "Reserve space for SVCD scan offset user data", "scanoffset"},
+       {CODEC_FLAG_CLOSED_GOP, "Closed GOP", "closedgop"},
+       {0, NULL, NULL},
+     };
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegcodecmap.c gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegcodecmap.c
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegcodecmap.c	2011-10-31 11:14:03.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegcodecmap.c	2014-08-08 15:31:30.968869139 +0200
+@@ -25,8 +25,10 @@
+ #include <gst/gst.h>
+ #ifdef HAVE_FFMPEG_UNINSTALLED
+ #include <avcodec.h>
++#include <channel_layout.h>
+ #else
+ #include <libavcodec/avcodec.h>
++#include <libavutil/channel_layout.h>
+ #endif
+ #include <string.h>
+ 
+@@ -35,43 +37,6 @@
+ 
+ #include <gst/pbutils/codec-utils.h>
+ 
+-/*
+- * Read a palette from a caps.
+- */
+-
+-static void
+-gst_ffmpeg_get_palette (const GstCaps * caps, AVCodecContext * context)
+-{
+-  GstStructure *str = gst_caps_get_structure (caps, 0);
+-  const GValue *palette_v;
+-  const GstBuffer *palette;
+-
+-  /* do we have a palette? */
+-  if ((palette_v = gst_structure_get_value (str, "palette_data")) && context) {
+-    palette = gst_value_get_buffer (palette_v);
+-    if (GST_BUFFER_SIZE (palette) >= AVPALETTE_SIZE) {
+-      if (context->palctrl)
+-        av_free (context->palctrl);
+-      context->palctrl = av_malloc (sizeof (AVPaletteControl));
+-      context->palctrl->palette_changed = 1;
+-      memcpy (context->palctrl->palette, GST_BUFFER_DATA (palette),
+-          AVPALETTE_SIZE);
+-    }
+-  }
+-}
+-
+-static void
+-gst_ffmpeg_set_palette (GstCaps * caps, AVCodecContext * context)
+-{
+-  if (context->palctrl) {
+-    GstBuffer *palette = gst_buffer_new_and_alloc (AVPALETTE_SIZE);
+-
+-    memcpy (GST_BUFFER_DATA (palette), context->palctrl->palette,
+-        AVPALETTE_SIZE);
+-    gst_caps_set_simple (caps, "palette_data", GST_TYPE_BUFFER, palette, NULL);
+-  }
+-}
+-
+ /* IMPORTANT: Keep this sorted by the ffmpeg channel masks */
+ static const struct
+ {
+@@ -79,26 +44,26 @@
+   GstAudioChannelPosition gst;
+ } _ff_to_gst_layout[] = {
+   {
+-  CH_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
+-  CH_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}, {
+-  CH_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER}, {
+-  CH_LOW_FREQUENCY, GST_AUDIO_CHANNEL_POSITION_LFE}, {
+-  CH_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_REAR_LEFT}, {
+-  CH_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT}, {
+-  CH_FRONT_LEFT_OF_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER}, {
+-  CH_FRONT_RIGHT_OF_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER}, {
+-  CH_BACK_CENTER, GST_AUDIO_CHANNEL_POSITION_REAR_CENTER}, {
+-  CH_SIDE_LEFT, GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT}, {
+-  CH_SIDE_RIGHT, GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT}, {
+-  CH_TOP_CENTER, GST_AUDIO_CHANNEL_POSITION_NONE}, {
+-  CH_TOP_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
+-  CH_TOP_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_NONE}, {
+-  CH_TOP_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
+-  CH_TOP_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
+-  CH_TOP_BACK_CENTER, GST_AUDIO_CHANNEL_POSITION_NONE}, {
+-  CH_TOP_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
+-  CH_STEREO_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
+-  CH_STEREO_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}
++  AV_CH_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
++  AV_CH_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}, {
++  AV_CH_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER}, {
++  AV_CH_LOW_FREQUENCY, GST_AUDIO_CHANNEL_POSITION_LFE}, {
++  AV_CH_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_REAR_LEFT}, {
++  AV_CH_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT}, {
++  AV_CH_FRONT_LEFT_OF_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER}, {
++  AV_CH_FRONT_RIGHT_OF_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER}, {
++  AV_CH_BACK_CENTER, GST_AUDIO_CHANNEL_POSITION_REAR_CENTER}, {
++  AV_CH_SIDE_LEFT, GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT}, {
++  AV_CH_SIDE_RIGHT, GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT}, {
++  AV_CH_TOP_CENTER, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_BACK_CENTER, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_STEREO_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
++  AV_CH_STEREO_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}
+ };
+ 
+ static GstAudioChannelPosition *
+@@ -342,8 +307,8 @@
+ 
+     if (channel_layout == 0) {
+       const guint64 default_channel_set[] = {
+-        0, 0, CH_LAYOUT_SURROUND, CH_LAYOUT_QUAD, CH_LAYOUT_5POINT0,
+-        CH_LAYOUT_5POINT1, 0, CH_LAYOUT_7POINT1
++        0, 0, AV_CH_LAYOUT_SURROUND, AV_CH_LAYOUT_QUAD, AV_CH_LAYOUT_5POINT0,
++        AV_CH_LAYOUT_5POINT1, 0, AV_CH_LAYOUT_7POINT1
+       };
+ 
+       switch (codec_id) {
+@@ -1267,8 +1232,6 @@
+     case CODEC_ID_FLIC:
+     case CODEC_ID_VMDVIDEO:
+     case CODEC_ID_VMDAUDIO:
+-    case CODEC_ID_SONIC:
+-    case CODEC_ID_SONIC_LS:
+     case CODEC_ID_SNOW:
+     case CODEC_ID_VIXL:
+     case CODEC_ID_QPEG:
+@@ -1689,11 +1652,6 @@
+       gst_buffer_unref (data);
+     }
+ 
+-    /* palette */
+-    if (context) {
+-      gst_ffmpeg_set_palette (caps, context);
+-    }
+-
+     GST_LOG ("caps for codec_id=%d: %" GST_PTR_FORMAT, codec_id, caps);
+ 
+   } else {
+@@ -1830,9 +1788,6 @@
+             "bpp", G_TYPE_INT, bpp,
+             "depth", G_TYPE_INT, depth,
+             "endianness", G_TYPE_INT, endianness, NULL);
+-        if (caps && context) {
+-          gst_ffmpeg_set_palette (caps, context);
+-        }
+       }
+     } else if (fmt) {
+       caps = gst_ff_vid_caps_new (context, codec_id, "video/x-raw-yuv",
+@@ -1857,7 +1812,7 @@
+  */
+ 
+ static GstCaps *
+-gst_ffmpeg_smpfmt_to_caps (enum SampleFormat sample_fmt,
++gst_ffmpeg_smpfmt_to_caps (enum AVSampleFormat sample_fmt,
+     AVCodecContext * context, enum CodecID codec_id)
+ {
+   GstCaps *caps = NULL;
+@@ -1867,22 +1822,22 @@
+   gboolean signedness = FALSE;
+ 
+   switch (sample_fmt) {
+-    case SAMPLE_FMT_S16:
++    case AV_SAMPLE_FMT_S16:
+       signedness = TRUE;
+       bpp = 16;
+       break;
+ 
+-    case SAMPLE_FMT_S32:
++    case AV_SAMPLE_FMT_S32:
+       signedness = TRUE;
+       bpp = 32;
+       break;
+ 
+-    case SAMPLE_FMT_FLT:
++    case AV_SAMPLE_FMT_FLT:
+       integer = FALSE;
+       bpp = 32;
+       break;
+ 
+-    case SAMPLE_FMT_DBL:
++    case AV_SAMPLE_FMT_DBL:
+       integer = FALSE;
+       bpp = 64;
+       break;
+@@ -1941,12 +1896,12 @@
+     }
+   } else {
+     GstCaps *temp;
+-    enum SampleFormat i;
++    enum AVSampleFormat i;
+     AVCodecContext ctx = { 0, };
+ 
+     ctx.channels = -1;
+     caps = gst_caps_new_empty ();
+-    for (i = 0; i <= SAMPLE_FMT_DBL; i++) {
++    for (i = 0; i <= AV_SAMPLE_FMT_DBL; i++) {
+       temp = gst_ffmpeg_smpfmt_to_caps (i, encode ? &ctx : NULL, codec_id);
+       if (temp != NULL) {
+         gst_caps_append (caps, temp);
+@@ -2049,9 +2004,9 @@
+         gst_structure_get_int (structure, "endianness", &endianness)) {
+       if (endianness == G_BYTE_ORDER) {
+         if (width == 32)
+-          context->sample_fmt = SAMPLE_FMT_FLT;
++          context->sample_fmt = AV_SAMPLE_FMT_FLT;
+         else if (width == 64)
+-          context->sample_fmt = SAMPLE_FMT_DBL;
++          context->sample_fmt = AV_SAMPLE_FMT_DBL;
+       }
+     }
+   } else {
+@@ -2062,9 +2017,9 @@
+         gst_structure_get_int (structure, "endianness", &endianness)) {
+       if ((endianness == G_BYTE_ORDER) && (signedness == TRUE)) {
+         if ((width == 16) && (depth == 16))
+-          context->sample_fmt = SAMPLE_FMT_S16;
++          context->sample_fmt = AV_SAMPLE_FMT_S16;
+         else if ((width == 32) && (depth == 32))
+-          context->sample_fmt = SAMPLE_FMT_S32;
++          context->sample_fmt = AV_SAMPLE_FMT_S32;
+       }
+     }
+   }
+@@ -2190,7 +2145,6 @@
+       } else {
+         if (bpp == 8) {
+           context->pix_fmt = PIX_FMT_PAL8;
+-          gst_ffmpeg_get_palette (caps, context);
+         }
+       }
+     }
+@@ -2576,7 +2530,6 @@
+   switch (codec_type) {
+     case AVMEDIA_TYPE_VIDEO:
+       gst_ffmpeg_caps_to_pixfmt (caps, context, codec_id == CODEC_ID_RAWVIDEO);
+-      gst_ffmpeg_get_palette (caps, context);
+       break;
+     case AVMEDIA_TYPE_AUDIO:
+       gst_ffmpeg_caps_to_smpfmt (caps, context, FALSE);
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegcodecmap.c.orig gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegcodecmap.c.orig
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegcodecmap.c.orig	1970-01-01 01:00:00.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegcodecmap.c.orig	2014-08-08 15:30:34.006867097 +0200
+@@ -0,0 +1,3447 @@
++/* GStreamer
++ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
++ * This file:
++ * Copyright (c) 2002-2004 Ronald Bultje <rbultje@ronald.bitfreak.net>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++#include <gst/gst.h>
++#ifdef HAVE_FFMPEG_UNINSTALLED
++#include <avcodec.h>
++#include <channel_layout.h>>
++#else
++#include <libavcodec/avcodec.h>
++#include <libavutil/channel_layout.h>
++#endif
++#include <string.h>
++
++#include "gstffmpeg.h"
++#include "gstffmpegcodecmap.h"
++
++#include <gst/pbutils/codec-utils.h>
++
++/*
++ * Read a palette from a caps.
++ */
++
++static void
++gst_ffmpeg_get_palette (const GstCaps * caps, AVCodecContext * context)
++{
++  GstStructure *str = gst_caps_get_structure (caps, 0);
++  const GValue *palette_v;
++  const GstBuffer *palette;
++
++  /* do we have a palette? */
++  if ((palette_v = gst_structure_get_value (str, "palette_data")) && context) {
++    palette = gst_value_get_buffer (palette_v);
++    if (GST_BUFFER_SIZE (palette) >= AVPALETTE_SIZE) {
++      if (context->palctrl)
++        av_free (context->palctrl);
++      context->palctrl = av_malloc (sizeof (AVPaletteControl));
++      context->palctrl->palette_changed = 1;
++      memcpy (context->palctrl->palette, GST_BUFFER_DATA (palette),
++          AVPALETTE_SIZE);
++    }
++  }
++}
++
++static void
++gst_ffmpeg_set_palette (GstCaps * caps, AVCodecContext * context)
++{
++  if (context->palctrl) {
++    GstBuffer *palette = gst_buffer_new_and_alloc (AVPALETTE_SIZE);
++
++    memcpy (GST_BUFFER_DATA (palette), context->palctrl->palette,
++        AVPALETTE_SIZE);
++    gst_caps_set_simple (caps, "palette_data", GST_TYPE_BUFFER, palette, NULL);
++  }
++}
++
++/* IMPORTANT: Keep this sorted by the ffmpeg channel masks */
++static const struct
++{
++  guint64 ff;
++  GstAudioChannelPosition gst;
++} _ff_to_gst_layout[] = {
++  {
++  AV_CH_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
++  AV_CH_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}, {
++  AV_CH_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER}, {
++  AV_CH_LOW_FREQUENCY, GST_AUDIO_CHANNEL_POSITION_LFE}, {
++  AV_CH_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_REAR_LEFT}, {
++  AV_CH_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT}, {
++  AV_CH_FRONT_LEFT_OF_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER}, {
++  AV_CH_FRONT_RIGHT_OF_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER}, {
++  AV_CH_BACK_CENTER, GST_AUDIO_CHANNEL_POSITION_REAR_CENTER}, {
++  AV_CH_SIDE_LEFT, GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT}, {
++  AV_CH_SIDE_RIGHT, GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT}, {
++  AV_CH_TOP_CENTER, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_BACK_CENTER, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_TOP_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_NONE}, {
++  AV_CH_STEREO_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
++  AV_CH_STEREO_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}
++};
++
++static GstAudioChannelPosition *
++gst_ff_channel_layout_to_gst (guint64 channel_layout, guint channels)
++{
++  guint nchannels = 0, i, j;
++  GstAudioChannelPosition *pos = NULL;
++  gboolean none_layout = FALSE;
++
++  for (i = 0; i < 64; i++) {
++    if ((channel_layout & (G_GUINT64_CONSTANT (1) << i)) != 0) {
++      nchannels++;
++    }
++  }
++
++  if (channel_layout == 0) {
++    nchannels = channels;
++    none_layout = TRUE;
++  }
++
++  if (nchannels != channels) {
++    GST_ERROR ("Number of channels is different (%u != %u)", channels,
++        nchannels);
++    return NULL;
++  }
++
++  pos = g_new (GstAudioChannelPosition, nchannels);
++
++  for (i = 0, j = 0; i < G_N_ELEMENTS (_ff_to_gst_layout); i++) {
++    if ((channel_layout & _ff_to_gst_layout[i].ff) != 0) {
++      pos[j++] = _ff_to_gst_layout[i].gst;
++
++      if (_ff_to_gst_layout[i].gst == GST_AUDIO_CHANNEL_POSITION_NONE)
++        none_layout = TRUE;
++    }
++  }
++
++  if (j != nchannels) {
++    GST_WARNING ("Unknown channels in channel layout - assuming NONE layout");
++    none_layout = TRUE;
++  }
++
++  if (!none_layout && !gst_audio_check_channel_positions (pos, nchannels)) {
++    GST_ERROR ("Invalid channel layout %" G_GUINT64_FORMAT
++        " - assuming NONE layout", channel_layout);
++    none_layout = TRUE;
++  }
++
++  if (none_layout) {
++    if (nchannels == 1) {
++      pos[0] = GST_AUDIO_CHANNEL_POSITION_FRONT_MONO;
++    } else if (nchannels == 2) {
++      pos[0] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
++      pos[1] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
++    } else if (channel_layout == 0) {
++      g_free (pos);
++      pos = NULL;
++    } else {
++      for (i = 0; i < nchannels; i++)
++        pos[i] = GST_AUDIO_CHANNEL_POSITION_NONE;
++    }
++  }
++
++  if (nchannels == 1 && pos[0] == GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER) {
++    GST_DEBUG ("mono common case; won't set channel positions");
++    g_free (pos);
++    pos = NULL;
++  } else if (nchannels == 2 && pos[0] == GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT
++      && pos[1] == GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT) {
++    GST_DEBUG ("stereo common case; won't set channel positions");
++    g_free (pos);
++    pos = NULL;
++  }
++
++  return pos;
++}
++
++/* this macro makes a caps width fixed or unfixed width/height
++ * properties depending on whether we've got a context.
++ *
++ * See below for why we use this.
++ *
++ * We should actually do this stuff at the end, like in riff-media.c,
++ * but I'm too lazy today. Maybe later.
++ */
++static GstCaps *
++gst_ff_vid_caps_new (AVCodecContext * context, enum CodecID codec_id,
++    const char *mimetype, const char *fieldname, ...)
++{
++  GstStructure *structure = NULL;
++  GstCaps *caps = NULL;
++  va_list var_args;
++  gint i;
++
++  GST_LOG ("context:%p, codec_id:%d, mimetype:%s", context, codec_id, mimetype);
++
++  /* fixed, non probing context */
++  if (context != NULL && context->width != -1) {
++    gint num, denom;
++
++    caps = gst_caps_new_simple (mimetype,
++        "width", G_TYPE_INT, context->width,
++        "height", G_TYPE_INT, context->height, NULL);
++
++    num = context->time_base.den / context->ticks_per_frame;
++    denom = context->time_base.num;
++
++    if (!denom) {
++      GST_LOG ("invalid framerate: %d/0, -> %d/1", num, num);
++      denom = 1;
++    }
++    if (gst_util_fraction_compare (num, denom, 1000, 1) > 0) {
++      GST_LOG ("excessive framerate: %d/%d, -> 0/1", num, denom);
++      num = 0;
++      denom = 1;
++    }
++    GST_LOG ("setting framerate: %d/%d", num, denom);
++    gst_caps_set_simple (caps,
++        "framerate", GST_TYPE_FRACTION, num, denom, NULL);
++  } else {
++    /* so we are after restricted caps in this case */
++    switch (codec_id) {
++      case CODEC_ID_H261:
++      {
++        caps = gst_caps_new_simple (mimetype,
++            "width", G_TYPE_INT, 352,
++            "height", G_TYPE_INT, 288,
++            "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
++        gst_caps_append (caps, gst_caps_new_simple (mimetype,
++                "width", G_TYPE_INT, 176,
++                "height", G_TYPE_INT, 144,
++                "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL));
++        break;
++      }
++      case CODEC_ID_H263:
++      {
++        /* 128x96, 176x144, 352x288, 704x576, and 1408x1152. slightly reordered
++         * because we want automatic negotiation to go as close to 320x240 as
++         * possible. */
++        const static gint widths[] = { 352, 704, 176, 1408, 128 };
++        const static gint heights[] = { 288, 576, 144, 1152, 96 };
++        GstCaps *temp;
++        gint n_sizes = G_N_ELEMENTS (widths);
++
++        caps = gst_caps_new_empty ();
++        for (i = 0; i < n_sizes; i++) {
++          temp = gst_caps_new_simple (mimetype,
++              "width", G_TYPE_INT, widths[i],
++              "height", G_TYPE_INT, heights[i],
++              "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
++
++          gst_caps_append (caps, temp);
++        }
++        break;
++      }
++      case CODEC_ID_DVVIDEO:
++      {
++        static struct
++        {
++          guint32 csp;
++          gint width, height;
++          gint par_n, par_d;
++          gint framerate_n, framerate_d;
++        } profiles[] = {
++          {
++          GST_MAKE_FOURCC ('Y', '4', '1', 'B'), 720, 480, 10, 11, 30000, 1001}, {
++          GST_MAKE_FOURCC ('Y', '4', '1', 'B'), 720, 480, 40, 33, 30000, 1001}, {
++          GST_MAKE_FOURCC ('I', '4', '2', '0'), 720, 576, 59, 54, 25, 1}, {
++          GST_MAKE_FOURCC ('I', '4', '2', '0'), 720, 576, 118, 81, 25, 1}, {
++          GST_MAKE_FOURCC ('Y', '4', '1', 'B'), 720, 576, 59, 54, 25, 1}, {
++          GST_MAKE_FOURCC ('Y', '4', '1', 'B'), 720, 576, 118, 81, 25, 1}
++        };
++        GstCaps *temp;
++        gint n_sizes = G_N_ELEMENTS (profiles);
++
++        caps = gst_caps_new_empty ();
++        for (i = 0; i < n_sizes; i++) {
++          temp = gst_caps_new_simple (mimetype,
++              "width", G_TYPE_INT, profiles[i].width,
++              "height", G_TYPE_INT, profiles[i].height,
++              "framerate", GST_TYPE_FRACTION, profiles[i].framerate_n,
++              profiles[i].framerate_d, "pixel-aspect-ratio", GST_TYPE_FRACTION,
++              profiles[i].par_n, profiles[i].par_d, NULL);
++
++          gst_caps_append (caps, temp);
++        }
++        break;
++      }
++      case CODEC_ID_DNXHD:
++      {
++        caps = gst_caps_new_simple (mimetype,
++            "width", G_TYPE_INT, 1920,
++            "height", G_TYPE_INT, 1080,
++            "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
++        gst_caps_append (caps, gst_caps_new_simple (mimetype,
++                "width", G_TYPE_INT, 1280,
++                "height", G_TYPE_INT, 720,
++                "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL));
++        break;
++      }
++      default:
++        break;
++    }
++  }
++
++  /* no fixed caps or special restrictions applied;
++   * default unfixed setting */
++  if (!caps) {
++    GST_DEBUG ("Creating default caps");
++    caps = gst_caps_new_simple (mimetype,
++        "width", GST_TYPE_INT_RANGE, 16, 4096,
++        "height", GST_TYPE_INT_RANGE, 16, 4096,
++        "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
++  }
++
++  for (i = 0; i < gst_caps_get_size (caps); i++) {
++    va_start (var_args, fieldname);
++    structure = gst_caps_get_structure (caps, i);
++    gst_structure_set_valist (structure, fieldname, var_args);
++    va_end (var_args);
++  }
++
++  return caps;
++}
++
++/* same for audio - now with channels/sample rate
++ */
++static GstCaps *
++gst_ff_aud_caps_new (AVCodecContext * context, enum CodecID codec_id,
++    const char *mimetype, const char *fieldname, ...)
++{
++  GstCaps *caps = NULL;
++  GstStructure *structure = NULL;
++  gint i;
++  va_list var_args;
++
++  /* fixed, non-probing context */
++  if (context != NULL && context->channels != -1) {
++    GstAudioChannelPosition *pos;
++    guint64 channel_layout = context->channel_layout;
++
++    if (channel_layout == 0) {
++      const guint64 default_channel_set[] = {
++        0, 0, AV_CH_LAYOUT_SURROUND, AV_CH_LAYOUT_QUAD, AV_CH_LAYOUT_5POINT0,
++        AV_CH_LAYOUT_5POINT1, 0, AV_CH_LAYOUT_7POINT1
++      };
++
++      switch (codec_id) {
++        case CODEC_ID_EAC3:
++        case CODEC_ID_AC3:
++        case CODEC_ID_DTS:
++          if (context->channels > 0
++              && context->channels < G_N_ELEMENTS (default_channel_set))
++            channel_layout = default_channel_set[context->channels - 1];
++          break;
++        default:
++          break;
++      }
++    }
++
++    caps = gst_caps_new_simple (mimetype,
++        "rate", G_TYPE_INT, context->sample_rate,
++        "channels", G_TYPE_INT, context->channels, NULL);
++
++    pos = gst_ff_channel_layout_to_gst (channel_layout, context->channels);
++    if (pos != NULL) {
++      gst_audio_set_channel_positions (gst_caps_get_structure (caps, 0), pos);
++      g_free (pos);
++    }
++  } else {
++    gint maxchannels = 2;
++    const gint *rates = NULL;
++    gint n_rates = 0;
++
++    /* so we must be after restricted caps in this case */
++    switch (codec_id) {
++      case CODEC_ID_AAC:
++      case CODEC_ID_AAC_LATM:
++      case CODEC_ID_DTS:
++        maxchannels = 6;
++        break;
++      case CODEC_ID_MP2:
++      {
++        const static gint l_rates[] =
++            { 48000, 44100, 32000, 24000, 22050, 16000 };
++        n_rates = G_N_ELEMENTS (l_rates);
++        rates = l_rates;
++        break;
++      }
++      case CODEC_ID_EAC3:
++      case CODEC_ID_AC3:
++      {
++        const static gint l_rates[] = { 48000, 44100, 32000 };
++        maxchannels = 6;
++        n_rates = G_N_ELEMENTS (l_rates);
++        rates = l_rates;
++        break;
++      }
++      case CODEC_ID_ADPCM_G722:
++      {
++        const static gint l_rates[] = { 16000 };
++        n_rates = G_N_ELEMENTS (l_rates);
++        rates = l_rates;
++        maxchannels = 1;
++        break;
++      }
++      case CODEC_ID_ADPCM_G726:
++      {
++        const static gint l_rates[] = { 8000 };
++        n_rates = G_N_ELEMENTS (l_rates);
++        rates = l_rates;
++        maxchannels = 1;
++        break;
++      }
++      case CODEC_ID_ADPCM_SWF:
++      {
++        const static gint l_rates[] = { 11025, 22050, 44100 };
++        n_rates = G_N_ELEMENTS (l_rates);
++        rates = l_rates;
++        break;
++      }
++      case CODEC_ID_ROQ_DPCM:
++      {
++        const static gint l_rates[] = { 22050 };
++        n_rates = G_N_ELEMENTS (l_rates);
++        rates = l_rates;
++        break;
++      }
++      case CODEC_ID_AMR_NB:
++      {
++        const static gint l_rates[] = { 8000 };
++        maxchannels = 1;
++        n_rates = G_N_ELEMENTS (l_rates);
++        rates = l_rates;
++        break;
++      }
++      case CODEC_ID_AMR_WB:
++      {
++        const static gint l_rates[] = { 16000 };
++        maxchannels = 1;
++        n_rates = G_N_ELEMENTS (l_rates);
++        rates = l_rates;
++        break;
++      }
++      default:
++        break;
++    }
++
++    /* TODO: handle context->channel_layouts here to set
++     * the list of channel layouts supported by the encoder.
++     * Unfortunately no encoder uses this yet....
++     */
++    /* regardless of encode/decode, open up channels if applicable */
++    /* Until decoders/encoders expose the maximum number of channels
++     * they support, we whitelist them here. */
++    switch (codec_id) {
++      case CODEC_ID_WMAPRO:
++      case CODEC_ID_TRUEHD:
++        maxchannels = 8;
++        break;
++      default:
++        break;
++    }
++
++    if (maxchannels == 1)
++      caps = gst_caps_new_simple (mimetype,
++          "channels", G_TYPE_INT, maxchannels, NULL);
++    else
++      caps = gst_caps_new_simple (mimetype,
++          "channels", GST_TYPE_INT_RANGE, 1, maxchannels, NULL);
++    if (n_rates) {
++      GValue list = { 0, };
++      GstStructure *structure;
++
++      g_value_init (&list, GST_TYPE_LIST);
++      for (i = 0; i < n_rates; i++) {
++        GValue v = { 0, };
++
++        g_value_init (&v, G_TYPE_INT);
++        g_value_set_int (&v, rates[i]);
++        gst_value_list_append_value (&list, &v);
++        g_value_unset (&v);
++      }
++      structure = gst_caps_get_structure (caps, 0);
++      gst_structure_set_value (structure, "rate", &list);
++      g_value_unset (&list);
++    } else
++      gst_caps_set_simple (caps, "rate", GST_TYPE_INT_RANGE, 4000, 96000, NULL);
++  }
++
++  for (i = 0; i < gst_caps_get_size (caps); i++) {
++    va_start (var_args, fieldname);
++    structure = gst_caps_get_structure (caps, i);
++    gst_structure_set_valist (structure, fieldname, var_args);
++    va_end (var_args);
++  }
++
++  return caps;
++}
++
++/* Convert a FFMPEG codec ID and optional AVCodecContext
++ * to a GstCaps. If the context is ommitted, no fixed values
++ * for video/audio size will be included in the GstCaps
++ *
++ * CodecID is primarily meant for compressed data GstCaps!
++ *
++ * encode is a special parameter. gstffmpegdec will say
++ * FALSE, gstffmpegenc will say TRUE. The output caps
++ * depends on this, in such a way that it will be very
++ * specific, defined, fixed and correct caps for encoders,
++ * yet very wide, "forgiving" caps for decoders. Example
++ * for mp3: decode: audio/mpeg,mpegversion=1,layer=[1-3]
++ * but encode: audio/mpeg,mpegversion=1,layer=3,bitrate=x,
++ * rate=x,channels=x.
++ */
++
++GstCaps *
++gst_ffmpeg_codecid_to_caps (enum CodecID codec_id,
++    AVCodecContext * context, gboolean encode)
++{
++  GstCaps *caps = NULL;
++  gboolean buildcaps = FALSE;
++
++  GST_LOG ("codec_id:%d, context:%p, encode:%d", codec_id, context, encode);
++
++  switch (codec_id) {
++    case CODEC_ID_MPEG1VIDEO:
++      /* FIXME: bitrate */
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/mpeg",
++          "mpegversion", G_TYPE_INT, 1,
++          "systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
++      break;
++
++    case CODEC_ID_MPEG2VIDEO:
++      if (encode) {
++        /* FIXME: bitrate */
++        caps = gst_ff_vid_caps_new (context, codec_id, "video/mpeg",
++            "mpegversion", G_TYPE_INT, 2,
++            "systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
++      } else {
++        /* decode both MPEG-1 and MPEG-2; width/height/fps are all in
++         * the MPEG video stream headers, so may be omitted from caps. */
++        caps = gst_caps_new_simple ("video/mpeg",
++            "mpegversion", GST_TYPE_INT_RANGE, 1, 2,
++            "systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
++      }
++      break;
++
++    case CODEC_ID_MPEG2VIDEO_XVMC:
++      /* this is a special ID - don't need it in GStreamer, I think */
++      break;
++
++    case CODEC_ID_H263:
++      if (encode) {
++        caps = gst_ff_vid_caps_new (context, codec_id, "video/x-h263",
++            "variant", G_TYPE_STRING, "itu",
++            "h263version", G_TYPE_STRING, "h263", NULL);
++      } else {
++        /* don't pass codec_id, we can decode other variants with the H263
++         * decoder that don't have specific size requirements
++         */
++        caps = gst_ff_vid_caps_new (context, CODEC_ID_NONE, "video/x-h263",
++            "variant", G_TYPE_STRING, "itu", NULL);
++      }
++      break;
++
++    case CODEC_ID_H263P:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-h263",
++          "variant", G_TYPE_STRING, "itu",
++          "h263version", G_TYPE_STRING, "h263p", NULL);
++      if (encode && context) {
++
++        gst_caps_set_simple (caps,
++            "annex-f", G_TYPE_BOOLEAN, context->flags & CODEC_FLAG_4MV,
++            "annex-j", G_TYPE_BOOLEAN, context->flags & CODEC_FLAG_LOOP_FILTER,
++            "annex-i", G_TYPE_BOOLEAN, context->flags & CODEC_FLAG_AC_PRED,
++            "annex-t", G_TYPE_BOOLEAN, context->flags & CODEC_FLAG_AC_PRED,
++            NULL);
++      }
++      break;
++
++    case CODEC_ID_H263I:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-intel-h263",
++          "variant", G_TYPE_STRING, "intel", NULL);
++      break;
++
++    case CODEC_ID_H261:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-h261", NULL);
++      break;
++
++    case CODEC_ID_RV10:
++    case CODEC_ID_RV20:
++    case CODEC_ID_RV30:
++    case CODEC_ID_RV40:
++    {
++      gint version;
++
++      switch (codec_id) {
++        case CODEC_ID_RV40:
++          version = 4;
++          break;
++        case CODEC_ID_RV30:
++          version = 3;
++          break;
++        case CODEC_ID_RV20:
++          version = 2;
++          break;
++        default:
++          version = 1;
++          break;
++      }
++
++      /* FIXME: context->sub_id must be filled in during decoding */
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-pn-realvideo",
++          "systemstream", G_TYPE_BOOLEAN, FALSE,
++          "rmversion", G_TYPE_INT, version, NULL);
++      if (context) {
++        gst_caps_set_simple (caps, "format", G_TYPE_INT, context->sub_id, NULL);
++        if (context->extradata_size >= 8) {
++          gst_caps_set_simple (caps,
++              "subformat", G_TYPE_INT, GST_READ_UINT32_BE (context->extradata),
++              NULL);
++        }
++      }
++    }
++      break;
++
++    case CODEC_ID_MP1:
++      /* FIXME: bitrate */
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/mpeg",
++          "mpegversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, 1, NULL);
++      break;
++
++    case CODEC_ID_MP2:
++      /* FIXME: bitrate */
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/mpeg",
++          "mpegversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, 2, NULL);
++      break;
++
++    case CODEC_ID_MP3:
++      if (encode) {
++        /* FIXME: bitrate */
++        caps = gst_ff_aud_caps_new (context, codec_id, "audio/mpeg",
++            "mpegversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, 3, NULL);
++      } else {
++        /* Decodes MPEG-1 layer 1/2/3. Samplerate, channels et al are
++         * in the MPEG audio header, so may be omitted from caps. */
++        caps = gst_caps_new_simple ("audio/mpeg",
++            "mpegversion", G_TYPE_INT, 1,
++            "layer", GST_TYPE_INT_RANGE, 1, 3, NULL);
++      }
++      break;
++
++    case CODEC_ID_MUSEPACK7:
++      caps =
++          gst_ff_aud_caps_new (context, codec_id,
++          "audio/x-ffmpeg-parsed-musepack", "streamversion", G_TYPE_INT, 7,
++          NULL);
++      break;
++
++    case CODEC_ID_MUSEPACK8:
++      caps =
++          gst_ff_aud_caps_new (context, codec_id,
++          "audio/x-ffmpeg-parsed-musepack", "streamversion", G_TYPE_INT, 8,
++          NULL);
++      break;
++
++    case CODEC_ID_AC3:
++      /* FIXME: bitrate */
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-ac3", NULL);
++      break;
++
++    case CODEC_ID_EAC3:
++      /* FIXME: bitrate */
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-eac3", NULL);
++      break;
++
++    case CODEC_ID_TRUEHD:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-true-hd", NULL);
++      break;
++
++    case CODEC_ID_ATRAC1:
++      caps =
++          gst_ff_aud_caps_new (context, codec_id, "audio/x-vnd.sony.atrac1",
++          NULL);
++      break;
++
++    case CODEC_ID_ATRAC3:
++      caps =
++          gst_ff_aud_caps_new (context, codec_id, "audio/x-vnd.sony.atrac3",
++          NULL);
++      break;
++
++    case CODEC_ID_DTS:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-dts", NULL);
++      break;
++
++    case CODEC_ID_APE:
++      caps =
++          gst_ff_aud_caps_new (context, codec_id, "audio/x-ffmpeg-parsed-ape",
++          NULL);
++      if (context) {
++        gst_caps_set_simple (caps,
++            "depth", G_TYPE_INT, context->bits_per_coded_sample, NULL);
++      }
++      break;
++
++    case CODEC_ID_MLP:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-mlp", NULL);
++      break;
++
++    case CODEC_ID_IMC:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-imc", NULL);
++      break;
++
++      /* MJPEG is normal JPEG, Motion-JPEG and Quicktime MJPEG-A. MJPEGB
++       * is Quicktime's MJPEG-B. LJPEG is lossless JPEG. I don't know what
++       * sp5x is, but it's apparently something JPEG... We don't separate
++       * between those in GStreamer. Should we (at least between MJPEG,
++       * MJPEG-B and sp5x decoding...)? */
++    case CODEC_ID_MJPEG:
++    case CODEC_ID_LJPEG:
++      caps = gst_ff_vid_caps_new (context, codec_id, "image/jpeg", NULL);
++      break;
++
++    case CODEC_ID_SP5X:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/sp5x", NULL);
++      break;
++
++    case CODEC_ID_MJPEGB:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-mjpeg-b", NULL);
++      break;
++
++    case CODEC_ID_MPEG4:
++      if (encode && context != NULL) {
++        /* I'm not exactly sure what ffmpeg outputs... ffmpeg itself uses
++         * the AVI fourcc 'DIVX', but 'mp4v' for Quicktime... */
++        switch (context->codec_tag) {
++          case GST_MAKE_FOURCC ('D', 'I', 'V', 'X'):
++            caps = gst_ff_vid_caps_new (context, codec_id, "video/x-divx",
++                "divxversion", G_TYPE_INT, 5, NULL);
++            break;
++          case GST_MAKE_FOURCC ('m', 'p', '4', 'v'):
++          default:
++            /* FIXME: bitrate */
++            caps = gst_ff_vid_caps_new (context, codec_id, "video/mpeg",
++                "systemstream", G_TYPE_BOOLEAN, FALSE,
++                "mpegversion", G_TYPE_INT, 4, NULL);
++            break;
++        }
++      } else {
++        /* The trick here is to separate xvid, divx, mpeg4, 3ivx et al */
++        caps = gst_ff_vid_caps_new (context, codec_id, "video/mpeg",
++            "mpegversion", G_TYPE_INT, 4,
++            "systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
++        if (encode) {
++          gst_caps_append (caps, gst_ff_vid_caps_new (context, codec_id,
++                  "video/x-divx", "divxversion", G_TYPE_INT, 5, NULL));
++        } else {
++          gst_caps_append (caps, gst_ff_vid_caps_new (context, codec_id,
++                  "video/x-divx", "divxversion", GST_TYPE_INT_RANGE, 4, 5,
++                  NULL));
++          gst_caps_append (caps, gst_ff_vid_caps_new (context, codec_id,
++                  "video/x-xvid", NULL));
++          gst_caps_append (caps, gst_ff_vid_caps_new (context, codec_id,
++                  "video/x-3ivx", NULL));
++        }
++      }
++      break;
++
++    case CODEC_ID_RAWVIDEO:
++      caps =
++          gst_ffmpeg_codectype_to_caps (AVMEDIA_TYPE_VIDEO, context, codec_id,
++          encode);
++      break;
++
++    case CODEC_ID_MSMPEG4V1:
++    case CODEC_ID_MSMPEG4V2:
++    case CODEC_ID_MSMPEG4V3:
++    {
++      gint version = 41 + codec_id - CODEC_ID_MSMPEG4V1;
++
++      /* encode-FIXME: bitrate */
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-msmpeg",
++          "msmpegversion", G_TYPE_INT, version, NULL);
++      if (!encode && codec_id == CODEC_ID_MSMPEG4V3) {
++        gst_caps_append (caps, gst_ff_vid_caps_new (context, codec_id,
++                "video/x-divx", "divxversion", G_TYPE_INT, 3, NULL));
++      }
++    }
++      break;
++
++    case CODEC_ID_WMV1:
++    case CODEC_ID_WMV2:
++    {
++      gint version = (codec_id == CODEC_ID_WMV1) ? 1 : 2;
++
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-wmv",
++          "wmvversion", G_TYPE_INT, version, NULL);
++    }
++      break;
++
++    case CODEC_ID_FLV1:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-flash-video",
++          "flvversion", G_TYPE_INT, 1, NULL);
++      break;
++
++    case CODEC_ID_SVQ1:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-svq",
++          "svqversion", G_TYPE_INT, 1, NULL);
++      break;
++
++    case CODEC_ID_SVQ3:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-svq",
++          "svqversion", G_TYPE_INT, 3, NULL);
++      break;
++
++    case CODEC_ID_DVAUDIO:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-dv", NULL);
++      break;
++
++    case CODEC_ID_DVVIDEO:
++    {
++      if (encode && context) {
++        guint32 fourcc;
++
++        switch (context->pix_fmt) {
++          case PIX_FMT_YUYV422:
++            fourcc = GST_MAKE_FOURCC ('Y', 'U', 'Y', '2');
++            break;
++          case PIX_FMT_YUV420P:
++            fourcc = GST_MAKE_FOURCC ('I', '4', '2', '0');
++            break;
++          case PIX_FMT_YUVA420P:
++            fourcc = GST_MAKE_FOURCC ('A', '4', '2', '0');
++            break;
++          case PIX_FMT_YUV411P:
++            fourcc = GST_MAKE_FOURCC ('Y', '4', '1', 'B');
++            break;
++          case PIX_FMT_YUV422P:
++            fourcc = GST_MAKE_FOURCC ('Y', '4', '2', 'B');
++            break;
++          case PIX_FMT_YUV410P:
++            fourcc = GST_MAKE_FOURCC ('Y', 'U', 'V', '9');
++            break;
++          default:
++            GST_WARNING
++                ("Couldnt' find fourcc for pixfmt %d, defaulting to I420",
++                context->pix_fmt);
++            fourcc = GST_MAKE_FOURCC ('I', '4', '2', '0');
++            break;
++        }
++        caps = gst_ff_vid_caps_new (context, codec_id, "video/x-dv",
++            "systemstream", G_TYPE_BOOLEAN, FALSE,
++            "format", GST_TYPE_FOURCC, fourcc, NULL);
++      } else {
++        caps = gst_ff_vid_caps_new (context, codec_id, "video/x-dv",
++            "systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
++      }
++    }
++      break;
++
++    case CODEC_ID_WMAV1:
++    case CODEC_ID_WMAV2:
++    {
++      gint version = (codec_id == CODEC_ID_WMAV1) ? 1 : 2;
++
++      if (context) {
++        caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-wma",
++            "wmaversion", G_TYPE_INT, version,
++            "block_align", G_TYPE_INT, context->block_align,
++            "bitrate", G_TYPE_INT, context->bit_rate, NULL);
++      } else {
++        caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-wma",
++            "wmaversion", G_TYPE_INT, version,
++            "block_align", GST_TYPE_INT_RANGE, 0, G_MAXINT,
++            "bitrate", GST_TYPE_INT_RANGE, 0, G_MAXINT, NULL);
++      }
++    }
++      break;
++    case CODEC_ID_WMAPRO:
++    {
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-wma",
++          "wmaversion", G_TYPE_INT, 3, NULL);
++      break;
++    }
++
++    case CODEC_ID_WMAVOICE:
++    {
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-wms", NULL);
++      break;
++    }
++
++    case CODEC_ID_MACE3:
++    case CODEC_ID_MACE6:
++    {
++      gint version = (codec_id == CODEC_ID_MACE3) ? 3 : 6;
++
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-mace",
++          "maceversion", G_TYPE_INT, version, NULL);
++    }
++      break;
++
++    case CODEC_ID_HUFFYUV:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-huffyuv", NULL);
++      if (context) {
++        gst_caps_set_simple (caps,
++            "bpp", G_TYPE_INT, context->bits_per_coded_sample, NULL);
++      }
++      break;
++
++    case CODEC_ID_CYUV:
++      caps =
++          gst_ff_vid_caps_new (context, codec_id, "video/x-compressed-yuv",
++          NULL);
++      break;
++
++    case CODEC_ID_H264:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-h264", NULL);
++      break;
++
++    case CODEC_ID_INDEO5:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-indeo",
++          "indeoversion", G_TYPE_INT, 5, NULL);
++      break;
++
++    case CODEC_ID_INDEO3:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-indeo",
++          "indeoversion", G_TYPE_INT, 3, NULL);
++      break;
++
++    case CODEC_ID_INDEO2:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-indeo",
++          "indeoversion", G_TYPE_INT, 2, NULL);
++      break;
++
++    case CODEC_ID_FLASHSV:
++      caps =
++          gst_ff_vid_caps_new (context, codec_id, "video/x-flash-screen", NULL);
++      break;
++
++    case CODEC_ID_VP3:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-vp3", NULL);
++      break;
++
++    case CODEC_ID_VP5:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-vp5", NULL);
++      break;
++
++    case CODEC_ID_VP6:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-vp6", NULL);
++      break;
++
++    case CODEC_ID_VP6F:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-vp6-flash", NULL);
++      break;
++
++    case CODEC_ID_VP6A:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-vp6-alpha", NULL);
++      break;
++
++    case CODEC_ID_VP8:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-vp8", NULL);
++      break;
++
++    case CODEC_ID_THEORA:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-theora", NULL);
++      break;
++
++    case CODEC_ID_AAC:
++    {
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/mpeg", NULL);
++
++      if (!encode) {
++        GValue arr = { 0, };
++        GValue item = { 0, };
++
++        g_value_init (&arr, GST_TYPE_LIST);
++        g_value_init (&item, G_TYPE_INT);
++        g_value_set_int (&item, 2);
++        gst_value_list_append_value (&arr, &item);
++        g_value_set_int (&item, 4);
++        gst_value_list_append_value (&arr, &item);
++        g_value_unset (&item);
++
++        gst_caps_set_value (caps, "mpegversion", &arr);
++        g_value_unset (&arr);
++
++        g_value_init (&arr, GST_TYPE_LIST);
++        g_value_init (&item, G_TYPE_STRING);
++        g_value_set_string (&item, "raw");
++        gst_value_list_append_value (&arr, &item);
++        g_value_set_string (&item, "adts");
++        gst_value_list_append_value (&arr, &item);
++        g_value_set_string (&item, "adif");
++        gst_value_list_append_value (&arr, &item);
++        g_value_unset (&item);
++
++        gst_caps_set_value (caps, "stream-format", &arr);
++        g_value_unset (&arr);
++      } else {
++        gst_caps_set_simple (caps, "mpegversion", G_TYPE_INT, 4,
++            "stream-format", G_TYPE_STRING, "raw",
++            "base-profile", G_TYPE_STRING, "lc", NULL);
++
++        if (context && context->extradata_size > 0)
++          gst_codec_utils_aac_caps_set_level_and_profile (caps,
++              context->extradata, context->extradata_size);
++      }
++
++      break;
++    }
++    case CODEC_ID_AAC_LATM:    /* LATM/LOAS AAC syntax */
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/mpeg",
++          "mpegversion", G_TYPE_INT, 4, "stream-format", G_TYPE_STRING, "loas",
++          NULL);
++      break;
++
++    case CODEC_ID_ASV1:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-asus",
++          "asusversion", G_TYPE_INT, 1, NULL);
++      break;
++    case CODEC_ID_ASV2:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-asus",
++          "asusversion", G_TYPE_INT, 2, NULL);
++      break;
++
++    case CODEC_ID_FFV1:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-ffv",
++          "ffvversion", G_TYPE_INT, 1, NULL);
++      break;
++
++    case CODEC_ID_4XM:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-4xm", NULL);
++      break;
++
++    case CODEC_ID_XAN_WC3:
++    case CODEC_ID_XAN_WC4:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-xan",
++          "wcversion", G_TYPE_INT, 3 - CODEC_ID_XAN_WC3 + codec_id, NULL);
++      break;
++
++    case CODEC_ID_CLJR:
++      caps =
++          gst_ff_vid_caps_new (context, codec_id,
++          "video/x-cirrus-logic-accupak", NULL);
++      break;
++
++    case CODEC_ID_FRAPS:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-fraps", NULL);
++      break;
++
++    case CODEC_ID_MDEC:
++    case CODEC_ID_ROQ:
++    case CODEC_ID_INTERPLAY_VIDEO:
++      buildcaps = TRUE;
++      break;
++
++    case CODEC_ID_VCR1:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-ati-vcr",
++          "vcrversion", G_TYPE_INT, 1, NULL);
++      break;
++
++    case CODEC_ID_RPZA:
++      caps =
++          gst_ff_vid_caps_new (context, codec_id, "video/x-apple-video", NULL);
++      break;
++
++    case CODEC_ID_CINEPAK:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-cinepak", NULL);
++      break;
++
++      /* WS_VQA belogns here (order) */
++
++    case CODEC_ID_MSRLE:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-rle",
++          "layout", G_TYPE_STRING, "microsoft", NULL);
++      if (context) {
++        gst_caps_set_simple (caps,
++            "depth", G_TYPE_INT, (gint) context->bits_per_coded_sample, NULL);
++      } else {
++        gst_caps_set_simple (caps, "depth", GST_TYPE_INT_RANGE, 1, 64, NULL);
++      }
++      break;
++
++    case CODEC_ID_QTRLE:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-rle",
++          "layout", G_TYPE_STRING, "quicktime", NULL);
++      if (context) {
++        gst_caps_set_simple (caps,
++            "depth", G_TYPE_INT, (gint) context->bits_per_coded_sample, NULL);
++      } else {
++        gst_caps_set_simple (caps, "depth", GST_TYPE_INT_RANGE, 1, 64, NULL);
++      }
++      break;
++
++    case CODEC_ID_MSVIDEO1:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-msvideocodec",
++          "msvideoversion", G_TYPE_INT, 1, NULL);
++      break;
++
++    case CODEC_ID_WMV3:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-wmv",
++          "wmvversion", G_TYPE_INT, 3, NULL);
++      break;
++    case CODEC_ID_VC1:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-wmv",
++          "wmvversion", G_TYPE_INT, 3, "format", GST_TYPE_FOURCC,
++          GST_MAKE_FOURCC ('W', 'V', 'C', '1'), NULL);
++      break;
++    case CODEC_ID_QDM2:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-qdm2", NULL);
++      break;
++
++    case CODEC_ID_MSZH:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-mszh", NULL);
++      break;
++
++    case CODEC_ID_ZLIB:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-zlib", NULL);
++      break;
++
++    case CODEC_ID_TRUEMOTION1:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-truemotion",
++          "trueversion", G_TYPE_INT, 1, NULL);
++      break;
++    case CODEC_ID_TRUEMOTION2:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-truemotion",
++          "trueversion", G_TYPE_INT, 2, NULL);
++      break;
++
++    case CODEC_ID_ULTI:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-ultimotion",
++          NULL);
++      break;
++
++    case CODEC_ID_TSCC:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-camtasia", NULL);
++      if (context) {
++        gst_caps_set_simple (caps,
++            "depth", G_TYPE_INT, (gint) context->bits_per_coded_sample, NULL);
++      } else {
++        gst_caps_set_simple (caps, "depth", GST_TYPE_INT_RANGE, 8, 32, NULL);
++      }
++      break;
++
++    case CODEC_ID_KMVC:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-kmvc", NULL);
++      break;
++
++    case CODEC_ID_NUV:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-nuv", NULL);
++      break;
++
++    case CODEC_ID_GIF:
++      caps = gst_ff_vid_caps_new (context, codec_id, "image/gif", NULL);
++      break;
++
++    case CODEC_ID_PNG:
++      caps = gst_ff_vid_caps_new (context, codec_id, "image/png", NULL);
++      break;
++
++    case CODEC_ID_PPM:
++      caps = gst_ff_vid_caps_new (context, codec_id, "image/ppm", NULL);
++      break;
++
++    case CODEC_ID_PBM:
++      caps = gst_ff_vid_caps_new (context, codec_id, "image/pbm", NULL);
++      break;
++
++    case CODEC_ID_PAM:
++      caps =
++          gst_ff_vid_caps_new (context, codec_id, "image/x-portable-anymap",
++          NULL);
++      break;
++
++    case CODEC_ID_PGM:
++      caps =
++          gst_ff_vid_caps_new (context, codec_id, "image/x-portable-graymap",
++          NULL);
++      break;
++
++    case CODEC_ID_PCX:
++      caps = gst_ff_vid_caps_new (context, codec_id, "image/x-pcx", NULL);
++      break;
++
++    case CODEC_ID_SGI:
++      caps = gst_ff_vid_caps_new (context, codec_id, "image/x-sgi", NULL);
++      break;
++
++    case CODEC_ID_TARGA:
++      caps = gst_ff_vid_caps_new (context, codec_id, "image/x-tga", NULL);
++      break;
++
++    case CODEC_ID_TIFF:
++      caps = gst_ff_vid_caps_new (context, codec_id, "image/tiff", NULL);
++      break;
++
++    case CODEC_ID_SUNRAST:
++      caps =
++          gst_ff_vid_caps_new (context, codec_id, "image/x-sun-raster", NULL);
++      break;
++
++    case CODEC_ID_SMC:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-smc", NULL);
++      break;
++
++    case CODEC_ID_QDRAW:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-qdrw", NULL);
++      break;
++
++    case CODEC_ID_DNXHD:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-dnxhd", NULL);
++      break;
++
++    case CODEC_ID_MIMIC:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-mimic", NULL);
++      break;
++
++    case CODEC_ID_VMNC:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-vmnc", NULL);
++      break;
++
++    case CODEC_ID_TRUESPEECH:
++      caps =
++          gst_ff_aud_caps_new (context, codec_id, "audio/x-truespeech", NULL);
++      break;
++
++    case CODEC_ID_QCELP:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/qcelp", NULL);
++      break;
++
++    case CODEC_ID_AMV:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-amv", NULL);
++      break;
++
++    case CODEC_ID_AASC:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-aasc", NULL);
++      break;
++
++    case CODEC_ID_LOCO:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-loco", NULL);
++      break;
++
++    case CODEC_ID_ZMBV:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-zmbv", NULL);
++      break;
++
++    case CODEC_ID_LAGARITH:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-lagarith", NULL);
++      break;
++
++    case CODEC_ID_CSCD:
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-camstudio", NULL);
++      if (context) {
++        gst_caps_set_simple (caps,
++            "depth", G_TYPE_INT, (gint) context->bits_per_coded_sample, NULL);
++      } else {
++        gst_caps_set_simple (caps, "depth", GST_TYPE_INT_RANGE, 8, 32, NULL);
++      }
++      break;
++
++    case CODEC_ID_WS_VQA:
++    case CODEC_ID_IDCIN:
++    case CODEC_ID_8BPS:
++    case CODEC_ID_FLIC:
++    case CODEC_ID_VMDVIDEO:
++    case CODEC_ID_VMDAUDIO:
++    case CODEC_ID_SNOW:
++    case CODEC_ID_VIXL:
++    case CODEC_ID_QPEG:
++    case CODEC_ID_PGMYUV:
++    case CODEC_ID_FFVHUFF:
++    case CODEC_ID_WNV1:
++    case CODEC_ID_MP3ADU:
++    case CODEC_ID_MP3ON4:
++    case CODEC_ID_WESTWOOD_SND1:
++    case CODEC_ID_MMVIDEO:
++    case CODEC_ID_AVS:
++    case CODEC_ID_CAVS:
++      buildcaps = TRUE;
++      break;
++
++      /* weird quasi-codecs for the demuxers only */
++    case CODEC_ID_PCM_S16LE:
++    case CODEC_ID_PCM_S16BE:
++    case CODEC_ID_PCM_U16LE:
++    case CODEC_ID_PCM_U16BE:
++    case CODEC_ID_PCM_S8:
++    case CODEC_ID_PCM_U8:
++    {
++      gint width = 0, depth = 0, endianness = 0;
++      gboolean signedness = FALSE;      /* blabla */
++
++      switch (codec_id) {
++        case CODEC_ID_PCM_S16LE:
++          width = 16;
++          depth = 16;
++          endianness = G_LITTLE_ENDIAN;
++          signedness = TRUE;
++          break;
++        case CODEC_ID_PCM_S16BE:
++          width = 16;
++          depth = 16;
++          endianness = G_BIG_ENDIAN;
++          signedness = TRUE;
++          break;
++        case CODEC_ID_PCM_U16LE:
++          width = 16;
++          depth = 16;
++          endianness = G_LITTLE_ENDIAN;
++          signedness = FALSE;
++          break;
++        case CODEC_ID_PCM_U16BE:
++          width = 16;
++          depth = 16;
++          endianness = G_BIG_ENDIAN;
++          signedness = FALSE;
++          break;
++        case CODEC_ID_PCM_S8:
++          width = 8;
++          depth = 8;
++          endianness = G_BYTE_ORDER;
++          signedness = TRUE;
++          break;
++        case CODEC_ID_PCM_U8:
++          width = 8;
++          depth = 8;
++          endianness = G_BYTE_ORDER;
++          signedness = FALSE;
++          break;
++        default:
++          g_assert (0);         /* don't worry, we never get here */
++          break;
++      }
++
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-raw-int",
++          "width", G_TYPE_INT, width,
++          "depth", G_TYPE_INT, depth,
++          "endianness", G_TYPE_INT, endianness,
++          "signed", G_TYPE_BOOLEAN, signedness, NULL);
++    }
++      break;
++
++    case CODEC_ID_PCM_MULAW:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-mulaw", NULL);
++      break;
++
++    case CODEC_ID_PCM_ALAW:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-alaw", NULL);
++      break;
++
++    case CODEC_ID_ADPCM_G722:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/G722", NULL);
++      if (context)
++        gst_caps_set_simple (caps,
++            "block_align", G_TYPE_INT, context->block_align,
++            "bitrate", G_TYPE_INT, context->bit_rate, NULL);
++      break;
++
++    case CODEC_ID_ADPCM_G726:
++    {
++      /* the G726 decoder can also handle G721 */
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-adpcm",
++          "layout", G_TYPE_STRING, "g726", NULL);
++      if (context)
++        gst_caps_set_simple (caps,
++            "block_align", G_TYPE_INT, context->block_align,
++            "bitrate", G_TYPE_INT, context->bit_rate, NULL);
++
++      if (!encode) {
++        gst_caps_append (caps, gst_caps_new_simple ("audio/x-adpcm",
++                "layout", G_TYPE_STRING, "g721",
++                "channels", G_TYPE_INT, 1, "rate", G_TYPE_INT, 8000, NULL));
++      }
++      break;
++    }
++    case CODEC_ID_ADPCM_IMA_QT:
++    case CODEC_ID_ADPCM_IMA_WAV:
++    case CODEC_ID_ADPCM_IMA_DK3:
++    case CODEC_ID_ADPCM_IMA_DK4:
++    case CODEC_ID_ADPCM_IMA_WS:
++    case CODEC_ID_ADPCM_IMA_SMJPEG:
++    case CODEC_ID_ADPCM_IMA_AMV:
++    case CODEC_ID_ADPCM_IMA_ISS:
++    case CODEC_ID_ADPCM_IMA_EA_EACS:
++    case CODEC_ID_ADPCM_IMA_EA_SEAD:
++    case CODEC_ID_ADPCM_MS:
++    case CODEC_ID_ADPCM_4XM:
++    case CODEC_ID_ADPCM_XA:
++    case CODEC_ID_ADPCM_ADX:
++    case CODEC_ID_ADPCM_EA:
++    case CODEC_ID_ADPCM_CT:
++    case CODEC_ID_ADPCM_SWF:
++    case CODEC_ID_ADPCM_YAMAHA:
++    case CODEC_ID_ADPCM_SBPRO_2:
++    case CODEC_ID_ADPCM_SBPRO_3:
++    case CODEC_ID_ADPCM_SBPRO_4:
++    case CODEC_ID_ADPCM_EA_R1:
++    case CODEC_ID_ADPCM_EA_R2:
++    case CODEC_ID_ADPCM_EA_R3:
++    case CODEC_ID_ADPCM_EA_MAXIS_XA:
++    case CODEC_ID_ADPCM_EA_XAS:
++    case CODEC_ID_ADPCM_THP:
++    {
++      const gchar *layout = NULL;
++
++      switch (codec_id) {
++        case CODEC_ID_ADPCM_IMA_QT:
++          layout = "quicktime";
++          break;
++        case CODEC_ID_ADPCM_IMA_WAV:
++          layout = "dvi";
++          break;
++        case CODEC_ID_ADPCM_IMA_DK3:
++          layout = "dk3";
++          break;
++        case CODEC_ID_ADPCM_IMA_DK4:
++          layout = "dk4";
++          break;
++        case CODEC_ID_ADPCM_IMA_WS:
++          layout = "westwood";
++          break;
++        case CODEC_ID_ADPCM_IMA_SMJPEG:
++          layout = "smjpeg";
++          break;
++        case CODEC_ID_ADPCM_IMA_AMV:
++          layout = "amv";
++          break;
++        case CODEC_ID_ADPCM_IMA_ISS:
++          layout = "iss";
++          break;
++        case CODEC_ID_ADPCM_IMA_EA_EACS:
++          layout = "ea-eacs";
++          break;
++        case CODEC_ID_ADPCM_IMA_EA_SEAD:
++          layout = "ea-sead";
++          break;
++        case CODEC_ID_ADPCM_MS:
++          layout = "microsoft";
++          break;
++        case CODEC_ID_ADPCM_4XM:
++          layout = "4xm";
++          break;
++        case CODEC_ID_ADPCM_XA:
++          layout = "xa";
++          break;
++        case CODEC_ID_ADPCM_ADX:
++          layout = "adx";
++          break;
++        case CODEC_ID_ADPCM_EA:
++          layout = "ea";
++          break;
++        case CODEC_ID_ADPCM_CT:
++          layout = "ct";
++          break;
++        case CODEC_ID_ADPCM_SWF:
++          layout = "swf";
++          break;
++        case CODEC_ID_ADPCM_YAMAHA:
++          layout = "yamaha";
++          break;
++        case CODEC_ID_ADPCM_SBPRO_2:
++          layout = "sbpro2";
++          break;
++        case CODEC_ID_ADPCM_SBPRO_3:
++          layout = "sbpro3";
++          break;
++        case CODEC_ID_ADPCM_SBPRO_4:
++          layout = "sbpro4";
++          break;
++        case CODEC_ID_ADPCM_EA_R1:
++          layout = "ea-r1";
++          break;
++        case CODEC_ID_ADPCM_EA_R2:
++          layout = "ea-r3";
++          break;
++        case CODEC_ID_ADPCM_EA_R3:
++          layout = "ea-r3";
++          break;
++        case CODEC_ID_ADPCM_EA_MAXIS_XA:
++          layout = "ea-maxis-xa";
++          break;
++        case CODEC_ID_ADPCM_EA_XAS:
++          layout = "ea-xas";
++          break;
++        case CODEC_ID_ADPCM_THP:
++          layout = "thp";
++          break;
++        default:
++          g_assert (0);         /* don't worry, we never get here */
++          break;
++      }
++
++      /* FIXME: someone please check whether we need additional properties
++       * in this caps definition. */
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-adpcm",
++          "layout", G_TYPE_STRING, layout, NULL);
++      if (context)
++        gst_caps_set_simple (caps,
++            "block_align", G_TYPE_INT, context->block_align,
++            "bitrate", G_TYPE_INT, context->bit_rate, NULL);
++    }
++      break;
++
++    case CODEC_ID_AMR_NB:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/AMR", NULL);
++      break;
++
++    case CODEC_ID_AMR_WB:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/AMR-WB", NULL);
++      break;
++
++    case CODEC_ID_GSM:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-gsm", NULL);
++      break;
++
++    case CODEC_ID_GSM_MS:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/ms-gsm", NULL);
++      break;
++
++    case CODEC_ID_NELLYMOSER:
++      caps =
++          gst_ff_aud_caps_new (context, codec_id, "audio/x-nellymoser", NULL);
++      break;
++
++    case CODEC_ID_SIPR:
++    {
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-sipro", NULL);
++      if (context) {
++        gst_caps_set_simple (caps,
++            "leaf_size", G_TYPE_INT, context->block_align,
++            "bitrate", G_TYPE_INT, context->bit_rate, NULL);
++      }
++    }
++      break;
++
++    case CODEC_ID_RA_144:
++    case CODEC_ID_RA_288:
++    case CODEC_ID_COOK:
++    {
++      gint version = 0;
++
++      switch (codec_id) {
++        case CODEC_ID_RA_144:
++          version = 1;
++          break;
++        case CODEC_ID_RA_288:
++          version = 2;
++          break;
++        case CODEC_ID_COOK:
++          version = 8;
++          break;
++        default:
++          break;
++      }
++
++      /* FIXME: properties? */
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-pn-realaudio",
++          "raversion", G_TYPE_INT, version, NULL);
++      if (context) {
++        gst_caps_set_simple (caps,
++            "leaf_size", G_TYPE_INT, context->block_align,
++            "bitrate", G_TYPE_INT, context->bit_rate, NULL);
++      }
++    }
++      break;
++
++    case CODEC_ID_ROQ_DPCM:
++    case CODEC_ID_INTERPLAY_DPCM:
++    case CODEC_ID_XAN_DPCM:
++    case CODEC_ID_SOL_DPCM:
++    {
++      const gchar *layout = NULL;
++
++      switch (codec_id) {
++        case CODEC_ID_ROQ_DPCM:
++          layout = "roq";
++          break;
++        case CODEC_ID_INTERPLAY_DPCM:
++          layout = "interplay";
++          break;
++        case CODEC_ID_XAN_DPCM:
++          layout = "xan";
++          break;
++        case CODEC_ID_SOL_DPCM:
++          layout = "sol";
++          break;
++        default:
++          g_assert (0);         /* don't worry, we never get here */
++          break;
++      }
++
++      /* FIXME: someone please check whether we need additional properties
++       * in this caps definition. */
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-dpcm",
++          "layout", G_TYPE_STRING, layout, NULL);
++      if (context)
++        gst_caps_set_simple (caps,
++            "block_align", G_TYPE_INT, context->block_align,
++            "bitrate", G_TYPE_INT, context->bit_rate, NULL);
++    }
++      break;
++
++    case CODEC_ID_SHORTEN:
++      caps = gst_caps_new_simple ("audio/x-shorten", NULL);
++      break;
++
++    case CODEC_ID_ALAC:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-alac", NULL);
++      if (context) {
++        gst_caps_set_simple (caps,
++            "samplesize", G_TYPE_INT, context->bits_per_coded_sample, NULL);
++      }
++      break;
++
++    case CODEC_ID_FLAC:
++      /* Note that ffmpeg has no encoder yet, but just for safety. In the
++       * encoder case, we want to add things like samplerate, channels... */
++      if (!encode) {
++        caps = gst_caps_new_simple ("audio/x-flac", NULL);
++      }
++      break;
++
++    case CODEC_ID_DVD_SUBTITLE:
++    case CODEC_ID_DVB_SUBTITLE:
++      caps = NULL;
++      break;
++    case CODEC_ID_BMP:
++      caps = gst_caps_new_simple ("image/bmp", NULL);
++      break;
++    case CODEC_ID_TTA:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-tta", NULL);
++      if (context) {
++        gst_caps_set_simple (caps,
++            "samplesize", G_TYPE_INT, context->bits_per_coded_sample, NULL);
++      }
++      break;
++    case CODEC_ID_TWINVQ:
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-twin-vq", NULL);
++      break;
++    default:
++      GST_DEBUG ("Unknown codec ID %d, please add mapping here", codec_id);
++      break;
++  }
++
++  if (buildcaps) {
++    AVCodec *codec;
++
++    if ((codec = avcodec_find_decoder (codec_id)) ||
++        (codec = avcodec_find_encoder (codec_id))) {
++      gchar *mime = NULL;
++
++      GST_LOG ("Could not create stream format caps for %s", codec->name);
++
++      switch (codec->type) {
++        case AVMEDIA_TYPE_VIDEO:
++          mime = g_strdup_printf ("video/x-gst_ff-%s", codec->name);
++          caps = gst_ff_vid_caps_new (context, codec_id, mime, NULL);
++          g_free (mime);
++          break;
++        case AVMEDIA_TYPE_AUDIO:
++          mime = g_strdup_printf ("audio/x-gst_ff-%s", codec->name);
++          caps = gst_ff_aud_caps_new (context, codec_id, mime, NULL);
++          if (context)
++            gst_caps_set_simple (caps,
++                "block_align", G_TYPE_INT, context->block_align,
++                "bitrate", G_TYPE_INT, context->bit_rate, NULL);
++          g_free (mime);
++          break;
++        default:
++          break;
++      }
++    }
++  }
++
++  if (caps != NULL) {
++
++    /* set private data */
++    if (context && context->extradata_size > 0) {
++      GstBuffer *data = gst_buffer_new_and_alloc (context->extradata_size);
++
++      memcpy (GST_BUFFER_DATA (data), context->extradata,
++          context->extradata_size);
++      gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER, data, NULL);
++      gst_buffer_unref (data);
++    }
++
++    /* palette */
++    if (context) {
++      gst_ffmpeg_set_palette (caps, context);
++    }
++
++    GST_LOG ("caps for codec_id=%d: %" GST_PTR_FORMAT, codec_id, caps);
++
++  } else {
++    GST_LOG ("No caps found for codec_id=%d", codec_id);
++  }
++
++  return caps;
++}
++
++/* Convert a FFMPEG Pixel Format and optional AVCodecContext
++ * to a GstCaps. If the context is ommitted, no fixed values
++ * for video/audio size will be included in the GstCaps
++ *
++ * See below for usefullness
++ */
++
++GstCaps *
++gst_ffmpeg_pixfmt_to_caps (enum PixelFormat pix_fmt, AVCodecContext * context,
++    enum CodecID codec_id)
++{
++  GstCaps *caps = NULL;
++
++  int bpp = 0, depth = 0, endianness = 0;
++  gulong g_mask = 0, r_mask = 0, b_mask = 0, a_mask = 0;
++  guint32 fmt = 0;
++
++  switch (pix_fmt) {
++    case PIX_FMT_YUVJ420P:
++    case PIX_FMT_YUV420P:
++      fmt = GST_MAKE_FOURCC ('I', '4', '2', '0');
++      break;
++    case PIX_FMT_YUVA420P:
++      fmt = GST_MAKE_FOURCC ('A', '4', '2', '0');
++      break;
++    case PIX_FMT_YUYV422:
++      fmt = GST_MAKE_FOURCC ('Y', 'U', 'Y', '2');
++      break;
++    case PIX_FMT_RGB24:
++      bpp = depth = 24;
++      endianness = G_BIG_ENDIAN;
++      r_mask = 0xff0000;
++      g_mask = 0x00ff00;
++      b_mask = 0x0000ff;
++      break;
++    case PIX_FMT_BGR24:
++      bpp = depth = 24;
++      endianness = G_BIG_ENDIAN;
++      r_mask = 0x0000ff;
++      g_mask = 0x00ff00;
++      b_mask = 0xff0000;
++      break;
++    case PIX_FMT_YUVJ422P:
++    case PIX_FMT_YUV422P:
++      fmt = GST_MAKE_FOURCC ('Y', '4', '2', 'B');
++      break;
++    case PIX_FMT_YUVJ444P:
++    case PIX_FMT_YUV444P:
++      fmt = GST_MAKE_FOURCC ('Y', '4', '4', '4');
++      break;
++    case PIX_FMT_RGB32:
++      bpp = 32;
++      depth = 32;
++      endianness = G_BIG_ENDIAN;
++#if (G_BYTE_ORDER == G_BIG_ENDIAN)
++      r_mask = 0x00ff0000;
++      g_mask = 0x0000ff00;
++      b_mask = 0x000000ff;
++      a_mask = 0xff000000;
++#else
++      r_mask = 0x0000ff00;
++      g_mask = 0x00ff0000;
++      b_mask = 0xff000000;
++      a_mask = 0x000000ff;
++#endif
++      break;
++    case PIX_FMT_YUV410P:
++      fmt = GST_MAKE_FOURCC ('Y', 'U', 'V', '9');
++      break;
++    case PIX_FMT_YUV411P:
++      fmt = GST_MAKE_FOURCC ('Y', '4', '1', 'B');
++      break;
++    case PIX_FMT_RGB565:
++      bpp = depth = 16;
++      endianness = G_BYTE_ORDER;
++      r_mask = 0xf800;
++      g_mask = 0x07e0;
++      b_mask = 0x001f;
++      break;
++    case PIX_FMT_RGB555:
++      bpp = 16;
++      depth = 15;
++      endianness = G_BYTE_ORDER;
++      r_mask = 0x7c00;
++      g_mask = 0x03e0;
++      b_mask = 0x001f;
++      break;
++    case PIX_FMT_PAL8:
++      bpp = depth = 8;
++      endianness = G_BYTE_ORDER;
++      break;
++    case PIX_FMT_GRAY8:
++      bpp = depth = 8;
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-raw-gray",
++          "bpp", G_TYPE_INT, bpp, "depth", G_TYPE_INT, depth, NULL);
++      break;
++    default:
++      /* give up ... */
++      break;
++  }
++
++  if (caps == NULL) {
++    if (bpp != 0) {
++      if (r_mask != 0) {
++        if (a_mask) {
++          caps = gst_ff_vid_caps_new (context, codec_id, "video/x-raw-rgb",
++              "bpp", G_TYPE_INT, bpp,
++              "depth", G_TYPE_INT, depth,
++              "red_mask", G_TYPE_INT, r_mask,
++              "green_mask", G_TYPE_INT, g_mask,
++              "blue_mask", G_TYPE_INT, b_mask,
++              "alpha_mask", G_TYPE_INT, a_mask,
++              "endianness", G_TYPE_INT, endianness, NULL);
++        } else {
++          caps = gst_ff_vid_caps_new (context, codec_id, "video/x-raw-rgb",
++              "bpp", G_TYPE_INT, bpp,
++              "depth", G_TYPE_INT, depth,
++              "red_mask", G_TYPE_INT, r_mask,
++              "green_mask", G_TYPE_INT, g_mask,
++              "blue_mask", G_TYPE_INT, b_mask,
++              "endianness", G_TYPE_INT, endianness, NULL);
++        }
++      } else {
++        caps = gst_ff_vid_caps_new (context, codec_id, "video/x-raw-rgb",
++            "bpp", G_TYPE_INT, bpp,
++            "depth", G_TYPE_INT, depth,
++            "endianness", G_TYPE_INT, endianness, NULL);
++        if (caps && context) {
++          gst_ffmpeg_set_palette (caps, context);
++        }
++      }
++    } else if (fmt) {
++      caps = gst_ff_vid_caps_new (context, codec_id, "video/x-raw-yuv",
++          "format", GST_TYPE_FOURCC, fmt, NULL);
++    }
++  }
++
++  if (caps != NULL) {
++    GST_DEBUG ("caps for pix_fmt=%d: %" GST_PTR_FORMAT, pix_fmt, caps);
++  } else {
++    GST_LOG ("No caps found for pix_fmt=%d", pix_fmt);
++  }
++
++  return caps;
++}
++
++/* Convert a FFMPEG Sample Format and optional AVCodecContext
++ * to a GstCaps. If the context is ommitted, no fixed values
++ * for video/audio size will be included in the GstCaps
++ *
++ * See below for usefullness
++ */
++
++static GstCaps *
++gst_ffmpeg_smpfmt_to_caps (enum AVSampleFormat sample_fmt,
++    AVCodecContext * context, enum CodecID codec_id)
++{
++  GstCaps *caps = NULL;
++
++  int bpp = 0;
++  gboolean integer = TRUE;
++  gboolean signedness = FALSE;
++
++  switch (sample_fmt) {
++    case AV_SAMPLE_FMT_S16:
++      signedness = TRUE;
++      bpp = 16;
++      break;
++
++    case AV_SAMPLE_FMT_S32:
++      signedness = TRUE;
++      bpp = 32;
++      break;
++
++    case AV_SAMPLE_FMT_FLT:
++      integer = FALSE;
++      bpp = 32;
++      break;
++
++    case AV_SAMPLE_FMT_DBL:
++      integer = FALSE;
++      bpp = 64;
++      break;
++    default:
++      /* .. */
++      break;
++  }
++
++  if (bpp) {
++    if (integer) {
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-raw-int",
++          "signed", G_TYPE_BOOLEAN, signedness,
++          "endianness", G_TYPE_INT, G_BYTE_ORDER,
++          "width", G_TYPE_INT, bpp, "depth", G_TYPE_INT, bpp, NULL);
++    } else {
++      caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-raw-float",
++          "endianness", G_TYPE_INT, G_BYTE_ORDER,
++          "width", G_TYPE_INT, bpp, NULL);
++    }
++  }
++
++  if (caps != NULL) {
++    GST_LOG ("caps for sample_fmt=%d: %" GST_PTR_FORMAT, sample_fmt, caps);
++  } else {
++    GST_LOG ("No caps found for sample_fmt=%d", sample_fmt);
++  }
++
++  return caps;
++}
++
++GstCaps *
++gst_ffmpeg_codectype_to_audio_caps (AVCodecContext * context,
++    enum CodecID codec_id, gboolean encode, AVCodec * codec)
++{
++  GstCaps *caps = NULL;
++
++  GST_DEBUG ("context:%p, codec_id:%d, encode:%d, codec:%p",
++      context, codec_id, encode, codec);
++  if (codec)
++    GST_DEBUG ("sample_fmts:%p, samplerates:%p",
++        codec->sample_fmts, codec->supported_samplerates);
++
++  if (context) {
++    /* Specific codec context */
++    caps = gst_ffmpeg_smpfmt_to_caps (context->sample_fmt, context, codec_id);
++  } else if (codec && codec->sample_fmts) {
++    GstCaps *temp;
++    int i;
++
++    caps = gst_caps_new_empty ();
++    for (i = 0; codec->sample_fmts[i] != -1; i++) {
++      temp =
++          gst_ffmpeg_smpfmt_to_caps (codec->sample_fmts[i], context, codec_id);
++      if (temp != NULL)
++        gst_caps_append (caps, temp);
++    }
++  } else {
++    GstCaps *temp;
++    enum AVSampleFormat i;
++    AVCodecContext ctx = { 0, };
++
++    ctx.channels = -1;
++    caps = gst_caps_new_empty ();
++    for (i = 0; i <= AV_SAMPLE_FMT_DBL; i++) {
++      temp = gst_ffmpeg_smpfmt_to_caps (i, encode ? &ctx : NULL, codec_id);
++      if (temp != NULL) {
++        gst_caps_append (caps, temp);
++      }
++    }
++  }
++  return caps;
++}
++
++GstCaps *
++gst_ffmpeg_codectype_to_video_caps (AVCodecContext * context,
++    enum CodecID codec_id, gboolean encode, AVCodec * codec)
++{
++  GstCaps *caps;
++
++  GST_LOG ("context:%p, codec_id:%d, encode:%d, codec:%p",
++      context, codec_id, encode, codec);
++
++  if (context) {
++    caps = gst_ffmpeg_pixfmt_to_caps (context->pix_fmt, context, codec_id);
++  } else {
++    GstCaps *temp;
++    enum PixelFormat i;
++    AVCodecContext ctx = { 0, };
++
++    caps = gst_caps_new_empty ();
++    for (i = 0; i < PIX_FMT_NB; i++) {
++      ctx.width = -1;
++      ctx.pix_fmt = i;
++      temp = gst_ffmpeg_pixfmt_to_caps (i, encode ? &ctx : NULL, codec_id);
++      if (temp != NULL) {
++        gst_caps_append (caps, temp);
++      }
++    }
++  }
++  return caps;
++}
++
++/* Convert a FFMPEG codec Type and optional AVCodecContext
++ * to a GstCaps. If the context is ommitted, no fixed values
++ * for video/audio size will be included in the GstCaps
++ *
++ * AVMediaType is primarily meant for uncompressed data GstCaps!
++ */
++
++GstCaps *
++gst_ffmpeg_codectype_to_caps (enum AVMediaType codec_type,
++    AVCodecContext * context, enum CodecID codec_id, gboolean encode)
++{
++  GstCaps *caps;
++
++  switch (codec_type) {
++    case AVMEDIA_TYPE_VIDEO:
++      caps =
++          gst_ffmpeg_codectype_to_video_caps (context, codec_id, encode, NULL);
++      break;
++    case AVMEDIA_TYPE_AUDIO:
++      caps =
++          gst_ffmpeg_codectype_to_audio_caps (context, codec_id, encode, NULL);
++      break;
++    default:
++      caps = NULL;
++      break;
++  }
++
++  return caps;
++}
++
++/* Convert a GstCaps (audio/raw) to a FFMPEG SampleFmt
++ * and other audio properties in a AVCodecContext.
++ *
++ * For usefullness, see below
++ */
++
++static void
++gst_ffmpeg_caps_to_smpfmt (const GstCaps * caps,
++    AVCodecContext * context, gboolean raw)
++{
++  GstStructure *structure;
++  gint depth = 0, width = 0, endianness = 0;
++  gboolean signedness = FALSE;
++  const gchar *name;
++
++  g_return_if_fail (gst_caps_get_size (caps) == 1);
++  structure = gst_caps_get_structure (caps, 0);
++
++  gst_structure_get_int (structure, "channels", &context->channels);
++  gst_structure_get_int (structure, "rate", &context->sample_rate);
++  gst_structure_get_int (structure, "block_align", &context->block_align);
++  gst_structure_get_int (structure, "bitrate", &context->bit_rate);
++
++  if (!raw)
++    return;
++
++  name = gst_structure_get_name (structure);
++
++  if (!strcmp (name, "audio/x-raw-float")) {
++    /* FLOAT */
++    if (gst_structure_get_int (structure, "width", &width) &&
++        gst_structure_get_int (structure, "endianness", &endianness)) {
++      if (endianness == G_BYTE_ORDER) {
++        if (width == 32)
++          context->sample_fmt = AV_SAMPLE_FMT_FLT;
++        else if (width == 64)
++          context->sample_fmt = AV_SAMPLE_FMT_DBL;
++      }
++    }
++  } else {
++    /* INT */
++    if (gst_structure_get_int (structure, "width", &width) &&
++        gst_structure_get_int (structure, "depth", &depth) &&
++        gst_structure_get_boolean (structure, "signed", &signedness) &&
++        gst_structure_get_int (structure, "endianness", &endianness)) {
++      if ((endianness == G_BYTE_ORDER) && (signedness == TRUE)) {
++        if ((width == 16) && (depth == 16))
++          context->sample_fmt = AV_SAMPLE_FMT_S16;
++        else if ((width == 32) && (depth == 32))
++          context->sample_fmt = AV_SAMPLE_FMT_S32;
++      }
++    }
++  }
++}
++
++
++/* Convert a GstCaps (video/raw) to a FFMPEG PixFmt
++ * and other video properties in a AVCodecContext.
++ *
++ * For usefullness, see below
++ */
++
++static void
++gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps,
++    AVCodecContext * context, gboolean raw)
++{
++  GstStructure *structure;
++  const GValue *fps;
++  const GValue *par = NULL;
++
++  GST_DEBUG ("converting caps %" GST_PTR_FORMAT, caps);
++  g_return_if_fail (gst_caps_get_size (caps) == 1);
++  structure = gst_caps_get_structure (caps, 0);
++
++  gst_structure_get_int (structure, "width", &context->width);
++  gst_structure_get_int (structure, "height", &context->height);
++  gst_structure_get_int (structure, "bpp", &context->bits_per_coded_sample);
++
++  fps = gst_structure_get_value (structure, "framerate");
++  if (fps != NULL && GST_VALUE_HOLDS_FRACTION (fps)) {
++
++    /* somehow these seem mixed up.. */
++    context->time_base.den = gst_value_get_fraction_numerator (fps);
++    context->time_base.num = gst_value_get_fraction_denominator (fps);
++    context->ticks_per_frame = 1;
++
++    GST_DEBUG ("setting framerate %d/%d = %lf",
++        context->time_base.den, context->time_base.num,
++        1. * context->time_base.den / context->time_base.num);
++  }
++
++  par = gst_structure_get_value (structure, "pixel-aspect-ratio");
++  if (par && GST_VALUE_HOLDS_FRACTION (par)) {
++
++    context->sample_aspect_ratio.num = gst_value_get_fraction_numerator (par);
++    context->sample_aspect_ratio.den = gst_value_get_fraction_denominator (par);
++
++    GST_DEBUG ("setting pixel-aspect-ratio %d/%d = %lf",
++        context->sample_aspect_ratio.den, context->sample_aspect_ratio.num,
++        1. * context->sample_aspect_ratio.den /
++        context->sample_aspect_ratio.num);
++  }
++
++  if (!raw)
++    return;
++
++  g_return_if_fail (fps != NULL && GST_VALUE_HOLDS_FRACTION (fps));
++
++  if (strcmp (gst_structure_get_name (structure), "video/x-raw-yuv") == 0) {
++    guint32 fourcc;
++
++    if (gst_structure_get_fourcc (structure, "format", &fourcc)) {
++      switch (fourcc) {
++        case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
++          context->pix_fmt = PIX_FMT_YUYV422;
++          break;
++        case GST_MAKE_FOURCC ('I', '4', '2', '0'):
++          context->pix_fmt = PIX_FMT_YUV420P;
++          break;
++        case GST_MAKE_FOURCC ('A', '4', '2', '0'):
++          context->pix_fmt = PIX_FMT_YUVA420P;
++          break;
++        case GST_MAKE_FOURCC ('Y', '4', '1', 'B'):
++          context->pix_fmt = PIX_FMT_YUV411P;
++          break;
++        case GST_MAKE_FOURCC ('Y', '4', '2', 'B'):
++          context->pix_fmt = PIX_FMT_YUV422P;
++          break;
++        case GST_MAKE_FOURCC ('Y', 'U', 'V', '9'):
++          context->pix_fmt = PIX_FMT_YUV410P;
++          break;
++#if 0
++        case FIXME:
++          context->pix_fmt = PIX_FMT_YUV444P;
++          break;
++#endif
++      }
++    }
++  } else if (strcmp (gst_structure_get_name (structure),
++          "video/x-raw-rgb") == 0) {
++    gint bpp = 0, rmask = 0, endianness = 0;
++
++    if (gst_structure_get_int (structure, "bpp", &bpp) &&
++        gst_structure_get_int (structure, "endianness", &endianness)) {
++      if (gst_structure_get_int (structure, "red_mask", &rmask)) {
++        switch (bpp) {
++          case 32:
++#if (G_BYTE_ORDER == G_BIG_ENDIAN)
++            if (rmask == 0x00ff0000)
++#else
++            if (rmask == 0x0000ff00)
++#endif
++              context->pix_fmt = PIX_FMT_RGB32;
++            break;
++          case 24:
++            if (rmask == 0x0000FF)
++              context->pix_fmt = PIX_FMT_BGR24;
++            else
++              context->pix_fmt = PIX_FMT_RGB24;
++            break;
++          case 16:
++            if (endianness == G_BYTE_ORDER)
++              context->pix_fmt = PIX_FMT_RGB565;
++            break;
++          case 15:
++            if (endianness == G_BYTE_ORDER)
++              context->pix_fmt = PIX_FMT_RGB555;
++            break;
++          default:
++            /* nothing */
++            break;
++        }
++      } else {
++        if (bpp == 8) {
++          context->pix_fmt = PIX_FMT_PAL8;
++          gst_ffmpeg_get_palette (caps, context);
++        }
++      }
++    }
++  } else if (strcmp (gst_structure_get_name (structure),
++          "video/x-raw-gray") == 0) {
++    gint bpp = 0;
++
++    if (gst_structure_get_int (structure, "bpp", &bpp)) {
++      switch (bpp) {
++        case 8:
++          context->pix_fmt = PIX_FMT_GRAY8;
++          break;
++      }
++    }
++  }
++}
++
++/* Convert a GstCaps and a FFMPEG codec Type to a
++ * AVCodecContext. If the context is ommitted, no fixed values
++ * for video/audio size will be included in the context
++ *
++ * AVMediaType is primarily meant for uncompressed data GstCaps!
++ */
++
++void
++gst_ffmpeg_caps_with_codectype (enum AVMediaType type,
++    const GstCaps * caps, AVCodecContext * context)
++{
++  if (context == NULL)
++    return;
++
++  switch (type) {
++    case AVMEDIA_TYPE_VIDEO:
++      gst_ffmpeg_caps_to_pixfmt (caps, context, TRUE);
++      break;
++
++    case AVMEDIA_TYPE_AUDIO:
++      gst_ffmpeg_caps_to_smpfmt (caps, context, TRUE);
++      break;
++
++    default:
++      /* unknown */
++      break;
++  }
++}
++
++#if 0
++static void
++nal_escape (guint8 * dst, guint8 * src, guint size, guint * destsize)
++{
++  guint8 *dstp = dst;
++  guint8 *srcp = src;
++  guint8 *end = src + size;
++  gint count = 0;
++
++  while (srcp < end) {
++    if (count == 2 && *srcp <= 0x03) {
++      GST_DEBUG ("added escape code");
++      *dstp++ = 0x03;
++      count = 0;
++    }
++    if (*srcp == 0)
++      count++;
++    else
++      count = 0;
++
++    GST_DEBUG ("copy %02x, count %d", *srcp, count);
++    *dstp++ = *srcp++;
++  }
++  *destsize = dstp - dst;
++}
++
++/* copy the config, escaping NAL units as we iterate them, if something fails we
++ * copy everything and hope for the best. */
++static void
++copy_config (guint8 * dst, guint8 * src, guint size, guint * destsize)
++{
++  guint8 *dstp = dst;
++  guint8 *srcp = src;
++  gint cnt, i;
++  guint nalsize, esize;
++
++  /* check size */
++  if (size < 7)
++    goto full_copy;
++
++  /* check version */
++  if (*srcp != 1)
++    goto full_copy;
++
++  cnt = *(srcp + 5) & 0x1f;     /* Number of sps */
++
++  GST_DEBUG ("num SPS %d", cnt);
++
++  memcpy (dstp, srcp, 6);
++  srcp += 6;
++  dstp += 6;
++
++  for (i = 0; i < cnt; i++) {
++    GST_DEBUG ("copy SPS %d", i);
++    nalsize = (srcp[0] << 8) | srcp[1];
++    nal_escape (dstp + 2, srcp + 2, nalsize, &esize);
++    dstp[0] = esize >> 8;
++    dstp[1] = esize & 0xff;
++    dstp += esize + 2;
++    srcp += nalsize + 2;
++  }
++
++  cnt = *(dstp++) = *(srcp++);  /* Number of pps */
++
++  GST_DEBUG ("num PPS %d", cnt);
++
++  for (i = 0; i < cnt; i++) {
++    GST_DEBUG ("copy PPS %d", i);
++    nalsize = (srcp[0] << 8) | srcp[1];
++    nal_escape (dstp + 2, srcp + 2, nalsize, &esize);
++    dstp[0] = esize >> 8;
++    dstp[1] = esize & 0xff;
++    dstp += esize + 2;
++    srcp += nalsize + 2;
++  }
++  *destsize = dstp - dst;
++
++  return;
++
++full_copy:
++  {
++    GST_DEBUG ("something unexpected, doing full copy");
++    memcpy (dst, src, size);
++    *destsize = size;
++    return;
++  }
++}
++#endif
++
++/*
++ * caps_with_codecid () transforms a GstCaps for a known codec
++ * ID into a filled-in context.
++ * codec_data from caps will override possible extradata already in the context
++ */
++
++void
++gst_ffmpeg_caps_with_codecid (enum CodecID codec_id,
++    enum AVMediaType codec_type, const GstCaps * caps, AVCodecContext * context)
++{
++  GstStructure *str;
++  const GValue *value;
++  const GstBuffer *buf;
++
++  GST_LOG ("codec_id:%d, codec_type:%d, caps:%" GST_PTR_FORMAT " context:%p",
++      codec_id, codec_type, caps, context);
++
++  if (!context || !gst_caps_get_size (caps))
++    return;
++
++  str = gst_caps_get_structure (caps, 0);
++
++  /* extradata parsing (esds [mpeg4], wma/wmv, msmpeg4v1/2/3, etc.) */
++  if ((value = gst_structure_get_value (str, "codec_data"))) {
++    guint size;
++    guint8 *data;
++
++    buf = GST_BUFFER_CAST (gst_value_get_mini_object (value));
++    size = GST_BUFFER_SIZE (buf);
++    data = GST_BUFFER_DATA (buf);
++
++    /* free the old one if it is there */
++    if (context->extradata)
++      av_free (context->extradata);
++
++#if 0
++    if (codec_id == CODEC_ID_H264) {
++      guint extrasize;
++
++      GST_DEBUG ("copy, escaping codec_data %d", size);
++      /* ffmpeg h264 expects the codec_data to be escaped, there is no real
++       * reason for this but let's just escape it for now. Start by allocating
++       * enough space, x2 is more than enough.
++       *
++       * FIXME, we disabled escaping because some file already contain escaped
++       * codec_data and then we escape twice and fail. It's better to leave it
++       * as is, as that is what most players do. */
++      context->extradata =
++          av_mallocz (GST_ROUND_UP_16 (size * 2 +
++              FF_INPUT_BUFFER_PADDING_SIZE));
++      copy_config (context->extradata, data, size, &extrasize);
++      GST_DEBUG ("escaped size: %d", extrasize);
++      context->extradata_size = extrasize;
++    } else
++#endif
++    {
++      /* allocate with enough padding */
++      GST_DEBUG ("copy codec_data");
++      context->extradata =
++          av_mallocz (GST_ROUND_UP_16 (size + FF_INPUT_BUFFER_PADDING_SIZE));
++      memcpy (context->extradata, data, size);
++      context->extradata_size = size;
++    }
++
++    /* Hack for VC1. Sometimes the first (length) byte is 0 for some files */
++    if (codec_id == CODEC_ID_VC1 && size > 0 && data[0] == 0) {
++      context->extradata[0] = (guint8) size;
++    }
++
++    GST_DEBUG ("have codec data of size %d", size);
++  } else if (context->extradata == NULL && codec_id != CODEC_ID_AAC_LATM &&
++      codec_id != CODEC_ID_FLAC) {
++    /* no extradata, alloc dummy with 0 sized, some codecs insist on reading
++     * extradata anyway which makes then segfault. */
++    context->extradata =
++        av_mallocz (GST_ROUND_UP_16 (FF_INPUT_BUFFER_PADDING_SIZE));
++    context->extradata_size = 0;
++    GST_DEBUG ("no codec data");
++  }
++
++  switch (codec_id) {
++    case CODEC_ID_MPEG4:
++    {
++      const gchar *mime = gst_structure_get_name (str);
++
++      if (!strcmp (mime, "video/x-divx"))
++        context->codec_tag = GST_MAKE_FOURCC ('D', 'I', 'V', 'X');
++      else if (!strcmp (mime, "video/x-xvid"))
++        context->codec_tag = GST_MAKE_FOURCC ('X', 'V', 'I', 'D');
++      else if (!strcmp (mime, "video/x-3ivx"))
++        context->codec_tag = GST_MAKE_FOURCC ('3', 'I', 'V', '1');
++      else if (!strcmp (mime, "video/mpeg"))
++        context->codec_tag = GST_MAKE_FOURCC ('m', 'p', '4', 'v');
++    }
++      break;
++
++    case CODEC_ID_SVQ3:
++      /* FIXME: this is a workaround for older gst-plugins releases
++       * (<= 0.8.9). This should be removed at some point, because
++       * it causes wrong decoded frame order. */
++      if (!context->extradata) {
++        gint halfpel_flag, thirdpel_flag, low_delay, unknown_svq3_flag;
++        guint16 flags;
++
++        if (gst_structure_get_int (str, "halfpel_flag", &halfpel_flag) ||
++            gst_structure_get_int (str, "thirdpel_flag", &thirdpel_flag) ||
++            gst_structure_get_int (str, "low_delay", &low_delay) ||
++            gst_structure_get_int (str, "unknown_svq3_flag",
++                &unknown_svq3_flag)) {
++          context->extradata = (guint8 *) av_mallocz (0x64);
++          g_stpcpy ((gchar *) context->extradata, "SVQ3");
++          flags = 1 << 3;
++          flags |= low_delay;
++          flags = flags << 2;
++          flags |= unknown_svq3_flag;
++          flags = flags << 6;
++          flags |= halfpel_flag;
++          flags = flags << 1;
++          flags |= thirdpel_flag;
++          flags = flags << 3;
++
++          flags = GUINT16_FROM_LE (flags);
++
++          memcpy ((gchar *) context->extradata + 0x62, &flags, 2);
++          context->extradata_size = 0x64;
++        }
++      }
++      break;
++
++    case CODEC_ID_MSRLE:
++    case CODEC_ID_QTRLE:
++    case CODEC_ID_TSCC:
++    case CODEC_ID_CSCD:
++    case CODEC_ID_APE:
++    {
++      gint depth;
++
++      if (gst_structure_get_int (str, "depth", &depth)) {
++        context->bits_per_coded_sample = depth;
++      } else {
++        GST_WARNING ("No depth field in caps %" GST_PTR_FORMAT, caps);
++      }
++
++    }
++      break;
++
++    case CODEC_ID_RV10:
++    case CODEC_ID_RV20:
++    case CODEC_ID_RV30:
++    case CODEC_ID_RV40:
++    {
++      gint format;
++
++      if (gst_structure_get_int (str, "format", &format))
++        context->sub_id = format;
++
++      break;
++    }
++    case CODEC_ID_COOK:
++    case CODEC_ID_RA_288:
++    case CODEC_ID_RA_144:
++    case CODEC_ID_SIPR:
++    {
++      gint leaf_size;
++      gint bitrate;
++
++      if (gst_structure_get_int (str, "leaf_size", &leaf_size))
++        context->block_align = leaf_size;
++      if (gst_structure_get_int (str, "bitrate", &bitrate))
++        context->bit_rate = bitrate;
++    }
++    case CODEC_ID_ALAC:
++      gst_structure_get_int (str, "samplesize",
++          &context->bits_per_coded_sample);
++      break;
++
++    case CODEC_ID_DVVIDEO:
++    {
++      guint32 fourcc;
++
++      if (gst_structure_get_fourcc (str, "format", &fourcc))
++        switch (fourcc) {
++          case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
++            context->pix_fmt = PIX_FMT_YUYV422;
++            break;
++          case GST_MAKE_FOURCC ('I', '4', '2', '0'):
++            context->pix_fmt = PIX_FMT_YUV420P;
++            break;
++          case GST_MAKE_FOURCC ('A', '4', '2', '0'):
++            context->pix_fmt = PIX_FMT_YUVA420P;
++            break;
++          case GST_MAKE_FOURCC ('Y', '4', '1', 'B'):
++            context->pix_fmt = PIX_FMT_YUV411P;
++            break;
++          case GST_MAKE_FOURCC ('Y', '4', '2', 'B'):
++            context->pix_fmt = PIX_FMT_YUV422P;
++            break;
++          case GST_MAKE_FOURCC ('Y', 'U', 'V', '9'):
++            context->pix_fmt = PIX_FMT_YUV410P;
++            break;
++          default:
++            GST_WARNING ("couldn't convert fourcc %" GST_FOURCC_FORMAT
++                " to a pixel format", GST_FOURCC_ARGS (fourcc));
++            break;
++        }
++      break;
++    }
++    case CODEC_ID_H263P:
++    {
++      gboolean val;
++
++      if (!gst_structure_get_boolean (str, "annex-f", &val) || val)
++        context->flags |= CODEC_FLAG_4MV;
++      else
++        context->flags &= ~CODEC_FLAG_4MV;
++      if ((!gst_structure_get_boolean (str, "annex-i", &val) || val) &&
++          (!gst_structure_get_boolean (str, "annex-t", &val) || val))
++        context->flags |= CODEC_FLAG_AC_PRED;
++      else
++        context->flags &= ~CODEC_FLAG_AC_PRED;
++      if (!gst_structure_get_boolean (str, "annex-j", &val) || val)
++        context->flags |= CODEC_FLAG_LOOP_FILTER;
++      else
++        context->flags &= ~CODEC_FLAG_LOOP_FILTER;
++      break;
++    }
++    case CODEC_ID_ADPCM_G726:
++    {
++      const gchar *layout;
++
++      if ((layout = gst_structure_get_string (str, "layout"))) {
++        if (!strcmp (layout, "g721")) {
++          context->sample_rate = 8000;
++          context->channels = 1;
++          context->bit_rate = 32000;
++        }
++      }
++      break;
++    }
++    default:
++      break;
++  }
++
++  if (!gst_caps_is_fixed (caps))
++    return;
++
++  /* common properties (width, height, fps) */
++  switch (codec_type) {
++    case AVMEDIA_TYPE_VIDEO:
++      gst_ffmpeg_caps_to_pixfmt (caps, context, codec_id == CODEC_ID_RAWVIDEO);
++      gst_ffmpeg_get_palette (caps, context);
++      break;
++    case AVMEDIA_TYPE_AUDIO:
++      gst_ffmpeg_caps_to_smpfmt (caps, context, FALSE);
++      break;
++    default:
++      break;
++  }
++
++  /* fixup of default settings */
++  switch (codec_id) {
++    case CODEC_ID_QCELP:
++      /* QCELP is always mono, no matter what the caps say */
++      context->channels = 1;
++      break;
++    default:
++      break;
++  }
++}
++
++/* _formatid_to_caps () is meant for muxers/demuxers, it
++ * transforms a name (ffmpeg way of ID'ing these, why don't
++ * they have unique numerical IDs?) to the corresponding
++ * caps belonging to that mux-format
++ *
++ * Note: we don't need any additional info because the caps
++ * isn't supposed to contain any useful info besides the
++ * media type anyway
++ */
++
++GstCaps *
++gst_ffmpeg_formatid_to_caps (const gchar * format_name)
++{
++  GstCaps *caps = NULL;
++
++  if (!strcmp (format_name, "mpeg")) {
++    caps = gst_caps_new_simple ("video/mpeg",
++        "systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
++  } else if (!strcmp (format_name, "mpegts")) {
++    caps = gst_caps_new_simple ("video/mpegts",
++        "systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
++  } else if (!strcmp (format_name, "rm")) {
++    caps = gst_caps_new_simple ("application/x-pn-realmedia",
++        "systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
++  } else if (!strcmp (format_name, "asf")) {
++    caps = gst_caps_new_simple ("video/x-ms-asf", NULL);
++  } else if (!strcmp (format_name, "avi")) {
++    caps = gst_caps_new_simple ("video/x-msvideo", NULL);
++  } else if (!strcmp (format_name, "wav")) {
++    caps = gst_caps_new_simple ("audio/x-wav", NULL);
++  } else if (!strcmp (format_name, "ape")) {
++    caps = gst_caps_new_simple ("application/x-ape", NULL);
++  } else if (!strcmp (format_name, "swf")) {
++    caps = gst_caps_new_simple ("application/x-shockwave-flash", NULL);
++  } else if (!strcmp (format_name, "au")) {
++    caps = gst_caps_new_simple ("audio/x-au", NULL);
++  } else if (!strcmp (format_name, "dv")) {
++    caps = gst_caps_new_simple ("video/x-dv",
++        "systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
++  } else if (!strcmp (format_name, "4xm")) {
++    caps = gst_caps_new_simple ("video/x-4xm", NULL);
++  } else if (!strcmp (format_name, "matroska")) {
++    caps = gst_caps_new_simple ("video/x-matroska", NULL);
++  } else if (!strcmp (format_name, "mp3")) {
++    caps = gst_caps_new_simple ("application/x-id3", NULL);
++  } else if (!strcmp (format_name, "flic")) {
++    caps = gst_caps_new_simple ("video/x-fli", NULL);
++  } else if (!strcmp (format_name, "flv")) {
++    caps = gst_caps_new_simple ("video/x-flv", NULL);
++  } else if (!strcmp (format_name, "tta")) {
++    caps = gst_caps_new_simple ("audio/x-ttafile", NULL);
++  } else if (!strcmp (format_name, "aiff")) {
++    caps = gst_caps_new_simple ("audio/x-aiff", NULL);
++  } else if (!strcmp (format_name, "mov_mp4_m4a_3gp_3g2")) {
++    caps =
++        gst_caps_from_string
++        ("application/x-3gp; video/quicktime; audio/x-m4a");
++  } else if (!strcmp (format_name, "mov")) {
++    caps = gst_caps_from_string ("video/quicktime,variant=(string)apple");
++  } else if (!strcmp (format_name, "mp4")) {
++    caps = gst_caps_from_string ("video/quicktime,variant=(string)iso");
++  } else if (!strcmp (format_name, "3gp")) {
++    caps = gst_caps_from_string ("video/quicktime,variant=(string)3gpp");
++  } else if (!strcmp (format_name, "3g2")) {
++    caps = gst_caps_from_string ("video/quicktime,variant=(string)3g2");
++  } else if (!strcmp (format_name, "psp")) {
++    caps = gst_caps_from_string ("video/quicktime,variant=(string)psp");
++  } else if (!strcmp (format_name, "ipod")) {
++    caps = gst_caps_from_string ("video/quicktime,variant=(string)ipod");
++  } else if (!strcmp (format_name, "aac")) {
++    caps = gst_caps_new_simple ("audio/mpeg",
++        "mpegversion", G_TYPE_INT, 4, NULL);
++  } else if (!strcmp (format_name, "gif")) {
++    caps = gst_caps_from_string ("image/gif");
++  } else if (!strcmp (format_name, "ogg")) {
++    caps = gst_caps_from_string ("application/ogg");
++  } else if (!strcmp (format_name, "mxf") || !strcmp (format_name, "mxf_d10")) {
++    caps = gst_caps_from_string ("application/mxf");
++  } else if (!strcmp (format_name, "gxf")) {
++    caps = gst_caps_from_string ("application/gxf");
++  } else if (!strcmp (format_name, "yuv4mpegpipe")) {
++    caps = gst_caps_new_simple ("application/x-yuv4mpeg",
++        "y4mversion", G_TYPE_INT, 2, NULL);
++  } else if (!strcmp (format_name, "mpc")) {
++    caps = gst_caps_from_string ("audio/x-musepack, streamversion = (int) 7");
++  } else if (!strcmp (format_name, "vqf")) {
++    caps = gst_caps_from_string ("audio/x-vqf");
++  } else if (!strcmp (format_name, "nsv")) {
++    caps = gst_caps_from_string ("video/x-nsv");
++  } else if (!strcmp (format_name, "amr")) {
++    caps = gst_caps_from_string ("audio/x-amr-nb-sh");
++  } else if (!strcmp (format_name, "webm")) {
++    caps = gst_caps_from_string ("video/webm");
++  } else {
++    gchar *name;
++
++    GST_LOG ("Could not create stream format caps for %s", format_name);
++    name = g_strdup_printf ("application/x-gst_ff-%s", format_name);
++    caps = gst_caps_new_simple (name, NULL);
++    g_free (name);
++  }
++
++  return caps;
++}
++
++gboolean
++gst_ffmpeg_formatid_get_codecids (const gchar * format_name,
++    enum CodecID ** video_codec_list, enum CodecID ** audio_codec_list,
++    AVOutputFormat * plugin)
++{
++  static enum CodecID tmp_vlist[] = {
++    CODEC_ID_NONE,
++    CODEC_ID_NONE
++  };
++  static enum CodecID tmp_alist[] = {
++    CODEC_ID_NONE,
++    CODEC_ID_NONE
++  };
++
++  GST_LOG ("format_name : %s", format_name);
++
++  if (!strcmp (format_name, "mp4")) {
++    static enum CodecID mp4_video_list[] = {
++      CODEC_ID_MPEG4, CODEC_ID_H264,
++      CODEC_ID_MJPEG,
++      CODEC_ID_NONE
++    };
++    static enum CodecID mp4_audio_list[] = {
++      CODEC_ID_AAC, CODEC_ID_MP3,
++      CODEC_ID_NONE
++    };
++
++    *video_codec_list = mp4_video_list;
++    *audio_codec_list = mp4_audio_list;
++  } else if (!strcmp (format_name, "mpeg")) {
++    static enum CodecID mpeg_video_list[] = { CODEC_ID_MPEG1VIDEO,
++      CODEC_ID_MPEG2VIDEO,
++      CODEC_ID_H264,
++      CODEC_ID_NONE
++    };
++    static enum CodecID mpeg_audio_list[] = { CODEC_ID_MP1,
++      CODEC_ID_MP2,
++      CODEC_ID_MP3,
++      CODEC_ID_NONE
++    };
++
++    *video_codec_list = mpeg_video_list;
++    *audio_codec_list = mpeg_audio_list;
++  } else if (!strcmp (format_name, "dvd")) {
++    static enum CodecID mpeg_video_list[] = { CODEC_ID_MPEG2VIDEO,
++      CODEC_ID_NONE
++    };
++    static enum CodecID mpeg_audio_list[] = { CODEC_ID_MP2,
++      CODEC_ID_AC3,
++      CODEC_ID_DTS,
++      CODEC_ID_PCM_S16BE,
++      CODEC_ID_NONE
++    };
++
++    *video_codec_list = mpeg_video_list;
++    *audio_codec_list = mpeg_audio_list;
++  } else if (!strcmp (format_name, "mpegts")) {
++    static enum CodecID mpegts_video_list[] = { CODEC_ID_MPEG1VIDEO,
++      CODEC_ID_MPEG2VIDEO,
++      CODEC_ID_H264,
++      CODEC_ID_NONE
++    };
++    static enum CodecID mpegts_audio_list[] = { CODEC_ID_MP2,
++      CODEC_ID_MP3,
++      CODEC_ID_AC3,
++      CODEC_ID_DTS,
++      CODEC_ID_AAC,
++      CODEC_ID_NONE
++    };
++
++    *video_codec_list = mpegts_video_list;
++    *audio_codec_list = mpegts_audio_list;
++  } else if (!strcmp (format_name, "vob")) {
++    static enum CodecID vob_video_list[] =
++        { CODEC_ID_MPEG2VIDEO, CODEC_ID_NONE };
++    static enum CodecID vob_audio_list[] = { CODEC_ID_MP2, CODEC_ID_AC3,
++      CODEC_ID_DTS, CODEC_ID_NONE
++    };
++
++    *video_codec_list = vob_video_list;
++    *audio_codec_list = vob_audio_list;
++  } else if (!strcmp (format_name, "flv")) {
++    static enum CodecID flv_video_list[] = { CODEC_ID_FLV1, CODEC_ID_NONE };
++    static enum CodecID flv_audio_list[] = { CODEC_ID_MP3, CODEC_ID_NONE };
++
++    *video_codec_list = flv_video_list;
++    *audio_codec_list = flv_audio_list;
++  } else if (!strcmp (format_name, "asf")) {
++    static enum CodecID asf_video_list[] =
++        { CODEC_ID_WMV1, CODEC_ID_WMV2, CODEC_ID_MSMPEG4V3, CODEC_ID_NONE };
++    static enum CodecID asf_audio_list[] =
++        { CODEC_ID_WMAV1, CODEC_ID_WMAV2, CODEC_ID_MP3, CODEC_ID_NONE };
++
++    *video_codec_list = asf_video_list;
++    *audio_codec_list = asf_audio_list;
++  } else if (!strcmp (format_name, "dv")) {
++    static enum CodecID dv_video_list[] = { CODEC_ID_DVVIDEO, CODEC_ID_NONE };
++    static enum CodecID dv_audio_list[] = { CODEC_ID_PCM_S16LE, CODEC_ID_NONE };
++
++    *video_codec_list = dv_video_list;
++    *audio_codec_list = dv_audio_list;
++  } else if (!strcmp (format_name, "mov")) {
++    static enum CodecID mov_video_list[] = {
++      CODEC_ID_SVQ1, CODEC_ID_SVQ3, CODEC_ID_MPEG4,
++      CODEC_ID_H263, CODEC_ID_H263P,
++      CODEC_ID_H264, CODEC_ID_DVVIDEO,
++      CODEC_ID_MJPEG,
++      CODEC_ID_NONE
++    };
++    static enum CodecID mov_audio_list[] = {
++      CODEC_ID_PCM_MULAW, CODEC_ID_PCM_ALAW, CODEC_ID_ADPCM_IMA_QT,
++      CODEC_ID_MACE3, CODEC_ID_MACE6, CODEC_ID_AAC,
++      CODEC_ID_AMR_NB, CODEC_ID_AMR_WB,
++      CODEC_ID_PCM_S16BE, CODEC_ID_PCM_S16LE,
++      CODEC_ID_MP3, CODEC_ID_NONE
++    };
++
++    *video_codec_list = mov_video_list;
++    *audio_codec_list = mov_audio_list;
++  } else if ((!strcmp (format_name, "3gp") || !strcmp (format_name, "3g2"))) {
++    static enum CodecID tgp_video_list[] = {
++      CODEC_ID_MPEG4, CODEC_ID_H263, CODEC_ID_H263P, CODEC_ID_H264,
++      CODEC_ID_NONE
++    };
++    static enum CodecID tgp_audio_list[] = {
++      CODEC_ID_AMR_NB, CODEC_ID_AMR_WB,
++      CODEC_ID_AAC,
++      CODEC_ID_NONE
++    };
++
++    *video_codec_list = tgp_video_list;
++    *audio_codec_list = tgp_audio_list;
++  } else if (!strcmp (format_name, "mmf")) {
++    static enum CodecID mmf_audio_list[] = {
++      CODEC_ID_ADPCM_YAMAHA, CODEC_ID_NONE
++    };
++    *video_codec_list = NULL;
++    *audio_codec_list = mmf_audio_list;
++  } else if (!strcmp (format_name, "amr")) {
++    static enum CodecID amr_audio_list[] = {
++      CODEC_ID_AMR_NB, CODEC_ID_AMR_WB,
++      CODEC_ID_NONE
++    };
++    *video_codec_list = NULL;
++    *audio_codec_list = amr_audio_list;
++  } else if (!strcmp (format_name, "gif")) {
++    static enum CodecID gif_image_list[] = {
++      CODEC_ID_RAWVIDEO, CODEC_ID_NONE
++    };
++    *video_codec_list = gif_image_list;
++    *audio_codec_list = NULL;
++  } else if ((plugin->audio_codec != CODEC_ID_NONE) ||
++      (plugin->video_codec != CODEC_ID_NONE)) {
++    tmp_vlist[0] = plugin->video_codec;
++    tmp_alist[0] = plugin->audio_codec;
++
++    *video_codec_list = tmp_vlist;
++    *audio_codec_list = tmp_alist;
++  } else {
++    GST_LOG ("Format %s not found", format_name);
++    return FALSE;
++  }
++
++  return TRUE;
++}
++
++/* Convert a GstCaps to a FFMPEG codec ID. Size et all
++ * are omitted, that can be queried by the user itself,
++ * we're not eating the GstCaps or anything
++ * A pointer to an allocated context is also needed for
++ * optional extra info
++ */
++
++enum CodecID
++gst_ffmpeg_caps_to_codecid (const GstCaps * caps, AVCodecContext * context)
++{
++  enum CodecID id = CODEC_ID_NONE;
++  const gchar *mimetype;
++  const GstStructure *structure;
++  gboolean video = FALSE, audio = FALSE;        /* we want to be sure! */
++
++  g_return_val_if_fail (caps != NULL, CODEC_ID_NONE);
++  g_return_val_if_fail (gst_caps_get_size (caps) == 1, CODEC_ID_NONE);
++  structure = gst_caps_get_structure (caps, 0);
++
++  mimetype = gst_structure_get_name (structure);
++
++  if (!strcmp (mimetype, "video/x-raw-rgb") ||
++      !strcmp (mimetype, "video/x-raw-yuv")) {
++    id = CODEC_ID_RAWVIDEO;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-raw-int")) {
++    gint depth, width, endianness;
++    gboolean signedness;
++
++    if (gst_structure_get_int (structure, "endianness", &endianness) &&
++        gst_structure_get_boolean (structure, "signed", &signedness) &&
++        gst_structure_get_int (structure, "width", &width) &&
++        gst_structure_get_int (structure, "depth", &depth) && depth == width) {
++      switch (depth) {
++        case 8:
++          if (signedness) {
++            id = CODEC_ID_PCM_S8;
++          } else {
++            id = CODEC_ID_PCM_U8;
++          }
++          break;
++        case 16:
++          switch (endianness) {
++            case G_BIG_ENDIAN:
++              if (signedness) {
++                id = CODEC_ID_PCM_S16BE;
++              } else {
++                id = CODEC_ID_PCM_U16BE;
++              }
++              break;
++            case G_LITTLE_ENDIAN:
++              if (signedness) {
++                id = CODEC_ID_PCM_S16LE;
++              } else {
++                id = CODEC_ID_PCM_U16LE;
++              }
++              break;
++          }
++          break;
++      }
++      if (id != CODEC_ID_NONE)
++        audio = TRUE;
++    }
++  } else if (!strcmp (mimetype, "audio/x-mulaw")) {
++    id = CODEC_ID_PCM_MULAW;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-alaw")) {
++    id = CODEC_ID_PCM_ALAW;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "video/x-dv")) {
++    gboolean sys_strm;
++
++    if (gst_structure_get_boolean (structure, "systemstream", &sys_strm) &&
++        !sys_strm) {
++      id = CODEC_ID_DVVIDEO;
++      video = TRUE;
++    }
++  } else if (!strcmp (mimetype, "audio/x-dv")) {        /* ??? */
++    id = CODEC_ID_DVAUDIO;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "video/x-h263")) {
++    const gchar *h263version =
++        gst_structure_get_string (structure, "h263version");
++    if (h263version && !strcmp (h263version, "h263p"))
++      id = CODEC_ID_H263P;
++    else
++      id = CODEC_ID_H263;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-intel-h263")) {
++    id = CODEC_ID_H263I;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-h261")) {
++    id = CODEC_ID_H261;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/mpeg")) {
++    gboolean sys_strm;
++    gint mpegversion;
++
++    if (gst_structure_get_boolean (structure, "systemstream", &sys_strm) &&
++        gst_structure_get_int (structure, "mpegversion", &mpegversion) &&
++        !sys_strm) {
++      switch (mpegversion) {
++        case 1:
++          id = CODEC_ID_MPEG1VIDEO;
++          break;
++        case 2:
++          id = CODEC_ID_MPEG2VIDEO;
++          break;
++        case 4:
++          id = CODEC_ID_MPEG4;
++          break;
++      }
++    }
++    if (id != CODEC_ID_NONE)
++      video = TRUE;
++  } else if (!strcmp (mimetype, "image/jpeg")) {
++    id = CODEC_ID_MJPEG;        /* A... B... */
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-jpeg-b")) {
++    id = CODEC_ID_MJPEGB;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-wmv")) {
++    gint wmvversion = 0;
++
++    if (gst_structure_get_int (structure, "wmvversion", &wmvversion)) {
++      switch (wmvversion) {
++        case 1:
++          id = CODEC_ID_WMV1;
++          break;
++        case 2:
++          id = CODEC_ID_WMV2;
++          break;
++        case 3:
++        {
++          guint32 fourcc;
++
++          /* WMV3 unless the fourcc exists and says otherwise */
++          id = CODEC_ID_WMV3;
++
++          if (gst_structure_get_fourcc (structure, "format", &fourcc)) {
++            if ((fourcc == GST_MAKE_FOURCC ('W', 'V', 'C', '1')) ||
++                (fourcc == GST_MAKE_FOURCC ('W', 'M', 'V', 'A'))) {
++              id = CODEC_ID_VC1;
++            }
++          }
++        }
++          break;
++      }
++    }
++    if (id != CODEC_ID_NONE)
++      video = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-vorbis")) {
++    id = CODEC_ID_VORBIS;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-qdm2")) {
++    id = CODEC_ID_QDM2;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/mpeg")) {
++    gint layer = 0;
++    gint mpegversion = 0;
++
++    if (gst_structure_get_int (structure, "mpegversion", &mpegversion)) {
++      switch (mpegversion) {
++        case 2:                /* ffmpeg uses faad for both... */
++        case 4:
++          id = CODEC_ID_AAC;
++          break;
++        case 1:
++          if (gst_structure_get_int (structure, "layer", &layer)) {
++            switch (layer) {
++              case 1:
++                id = CODEC_ID_MP1;
++                break;
++              case 2:
++                id = CODEC_ID_MP2;
++                break;
++              case 3:
++                id = CODEC_ID_MP3;
++                break;
++            }
++          }
++      }
++    }
++    if (id != CODEC_ID_NONE)
++      audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-musepack")) {
++    gint streamversion = -1;
++
++    if (gst_structure_get_int (structure, "streamversion", &streamversion)) {
++      if (streamversion == 7)
++        id = CODEC_ID_MUSEPACK7;
++    } else {
++      id = CODEC_ID_MUSEPACK7;
++    }
++  } else if (!strcmp (mimetype, "audio/x-wma")) {
++    gint wmaversion = 0;
++
++    if (gst_structure_get_int (structure, "wmaversion", &wmaversion)) {
++      switch (wmaversion) {
++        case 1:
++          id = CODEC_ID_WMAV1;
++          break;
++        case 2:
++          id = CODEC_ID_WMAV2;
++          break;
++        case 3:
++          id = CODEC_ID_WMAPRO;
++          break;
++      }
++    }
++    if (id != CODEC_ID_NONE)
++      audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-wms")) {
++    id = CODEC_ID_WMAVOICE;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-ac3")) {
++    id = CODEC_ID_AC3;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-eac3")) {
++    id = CODEC_ID_EAC3;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-vnd.sony.atrac3") ||
++      !strcmp (mimetype, "audio/atrac3")) {
++    id = CODEC_ID_ATRAC3;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-dts")) {
++    id = CODEC_ID_DTS;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "application/x-ape")) {
++    id = CODEC_ID_APE;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "video/x-msmpeg")) {
++    gint msmpegversion = 0;
++
++    if (gst_structure_get_int (structure, "msmpegversion", &msmpegversion)) {
++      switch (msmpegversion) {
++        case 41:
++          id = CODEC_ID_MSMPEG4V1;
++          break;
++        case 42:
++          id = CODEC_ID_MSMPEG4V2;
++          break;
++        case 43:
++          id = CODEC_ID_MSMPEG4V3;
++          break;
++      }
++    }
++    if (id != CODEC_ID_NONE)
++      video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-svq")) {
++    gint svqversion = 0;
++
++    if (gst_structure_get_int (structure, "svqversion", &svqversion)) {
++      switch (svqversion) {
++        case 1:
++          id = CODEC_ID_SVQ1;
++          break;
++        case 3:
++          id = CODEC_ID_SVQ3;
++          break;
++      }
++    }
++    if (id != CODEC_ID_NONE)
++      video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-huffyuv")) {
++    id = CODEC_ID_HUFFYUV;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-mace")) {
++    gint maceversion = 0;
++
++    if (gst_structure_get_int (structure, "maceversion", &maceversion)) {
++      switch (maceversion) {
++        case 3:
++          id = CODEC_ID_MACE3;
++          break;
++        case 6:
++          id = CODEC_ID_MACE6;
++          break;
++      }
++    }
++    if (id != CODEC_ID_NONE)
++      audio = TRUE;
++  } else if (!strcmp (mimetype, "video/x-theora")) {
++    id = CODEC_ID_THEORA;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-vp3")) {
++    id = CODEC_ID_VP3;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-vp5")) {
++    id = CODEC_ID_VP5;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-vp6")) {
++    id = CODEC_ID_VP6;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-vp6-flash")) {
++    id = CODEC_ID_VP6F;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-vp6-alpha")) {
++    id = CODEC_ID_VP6A;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-vp8")) {
++    id = CODEC_ID_VP8;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-flash-screen")) {
++    id = CODEC_ID_FLASHSV;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-indeo")) {
++    gint indeoversion = 0;
++
++    if (gst_structure_get_int (structure, "indeoversion", &indeoversion)) {
++      switch (indeoversion) {
++        case 5:
++          id = CODEC_ID_INDEO5;
++          break;
++        case 3:
++          id = CODEC_ID_INDEO3;
++          break;
++        case 2:
++          id = CODEC_ID_INDEO2;
++          break;
++      }
++      if (id != CODEC_ID_NONE)
++        video = TRUE;
++    }
++  } else if (!strcmp (mimetype, "video/x-divx")) {
++    gint divxversion = 0;
++
++    if (gst_structure_get_int (structure, "divxversion", &divxversion)) {
++      switch (divxversion) {
++        case 3:
++          id = CODEC_ID_MSMPEG4V3;
++          break;
++        case 4:
++        case 5:
++          id = CODEC_ID_MPEG4;
++          break;
++      }
++    }
++    if (id != CODEC_ID_NONE)
++      video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-3ivx")) {
++    id = CODEC_ID_MPEG4;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-xvid")) {
++    id = CODEC_ID_MPEG4;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-ffv")) {
++    gint ffvversion = 0;
++
++    if (gst_structure_get_int (structure, "ffvversion", &ffvversion) &&
++        ffvversion == 1) {
++      id = CODEC_ID_FFV1;
++      video = TRUE;
++    }
++  } else if (!strcmp (mimetype, "audio/x-adpcm")) {
++    const gchar *layout;
++
++    layout = gst_structure_get_string (structure, "layout");
++    if (layout == NULL) {
++      /* break */
++    } else if (!strcmp (layout, "quicktime")) {
++      id = CODEC_ID_ADPCM_IMA_QT;
++    } else if (!strcmp (layout, "microsoft")) {
++      id = CODEC_ID_ADPCM_MS;
++    } else if (!strcmp (layout, "dvi")) {
++      id = CODEC_ID_ADPCM_IMA_WAV;
++    } else if (!strcmp (layout, "4xm")) {
++      id = CODEC_ID_ADPCM_4XM;
++    } else if (!strcmp (layout, "smjpeg")) {
++      id = CODEC_ID_ADPCM_IMA_SMJPEG;
++    } else if (!strcmp (layout, "dk3")) {
++      id = CODEC_ID_ADPCM_IMA_DK3;
++    } else if (!strcmp (layout, "dk4")) {
++      id = CODEC_ID_ADPCM_IMA_DK4;
++    } else if (!strcmp (layout, "westwood")) {
++      id = CODEC_ID_ADPCM_IMA_WS;
++    } else if (!strcmp (layout, "iss")) {
++      id = CODEC_ID_ADPCM_IMA_ISS;
++    } else if (!strcmp (layout, "xa")) {
++      id = CODEC_ID_ADPCM_XA;
++    } else if (!strcmp (layout, "adx")) {
++      id = CODEC_ID_ADPCM_ADX;
++    } else if (!strcmp (layout, "ea")) {
++      id = CODEC_ID_ADPCM_EA;
++    } else if (!strcmp (layout, "g726")) {
++      id = CODEC_ID_ADPCM_G726;
++    } else if (!strcmp (layout, "g721")) {
++      id = CODEC_ID_ADPCM_G726;
++    } else if (!strcmp (layout, "ct")) {
++      id = CODEC_ID_ADPCM_CT;
++    } else if (!strcmp (layout, "swf")) {
++      id = CODEC_ID_ADPCM_SWF;
++    } else if (!strcmp (layout, "yamaha")) {
++      id = CODEC_ID_ADPCM_YAMAHA;
++    } else if (!strcmp (layout, "sbpro2")) {
++      id = CODEC_ID_ADPCM_SBPRO_2;
++    } else if (!strcmp (layout, "sbpro3")) {
++      id = CODEC_ID_ADPCM_SBPRO_3;
++    } else if (!strcmp (layout, "sbpro4")) {
++      id = CODEC_ID_ADPCM_SBPRO_4;
++    }
++    if (id != CODEC_ID_NONE)
++      audio = TRUE;
++  } else if (!strcmp (mimetype, "video/x-4xm")) {
++    id = CODEC_ID_4XM;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-dpcm")) {
++    const gchar *layout;
++
++    layout = gst_structure_get_string (structure, "layout");
++    if (!layout) {
++      /* .. */
++    } else if (!strcmp (layout, "roq")) {
++      id = CODEC_ID_ROQ_DPCM;
++    } else if (!strcmp (layout, "interplay")) {
++      id = CODEC_ID_INTERPLAY_DPCM;
++    } else if (!strcmp (layout, "xan")) {
++      id = CODEC_ID_XAN_DPCM;
++    } else if (!strcmp (layout, "sol")) {
++      id = CODEC_ID_SOL_DPCM;
++    }
++    if (id != CODEC_ID_NONE)
++      audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-flac")) {
++    id = CODEC_ID_FLAC;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-shorten")) {
++    id = CODEC_ID_SHORTEN;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-alac")) {
++    id = CODEC_ID_ALAC;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "video/x-cinepak")) {
++    id = CODEC_ID_CINEPAK;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-pn-realvideo")) {
++    gint rmversion;
++
++    if (gst_structure_get_int (structure, "rmversion", &rmversion)) {
++      switch (rmversion) {
++        case 1:
++          id = CODEC_ID_RV10;
++          break;
++        case 2:
++          id = CODEC_ID_RV20;
++          break;
++        case 3:
++          id = CODEC_ID_RV30;
++          break;
++        case 4:
++          id = CODEC_ID_RV40;
++          break;
++      }
++    }
++    if (id != CODEC_ID_NONE)
++      video = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-sipro")) {
++    id = CODEC_ID_SIPR;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/x-pn-realaudio")) {
++    gint raversion;
++
++    if (gst_structure_get_int (structure, "raversion", &raversion)) {
++      switch (raversion) {
++        case 1:
++          id = CODEC_ID_RA_144;
++          break;
++        case 2:
++          id = CODEC_ID_RA_288;
++          break;
++        case 8:
++          id = CODEC_ID_COOK;
++          break;
++      }
++    }
++    if (id != CODEC_ID_NONE)
++      audio = TRUE;
++  } else if (!strcmp (mimetype, "video/x-rle")) {
++    const gchar *layout;
++
++    if ((layout = gst_structure_get_string (structure, "layout"))) {
++      if (!strcmp (layout, "microsoft")) {
++        id = CODEC_ID_MSRLE;
++        video = TRUE;
++      }
++    }
++  } else if (!strcmp (mimetype, "video/x-xan")) {
++    gint wcversion = 0;
++
++    if ((gst_structure_get_int (structure, "wcversion", &wcversion))) {
++      switch (wcversion) {
++        case 3:
++          id = CODEC_ID_XAN_WC3;
++          video = TRUE;
++          break;
++        case 4:
++          id = CODEC_ID_XAN_WC4;
++          video = TRUE;
++          break;
++        default:
++          break;
++      }
++    }
++  } else if (!strcmp (mimetype, "audio/AMR")) {
++    audio = TRUE;
++    id = CODEC_ID_AMR_NB;
++  } else if (!strcmp (mimetype, "audio/AMR-WB")) {
++    id = CODEC_ID_AMR_WB;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "audio/qcelp")) {
++    id = CODEC_ID_QCELP;
++    audio = TRUE;
++  } else if (!strcmp (mimetype, "video/x-h264")) {
++    id = CODEC_ID_H264;
++    video = TRUE;
++  } else if (!strcmp (mimetype, "video/x-flash-video")) {
++    gint flvversion = 0;
++
++    if ((gst_structure_get_int (structure, "flvversion", &flvversion))) {
++      switch (flvversion) {
++        case 1:
++          id = CODEC_ID_FLV1;
++          video = TRUE;
++          break;
++        default:
++          break;
++      }
++    }
++
++  } else if (!strcmp (mimetype, "audio/x-nellymoser")) {
++    id = CODEC_ID_NELLYMOSER;
++    audio = TRUE;
++  } else if (!strncmp (mimetype, "audio/x-gst_ff-", 15)) {
++    gchar ext[16];
++    AVCodec *codec;
++
++    if (strlen (mimetype) <= 30 &&
++        sscanf (mimetype, "audio/x-gst_ff-%s", ext) == 1) {
++      if ((codec = avcodec_find_decoder_by_name (ext)) ||
++          (codec = avcodec_find_encoder_by_name (ext))) {
++        id = codec->id;
++        audio = TRUE;
++      }
++    }
++  } else if (!strncmp (mimetype, "video/x-gst_ff-", 15)) {
++    gchar ext[16];
++    AVCodec *codec;
++
++    if (strlen (mimetype) <= 30 &&
++        sscanf (mimetype, "video/x-gst_ff-%s", ext) == 1) {
++      if ((codec = avcodec_find_decoder_by_name (ext)) ||
++          (codec = avcodec_find_encoder_by_name (ext))) {
++        id = codec->id;
++        video = TRUE;
++      }
++    }
++  }
++
++  if (context != NULL) {
++    if (video == TRUE) {
++      context->codec_type = AVMEDIA_TYPE_VIDEO;
++    } else if (audio == TRUE) {
++      context->codec_type = AVMEDIA_TYPE_AUDIO;
++    } else {
++      context->codec_type = AVMEDIA_TYPE_UNKNOWN;
++    }
++    context->codec_id = id;
++    gst_ffmpeg_caps_with_codecid (id, context->codec_type, caps, context);
++  }
++
++  if (id != CODEC_ID_NONE) {
++    GST_DEBUG ("The id=%d belongs to the caps %" GST_PTR_FORMAT, id, caps);
++  } else {
++    GST_WARNING ("Couldn't figure out the id for caps %" GST_PTR_FORMAT, caps);
++  }
++
++  return id;
++}
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegcodecmap.c.rej gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegcodecmap.c.rej
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegcodecmap.c.rej	1970-01-01 01:00:00.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegcodecmap.c.rej	2014-08-08 15:31:06.055868246 +0200
+@@ -0,0 +1,12 @@
++--- ext/ffmpeg/gstffmpegcodecmap.c
+++++ ext/ffmpeg/gstffmpegcodecmap.c
++@@ -1884,9 +1842,6 @@
++             gst_ff_vid_caps_new (context, codec_id, encode, "video/x-raw-rgb",
++             "bpp", G_TYPE_INT, bpp, "depth", G_TYPE_INT, depth, "endianness",
++             G_TYPE_INT, endianness, NULL);
++-        if (caps && context) {
++-          gst_ffmpeg_set_palette (caps, context);
++-        }
++       }
++     } else if (fmt) {
++       caps = gst_ff_vid_caps_new (context, codec_id, encode, "video/x-raw-yuv",
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegdec.c gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegdec.c
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegdec.c	2014-08-08 14:46:31.462772351 +0200
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegdec.c	2014-08-08 15:32:18.608870847 +0200
+@@ -88,7 +88,6 @@
+       gint depth;
+     } audio;
+   } format;
+-  gboolean waiting_for_key;
+   gboolean discont;
+   gboolean clear_ts;
+ 
+@@ -438,7 +437,6 @@
+   ffmpegdec->pcache = NULL;
+   ffmpegdec->par = NULL;
+   ffmpegdec->opened = FALSE;
+-  ffmpegdec->waiting_for_key = TRUE;
+   ffmpegdec->skip_frame = ffmpegdec->lowres = 0;
+   ffmpegdec->direct_rendering = DEFAULT_DIRECT_RENDERING;
+   ffmpegdec->do_padding = DEFAULT_DO_PADDING;
+@@ -608,11 +606,6 @@
+     gst_ffmpeg_avcodec_close (ffmpegdec->context);
+   ffmpegdec->opened = FALSE;
+ 
+-  if (ffmpegdec->context->palctrl) {
+-    av_free (ffmpegdec->context->palctrl);
+-    ffmpegdec->context->palctrl = NULL;
+-  }
+-
+   if (ffmpegdec->context->extradata) {
+     av_free (ffmpegdec->context->extradata);
+     ffmpegdec->context->extradata = NULL;
+@@ -864,7 +857,7 @@
+ 
+   /* workaround encoder bugs */
+   ffmpegdec->context->workaround_bugs |= FF_BUG_AUTODETECT;
+-  ffmpegdec->context->error_recognition = 1;
++  ffmpegdec->context->err_recognition = 1;
+ 
+   /* for slow cpus */
+   ffmpegdec->context->lowres = ffmpegdec->lowres;
+@@ -944,7 +937,7 @@
+   fsize = gst_ffmpeg_avpicture_get_size (ffmpegdec->context->pix_fmt,
+       width, height);
+ 
+-  if (!ffmpegdec->context->palctrl && ffmpegdec->can_allocate_aligned) {
++  if (ffmpegdec->can_allocate_aligned) {
+     GST_LOG_OBJECT (ffmpegdec, "calling pad_alloc");
+     /* no pallete, we can use the buffer size to alloc */
+     ret = gst_pad_alloc_buffer_and_set_caps (ffmpegdec->srcpad,
+@@ -1083,7 +1076,6 @@
+   /* tell ffmpeg we own this buffer, tranfer the ref we have on the buffer to
+    * the opaque data. */
+   picture->type = FF_BUFFER_TYPE_USER;
+-  picture->age = 256 * 256 * 256 * 64;
+   picture->opaque = buf;
+ 
+ #ifdef EXTRA_REF
+@@ -1414,10 +1406,6 @@
+   } else {
+     if (diff >= 0) {
+       /* we're too slow, try to speed up */
+-      if (ffmpegdec->waiting_for_key) {
+-        /* we were waiting for a keyframe, that's ok */
+-        goto skipping;
+-      }
+       /* switch to skip_frame mode */
+       goto skip_frame;
+     }
+@@ -1427,11 +1415,6 @@
+   ffmpegdec->processed++;
+   return TRUE;
+ 
+-skipping:
+-  {
+-    res = FALSE;
+-    goto drop_qos;
+-  }
+ normal_mode:
+   {
+     if (ffmpegdec->context->skip_frame != AVDISCARD_DEFAULT) {
+@@ -1528,43 +1511,6 @@
+ }
+ 
+ 
+-/* figure out if the current picture is a keyframe, return TRUE if that is
+- * the case. */
+-static gboolean
+-check_keyframe (GstFFMpegDec * ffmpegdec)
+-{
+-  GstFFMpegDecClass *oclass;
+-  gboolean is_itype = FALSE;
+-  gboolean is_reference = FALSE;
+-  gboolean iskeyframe;
+-
+-  /* figure out if we are dealing with a keyframe */
+-  oclass = (GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
+-
+-  /* remember that we have B frames, we need this for the DTS -> PTS conversion
+-   * code */
+-  if (!ffmpegdec->has_b_frames && ffmpegdec->picture->pict_type == FF_B_TYPE) {
+-    GST_DEBUG_OBJECT (ffmpegdec, "we have B frames");
+-    ffmpegdec->has_b_frames = TRUE;
+-  }
+-
+-  is_itype = (ffmpegdec->picture->pict_type == FF_I_TYPE);
+-  is_reference = (ffmpegdec->picture->reference == 1);
+-
+-  iskeyframe = (is_itype || is_reference || ffmpegdec->picture->key_frame)
+-      || (oclass->in_plugin->id == CODEC_ID_INDEO3)
+-      || (oclass->in_plugin->id == CODEC_ID_MSZH)
+-      || (oclass->in_plugin->id == CODEC_ID_ZLIB)
+-      || (oclass->in_plugin->id == CODEC_ID_VP3)
+-      || (oclass->in_plugin->id == CODEC_ID_HUFFYUV);
+-
+-  GST_LOG_OBJECT (ffmpegdec,
+-      "current picture: type: %d, is_keyframe:%d, is_itype:%d, is_reference:%d",
+-      ffmpegdec->picture->pict_type, iskeyframe, is_itype, is_reference);
+-
+-  return iskeyframe;
+-}
+-
+ /* get an outbuf buffer with the current picture */
+ static GstFlowReturn
+ get_output_buffer (GstFFMpegDec * ffmpegdec, GstBuffer ** outbuf)
+@@ -1694,7 +1640,6 @@
+ {
+   gint len = -1;
+   gint have_data;
+-  gboolean iskeyframe;
+   gboolean mode_switch;
+   gboolean decode;
+   gint skip_frame = AVDISCARD_DEFAULT;
+@@ -1809,7 +1754,6 @@
+     gst_ffmpegdec_negotiate (ffmpegdec, TRUE);
+   }
+ 
+-
+   /* Whether a frame is interlaced or not is unknown at the time of
+      buffer allocation, so caps on the buffer in opaque will have
+      the previous frame's interlaced flag set. So if interlacedness
+@@ -1831,10 +1775,6 @@
+     }
+   }
+ 
+-  /* check if we are dealing with a keyframe here, this will also check if we
+-   * are dealing with B frames. */
+-  iskeyframe = check_keyframe (ffmpegdec);
+-
+   /* check that the timestamps go upwards */
+   if (ffmpegdec->last_out != -1 && ffmpegdec->last_out > out_pts) {
+     /* timestamps go backwards, this means frames were reordered and we must
+@@ -1865,7 +1805,7 @@
+    * timestamps */
+   if (!ffmpegdec->reordered_in && ffmpegdec->reordered_out) {
+     /* PTS and DTS are the same for keyframes */
+-    if (!iskeyframe && ffmpegdec->next_out != -1) {
++    if (ffmpegdec->next_out != -1) {
+       /* interpolate all timestamps except for keyframes, FIXME, this is
+        * wrong when QoS is active. */
+       GST_DEBUG_OBJECT (ffmpegdec, "interpolate timestamps");
+@@ -1874,16 +1814,6 @@
+     }
+   }
+ 
+-  /* when we're waiting for a keyframe, see if we have one or drop the current
+-   * non-keyframe */
+-  if (G_UNLIKELY (ffmpegdec->waiting_for_key)) {
+-    if (G_LIKELY (!iskeyframe))
+-      goto drop_non_keyframe;
+-
+-    /* we have a keyframe, we can stop waiting for one */
+-    ffmpegdec->waiting_for_key = FALSE;
+-  }
+-
+   /* get a handle to the output buffer */
+   *ret = get_output_buffer (ffmpegdec, outbuf);
+   if (G_UNLIKELY (*ret != GST_FLOW_OK))
+@@ -2000,20 +1930,11 @@
+   else
+     ffmpegdec->next_out = -1;
+ 
+-  /* palette is not part of raw video frame in gst and the size
+-   * of the outgoing buffer needs to be adjusted accordingly */
+-  if (ffmpegdec->context->palctrl != NULL)
+-    GST_BUFFER_SIZE (*outbuf) -= AVPALETTE_SIZE;
+-
+   /* now see if we need to clip the buffer against the segment boundaries. */
+   if (G_UNLIKELY (!clip_video_buffer (ffmpegdec, *outbuf, out_timestamp,
+               out_duration)))
+     goto clipped;
+ 
+-  /* mark as keyframe or delta unit */
+-  if (!iskeyframe)
+-    GST_BUFFER_FLAG_SET (*outbuf, GST_BUFFER_FLAG_DELTA_UNIT);
+-
+   if (ffmpegdec->picture->top_field_first)
+     GST_BUFFER_FLAG_SET (*outbuf, GST_VIDEO_BUFFER_TFF);
+ 
+@@ -2024,11 +1945,6 @@
+   return len;
+ 
+   /* special cases */
+-drop_non_keyframe:
+-  {
+-    GST_WARNING_OBJECT (ffmpegdec, "Dropping non-keyframe (seek/init)");
+-    goto beach;
+-  }
+ no_output:
+   {
+     GST_DEBUG_OBJECT (ffmpegdec, "no output buffer");
+@@ -2422,7 +2338,6 @@
+       gst_ffmpegdec_reset_ts (ffmpegdec);
+       gst_ffmpegdec_reset_qos (ffmpegdec);
+       gst_ffmpegdec_flush_pcache (ffmpegdec);
+-      ffmpegdec->waiting_for_key = TRUE;
+       gst_segment_init (&ffmpegdec->segment, GST_FORMAT_TIME);
+       clear_queued (ffmpegdec);
+       break;
+@@ -2560,17 +2475,6 @@
+ 
+   oclass = (GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
+ 
+-  /* do early keyframe check pretty bad to rely on the keyframe flag in the
+-   * source for this as it might not even be parsed (UDP/file/..).  */
+-  if (G_UNLIKELY (ffmpegdec->waiting_for_key)) {
+-    GST_DEBUG_OBJECT (ffmpegdec, "waiting for keyframe");
+-    if (GST_BUFFER_FLAG_IS_SET (inbuf, GST_BUFFER_FLAG_DELTA_UNIT) &&
+-        oclass->in_plugin->type != AVMEDIA_TYPE_AUDIO)
+-      goto skip_keyframe;
+-
+-    GST_DEBUG_OBJECT (ffmpegdec, "got keyframe");
+-    ffmpegdec->waiting_for_key = FALSE;
+-  }
+   /* parse cache joining. If there is cached data */
+   if (ffmpegdec->pcache) {
+     /* join with previous data */
+@@ -2805,12 +2709,6 @@
+     gst_buffer_unref (inbuf);
+     return GST_FLOW_NOT_NEGOTIATED;
+   }
+-skip_keyframe:
+-  {
+-    GST_DEBUG_OBJECT (ffmpegdec, "skipping non keyframe");
+-    gst_buffer_unref (inbuf);
+-    return GST_FLOW_OK;
+-  }
+ }
+ 
+ static GstStateChangeReturn
+@@ -2936,7 +2834,7 @@
+     gchar *plugin_name;
+ 
+     /* only decoders */
+-    if (!in_plugin->decode) {
++    if (!av_codec_is_decoder (in_plugin)) {
+       goto next;
+     }
+ 
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegdec.c.orig gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegdec.c.orig
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegdec.c.orig	1970-01-01 01:00:00.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegdec.c.orig	2014-08-08 15:31:06.057868246 +0200
+@@ -0,0 +1,2973 @@
++/* GStreamer
++ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#include <assert.h>
++#include <string.h>
++
++#ifdef HAVE_FFMPEG_UNINSTALLED
++#include <avcodec.h>
++#else
++#include <libavcodec/avcodec.h>
++#endif
++
++#include <gst/gst.h>
++#include <gst/video/video.h>
++
++#include "gstffmpeg.h"
++#include "gstffmpegcodecmap.h"
++#include "gstffmpegutils.h"
++
++/* define to enable alternative buffer refcounting algorithm */
++#undef EXTRA_REF
++
++typedef struct _GstFFMpegDec GstFFMpegDec;
++
++#define MAX_TS_MASK 0xff
++
++/* for each incomming buffer we keep all timing info in a structure like this.
++ * We keep a circular array of these structures around to store the timing info.
++ * The index in the array is what we pass as opaque data (to pictures) and
++ * pts (to parsers) so that ffmpeg can remember them for us. */
++typedef struct
++{
++  gint idx;
++  GstClockTime timestamp;
++  GstClockTime duration;
++  gint64 offset;
++} GstTSInfo;
++
++struct _GstFFMpegDec
++{
++  GstElement element;
++
++  /* We need to keep track of our pads, so we do so here. */
++  GstPad *srcpad;
++  GstPad *sinkpad;
++
++  /* decoding */
++  AVCodecContext *context;
++  AVFrame *picture;
++  gboolean opened;
++  union
++  {
++    struct
++    {
++      gint width, height;
++      gint clip_width, clip_height;
++      gint par_n, par_d;
++      gint fps_n, fps_d;
++      gint old_fps_n, old_fps_d;
++      gboolean interlaced;
++
++      enum PixelFormat pix_fmt;
++    } video;
++    struct
++    {
++      gint channels;
++      gint samplerate;
++      gint depth;
++    } audio;
++  } format;
++  gboolean discont;
++  gboolean clear_ts;
++
++  /* for tracking DTS/PTS */
++  gboolean has_b_frames;
++  gboolean reordered_in;
++  GstClockTime last_in;
++  GstClockTime last_diff;
++  guint last_frames;
++  gboolean reordered_out;
++  GstClockTime last_out;
++  GstClockTime next_out;
++
++  /* parsing */
++  gboolean turnoff_parser;      /* used for turning off aac raw parsing
++                                 * See bug #566250 */
++  AVCodecParserContext *pctx;
++  GstBuffer *pcache;
++  guint8 *padded;
++  guint padded_size;
++
++  GValue *par;                  /* pixel aspect ratio of incoming data */
++  gboolean current_dr;          /* if direct rendering is enabled */
++  gboolean extra_ref;           /* keep extra ref around in get/release */
++
++  /* some properties */
++  enum AVDiscard skip_frame;
++  gint lowres;
++  gboolean direct_rendering;
++  gboolean do_padding;
++  gboolean debug_mv;
++  gboolean crop;
++  int max_threads;
++
++  /* QoS stuff *//* with LOCK */
++  gdouble proportion;
++  GstClockTime earliest_time;
++  gint64 processed;
++  gint64 dropped;
++
++  /* clipping segment */
++  GstSegment segment;
++
++  gboolean is_realvideo;
++
++  GstTSInfo ts_info[MAX_TS_MASK + 1];
++  gint ts_idx;
++
++  /* reverse playback queue */
++  GList *queued;
++
++  /* Can downstream allocate 16bytes aligned data. */
++  gboolean can_allocate_aligned;
++};
++
++typedef struct _GstFFMpegDecClass GstFFMpegDecClass;
++
++struct _GstFFMpegDecClass
++{
++  GstElementClass parent_class;
++
++  AVCodec *in_plugin;
++  GstPadTemplate *srctempl, *sinktempl;
++};
++
++#define GST_TS_INFO_NONE &ts_info_none
++static const GstTSInfo ts_info_none = { -1, -1, -1, -1 };
++
++static const GstTSInfo *
++gst_ts_info_store (GstFFMpegDec * dec, GstClockTime timestamp,
++    GstClockTime duration, gint64 offset)
++{
++  gint idx = dec->ts_idx;
++  dec->ts_info[idx].idx = idx;
++  dec->ts_info[idx].timestamp = timestamp;
++  dec->ts_info[idx].duration = duration;
++  dec->ts_info[idx].offset = offset;
++  dec->ts_idx = (idx + 1) & MAX_TS_MASK;
++
++  return &dec->ts_info[idx];
++}
++
++static const GstTSInfo *
++gst_ts_info_get (GstFFMpegDec * dec, gint idx)
++{
++  if (G_UNLIKELY (idx < 0 || idx > MAX_TS_MASK))
++    return GST_TS_INFO_NONE;
++
++  return &dec->ts_info[idx];
++}
++
++#define GST_TYPE_FFMPEGDEC \
++  (gst_ffmpegdec_get_type())
++#define GST_FFMPEGDEC(obj) \
++  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FFMPEGDEC,GstFFMpegDec))
++#define GST_FFMPEGDEC_CLASS(klass) \
++  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FFMPEGDEC,GstFFMpegDecClass))
++#define GST_IS_FFMPEGDEC(obj) \
++  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FFMPEGDEC))
++#define GST_IS_FFMPEGDEC_CLASS(klass) \
++  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FFMPEGDEC))
++
++#define DEFAULT_LOWRES			0
++#define DEFAULT_SKIPFRAME		0
++#define DEFAULT_DIRECT_RENDERING	TRUE
++#define DEFAULT_DO_PADDING		TRUE
++#define DEFAULT_DEBUG_MV		FALSE
++#define DEFAULT_CROP			TRUE
++#define DEFAULT_MAX_THREADS		1
++
++enum
++{
++  PROP_0,
++  PROP_LOWRES,
++  PROP_SKIPFRAME,
++  PROP_DIRECT_RENDERING,
++  PROP_DO_PADDING,
++  PROP_DEBUG_MV,
++  PROP_CROP,
++  PROP_MAX_THREADS,
++  PROP_LAST
++};
++
++/* A number of function prototypes are given so we can refer to them later. */
++static void gst_ffmpegdec_base_init (GstFFMpegDecClass * klass);
++static void gst_ffmpegdec_class_init (GstFFMpegDecClass * klass);
++static void gst_ffmpegdec_init (GstFFMpegDec * ffmpegdec);
++static void gst_ffmpegdec_finalize (GObject * object);
++
++static gboolean gst_ffmpegdec_query (GstPad * pad, GstQuery * query);
++static gboolean gst_ffmpegdec_src_event (GstPad * pad, GstEvent * event);
++
++static gboolean gst_ffmpegdec_setcaps (GstPad * pad, GstCaps * caps);
++static gboolean gst_ffmpegdec_sink_event (GstPad * pad, GstEvent * event);
++static GstFlowReturn gst_ffmpegdec_chain (GstPad * pad, GstBuffer * buf);
++
++static GstStateChangeReturn gst_ffmpegdec_change_state (GstElement * element,
++    GstStateChange transition);
++
++static void gst_ffmpegdec_set_property (GObject * object,
++    guint prop_id, const GValue * value, GParamSpec * pspec);
++static void gst_ffmpegdec_get_property (GObject * object,
++    guint prop_id, GValue * value, GParamSpec * pspec);
++
++static gboolean gst_ffmpegdec_negotiate (GstFFMpegDec * ffmpegdec,
++    gboolean force);
++
++/* some sort of bufferpool handling, but different */
++static int gst_ffmpegdec_get_buffer (AVCodecContext * context,
++    AVFrame * picture);
++static void gst_ffmpegdec_release_buffer (AVCodecContext * context,
++    AVFrame * picture);
++
++static void gst_ffmpegdec_drain (GstFFMpegDec * ffmpegdec);
++
++#define GST_FFDEC_PARAMS_QDATA g_quark_from_static_string("ffdec-params")
++
++static GstElementClass *parent_class = NULL;
++
++#define GST_FFMPEGDEC_TYPE_LOWRES (gst_ffmpegdec_lowres_get_type())
++static GType
++gst_ffmpegdec_lowres_get_type (void)
++{
++  static GType ffmpegdec_lowres_type = 0;
++
++  if (!ffmpegdec_lowres_type) {
++    static const GEnumValue ffmpegdec_lowres[] = {
++      {0, "0", "full"},
++      {1, "1", "1/2-size"},
++      {2, "2", "1/4-size"},
++      {0, NULL, NULL},
++    };
++
++    ffmpegdec_lowres_type =
++        g_enum_register_static ("GstFFMpegDecLowres", ffmpegdec_lowres);
++  }
++
++  return ffmpegdec_lowres_type;
++}
++
++#define GST_FFMPEGDEC_TYPE_SKIPFRAME (gst_ffmpegdec_skipframe_get_type())
++static GType
++gst_ffmpegdec_skipframe_get_type (void)
++{
++  static GType ffmpegdec_skipframe_type = 0;
++
++  if (!ffmpegdec_skipframe_type) {
++    static const GEnumValue ffmpegdec_skipframe[] = {
++      {0, "0", "Skip nothing"},
++      {1, "1", "Skip B-frames"},
++      {2, "2", "Skip IDCT/Dequantization"},
++      {5, "5", "Skip everything"},
++      {0, NULL, NULL},
++    };
++
++    ffmpegdec_skipframe_type =
++        g_enum_register_static ("GstFFMpegDecSkipFrame", ffmpegdec_skipframe);
++  }
++
++  return ffmpegdec_skipframe_type;
++}
++
++static void
++gst_ffmpegdec_base_init (GstFFMpegDecClass * klass)
++{
++  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
++  GstPadTemplate *sinktempl, *srctempl;
++  GstCaps *sinkcaps, *srccaps;
++  AVCodec *in_plugin;
++  gchar *longname, *classification, *description;
++
++  in_plugin =
++      (AVCodec *) g_type_get_qdata (G_OBJECT_CLASS_TYPE (klass),
++      GST_FFDEC_PARAMS_QDATA);
++  g_assert (in_plugin != NULL);
++
++  /* construct the element details struct */
++  longname = g_strdup_printf ("FFmpeg %s decoder", in_plugin->long_name);
++  classification = g_strdup_printf ("Codec/Decoder/%s",
++      (in_plugin->type == AVMEDIA_TYPE_VIDEO) ? "Video" : "Audio");
++  description = g_strdup_printf ("FFmpeg %s decoder", in_plugin->name);
++  gst_element_class_set_details_simple (element_class, longname, classification,
++      description,
++      "Wim Taymans <wim.taymans@gmail.com>, "
++      "Ronald Bultje <rbultje@ronald.bitfreak.net>, "
++      "Edward Hervey <bilboed@bilboed.com>");
++  g_free (longname);
++  g_free (classification);
++  g_free (description);
++
++  /* get the caps */
++  sinkcaps = gst_ffmpeg_codecid_to_caps (in_plugin->id, NULL, FALSE);
++  if (!sinkcaps) {
++    GST_DEBUG ("Couldn't get sink caps for decoder '%s'", in_plugin->name);
++    sinkcaps = gst_caps_from_string ("unknown/unknown");
++  }
++  if (in_plugin->type == AVMEDIA_TYPE_VIDEO) {
++    srccaps = gst_caps_from_string ("video/x-raw-rgb; video/x-raw-yuv");
++  } else {
++    srccaps = gst_ffmpeg_codectype_to_audio_caps (NULL,
++        in_plugin->id, FALSE, in_plugin);
++  }
++  if (!srccaps) {
++    GST_DEBUG ("Couldn't get source caps for decoder '%s'", in_plugin->name);
++    srccaps = gst_caps_from_string ("unknown/unknown");
++  }
++
++  /* pad templates */
++  sinktempl = gst_pad_template_new ("sink", GST_PAD_SINK,
++      GST_PAD_ALWAYS, sinkcaps);
++  srctempl = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, srccaps);
++
++  gst_element_class_add_pad_template (element_class, srctempl);
++  gst_element_class_add_pad_template (element_class, sinktempl);
++
++  klass->in_plugin = in_plugin;
++  klass->srctempl = srctempl;
++  klass->sinktempl = sinktempl;
++}
++
++static void
++gst_ffmpegdec_class_init (GstFFMpegDecClass * klass)
++{
++  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
++  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
++
++  parent_class = g_type_class_peek_parent (klass);
++
++  gobject_class->finalize = gst_ffmpegdec_finalize;
++
++  gobject_class->set_property = gst_ffmpegdec_set_property;
++  gobject_class->get_property = gst_ffmpegdec_get_property;
++
++  if (klass->in_plugin->type == AVMEDIA_TYPE_VIDEO) {
++    int caps;
++
++    g_object_class_install_property (gobject_class, PROP_SKIPFRAME,
++        g_param_spec_enum ("skip-frame", "Skip frames",
++            "Which types of frames to skip during decoding",
++            GST_FFMPEGDEC_TYPE_SKIPFRAME, 0,
++            G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++    g_object_class_install_property (gobject_class, PROP_LOWRES,
++        g_param_spec_enum ("lowres", "Low resolution",
++            "At which resolution to decode images", GST_FFMPEGDEC_TYPE_LOWRES,
++            0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++    g_object_class_install_property (gobject_class, PROP_DIRECT_RENDERING,
++        g_param_spec_boolean ("direct-rendering", "Direct Rendering",
++            "Enable direct rendering", DEFAULT_DIRECT_RENDERING,
++            G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++    g_object_class_install_property (gobject_class, PROP_DO_PADDING,
++        g_param_spec_boolean ("do-padding", "Do Padding",
++            "Add 0 padding before decoding data", DEFAULT_DO_PADDING,
++            G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++    g_object_class_install_property (gobject_class, PROP_DEBUG_MV,
++        g_param_spec_boolean ("debug-mv", "Debug motion vectors",
++            "Whether ffmpeg should print motion vectors on top of the image",
++            DEFAULT_DEBUG_MV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++#if 0
++    g_object_class_install_property (gobject_class, PROP_CROP,
++        g_param_spec_boolean ("crop", "Crop",
++            "Crop images to the display region",
++            DEFAULT_CROP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++#endif
++
++    caps = klass->in_plugin->capabilities;
++    if (caps & (CODEC_CAP_FRAME_THREADS | CODEC_CAP_SLICE_THREADS)) {
++      g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_MAX_THREADS,
++          g_param_spec_int ("max-threads", "Maximum decode threads",
++              "Maximum number of worker threads to spawn. (0 = auto)",
++              0, G_MAXINT, DEFAULT_MAX_THREADS,
++              G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++    }
++  }
++
++  gstelement_class->change_state = gst_ffmpegdec_change_state;
++}
++
++static void
++gst_ffmpegdec_init (GstFFMpegDec * ffmpegdec)
++{
++  GstFFMpegDecClass *oclass;
++
++  oclass = (GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
++
++  /* setup pads */
++  ffmpegdec->sinkpad = gst_pad_new_from_template (oclass->sinktempl, "sink");
++  gst_pad_set_setcaps_function (ffmpegdec->sinkpad,
++      GST_DEBUG_FUNCPTR (gst_ffmpegdec_setcaps));
++  gst_pad_set_event_function (ffmpegdec->sinkpad,
++      GST_DEBUG_FUNCPTR (gst_ffmpegdec_sink_event));
++  gst_pad_set_chain_function (ffmpegdec->sinkpad,
++      GST_DEBUG_FUNCPTR (gst_ffmpegdec_chain));
++  gst_element_add_pad (GST_ELEMENT (ffmpegdec), ffmpegdec->sinkpad);
++
++  ffmpegdec->srcpad = gst_pad_new_from_template (oclass->srctempl, "src");
++  gst_pad_use_fixed_caps (ffmpegdec->srcpad);
++  gst_pad_set_event_function (ffmpegdec->srcpad,
++      GST_DEBUG_FUNCPTR (gst_ffmpegdec_src_event));
++  gst_pad_set_query_function (ffmpegdec->srcpad,
++      GST_DEBUG_FUNCPTR (gst_ffmpegdec_query));
++  gst_element_add_pad (GST_ELEMENT (ffmpegdec), ffmpegdec->srcpad);
++
++  /* some ffmpeg data */
++  ffmpegdec->context = avcodec_alloc_context ();
++  ffmpegdec->picture = avcodec_alloc_frame ();
++  ffmpegdec->pctx = NULL;
++  ffmpegdec->pcache = NULL;
++  ffmpegdec->par = NULL;
++  ffmpegdec->opened = FALSE;
++  ffmpegdec->skip_frame = ffmpegdec->lowres = 0;
++  ffmpegdec->direct_rendering = DEFAULT_DIRECT_RENDERING;
++  ffmpegdec->do_padding = DEFAULT_DO_PADDING;
++  ffmpegdec->debug_mv = DEFAULT_DEBUG_MV;
++  ffmpegdec->crop = DEFAULT_CROP;
++  ffmpegdec->max_threads = DEFAULT_MAX_THREADS;
++
++  ffmpegdec->format.video.par_n = -1;
++  ffmpegdec->format.video.fps_n = -1;
++  ffmpegdec->format.video.old_fps_n = -1;
++  gst_segment_init (&ffmpegdec->segment, GST_FORMAT_TIME);
++
++  /* We initially assume downstream can allocate 16 bytes aligned buffers */
++  ffmpegdec->can_allocate_aligned = TRUE;
++}
++
++static void
++gst_ffmpegdec_finalize (GObject * object)
++{
++  GstFFMpegDec *ffmpegdec = (GstFFMpegDec *) object;
++
++  if (ffmpegdec->context != NULL) {
++    av_free (ffmpegdec->context);
++    ffmpegdec->context = NULL;
++  }
++
++  if (ffmpegdec->picture != NULL) {
++    av_free (ffmpegdec->picture);
++    ffmpegdec->picture = NULL;
++  }
++
++  G_OBJECT_CLASS (parent_class)->finalize (object);
++}
++
++static gboolean
++gst_ffmpegdec_query (GstPad * pad, GstQuery * query)
++{
++  GstFFMpegDec *ffmpegdec;
++  GstPad *peer;
++  gboolean res;
++
++  ffmpegdec = (GstFFMpegDec *) gst_pad_get_parent (pad);
++
++  res = FALSE;
++
++  if ((peer = gst_pad_get_peer (ffmpegdec->sinkpad))) {
++    /* just forward to peer */
++    res = gst_pad_query (peer, query);
++    gst_object_unref (peer);
++  }
++#if 0
++  {
++    GstFormat bfmt;
++
++    bfmt = GST_FORMAT_BYTES;
++
++    /* ok, do bitrate calc... */
++    if ((type != GST_QUERY_POSITION && type != GST_QUERY_TOTAL) ||
++        *fmt != GST_FORMAT_TIME || ffmpegdec->context->bit_rate == 0 ||
++        !gst_pad_query (peer, type, &bfmt, value))
++      return FALSE;
++
++    if (ffmpegdec->pcache && type == GST_QUERY_POSITION)
++      *value -= GST_BUFFER_SIZE (ffmpegdec->pcache);
++    *value *= GST_SECOND / ffmpegdec->context->bit_rate;
++  }
++#endif
++
++  gst_object_unref (ffmpegdec);
++
++  return res;
++}
++
++static void
++gst_ffmpegdec_reset_ts (GstFFMpegDec * ffmpegdec)
++{
++  ffmpegdec->last_in = GST_CLOCK_TIME_NONE;
++  ffmpegdec->last_diff = GST_CLOCK_TIME_NONE;
++  ffmpegdec->last_frames = 0;
++  ffmpegdec->last_out = GST_CLOCK_TIME_NONE;
++  ffmpegdec->next_out = GST_CLOCK_TIME_NONE;
++  ffmpegdec->reordered_in = FALSE;
++  ffmpegdec->reordered_out = FALSE;
++}
++
++static void
++gst_ffmpegdec_update_qos (GstFFMpegDec * ffmpegdec, gdouble proportion,
++    GstClockTime timestamp)
++{
++  GST_LOG_OBJECT (ffmpegdec, "update QOS: %f, %" GST_TIME_FORMAT,
++      proportion, GST_TIME_ARGS (timestamp));
++
++  GST_OBJECT_LOCK (ffmpegdec);
++  ffmpegdec->proportion = proportion;
++  ffmpegdec->earliest_time = timestamp;
++  GST_OBJECT_UNLOCK (ffmpegdec);
++}
++
++static void
++gst_ffmpegdec_reset_qos (GstFFMpegDec * ffmpegdec)
++{
++  gst_ffmpegdec_update_qos (ffmpegdec, 0.5, GST_CLOCK_TIME_NONE);
++  ffmpegdec->processed = 0;
++  ffmpegdec->dropped = 0;
++}
++
++static void
++gst_ffmpegdec_read_qos (GstFFMpegDec * ffmpegdec, gdouble * proportion,
++    GstClockTime * timestamp)
++{
++  GST_OBJECT_LOCK (ffmpegdec);
++  *proportion = ffmpegdec->proportion;
++  *timestamp = ffmpegdec->earliest_time;
++  GST_OBJECT_UNLOCK (ffmpegdec);
++}
++
++static gboolean
++gst_ffmpegdec_src_event (GstPad * pad, GstEvent * event)
++{
++  GstFFMpegDec *ffmpegdec;
++  gboolean res;
++
++  ffmpegdec = (GstFFMpegDec *) gst_pad_get_parent (pad);
++
++  switch (GST_EVENT_TYPE (event)) {
++    case GST_EVENT_QOS:
++    {
++      gdouble proportion;
++      GstClockTimeDiff diff;
++      GstClockTime timestamp;
++
++      gst_event_parse_qos (event, &proportion, &diff, &timestamp);
++
++      /* update our QoS values */
++      gst_ffmpegdec_update_qos (ffmpegdec, proportion, timestamp + diff);
++
++      /* forward upstream */
++      res = gst_pad_push_event (ffmpegdec->sinkpad, event);
++      break;
++    }
++    default:
++      /* forward upstream */
++      res = gst_pad_push_event (ffmpegdec->sinkpad, event);
++      break;
++  }
++
++  gst_object_unref (ffmpegdec);
++
++  return res;
++}
++
++/* with LOCK */
++static void
++gst_ffmpegdec_close (GstFFMpegDec * ffmpegdec)
++{
++  if (!ffmpegdec->opened)
++    return;
++
++  GST_LOG_OBJECT (ffmpegdec, "closing ffmpeg codec");
++
++  if (ffmpegdec->par) {
++    g_free (ffmpegdec->par);
++    ffmpegdec->par = NULL;
++  }
++
++  if (ffmpegdec->context->priv_data)
++    gst_ffmpeg_avcodec_close (ffmpegdec->context);
++  ffmpegdec->opened = FALSE;
++
++  if (ffmpegdec->context->extradata) {
++    av_free (ffmpegdec->context->extradata);
++    ffmpegdec->context->extradata = NULL;
++  }
++
++  if (ffmpegdec->pctx) {
++    if (ffmpegdec->pcache) {
++      gst_buffer_unref (ffmpegdec->pcache);
++      ffmpegdec->pcache = NULL;
++    }
++    av_parser_close (ffmpegdec->pctx);
++    ffmpegdec->pctx = NULL;
++  }
++
++  ffmpegdec->format.video.par_n = -1;
++  ffmpegdec->format.video.fps_n = -1;
++  ffmpegdec->format.video.old_fps_n = -1;
++  ffmpegdec->format.video.interlaced = FALSE;
++}
++
++/* with LOCK */
++static gboolean
++gst_ffmpegdec_open (GstFFMpegDec * ffmpegdec)
++{
++  GstFFMpegDecClass *oclass;
++
++  oclass = (GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
++
++  if (gst_ffmpeg_avcodec_open (ffmpegdec->context, oclass->in_plugin) < 0)
++    goto could_not_open;
++
++  ffmpegdec->opened = TRUE;
++  ffmpegdec->is_realvideo = FALSE;
++
++  GST_LOG_OBJECT (ffmpegdec, "Opened ffmpeg codec %s, id %d",
++      oclass->in_plugin->name, oclass->in_plugin->id);
++
++  /* open a parser if we can */
++  switch (oclass->in_plugin->id) {
++    case CODEC_ID_MPEG4:
++    case CODEC_ID_MJPEG:
++    case CODEC_ID_VC1:
++      GST_LOG_OBJECT (ffmpegdec, "not using parser, blacklisted codec");
++      ffmpegdec->pctx = NULL;
++      break;
++    case CODEC_ID_H264:
++      /* For H264, only use a parser if there is no context data, if there is, 
++       * we're talking AVC */
++      if (ffmpegdec->context->extradata_size == 0) {
++        GST_LOG_OBJECT (ffmpegdec, "H264 with no extradata, creating parser");
++        ffmpegdec->pctx = av_parser_init (oclass->in_plugin->id);
++      } else {
++        GST_LOG_OBJECT (ffmpegdec,
++            "H264 with extradata implies framed data - not using parser");
++        ffmpegdec->pctx = NULL;
++      }
++      break;
++    case CODEC_ID_RV10:
++    case CODEC_ID_RV30:
++    case CODEC_ID_RV20:
++    case CODEC_ID_RV40:
++      ffmpegdec->is_realvideo = TRUE;
++      break;
++    default:
++      if (!ffmpegdec->turnoff_parser) {
++        ffmpegdec->pctx = av_parser_init (oclass->in_plugin->id);
++        if (ffmpegdec->pctx)
++          GST_LOG_OBJECT (ffmpegdec, "Using parser %p", ffmpegdec->pctx);
++        else
++          GST_LOG_OBJECT (ffmpegdec, "No parser for codec");
++      } else {
++        GST_LOG_OBJECT (ffmpegdec, "Parser deactivated for format");
++      }
++      break;
++  }
++
++  switch (oclass->in_plugin->type) {
++    case AVMEDIA_TYPE_VIDEO:
++      ffmpegdec->format.video.width = 0;
++      ffmpegdec->format.video.height = 0;
++      ffmpegdec->format.video.clip_width = -1;
++      ffmpegdec->format.video.clip_height = -1;
++      ffmpegdec->format.video.pix_fmt = PIX_FMT_NB;
++      ffmpegdec->format.video.interlaced = FALSE;
++      break;
++    case AVMEDIA_TYPE_AUDIO:
++      ffmpegdec->format.audio.samplerate = 0;
++      ffmpegdec->format.audio.channels = 0;
++      ffmpegdec->format.audio.depth = 0;
++      break;
++    default:
++      break;
++  }
++
++  gst_ffmpegdec_reset_ts (ffmpegdec);
++  /* FIXME, reset_qos holds the LOCK */
++  ffmpegdec->proportion = 0.0;
++  ffmpegdec->earliest_time = -1;
++
++  return TRUE;
++
++  /* ERRORS */
++could_not_open:
++  {
++    gst_ffmpegdec_close (ffmpegdec);
++    GST_DEBUG_OBJECT (ffmpegdec, "ffdec_%s: Failed to open FFMPEG codec",
++        oclass->in_plugin->name);
++    return FALSE;
++  }
++}
++
++static gboolean
++gst_ffmpegdec_setcaps (GstPad * pad, GstCaps * caps)
++{
++  GstFFMpegDec *ffmpegdec;
++  GstFFMpegDecClass *oclass;
++  GstStructure *structure;
++  const GValue *par;
++  const GValue *fps;
++  gboolean ret = TRUE;
++
++  ffmpegdec = (GstFFMpegDec *) (gst_pad_get_parent (pad));
++  oclass = (GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
++
++  GST_DEBUG_OBJECT (pad, "setcaps called");
++
++  GST_OBJECT_LOCK (ffmpegdec);
++
++  /* stupid check for VC1 */
++  if ((oclass->in_plugin->id == CODEC_ID_WMV3) ||
++      (oclass->in_plugin->id == CODEC_ID_VC1))
++    oclass->in_plugin->id = gst_ffmpeg_caps_to_codecid (caps, NULL);
++
++  /* close old session */
++  if (ffmpegdec->opened) {
++    GST_OBJECT_UNLOCK (ffmpegdec);
++    gst_ffmpegdec_drain (ffmpegdec);
++    GST_OBJECT_LOCK (ffmpegdec);
++    gst_ffmpegdec_close (ffmpegdec);
++
++    /* and reset the defaults that were set when a context is created */
++    avcodec_get_context_defaults (ffmpegdec->context);
++  }
++
++  /* set buffer functions */
++  ffmpegdec->context->get_buffer = gst_ffmpegdec_get_buffer;
++  ffmpegdec->context->release_buffer = gst_ffmpegdec_release_buffer;
++  ffmpegdec->context->draw_horiz_band = NULL;
++
++  /* default is to let format decide if it needs a parser */
++  ffmpegdec->turnoff_parser = FALSE;
++
++  ffmpegdec->has_b_frames = FALSE;
++
++  GST_LOG_OBJECT (ffmpegdec, "size %dx%d", ffmpegdec->context->width,
++      ffmpegdec->context->height);
++
++  /* get size and so */
++  gst_ffmpeg_caps_with_codecid (oclass->in_plugin->id,
++      oclass->in_plugin->type, caps, ffmpegdec->context);
++
++  GST_LOG_OBJECT (ffmpegdec, "size after %dx%d", ffmpegdec->context->width,
++      ffmpegdec->context->height);
++
++  if (!ffmpegdec->context->time_base.den || !ffmpegdec->context->time_base.num) {
++    GST_DEBUG_OBJECT (ffmpegdec, "forcing 25/1 framerate");
++    ffmpegdec->context->time_base.num = 1;
++    ffmpegdec->context->time_base.den = 25;
++  }
++
++  /* get pixel aspect ratio if it's set */
++  structure = gst_caps_get_structure (caps, 0);
++
++  par = gst_structure_get_value (structure, "pixel-aspect-ratio");
++  if (par) {
++    GST_DEBUG_OBJECT (ffmpegdec, "sink caps have pixel-aspect-ratio of %d:%d",
++        gst_value_get_fraction_numerator (par),
++        gst_value_get_fraction_denominator (par));
++    /* should be NULL */
++    if (ffmpegdec->par)
++      g_free (ffmpegdec->par);
++    ffmpegdec->par = g_new0 (GValue, 1);
++    gst_value_init_and_copy (ffmpegdec->par, par);
++  }
++
++  /* get the framerate from incoming caps. fps_n is set to -1 when
++   * there is no valid framerate */
++  fps = gst_structure_get_value (structure, "framerate");
++  if (fps != NULL && GST_VALUE_HOLDS_FRACTION (fps)) {
++    ffmpegdec->format.video.fps_n = gst_value_get_fraction_numerator (fps);
++    ffmpegdec->format.video.fps_d = gst_value_get_fraction_denominator (fps);
++    GST_DEBUG_OBJECT (ffmpegdec, "Using framerate %d/%d from incoming caps",
++        ffmpegdec->format.video.fps_n, ffmpegdec->format.video.fps_d);
++  } else {
++    ffmpegdec->format.video.fps_n = -1;
++    GST_DEBUG_OBJECT (ffmpegdec, "Using framerate from codec");
++  }
++
++  /* figure out if we can use direct rendering */
++  ffmpegdec->current_dr = FALSE;
++  ffmpegdec->extra_ref = FALSE;
++  if (ffmpegdec->direct_rendering) {
++    GST_DEBUG_OBJECT (ffmpegdec, "trying to enable direct rendering");
++    if (oclass->in_plugin->capabilities & CODEC_CAP_DR1) {
++      if (oclass->in_plugin->id == CODEC_ID_H264) {
++        GST_DEBUG_OBJECT (ffmpegdec, "disable direct rendering setup for H264");
++        /* does not work, many stuff reads outside of the planes */
++        ffmpegdec->current_dr = FALSE;
++        ffmpegdec->extra_ref = TRUE;
++      } else if ((oclass->in_plugin->id == CODEC_ID_SVQ1) ||
++          (oclass->in_plugin->id == CODEC_ID_VP5) ||
++          (oclass->in_plugin->id == CODEC_ID_VP6) ||
++          (oclass->in_plugin->id == CODEC_ID_VP6F) ||
++          (oclass->in_plugin->id == CODEC_ID_VP6A)) {
++        GST_DEBUG_OBJECT (ffmpegdec,
++            "disable direct rendering setup for broken stride support");
++        /* does not work, uses a incompatible stride. See #610613 */
++        ffmpegdec->current_dr = FALSE;
++        ffmpegdec->extra_ref = TRUE;
++      } else {
++        GST_DEBUG_OBJECT (ffmpegdec, "enabled direct rendering");
++        ffmpegdec->current_dr = TRUE;
++      }
++    } else {
++      GST_DEBUG_OBJECT (ffmpegdec, "direct rendering not supported");
++    }
++  }
++  if (ffmpegdec->current_dr) {
++    /* do *not* draw edges when in direct rendering, for some reason it draws
++     * outside of the memory. */
++    ffmpegdec->context->flags |= CODEC_FLAG_EMU_EDGE;
++  }
++
++  /* for AAC we only use av_parse if not on stream-format==raw or ==loas */
++  if (oclass->in_plugin->id == CODEC_ID_AAC
++      || oclass->in_plugin->id == CODEC_ID_AAC_LATM) {
++    const gchar *format = gst_structure_get_string (structure, "stream-format");
++
++    if (format == NULL || strcmp (format, "raw") == 0) {
++      ffmpegdec->turnoff_parser = TRUE;
++    }
++  }
++
++  /* for FLAC, don't parse if it's already parsed */
++  if (oclass->in_plugin->id == CODEC_ID_FLAC) {
++    if (gst_structure_has_field (structure, "streamheader"))
++      ffmpegdec->turnoff_parser = TRUE;
++  }
++
++  /* workaround encoder bugs */
++  ffmpegdec->context->workaround_bugs |= FF_BUG_AUTODETECT;
++  ffmpegdec->context->err_recognition = 1;
++
++  /* for slow cpus */
++  ffmpegdec->context->lowres = ffmpegdec->lowres;
++  ffmpegdec->context->skip_frame = ffmpegdec->skip_frame;
++
++  /* ffmpeg can draw motion vectors on top of the image (not every decoder
++   * supports it) */
++  ffmpegdec->context->debug_mv = ffmpegdec->debug_mv;
++
++  if (ffmpegdec->max_threads == 0)
++    ffmpegdec->context->thread_count = gst_ffmpeg_auto_max_threads ();
++  else
++    ffmpegdec->context->thread_count = ffmpegdec->max_threads;
++
++  /* open codec - we don't select an output pix_fmt yet,
++   * simply because we don't know! We only get it
++   * during playback... */
++  if (!gst_ffmpegdec_open (ffmpegdec))
++    goto open_failed;
++
++  /* clipping region */
++  gst_structure_get_int (structure, "width",
++      &ffmpegdec->format.video.clip_width);
++  gst_structure_get_int (structure, "height",
++      &ffmpegdec->format.video.clip_height);
++
++  GST_DEBUG_OBJECT (pad, "clipping to %dx%d",
++      ffmpegdec->format.video.clip_width, ffmpegdec->format.video.clip_height);
++
++  /* take into account the lowres property */
++  if (ffmpegdec->format.video.clip_width != -1)
++    ffmpegdec->format.video.clip_width >>= ffmpegdec->lowres;
++  if (ffmpegdec->format.video.clip_height != -1)
++    ffmpegdec->format.video.clip_height >>= ffmpegdec->lowres;
++
++  GST_DEBUG_OBJECT (pad, "final clipping to %dx%d",
++      ffmpegdec->format.video.clip_width, ffmpegdec->format.video.clip_height);
++
++done:
++  GST_OBJECT_UNLOCK (ffmpegdec);
++
++  gst_object_unref (ffmpegdec);
++
++  return ret;
++
++  /* ERRORS */
++open_failed:
++  {
++    GST_DEBUG_OBJECT (ffmpegdec, "Failed to open");
++    if (ffmpegdec->par) {
++      g_free (ffmpegdec->par);
++      ffmpegdec->par = NULL;
++    }
++    ret = FALSE;
++    goto done;
++  }
++}
++
++static GstFlowReturn
++alloc_output_buffer (GstFFMpegDec * ffmpegdec, GstBuffer ** outbuf,
++    gint width, gint height)
++{
++  GstFlowReturn ret;
++  gint fsize;
++
++  ret = GST_FLOW_ERROR;
++  *outbuf = NULL;
++
++  GST_LOG_OBJECT (ffmpegdec, "alloc output buffer");
++
++  /* see if we need renegotiation */
++  if (G_UNLIKELY (!gst_ffmpegdec_negotiate (ffmpegdec, FALSE)))
++    goto negotiate_failed;
++
++  /* get the size of the gstreamer output buffer given a
++   * width/height/format */
++  fsize = gst_ffmpeg_avpicture_get_size (ffmpegdec->context->pix_fmt,
++      width, height);
++
++  if (ffmpegdec->can_allocate_aligned) {
++    GST_LOG_OBJECT (ffmpegdec, "calling pad_alloc");
++    /* no pallete, we can use the buffer size to alloc */
++    ret = gst_pad_alloc_buffer_and_set_caps (ffmpegdec->srcpad,
++        GST_BUFFER_OFFSET_NONE, fsize,
++        GST_PAD_CAPS (ffmpegdec->srcpad), outbuf);
++    if (G_UNLIKELY (ret != GST_FLOW_OK))
++      goto alloc_failed;
++
++    /* If buffer isn't 128-bit aligned, create a memaligned one ourselves */
++    if (((uintptr_t) GST_BUFFER_DATA (*outbuf)) % 16) {
++      GST_DEBUG_OBJECT (ffmpegdec,
++          "Downstream can't allocate aligned buffers.");
++      ffmpegdec->can_allocate_aligned = FALSE;
++      gst_buffer_unref (*outbuf);
++      *outbuf = new_aligned_buffer (fsize, GST_PAD_CAPS (ffmpegdec->srcpad));
++    }
++  } else {
++    GST_LOG_OBJECT (ffmpegdec,
++        "not calling pad_alloc, we have a pallete or downstream can't give 16 byte aligned buffers.");
++    /* for paletted data we can't use pad_alloc_buffer(), because
++     * fsize contains the size of the palette, so the overall size
++     * is bigger than ffmpegcolorspace's unit size, which will
++     * prompt GstBaseTransform to complain endlessly ... */
++    *outbuf = new_aligned_buffer (fsize, GST_PAD_CAPS (ffmpegdec->srcpad));
++    ret = GST_FLOW_OK;
++  }
++  /* set caps, we do this here because the buffer is still writable here and we
++   * are sure to be negotiated */
++  gst_buffer_set_caps (*outbuf, GST_PAD_CAPS (ffmpegdec->srcpad));
++
++  return ret;
++
++  /* special cases */
++negotiate_failed:
++  {
++    GST_DEBUG_OBJECT (ffmpegdec, "negotiate failed");
++    return GST_FLOW_NOT_NEGOTIATED;
++  }
++alloc_failed:
++  {
++    GST_DEBUG_OBJECT (ffmpegdec, "pad_alloc failed %d (%s)", ret,
++        gst_flow_get_name (ret));
++    return ret;
++  }
++}
++
++static int
++gst_ffmpegdec_get_buffer (AVCodecContext * context, AVFrame * picture)
++{
++  GstBuffer *buf = NULL;
++  GstFFMpegDec *ffmpegdec;
++  gint width, height;
++  gint coded_width, coded_height;
++  gint res;
++
++  ffmpegdec = (GstFFMpegDec *) context->opaque;
++
++  GST_DEBUG_OBJECT (ffmpegdec, "getting buffer");
++
++  /* apply the last info we have seen to this picture, when we get the
++   * picture back from ffmpeg we can use this to correctly timestamp the output
++   * buffer */
++  picture->reordered_opaque = context->reordered_opaque;
++  /* make sure we don't free the buffer when it's not ours */
++  picture->opaque = NULL;
++
++  /* take width and height before clipping */
++  width = context->width;
++  height = context->height;
++  coded_width = context->coded_width;
++  coded_height = context->coded_height;
++
++  GST_LOG_OBJECT (ffmpegdec, "dimension %dx%d, coded %dx%d", width, height,
++      coded_width, coded_height);
++  if (!ffmpegdec->current_dr) {
++    GST_LOG_OBJECT (ffmpegdec, "direct rendering disabled, fallback alloc");
++    res = avcodec_default_get_buffer (context, picture);
++
++    GST_LOG_OBJECT (ffmpegdec, "linsize %d %d %d", picture->linesize[0],
++        picture->linesize[1], picture->linesize[2]);
++    GST_LOG_OBJECT (ffmpegdec, "data %u %u %u", 0,
++        (guint) (picture->data[1] - picture->data[0]),
++        (guint) (picture->data[2] - picture->data[0]));
++    return res;
++  }
++
++  switch (context->codec_type) {
++    case AVMEDIA_TYPE_VIDEO:
++      /* some ffmpeg video plugins don't see the point in setting codec_type ... */
++    case AVMEDIA_TYPE_UNKNOWN:
++    {
++      GstFlowReturn ret;
++      gint clip_width, clip_height;
++
++      /* take final clipped output size */
++      if ((clip_width = ffmpegdec->format.video.clip_width) == -1)
++        clip_width = width;
++      if ((clip_height = ffmpegdec->format.video.clip_height) == -1)
++        clip_height = height;
++
++      GST_LOG_OBJECT (ffmpegdec, "raw outsize %d/%d", width, height);
++
++      /* this is the size ffmpeg needs for the buffer */
++      avcodec_align_dimensions (context, &width, &height);
++
++      GST_LOG_OBJECT (ffmpegdec, "aligned outsize %d/%d, clip %d/%d",
++          width, height, clip_width, clip_height);
++
++      if (width != clip_width || height != clip_height) {
++        /* We can't alloc if we need to clip the output buffer later */
++        GST_LOG_OBJECT (ffmpegdec, "we need clipping, fallback alloc");
++        return avcodec_default_get_buffer (context, picture);
++      }
++
++      /* alloc with aligned dimensions for ffmpeg */
++      ret = alloc_output_buffer (ffmpegdec, &buf, width, height);
++      if (G_UNLIKELY (ret != GST_FLOW_OK)) {
++        /* alloc default buffer when we can't get one from downstream */
++        GST_LOG_OBJECT (ffmpegdec, "alloc failed, fallback alloc");
++        return avcodec_default_get_buffer (context, picture);
++      }
++
++      /* copy the right pointers and strides in the picture object */
++      gst_ffmpeg_avpicture_fill ((AVPicture *) picture,
++          GST_BUFFER_DATA (buf), context->pix_fmt, width, height);
++      break;
++    }
++    case AVMEDIA_TYPE_AUDIO:
++    default:
++      GST_ERROR_OBJECT (ffmpegdec,
++          "_get_buffer() should never get called for non-video buffers !");
++      g_assert_not_reached ();
++      break;
++  }
++
++  /* tell ffmpeg we own this buffer, tranfer the ref we have on the buffer to
++   * the opaque data. */
++  picture->type = FF_BUFFER_TYPE_USER;
++  picture->opaque = buf;
++
++#ifdef EXTRA_REF
++  if (picture->reference != 0 || ffmpegdec->extra_ref) {
++    GST_DEBUG_OBJECT (ffmpegdec, "adding extra ref");
++    gst_buffer_ref (buf);
++  }
++#endif
++
++  GST_LOG_OBJECT (ffmpegdec, "returned buffer %p", buf);
++
++  return 0;
++}
++
++static void
++gst_ffmpegdec_release_buffer (AVCodecContext * context, AVFrame * picture)
++{
++  gint i;
++  GstBuffer *buf;
++  GstFFMpegDec *ffmpegdec;
++
++  ffmpegdec = (GstFFMpegDec *) context->opaque;
++
++  /* check if it was our buffer */
++  if (picture->opaque == NULL) {
++    GST_DEBUG_OBJECT (ffmpegdec, "default release buffer");
++    avcodec_default_release_buffer (context, picture);
++    return;
++  }
++
++  /* we remove the opaque data now */
++  buf = GST_BUFFER_CAST (picture->opaque);
++  GST_DEBUG_OBJECT (ffmpegdec, "release buffer %p", buf);
++  picture->opaque = NULL;
++
++#ifdef EXTRA_REF
++  if (picture->reference != 0 || ffmpegdec->extra_ref) {
++    GST_DEBUG_OBJECT (ffmpegdec, "remove extra ref");
++    gst_buffer_unref (buf);
++  }
++#else
++  gst_buffer_unref (buf);
++#endif
++
++  /* zero out the reference in ffmpeg */
++  for (i = 0; i < 4; i++) {
++    picture->data[i] = NULL;
++    picture->linesize[i] = 0;
++  }
++}
++
++static void
++gst_ffmpegdec_add_pixel_aspect_ratio (GstFFMpegDec * ffmpegdec,
++    GstStructure * s)
++{
++  gboolean demuxer_par_set = FALSE;
++  gboolean decoder_par_set = FALSE;
++  gint demuxer_num = 1, demuxer_denom = 1;
++  gint decoder_num = 1, decoder_denom = 1;
++
++  GST_OBJECT_LOCK (ffmpegdec);
++
++  if (ffmpegdec->par) {
++    demuxer_num = gst_value_get_fraction_numerator (ffmpegdec->par);
++    demuxer_denom = gst_value_get_fraction_denominator (ffmpegdec->par);
++    demuxer_par_set = TRUE;
++    GST_DEBUG_OBJECT (ffmpegdec, "Demuxer PAR: %d:%d", demuxer_num,
++        demuxer_denom);
++  }
++
++  if (ffmpegdec->context->sample_aspect_ratio.num &&
++      ffmpegdec->context->sample_aspect_ratio.den) {
++    decoder_num = ffmpegdec->context->sample_aspect_ratio.num;
++    decoder_denom = ffmpegdec->context->sample_aspect_ratio.den;
++    decoder_par_set = TRUE;
++    GST_DEBUG_OBJECT (ffmpegdec, "Decoder PAR: %d:%d", decoder_num,
++        decoder_denom);
++  }
++
++  GST_OBJECT_UNLOCK (ffmpegdec);
++
++  if (!demuxer_par_set && !decoder_par_set)
++    goto no_par;
++
++  if (demuxer_par_set && !decoder_par_set)
++    goto use_demuxer_par;
++
++  if (decoder_par_set && !demuxer_par_set)
++    goto use_decoder_par;
++
++  /* Both the demuxer and the decoder provide a PAR. If one of
++   * the two PARs is 1:1 and the other one is not, use the one
++   * that is not 1:1. */
++  if (demuxer_num == demuxer_denom && decoder_num != decoder_denom)
++    goto use_decoder_par;
++
++  if (decoder_num == decoder_denom && demuxer_num != demuxer_denom)
++    goto use_demuxer_par;
++
++  /* Both PARs are non-1:1, so use the PAR provided by the demuxer */
++  goto use_demuxer_par;
++
++use_decoder_par:
++  {
++    GST_DEBUG_OBJECT (ffmpegdec,
++        "Setting decoder provided pixel-aspect-ratio of %u:%u", decoder_num,
++        decoder_denom);
++    gst_structure_set (s, "pixel-aspect-ratio", GST_TYPE_FRACTION, decoder_num,
++        decoder_denom, NULL);
++    return;
++  }
++
++use_demuxer_par:
++  {
++    GST_DEBUG_OBJECT (ffmpegdec,
++        "Setting demuxer provided pixel-aspect-ratio of %u:%u", demuxer_num,
++        demuxer_denom);
++    gst_structure_set (s, "pixel-aspect-ratio", GST_TYPE_FRACTION, demuxer_num,
++        demuxer_denom, NULL);
++    return;
++  }
++no_par:
++  {
++    GST_DEBUG_OBJECT (ffmpegdec,
++        "Neither demuxer nor codec provide a pixel-aspect-ratio");
++    return;
++  }
++}
++
++static gboolean
++gst_ffmpegdec_negotiate (GstFFMpegDec * ffmpegdec, gboolean force)
++{
++  GstFFMpegDecClass *oclass;
++  GstCaps *caps;
++
++  oclass = (GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
++
++  switch (oclass->in_plugin->type) {
++    case AVMEDIA_TYPE_VIDEO:
++      if (!force && ffmpegdec->format.video.width == ffmpegdec->context->width
++          && ffmpegdec->format.video.height == ffmpegdec->context->height
++          && ffmpegdec->format.video.fps_n == ffmpegdec->format.video.old_fps_n
++          && ffmpegdec->format.video.fps_d == ffmpegdec->format.video.old_fps_d
++          && ffmpegdec->format.video.pix_fmt == ffmpegdec->context->pix_fmt
++          && ffmpegdec->format.video.par_n ==
++          ffmpegdec->context->sample_aspect_ratio.num
++          && ffmpegdec->format.video.par_d ==
++          ffmpegdec->context->sample_aspect_ratio.den)
++        return TRUE;
++      GST_DEBUG_OBJECT (ffmpegdec,
++          "Renegotiating video from %dx%d@ %d:%d PAR %d/%d fps to %dx%d@ %d:%d PAR %d/%d fps",
++          ffmpegdec->format.video.width, ffmpegdec->format.video.height,
++          ffmpegdec->format.video.par_n, ffmpegdec->format.video.par_d,
++          ffmpegdec->format.video.old_fps_n, ffmpegdec->format.video.old_fps_n,
++          ffmpegdec->context->width, ffmpegdec->context->height,
++          ffmpegdec->context->sample_aspect_ratio.num,
++          ffmpegdec->context->sample_aspect_ratio.den,
++          ffmpegdec->format.video.fps_n, ffmpegdec->format.video.fps_d);
++      ffmpegdec->format.video.width = ffmpegdec->context->width;
++      ffmpegdec->format.video.height = ffmpegdec->context->height;
++      ffmpegdec->format.video.old_fps_n = ffmpegdec->format.video.fps_n;
++      ffmpegdec->format.video.old_fps_d = ffmpegdec->format.video.fps_d;
++      ffmpegdec->format.video.pix_fmt = ffmpegdec->context->pix_fmt;
++      ffmpegdec->format.video.par_n =
++          ffmpegdec->context->sample_aspect_ratio.num;
++      ffmpegdec->format.video.par_d =
++          ffmpegdec->context->sample_aspect_ratio.den;
++      break;
++    case AVMEDIA_TYPE_AUDIO:
++    {
++      gint depth = av_smp_format_depth (ffmpegdec->context->sample_fmt);
++      if (!force && ffmpegdec->format.audio.samplerate ==
++          ffmpegdec->context->sample_rate &&
++          ffmpegdec->format.audio.channels == ffmpegdec->context->channels &&
++          ffmpegdec->format.audio.depth == depth)
++        return TRUE;
++      GST_DEBUG_OBJECT (ffmpegdec,
++          "Renegotiating audio from %dHz@%dchannels (%d) to %dHz@%dchannels (%d)",
++          ffmpegdec->format.audio.samplerate, ffmpegdec->format.audio.channels,
++          ffmpegdec->format.audio.depth,
++          ffmpegdec->context->sample_rate, ffmpegdec->context->channels, depth);
++      ffmpegdec->format.audio.samplerate = ffmpegdec->context->sample_rate;
++      ffmpegdec->format.audio.channels = ffmpegdec->context->channels;
++      ffmpegdec->format.audio.depth = depth;
++    }
++      break;
++    default:
++      break;
++  }
++
++  caps = gst_ffmpeg_codectype_to_caps (oclass->in_plugin->type,
++      ffmpegdec->context, oclass->in_plugin->id, FALSE);
++
++  if (caps == NULL)
++    goto no_caps;
++
++  switch (oclass->in_plugin->type) {
++    case AVMEDIA_TYPE_VIDEO:
++    {
++      gint width, height;
++      gboolean interlaced;
++
++      width = ffmpegdec->format.video.clip_width;
++      height = ffmpegdec->format.video.clip_height;
++      interlaced = ffmpegdec->format.video.interlaced;
++
++      if (width != -1 && height != -1) {
++        /* overwrite the output size with the dimension of the
++         * clipping region but only if they are smaller. */
++        if (width < ffmpegdec->context->width)
++          gst_caps_set_simple (caps, "width", G_TYPE_INT, width, NULL);
++        if (height < ffmpegdec->context->height)
++          gst_caps_set_simple (caps, "height", G_TYPE_INT, height, NULL);
++      }
++      gst_caps_set_simple (caps, "interlaced", G_TYPE_BOOLEAN, interlaced,
++          NULL);
++
++      /* If a demuxer provided a framerate then use it (#313970) */
++      if (ffmpegdec->format.video.fps_n != -1) {
++        gst_caps_set_simple (caps, "framerate",
++            GST_TYPE_FRACTION, ffmpegdec->format.video.fps_n,
++            ffmpegdec->format.video.fps_d, NULL);
++      }
++      gst_ffmpegdec_add_pixel_aspect_ratio (ffmpegdec,
++          gst_caps_get_structure (caps, 0));
++      break;
++    }
++    case AVMEDIA_TYPE_AUDIO:
++    {
++      break;
++    }
++    default:
++      break;
++  }
++
++  if (!gst_pad_set_caps (ffmpegdec->srcpad, caps))
++    goto caps_failed;
++
++  gst_caps_unref (caps);
++
++  return TRUE;
++
++  /* ERRORS */
++no_caps:
++  {
++#ifdef HAVE_FFMPEG_UNINSTALLED
++    /* using internal ffmpeg snapshot */
++    GST_ELEMENT_ERROR (ffmpegdec, CORE, NEGOTIATION,
++        ("Could not find GStreamer caps mapping for FFmpeg codec '%s'.",
++            oclass->in_plugin->name), (NULL));
++#else
++    /* using external ffmpeg */
++    GST_ELEMENT_ERROR (ffmpegdec, CORE, NEGOTIATION,
++        ("Could not find GStreamer caps mapping for FFmpeg codec '%s', and "
++            "you are using an external libavcodec. This is most likely due to "
++            "a packaging problem and/or libavcodec having been upgraded to a "
++            "version that is not compatible with this version of "
++            "gstreamer-ffmpeg. Make sure your gstreamer-ffmpeg and libavcodec "
++            "packages come from the same source/repository.",
++            oclass->in_plugin->name), (NULL));
++#endif
++    return FALSE;
++  }
++caps_failed:
++  {
++    GST_ELEMENT_ERROR (ffmpegdec, CORE, NEGOTIATION, (NULL),
++        ("Could not set caps for ffmpeg decoder (%s), not fixed?",
++            oclass->in_plugin->name));
++    gst_caps_unref (caps);
++
++    return FALSE;
++  }
++}
++
++/* perform qos calculations before decoding the next frame.
++ *
++ * Sets the skip_frame flag and if things are really bad, skips to the next
++ * keyframe.
++ * 
++ * Returns TRUE if the frame should be decoded, FALSE if the frame can be dropped
++ * entirely.
++ */
++static gboolean
++gst_ffmpegdec_do_qos (GstFFMpegDec * ffmpegdec, GstClockTime timestamp,
++    gboolean * mode_switch)
++{
++  GstClockTimeDiff diff;
++  gdouble proportion;
++  GstClockTime qostime, earliest_time;
++  gboolean res = TRUE;
++
++  *mode_switch = FALSE;
++
++  /* no timestamp, can't do QoS */
++  if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (timestamp)))
++    goto no_qos;
++
++  /* get latest QoS observation values */
++  gst_ffmpegdec_read_qos (ffmpegdec, &proportion, &earliest_time);
++
++  /* skip qos if we have no observation (yet) */
++  if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (earliest_time))) {
++    /* no skip_frame initialy */
++    ffmpegdec->context->skip_frame = AVDISCARD_DEFAULT;
++    goto no_qos;
++  }
++
++  /* qos is done on running time of the timestamp */
++  qostime = gst_segment_to_running_time (&ffmpegdec->segment, GST_FORMAT_TIME,
++      timestamp);
++
++  /* timestamp can be out of segment, then we don't do QoS */
++  if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (qostime)))
++    goto no_qos;
++
++  /* see how our next timestamp relates to the latest qos timestamp. negative
++   * values mean we are early, positive values mean we are too late. */
++  diff = GST_CLOCK_DIFF (qostime, earliest_time);
++
++  GST_DEBUG_OBJECT (ffmpegdec, "QOS: qostime %" GST_TIME_FORMAT
++      ", earliest %" GST_TIME_FORMAT, GST_TIME_ARGS (qostime),
++      GST_TIME_ARGS (earliest_time));
++
++  /* if we using less than 40% of the available time, we can try to
++   * speed up again when we were slow. */
++  if (proportion < 0.4 && diff < 0) {
++    goto normal_mode;
++  } else {
++    if (diff >= 0) {
++      /* we're too slow, try to speed up */
++      /* switch to skip_frame mode */
++      goto skip_frame;
++    }
++  }
++
++no_qos:
++  ffmpegdec->processed++;
++  return TRUE;
++
++normal_mode:
++  {
++    if (ffmpegdec->context->skip_frame != AVDISCARD_DEFAULT) {
++      ffmpegdec->context->skip_frame = AVDISCARD_DEFAULT;
++      *mode_switch = TRUE;
++      GST_DEBUG_OBJECT (ffmpegdec, "QOS: normal mode %g < 0.4", proportion);
++    }
++    ffmpegdec->processed++;
++    return TRUE;
++  }
++skip_frame:
++  {
++    if (ffmpegdec->context->skip_frame != AVDISCARD_NONREF) {
++      ffmpegdec->context->skip_frame = AVDISCARD_NONREF;
++      *mode_switch = TRUE;
++      GST_DEBUG_OBJECT (ffmpegdec,
++          "QOS: hurry up, diff %" G_GINT64_FORMAT " >= 0", diff);
++    }
++    goto drop_qos;
++  }
++drop_qos:
++  {
++    GstClockTime stream_time, jitter;
++    GstMessage *qos_msg;
++
++    ffmpegdec->dropped++;
++    stream_time =
++        gst_segment_to_stream_time (&ffmpegdec->segment, GST_FORMAT_TIME,
++        timestamp);
++    jitter = GST_CLOCK_DIFF (qostime, earliest_time);
++    qos_msg =
++        gst_message_new_qos (GST_OBJECT_CAST (ffmpegdec), FALSE, qostime,
++        stream_time, timestamp, GST_CLOCK_TIME_NONE);
++    gst_message_set_qos_values (qos_msg, jitter, proportion, 1000000);
++    gst_message_set_qos_stats (qos_msg, GST_FORMAT_BUFFERS,
++        ffmpegdec->processed, ffmpegdec->dropped);
++    gst_element_post_message (GST_ELEMENT_CAST (ffmpegdec), qos_msg);
++
++    return res;
++  }
++}
++
++/* returns TRUE if buffer is within segment, else FALSE.
++ * if Buffer is on segment border, it's timestamp and duration will be clipped */
++static gboolean
++clip_video_buffer (GstFFMpegDec * dec, GstBuffer * buf, GstClockTime in_ts,
++    GstClockTime in_dur)
++{
++  gboolean res = TRUE;
++  gint64 cstart, cstop;
++  GstClockTime stop;
++
++  GST_LOG_OBJECT (dec,
++      "timestamp:%" GST_TIME_FORMAT " , duration:%" GST_TIME_FORMAT,
++      GST_TIME_ARGS (in_ts), GST_TIME_ARGS (in_dur));
++
++  /* can't clip without TIME segment */
++  if (G_UNLIKELY (dec->segment.format != GST_FORMAT_TIME))
++    goto beach;
++
++  /* we need a start time */
++  if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (in_ts)))
++    goto beach;
++
++  /* generate valid stop, if duration unknown, we have unknown stop */
++  stop =
++      GST_CLOCK_TIME_IS_VALID (in_dur) ? (in_ts + in_dur) : GST_CLOCK_TIME_NONE;
++
++  /* now clip */
++  res =
++      gst_segment_clip (&dec->segment, GST_FORMAT_TIME, in_ts, stop, &cstart,
++      &cstop);
++  if (G_UNLIKELY (!res))
++    goto beach;
++
++  /* we're pretty sure the duration of this buffer is not till the end of this
++   * segment (which _clip will assume when the stop is -1) */
++  if (stop == GST_CLOCK_TIME_NONE)
++    cstop = GST_CLOCK_TIME_NONE;
++
++  /* update timestamp and possibly duration if the clipped stop time is
++   * valid */
++  GST_BUFFER_TIMESTAMP (buf) = cstart;
++  if (GST_CLOCK_TIME_IS_VALID (cstop))
++    GST_BUFFER_DURATION (buf) = cstop - cstart;
++
++  GST_LOG_OBJECT (dec,
++      "clipped timestamp:%" GST_TIME_FORMAT " , duration:%" GST_TIME_FORMAT,
++      GST_TIME_ARGS (cstart), GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
++
++beach:
++  GST_LOG_OBJECT (dec, "%sdropping", (res ? "not " : ""));
++  return res;
++}
++
++
++/* get an outbuf buffer with the current picture */
++static GstFlowReturn
++get_output_buffer (GstFFMpegDec * ffmpegdec, GstBuffer ** outbuf)
++{
++  GstFlowReturn ret;
++
++  ret = GST_FLOW_OK;
++  *outbuf = NULL;
++
++  if (ffmpegdec->picture->opaque != NULL) {
++    /* we allocated a picture already for ffmpeg to decode into, let's pick it
++     * up and use it now. */
++    *outbuf = (GstBuffer *) ffmpegdec->picture->opaque;
++    GST_LOG_OBJECT (ffmpegdec, "using opaque buffer %p", *outbuf);
++#ifndef EXTRA_REF
++    gst_buffer_ref (*outbuf);
++#endif
++  } else {
++    AVPicture pic, *outpic;
++    gint width, height;
++
++    GST_LOG_OBJECT (ffmpegdec, "get output buffer");
++
++    /* figure out size of output buffer, this is the clipped output size because
++     * we will copy the picture into it but only when the clipping region is
++     * smaller than the actual picture size. */
++    if ((width = ffmpegdec->format.video.clip_width) == -1)
++      width = ffmpegdec->context->width;
++    else if (width > ffmpegdec->context->width)
++      width = ffmpegdec->context->width;
++
++    if ((height = ffmpegdec->format.video.clip_height) == -1)
++      height = ffmpegdec->context->height;
++    else if (height > ffmpegdec->context->height)
++      height = ffmpegdec->context->height;
++
++    GST_LOG_OBJECT (ffmpegdec, "clip width %d/height %d", width, height);
++
++    ret = alloc_output_buffer (ffmpegdec, outbuf, width, height);
++    if (G_UNLIKELY (ret != GST_FLOW_OK))
++      goto alloc_failed;
++
++    /* original ffmpeg code does not handle odd sizes correctly.
++     * This patched up version does */
++    gst_ffmpeg_avpicture_fill (&pic, GST_BUFFER_DATA (*outbuf),
++        ffmpegdec->context->pix_fmt, width, height);
++
++    outpic = (AVPicture *) ffmpegdec->picture;
++
++    GST_LOG_OBJECT (ffmpegdec, "linsize %d %d %d", outpic->linesize[0],
++        outpic->linesize[1], outpic->linesize[2]);
++    GST_LOG_OBJECT (ffmpegdec, "data %u %u %u", 0,
++        (guint) (outpic->data[1] - outpic->data[0]),
++        (guint) (outpic->data[2] - outpic->data[0]));
++
++    av_picture_copy (&pic, outpic, ffmpegdec->context->pix_fmt, width, height);
++  }
++  ffmpegdec->picture->reordered_opaque = -1;
++
++  return ret;
++
++  /* special cases */
++alloc_failed:
++  {
++    GST_DEBUG_OBJECT (ffmpegdec, "pad_alloc failed");
++    return ret;
++  }
++}
++
++static void
++clear_queued (GstFFMpegDec * ffmpegdec)
++{
++  g_list_foreach (ffmpegdec->queued, (GFunc) gst_mini_object_unref, NULL);
++  g_list_free (ffmpegdec->queued);
++  ffmpegdec->queued = NULL;
++}
++
++static GstFlowReturn
++flush_queued (GstFFMpegDec * ffmpegdec)
++{
++  GstFlowReturn res = GST_FLOW_OK;
++
++  while (ffmpegdec->queued) {
++    GstBuffer *buf = GST_BUFFER_CAST (ffmpegdec->queued->data);
++
++    GST_LOG_OBJECT (ffmpegdec, "pushing buffer %p, offset %"
++        G_GUINT64_FORMAT ", timestamp %"
++        GST_TIME_FORMAT ", duration %" GST_TIME_FORMAT, buf,
++        GST_BUFFER_OFFSET (buf),
++        GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
++        GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
++
++    /* iterate ouput queue an push downstream */
++    res = gst_pad_push (ffmpegdec->srcpad, buf);
++
++    ffmpegdec->queued =
++        g_list_delete_link (ffmpegdec->queued, ffmpegdec->queued);
++  }
++  return res;
++}
++
++static void
++gst_avpacket_init (AVPacket * packet, guint8 * data, guint size)
++{
++  memset (packet, 0, sizeof (AVPacket));
++  packet->data = data;
++  packet->size = size;
++}
++
++/* gst_ffmpegdec_[video|audio]_frame:
++ * ffmpegdec:
++ * data: pointer to the data to decode
++ * size: size of data in bytes
++ * in_timestamp: incoming timestamp.
++ * in_duration: incoming duration.
++ * in_offset: incoming offset (frame number).
++ * outbuf: outgoing buffer. Different from NULL ONLY if it contains decoded data.
++ * ret: Return flow.
++ *
++ * Returns: number of bytes used in decoding. The check for successful decode is
++ *   outbuf being non-NULL.
++ */
++static gint
++gst_ffmpegdec_video_frame (GstFFMpegDec * ffmpegdec,
++    guint8 * data, guint size,
++    const GstTSInfo * dec_info, GstBuffer ** outbuf, GstFlowReturn * ret)
++{
++  gint len = -1;
++  gint have_data;
++  gboolean mode_switch;
++  gboolean decode;
++  gint skip_frame = AVDISCARD_DEFAULT;
++  GstClockTime out_timestamp, out_duration, out_pts;
++  gint64 out_offset;
++  const GstTSInfo *out_info;
++  AVPacket packet;
++
++  *ret = GST_FLOW_OK;
++  *outbuf = NULL;
++
++  ffmpegdec->context->opaque = ffmpegdec;
++
++  /* in case we skip frames */
++  ffmpegdec->picture->pict_type = -1;
++
++  /* run QoS code, we don't stop decoding the frame when we are late because
++   * else we might skip a reference frame */
++  decode = gst_ffmpegdec_do_qos (ffmpegdec, dec_info->timestamp, &mode_switch);
++
++  if (ffmpegdec->is_realvideo && data != NULL) {
++    gint slice_count;
++    gint i;
++
++    /* setup the slice table for realvideo */
++    if (ffmpegdec->context->slice_offset == NULL)
++      ffmpegdec->context->slice_offset = g_malloc (sizeof (guint32) * 1000);
++
++    slice_count = (*data++) + 1;
++    ffmpegdec->context->slice_count = slice_count;
++
++    for (i = 0; i < slice_count; i++) {
++      data += 4;
++      ffmpegdec->context->slice_offset[i] = GST_READ_UINT32_LE (data);
++      data += 4;
++    }
++  }
++
++  if (!decode) {
++    /* no decoding needed, save previous skip_frame value and brutely skip
++     * decoding everything */
++    skip_frame = ffmpegdec->context->skip_frame;
++    ffmpegdec->context->skip_frame = AVDISCARD_NONREF;
++  }
++
++  /* save reference to the timing info */
++  ffmpegdec->context->reordered_opaque = (gint64) dec_info->idx;
++  ffmpegdec->picture->reordered_opaque = (gint64) dec_info->idx;
++
++  GST_DEBUG_OBJECT (ffmpegdec, "stored opaque values idx %d", dec_info->idx);
++
++  /* now decode the frame */
++  gst_avpacket_init (&packet, data, size);
++  len = avcodec_decode_video2 (ffmpegdec->context,
++      ffmpegdec->picture, &have_data, &packet);
++
++  /* restore previous state */
++  if (!decode)
++    ffmpegdec->context->skip_frame = skip_frame;
++
++  GST_DEBUG_OBJECT (ffmpegdec, "after decode: len %d, have_data %d",
++      len, have_data);
++
++  /* when we are in skip_frame mode, don't complain when ffmpeg returned
++   * no data because we told it to skip stuff. */
++  if (len < 0 && (mode_switch || ffmpegdec->context->skip_frame))
++    len = 0;
++
++  if (len > 0 && have_data <= 0 && (mode_switch
++          || ffmpegdec->context->skip_frame)) {
++    /* we consumed some bytes but nothing decoded and we are skipping frames,
++     * disable the interpollation of DTS timestamps */
++    ffmpegdec->last_out = -1;
++  }
++
++  /* no data, we're done */
++  if (len < 0 || have_data <= 0)
++    goto beach;
++
++  /* get the output picture timing info again */
++  out_info = gst_ts_info_get (ffmpegdec, ffmpegdec->picture->reordered_opaque);
++  out_pts = out_info->timestamp;
++  out_duration = out_info->duration;
++  out_offset = out_info->offset;
++
++  GST_DEBUG_OBJECT (ffmpegdec,
++      "pts %" G_GUINT64_FORMAT " duration %" G_GUINT64_FORMAT " offset %"
++      G_GINT64_FORMAT, out_pts, out_duration, out_offset);
++  GST_DEBUG_OBJECT (ffmpegdec, "picture: pts %" G_GUINT64_FORMAT,
++      (guint64) ffmpegdec->picture->pts);
++  GST_DEBUG_OBJECT (ffmpegdec, "picture: num %d",
++      ffmpegdec->picture->coded_picture_number);
++  GST_DEBUG_OBJECT (ffmpegdec, "picture: ref %d",
++      ffmpegdec->picture->reference);
++  GST_DEBUG_OBJECT (ffmpegdec, "picture: display %d",
++      ffmpegdec->picture->display_picture_number);
++  GST_DEBUG_OBJECT (ffmpegdec, "picture: opaque %p",
++      ffmpegdec->picture->opaque);
++  GST_DEBUG_OBJECT (ffmpegdec, "picture: reordered opaque %" G_GUINT64_FORMAT,
++      (guint64) ffmpegdec->picture->reordered_opaque);
++  GST_DEBUG_OBJECT (ffmpegdec, "repeat_pict:%d",
++      ffmpegdec->picture->repeat_pict);
++  GST_DEBUG_OBJECT (ffmpegdec, "interlaced_frame:%d",
++      ffmpegdec->picture->interlaced_frame);
++
++  if (G_UNLIKELY (ffmpegdec->picture->interlaced_frame !=
++          ffmpegdec->format.video.interlaced)) {
++    GST_WARNING ("Change in interlacing ! picture:%d, recorded:%d",
++        ffmpegdec->picture->interlaced_frame,
++        ffmpegdec->format.video.interlaced);
++    ffmpegdec->format.video.interlaced = ffmpegdec->picture->interlaced_frame;
++    gst_ffmpegdec_negotiate (ffmpegdec, TRUE);
++  }
++
++  /* Whether a frame is interlaced or not is unknown at the time of
++     buffer allocation, so caps on the buffer in opaque will have
++     the previous frame's interlaced flag set. So if interlacedness
++     has changed since allocation, we update the buffer (if any)
++     caps now with the correct interlaced flag. */
++  if (ffmpegdec->picture->opaque != NULL) {
++    GstBuffer *buffer = ffmpegdec->picture->opaque;
++    if (GST_BUFFER_CAPS (buffer) && GST_PAD_CAPS (ffmpegdec->srcpad)) {
++      GstStructure *s = gst_caps_get_structure (GST_BUFFER_CAPS (buffer), 0);
++      gboolean interlaced;
++      gboolean found = gst_structure_get_boolean (s, "interlaced", &interlaced);
++      if (!found || (!!interlaced != !!ffmpegdec->format.video.interlaced)) {
++        GST_DEBUG_OBJECT (ffmpegdec,
++            "Buffer interlacing does not match pad, updating");
++        buffer = gst_buffer_make_metadata_writable (buffer);
++        gst_buffer_set_caps (buffer, GST_PAD_CAPS (ffmpegdec->srcpad));
++        ffmpegdec->picture->opaque = buffer;
++      }
++    }
++  }
++
++  /* check that the timestamps go upwards */
++  if (ffmpegdec->last_out != -1 && ffmpegdec->last_out > out_pts) {
++    /* timestamps go backwards, this means frames were reordered and we must
++     * be dealing with DTS as the buffer timestamps */
++    if (!ffmpegdec->reordered_out) {
++      GST_DEBUG_OBJECT (ffmpegdec, "detected reordered out timestamps");
++      ffmpegdec->reordered_out = TRUE;
++    }
++    if (ffmpegdec->reordered_in) {
++      /* we reset the input reordering here because we want to recover from an
++       * occasionally wrong reordered input timestamp */
++      GST_DEBUG_OBJECT (ffmpegdec, "assuming DTS input timestamps");
++      ffmpegdec->reordered_in = FALSE;
++    }
++  }
++
++  if (out_pts == 0 && out_pts == ffmpegdec->last_out) {
++    GST_LOG_OBJECT (ffmpegdec, "ffmpeg returns 0 timestamps, ignoring");
++    /* some codecs only output 0 timestamps, when that happens, make us select an
++     * output timestamp based on the input timestamp. We do this by making the
++     * ffmpeg timestamp and the interpollated next timestamp invalid. */
++    out_pts = -1;
++    ffmpegdec->next_out = -1;
++  } else
++    ffmpegdec->last_out = out_pts;
++
++  /* we assume DTS as input timestamps unless we see reordered input
++   * timestamps */
++  if (!ffmpegdec->reordered_in && ffmpegdec->reordered_out) {
++    /* PTS and DTS are the same for keyframes */
++    if (ffmpegdec->next_out != -1) {
++      /* interpolate all timestamps except for keyframes, FIXME, this is
++       * wrong when QoS is active. */
++      GST_DEBUG_OBJECT (ffmpegdec, "interpolate timestamps");
++      out_pts = -1;
++      out_offset = -1;
++    }
++  }
++
++  /* get a handle to the output buffer */
++  *ret = get_output_buffer (ffmpegdec, outbuf);
++  if (G_UNLIKELY (*ret != GST_FLOW_OK))
++    goto no_output;
++
++  /*
++   * Timestamps:
++   *
++   *  1) Copy picture timestamp if valid
++   *  2) else interpolate from previous output timestamp
++   *  3) else copy input timestamp
++   */
++  out_timestamp = -1;
++  if (out_pts != -1) {
++    /* Get (interpolated) timestamp from FFMPEG */
++    out_timestamp = (GstClockTime) out_pts;
++    GST_LOG_OBJECT (ffmpegdec, "using timestamp %" GST_TIME_FORMAT
++        " returned by ffmpeg", GST_TIME_ARGS (out_timestamp));
++  }
++  if (!GST_CLOCK_TIME_IS_VALID (out_timestamp) && ffmpegdec->next_out != -1) {
++    out_timestamp = ffmpegdec->next_out;
++    GST_LOG_OBJECT (ffmpegdec, "using next timestamp %" GST_TIME_FORMAT,
++        GST_TIME_ARGS (out_timestamp));
++  }
++  if (!GST_CLOCK_TIME_IS_VALID (out_timestamp)) {
++    out_timestamp = dec_info->timestamp;
++    GST_LOG_OBJECT (ffmpegdec, "using in timestamp %" GST_TIME_FORMAT,
++        GST_TIME_ARGS (out_timestamp));
++  }
++  GST_BUFFER_TIMESTAMP (*outbuf) = out_timestamp;
++
++  /*
++   * Offset:
++   *  0) Use stored input offset (from opaque)
++   *  1) Use value converted from timestamp if valid
++   *  2) Use input offset if valid
++   */
++  if (out_offset != GST_BUFFER_OFFSET_NONE) {
++    /* out_offset already contains the offset from ts_info */
++    GST_LOG_OBJECT (ffmpegdec, "Using offset returned by ffmpeg");
++  } else if (out_timestamp != GST_CLOCK_TIME_NONE) {
++    GstFormat out_fmt = GST_FORMAT_DEFAULT;
++    GST_LOG_OBJECT (ffmpegdec, "Using offset converted from timestamp");
++    /* FIXME, we should really remove this as it's not nice at all to do
++     * upstream queries for each frame to get the frame offset. We also can't
++     * really remove this because it is the only way of setting frame offsets
++     * on outgoing buffers. We should have metadata so that the upstream peer
++     * can set a frame number on the encoded data. */
++    gst_pad_query_peer_convert (ffmpegdec->sinkpad,
++        GST_FORMAT_TIME, out_timestamp, &out_fmt, &out_offset);
++  } else if (dec_info->offset != GST_BUFFER_OFFSET_NONE) {
++    /* FIXME, the input offset is input media specific and might not
++     * be the same for the output media. (byte offset as input, frame number
++     * as output, for example) */
++    GST_LOG_OBJECT (ffmpegdec, "using in_offset %" G_GINT64_FORMAT,
++        dec_info->offset);
++    out_offset = dec_info->offset;
++  } else {
++    GST_LOG_OBJECT (ffmpegdec, "no valid offset found");
++    out_offset = GST_BUFFER_OFFSET_NONE;
++  }
++  GST_BUFFER_OFFSET (*outbuf) = out_offset;
++
++  /*
++   * Duration:
++   *
++   *  1) Use reordered input duration if valid
++   *  2) Else use input duration
++   *  3) else use input framerate
++   *  4) else use ffmpeg framerate
++   */
++  if (GST_CLOCK_TIME_IS_VALID (out_duration)) {
++    /* We have a valid (reordered) duration */
++    GST_LOG_OBJECT (ffmpegdec, "Using duration returned by ffmpeg");
++  } else if (GST_CLOCK_TIME_IS_VALID (dec_info->duration)) {
++    GST_LOG_OBJECT (ffmpegdec, "using in_duration");
++    out_duration = dec_info->duration;
++  } else if (GST_CLOCK_TIME_IS_VALID (ffmpegdec->last_diff)) {
++    GST_LOG_OBJECT (ffmpegdec, "using last-diff");
++    out_duration = ffmpegdec->last_diff;
++  } else {
++    /* if we have an input framerate, use that */
++    if (ffmpegdec->format.video.fps_n != -1 &&
++        (ffmpegdec->format.video.fps_n != 1000 &&
++            ffmpegdec->format.video.fps_d != 1)) {
++      GST_LOG_OBJECT (ffmpegdec, "using input framerate for duration");
++      out_duration = gst_util_uint64_scale_int (GST_SECOND,
++          ffmpegdec->format.video.fps_d, ffmpegdec->format.video.fps_n);
++    } else {
++      /* don't try to use the decoder's framerate when it seems a bit abnormal,
++       * which we assume when den >= 1000... */
++      if (ffmpegdec->context->time_base.num != 0 &&
++          (ffmpegdec->context->time_base.den > 0 &&
++              ffmpegdec->context->time_base.den < 1000)) {
++        GST_LOG_OBJECT (ffmpegdec, "using decoder's framerate for duration");
++        out_duration = gst_util_uint64_scale_int (GST_SECOND,
++            ffmpegdec->context->time_base.num *
++            ffmpegdec->context->ticks_per_frame,
++            ffmpegdec->context->time_base.den);
++      } else {
++        GST_LOG_OBJECT (ffmpegdec, "no valid duration found");
++      }
++    }
++  }
++
++  /* Take repeat_pict into account */
++  if (GST_CLOCK_TIME_IS_VALID (out_duration)) {
++    out_duration += out_duration * ffmpegdec->picture->repeat_pict / 2;
++  }
++  GST_BUFFER_DURATION (*outbuf) = out_duration;
++
++  if (out_timestamp != -1 && out_duration != -1 && out_duration != 0)
++    ffmpegdec->next_out = out_timestamp + out_duration;
++  else
++    ffmpegdec->next_out = -1;
++
++  /* now see if we need to clip the buffer against the segment boundaries. */
++  if (G_UNLIKELY (!clip_video_buffer (ffmpegdec, *outbuf, out_timestamp,
++              out_duration)))
++    goto clipped;
++
++  if (ffmpegdec->picture->top_field_first)
++    GST_BUFFER_FLAG_SET (*outbuf, GST_VIDEO_BUFFER_TFF);
++
++
++beach:
++  GST_DEBUG_OBJECT (ffmpegdec, "return flow %d, out %p, len %d",
++      *ret, *outbuf, len);
++  return len;
++
++  /* special cases */
++no_output:
++  {
++    GST_DEBUG_OBJECT (ffmpegdec, "no output buffer");
++    len = -1;
++    goto beach;
++  }
++clipped:
++  {
++    GST_DEBUG_OBJECT (ffmpegdec, "buffer clipped");
++    gst_buffer_unref (*outbuf);
++    *outbuf = NULL;
++    goto beach;
++  }
++}
++
++/* returns TRUE if buffer is within segment, else FALSE.
++ * if Buffer is on segment border, it's timestamp and duration will be clipped */
++static gboolean
++clip_audio_buffer (GstFFMpegDec * dec, GstBuffer * buf, GstClockTime in_ts,
++    GstClockTime in_dur)
++{
++  GstClockTime stop;
++  gint64 diff, ctime, cstop;
++  gboolean res = TRUE;
++
++  GST_LOG_OBJECT (dec,
++      "timestamp:%" GST_TIME_FORMAT ", duration:%" GST_TIME_FORMAT
++      ", size %u", GST_TIME_ARGS (in_ts), GST_TIME_ARGS (in_dur),
++      GST_BUFFER_SIZE (buf));
++
++  /* can't clip without TIME segment */
++  if (G_UNLIKELY (dec->segment.format != GST_FORMAT_TIME))
++    goto beach;
++
++  /* we need a start time */
++  if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (in_ts)))
++    goto beach;
++
++  /* trust duration */
++  stop = in_ts + in_dur;
++
++  res = gst_segment_clip (&dec->segment, GST_FORMAT_TIME, in_ts, stop, &ctime,
++      &cstop);
++  if (G_UNLIKELY (!res))
++    goto out_of_segment;
++
++  /* see if some clipping happened */
++  if (G_UNLIKELY ((diff = ctime - in_ts) > 0)) {
++    /* bring clipped time to bytes */
++    diff =
++        gst_util_uint64_scale_int (diff, dec->format.audio.samplerate,
++        GST_SECOND) * (dec->format.audio.depth * dec->format.audio.channels);
++
++    GST_DEBUG_OBJECT (dec, "clipping start to %" GST_TIME_FORMAT " %"
++        G_GINT64_FORMAT " bytes", GST_TIME_ARGS (ctime), diff);
++
++    GST_BUFFER_SIZE (buf) -= diff;
++    GST_BUFFER_DATA (buf) += diff;
++  }
++  if (G_UNLIKELY ((diff = stop - cstop) > 0)) {
++    /* bring clipped time to bytes */
++    diff =
++        gst_util_uint64_scale_int (diff, dec->format.audio.samplerate,
++        GST_SECOND) * (dec->format.audio.depth * dec->format.audio.channels);
++
++    GST_DEBUG_OBJECT (dec, "clipping stop to %" GST_TIME_FORMAT " %"
++        G_GINT64_FORMAT " bytes", GST_TIME_ARGS (cstop), diff);
++
++    GST_BUFFER_SIZE (buf) -= diff;
++  }
++  GST_BUFFER_TIMESTAMP (buf) = ctime;
++  GST_BUFFER_DURATION (buf) = cstop - ctime;
++
++beach:
++  GST_LOG_OBJECT (dec, "%sdropping", (res ? "not " : ""));
++  return res;
++
++  /* ERRORS */
++out_of_segment:
++  {
++    GST_LOG_OBJECT (dec, "out of segment");
++    goto beach;
++  }
++}
++
++static gint
++gst_ffmpegdec_audio_frame (GstFFMpegDec * ffmpegdec,
++    AVCodec * in_plugin, guint8 * data, guint size,
++    const GstTSInfo * dec_info, GstBuffer ** outbuf, GstFlowReturn * ret)
++{
++  gint len = -1;
++  gint have_data = AVCODEC_MAX_AUDIO_FRAME_SIZE;
++  GstClockTime out_timestamp, out_duration;
++  gint64 out_offset;
++  AVPacket packet;
++
++  GST_DEBUG_OBJECT (ffmpegdec,
++      "size:%d, offset:%" G_GINT64_FORMAT ", ts:%" GST_TIME_FORMAT ", dur:%"
++      GST_TIME_FORMAT ", ffmpegdec->next_out:%" GST_TIME_FORMAT, size,
++      dec_info->offset, GST_TIME_ARGS (dec_info->timestamp),
++      GST_TIME_ARGS (dec_info->duration), GST_TIME_ARGS (ffmpegdec->next_out));
++
++  *outbuf =
++      new_aligned_buffer (AVCODEC_MAX_AUDIO_FRAME_SIZE,
++      GST_PAD_CAPS (ffmpegdec->srcpad));
++
++  gst_avpacket_init (&packet, data, size);
++  len = avcodec_decode_audio3 (ffmpegdec->context,
++      (int16_t *) GST_BUFFER_DATA (*outbuf), &have_data, &packet);
++  GST_DEBUG_OBJECT (ffmpegdec,
++      "Decode audio: len=%d, have_data=%d", len, have_data);
++
++  if (len >= 0 && have_data > 0) {
++    GST_DEBUG_OBJECT (ffmpegdec, "Creating output buffer");
++    if (!gst_ffmpegdec_negotiate (ffmpegdec, FALSE)) {
++      gst_buffer_unref (*outbuf);
++      *outbuf = NULL;
++      len = -1;
++      goto beach;
++    }
++
++    /* Buffer size */
++    GST_BUFFER_SIZE (*outbuf) = have_data;
++
++    /*
++     * Timestamps:
++     *
++     *  1) Copy input timestamp if valid
++     *  2) else interpolate from previous input timestamp
++     */
++    /* always take timestamps from the input buffer if any */
++    if (GST_CLOCK_TIME_IS_VALID (dec_info->timestamp)) {
++      out_timestamp = dec_info->timestamp;
++    } else {
++      out_timestamp = ffmpegdec->next_out;
++    }
++
++    /*
++     * Duration:
++     *
++     *  1) calculate based on number of samples
++     */
++    out_duration = gst_util_uint64_scale (have_data, GST_SECOND,
++        ffmpegdec->format.audio.depth * ffmpegdec->format.audio.channels *
++        ffmpegdec->format.audio.samplerate);
++
++    /* offset:
++     *
++     * Just copy
++     */
++    out_offset = dec_info->offset;
++
++    GST_DEBUG_OBJECT (ffmpegdec,
++        "Buffer created. Size:%d , timestamp:%" GST_TIME_FORMAT " , duration:%"
++        GST_TIME_FORMAT, have_data,
++        GST_TIME_ARGS (out_timestamp), GST_TIME_ARGS (out_duration));
++
++    GST_BUFFER_TIMESTAMP (*outbuf) = out_timestamp;
++    GST_BUFFER_DURATION (*outbuf) = out_duration;
++    GST_BUFFER_OFFSET (*outbuf) = out_offset;
++    gst_buffer_set_caps (*outbuf, GST_PAD_CAPS (ffmpegdec->srcpad));
++
++    /* the next timestamp we'll use when interpolating */
++    if (GST_CLOCK_TIME_IS_VALID (out_timestamp))
++      ffmpegdec->next_out = out_timestamp + out_duration;
++
++    /* now see if we need to clip the buffer against the segment boundaries. */
++    if (G_UNLIKELY (!clip_audio_buffer (ffmpegdec, *outbuf, out_timestamp,
++                out_duration)))
++      goto clipped;
++
++  } else {
++    gst_buffer_unref (*outbuf);
++    *outbuf = NULL;
++  }
++
++  /* If we don't error out after the first failed read with the AAC decoder,
++   * we must *not* carry on pushing data, else we'll cause segfaults... */
++  if (len == -1 && (in_plugin->id == CODEC_ID_AAC
++          || in_plugin->id == CODEC_ID_AAC_LATM)) {
++    GST_ELEMENT_ERROR (ffmpegdec, STREAM, DECODE, (NULL),
++        ("Decoding of AAC stream by FFMPEG failed."));
++    *ret = GST_FLOW_ERROR;
++  }
++
++beach:
++  GST_DEBUG_OBJECT (ffmpegdec, "return flow %d, out %p, len %d",
++      *ret, *outbuf, len);
++  return len;
++
++  /* ERRORS */
++clipped:
++  {
++    GST_DEBUG_OBJECT (ffmpegdec, "buffer clipped");
++    gst_buffer_unref (*outbuf);
++    *outbuf = NULL;
++    goto beach;
++  }
++}
++
++/* gst_ffmpegdec_frame:
++ * ffmpegdec:
++ * data: pointer to the data to decode
++ * size: size of data in bytes
++ * got_data: 0 if no data was decoded, != 0 otherwise.
++ * in_time: timestamp of data
++ * in_duration: duration of data
++ * ret: GstFlowReturn to return in the chain function
++ *
++ * Decode the given frame and pushes it downstream.
++ *
++ * Returns: Number of bytes used in decoding, -1 on error/failure.
++ */
++
++static gint
++gst_ffmpegdec_frame (GstFFMpegDec * ffmpegdec,
++    guint8 * data, guint size, gint * got_data, const GstTSInfo * dec_info,
++    GstFlowReturn * ret)
++{
++  GstFFMpegDecClass *oclass;
++  GstBuffer *outbuf = NULL;
++  gint have_data = 0, len = 0;
++
++  if (G_UNLIKELY (ffmpegdec->context->codec == NULL))
++    goto no_codec;
++
++  GST_LOG_OBJECT (ffmpegdec, "data:%p, size:%d, id:%d", data, size,
++      dec_info->idx);
++
++  *ret = GST_FLOW_OK;
++  ffmpegdec->context->frame_number++;
++
++  oclass = (GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
++
++  switch (oclass->in_plugin->type) {
++    case AVMEDIA_TYPE_VIDEO:
++      len =
++          gst_ffmpegdec_video_frame (ffmpegdec, data, size, dec_info, &outbuf,
++          ret);
++      break;
++    case AVMEDIA_TYPE_AUDIO:
++      len =
++          gst_ffmpegdec_audio_frame (ffmpegdec, oclass->in_plugin, data, size,
++          dec_info, &outbuf, ret);
++
++      /* if we did not get an output buffer and we have a pending discont, don't
++       * clear the input timestamps, we will put them on the next buffer because
++       * else we might create the first buffer with a very big timestamp gap. */
++      if (outbuf == NULL && ffmpegdec->discont) {
++        GST_DEBUG_OBJECT (ffmpegdec, "no buffer but keeping timestamp");
++        ffmpegdec->clear_ts = FALSE;
++      }
++      break;
++    default:
++      GST_ERROR_OBJECT (ffmpegdec, "Asked to decode non-audio/video frame !");
++      g_assert_not_reached ();
++      break;
++  }
++
++  if (outbuf)
++    have_data = 1;
++
++  if (len < 0 || have_data < 0) {
++    GST_WARNING_OBJECT (ffmpegdec,
++        "ffdec_%s: decoding error (len: %d, have_data: %d)",
++        oclass->in_plugin->name, len, have_data);
++    *got_data = 0;
++    goto beach;
++  } else if (len == 0 && have_data == 0) {
++    *got_data = 0;
++    goto beach;
++  } else {
++    /* this is where I lost my last clue on ffmpeg... */
++    *got_data = 1;
++  }
++
++  if (outbuf) {
++    GST_LOG_OBJECT (ffmpegdec,
++        "Decoded data, now pushing buffer %p with offset %" G_GINT64_FORMAT
++        ", timestamp %" GST_TIME_FORMAT " and duration %" GST_TIME_FORMAT,
++        outbuf, GST_BUFFER_OFFSET (outbuf),
++        GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)),
++        GST_TIME_ARGS (GST_BUFFER_DURATION (outbuf)));
++
++    /* mark pending discont */
++    if (ffmpegdec->discont) {
++      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
++      ffmpegdec->discont = FALSE;
++    }
++
++    if (ffmpegdec->segment.rate > 0.0) {
++      /* and off we go */
++      *ret = gst_pad_push (ffmpegdec->srcpad, outbuf);
++    } else {
++      /* reverse playback, queue frame till later when we get a discont. */
++      GST_DEBUG_OBJECT (ffmpegdec, "queued frame");
++      ffmpegdec->queued = g_list_prepend (ffmpegdec->queued, outbuf);
++      *ret = GST_FLOW_OK;
++    }
++  } else {
++    GST_DEBUG_OBJECT (ffmpegdec, "We didn't get a decoded buffer");
++  }
++
++beach:
++  return len;
++
++  /* ERRORS */
++no_codec:
++  {
++    GST_ERROR_OBJECT (ffmpegdec, "no codec context");
++    return -1;
++  }
++}
++
++static void
++gst_ffmpegdec_drain (GstFFMpegDec * ffmpegdec)
++{
++  GstFFMpegDecClass *oclass;
++
++  oclass = (GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
++
++  if (oclass->in_plugin->capabilities & CODEC_CAP_DELAY) {
++    gint have_data, len, try = 0;
++
++    GST_LOG_OBJECT (ffmpegdec,
++        "codec has delay capabilities, calling until ffmpeg has drained everything");
++
++    do {
++      GstFlowReturn ret;
++
++      len =
++          gst_ffmpegdec_frame (ffmpegdec, NULL, 0, &have_data, &ts_info_none,
++          &ret);
++      if (len < 0 || have_data == 0)
++        break;
++    } while (try++ < 10);
++  }
++  if (ffmpegdec->segment.rate < 0.0) {
++    /* if we have some queued frames for reverse playback, flush them now */
++    flush_queued (ffmpegdec);
++  }
++}
++
++static void
++gst_ffmpegdec_flush_pcache (GstFFMpegDec * ffmpegdec)
++{
++  if (ffmpegdec->pctx) {
++    gint size, bsize;
++    guint8 *data;
++    guint8 bdata[FF_INPUT_BUFFER_PADDING_SIZE];
++
++    bsize = FF_INPUT_BUFFER_PADDING_SIZE;
++    memset (bdata, 0, bsize);
++
++    /* parse some dummy data to work around some ffmpeg weirdness where it keeps
++     * the previous pts around */
++    av_parser_parse2 (ffmpegdec->pctx, ffmpegdec->context,
++        &data, &size, bdata, bsize, -1, -1, -1);
++    ffmpegdec->pctx->pts = -1;
++    ffmpegdec->pctx->dts = -1;
++  }
++
++  if (ffmpegdec->pcache) {
++    gst_buffer_unref (ffmpegdec->pcache);
++    ffmpegdec->pcache = NULL;
++  }
++}
++
++static gboolean
++gst_ffmpegdec_sink_event (GstPad * pad, GstEvent * event)
++{
++  GstFFMpegDec *ffmpegdec;
++  gboolean ret = FALSE;
++
++  ffmpegdec = (GstFFMpegDec *) gst_pad_get_parent (pad);
++
++  GST_DEBUG_OBJECT (ffmpegdec, "Handling %s event",
++      GST_EVENT_TYPE_NAME (event));
++
++  switch (GST_EVENT_TYPE (event)) {
++    case GST_EVENT_EOS:
++    {
++      gst_ffmpegdec_drain (ffmpegdec);
++      break;
++    }
++    case GST_EVENT_FLUSH_STOP:
++    {
++      if (ffmpegdec->opened) {
++        avcodec_flush_buffers (ffmpegdec->context);
++      }
++      gst_ffmpegdec_reset_ts (ffmpegdec);
++      gst_ffmpegdec_reset_qos (ffmpegdec);
++      gst_ffmpegdec_flush_pcache (ffmpegdec);
++      gst_segment_init (&ffmpegdec->segment, GST_FORMAT_TIME);
++      clear_queued (ffmpegdec);
++      break;
++    }
++    case GST_EVENT_NEWSEGMENT:
++    {
++      gboolean update;
++      GstFormat fmt;
++      gint64 start, stop, time;
++      gdouble rate, arate;
++
++      gst_event_parse_new_segment_full (event, &update, &rate, &arate, &fmt,
++          &start, &stop, &time);
++
++      switch (fmt) {
++        case GST_FORMAT_TIME:
++          /* fine, our native segment format */
++          break;
++        case GST_FORMAT_BYTES:
++        {
++          gint bit_rate;
++
++          bit_rate = ffmpegdec->context->bit_rate;
++
++          /* convert to time or fail */
++          if (!bit_rate)
++            goto no_bitrate;
++
++          GST_DEBUG_OBJECT (ffmpegdec, "bitrate: %d", bit_rate);
++
++          /* convert values to TIME */
++          if (start != -1)
++            start = gst_util_uint64_scale_int (start, GST_SECOND, bit_rate);
++          if (stop != -1)
++            stop = gst_util_uint64_scale_int (stop, GST_SECOND, bit_rate);
++          if (time != -1)
++            time = gst_util_uint64_scale_int (time, GST_SECOND, bit_rate);
++
++          /* unref old event */
++          gst_event_unref (event);
++
++          /* create new converted time segment */
++          fmt = GST_FORMAT_TIME;
++          /* FIXME, bitrate is not good enough too find a good stop, let's
++           * hope start and time were 0... meh. */
++          stop = -1;
++          event = gst_event_new_new_segment (update, rate, fmt,
++              start, stop, time);
++          break;
++        }
++        default:
++          /* invalid format */
++          goto invalid_format;
++      }
++
++      /* drain pending frames before trying to use the new segment, queued
++       * buffers belonged to the previous segment. */
++      if (ffmpegdec->context->codec)
++        gst_ffmpegdec_drain (ffmpegdec);
++
++      GST_DEBUG_OBJECT (ffmpegdec,
++          "NEWSEGMENT in time start %" GST_TIME_FORMAT " -- stop %"
++          GST_TIME_FORMAT, GST_TIME_ARGS (start), GST_TIME_ARGS (stop));
++
++      /* and store the values */
++      gst_segment_set_newsegment_full (&ffmpegdec->segment, update,
++          rate, arate, fmt, start, stop, time);
++      break;
++    }
++    default:
++      break;
++  }
++
++  /* and push segment downstream */
++  ret = gst_pad_push_event (ffmpegdec->srcpad, event);
++
++done:
++  gst_object_unref (ffmpegdec);
++
++  return ret;
++
++  /* ERRORS */
++no_bitrate:
++  {
++    GST_WARNING_OBJECT (ffmpegdec, "no bitrate to convert BYTES to TIME");
++    gst_event_unref (event);
++    goto done;
++  }
++invalid_format:
++  {
++    GST_WARNING_OBJECT (ffmpegdec, "unknown format received in NEWSEGMENT");
++    gst_event_unref (event);
++    goto done;
++  }
++}
++
++static GstFlowReturn
++gst_ffmpegdec_chain (GstPad * pad, GstBuffer * inbuf)
++{
++  GstFFMpegDec *ffmpegdec;
++  GstFFMpegDecClass *oclass;
++  guint8 *data, *bdata;
++  gint size, bsize, len, have_data;
++  GstFlowReturn ret = GST_FLOW_OK;
++  GstClockTime in_timestamp;
++  GstClockTime in_duration;
++  gboolean discont;
++  gint64 in_offset;
++  const GstTSInfo *in_info;
++  const GstTSInfo *dec_info;
++
++  ffmpegdec = (GstFFMpegDec *) (GST_PAD_PARENT (pad));
++
++  if (G_UNLIKELY (!ffmpegdec->opened))
++    goto not_negotiated;
++
++  discont = GST_BUFFER_IS_DISCONT (inbuf);
++
++  /* The discont flags marks a buffer that is not continuous with the previous
++   * buffer. This means we need to clear whatever data we currently have. We
++   * currently also wait for a new keyframe, which might be suboptimal in the
++   * case of a network error, better show the errors than to drop all data.. */
++  if (G_UNLIKELY (discont)) {
++    GST_DEBUG_OBJECT (ffmpegdec, "received DISCONT");
++    /* drain what we have queued */
++    gst_ffmpegdec_drain (ffmpegdec);
++    gst_ffmpegdec_flush_pcache (ffmpegdec);
++    avcodec_flush_buffers (ffmpegdec->context);
++    ffmpegdec->discont = TRUE;
++    gst_ffmpegdec_reset_ts (ffmpegdec);
++  }
++  /* by default we clear the input timestamp after decoding each frame so that
++   * interpollation can work. */
++  ffmpegdec->clear_ts = TRUE;
++
++  oclass = (GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
++
++  /* parse cache joining. If there is cached data */
++  if (ffmpegdec->pcache) {
++    /* join with previous data */
++    GST_LOG_OBJECT (ffmpegdec, "join parse cache");
++    inbuf = gst_buffer_join (ffmpegdec->pcache, inbuf);
++    /* no more cached data, we assume we can consume the complete cache */
++    ffmpegdec->pcache = NULL;
++  }
++
++  in_timestamp = GST_BUFFER_TIMESTAMP (inbuf);
++  in_duration = GST_BUFFER_DURATION (inbuf);
++  in_offset = GST_BUFFER_OFFSET (inbuf);
++
++  /* get handle to timestamp info, we can pass this around to ffmpeg */
++  in_info = gst_ts_info_store (ffmpegdec, in_timestamp, in_duration, in_offset);
++
++  if (in_timestamp != -1) {
++    /* check for increasing timestamps if they are jumping backwards, we
++     * probably are dealing with PTS as timestamps */
++    if (!ffmpegdec->reordered_in && ffmpegdec->last_in != -1) {
++      if (in_timestamp < ffmpegdec->last_in) {
++        GST_LOG_OBJECT (ffmpegdec, "detected reordered input timestamps");
++        ffmpegdec->reordered_in = TRUE;
++        ffmpegdec->last_diff = GST_CLOCK_TIME_NONE;
++      } else if (in_timestamp > ffmpegdec->last_in) {
++        GstClockTime diff;
++        /* keep track of timestamp diff to estimate duration */
++        diff = in_timestamp - ffmpegdec->last_in;
++        /* need to scale with amount of frames in the interval */
++        if (ffmpegdec->last_frames)
++          diff /= ffmpegdec->last_frames;
++
++        GST_LOG_OBJECT (ffmpegdec, "estimated duration %" GST_TIME_FORMAT " %u",
++            GST_TIME_ARGS (diff), ffmpegdec->last_frames);
++
++        ffmpegdec->last_diff = diff;
++      }
++    }
++    ffmpegdec->last_in = in_timestamp;
++    ffmpegdec->last_frames = 0;
++  }
++
++  GST_LOG_OBJECT (ffmpegdec,
++      "Received new data of size %u, offset:%" G_GUINT64_FORMAT ", ts:%"
++      GST_TIME_FORMAT ", dur:%" GST_TIME_FORMAT ", info %d",
++      GST_BUFFER_SIZE (inbuf), GST_BUFFER_OFFSET (inbuf),
++      GST_TIME_ARGS (in_timestamp), GST_TIME_ARGS (in_duration), in_info->idx);
++
++  /* workarounds, functions write to buffers:
++   *  libavcodec/svq1.c:svq1_decode_frame writes to the given buffer.
++   *  libavcodec/svq3.c:svq3_decode_slice_header too.
++   * ffmpeg devs know about it and will fix it (they said). */
++  if (oclass->in_plugin->id == CODEC_ID_SVQ1 ||
++      oclass->in_plugin->id == CODEC_ID_SVQ3) {
++    inbuf = gst_buffer_make_writable (inbuf);
++  }
++
++  bdata = GST_BUFFER_DATA (inbuf);
++  bsize = GST_BUFFER_SIZE (inbuf);
++
++  if (ffmpegdec->do_padding) {
++    /* add padding */
++    if (ffmpegdec->padded_size < bsize + FF_INPUT_BUFFER_PADDING_SIZE) {
++      ffmpegdec->padded_size = bsize + FF_INPUT_BUFFER_PADDING_SIZE;
++      ffmpegdec->padded = g_realloc (ffmpegdec->padded, ffmpegdec->padded_size);
++      GST_LOG_OBJECT (ffmpegdec, "resized padding buffer to %d",
++          ffmpegdec->padded_size);
++    }
++    memcpy (ffmpegdec->padded, bdata, bsize);
++    memset (ffmpegdec->padded + bsize, 0, FF_INPUT_BUFFER_PADDING_SIZE);
++
++    bdata = ffmpegdec->padded;
++  }
++
++  do {
++    guint8 tmp_padding[FF_INPUT_BUFFER_PADDING_SIZE];
++
++    /* parse, if at all possible */
++    if (ffmpegdec->pctx) {
++      gint res;
++
++      GST_LOG_OBJECT (ffmpegdec,
++          "Calling av_parser_parse2 with offset %" G_GINT64_FORMAT ", ts:%"
++          GST_TIME_FORMAT " size %d", in_offset, GST_TIME_ARGS (in_timestamp),
++          bsize);
++
++      /* feed the parser. We pass the timestamp info so that we can recover all
++       * info again later */
++      res = av_parser_parse2 (ffmpegdec->pctx, ffmpegdec->context,
++          &data, &size, bdata, bsize, in_info->idx, in_info->idx, in_offset);
++
++      GST_LOG_OBJECT (ffmpegdec,
++          "parser returned res %d and size %d, id %" G_GINT64_FORMAT, res, size,
++          ffmpegdec->pctx->pts);
++
++      /* store pts for decoding */
++      if (ffmpegdec->pctx->pts != AV_NOPTS_VALUE && ffmpegdec->pctx->pts != -1)
++        dec_info = gst_ts_info_get (ffmpegdec, ffmpegdec->pctx->pts);
++      else {
++        /* ffmpeg sometimes loses track after a flush, help it by feeding a
++         * valid start time */
++        ffmpegdec->pctx->pts = in_info->idx;
++        ffmpegdec->pctx->dts = in_info->idx;
++        dec_info = in_info;
++      }
++
++      GST_LOG_OBJECT (ffmpegdec, "consuming %d bytes. id %d", size,
++          dec_info->idx);
++
++      if (res) {
++        /* there is output, set pointers for next round. */
++        bsize -= res;
++        bdata += res;
++      } else {
++        /* Parser did not consume any data, make sure we don't clear the
++         * timestamp for the next round */
++        ffmpegdec->clear_ts = FALSE;
++      }
++
++      /* if there is no output, we must break and wait for more data. also the
++       * timestamp in the context is not updated. */
++      if (size == 0) {
++        if (bsize > 0)
++          continue;
++        else
++          break;
++      }
++    } else {
++      data = bdata;
++      size = bsize;
++
++      dec_info = in_info;
++    }
++
++    if (ffmpegdec->do_padding) {
++      /* add temporary padding */
++      memcpy (tmp_padding, data + size, FF_INPUT_BUFFER_PADDING_SIZE);
++      memset (data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
++    }
++
++    /* decode a frame of audio/video now */
++    len =
++        gst_ffmpegdec_frame (ffmpegdec, data, size, &have_data, dec_info, &ret);
++
++    if (ffmpegdec->do_padding) {
++      memcpy (data + size, tmp_padding, FF_INPUT_BUFFER_PADDING_SIZE);
++    }
++
++    if (ret != GST_FLOW_OK) {
++      GST_LOG_OBJECT (ffmpegdec, "breaking because of flow ret %s",
++          gst_flow_get_name (ret));
++      /* bad flow retun, make sure we discard all data and exit */
++      bsize = 0;
++      break;
++    }
++    if (!ffmpegdec->pctx) {
++      if (len == 0 && !have_data) {
++        /* nothing was decoded, this could be because no data was available or
++         * because we were skipping frames.
++         * If we have no context we must exit and wait for more data, we keep the
++         * data we tried. */
++        GST_LOG_OBJECT (ffmpegdec, "Decoding didn't return any data, breaking");
++        break;
++      } else if (len < 0) {
++        /* a decoding error happened, we must break and try again with next data. */
++        GST_LOG_OBJECT (ffmpegdec, "Decoding error, breaking");
++        bsize = 0;
++        break;
++      }
++      /* prepare for the next round, for codecs with a context we did this
++       * already when using the parser. */
++      bsize -= len;
++      bdata += len;
++    } else {
++      if (len == 0) {
++        /* nothing was decoded, this could be because no data was available or
++         * because we were skipping frames. Since we have a parser we can
++         * continue with the next frame */
++        GST_LOG_OBJECT (ffmpegdec,
++            "Decoding didn't return any data, trying next");
++      } else if (len < 0) {
++        /* we have a context that will bring us to the next frame */
++        GST_LOG_OBJECT (ffmpegdec, "Decoding error, trying next");
++      }
++    }
++
++    /* make sure we don't use the same old timestamp for the next frame and let
++     * the interpollation take care of it. */
++    if (ffmpegdec->clear_ts) {
++      in_timestamp = GST_CLOCK_TIME_NONE;
++      in_duration = GST_CLOCK_TIME_NONE;
++      in_offset = GST_BUFFER_OFFSET_NONE;
++      in_info = GST_TS_INFO_NONE;
++    } else {
++      ffmpegdec->clear_ts = TRUE;
++    }
++    ffmpegdec->last_frames++;
++
++    GST_LOG_OBJECT (ffmpegdec, "Before (while bsize>0).  bsize:%d , bdata:%p",
++        bsize, bdata);
++  } while (bsize > 0);
++
++  /* keep left-over */
++  if (ffmpegdec->pctx && bsize > 0) {
++    in_timestamp = GST_BUFFER_TIMESTAMP (inbuf);
++    in_offset = GST_BUFFER_OFFSET (inbuf);
++
++    GST_LOG_OBJECT (ffmpegdec,
++        "Keeping %d bytes of data with offset %" G_GINT64_FORMAT ", timestamp %"
++        GST_TIME_FORMAT, bsize, in_offset, GST_TIME_ARGS (in_timestamp));
++
++    ffmpegdec->pcache = gst_buffer_create_sub (inbuf,
++        GST_BUFFER_SIZE (inbuf) - bsize, bsize);
++    /* we keep timestamp, even though all we really know is that the correct
++     * timestamp is not below the one from inbuf */
++    GST_BUFFER_TIMESTAMP (ffmpegdec->pcache) = in_timestamp;
++    GST_BUFFER_OFFSET (ffmpegdec->pcache) = in_offset;
++  } else if (bsize > 0) {
++    GST_DEBUG_OBJECT (ffmpegdec, "Dropping %d bytes of data", bsize);
++  }
++  gst_buffer_unref (inbuf);
++
++  return ret;
++
++  /* ERRORS */
++not_negotiated:
++  {
++    oclass = (GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
++    GST_ELEMENT_ERROR (ffmpegdec, CORE, NEGOTIATION, (NULL),
++        ("ffdec_%s: input format was not set before data start",
++            oclass->in_plugin->name));
++    gst_buffer_unref (inbuf);
++    return GST_FLOW_NOT_NEGOTIATED;
++  }
++}
++
++static GstStateChangeReturn
++gst_ffmpegdec_change_state (GstElement * element, GstStateChange transition)
++{
++  GstFFMpegDec *ffmpegdec = (GstFFMpegDec *) element;
++  GstStateChangeReturn ret;
++
++  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
++
++  switch (transition) {
++    case GST_STATE_CHANGE_PAUSED_TO_READY:
++      GST_OBJECT_LOCK (ffmpegdec);
++      gst_ffmpegdec_close (ffmpegdec);
++      GST_OBJECT_UNLOCK (ffmpegdec);
++      clear_queued (ffmpegdec);
++      g_free (ffmpegdec->padded);
++      ffmpegdec->padded = NULL;
++      ffmpegdec->padded_size = 0;
++      ffmpegdec->can_allocate_aligned = TRUE;
++      break;
++    default:
++      break;
++  }
++
++  return ret;
++}
++
++static void
++gst_ffmpegdec_set_property (GObject * object,
++    guint prop_id, const GValue * value, GParamSpec * pspec)
++{
++  GstFFMpegDec *ffmpegdec = (GstFFMpegDec *) object;
++
++  switch (prop_id) {
++    case PROP_LOWRES:
++      ffmpegdec->lowres = ffmpegdec->context->lowres = g_value_get_enum (value);
++      break;
++    case PROP_SKIPFRAME:
++      ffmpegdec->skip_frame = ffmpegdec->context->skip_frame =
++          g_value_get_enum (value);
++      break;
++    case PROP_DIRECT_RENDERING:
++      ffmpegdec->direct_rendering = g_value_get_boolean (value);
++      break;
++    case PROP_DO_PADDING:
++      ffmpegdec->do_padding = g_value_get_boolean (value);
++      break;
++    case PROP_DEBUG_MV:
++      ffmpegdec->debug_mv = ffmpegdec->context->debug_mv =
++          g_value_get_boolean (value);
++      break;
++    case PROP_CROP:
++      ffmpegdec->crop = g_value_get_boolean (value);
++      break;
++    case PROP_MAX_THREADS:
++      ffmpegdec->max_threads = g_value_get_int (value);
++      break;
++    default:
++      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++      break;
++  }
++}
++
++static void
++gst_ffmpegdec_get_property (GObject * object,
++    guint prop_id, GValue * value, GParamSpec * pspec)
++{
++  GstFFMpegDec *ffmpegdec = (GstFFMpegDec *) object;
++
++  switch (prop_id) {
++    case PROP_LOWRES:
++      g_value_set_enum (value, ffmpegdec->context->lowres);
++      break;
++    case PROP_SKIPFRAME:
++      g_value_set_enum (value, ffmpegdec->context->skip_frame);
++      break;
++    case PROP_DIRECT_RENDERING:
++      g_value_set_boolean (value, ffmpegdec->direct_rendering);
++      break;
++    case PROP_DO_PADDING:
++      g_value_set_boolean (value, ffmpegdec->do_padding);
++      break;
++    case PROP_DEBUG_MV:
++      g_value_set_boolean (value, ffmpegdec->context->debug_mv);
++      break;
++    case PROP_CROP:
++      g_value_set_boolean (value, ffmpegdec->crop);
++      break;
++    case PROP_MAX_THREADS:
++      g_value_set_int (value, ffmpegdec->max_threads);
++      break;
++    default:
++      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++      break;
++  }
++}
++
++gboolean
++gst_ffmpegdec_register (GstPlugin * plugin)
++{
++  GTypeInfo typeinfo = {
++    sizeof (GstFFMpegDecClass),
++    (GBaseInitFunc) gst_ffmpegdec_base_init,
++    NULL,
++    (GClassInitFunc) gst_ffmpegdec_class_init,
++    NULL,
++    NULL,
++    sizeof (GstFFMpegDec),
++    0,
++    (GInstanceInitFunc) gst_ffmpegdec_init,
++  };
++  GType type;
++  AVCodec *in_plugin;
++  gint rank;
++
++  in_plugin = av_codec_next (NULL);
++
++  GST_LOG ("Registering decoders");
++
++  while (in_plugin) {
++    gchar *type_name;
++    gchar *plugin_name;
++
++    /* only decoders */
++    if (!in_plugin->decode) {
++      goto next;
++    }
++
++    /* no quasi-codecs, please */
++    if (in_plugin->id == CODEC_ID_RAWVIDEO ||
++        in_plugin->id == CODEC_ID_V210 ||
++        in_plugin->id == CODEC_ID_V210X ||
++        in_plugin->id == CODEC_ID_R210 ||
++        (in_plugin->id >= CODEC_ID_PCM_S16LE &&
++            in_plugin->id <= CODEC_ID_PCM_BLURAY)) {
++      goto next;
++    }
++
++    /* No decoders depending on external libraries (we don't build them, but
++     * people who build against an external ffmpeg might have them.
++     * We have native gstreamer plugins for all of those libraries anyway. */
++    if (!strncmp (in_plugin->name, "lib", 3)) {
++      GST_DEBUG
++          ("Not using external library decoder %s. Use the gstreamer-native ones instead.",
++          in_plugin->name);
++      goto next;
++    }
++
++    /* No vdpau plugins until we can figure out how to properly use them
++     * outside of ffmpeg. */
++    if (g_str_has_suffix (in_plugin->name, "_vdpau")) {
++      GST_DEBUG
++          ("Ignoring VDPAU decoder %s. We can't handle this outside of ffmpeg",
++          in_plugin->name);
++      goto next;
++    }
++
++    if (g_str_has_suffix (in_plugin->name, "_xvmc")) {
++      GST_DEBUG
++          ("Ignoring XVMC decoder %s. We can't handle this outside of ffmpeg",
++          in_plugin->name);
++      goto next;
++    }
++
++    GST_DEBUG ("Trying plugin %s [%s]", in_plugin->name, in_plugin->long_name);
++
++    /* no codecs for which we're GUARANTEED to have better alternatives */
++    /* MPEG1VIDEO : the mpeg2video decoder is preferred */
++    /* MP1 : Use MP3 for decoding */
++    /* MP2 : Use MP3 for decoding */
++    /* Theora: Use libtheora based theoradec */
++    if (!strcmp (in_plugin->name, "gif") ||
++        !strcmp (in_plugin->name, "vorbis") ||
++        !strcmp (in_plugin->name, "theora") ||
++        !strcmp (in_plugin->name, "mpeg1video") ||
++        !strcmp (in_plugin->name, "wavpack") ||
++        !strcmp (in_plugin->name, "mp1") ||
++        !strcmp (in_plugin->name, "mp2") ||
++        !strcmp (in_plugin->name, "libfaad") ||
++        !strcmp (in_plugin->name, "mpeg4aac") ||
++        !strcmp (in_plugin->name, "ass") ||
++        !strcmp (in_plugin->name, "srt") ||
++        !strcmp (in_plugin->name, "pgssub") ||
++        !strcmp (in_plugin->name, "dvdsub") ||
++        !strcmp (in_plugin->name, "dvbsub")) {
++      GST_LOG ("Ignoring decoder %s", in_plugin->name);
++      goto next;
++    }
++
++    /* construct the type */
++    plugin_name = g_strdup ((gchar *) in_plugin->name);
++    g_strdelimit (plugin_name, NULL, '_');
++    type_name = g_strdup_printf ("ffdec_%s", plugin_name);
++    g_free (plugin_name);
++
++    type = g_type_from_name (type_name);
++
++    if (!type) {
++      /* create the gtype now */
++      type = g_type_register_static (GST_TYPE_ELEMENT, type_name, &typeinfo, 0);
++      g_type_set_qdata (type, GST_FFDEC_PARAMS_QDATA, (gpointer) in_plugin);
++    }
++
++    /* (Ronald) MPEG-4 gets a higher priority because it has been well-
++     * tested and by far outperforms divxdec/xviddec - so we prefer it.
++     * msmpeg4v3 same, as it outperforms divxdec for divx3 playback.
++     * VC1/WMV3 are not working and thus unpreferred for now. */
++    switch (in_plugin->id) {
++      case CODEC_ID_MPEG4:
++      case CODEC_ID_MSMPEG4V3:
++      case CODEC_ID_H264:
++      case CODEC_ID_RA_144:
++      case CODEC_ID_RA_288:
++      case CODEC_ID_RV10:
++      case CODEC_ID_RV20:
++      case CODEC_ID_RV30:
++      case CODEC_ID_RV40:
++      case CODEC_ID_COOK:
++        rank = GST_RANK_SECONDARY;
++        break;
++        /* DVVIDEO: we have a good dv decoder, fast on both ppc as well as x86.
++         * They say libdv's quality is better though. leave as secondary.
++         * note: if you change this, see the code in gstdv.c in good/ext/dv.
++         *
++         * SIPR: decoder should have a higher rank than realaudiodec.
++         */
++      case CODEC_ID_DVVIDEO:
++      case CODEC_ID_SIPR:
++        rank = GST_RANK_SECONDARY;
++        break;
++      case CODEC_ID_MP3:
++        rank = GST_RANK_NONE;
++        break;
++        /* TEMPORARILY DISABLING AC3/EAC3/DTS for 0.10.12 release
++         * due to downmixing failure.
++         * See Bug #608892 for more details */
++      case CODEC_ID_EAC3:
++      case CODEC_ID_AC3:
++      case CODEC_ID_DTS:
++        rank = GST_RANK_NONE;
++        break;
++      default:
++        rank = GST_RANK_MARGINAL;
++        break;
++    }
++    if (!gst_element_register (plugin, type_name, rank, type)) {
++      g_warning ("Failed to register %s", type_name);
++      g_free (type_name);
++      return FALSE;
++    }
++
++    g_free (type_name);
++
++  next:
++    in_plugin = av_codec_next (in_plugin);
++  }
++
++  GST_LOG ("Finished Registering decoders");
++
++  return TRUE;
++}
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegdec.c.rej gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegdec.c.rej
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegdec.c.rej	1970-01-01 01:00:00.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegdec.c.rej	2014-08-08 15:26:38.471858652 +0200
+@@ -0,0 +1,11 @@
++--- ext/ffmpeg/gstffmpegdec.c
+++++ ext/ffmpeg/gstffmpegdec.c
++@@ -1565,7 +1564,7 @@
++         gst_message_new_latency (GST_OBJECT_CAST (ffmpegdec)));
++   }
++ 
++-  is_itype = (ffmpegdec->picture->pict_type == FF_I_TYPE);
+++  is_itype = (ffmpegdec->picture->pict_type == AV_PICTURE_TYPE_I);
++   is_reference = (ffmpegdec->picture->reference == 1);
++ 
++   iskeyframe = (is_itype || is_reference || ffmpegdec->picture->key_frame)
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegdemux.c gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegdemux.c
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegdemux.c	2011-07-13 11:07:28.000000000 +0200
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegdemux.c	2014-08-08 15:26:07.874857555 +0200
+@@ -343,8 +343,11 @@
+   demux->audiopads = 0;
+ 
+   /* close demuxer context from ffmpeg */
+-  av_close_input_file (demux->context);
+-  demux->context = NULL;
++  if (demux->seekable)
++    gst_ffmpegdata_close (demux->context->pb);
++  else
++    gst_ffmpeg_pipe_close (demux->context->pb);
++  avformat_close_input (&demux->context);
+ 
+   GST_OBJECT_LOCK (demux);
+   demux->opened = FALSE;
+@@ -1146,9 +1149,9 @@
+ static gboolean
+ gst_ffmpegdemux_open (GstFFMpegDemux * demux)
+ {
++  AVIOContext *iocontext = NULL;
+   GstFFMpegDemuxClass *oclass =
+       (GstFFMpegDemuxClass *) G_OBJECT_GET_CLASS (demux);
+-  gchar *location;
+   gint res, n_streams, i;
+ #if 0
+   /* Re-enable once converted to new AVMetaData API
+@@ -1164,15 +1167,14 @@
+ 
+   /* open via our input protocol hack */
+   if (demux->seekable)
+-    location = g_strdup_printf ("gstreamer://%p", demux->sinkpad);
++    res = gst_ffmpegdata_open (demux->sinkpad, AVIO_FLAG_READ, &iocontext);
+   else
+-    location = g_strdup_printf ("gstpipe://%p", &demux->ffpipe);
+-  GST_DEBUG_OBJECT (demux, "about to call av_open_input_file %s", location);
++    res = gst_ffmpeg_pipe_open (&demux->ffpipe, AVIO_FLAG_READ, &iocontext);
+ 
+-  res = av_open_input_file (&demux->context, location,
+-      oclass->in_plugin, 0, NULL);
++  demux->context = avformat_alloc_context ();
++  demux->context->pb = iocontext;
++  res = avformat_open_input (&demux->context, NULL, oclass->in_plugin, NULL);
+ 
+-  g_free (location);
+   GST_DEBUG_OBJECT (demux, "av_open_input returned %d", res);
+   if (res < 0)
+     goto open_failed;
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegenc.c gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegenc.c
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegenc.c	2011-10-31 11:14:03.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegenc.c	2014-08-08 15:32:18.608870847 +0200
+@@ -770,7 +770,7 @@
+   GST_OBJECT_UNLOCK (ffmpegenc);
+ 
+   if (force_keyframe)
+-    ffmpegenc->picture->pict_type = FF_I_TYPE;
++    ffmpegenc->picture->pict_type = AV_PICTURE_TYPE_I;
+ 
+   frame_size = gst_ffmpeg_avpicture_fill ((AVPicture *) ffmpegenc->picture,
+       GST_BUFFER_DATA (inbuf),
+@@ -1136,7 +1136,7 @@
+       const GstStructure *s;
+       s = gst_event_get_structure (event);
+       if (gst_structure_has_name (s, "GstForceKeyUnit")) {
+-        ffmpegenc->picture->pict_type = FF_I_TYPE;
++        ffmpegenc->picture->pict_type = AV_PICTURE_TYPE_I;
+       }
+       break;
+     }
+@@ -1339,7 +1339,7 @@
+     }
+ 
+     /* only encoders */
+-    if (!in_plugin->encode) {
++    if (!av_codec_is_encoder (in_plugin)) {
+       goto next;
+     }
+ 
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegmux.c gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegmux.c
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegmux.c	2011-07-13 11:07:28.000000000 +0200
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegmux.c	2014-08-08 15:26:07.874857555 +0200
+@@ -24,8 +24,10 @@
+ #include <string.h>
+ #ifdef HAVE_FFMPEG_UNINSTALLED
+ #include <avformat.h>
++#include <opt.h>
+ #else
+ #include <libavformat/avformat.h>
++#include <libavutil/opt.h>
+ #endif
+ 
+ #include <gst/gst.h>
+@@ -336,9 +338,6 @@
+   ffmpegmux->context = g_new0 (AVFormatContext, 1);
+   ffmpegmux->context->oformat = oclass->in_plugin;
+   ffmpegmux->context->nb_streams = 0;
+-  g_snprintf (ffmpegmux->context->filename,
+-      sizeof (ffmpegmux->context->filename),
+-      "gstreamer://%p", ffmpegmux->srcpad);
+   ffmpegmux->opened = FALSE;
+ 
+   ffmpegmux->videopads = 0;
+@@ -450,10 +449,10 @@
+   gst_element_add_pad (element, pad);
+ 
+   /* AVStream needs to be created */
+-  st = av_new_stream (ffmpegmux->context, collect_pad->padnum);
++  st = avformat_new_stream (ffmpegmux->context, NULL);
++  st->id = collect_pad->padnum;
+   st->codec->codec_type = type;
+   st->codec->codec_id = CODEC_ID_NONE;  /* this is a check afterwards */
+-  st->stream_copy = 1;          /* we're not the actual encoder */
+   st->codec->bit_rate = bitrate;
+   st->codec->frame_size = framesize;
+   /* we fill in codec during capsnego */
+@@ -485,7 +484,7 @@
+   collect_pad = (GstFFMpegMuxPad *) gst_pad_get_element_private (pad);
+ 
+   st = ffmpegmux->context->streams[collect_pad->padnum];
+-  ffmpegmux->context->preload = ffmpegmux->preload;
++  av_opt_set_int (&ffmpegmux->context, "preload", ffmpegmux->preload, 0);
+   ffmpegmux->context->max_delay = ffmpegmux->max_delay;
+ 
+   /* for the format-specific guesses, we'll go to
+@@ -552,7 +551,7 @@
+ 
+   /* open "file" (gstreamer protocol to next element) */
+   if (!ffmpegmux->opened) {
+-    int open_flags = URL_WRONLY;
++    int open_flags = AVIO_FLAG_WRITE;
+ 
+     /* we do need all streams to have started capsnego,
+      * or things will go horribly wrong */
+@@ -646,19 +645,13 @@
+       open_flags |= GST_FFMPEG_URL_STREAMHEADER;
+     }
+ 
+-    if (url_fopen (&ffmpegmux->context->pb,
+-            ffmpegmux->context->filename, open_flags) < 0) {
++    if (gst_ffmpegdata_open (ffmpegmux->srcpad, open_flags,
++            &ffmpegmux->context->pb) < 0) {
+       GST_ELEMENT_ERROR (ffmpegmux, LIBRARY, TOO_LAZY, (NULL),
+           ("Failed to open stream context in ffmux"));
+       return GST_FLOW_ERROR;
+     }
+ 
+-    if (av_set_parameters (ffmpegmux->context, NULL) < 0) {
+-      GST_ELEMENT_ERROR (ffmpegmux, LIBRARY, INIT, (NULL),
+-          ("Failed to initialize muxer"));
+-      return GST_FLOW_ERROR;
+-    }
+-
+     /* now open the mux format */
+     if (av_write_header (ffmpegmux->context) < 0) {
+       GST_ELEMENT_ERROR (ffmpegmux, LIBRARY, SETTINGS, (NULL),
+@@ -670,7 +663,7 @@
+     ffmpegmux->opened = TRUE;
+ 
+     /* flush the header so it will be used as streamheader */
+-    put_flush_packet (ffmpegmux->context->pb);
++    avio_flush (ffmpegmux->context->pb);
+   }
+ 
+   /* take the one with earliest timestamp,
+@@ -770,8 +763,8 @@
+     /* close down */
+     av_write_trailer (ffmpegmux->context);
+     ffmpegmux->opened = FALSE;
+-    put_flush_packet (ffmpegmux->context->pb);
+-    url_fclose (ffmpegmux->context->pb);
++    avio_flush (ffmpegmux->context->pb);
++    gst_ffmpegdata_close (ffmpegmux->context->pb);
+     gst_pad_push_event (ffmpegmux->srcpad, gst_event_new_eos ());
+     return GST_FLOW_UNEXPECTED;
+   }
+@@ -795,6 +788,10 @@
+       break;
+     case GST_STATE_CHANGE_PAUSED_TO_READY:
+       gst_collect_pads_stop (ffmpegmux->collect);
++      if (ffmpegmux->opened) {
++        ffmpegmux->opened = FALSE;
++        gst_ffmpegdata_close (ffmpegmux->context->pb);
++      }
+       break;
+     default:
+       break;
+@@ -809,7 +806,7 @@
+       gst_tag_setter_reset_tags (GST_TAG_SETTER (ffmpegmux));
+       if (ffmpegmux->opened) {
+         ffmpegmux->opened = FALSE;
+-        url_fclose (ffmpegmux->context->pb);
++        avio_close (ffmpegmux->context->pb);
+       }
+       break;
+     case GST_STATE_CHANGE_READY_TO_NULL:
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegmux.c.orig gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegmux.c.orig
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegmux.c.orig	1970-01-01 01:00:00.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegmux.c.orig	2011-07-13 11:07:28.000000000 +0200
+@@ -0,0 +1,970 @@
++/* GStreamer
++ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#include <string.h>
++#ifdef HAVE_FFMPEG_UNINSTALLED
++#include <avformat.h>
++#else
++#include <libavformat/avformat.h>
++#endif
++
++#include <gst/gst.h>
++#include <gst/base/gstcollectpads.h>
++
++#include "gstffmpeg.h"
++#include "gstffmpegcodecmap.h"
++#include "gstffmpegutils.h"
++
++typedef struct _GstFFMpegMux GstFFMpegMux;
++typedef struct _GstFFMpegMuxPad GstFFMpegMuxPad;
++
++struct _GstFFMpegMuxPad
++{
++  GstCollectData collect;       /* we extend the CollectData */
++
++  gint padnum;
++};
++
++struct _GstFFMpegMux
++{
++  GstElement element;
++
++  GstCollectPads *collect;
++  /* We need to keep track of our pads, so we do so here. */
++  GstPad *srcpad;
++
++  AVFormatContext *context;
++  gboolean opened;
++
++  gint videopads, audiopads;
++
++  /*< private > */
++  /* event_function is the collectpads default eventfunction */
++  GstPadEventFunction event_function;
++  int preload;
++  int max_delay;
++};
++
++typedef struct _GstFFMpegMuxClass GstFFMpegMuxClass;
++
++struct _GstFFMpegMuxClass
++{
++  GstElementClass parent_class;
++
++  AVOutputFormat *in_plugin;
++};
++
++#define GST_TYPE_FFMPEGMUX \
++  (gst_ffmpegdec_get_type())
++#define GST_FFMPEGMUX(obj) \
++  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FFMPEGMUX,GstFFMpegMux))
++#define GST_FFMPEGMUX_CLASS(klass) \
++  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FFMPEGMUX,GstFFMpegMuxClass))
++#define GST_IS_FFMPEGMUX(obj) \
++  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FFMPEGMUX))
++#define GST_IS_FFMPEGMUX_CLASS(klass) \
++  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FFMPEGMUX))
++
++enum
++{
++  /* FILL ME */
++  LAST_SIGNAL
++};
++
++enum
++{
++  ARG_0,
++  /* FILL ME */
++};
++
++enum
++{
++  PROP_0,
++  PROP_PRELOAD,
++  PROP_MAXDELAY
++};
++
++/* A number of function prototypes are given so we can refer to them later. */
++static void gst_ffmpegmux_class_init (GstFFMpegMuxClass * klass);
++static void gst_ffmpegmux_base_init (gpointer g_class);
++static void gst_ffmpegmux_init (GstFFMpegMux * ffmpegmux,
++    GstFFMpegMuxClass * g_class);
++static void gst_ffmpegmux_finalize (GObject * object);
++
++static gboolean gst_ffmpegmux_setcaps (GstPad * pad, GstCaps * caps);
++static GstPad *gst_ffmpegmux_request_new_pad (GstElement * element,
++    GstPadTemplate * templ, const gchar * name);
++static GstFlowReturn gst_ffmpegmux_collected (GstCollectPads * pads,
++    gpointer user_data);
++
++static gboolean gst_ffmpegmux_sink_event (GstPad * pad, GstEvent * event);
++
++static GstStateChangeReturn gst_ffmpegmux_change_state (GstElement * element,
++    GstStateChange transition);
++
++static void gst_ffmpegmux_set_property (GObject * object, guint prop_id,
++    const GValue * value, GParamSpec * pspec);
++static void gst_ffmpegmux_get_property (GObject * object, guint prop_id,
++    GValue * value, GParamSpec * pspec);
++
++static GstCaps *gst_ffmpegmux_get_id_caps (enum CodecID *id_list);
++static void gst_ffmpeg_mux_simple_caps_set_int_list (GstCaps * caps,
++    const gchar * field, guint num, const gint * values);
++
++#define GST_FFMUX_PARAMS_QDATA g_quark_from_static_string("ffmux-params")
++
++static GstElementClass *parent_class = NULL;
++
++/*static guint gst_ffmpegmux_signals[LAST_SIGNAL] = { 0 }; */
++
++typedef struct
++{
++  const char *name;
++  const char *replacement;
++} GstFFMpegMuxReplacement;
++
++static const char *
++gst_ffmpegmux_get_replacement (const char *name)
++{
++  static const GstFFMpegMuxReplacement blacklist[] = {
++    {"avi", "avimux"},
++    {"matroska", "matroskamux"},
++    {"mov", "qtmux"},
++    {"mpegts", "mpegtsmux"},
++    {"mp4", "mp4mux"},
++    {"mpjpeg", "multipartmux"},
++    {"ogg", "oggmux"},
++    {"wav", "wavenc"},
++    {"webm", "webmmux"},
++    {"mxf", "mxfmux"},
++    {"3gp", "gppmux"},
++    {"yuv4mpegpipe", "y4menc"},
++    {"aiff", "aiffmux"},
++    {"adts", "aacparse"},
++    {"asf", "asfmux"},
++    {"asf_stream", "asfmux"},
++    {"flv", "flvmux"},
++    {"mp3", "id3v2mux"},
++    {"mp2", "id3v2mux"}
++  };
++  int i;
++
++  for (i = 0; i < sizeof (blacklist) / sizeof (blacklist[0]); i++) {
++    if (strcmp (blacklist[i].name, name) == 0) {
++      return blacklist[i].replacement;
++    }
++  }
++
++  return NULL;
++}
++
++static gboolean
++gst_ffmpegmux_is_formatter (const char *name)
++{
++  static const char *replace[] = {
++    "mp2", "mp3", NULL
++  };
++  int i;
++
++  for (i = 0; replace[i]; i++)
++    if (strcmp (replace[i], name) == 0)
++      return TRUE;
++  return FALSE;
++}
++
++static void
++gst_ffmpegmux_base_init (gpointer g_class)
++{
++  GstFFMpegMuxClass *klass = (GstFFMpegMuxClass *) g_class;
++  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
++  GstPadTemplate *videosinktempl, *audiosinktempl, *srctempl;
++  AVOutputFormat *in_plugin;
++  GstCaps *srccaps, *audiosinkcaps, *videosinkcaps;
++  enum CodecID *video_ids = NULL, *audio_ids = NULL;
++  gchar *longname, *description;
++  const char *replacement;
++  gboolean is_formatter;
++
++  in_plugin =
++      (AVOutputFormat *) g_type_get_qdata (G_OBJECT_CLASS_TYPE (klass),
++      GST_FFMUX_PARAMS_QDATA);
++  g_assert (in_plugin != NULL);
++
++  /* construct the element details struct */
++  replacement = gst_ffmpegmux_get_replacement (in_plugin->name);
++  is_formatter = gst_ffmpegmux_is_formatter (in_plugin->name);
++  if (replacement != NULL) {
++    longname =
++        g_strdup_printf ("FFmpeg %s %s (not recommended, use %s instead)",
++        in_plugin->long_name, is_formatter ? "formatter" : "muxer",
++        replacement);
++    description =
++        g_strdup_printf ("FFmpeg %s %s (not recommended, use %s instead)",
++        in_plugin->long_name, is_formatter ? "formatter" : "muxer",
++        replacement);
++  } else {
++    longname = g_strdup_printf ("FFmpeg %s %s", in_plugin->long_name,
++        is_formatter ? "formatter" : "muxer");
++    description = g_strdup_printf ("FFmpeg %s %s", in_plugin->long_name,
++        is_formatter ? "formatter" : "muxer");
++  }
++  gst_element_class_set_details_simple (element_class, longname,
++      is_formatter ? "Formatter/Metadata" : "Codec/Muxer", description,
++      "Wim Taymans <wim.taymans@chello.be>, "
++      "Ronald Bultje <rbultje@ronald.bitfreak.net>");
++  g_free (longname);
++  g_free (description);
++
++  /* Try to find the caps that belongs here */
++  srccaps = gst_ffmpeg_formatid_to_caps (in_plugin->name);
++  if (!srccaps) {
++    GST_DEBUG ("Couldn't get source caps for muxer '%s', skipping format",
++        in_plugin->name);
++    goto beach;
++  }
++
++  if (!gst_ffmpeg_formatid_get_codecids (in_plugin->name,
++          &video_ids, &audio_ids, in_plugin)) {
++    gst_caps_unref (srccaps);
++    GST_DEBUG
++        ("Couldn't get sink caps for muxer '%s'. Most likely because no input format mapping exists.",
++        in_plugin->name);
++    goto beach;
++  }
++
++  videosinkcaps = video_ids ? gst_ffmpegmux_get_id_caps (video_ids) : NULL;
++  audiosinkcaps = audio_ids ? gst_ffmpegmux_get_id_caps (audio_ids) : NULL;
++
++  /* fix up allowed caps for some muxers */
++  /* FIXME : This should be in gstffmpegcodecmap.c ! */
++  if (strcmp (in_plugin->name, "flv") == 0) {
++    const gint rates[] = { 44100, 22050, 11025 };
++
++    gst_ffmpeg_mux_simple_caps_set_int_list (audiosinkcaps, "rate", 3, rates);
++  } else if (strcmp (in_plugin->name, "gif") == 0) {
++    if (videosinkcaps)
++      gst_caps_unref (videosinkcaps);
++
++    videosinkcaps =
++        gst_caps_from_string ("video/x-raw-rgb, bpp=(int)24, depth=(int)24");
++  }
++
++  /* pad templates */
++  srctempl = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, srccaps);
++  gst_element_class_add_pad_template (element_class, srctempl);
++
++  if (audiosinkcaps) {
++    audiosinktempl = gst_pad_template_new ("audio_%d",
++        GST_PAD_SINK, GST_PAD_REQUEST, audiosinkcaps);
++    gst_element_class_add_pad_template (element_class, audiosinktempl);
++  }
++
++  if (videosinkcaps) {
++    videosinktempl = gst_pad_template_new ("video_%d",
++        GST_PAD_SINK, GST_PAD_REQUEST, videosinkcaps);
++    gst_element_class_add_pad_template (element_class, videosinktempl);
++  }
++
++beach:
++  klass->in_plugin = in_plugin;
++}
++
++static void
++gst_ffmpegmux_class_init (GstFFMpegMuxClass * klass)
++{
++  GObjectClass *gobject_class;
++  GstElementClass *gstelement_class;
++
++  gobject_class = (GObjectClass *) klass;
++  gstelement_class = (GstElementClass *) klass;
++
++  parent_class = g_type_class_peek_parent (klass);
++
++  gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_ffmpegmux_set_property);
++  gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_ffmpegmux_get_property);
++
++  g_object_class_install_property (gobject_class, PROP_PRELOAD,
++      g_param_spec_int ("preload", "preload",
++          "Set the initial demux-decode delay (in microseconds)", 0, G_MAXINT,
++          0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++
++  g_object_class_install_property (gobject_class, PROP_MAXDELAY,
++      g_param_spec_int ("maxdelay", "maxdelay",
++          "Set the maximum demux-decode delay (in microseconds)", 0, G_MAXINT,
++          0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++
++  gstelement_class->request_new_pad = gst_ffmpegmux_request_new_pad;
++  gstelement_class->change_state = gst_ffmpegmux_change_state;
++  gobject_class->finalize = gst_ffmpegmux_finalize;
++}
++
++static void
++gst_ffmpegmux_init (GstFFMpegMux * ffmpegmux, GstFFMpegMuxClass * g_class)
++{
++  GstElementClass *klass = GST_ELEMENT_CLASS (g_class);
++  GstFFMpegMuxClass *oclass = (GstFFMpegMuxClass *) klass;
++  GstPadTemplate *templ = gst_element_class_get_pad_template (klass, "src");
++
++  ffmpegmux->srcpad = gst_pad_new_from_template (templ, "src");
++  gst_pad_set_caps (ffmpegmux->srcpad, gst_pad_template_get_caps (templ));
++  gst_element_add_pad (GST_ELEMENT (ffmpegmux), ffmpegmux->srcpad);
++
++  ffmpegmux->collect = gst_collect_pads_new ();
++  gst_collect_pads_set_function (ffmpegmux->collect,
++      (GstCollectPadsFunction) gst_ffmpegmux_collected, ffmpegmux);
++
++  ffmpegmux->context = g_new0 (AVFormatContext, 1);
++  ffmpegmux->context->oformat = oclass->in_plugin;
++  ffmpegmux->context->nb_streams = 0;
++  g_snprintf (ffmpegmux->context->filename,
++      sizeof (ffmpegmux->context->filename),
++      "gstreamer://%p", ffmpegmux->srcpad);
++  ffmpegmux->opened = FALSE;
++
++  ffmpegmux->videopads = 0;
++  ffmpegmux->audiopads = 0;
++  ffmpegmux->preload = 0;
++  ffmpegmux->max_delay = 0;
++}
++
++static void
++gst_ffmpegmux_set_property (GObject * object, guint prop_id,
++    const GValue * value, GParamSpec * pspec)
++{
++  GstFFMpegMux *src;
++
++  src = (GstFFMpegMux *) object;
++
++  switch (prop_id) {
++    case PROP_PRELOAD:
++      src->preload = g_value_get_int (value);
++      break;
++    case PROP_MAXDELAY:
++      src->max_delay = g_value_get_int (value);
++      break;
++    default:
++      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++      break;
++  }
++}
++
++static void
++gst_ffmpegmux_get_property (GObject * object, guint prop_id, GValue * value,
++    GParamSpec * pspec)
++{
++  GstFFMpegMux *src;
++
++  src = (GstFFMpegMux *) object;
++
++  switch (prop_id) {
++    case PROP_PRELOAD:
++      g_value_set_int (value, src->preload);
++      break;
++    case PROP_MAXDELAY:
++      g_value_set_int (value, src->max_delay);
++      break;
++    default:
++      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++      break;
++  }
++}
++
++
++static void
++gst_ffmpegmux_finalize (GObject * object)
++{
++  GstFFMpegMux *ffmpegmux = (GstFFMpegMux *) object;
++
++  g_free (ffmpegmux->context);
++  gst_object_unref (ffmpegmux->collect);
++
++  if (G_OBJECT_CLASS (parent_class)->finalize)
++    G_OBJECT_CLASS (parent_class)->finalize (object);
++}
++
++static GstPad *
++gst_ffmpegmux_request_new_pad (GstElement * element,
++    GstPadTemplate * templ, const gchar * name)
++{
++  GstFFMpegMux *ffmpegmux = (GstFFMpegMux *) element;
++  GstElementClass *klass = GST_ELEMENT_GET_CLASS (element);
++  GstFFMpegMuxPad *collect_pad;
++  gchar *padname;
++  GstPad *pad;
++  AVStream *st;
++  enum AVMediaType type;
++  gint bitrate = 0, framesize = 0;
++
++  g_return_val_if_fail (templ != NULL, NULL);
++  g_return_val_if_fail (templ->direction == GST_PAD_SINK, NULL);
++  g_return_val_if_fail (ffmpegmux->opened == FALSE, NULL);
++
++  /* figure out a name that *we* like */
++  if (templ == gst_element_class_get_pad_template (klass, "video_%d")) {
++    padname = g_strdup_printf ("video_%d", ffmpegmux->videopads++);
++    type = AVMEDIA_TYPE_VIDEO;
++    bitrate = 64 * 1024;
++    framesize = 1152;
++  } else if (templ == gst_element_class_get_pad_template (klass, "audio_%d")) {
++    padname = g_strdup_printf ("audio_%d", ffmpegmux->audiopads++);
++    type = AVMEDIA_TYPE_AUDIO;
++    bitrate = 285 * 1024;
++  } else {
++    g_warning ("ffmux: unknown pad template!");
++    return NULL;
++  }
++
++  /* create pad */
++  pad = gst_pad_new_from_template (templ, padname);
++  collect_pad = (GstFFMpegMuxPad *)
++      gst_collect_pads_add_pad (ffmpegmux->collect, pad,
++      sizeof (GstFFMpegMuxPad));
++  collect_pad->padnum = ffmpegmux->context->nb_streams;
++
++  /* small hack to put our own event pad function and chain up to collect pad */
++  ffmpegmux->event_function = GST_PAD_EVENTFUNC (pad);
++  gst_pad_set_event_function (pad,
++      GST_DEBUG_FUNCPTR (gst_ffmpegmux_sink_event));
++
++  gst_pad_set_setcaps_function (pad, GST_DEBUG_FUNCPTR (gst_ffmpegmux_setcaps));
++  gst_element_add_pad (element, pad);
++
++  /* AVStream needs to be created */
++  st = av_new_stream (ffmpegmux->context, collect_pad->padnum);
++  st->codec->codec_type = type;
++  st->codec->codec_id = CODEC_ID_NONE;  /* this is a check afterwards */
++  st->stream_copy = 1;          /* we're not the actual encoder */
++  st->codec->bit_rate = bitrate;
++  st->codec->frame_size = framesize;
++  /* we fill in codec during capsnego */
++
++  /* we love debug output (c) (tm) (r) */
++  GST_DEBUG ("Created %s pad for ffmux_%s element",
++      padname, ((GstFFMpegMuxClass *) klass)->in_plugin->name);
++  g_free (padname);
++
++  return pad;
++}
++
++/**
++ * gst_ffmpegmux_setcaps
++ * @pad: #GstPad
++ * @caps: New caps.
++ *
++ * Set caps to pad.
++ *
++ * Returns: #TRUE on success.
++ */
++static gboolean
++gst_ffmpegmux_setcaps (GstPad * pad, GstCaps * caps)
++{
++  GstFFMpegMux *ffmpegmux = (GstFFMpegMux *) (gst_pad_get_parent (pad));
++  GstFFMpegMuxPad *collect_pad;
++  AVStream *st;
++
++  collect_pad = (GstFFMpegMuxPad *) gst_pad_get_element_private (pad);
++
++  st = ffmpegmux->context->streams[collect_pad->padnum];
++  ffmpegmux->context->preload = ffmpegmux->preload;
++  ffmpegmux->context->max_delay = ffmpegmux->max_delay;
++
++  /* for the format-specific guesses, we'll go to
++   * our famous codec mapper */
++  if (gst_ffmpeg_caps_to_codecid (caps, st->codec) == CODEC_ID_NONE)
++    goto not_accepted;
++
++  /* copy over the aspect ratios, ffmpeg expects the stream aspect to match the
++   * codec aspect. */
++  st->sample_aspect_ratio = st->codec->sample_aspect_ratio;
++
++  GST_LOG_OBJECT (pad, "accepted caps %" GST_PTR_FORMAT, caps);
++  return TRUE;
++
++  /* ERRORS */
++not_accepted:
++  {
++    GST_LOG_OBJECT (pad, "rejecting caps %" GST_PTR_FORMAT, caps);
++    return FALSE;
++  }
++}
++
++
++static gboolean
++gst_ffmpegmux_sink_event (GstPad * pad, GstEvent * event)
++{
++  GstFFMpegMux *ffmpegmux = (GstFFMpegMux *) gst_pad_get_parent (pad);
++  gboolean res = TRUE;
++
++  switch (GST_EVENT_TYPE (event)) {
++    case GST_EVENT_TAG:{
++      GstTagList *taglist;
++      GstTagSetter *setter = GST_TAG_SETTER (ffmpegmux);
++      const GstTagMergeMode mode = gst_tag_setter_get_tag_merge_mode (setter);
++
++      gst_event_parse_tag (event, &taglist);
++      gst_tag_setter_merge_tags (setter, taglist, mode);
++      break;
++    }
++    default:
++      break;
++  }
++
++  /* chaining up to collectpads default event function */
++  res = ffmpegmux->event_function (pad, event);
++
++  gst_object_unref (ffmpegmux);
++  return res;
++}
++
++static GstFlowReturn
++gst_ffmpegmux_collected (GstCollectPads * pads, gpointer user_data)
++{
++  GstFFMpegMux *ffmpegmux = (GstFFMpegMux *) user_data;
++  GSList *collected;
++  GstFFMpegMuxPad *best_pad;
++  GstClockTime best_time;
++#if 0
++  /* Re-enable once converted to new AVMetaData API
++   * See #566605
++   */
++  const GstTagList *tags;
++#endif
++
++  /* open "file" (gstreamer protocol to next element) */
++  if (!ffmpegmux->opened) {
++    int open_flags = URL_WRONLY;
++
++    /* we do need all streams to have started capsnego,
++     * or things will go horribly wrong */
++    for (collected = ffmpegmux->collect->data; collected;
++        collected = g_slist_next (collected)) {
++      GstFFMpegMuxPad *collect_pad = (GstFFMpegMuxPad *) collected->data;
++      AVStream *st = ffmpegmux->context->streams[collect_pad->padnum];
++
++      /* check whether the pad has successfully completed capsnego */
++      if (st->codec->codec_id == CODEC_ID_NONE) {
++        GST_ELEMENT_ERROR (ffmpegmux, CORE, NEGOTIATION, (NULL),
++            ("no caps set on stream %d (%s)", collect_pad->padnum,
++                (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) ?
++                "video" : "audio"));
++        return GST_FLOW_ERROR;
++      }
++      /* set framerate for audio */
++      if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
++        switch (st->codec->codec_id) {
++          case CODEC_ID_PCM_S16LE:
++          case CODEC_ID_PCM_S16BE:
++          case CODEC_ID_PCM_U16LE:
++          case CODEC_ID_PCM_U16BE:
++          case CODEC_ID_PCM_S8:
++          case CODEC_ID_PCM_U8:
++            st->codec->frame_size = 1;
++            break;
++          default:
++          {
++            GstBuffer *buffer;
++
++            /* FIXME : This doesn't work for RAW AUDIO...
++             * in fact I'm wondering if it even works for any kind of audio... */
++            buffer = gst_collect_pads_peek (ffmpegmux->collect,
++                (GstCollectData *) collect_pad);
++            if (buffer) {
++              st->codec->frame_size =
++                  st->codec->sample_rate *
++                  GST_BUFFER_DURATION (buffer) / GST_SECOND;
++              gst_buffer_unref (buffer);
++            }
++          }
++        }
++      }
++    }
++
++#if 0
++    /* Re-enable once converted to new AVMetaData API
++     * See #566605
++     */
++
++    /* tags */
++    tags = gst_tag_setter_get_tag_list (GST_TAG_SETTER (ffmpegmux));
++    if (tags) {
++      gint i;
++      gchar *s;
++
++      /* get the interesting ones */
++      if (gst_tag_list_get_string (tags, GST_TAG_TITLE, &s)) {
++        strncpy (ffmpegmux->context->title, s,
++            sizeof (ffmpegmux->context->title));
++      }
++      if (gst_tag_list_get_string (tags, GST_TAG_ARTIST, &s)) {
++        strncpy (ffmpegmux->context->author, s,
++            sizeof (ffmpegmux->context->author));
++      }
++      if (gst_tag_list_get_string (tags, GST_TAG_COPYRIGHT, &s)) {
++        strncpy (ffmpegmux->context->copyright, s,
++            sizeof (ffmpegmux->context->copyright));
++      }
++      if (gst_tag_list_get_string (tags, GST_TAG_COMMENT, &s)) {
++        strncpy (ffmpegmux->context->comment, s,
++            sizeof (ffmpegmux->context->comment));
++      }
++      if (gst_tag_list_get_string (tags, GST_TAG_ALBUM, &s)) {
++        strncpy (ffmpegmux->context->album, s,
++            sizeof (ffmpegmux->context->album));
++      }
++      if (gst_tag_list_get_string (tags, GST_TAG_GENRE, &s)) {
++        strncpy (ffmpegmux->context->genre, s,
++            sizeof (ffmpegmux->context->genre));
++      }
++      if (gst_tag_list_get_int (tags, GST_TAG_TRACK_NUMBER, &i)) {
++        ffmpegmux->context->track = i;
++      }
++    }
++#endif
++
++    /* set the streamheader flag for gstffmpegprotocol if codec supports it */
++    if (!strcmp (ffmpegmux->context->oformat->name, "flv")) {
++      open_flags |= GST_FFMPEG_URL_STREAMHEADER;
++    }
++
++    if (url_fopen (&ffmpegmux->context->pb,
++            ffmpegmux->context->filename, open_flags) < 0) {
++      GST_ELEMENT_ERROR (ffmpegmux, LIBRARY, TOO_LAZY, (NULL),
++          ("Failed to open stream context in ffmux"));
++      return GST_FLOW_ERROR;
++    }
++
++    if (av_set_parameters (ffmpegmux->context, NULL) < 0) {
++      GST_ELEMENT_ERROR (ffmpegmux, LIBRARY, INIT, (NULL),
++          ("Failed to initialize muxer"));
++      return GST_FLOW_ERROR;
++    }
++
++    /* now open the mux format */
++    if (av_write_header (ffmpegmux->context) < 0) {
++      GST_ELEMENT_ERROR (ffmpegmux, LIBRARY, SETTINGS, (NULL),
++          ("Failed to write file header - check codec settings"));
++      return GST_FLOW_ERROR;
++    }
++
++    /* we're now opened */
++    ffmpegmux->opened = TRUE;
++
++    /* flush the header so it will be used as streamheader */
++    put_flush_packet (ffmpegmux->context->pb);
++  }
++
++  /* take the one with earliest timestamp,
++   * and push it forward */
++  best_pad = NULL;
++  best_time = GST_CLOCK_TIME_NONE;
++  for (collected = ffmpegmux->collect->data; collected;
++      collected = g_slist_next (collected)) {
++    GstFFMpegMuxPad *collect_pad = (GstFFMpegMuxPad *) collected->data;
++    GstBuffer *buffer = gst_collect_pads_peek (ffmpegmux->collect,
++        (GstCollectData *) collect_pad);
++
++    /* if there's no buffer, just continue */
++    if (buffer == NULL) {
++      continue;
++    }
++
++    /* if we have no buffer yet, just use the first one */
++    if (best_pad == NULL) {
++      best_pad = collect_pad;
++      best_time = GST_BUFFER_TIMESTAMP (buffer);
++      goto next_pad;
++    }
++
++    /* if we do have one, only use this one if it's older */
++    if (GST_BUFFER_TIMESTAMP (buffer) < best_time) {
++      best_time = GST_BUFFER_TIMESTAMP (buffer);
++      best_pad = collect_pad;
++    }
++
++  next_pad:
++    gst_buffer_unref (buffer);
++
++    /* Mux buffers with invalid timestamp first */
++    if (!GST_CLOCK_TIME_IS_VALID (best_time))
++      break;
++  }
++
++  /* now handle the buffer, or signal EOS if we have
++   * no buffers left */
++  if (best_pad != NULL) {
++    GstBuffer *buf;
++    AVPacket pkt;
++    gboolean need_free = FALSE;
++
++    /* push out current buffer */
++    buf = gst_collect_pads_pop (ffmpegmux->collect,
++        (GstCollectData *) best_pad);
++
++    ffmpegmux->context->streams[best_pad->padnum]->codec->frame_number++;
++
++    /* set time */
++    pkt.pts = gst_ffmpeg_time_gst_to_ff (GST_BUFFER_TIMESTAMP (buf),
++        ffmpegmux->context->streams[best_pad->padnum]->time_base);
++    pkt.dts = pkt.pts;
++
++    if (strcmp (ffmpegmux->context->oformat->name, "gif") == 0) {
++      AVStream *st = ffmpegmux->context->streams[best_pad->padnum];
++      AVPicture src, dst;
++
++      need_free = TRUE;
++      pkt.size = st->codec->width * st->codec->height * 3;
++      pkt.data = g_malloc (pkt.size);
++
++      dst.data[0] = pkt.data;
++      dst.data[1] = NULL;
++      dst.data[2] = NULL;
++      dst.linesize[0] = st->codec->width * 3;
++
++      gst_ffmpeg_avpicture_fill (&src, GST_BUFFER_DATA (buf),
++          PIX_FMT_RGB24, st->codec->width, st->codec->height);
++
++      av_picture_copy (&dst, &src, PIX_FMT_RGB24,
++          st->codec->width, st->codec->height);
++    } else {
++      pkt.data = GST_BUFFER_DATA (buf);
++      pkt.size = GST_BUFFER_SIZE (buf);
++    }
++
++    pkt.stream_index = best_pad->padnum;
++    pkt.flags = 0;
++
++    if (!GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT))
++      pkt.flags |= AV_PKT_FLAG_KEY;
++
++    if (GST_BUFFER_DURATION_IS_VALID (buf))
++      pkt.duration =
++          gst_ffmpeg_time_gst_to_ff (GST_BUFFER_DURATION (buf),
++          ffmpegmux->context->streams[best_pad->padnum]->time_base);
++    else
++      pkt.duration = 0;
++    av_write_frame (ffmpegmux->context, &pkt);
++    gst_buffer_unref (buf);
++    if (need_free)
++      g_free (pkt.data);
++  } else {
++    /* close down */
++    av_write_trailer (ffmpegmux->context);
++    ffmpegmux->opened = FALSE;
++    put_flush_packet (ffmpegmux->context->pb);
++    url_fclose (ffmpegmux->context->pb);
++    gst_pad_push_event (ffmpegmux->srcpad, gst_event_new_eos ());
++    return GST_FLOW_UNEXPECTED;
++  }
++
++  return GST_FLOW_OK;
++}
++
++static GstStateChangeReturn
++gst_ffmpegmux_change_state (GstElement * element, GstStateChange transition)
++{
++  GstFlowReturn ret;
++  GstFFMpegMux *ffmpegmux = (GstFFMpegMux *) (element);
++
++  switch (transition) {
++    case GST_STATE_CHANGE_NULL_TO_READY:
++      break;
++    case GST_STATE_CHANGE_READY_TO_PAUSED:
++      gst_collect_pads_start (ffmpegmux->collect);
++      break;
++    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
++      break;
++    case GST_STATE_CHANGE_PAUSED_TO_READY:
++      gst_collect_pads_stop (ffmpegmux->collect);
++      break;
++    default:
++      break;
++  }
++
++  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
++
++  switch (transition) {
++    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
++      break;
++    case GST_STATE_CHANGE_PAUSED_TO_READY:
++      gst_tag_setter_reset_tags (GST_TAG_SETTER (ffmpegmux));
++      if (ffmpegmux->opened) {
++        ffmpegmux->opened = FALSE;
++        url_fclose (ffmpegmux->context->pb);
++      }
++      break;
++    case GST_STATE_CHANGE_READY_TO_NULL:
++      break;
++    default:
++      break;
++  }
++
++  return ret;
++}
++
++static GstCaps *
++gst_ffmpegmux_get_id_caps (enum CodecID *id_list)
++{
++  GstCaps *caps, *t;
++  gint i;
++
++  caps = gst_caps_new_empty ();
++  for (i = 0; id_list[i] != CODEC_ID_NONE; i++) {
++    if ((t = gst_ffmpeg_codecid_to_caps (id_list[i], NULL, TRUE)))
++      gst_caps_append (caps, t);
++  }
++  if (gst_caps_is_empty (caps)) {
++    gst_caps_unref (caps);
++    return NULL;
++  }
++
++  return caps;
++}
++
++/* set a list of integer values on the caps, e.g. for sample rates */
++static void
++gst_ffmpeg_mux_simple_caps_set_int_list (GstCaps * caps, const gchar * field,
++    guint num, const gint * values)
++{
++  GValue list = { 0, };
++  GValue val = { 0, };
++  gint i;
++
++  g_return_if_fail (GST_CAPS_IS_SIMPLE (caps));
++
++  g_value_init (&list, GST_TYPE_LIST);
++  g_value_init (&val, G_TYPE_INT);
++
++  for (i = 0; i < num; ++i) {
++    g_value_set_int (&val, values[i]);
++    gst_value_list_append_value (&list, &val);
++  }
++
++  gst_structure_set_value (gst_caps_get_structure (caps, 0), field, &list);
++
++  g_value_unset (&val);
++  g_value_unset (&list);
++}
++
++gboolean
++gst_ffmpegmux_register (GstPlugin * plugin)
++{
++  GTypeInfo typeinfo = {
++    sizeof (GstFFMpegMuxClass),
++    (GBaseInitFunc) gst_ffmpegmux_base_init,
++    NULL,
++    (GClassInitFunc) gst_ffmpegmux_class_init,
++    NULL,
++    NULL,
++    sizeof (GstFFMpegMux),
++    0,
++    (GInstanceInitFunc) gst_ffmpegmux_init,
++  };
++  static const GInterfaceInfo tag_setter_info = {
++    NULL, NULL, NULL
++  };
++  GType type;
++  AVOutputFormat *in_plugin;
++
++  in_plugin = av_oformat_next (NULL);
++
++  GST_LOG ("Registering muxers");
++
++  while (in_plugin) {
++    gchar *type_name;
++    gchar *p;
++    GstRank rank = GST_RANK_MARGINAL;
++
++    if ((!strncmp (in_plugin->name, "u16", 3)) ||
++        (!strncmp (in_plugin->name, "s16", 3)) ||
++        (!strncmp (in_plugin->name, "u24", 3)) ||
++        (!strncmp (in_plugin->name, "s24", 3)) ||
++        (!strncmp (in_plugin->name, "u8", 2)) ||
++        (!strncmp (in_plugin->name, "s8", 2)) ||
++        (!strncmp (in_plugin->name, "u32", 3)) ||
++        (!strncmp (in_plugin->name, "s32", 3)) ||
++        (!strncmp (in_plugin->name, "f32", 3)) ||
++        (!strncmp (in_plugin->name, "f64", 3)) ||
++        (!strncmp (in_plugin->name, "raw", 3)) ||
++        (!strncmp (in_plugin->name, "crc", 3)) ||
++        (!strncmp (in_plugin->name, "null", 4)) ||
++        (!strncmp (in_plugin->name, "gif", 3)) ||
++        (!strncmp (in_plugin->name, "frame", 5)) ||
++        (!strncmp (in_plugin->name, "image", 5)) ||
++        (!strncmp (in_plugin->name, "mulaw", 5)) ||
++        (!strncmp (in_plugin->name, "alaw", 4)) ||
++        (!strncmp (in_plugin->name, "h26", 3)) ||
++        (!strncmp (in_plugin->name, "rtp", 3)) ||
++        (!strncmp (in_plugin->name, "ass", 3)) ||
++        (!strncmp (in_plugin->name, "ffmetadata", 10)) ||
++        (!strncmp (in_plugin->name, "srt", 3))
++        ) {
++      GST_LOG ("Ignoring muxer %s", in_plugin->name);
++      goto next;
++    }
++
++    if ((!strncmp (in_plugin->long_name, "raw ", 4))) {
++      GST_LOG ("Ignoring raw muxer %s", in_plugin->name);
++      goto next;
++    }
++
++    if (gst_ffmpegmux_get_replacement (in_plugin->name))
++      rank = GST_RANK_NONE;
++
++    /* FIXME : We need a fast way to know whether we have mappings for this
++     * muxer type. */
++
++    /* construct the type */
++    type_name = g_strdup_printf ("ffmux_%s", in_plugin->name);
++
++    p = type_name;
++
++    while (*p) {
++      if (*p == '.')
++        *p = '_';
++      p++;
++    }
++
++    type = g_type_from_name (type_name);
++
++    if (!type) {
++      /* create the type now */
++      type = g_type_register_static (GST_TYPE_ELEMENT, type_name, &typeinfo, 0);
++      g_type_set_qdata (type, GST_FFMUX_PARAMS_QDATA, (gpointer) in_plugin);
++      g_type_add_interface_static (type, GST_TYPE_TAG_SETTER, &tag_setter_info);
++    }
++
++    if (!gst_element_register (plugin, type_name, rank, type)) {
++      g_free (type_name);
++      return FALSE;
++    }
++
++    g_free (type_name);
++
++  next:
++    in_plugin = av_oformat_next (in_plugin);
++  }
++
++  GST_LOG ("Finished registering muxers");
++
++  return TRUE;
++}
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegprotocol.c gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegprotocol.c
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegprotocol.c	2011-07-12 16:35:28.000000000 +0200
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegprotocol.c	2014-08-08 15:26:07.875857555 +0200
+@@ -46,63 +46,14 @@
+ };
+ 
+ static int
+-gst_ffmpegdata_open (URLContext * h, const char *filename, int flags)
+-{
+-  GstProtocolInfo *info;
+-  GstPad *pad;
+-
+-  GST_LOG ("Opening %s", filename);
+-
+-  info = g_new0 (GstProtocolInfo, 1);
+-
+-  info->set_streamheader = flags & GST_FFMPEG_URL_STREAMHEADER;
+-  flags &= ~GST_FFMPEG_URL_STREAMHEADER;
+-  h->flags &= ~GST_FFMPEG_URL_STREAMHEADER;
+-
+-  /* we don't support R/W together */
+-  if (flags != URL_RDONLY && flags != URL_WRONLY) {
+-    GST_WARNING ("Only read-only or write-only are supported");
+-    return -EINVAL;
+-  }
+-
+-  if (sscanf (&filename[12], "%p", &pad) != 1) {
+-    GST_WARNING ("could not decode pad from %s", filename);
+-    return -EIO;
+-  }
+-
+-  /* make sure we're a pad and that we're of the right type */
+-  g_return_val_if_fail (GST_IS_PAD (pad), -EINVAL);
+-
+-  switch (flags) {
+-    case URL_RDONLY:
+-      g_return_val_if_fail (GST_PAD_IS_SINK (pad), -EINVAL);
+-      break;
+-    case URL_WRONLY:
+-      g_return_val_if_fail (GST_PAD_IS_SRC (pad), -EINVAL);
+-      break;
+-  }
+-
+-  info->eos = FALSE;
+-  info->pad = pad;
+-  info->offset = 0;
+-
+-  h->priv_data = (void *) info;
+-  h->is_streamed = FALSE;
+-  h->max_packet_size = 0;
+-
+-  return 0;
+-}
+-
+-static int
+-gst_ffmpegdata_peek (URLContext * h, unsigned char *buf, int size)
++gst_ffmpegdata_peek (void *priv_data, unsigned char *buf, int size)
+ {
+   GstProtocolInfo *info;
+   GstBuffer *inbuf = NULL;
+   GstFlowReturn ret;
+   int total = 0;
+ 
+-  g_return_val_if_fail (h->flags == URL_RDONLY, AVERROR (EIO));
+-  info = (GstProtocolInfo *) h->priv_data;
++  info = (GstProtocolInfo *) priv_data;
+ 
+   GST_DEBUG ("Pulling %d bytes at position %" G_GUINT64_FORMAT, size,
+       info->offset);
+@@ -134,17 +85,17 @@
+ }
+ 
+ static int
+-gst_ffmpegdata_read (URLContext * h, unsigned char *buf, int size)
++gst_ffmpegdata_read (void *priv_data, unsigned char *buf, int size)
+ {
+   gint res;
+   GstProtocolInfo *info;
+ 
+-  info = (GstProtocolInfo *) h->priv_data;
++  info = (GstProtocolInfo *) priv_data;
+ 
+   GST_DEBUG ("Reading %d bytes of data at position %" G_GUINT64_FORMAT, size,
+       info->offset);
+ 
+-  res = gst_ffmpegdata_peek (h, buf, size);
++  res = gst_ffmpegdata_peek (priv_data, buf, size);
+   if (res >= 0)
+     info->offset += res;
+ 
+@@ -154,15 +105,13 @@
+ }
+ 
+ static int
+-gst_ffmpegdata_write (URLContext * h, const unsigned char *buf, int size)
++gst_ffmpegdata_write (void *priv_data, const unsigned char *buf, int size)
+ {
+   GstProtocolInfo *info;
+   GstBuffer *outbuf;
+ 
+   GST_DEBUG ("Writing %d bytes", size);
+-  info = (GstProtocolInfo *) h->priv_data;
+-
+-  g_return_val_if_fail (h->flags != URL_RDONLY, -EIO);
++  info = (GstProtocolInfo *) priv_data;
+ 
+   /* create buffer and push data further */
+   if (gst_pad_alloc_buffer_and_set_caps (info->pad,
+@@ -179,7 +128,7 @@
+ }
+ 
+ static int64_t
+-gst_ffmpegdata_seek (URLContext * h, int64_t pos, int whence)
++gst_ffmpegdata_seek (void *priv_data, int64_t pos, int whence)
+ {
+   GstProtocolInfo *info;
+   guint64 newpos = 0;
+@@ -187,70 +136,62 @@
+   GST_DEBUG ("Seeking to %" G_GINT64_FORMAT ", whence=%d",
+       (gint64) pos, whence);
+ 
+-  info = (GstProtocolInfo *) h->priv_data;
++  info = (GstProtocolInfo *) priv_data;
+ 
+   /* TODO : if we are push-based, we need to return sensible info */
+ 
+-  switch (h->flags) {
+-    case URL_RDONLY:
+-    {
+-      /* sinkpad */
+-      switch (whence) {
+-        case SEEK_SET:
+-          newpos = (guint64) pos;
+-          break;
+-        case SEEK_CUR:
+-          newpos = info->offset + pos;
+-          break;
+-        case SEEK_END:
+-        case AVSEEK_SIZE:
+-          /* ffmpeg wants to know the current end position in bytes ! */
+-        {
+-          GstFormat format = GST_FORMAT_BYTES;
+-          gint64 duration;
+-
+-          GST_DEBUG ("Seek end");
+-
+-          if (gst_pad_is_linked (info->pad))
+-            if (gst_pad_query_duration (GST_PAD_PEER (info->pad), &format,
+-                    &duration))
+-              newpos = ((guint64) duration) + pos;
+-        }
+-          break;
+-        default:
+-          g_assert (0);
+-          break;
++  if (GST_PAD_IS_SINK (info->pad)) {
++    /* sinkpad */
++    switch (whence) {
++      case SEEK_SET:
++        newpos = (guint64) pos;
++        break;
++      case SEEK_CUR:
++        newpos = info->offset + pos;
++        break;
++      case SEEK_END:
++      case AVSEEK_SIZE:
++        /* ffmpeg wants to know the current end position in bytes ! */
++      {
++        GstFormat format = GST_FORMAT_BYTES;
++        gint64 duration;
++
++        GST_DEBUG ("Seek end");
++
++        if (gst_pad_is_linked (info->pad))
++          if (gst_pad_query_duration (GST_PAD_PEER (info->pad), &format,
++                  &duration))
++            newpos = ((guint64) duration) + pos;
+       }
+-      /* FIXME : implement case for push-based behaviour */
+-      if (whence != AVSEEK_SIZE)
+-        info->offset = newpos;
++        break;
++      default:
++        g_assert (0);
++        break;
+     }
+-      break;
+-    case URL_WRONLY:
+-    {
+-      /* srcpad */
+-      switch (whence) {
+-        case SEEK_SET:
+-          info->offset = (guint64) pos;
+-          gst_pad_push_event (info->pad, gst_event_new_new_segment
+-              (TRUE, 1.0, GST_FORMAT_BYTES, info->offset,
+-                  GST_CLOCK_TIME_NONE, info->offset));
+-          break;
+-        case SEEK_CUR:
+-          info->offset += pos;
+-          gst_pad_push_event (info->pad, gst_event_new_new_segment
+-              (TRUE, 1.0, GST_FORMAT_BYTES, info->offset,
+-                  GST_CLOCK_TIME_NONE, info->offset));
+-          break;
+-        default:
+-          break;
+-      }
+-      newpos = info->offset;
++    /* FIXME : implement case for push-based behaviour */
++    if (whence != AVSEEK_SIZE)
++      info->offset = newpos;
++  } else if (GST_PAD_IS_SRC (info->pad)) {
++    /* srcpad */
++    switch (whence) {
++      case SEEK_SET:
++        info->offset = (guint64) pos;
++        gst_pad_push_event (info->pad, gst_event_new_new_segment
++            (TRUE, 1.0, GST_FORMAT_BYTES, info->offset,
++                GST_CLOCK_TIME_NONE, info->offset));
++        break;
++      case SEEK_CUR:
++        info->offset += pos;
++        gst_pad_push_event (info->pad, gst_event_new_new_segment
++            (TRUE, 1.0, GST_FORMAT_BYTES, info->offset,
++                GST_CLOCK_TIME_NONE, info->offset));
++        break;
++      default:
++        break;
+     }
+-      break;
+-    default:
+-      g_assert (0);
+-      break;
++    newpos = info->offset;
++  } else {
++    g_assert_not_reached ();
+   }
+ 
+   GST_DEBUG ("Now at offset %" G_GUINT64_FORMAT " (returning %" G_GUINT64_FORMAT
+@@ -258,85 +199,91 @@
+   return newpos;
+ }
+ 
+-static int
+-gst_ffmpegdata_close (URLContext * h)
++int
++gst_ffmpegdata_close (AVIOContext * h)
+ {
+   GstProtocolInfo *info;
+ 
+-  info = (GstProtocolInfo *) h->priv_data;
++  info = (GstProtocolInfo *) h->opaque;
+   if (info == NULL)
+     return 0;
+ 
+   GST_LOG ("Closing file");
+ 
+-  switch (h->flags) {
+-    case URL_WRONLY:
+-    {
+-      /* send EOS - that closes down the stream */
+-      gst_pad_push_event (info->pad, gst_event_new_eos ());
+-      break;
+-    }
+-    default:
+-      break;
++  if (GST_PAD_IS_SRC (info->pad)) {
++    /* send EOS - that closes down the stream */
++    gst_pad_push_event (info->pad, gst_event_new_eos ());
+   }
+ 
+   /* clean up data */
+   g_free (info);
+-  h->priv_data = NULL;
++  h->opaque = NULL;
++
++  av_freep (&h->buffer);
++  av_free (h);
+ 
+   return 0;
+ }
+ 
++int
++gst_ffmpegdata_open (GstPad * pad, int flags, AVIOContext ** context)
++{
++  GstProtocolInfo *info;
++  static const int buffer_size = 4096;
++  unsigned char *buffer = NULL;
+ 
+-URLProtocol gstreamer_protocol = {
+-  /*.name = */ "gstreamer",
+-  /*.url_open = */ gst_ffmpegdata_open,
+-  /*.url_read = */ gst_ffmpegdata_read,
+-  /*.url_write = */ gst_ffmpegdata_write,
+-  /*.url_seek = */ gst_ffmpegdata_seek,
+-  /*.url_close = */ gst_ffmpegdata_close,
+-};
++  info = g_new0 (GstProtocolInfo, 1);
+ 
++  info->set_streamheader = flags & GST_FFMPEG_URL_STREAMHEADER;
++  flags &= ~GST_FFMPEG_URL_STREAMHEADER;
+ 
+-/* specialized protocol for cross-thread pushing,
+- * based on ffmpeg's pipe protocol */
++  /* we don't support R/W together */
++  if ((flags & AVIO_FLAG_WRITE) && (flags & AVIO_FLAG_READ)) {
++    GST_WARNING ("Only read-only or write-only are supported");
++    return -EINVAL;
++  }
+ 
+-static int
+-gst_ffmpeg_pipe_open (URLContext * h, const char *filename, int flags)
+-{
+-  GstFFMpegPipe *ffpipe;
++  /* make sure we're a pad and that we're of the right type */
++  g_return_val_if_fail (GST_IS_PAD (pad), -EINVAL);
+ 
+-  GST_LOG ("Opening %s", filename);
++  if ((flags & AVIO_FLAG_READ))
++    g_return_val_if_fail (GST_PAD_IS_SINK (pad), -EINVAL);
++  if ((flags & AVIO_FLAG_WRITE))
++    g_return_val_if_fail (GST_PAD_IS_SRC (pad), -EINVAL);
+ 
+-  /* we don't support W together */
+-  if (flags != URL_RDONLY) {
+-    GST_WARNING ("Only read-only is supported");
+-    return -EINVAL;
+-  }
++  info->eos = FALSE;
++  info->pad = pad;
++  info->offset = 0;
+ 
+-  if (sscanf (&filename[10], "%p", &ffpipe) != 1) {
+-    GST_WARNING ("could not decode pipe info from %s", filename);
+-    return -EIO;
++  buffer = av_malloc (buffer_size);
++  if (buffer == NULL) {
++    GST_WARNING ("Failed to allocate buffer");
++    return -ENOMEM;
+   }
+ 
+-  /* sanity check */
+-  g_return_val_if_fail (GST_IS_ADAPTER (ffpipe->adapter), -EINVAL);
+-
+-  h->priv_data = (void *) ffpipe;
+-  h->is_streamed = TRUE;
+-  h->max_packet_size = 0;
++  *context =
++      avio_alloc_context (buffer, buffer_size, flags, (void *) info,
++      gst_ffmpegdata_read, gst_ffmpegdata_write, gst_ffmpegdata_seek);
++  (*context)->seekable = AVIO_SEEKABLE_NORMAL;
++  if (!(flags & AVIO_FLAG_WRITE)) {
++    (*context)->buf_ptr = (*context)->buf_end;
++    (*context)->write_flag = 0;
++  }
+ 
+   return 0;
+ }
+ 
++/* specialized protocol for cross-thread pushing,
++ * based on ffmpeg's pipe protocol */
++
+ static int
+-gst_ffmpeg_pipe_read (URLContext * h, unsigned char *buf, int size)
++gst_ffmpeg_pipe_read (void *priv_data, unsigned char *buf, int size)
+ {
+   GstFFMpegPipe *ffpipe;
+   const guint8 *data;
+   guint available;
+ 
+-  ffpipe = (GstFFMpegPipe *) h->priv_data;
++  ffpipe = (GstFFMpegPipe *) priv_data;
+ 
+   GST_LOG ("requested size %d", size);
+ 
+@@ -367,21 +314,38 @@
+   return size;
+ }
+ 
+-static int
+-gst_ffmpeg_pipe_close (URLContext * h)
++int
++gst_ffmpeg_pipe_close (AVIOContext * h)
+ {
+   GST_LOG ("Closing pipe");
+ 
+-  h->priv_data = NULL;
++  h->opaque = NULL;
++  av_freep (&h->buffer);
++  av_free (h);
+ 
+   return 0;
+ }
+ 
+-URLProtocol gstpipe_protocol = {
+-  "gstpipe",
+-  gst_ffmpeg_pipe_open,
+-  gst_ffmpeg_pipe_read,
+-  NULL,
+-  NULL,
+-  gst_ffmpeg_pipe_close,
+-};
++int
++gst_ffmpeg_pipe_open (GstFFMpegPipe * ffpipe, int flags, AVIOContext ** context)
++{
++  static const int buffer_size = 4096;
++  unsigned char *buffer = NULL;
++
++  /* sanity check */
++  g_return_val_if_fail (GST_IS_ADAPTER (ffpipe->adapter), -EINVAL);
++
++  buffer = av_malloc (buffer_size);
++  if (buffer == NULL) {
++    GST_WARNING ("Failed to allocate buffer");
++    return -ENOMEM;
++  }
++
++  *context =
++      avio_alloc_context (buffer, buffer_size, 0, (void *) ffpipe,
++      gst_ffmpeg_pipe_read, NULL, NULL);
++  (*context)->seekable = 0;
++  (*context)->buf_ptr = (*context)->buf_end;
++
++  return 0;
++}
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegutils.c gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegutils.c
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegutils.c	2011-07-13 11:07:28.000000000 +0200
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegutils.c	2014-08-08 15:34:04.007874626 +0200
+@@ -25,6 +25,11 @@
+ #ifdef __APPLE__
+ #include <sys/sysctl.h>
+ #endif
++#ifdef HAVE_FFMPEG_UNINSTALLED
++#include <avformat.h>
++#else
++#include <libavformat/avformat.h>
++#endif
+ 
+ G_CONST_RETURN gchar *
+ gst_ffmpeg_get_codecid_longname (enum CodecID codec_id)
+@@ -39,21 +44,21 @@
+ }
+ 
+ gint
+-av_smp_format_depth (enum SampleFormat smp_fmt)
++av_smp_format_depth (enum AVSampleFormat smp_fmt)
+ {
+   gint depth = -1;
+   switch (smp_fmt) {
+-    case SAMPLE_FMT_U8:
++    case AV_SAMPLE_FMT_U8:
+       depth = 1;
+       break;
+-    case SAMPLE_FMT_S16:
++    case AV_SAMPLE_FMT_S16:
+       depth = 2;
+       break;
+-    case SAMPLE_FMT_S32:
+-    case SAMPLE_FMT_FLT:
++    case AV_SAMPLE_FMT_S32:
++    case AV_SAMPLE_FMT_FLT:
+       depth = 4;
+       break;
+-    case SAMPLE_FMT_DBL:
++    case AV_SAMPLE_FMT_DBL:
+       depth = 8;
+       break;
+     default:
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegutils.c.orig gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegutils.c.orig
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegutils.c.orig	1970-01-01 01:00:00.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegutils.c.orig	2011-07-13 11:07:28.000000000 +0200
+@@ -0,0 +1,483 @@
++/* GStreamer
++ * Copyright (c) 2009 Edward Hervey <bilboed@bilboed.com>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++#include "gstffmpegutils.h"
++#include <unistd.h>
++#ifdef __APPLE__
++#include <sys/sysctl.h>
++#endif
++
++G_CONST_RETURN gchar *
++gst_ffmpeg_get_codecid_longname (enum CodecID codec_id)
++{
++  AVCodec *codec;
++  /* Let's use what ffmpeg can provide us */
++
++  if ((codec = avcodec_find_decoder (codec_id)) ||
++      (codec = avcodec_find_encoder (codec_id)))
++    return codec->long_name;
++  return NULL;
++}
++
++gint
++av_smp_format_depth (enum SampleFormat smp_fmt)
++{
++  gint depth = -1;
++  switch (smp_fmt) {
++    case SAMPLE_FMT_U8:
++      depth = 1;
++      break;
++    case SAMPLE_FMT_S16:
++      depth = 2;
++      break;
++    case SAMPLE_FMT_S32:
++    case SAMPLE_FMT_FLT:
++      depth = 4;
++      break;
++    case SAMPLE_FMT_DBL:
++      depth = 8;
++      break;
++    default:
++      GST_ERROR ("UNHANDLED SAMPLE FORMAT !");
++      break;
++  }
++  return depth;
++}
++
++
++/*
++ * Fill in pointers to memory in a AVPicture, where
++ * everything is aligned by 4 (as required by X).
++ * This is mostly a copy from imgconvert.c with some
++ * small changes.
++ */
++
++#define FF_COLOR_RGB      0     /* RGB color space */
++#define FF_COLOR_GRAY     1     /* gray color space */
++#define FF_COLOR_YUV      2     /* YUV color space. 16 <= Y <= 235, 16 <= U, V <= 240 */
++#define FF_COLOR_YUV_JPEG 3     /* YUV color space. 0 <= Y <= 255, 0 <= U, V <= 255 */
++
++#define FF_PIXEL_PLANAR   0     /* each channel has one component in AVPicture */
++#define FF_PIXEL_PACKED   1     /* only one components containing all the channels */
++#define FF_PIXEL_PALETTE  2     /* one components containing indexes for a palette */
++
++typedef struct PixFmtInfo
++{
++  const char *name;
++  uint8_t nb_channels;          /* number of channels (including alpha) */
++  uint8_t color_type;           /* color type (see FF_COLOR_xxx constants) */
++  uint8_t pixel_type;           /* pixel storage type (see FF_PIXEL_xxx constants) */
++  uint8_t is_alpha:1;           /* true if alpha can be specified */
++  uint8_t x_chroma_shift;       /* X chroma subsampling factor is 2 ^ shift */
++  uint8_t y_chroma_shift;       /* Y chroma subsampling factor is 2 ^ shift */
++  uint8_t depth;                /* bit depth of the color components */
++} PixFmtInfo;
++
++
++/* this table gives more information about formats */
++static PixFmtInfo pix_fmt_info[PIX_FMT_NB];
++void
++gst_ffmpeg_init_pix_fmt_info (void)
++{
++  /* YUV formats */
++  pix_fmt_info[PIX_FMT_YUV420P].name = g_strdup ("yuv420p");
++  pix_fmt_info[PIX_FMT_YUV420P].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_YUV420P].color_type = FF_COLOR_YUV;
++  pix_fmt_info[PIX_FMT_YUV420P].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_YUV420P].depth = 8,
++      pix_fmt_info[PIX_FMT_YUV420P].x_chroma_shift = 1,
++      pix_fmt_info[PIX_FMT_YUV420P].y_chroma_shift = 1;
++
++  pix_fmt_info[PIX_FMT_YUV422P].name = g_strdup ("yuv422p");
++  pix_fmt_info[PIX_FMT_YUV422P].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_YUV422P].color_type = FF_COLOR_YUV;
++  pix_fmt_info[PIX_FMT_YUV422P].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_YUV422P].depth = 8;
++  pix_fmt_info[PIX_FMT_YUV422P].x_chroma_shift = 1;
++  pix_fmt_info[PIX_FMT_YUV422P].y_chroma_shift = 0;
++
++  pix_fmt_info[PIX_FMT_YUV444P].name = g_strdup ("yuv444p");
++  pix_fmt_info[PIX_FMT_YUV444P].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_YUV444P].color_type = FF_COLOR_YUV;
++  pix_fmt_info[PIX_FMT_YUV444P].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_YUV444P].depth = 8;
++  pix_fmt_info[PIX_FMT_YUV444P].x_chroma_shift = 0;
++  pix_fmt_info[PIX_FMT_YUV444P].y_chroma_shift = 0;
++
++  pix_fmt_info[PIX_FMT_YUYV422].name = g_strdup ("yuv422");
++  pix_fmt_info[PIX_FMT_YUYV422].nb_channels = 1;
++  pix_fmt_info[PIX_FMT_YUYV422].color_type = FF_COLOR_YUV;
++  pix_fmt_info[PIX_FMT_YUYV422].pixel_type = FF_PIXEL_PACKED;
++  pix_fmt_info[PIX_FMT_YUYV422].depth = 8;
++  pix_fmt_info[PIX_FMT_YUYV422].x_chroma_shift = 1;
++  pix_fmt_info[PIX_FMT_YUYV422].y_chroma_shift = 0;
++
++  pix_fmt_info[PIX_FMT_YUV410P].name = g_strdup ("yuv410p");
++  pix_fmt_info[PIX_FMT_YUV410P].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_YUV410P].color_type = FF_COLOR_YUV;
++  pix_fmt_info[PIX_FMT_YUV410P].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_YUV410P].depth = 8;
++  pix_fmt_info[PIX_FMT_YUV410P].x_chroma_shift = 2;
++  pix_fmt_info[PIX_FMT_YUV410P].y_chroma_shift = 2;
++
++  pix_fmt_info[PIX_FMT_YUV411P].name = g_strdup ("yuv411p");
++  pix_fmt_info[PIX_FMT_YUV411P].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_YUV411P].color_type = FF_COLOR_YUV;
++  pix_fmt_info[PIX_FMT_YUV411P].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_YUV411P].depth = 8;
++  pix_fmt_info[PIX_FMT_YUV411P].x_chroma_shift = 2;
++  pix_fmt_info[PIX_FMT_YUV411P].y_chroma_shift = 0;
++
++  /* JPEG YUV */
++  pix_fmt_info[PIX_FMT_YUVJ420P].name = g_strdup ("yuvj420p");
++  pix_fmt_info[PIX_FMT_YUVJ420P].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_YUVJ420P].color_type = FF_COLOR_YUV_JPEG;
++  pix_fmt_info[PIX_FMT_YUVJ420P].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_YUVJ420P].depth = 8;
++  pix_fmt_info[PIX_FMT_YUVJ420P].x_chroma_shift = 1;
++  pix_fmt_info[PIX_FMT_YUVJ420P].y_chroma_shift = 1;
++
++  pix_fmt_info[PIX_FMT_YUVJ422P].name = g_strdup ("yuvj422p");
++  pix_fmt_info[PIX_FMT_YUVJ422P].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_YUVJ422P].color_type = FF_COLOR_YUV_JPEG;
++  pix_fmt_info[PIX_FMT_YUVJ422P].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_YUVJ422P].depth = 8;
++  pix_fmt_info[PIX_FMT_YUVJ422P].x_chroma_shift = 1;
++  pix_fmt_info[PIX_FMT_YUVJ422P].y_chroma_shift = 0;
++
++  pix_fmt_info[PIX_FMT_YUVJ444P].name = g_strdup ("yuvj444p");
++  pix_fmt_info[PIX_FMT_YUVJ444P].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_YUVJ444P].color_type = FF_COLOR_YUV_JPEG;
++  pix_fmt_info[PIX_FMT_YUVJ444P].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_YUVJ444P].depth = 8;
++  pix_fmt_info[PIX_FMT_YUVJ444P].x_chroma_shift = 0;
++  pix_fmt_info[PIX_FMT_YUVJ444P].y_chroma_shift = 0;
++
++  /* RGB formats */
++  pix_fmt_info[PIX_FMT_RGB24].name = g_strdup ("rgb24");
++  pix_fmt_info[PIX_FMT_RGB24].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_RGB24].color_type = FF_COLOR_RGB;
++  pix_fmt_info[PIX_FMT_RGB24].pixel_type = FF_PIXEL_PACKED;
++  pix_fmt_info[PIX_FMT_RGB24].depth = 8;
++  pix_fmt_info[PIX_FMT_RGB24].x_chroma_shift = 0;
++  pix_fmt_info[PIX_FMT_RGB24].y_chroma_shift = 0;
++
++  pix_fmt_info[PIX_FMT_BGR24].name = g_strdup ("bgr24");
++  pix_fmt_info[PIX_FMT_BGR24].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_BGR24].color_type = FF_COLOR_RGB;
++  pix_fmt_info[PIX_FMT_BGR24].pixel_type = FF_PIXEL_PACKED;
++  pix_fmt_info[PIX_FMT_BGR24].depth = 8;
++  pix_fmt_info[PIX_FMT_BGR24].x_chroma_shift = 0;
++  pix_fmt_info[PIX_FMT_BGR24].y_chroma_shift = 0;
++
++  pix_fmt_info[PIX_FMT_RGB32].name = g_strdup ("rgba32");
++  pix_fmt_info[PIX_FMT_RGB32].nb_channels = 4;
++  pix_fmt_info[PIX_FMT_RGB32].is_alpha = 1;
++  pix_fmt_info[PIX_FMT_RGB32].color_type = FF_COLOR_RGB;
++  pix_fmt_info[PIX_FMT_RGB32].pixel_type = FF_PIXEL_PACKED;
++  pix_fmt_info[PIX_FMT_RGB32].depth = 8;
++  pix_fmt_info[PIX_FMT_RGB32].x_chroma_shift = 0;
++  pix_fmt_info[PIX_FMT_RGB32].y_chroma_shift = 0;
++
++  pix_fmt_info[PIX_FMT_RGB565].name = g_strdup ("rgb565");
++  pix_fmt_info[PIX_FMT_RGB565].nb_channels = 3;
++  pix_fmt_info[PIX_FMT_RGB565].color_type = FF_COLOR_RGB;
++  pix_fmt_info[PIX_FMT_RGB565].pixel_type = FF_PIXEL_PACKED;
++  pix_fmt_info[PIX_FMT_RGB565].depth = 5;
++  pix_fmt_info[PIX_FMT_RGB565].x_chroma_shift = 0;
++  pix_fmt_info[PIX_FMT_RGB565].y_chroma_shift = 0;
++
++  pix_fmt_info[PIX_FMT_RGB555].name = g_strdup ("rgb555");
++  pix_fmt_info[PIX_FMT_RGB555].nb_channels = 4;
++  pix_fmt_info[PIX_FMT_RGB555].is_alpha = 1;
++  pix_fmt_info[PIX_FMT_RGB555].color_type = FF_COLOR_RGB;
++  pix_fmt_info[PIX_FMT_RGB555].pixel_type = FF_PIXEL_PACKED;
++  pix_fmt_info[PIX_FMT_RGB555].depth = 5;
++  pix_fmt_info[PIX_FMT_RGB555].x_chroma_shift = 0;
++  pix_fmt_info[PIX_FMT_RGB555].y_chroma_shift = 0;
++
++  /* gray / mono formats */
++  pix_fmt_info[PIX_FMT_GRAY8].name = g_strdup ("gray");
++  pix_fmt_info[PIX_FMT_GRAY8].nb_channels = 1;
++  pix_fmt_info[PIX_FMT_GRAY8].color_type = FF_COLOR_GRAY;
++  pix_fmt_info[PIX_FMT_GRAY8].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_GRAY8].depth = 8;
++
++  pix_fmt_info[PIX_FMT_MONOWHITE].name = g_strdup ("monow");
++  pix_fmt_info[PIX_FMT_MONOWHITE].nb_channels = 1;
++  pix_fmt_info[PIX_FMT_MONOWHITE].color_type = FF_COLOR_GRAY;
++  pix_fmt_info[PIX_FMT_MONOWHITE].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_MONOWHITE].depth = 1;
++
++  pix_fmt_info[PIX_FMT_MONOBLACK].name = g_strdup ("monob");
++  pix_fmt_info[PIX_FMT_MONOBLACK].nb_channels = 1;
++  pix_fmt_info[PIX_FMT_MONOBLACK].color_type = FF_COLOR_GRAY;
++  pix_fmt_info[PIX_FMT_MONOBLACK].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_MONOBLACK].depth = 1;
++
++  /* paletted formats */
++  pix_fmt_info[PIX_FMT_PAL8].name = g_strdup ("pal8");
++  pix_fmt_info[PIX_FMT_PAL8].nb_channels = 4;
++  pix_fmt_info[PIX_FMT_PAL8].is_alpha = 1;
++  pix_fmt_info[PIX_FMT_PAL8].color_type = FF_COLOR_RGB;
++  pix_fmt_info[PIX_FMT_PAL8].pixel_type = FF_PIXEL_PALETTE;
++  pix_fmt_info[PIX_FMT_PAL8].depth = 8;
++
++  pix_fmt_info[PIX_FMT_YUVA420P].name = g_strdup ("yuva420p");
++  pix_fmt_info[PIX_FMT_YUVA420P].nb_channels = 4;
++  pix_fmt_info[PIX_FMT_YUVA420P].is_alpha = 1;
++  pix_fmt_info[PIX_FMT_YUVA420P].color_type = FF_COLOR_YUV;
++  pix_fmt_info[PIX_FMT_YUVA420P].pixel_type = FF_PIXEL_PLANAR;
++  pix_fmt_info[PIX_FMT_YUVA420P].depth = 8,
++      pix_fmt_info[PIX_FMT_YUVA420P].x_chroma_shift = 1,
++      pix_fmt_info[PIX_FMT_YUVA420P].y_chroma_shift = 1;
++};
++
++int
++gst_ffmpeg_avpicture_get_size (int pix_fmt, int width, int height)
++{
++  AVPicture dummy_pict;
++
++  return gst_ffmpeg_avpicture_fill (&dummy_pict, NULL, pix_fmt, width, height);
++}
++
++#define GEN_MASK(x) ((1<<(x))-1)
++#define ROUND_UP_X(v,x) (((v) + GEN_MASK(x)) & ~GEN_MASK(x))
++#define ROUND_UP_2(x) ROUND_UP_X (x, 1)
++#define ROUND_UP_4(x) ROUND_UP_X (x, 2)
++#define ROUND_UP_8(x) ROUND_UP_X (x, 3)
++#define DIV_ROUND_UP_X(v,x) (((v) + GEN_MASK(x)) >> (x))
++
++int
++gst_ffmpeg_avpicture_fill (AVPicture * picture,
++    uint8_t * ptr, enum PixelFormat pix_fmt, int width, int height)
++{
++  int size, w2, h2, size2;
++  int stride, stride2;
++  PixFmtInfo *pinfo;
++
++  pinfo = &pix_fmt_info[pix_fmt];
++
++  switch (pix_fmt) {
++    case PIX_FMT_YUV420P:
++    case PIX_FMT_YUV422P:
++    case PIX_FMT_YUV444P:
++    case PIX_FMT_YUV410P:
++    case PIX_FMT_YUV411P:
++    case PIX_FMT_YUVJ420P:
++    case PIX_FMT_YUVJ422P:
++    case PIX_FMT_YUVJ444P:
++      stride = ROUND_UP_4 (width);
++      h2 = ROUND_UP_X (height, pinfo->y_chroma_shift);
++      size = stride * h2;
++      w2 = DIV_ROUND_UP_X (width, pinfo->x_chroma_shift);
++      stride2 = ROUND_UP_4 (w2);
++      h2 = DIV_ROUND_UP_X (height, pinfo->y_chroma_shift);
++      size2 = stride2 * h2;
++      picture->data[0] = ptr;
++      picture->data[1] = picture->data[0] + size;
++      picture->data[2] = picture->data[1] + size2;
++      picture->data[3] = NULL;
++      picture->linesize[0] = stride;
++      picture->linesize[1] = stride2;
++      picture->linesize[2] = stride2;
++      picture->linesize[3] = 0;
++      GST_DEBUG ("planes %d %d %d", 0, size, size + size2);
++      GST_DEBUG ("strides %d %d %d", stride, stride2, stride2);
++      return size + 2 * size2;
++    case PIX_FMT_YUVA420P:
++      stride = ROUND_UP_4 (width);
++      h2 = ROUND_UP_X (height, pinfo->y_chroma_shift);
++      size = stride * h2;
++      w2 = DIV_ROUND_UP_X (width, pinfo->x_chroma_shift);
++      stride2 = ROUND_UP_4 (w2);
++      h2 = DIV_ROUND_UP_X (height, pinfo->y_chroma_shift);
++      size2 = stride2 * h2;
++      picture->data[0] = ptr;
++      picture->data[1] = picture->data[0] + size;
++      picture->data[2] = picture->data[1] + size2;
++      picture->data[3] = picture->data[2] + size2;
++      picture->linesize[0] = stride;
++      picture->linesize[1] = stride2;
++      picture->linesize[2] = stride2;
++      picture->linesize[3] = stride;
++      GST_DEBUG ("planes %d %d %d %d", 0, size, size + size2, size + 2 * size2);
++      GST_DEBUG ("strides %d %d %d %d", stride, stride2, stride2, stride);
++      return 2 * size + 2 * size2;
++    case PIX_FMT_RGB24:
++    case PIX_FMT_BGR24:
++      stride = ROUND_UP_4 (width * 3);
++      size = stride * height;
++      picture->data[0] = ptr;
++      picture->data[1] = NULL;
++      picture->data[2] = NULL;
++      picture->data[3] = NULL;
++      picture->linesize[0] = stride;
++      picture->linesize[1] = 0;
++      picture->linesize[2] = 0;
++      picture->linesize[3] = 0;
++      return size;
++      /*case PIX_FMT_AYUV4444:
++         case PIX_FMT_BGR32:
++         case PIX_FMT_BGRA32:
++         case PIX_FMT_RGB32: */
++    case PIX_FMT_RGB32:
++      stride = width * 4;
++      size = stride * height;
++      picture->data[0] = ptr;
++      picture->data[1] = NULL;
++      picture->data[2] = NULL;
++      picture->data[3] = NULL;
++      picture->linesize[0] = stride;
++      picture->linesize[1] = 0;
++      picture->linesize[2] = 0;
++      picture->linesize[3] = 0;
++      return size;
++    case PIX_FMT_RGB555:
++    case PIX_FMT_RGB565:
++    case PIX_FMT_YUYV422:
++    case PIX_FMT_UYVY422:
++      stride = ROUND_UP_4 (width * 2);
++      size = stride * height;
++      picture->data[0] = ptr;
++      picture->data[1] = NULL;
++      picture->data[2] = NULL;
++      picture->data[3] = NULL;
++      picture->linesize[0] = stride;
++      picture->linesize[1] = 0;
++      picture->linesize[2] = 0;
++      picture->linesize[3] = 0;
++      return size;
++    case PIX_FMT_UYYVYY411:
++      /* FIXME, probably not the right stride */
++      stride = ROUND_UP_4 (width);
++      size = stride * height;
++      picture->data[0] = ptr;
++      picture->data[1] = NULL;
++      picture->data[2] = NULL;
++      picture->data[3] = NULL;
++      picture->linesize[0] = width + width / 2;
++      picture->linesize[1] = 0;
++      picture->linesize[2] = 0;
++      picture->linesize[3] = 0;
++      return size + size / 2;
++    case PIX_FMT_GRAY8:
++      stride = ROUND_UP_4 (width);
++      size = stride * height;
++      picture->data[0] = ptr;
++      picture->data[1] = NULL;
++      picture->data[2] = NULL;
++      picture->data[3] = NULL;
++      picture->linesize[0] = stride;
++      picture->linesize[1] = 0;
++      picture->linesize[2] = 0;
++      picture->linesize[3] = 0;
++      return size;
++    case PIX_FMT_MONOWHITE:
++    case PIX_FMT_MONOBLACK:
++      stride = ROUND_UP_4 ((width + 7) >> 3);
++      size = stride * height;
++      picture->data[0] = ptr;
++      picture->data[1] = NULL;
++      picture->data[2] = NULL;
++      picture->data[3] = NULL;
++      picture->linesize[0] = stride;
++      picture->linesize[1] = 0;
++      picture->linesize[2] = 0;
++      picture->linesize[3] = 0;
++      return size;
++    case PIX_FMT_PAL8:
++      /* already forced to be with stride, so same result as other function */
++      stride = ROUND_UP_4 (width);
++      size = stride * height;
++      picture->data[0] = ptr;
++      picture->data[1] = ptr + size;    /* palette is stored here as 256 32 bit words */
++      picture->data[2] = NULL;
++      picture->data[3] = NULL;
++      picture->linesize[0] = stride;
++      picture->linesize[1] = 4;
++      picture->linesize[2] = 0;
++      picture->linesize[3] = 0;
++      return size + 256 * 4;
++    default:
++      picture->data[0] = NULL;
++      picture->data[1] = NULL;
++      picture->data[2] = NULL;
++      picture->data[3] = NULL;
++      return -1;
++  }
++
++  return 0;
++}
++
++/* Create a GstBuffer of the requested size and caps.
++ * The memory will be allocated by ffmpeg, making sure it's properly aligned
++ * for any processing. */
++
++GstBuffer *
++new_aligned_buffer (gint size, GstCaps * caps)
++{
++  GstBuffer *buf;
++
++  buf = gst_buffer_new ();
++  GST_BUFFER_DATA (buf) = GST_BUFFER_MALLOCDATA (buf) = av_malloc (size);
++  GST_BUFFER_SIZE (buf) = size;
++  GST_BUFFER_FREE_FUNC (buf) = av_free;
++  if (caps)
++    gst_buffer_set_caps (buf, caps);
++
++  return buf;
++}
++
++int
++gst_ffmpeg_auto_max_threads (void)
++{
++  static gsize n_threads = 0;
++  if (g_once_init_enter (&n_threads)) {
++    int n = 1;
++#if defined(_WIN32)
++    {
++      const char *s = getenv ("NUMBER_OF_PROCESSORS");
++      if (s) {
++        n = atoi (s);
++      }
++    }
++#elif defined(__APPLE__)
++    {
++      int mib[] = { CTL_HW, HW_NCPU };
++      size_t dataSize = sizeof (int);
++
++      if (sysctl (mib, 2, &n_threads, &dataSize, NULL, 0)) {
++        n = 1;
++      }
++    }
++#else
++    n = sysconf (_SC_NPROCESSORS_CONF);
++#endif
++    if (n < 1)
++      n = 1;
++
++    g_once_init_leave (&n_threads, n);
++  }
++
++  return (int) (n_threads);
++}
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegutils.h gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegutils.h
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegutils.h	2011-11-02 14:04:05.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegutils.h	2014-08-08 15:34:04.007874626 +0200
+@@ -23,6 +23,7 @@
+ #ifdef HAVE_FFMPEG_UNINSTALLED
+ #include <avcodec.h>
+ #else
++#include <libavutil/mathematics.h>
+ #include <libavcodec/avcodec.h>
+ #endif
+ #include <gst/gst.h>
+@@ -87,7 +88,7 @@
+ gst_ffmpeg_get_codecid_longname (enum CodecID codec_id);
+ 
+ gint
+-av_smp_format_depth(enum SampleFormat smp_fmt);
++av_smp_format_depth(enum AVSampleFormat smp_fmt);
+ 
+ GstBuffer *
+ new_aligned_buffer (gint size, GstCaps * caps);
+diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegutils.h.orig gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegutils.h.orig
+--- gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegutils.h.orig	1970-01-01 01:00:00.000000000 +0100
++++ gst-ffmpeg-0.10.13/ext/ffmpeg/gstffmpegutils.h.orig	2014-08-08 15:26:38.473858652 +0200
+@@ -0,0 +1,95 @@
++/* GStreamer
++ * Copyright (C) <2009> Edward Hervey <bilboed@bilboed.com>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Library General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Library General Public License for more details.
++ *
++ * You should have received a copy of the GNU Library General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ * Boston, MA 02111-1307, USA.
++ */
++
++#ifndef __GST_FFMPEG_UTILS_H__
++#define __GST_FFMPEG_UTILS_H__
++
++#ifdef HAVE_FFMPEG_UNINSTALLED
++#include <avcodec.h>
++#else
++#include <libavcodec/avcodec.h>
++#endif
++#include <gst/gst.h>
++
++/*
++ *Get the size of an picture
++ */
++int
++gst_ffmpeg_avpicture_get_size (int pix_fmt, int width, int height);
++
++/*
++ * Fill in pointers in an AVPicture, aligned by 4 (required by X).
++ */
++
++int
++gst_ffmpeg_avpicture_fill (AVPicture * picture,
++                           uint8_t *   ptr,
++                           enum PixelFormat pix_fmt,
++                           int         width,
++                           int         height);
++
++/*
++ * Convert from/to a GStreamer <-> FFMpeg timestamp.
++ */
++static inline guint64
++gst_ffmpeg_time_ff_to_gst (gint64 pts, AVRational base)
++{
++  guint64 out;
++
++  if (pts == AV_NOPTS_VALUE){
++    out = GST_CLOCK_TIME_NONE;
++  } else {
++    AVRational bq = { 1, GST_SECOND };
++    out = av_rescale_q (pts, base, bq);
++  }
++
++  return out;
++}
++
++static inline gint64
++gst_ffmpeg_time_gst_to_ff (guint64 time, AVRational base)
++{
++  gint64 out;
++
++  if (!GST_CLOCK_TIME_IS_VALID (time) || base.num == 0) {
++    out = AV_NOPTS_VALUE;
++  } else {
++    AVRational bq = { 1, GST_SECOND };
++    out = av_rescale_q (time, bq, base);
++  }
++
++  return out;
++}
++
++void 
++gst_ffmpeg_init_pix_fmt_info(void);
++
++int
++gst_ffmpeg_auto_max_threads(void);
++
++G_CONST_RETURN gchar *
++gst_ffmpeg_get_codecid_longname (enum CodecID codec_id);
++
++gint
++av_smp_format_depth(enum AVSampleFormat smp_fmt);
++
++GstBuffer *
++new_aligned_buffer (gint size, GstCaps * caps);
++
++#endif /* __GST_FFMPEG_UTILS_H__ */
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/libav_e500mc.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/libav_e500mc.patch
new file mode 100644
index 0000000..eba4988
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/libav_e500mc.patch
@@ -0,0 +1,21 @@
+diff --git a/gst-libs/ext/libav/configure b/gst-libs/ext/libav/configure
+index 8473069..4f74952 100755
+--- a/gst-libs/ext/libav/configure
++++ b/gst-libs/ext/libav/configure
+Fix gst-ffmpeg build issues for libav on e500mc (fsl-p4080)
+
+Upstream-Status: Backport
+
+Signed-off-by: Yao Zhao <yao.zhao@windriver.com>
+
+@@ -2210,6 +2210,10 @@ elif enabled ppc; then
+             cpuflags="-mcpu=cell"
+             enable ldbrx
+         ;;
++        e500mc)
++            cpuflags="-mcpu=e500mc"
++            disable altivec
++        ;;
+         e500v2)
+             cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
+             disable altivec
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/libav_e5500.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/libav_e5500.patch
new file mode 100644
index 0000000..d9ea2c2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/libav_e5500.patch
@@ -0,0 +1,19 @@
+libav: Add configs for ppc e5500
+
+Upstream-Status: Pending
+
+Signed-off-by: Jesse Zhang <sen.zhang@windriver.com>
+
+--- gst-ffmpeg-0.10.13/gst-libs/ext/libav/configure	2013-06-20 05:18:36.073104964 -0400
++++ gst-ffmpeg-0.10.13/gst-libs/ext/libav/configure	2013-06-20 05:18:38.269104150 -0400
+@@ -2222,6 +2222,10 @@
+             cpuflags="-mcpu=8540 -mhard-float"
+             disable altivec
+         ;;
++        e5500)
++            cpuflags="-mcpu=e5500 -mhard-float"
++            disable altivec
++        ;;
+     esac
+ 
+ elif enabled x86; then
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/lower-rank.diff b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/lower-rank.diff
new file mode 100644
index 0000000..5f08afe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg-0.10.13/lower-rank.diff
@@ -0,0 +1,16 @@
+Lower the rank of ffmpeg plugin so codecs that hook into accelerated pieces (e.g. dsp or hw engines) can get picked over this
+Derived from OE by Dongxiao Xu <dongxiao.xu@intel.com>
+
+Upstream-Status: Inappropriate [embedded specific]
+
+--- /tmp/gstffmpegdec.c	2009-03-05 09:31:15.000000000 +0100
++++ gst-ffmpeg-0.10.6/ext/ffmpeg/gstffmpegdec.c	2009-03-05 09:33:09.000000000 +0100
+@@ -2588,7 +2588,7 @@
+       case CODEC_ID_MSMPEG4V3:
+       case CODEC_ID_H264:
+       case CODEC_ID_COOK:
+-        rank = GST_RANK_PRIMARY;
++        rank = GST_RANK_SECONDARY;
+         break;
+       case CODEC_ID_DVVIDEO:
+         /* we have a good dv decoder, fast on both ppc as well as x86. they say
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg_0.10.13.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg_0.10.13.bb
new file mode 100644
index 0000000..891b10c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-ffmpeg_0.10.13.bb
@@ -0,0 +1,103 @@
+SUMMARY = "FFmpeg-based GStreamer plug-in"
+SECTION = "multimedia"
+LICENSE = "GPLv2+ & LGPLv2+ & ( (GPLv2+ & LGPLv2.1+) | (GPLv3+ & LGPLv3+) )"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://ext/libpostproc/gstpostproc.c;beginline=1;endline=18;md5=5896e445e41681324381f5869ee33d38 \
+                    file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605 \
+                    file://ext/ffmpeg/gstffmpeg.h;beginline=1;endline=18;md5=ff65467b0c53cdfa98d0684c1bc240a9 \
+                    file://gst-libs/ext/libav/LICENSE;md5=abc3b8cb02856aa7823bbbd162d16232 \
+                    file://gst-libs/ext/libav/COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://gst-libs/ext/libav/COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://gst-libs/ext/libav/COPYING.LGPLv2.1;md5=e344c8fa836c3a41c4cbd79d7bd3a379 \
+                    file://gst-libs/ext/libav/COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02"
+LICENSE_FLAGS = "commercial"
+HOMEPAGE = "http://www.gstreamer.net/"
+DEPENDS = "gstreamer gst-plugins-base zlib bzip2 yasm-native libpostproc"
+
+inherit autotools-brokensep pkgconfig
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/${BPN}/${BPN}-${PV}.tar.bz2 \
+           file://lower-rank.diff \
+           file://configure-fix.patch \
+           file://h264_qpel_mmx.patch \
+           file://libav_e500mc.patch \
+           file://libav_e5500.patch \
+           file://gst-ffmpeg-CVE-2013-3674.patch \
+           file://0001-avformat-mpegtsenc-Check-data-array-size-in-mpegts_w.patch \
+           file://0001-vqavideo-check-chunk-sizes-before-reading-chunks.patch \
+           file://0001-avcodec-msrle-use-av_image_get_linesize-to-calculate.patch \
+           file://0001-huffyuvdec-Skip-len-0-cases.patch \
+           file://0001-huffyuvdec-Check-init_vlc-return-codes.patch \
+           file://0001-alsdec-check-block-length.patch \
+           file://0001-pgssubdec-check-RLE-size-before-copying.-Fix-out-of-.patch \
+           file://0001-atrac3dec-Check-coding-mode-against-channels.patch \
+           file://0001-eamad-fix-out-of-array-accesses.patch \
+           file://0001-mjpegdec-check-SE.patch \
+           file://0001-alac-fix-nb_samples-order-case.patch \
+           file://0001-h264-correct-ref-count-check-and-limit-fix-out-of-ar.patch \
+           file://0001-roqvideodec-check-dimensions-validity.patch \
+           file://0001-aacdec-check-channel-count.patch \
+           file://0001-pngdec-filter-dont-access-out-of-array-elements-at-t.patch \
+           file://0001-error_concealment-Check-that-the-picture-is-not-in-a.patch \
+           file://0001-vp3-fix-oob-read-for-negative-tokens-and-memleaks-on.patch \
+           file://0001-vp3-Copy-all-3-frames-for-thread-updates.patch \
+           file://0001-h264_sei-Fix-infinite-loop.patch \
+           file://0001-avcodec-parser-reset-indexes-on-realloc-failure.patch \
+           file://0001-avcodec-rpza-Perform-pointer-advance-and-checks-befo.patch \
+           file://gst-ffmpeg-CVE-2013-0855.patch \
+           file://0001-qdm2dec-fix-buffer-overflow.patch \
+           file://0001-smackerdec-Check-that-the-last-indexes-are-within-th.patch \
+           file://0001-avcodec-dsputil-fix-signedness-in-sizeof-comparissio.patch \
+           file://0001-error-concealment-initialize-block-index.patch \
+           file://0001-qdm2-check-array-index-before-use-fix-out-of-array-a.patch \
+           file://0001-lavf-compute-probe-buffer-size-more-reliably.patch \
+           file://0001-ffserver-set-oformat.patch \
+           file://0001-h264-set-parameters-from-SPS-whenever-it-changes.patch \
+           file://0001-h264-skip-error-concealment-when-SPS-and-slices-are-.patch \
+           file://0001-avcodec-smc-fix-off-by-1-error.patch \
+           file://0002-avcodec-mjpegdec-check-bits-per-pixel-for-changes-si.patch \
+           file://libav-9.patch \
+           file://gst-ffmpeg-fix-CVE-2011-4352.patch \
+           file://gst-ffmpeg-fix-CVE-2014-7933.patch \
+           file://gst-ffmpeg-fix-CVE-2014-8542.patch \
+           file://gst-ffmpeg-fix-CVE-2014-8543.patch \
+           file://gst-ffmpeg-fix-CVE-2014-8544.patch \
+           file://gst-ffmpeg-fix-CVE-2014-8545.patch \
+           file://gst-ffmpeg-fix-CVE-2014-8546.patch \
+           file://gst-ffmpeg-fix-CVE-2014-8547.patch \
+           file://gst-ffmpeg-fix-CVE-2014-9318.patch \
+           file://gst-ffmpeg-fix-CVE-2014-9603.patch \
+"
+
+SRC_URI[md5sum] = "7f5beacaf1312db2db30a026b36888c4"
+SRC_URI[sha256sum] = "76fca05b08e00134e3cb92fa347507f42cbd48ddb08ed3343a912def187fbb62"
+
+PR = "r8"
+
+GSTREAMER_DEBUG ?= "--disable-debug"
+
+FFMPEG_EXTRA_CONFIGURE = "--with-ffmpeg-extra-configure"
+# pass --cpu for powerpc. get cpu name by stripping "ppc" or "ppc64"
+# from DEFAULTTUNE
+FFMPEG_CPU_powerpc = "--cpu=${@d.getVar('DEFAULTTUNE', False)[3:]}"
+FFMPEG_CPU_powerpc64 = "--cpu=${@d.getVar('DEFAULTTUNE', False)[5:]}"
+FFMPEG_EXTRA_CONFIGURE_COMMON_ARG = "--target-os=linux ${FFMPEG_CPU} \
+  --cc='${CC}' --as='${CC}' --ld='${CC}' --nm='${NM}' --ar='${AR}' \
+  --ranlib='${RANLIB}' \
+  ${GSTREAMER_DEBUG}"
+FFMPEG_EXTRA_CONFIGURE_COMMON = \
+'${FFMPEG_EXTRA_CONFIGURE}="${FFMPEG_EXTRA_CONFIGURE_COMMON_ARG}"'
+
+EXTRA_OECONF = "${FFMPEG_EXTRA_CONFIGURE_COMMON}"
+
+PACKAGECONFIG ??= "external-libav"
+PACKAGECONFIG[external-libav] = "--with-system-ffmpeg,,libav"
+PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc"
+
+FILES_${PN} += "${libdir}/gstreamer-0.10/*.so"
+FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug"
+FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la"
+FILES_${PN}-staticdev += "${libdir}/gstreamer-0.10/*.a"
+
+# http://errors.yoctoproject.org/Errors/Details/40736/
+PNBLACKLIST[gst-ffmpeg] ?= "Not compatible with currently used ffmpeg 3"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-fluendo-mp3_0.10.31.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-fluendo-mp3_0.10.31.bb
new file mode 100644
index 0000000..1e2cd2a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-fluendo-mp3_0.10.31.bb
@@ -0,0 +1,14 @@
+require gst-fluendo.inc
+
+SUMMARY = "Fluendo closed-format mp3 GStreamer plug-in"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=259a43dd1c9854b71fc396f74699f4d2"
+LICENSE_FLAGS = "commercial"
+
+GSTREAMER_DEBUG ?= "--disable-debug"
+EXTRA_OECONF += "${GSTREAMER_DEBUG} --with-gstreamer-api=0.10"
+
+acpaths = "-I ${S}/common/m4 -I ${S}/m4"
+
+SRC_URI[md5sum] = "adf0390f3416bb72f91c358528be0c38"
+SRC_URI[sha256sum] = "dae0d0559a4e159c0dd92b7e18de059a5783f8d038904c7de4ca6393f7d55c7d"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-fluendo-mpegdemux_0.10.85.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-fluendo-mpegdemux_0.10.85.bb
new file mode 100644
index 0000000..7bba41a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-fluendo-mpegdemux_0.10.85.bb
@@ -0,0 +1,12 @@
+require gst-fluendo.inc
+
+SUMMARY = "Fluendo MPEG Transport Stream and Program Stream demuxer for GStreamer"
+LICENSE = "MPLv1.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=be282f1c3cc9a98cc0dc5c2b25dfc510 \
+                    file://src/gstmpegdemux.h;beginline=1;endline=19;md5=a9e90033f59897b91664d9f2a2ff01dd"
+LICENSE_FLAGS = "commercial"
+
+acpaths = "-I ${S}/common/m4 -I ${S}/m4"
+
+SRC_URI[md5sum] = "7c4fb993f80b9ae631b11897733f0970"
+SRC_URI[sha256sum] = "df04c91cc8e5d9a892c2492ed989974b4547beaa2a3647649e85113317897424"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-fluendo.inc b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-fluendo.inc
new file mode 100644
index 0000000..7a77d62
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-fluendo.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Fluendo closed-format GStreamer plug-in"
+SECTION = "multimedia"
+HOMEPAGE = "https://core.fluendo.com/gstreamer/trac/wiki"
+DEPENDS = "gstreamer gst-plugins-base zlib"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://core.fluendo.com/gstreamer/src/${BPN}/${BPN}-${PV}.tar.bz2"
+
+FILES_${PN} += "${libdir}/gstreamer-0.10/*.so"
+FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug"
+FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a"
+
+EXTRA_OECONF = "--disable-valgrind"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-meta-base_0.10.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-meta-base_0.10.bb
new file mode 100644
index 0000000..039abe1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-meta-base_0.10.bb
@@ -0,0 +1,73 @@
+SUMMARY = "GStreamer package groups"
+LICENSE = "MIT"
+
+COMMERCIAL_PLUGINS = "${COMMERCIAL_AUDIO_PLUGINS} ${COMMERCIAL_VIDEO_PLUGINS}"
+DEPENDS_UGLY="${@'gst-plugins-ugly' if 'ugly' in COMMERCIAL_PLUGINS.split('-') else ''}"
+DEPENDS_BAD="${@'gst-plugins-bad' if 'bad' in COMMERCIAL_PLUGINS.split('-') else ''}"
+DEPENDS = "gstreamer gst-plugins-base gst-plugins-good ${DEPENDS_UGLY} ${DEPENDS_BAD}"
+
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
+                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+
+PR = "r13"
+
+PACKAGES = "\
+    gst-meta-base \
+    gst-meta-x11-base \
+    gst-meta-audio \
+    gst-meta-debug \
+    gst-meta-video"
+
+ALLOW_EMPTY_gst-meta-base = "1"
+ALLOW_EMPTY_gst-meta-x11-base = "1"
+ALLOW_EMPTY_gst-meta-audio = "1"
+ALLOW_EMPTY_gst-meta-debug = "1"
+ALLOW_EMPTY_gst-meta-video = "1"
+
+RDEPENDS_gst-meta-base = "\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gst-meta-x11-base', '', d)} \
+    gstreamer \
+    gst-plugins-base-playbin \
+    gst-plugins-base-decodebin \
+    gst-plugins-base-decodebin2 \
+    gst-plugins-base-gio \
+    gst-plugins-base-alsa \
+    gst-plugins-base-volume \
+    gst-plugins-base-audioconvert \
+    gst-plugins-base-audioresample \
+    gst-plugins-base-typefindfunctions \
+    gst-plugins-base-videoscale \
+    gst-plugins-base-ffmpegcolorspace \
+    gst-plugins-good-autodetect \
+    gst-plugins-good-souphttpsrc"
+
+RRECOMMENDS_gst-meta-x11-base = "\
+    gst-plugins-base-ximagesink \
+    gst-plugins-base-xvimagesink"
+
+RDEPENDS_gst-meta-audio = "\
+    gst-meta-base \
+    gst-plugins-base-vorbis \
+    gst-plugins-base-ogg \
+    gst-plugins-good-wavparse \
+    gst-plugins-good-flac \
+    ${COMMERCIAL_AUDIO_PLUGINS}"
+
+
+RDEPENDS_gst-meta-debug = "\
+    gst-meta-base \
+    gst-plugins-good-debug \
+    gst-plugins-base-audiotestsrc \
+    gst-plugins-base-videotestsrc"
+
+
+RDEPENDS_gst-meta-video = "\
+    gst-meta-base \
+    gst-plugins-good-avi \
+    gst-plugins-good-matroska \
+    gst-plugins-base-theora \
+    ${COMMERCIAL_VIDEO_PLUGINS}"
+
+RRECOMMENDS_gst-meta-video = "\
+    gst-meta-audio"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-openmax/gcc_4.6.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-openmax/gcc_4.6.patch
new file mode 100644
index 0000000..57a63b5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-openmax/gcc_4.6.patch
@@ -0,0 +1,18 @@
+Upstream-Status: Pending
+
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+
+Index: gst-openmax-0.10.1/omx/gstomx.c
+===================================================================
+--- gst-openmax-0.10.1.orig/omx/gstomx.c	2010-09-30 18:00:24.000000000 -0700
++++ gst-openmax-0.10.1/omx/gstomx.c	2011-05-17 23:08:08.794535872 -0700
+@@ -238,7 +238,8 @@
+     const gchar *element_name = gst_structure_nth_field_name (element_table, i);
+     GstStructure *element = get_element_entry (element_name);
+     const gchar *type_name, *parent_type_name;
+-    const gchar *component_name, *component_role, *library_name;
++    const gchar *component_name, *library_name;
++    const gchar __attribute__((__unused__)) *component_role;
+     GType type;
+     gint rank;
+ 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-openmax/ptr-array.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-openmax/ptr-array.patch
new file mode 100644
index 0000000..5965bba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-openmax/ptr-array.patch
@@ -0,0 +1,46 @@
+Rename static functions that use GLib naming conventions as one of them
+(g_ptr_array_insert) has now been added to GLib.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/omx/gstomx_util.c b/omx/gstomx_util.c
+index 423e441..579dbf5 100644
+--- a/omx/gstomx_util.c
++++ b/omx/gstomx_util.c
+@@ -85,7 +85,7 @@ static gboolean initialized;
+  */
+ 
+ static void
+-g_ptr_array_clear (GPtrArray * array)
++omx_g_ptr_array_clear (GPtrArray * array)
+ {
+   guint index;
+   for (index = 0; index < array->len; index++)
+@@ -93,7 +93,7 @@ g_ptr_array_clear (GPtrArray * array)
+ }
+ 
+ static void
+-g_ptr_array_insert (GPtrArray * array, guint index, gpointer data)
++omx_g_ptr_array_insert (GPtrArray * array, guint index, gpointer data)
+ {
+   if (index + 1 > array->len) {
+     g_ptr_array_set_size (array, index + 1);
+@@ -394,7 +394,7 @@ g_omx_core_unload (GOmxCore * core)
+   }
+ 
+   core_for_each_port (core, g_omx_port_free);
+-  g_ptr_array_clear (core->ports);
++  omx_g_ptr_array_clear (core->ports);
+ }
+ 
+ static inline GOmxPort *
+@@ -418,7 +418,7 @@ g_omx_core_new_port (GOmxCore * core, guint index)
+   }
+ 
+   port = g_omx_port_new (core, index);
+-  g_ptr_array_insert (core->ports, index, port);
++  omx_g_ptr_array_insert (core->ports, index, port);
+ 
+   return port;
+ }
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-openmax_0.10.1.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-openmax_0.10.1.bb
new file mode 100644
index 0000000..2e01579
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-openmax_0.10.1.bb
@@ -0,0 +1,35 @@
+SUMMARY = "GStreamer plug-in for communication with OpenMAX IL components"
+DESCRIPTION = "GstOpenMAX is a GStreamer plug-in that allows \
+communication with OpenMAX Integration Layer (IL) components. OpenMAX \
+IL is an industry standard that provides an abstraction layer for \
+computer graphics, video, and sound routines."
+HOMEPAGE = "http://freedesktop.org/wiki/GstOpenMAX"
+DEPENDS = "gstreamer"
+RDEPENDS_${PN} = "libomxil"
+LICENSE = "LGPLv2.1"
+LICENSE_FLAGS = "commercial"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24 \
+                    file://util/sem.h;beginline=1;endline=20;md5=accce5550d5583b839b441a0623f09fc"
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/gst-openmax/gst-openmax-${PV}.tar.bz2 \
+           file://gcc_4.6.patch \
+           file://ptr-array.patch \
+           "
+
+inherit autotools pkgconfig
+
+# Tell configure that this isn't a development snapshot so we don't want
+# -Werror (hopefully fixed in 0.10.2)
+export GST_CVS="no"
+
+EXTRA_OECONF += "--disable-valgrind"
+
+PR = "r4"
+
+FILES_${PN} += "${libdir}/gstreamer-0.10/libgstomx.so"
+FILES_${PN}-dev += "${libdir}/gstreamer-0.10/libgstomx.la"
+FILES_${PN}-staticdev += "${libdir}/gstreamer-0.10/libgstomx.a"
+FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug/"
+
+SRC_URI[md5sum] = "4d0370bfe99dea20918c84347abadb4e"
+SRC_URI[sha256sum] = "9074d5a0591995133d19cfb15144f19664f902c1623f996595695cf2c2070e1f"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-bad/buffer-overflow-mp4.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-bad/buffer-overflow-mp4.patch
new file mode 100644
index 0000000..235acda
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-bad/buffer-overflow-mp4.patch
@@ -0,0 +1,36 @@
+Description: Fix buffer overflow in mp4 parsing
+Author: Ralph Giles <giles@mozilla.com>
+---
+Backport patch from debian to fix CVE-2015-0797.
+https://sources.debian.net/data/main/g/gst-plugins-bad0.10/0.10.23-7.1+deb7u2/debian/patches/buffer-overflow-mp4.patch
+
+Upstream-Status: Backport
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+--- gst-plugins-bad0.10-0.10.23.orig/gst/videoparsers/gsth264parse.c
++++ gst-plugins-bad0.10-0.10.23/gst/videoparsers/gsth264parse.c
+@@ -384,6 +384,11 @@ gst_h264_parse_wrap_nal (GstH264Parse *
+ 
+   GST_DEBUG_OBJECT (h264parse, "nal length %d", size);
+ 
++  if (size > G_MAXUINT32 - nl) {
++    GST_ELEMENT_ERROR (h264parse, STREAM, FAILED, (NULL),
++        ("overflow in nal size"));
++    return NULL;
++  }
+   buf = gst_buffer_new_and_alloc (size + nl + 4);
+   if (format == GST_H264_PARSE_FORMAT_AVC) {
+     GST_WRITE_UINT32_BE (GST_BUFFER_DATA (buf), size << (32 - 8 * nl));
+@@ -452,6 +457,11 @@ gst_h264_parse_process_nal (GstH264Parse
+     GST_DEBUG_OBJECT (h264parse, "not processing nal size %u", nalu->size);
+     return;
+   }
++  if (G_UNLIKELY (nalu->size > 20 * 1024 * 1024)) {
++    GST_DEBUG_OBJECT (h264parse, "not processing nal size %u (too big)",
++        nalu->size);
++    return;
++  }
+ 
+   /* we have a peek as well */
+   nal_type = nalu->type;
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-bad_0.10.23.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-bad_0.10.23.bb
new file mode 100644
index 0000000..8aad0b7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-bad_0.10.23.bb
@@ -0,0 +1,60 @@
+require gst-plugins.inc
+
+LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+ "
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
+                    file://gst/tta/filters.h;beginline=12;endline=29;md5=629b0c7a665d155a6677778f4460ec06 \
+                    file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605 \
+                    file://gst/tta/crc32.h;beginline=12;endline=29;md5=71a904d99ce7ae0c1cf129891b98145c"
+
+DEPENDS += "gst-plugins-base"
+
+PR = "r4"
+
+SRC_URI += "file://buffer-overflow-mp4.patch"
+
+inherit gettext gsettings
+
+EXTRA_OECONF += "--disable-experimental \
+                 --disable-sdl --disable-cdaudio --disable-directfb \
+                 --disable-vdpau --disable-apexsink"
+
+PACKAGECONFIG ??= "bzip curl \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'rsvg', '', d)}"
+
+PACKAGECONFIG[bzip] = "--enable-bz2,--disable-bz2,bzip2"
+PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl"
+PACKAGECONFIG[rsvg] = "--enable-rsvg,--disable-rsvg,librsvg,"
+PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc"
+PACKAGECONFIG[neon] = "--enable-neon,--disable-neon,neon"
+PACKAGECONFIG[mms] = "--enable-libmms,--disable-libmms,libmms"
+PACKAGECONFIG[cog] = "--enable-cog,--disable-cog,libpng"
+PACKAGECONFIG[faad] = "--enable-faad,--disable-faad,faad2"
+PACKAGECONFIG[jp2k] = "--enable-jp2k,--disable-jp2k,jasper"
+PACKAGECONFIG[modplug] = "--enable-modplug,--disable-modplug,libmodplug"
+PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus"
+PACKAGECONFIG[sndfile] = "--enable-sndfile,--disable-sndfile,libsndfile1"
+PACKAGECONFIG[vp8] = "--enable-vp8,--disable-vp8,libvpx"
+PACKAGECONFIG[ass] = "--enable-assrender,--disable-assrender,libass"
+PACKAGECONFIG[openal] = "--enable-openal,--disable-openal,openal-soft"
+PACKAGECONFIG[schro] = "--enable-schro,--disable-schro,schroedinger"
+PACKAGECONFIG[dc1394] = "--enable-dc1394,--disable-dc1394,libdc1394"
+PACKAGECONFIG[faac] = "--enable-faac,--disable-faac,faac"
+PACKAGECONFIG[rtmp] = "--enable-rtmp,--disable-rtmp,rtmpdump"
+PACKAGECONFIG[voamrwbenc] = "--enable-voamrwbenc,--disable-voamrwbenc,vo-amrwbenc"
+PACKAGECONFIG[voaacenc] = "--enable-voaacenc,--disable-voaacenc,vo-aacenc"
+PACKAGECONFIG[resindvd] = "--enable-resindvd,--disable-resindvd,libdvdnav libdvdread"
+
+ARM_INSTRUCTION_SET = "arm"
+
+PACKAGES =+ "${PN}-resindvd"
+FILES_${PN}-resindvd = "${libdir}/gstreamer-${LIBV}/libresindvd.so"
+FILES_${PN}-dev += "${libdir}/gstreamer-${LIBV}/libresindvd.la"
+FILES_${PN}-voamrwbenc += "${datadir}/gstreamer-${LIBV}/presets/GstVoAmrwbEnc.prs"
+
+do_configure_prepend() {
+	# This m4 file contains nastiness which conflicts with libtool 2.2.2
+	rm ${S}/m4/lib-link.m4 || true
+}
+
+SRC_URI[md5sum] = "fcb09798114461955260e4d940db5987"
+SRC_URI[sha256sum] = "0eae7d1a1357ae8377fded6a1b42e663887beabe0e6cc336e2ef9ada42e11491"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base-0.10.36/audioresample-Fix-build-on-x86-if-emmintrin.h-is-ava.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base-0.10.36/audioresample-Fix-build-on-x86-if-emmintrin.h-is-ava.patch
new file mode 100644
index 0000000..5214256
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base-0.10.36/audioresample-Fix-build-on-x86-if-emmintrin.h-is-ava.patch
@@ -0,0 +1,37 @@
+audioresample: Fix build on x86 if emmintrin.h is available but can't be used
+
+On x86, EMMINTRIN is defined but not usable without SSE so check for
+__SSE__ and __SSE2__ as well.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=670690
+
+Upstream-Status: Backport
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ gst/audioresample/resample.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gst/audioresample/resample.c b/gst/audioresample/resample.c
+index 98d006c..481fa01 100644
+--- a/gst/audioresample/resample.c
++++ b/gst/audioresample/resample.c
+@@ -77,13 +77,13 @@
+ #define EXPORT G_GNUC_INTERNAL
+ 
+ #ifdef _USE_SSE
+-#ifndef HAVE_XMMINTRIN_H
++#if !defined(__SSE__) || !defined(HAVE_XMMINTRIN_H)
+ #undef _USE_SSE
+ #endif
+ #endif
+ 
+ #ifdef _USE_SSE2
+-#ifndef HAVE_EMMINTRIN_H
++#if !defined(__SSE2__) || !defined(HAVE_EMMINTRIN_H)
+ #undef _USE_SSE2
+ #endif
+ #endif
+-- 
+1.7.1
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base-0.10.36/configure.ac-fix-subparse-plugin.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base-0.10.36/configure.ac-fix-subparse-plugin.patch
new file mode 100644
index 0000000..b8602c8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base-0.10.36/configure.ac-fix-subparse-plugin.patch
@@ -0,0 +1,27 @@
+Upstream-Status: Submitted [similar patch by other author, bugzilla]
+Bugtracker-URL: https://bugzilla.gnome.org/show_bug.cgi?id=663600
+
+Prepend PKG_CONFIG_SYSROOT to includedir, so configure doesn't
+search for gstconfig.h in /usr/include.
+
+Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
+---
+ configure.ac |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 1901bcf..460fb0a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -435,7 +435,7 @@ AG_GST_CHECK_PLUGIN(volume)
+ dnl check for gstreamer core features (subsystems)
+ dnl FIXME: this assumes srcdir == builddir for uninstalled setups
+ GST_CONFIGPATH=`$PKG_CONFIG --variable=includedir gstreamer-0.10`"/gst/gstconfig.h"
+-AG_GST_PARSE_SUBSYSTEM_DISABLES($GST_CONFIGPATH)
++AG_GST_PARSE_SUBSYSTEM_DISABLES($PKG_CONFIG_SYSROOT_DIR$GST_CONFIGPATH)
+ AM_CONDITIONAL(USE_XML, test $GST_DISABLE_XML != "1")
+ 
+ dnl disable plug-ins that require libxml2's HTML support if it is not available
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base-0.10.36/gst-plugins-base-tremor.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base-0.10.36/gst-plugins-base-tremor.patch
new file mode 100644
index 0000000..99dbc9d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base-0.10.36/gst-plugins-base-tremor.patch
@@ -0,0 +1,20 @@
+Remove -DTREMOR option since Tremor has dropped its internal
+libogg2, and gst-plugins-base has dependency on that.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
+Signed-off-by: Shane Wang <shane.wang@intel.com>
+
+diff -r 70065fb4e085 ext/vorbis/Makefile.am
+--- a/ext/vorbis/Makefile.am	Tue Mar 13 16:36:56 2012 +0800
++++ b/ext/vorbis/Makefile.am	Tue Mar 13 16:38:53 2012 +0800
+@@ -30,7 +30,7 @@
+ 	gstvorbisdec.c gstvorbisdeclib.c gstvorbiscommon.c
+ libgstivorbisdec_la_CFLAGS = \
+ 	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+-	-DTREMOR $(IVORBIS_CFLAGS)
++	$(IVORBIS_CFLAGS)
+ libgstivorbisdec_la_LIBADD = \
+ 	$(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_MAJORMINOR@.la \
+ 	$(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_MAJORMINOR@.la \
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base_0.10.36.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base_0.10.36.bb
new file mode 100644
index 0000000..c86834f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-base_0.10.36.bb
@@ -0,0 +1,43 @@
+require gst-plugins.inc
+
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
+                    file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=622921ffad8cb18ab906c56052788a3f \
+                    file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605 \
+                    file://gst/ffmpegcolorspace/utils.c;beginline=1;endline=20;md5=9c83a200b8e597b26ca29df20fc6ecd0"
+
+DEPENDS += "alsa-lib libogg libvorbis libtheora util-linux tremor glib-2.0-native"
+
+SRC_URI += "file://gst-plugins-base-tremor.patch \
+            file://configure.ac-fix-subparse-plugin.patch \
+            file://audioresample-Fix-build-on-x86-if-emmintrin.h-is-ava.patch \
+"
+
+SRC_URI[md5sum] = "776c73883e567f67b9c4a2847d8d041a"
+SRC_URI[sha256sum] = "2cd3b0fa8e9b595db8f514ef7c2bdbcd639a0d63d154c00f8c9b609321f49976"
+
+PR = "r8"
+
+inherit gettext
+
+EXTRA_OECONF += "--disable-freetypetest"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+
+PACKAGECONFIG[gnomevfs] = "--enable-gnome_vfs,--disable-gnome_vfs,gnome-vfs"
+PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc"
+PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango"
+PACKAGECONFIG[x11] = "--enable-x --enable-xvideo,--disable-x --disable-xvideo,virtual/libx11 libxv libsm libice"
+PACKAGECONFIG[cdparanoia] = "--enable-cdparanoia,--disable-cdparanoia,cdparanoia"
+
+do_configure_prepend() {
+	# This m4 file contains nastiness which conflicts with libtool 2.2.2
+	rm -f ${S}/m4/lib-link.m4
+}
+
+FILES_${PN} += "${datadir}/${BPN}"
+
+CACHED_CONFIGUREVARS_append_x86 = " ac_cv_header_emmintrin_h=no ac_cv_header_xmmintrin_h=no"
+
+# /usr/bin/gst-visualise-0.10 is a perl script.
+RDEPENDS_${PN}-apps += "perl"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-gl/0001-conditional-gl-framebuffer-undefined-use.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-gl/0001-conditional-gl-framebuffer-undefined-use.patch
new file mode 100644
index 0000000..bc2f88b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-gl/0001-conditional-gl-framebuffer-undefined-use.patch
@@ -0,0 +1,35 @@
+From 14d51cbefef19737e7ab2b6818ee1d3bdb248d12 Mon Sep 17 00:00:00 2001
+From: Jeremy Stashluk <jstashluk@dekaresearch.com>
+Date: Wed, 6 Feb 2013 09:59:48 -0500
+Subject: [PATCH] conditional gl framebuffer undefined use
+
+The OpenGL extension GL_ARB_framebuffer_object defines the macro
+GL_FRAMEBUFFER_UNDEFINED. The macro will only need to map to an error
+string if the extension provides functions that might return the macro.
+
+Upstream-Status: Pending
+
+Signed-off-by: Jeremy Stashluk <jstashluk@dekaresearch.com>
+---
+ gst-libs/gst/gl/gstgldisplay.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/gst-libs/gst/gl/gstgldisplay.c b/gst-libs/gst/gl/gstgldisplay.c
+index 3ed0b71..64c6c2c 100644
+--- a/gst-libs/gst/gl/gstgldisplay.c
++++ b/gst-libs/gst/gl/gstgldisplay.c
+@@ -2177,9 +2177,11 @@ gst_gl_display_check_framebuffer_status (void)
+       GST_ERROR ("GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS");
+       break;
+ 
++#if defined(GL_ARB_framebuffer_object)
+     case GL_FRAMEBUFFER_UNDEFINED:
+       GST_ERROR ("GL_FRAMEBUFFER_UNDEFINED");
+       break;
++#endif
+ 
+     default:
+       GST_ERROR ("General FBO error");
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-gl_0.10.3.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-gl_0.10.3.bb
new file mode 100644
index 0000000..6859f33
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-gl_0.10.3.bb
@@ -0,0 +1,25 @@
+require gst-plugins.inc
+
+LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+ "
+LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
+
+SRC_URI[md5sum] = "ac70ede13f79978d56eaed8abaa3c938"
+SRC_URI[sha256sum] = "48340b6a4b8abce16344a7bc33e74a94fdcce4f57ef6342cdf2f941c429bf210"
+
+SRC_URI += " file://0001-conditional-gl-framebuffer-undefined-use.patch"
+
+DEPENDS += "gst-plugins-base virtual/libgles2 virtual/egl jpeg libpng glew"
+
+PR = "r4"
+
+inherit gettext
+
+# This package doesn't have a configure switch for EGL or GL, so forcibly tell
+# configure that it can't find gl.h so it always uses EGL.  If/when we have some
+# way for machines to specify their preferred GL flavour this can be
+# automatically adapted.
+EXTRA_OECONF += "ac_cv_header_GL_gl_h=no"
+
+ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY_${PN}-apps = "1"
+ALLOW_EMPTY_${PN}-glib = "1"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good-0.10.31/0001-v4l2-fix-build-with-recent-kernels-the-v4l2_buffer-i.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good-0.10.31/0001-v4l2-fix-build-with-recent-kernels-the-v4l2_buffer-i.patch
new file mode 100644
index 0000000..6456d3c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good-0.10.31/0001-v4l2-fix-build-with-recent-kernels-the-v4l2_buffer-i.patch
@@ -0,0 +1,33 @@
+From 12d18fe4e98e7c232d59b56d529a0521f293fe6d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Wed, 5 Sep 2012 18:54:42 +0200
+Subject: [PATCH] v4l2: fix build with recent kernels, the v4l2_buffer input
+ field was removed
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Backport
+
+[1] http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=9f2aa8d47f835ea155aaf635f618c0fc1ca87012
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ sys/v4l2/gstv4l2bufferpool.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c
+index b81c6a4..51cc0ce 100644
+--- a/sys/v4l2/gstv4l2bufferpool.c
++++ b/sys/v4l2/gstv4l2bufferpool.c
+@@ -181,7 +181,6 @@ gst_v4l2_buffer_new (GstV4l2BufferPool * pool, guint index, GstCaps * caps)
+     GST_LOG_OBJECT (pool->v4l2elem, "  MMAP offset:  %u",
+         ret->vbuffer.m.offset);
+   GST_LOG_OBJECT (pool->v4l2elem, "  length:    %u", ret->vbuffer.length);
+-  GST_LOG_OBJECT (pool->v4l2elem, "  input:     %u", ret->vbuffer.input);
+ 
+   data = (guint8 *) v4l2_mmap (0, ret->vbuffer.length,
+       PROT_READ | PROT_WRITE, MAP_SHARED, pool->video_fd,
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good-0.10.31/0001-v4l2_calls-define-V4L2_CID_HCENTER-and-V4L2_CID_VCEN.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good-0.10.31/0001-v4l2_calls-define-V4L2_CID_HCENTER-and-V4L2_CID_VCEN.patch
new file mode 100644
index 0000000..bd0de58
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good-0.10.31/0001-v4l2_calls-define-V4L2_CID_HCENTER-and-V4L2_CID_VCEN.patch
@@ -0,0 +1,45 @@
+From ccb01de8096a32d86d47b0d92ec3416c57ee4d25 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@windriver.com>
+Date: Thu, 22 Aug 2013 12:15:54 -0400
+Subject: [PATCH] v4l2_calls: define V4L2_CID_HCENTER and V4L2_CID_VCENTER
+
+kernel commit 24b9f5017 [[media] V4L: Remove deprecated image centering controls]
+removed the definitions of V4L2_CID_HCENTER and V4L2_CID_VCENTER after three
+years of depreciation.
+
+The ioctl values are still free, and the case statement which processess them
+in v4l2 userspace falls through to the proper replacement. So in the short
+term, we can explicitly define them using the old absolute values, and everything
+will work.
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
+---
+ sys/v4l2/v4l2_calls.c |    9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c
+index 309bfb6..3c64544 100644
+--- a/sys/v4l2/v4l2_calls.c
++++ b/sys/v4l2/v4l2_calls.c
+@@ -54,11 +54,16 @@
+ #include "gst/gst-i18n-plugin.h"
+ 
+ /* Those are ioctl calls */
++
++/* V4L2_CID_HCENTER has been removed from the mainline kernel, but
++   the ioctl space is still present. Since these values fall through
++   to their replacement, it is safe (in the short term) to re-use the
++    old values explictily */
+ #ifndef V4L2_CID_HCENTER
+-#define V4L2_CID_HCENTER V4L2_CID_HCENTER_DEPRECATED
++#define V4L2_CID_HCENTER V4L2_CID_BASE+22
+ #endif
+ #ifndef V4L2_CID_VCENTER
+-#define V4L2_CID_VCENTER V4L2_CID_VCENTER_DEPRECATED
++#define V4L2_CID_VCENTER V4L2_CID_BASE+23
+ #endif
+ 
+ GST_DEBUG_CATEGORY_EXTERN (v4l2_debug);
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good-0.10.31/0407-mulawdec-fix-integer-overrun.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good-0.10.31/0407-mulawdec-fix-integer-overrun.patch
new file mode 100644
index 0000000..48b8e98
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good-0.10.31/0407-mulawdec-fix-integer-overrun.patch
@@ -0,0 +1,47 @@
+From ce94b2c2b91b6db190c121860e12a6afafce7ae1 Mon Sep 17 00:00:00 2001
+From: Roland Krikava <rkrikava@gmail.com>
+Date: Fri, 2 Nov 2012 12:38:44 -0400
+Subject: [PATCH 407/440] mulawdec: fix integer overrun
+
+There might be more than 65535 samples in a chunk of data.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=687469
+
+Commit - 3be45f70220310ec1c60d819f90b5f2ae03b5d83 in 0.10 branch
+
+Upstream Status:  Backported
+
+Signed-off-by: Roland Krikava <rkrikava@gmail.com>
+---
+ gst/law/mulaw-conversion.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/gst/law/mulaw-conversion.c b/gst/law/mulaw-conversion.c
+index 8afae80..190a9f5 100644
+--- a/gst/law/mulaw-conversion.c
++++ b/gst/law/mulaw-conversion.c
+@@ -51,9 +51,10 @@ mulaw_encode (gint16 * in, guint8 * out, gint numsamples)
+     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
+   };
+-  gint16 sign, exponent, mantissa, i;
++  gint16 sign, exponent, mantissa;
+   gint16 sample;
+   guint8 ulawbyte;
++  gint i;
+ 
+   for (i = 0; i < numsamples; i++) {
+     sample = in[i];
+@@ -102,7 +103,8 @@ mulaw_decode (guint8 * in, gint16 * out, gint numsamples)
+   static gint16 exp_lut[8] = { 0, 132, 396, 924, 1980, 4092, 8316, 16764 };
+   gint16 sign, exponent, mantissa;
+   guint8 ulawbyte;
+-  gint16 linear, i;
++  gint16 linear;
++  gint i;
+ 
+   for (i = 0; i < numsamples; i++) {
+     ulawbyte = in[i];
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good_0.10.31.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good_0.10.31.bb
new file mode 100644
index 0000000..d922895
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-good_0.10.31.bb
@@ -0,0 +1,48 @@
+require gst-plugins.inc
+
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+                    file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=622921ffad8cb18ab906c56052788a3f \
+                    file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
+
+PR = "r8"
+
+PACKAGECONFIG ?= "jpeg v4l \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \
+"
+PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio"
+PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
+PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
+PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack"
+PACKAGECONFIG[gdkpixbuf] = "--enable-gdk_pixbuf,--disable-gdk_pixbuf,gdk-pixbuf"
+PACKAGECONFIG[v4l] = "--enable-gst_v4l2 --with-gudev,--disable-gst_v4l2 --without-gudev,libgudev"
+# sub-feature of v4l, but control separately since libv4l is not part of oe-core
+PACKAGECONFIG[libv4l] = "--with-libv4l2,--without-libv4l2,libv4l"
+PACKAGECONFIG[bzip2] = "--enable-bz2,--disable-bz2,bzip2"
+PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc"
+PACKAGECONFIG[x11] = "--enable-x,--disable-x,virtual/libx11 libxfixes libxdamage"
+PACKAGECONFIG[dv1394] = "--enable-dv1394,--disable-dv1394,libraw1394 libiec61883 libavc1394"
+
+DEPENDS += "gst-plugins-base gconf cairo libpng zlib libid3tag flac \
+            speex libsoup-2.4 libcap"
+
+inherit gettext gconf
+
+SRC_URI += "file://0001-v4l2-fix-build-with-recent-kernels-the-v4l2_buffer-i.patch \
+            file://0001-v4l2_calls-define-V4L2_CID_HCENTER-and-V4L2_CID_VCEN.patch \
+            file://0407-mulawdec-fix-integer-overrun.patch \
+"
+EXTRA_OECONF += "--disable-aalib --disable-esd --disable-shout2 --disable-libcaca --disable-hal \
+                 --disable-examples --disable-taglib"
+
+do_configure_prepend() {
+	# This m4 file contains nastiness which conflicts with libtool 2.2.2
+	rm ${S}/m4/lib-link.m4 || true
+}
+
+SRC_URI[md5sum] = "24f98a294a2b521e1b29412bdadae2e6"
+SRC_URI[sha256sum] = "7e27840e40a7932ef2dc032d7201f9f41afcaf0b437daf5d1d44dc96d9e35ac6"
+
+FILES_${PN}-gconfelements += "${sysconfdir}/gconf/schemas/gstreamer-0.10.schemas"
+FILES_${PN}-equalizer += "${datadir}/gstreamer-0.10/presets/*.prs"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-ugly/0001-cdio-compensate-for-libcdio-s-recent-cd-text-api-cha.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-ugly/0001-cdio-compensate-for-libcdio-s-recent-cd-text-api-cha.patch
new file mode 100644
index 0000000..1f72fc0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-ugly/0001-cdio-compensate-for-libcdio-s-recent-cd-text-api-cha.patch
@@ -0,0 +1,193 @@
+From 649bd92cd2600719862ad5189899212409dd0a67 Mon Sep 17 00:00:00 2001
+From: Leon Merten Lohse <leon@green-side.de>
+Date: Thu, 3 May 2012 23:50:30 +0100
+Subject: [PATCH] cdio: compensate for libcdio's recent cd-text api changes
+
+https://bugzilla.gnome.org/show_bug.cgi?id=675112
+
+Conflicts:
+
+	ext/cdio/gstcdiocddasrc.c
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+
+Upstream-Status: Backport
+---
+ ext/cdio/gstcdio.c        | 35 ++++++++++++++++++++++++++++-------
+ ext/cdio/gstcdio.h        | 16 ++++++++++++++++
+ ext/cdio/gstcdiocddasrc.c | 19 +++++++++++++++++++
+ 3 files changed, 63 insertions(+), 7 deletions(-)
+
+diff --git a/ext/cdio/gstcdio.c b/ext/cdio/gstcdio.c
+index 2f58d18..483ebf5 100644
+--- a/ext/cdio/gstcdio.c
++++ b/ext/cdio/gstcdio.c
+@@ -30,12 +30,16 @@
+ GST_DEBUG_CATEGORY (gst_cdio_debug);
+ 
+ void
+-gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext,
++gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext, track_t track,
+     cdtext_field_t field, const gchar * gst_tag, GstTagList ** p_tags)
+ {
+   const gchar *txt;
+ 
++#if LIBCDIO_VERSION_NUM > 83
++  txt = cdtext_get_const (cdtext, field, track);
++#else
+   txt = cdtext_get_const (field, cdtext);
++#endif
+   if (txt == NULL || *txt == '\0') {
+     GST_DEBUG_OBJECT (src, "empty CD-TEXT field %u (%s)", field, gst_tag);
+     return;
+@@ -57,6 +61,12 @@ gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext,
+ }
+ 
+ GstTagList *
++#if LIBCDIO_VERSION_NUM > 83
++gst_cdio_get_cdtext (GstObject * src, cdtext_t * t, track_t track)
++{
++  GstTagList *tags = NULL;
++
++#else
+ gst_cdio_get_cdtext (GstObject * src, CdIo * cdio, track_t track)
+ {
+   GstTagList *tags = NULL;
+@@ -67,14 +77,22 @@ gst_cdio_get_cdtext (GstObject * src, CdIo * cdio, track_t track)
+     GST_DEBUG_OBJECT (src, "no CD-TEXT for track %u", track);
+     return NULL;
+   }
++#endif
+ 
+-  gst_cdio_add_cdtext_field (src, t, CDTEXT_PERFORMER, GST_TAG_ARTIST, &tags);
+-  gst_cdio_add_cdtext_field (src, t, CDTEXT_TITLE, GST_TAG_TITLE, &tags);
++  gst_cdio_add_cdtext_field (src, t, track, CDTEXT_FIELD_PERFORMER,
++      GST_TAG_ARTIST, &tags);
++  gst_cdio_add_cdtext_field (src, t, track, CDTEXT_FIELD_TITLE, GST_TAG_TITLE,
++      &tags);
+ 
+   return tags;
+ }
+ 
+ void
++#if LIBCDIO_VERSION_NUM > 83
++gst_cdio_add_cdtext_album_tags (GstObject * src, cdtext_t * t,
++    GstTagList * tags)
++{
++#else
+ gst_cdio_add_cdtext_album_tags (GstObject * src, CdIo * cdio, GstTagList * tags)
+ {
+   cdtext_t *t;
+@@ -84,11 +102,14 @@ gst_cdio_add_cdtext_album_tags (GstObject * src, CdIo * cdio, GstTagList * tags)
+     GST_DEBUG_OBJECT (src, "no CD-TEXT for album");
+     return;
+   }
++#endif
+ 
+-  /* FIXME: map CDTEXT_PERFORMER to GST_TAG_ALBUM_ARTIST once we have that */
+-  gst_cdio_add_cdtext_field (src, t, CDTEXT_TITLE, GST_TAG_ALBUM, &tags);
+-  gst_cdio_add_cdtext_field (src, t, CDTEXT_GENRE, GST_TAG_GENRE, &tags);
+-
++  gst_cdio_add_cdtext_field (src, t, 0, CDTEXT_FIELD_PERFORMER,
++      GST_TAG_ALBUM_ARTIST, &tags);
++  gst_cdio_add_cdtext_field (src, t, 0, CDTEXT_FIELD_TITLE, GST_TAG_ALBUM,
++      &tags);
++  gst_cdio_add_cdtext_field (src, t, 0, CDTEXT_FIELD_GENRE, GST_TAG_GENRE,
++      &tags);
+   GST_DEBUG ("CD-TEXT album tags: %" GST_PTR_FORMAT, tags);
+ }
+ 
+diff --git a/ext/cdio/gstcdio.h b/ext/cdio/gstcdio.h
+index ef31ed0..c6da580 100644
+--- a/ext/cdio/gstcdio.h
++++ b/ext/cdio/gstcdio.h
+@@ -24,22 +24,38 @@
+ #include <gst/gst.h>
+ #include <cdio/cdio.h>
+ #include <cdio/cdtext.h>
++#include <cdio/version.h>
++
++#if LIBCDIO_VERSION_NUM <= 83
++  #define CDTEXT_FIELD_PERFORMER CDTEXT_PERFORMER
++  #define CDTEXT_FIELD_GENRE     CDTEXT_GENRE
++  #define CDTEXT_FIELD_TITLE     CDTEXT_TITLE
++#endif
+ 
+ GST_DEBUG_CATEGORY_EXTERN (gst_cdio_debug);
+ #define GST_CAT_DEFAULT gst_cdio_debug
+ 
+ void     gst_cdio_add_cdtext_field (GstObject      * src,
+                                     cdtext_t       * cdtext,
++                                    track_t          track,
+                                     cdtext_field_t   field,
+                                     const gchar    * gst_tag,
+                                     GstTagList    ** p_tags);
+ 
+ GstTagList  * gst_cdio_get_cdtext  (GstObject      * src,
++#if LIBCDIO_VERSION_NUM > 83
++                                    cdtext_t       * t,
++#else
+                                     CdIo           * cdio,
++#endif
+                                     track_t          track);
+ 
+ void      gst_cdio_add_cdtext_album_tags (GstObject  * src,
++#if LIBCDIO_VERSION_NUM > 83
++                                          cdtext_t   * t,
++#else
+                                           CdIo       * cdio,
++#endif
+                                           GstTagList * tags);
+ 
+ #endif /* __GST_CDIO_H__ */
+diff --git a/ext/cdio/gstcdiocddasrc.c b/ext/cdio/gstcdiocddasrc.c
+index 615a0c8..830839e 100644
+--- a/ext/cdio/gstcdiocddasrc.c
++++ b/ext/cdio/gstcdiocddasrc.c
+@@ -206,6 +206,9 @@ gst_cdio_cdda_src_open (GstAudioCdSrc * audiocdsrc, const gchar * device)
+   GstCdioCddaSrc *src;
+   discmode_t discmode;
+   gint first_track, num_tracks, i;
++#if LIBCDIO_VERSION_NUM > 83
++  cdtext_t *cdtext;
++#endif
+ 
+   src = GST_CDIO_CDDA_SRC (audiocdsrc);
+ 
+@@ -244,8 +244,18 @@ gst_cdio_cdda_src_open (GstCddaBaseSrc * cddabasesrc, const gchar * device)
+   if (src->read_speed != -1)
+     cdio_set_speed (src->cdio, src->read_speed);
+ 
++#if LIBCDIO_VERSION_NUM > 83
++  cdtext = cdio_get_cdtext (src->cdio);
++
++  if (NULL == cdtext)
++    GST_DEBUG_OBJECT (src, "no CD-TEXT on disc");
++  else
++    gst_cdio_add_cdtext_album_tags (GST_OBJECT_CAST (src), cdtext,
++        cddabasesrc->tags);
++#else
+   gst_cdio_add_cdtext_album_tags (GST_OBJECT_CAST (src), src->cdio,
+       cddabasesrc->tags);
++#endif
+ 
+   GST_LOG_OBJECT (src, "%u tracks, first track: %d", num_tracks, first_track);
+ 
+@@ -250,8 +263,14 @@ gst_cdio_cdda_src_open (GstAudioCdSrc * audiocdsrc, const gchar * device)
+      * the right thing here (for cddb id calculations etc. as well) */
+     track.start = cdio_get_track_lsn (src->cdio, i + first_track);
+     track.end = track.start + len_sectors - 1;  /* -1? */
++#if LIBCDIO_VERSION_NUM > 83
++    if (NULL != cdtext)
++      track.tags = gst_cdio_get_cdtext (GST_OBJECT (src), cdtext,
++          i + first_track);
++#else
+     track.tags = gst_cdio_get_cdtext (GST_OBJECT (src), src->cdio,
+         i + first_track);
++#endif
+ 
+     gst_audio_cd_src_add_track (GST_AUDIO_CD_SRC (src), &track);
+   }
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-ugly/0002-Fix-opencore-include-paths.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-ugly/0002-Fix-opencore-include-paths.patch
new file mode 100644
index 0000000..3fd6a26
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-ugly/0002-Fix-opencore-include-paths.patch
@@ -0,0 +1,58 @@
+From e634bc6420826f760f6519a9f134c6a4d3412ef8 Mon Sep 17 00:00:00 2001
+From: Carlos Rafael Giani <dv@pseudoterminal.org>
+Date: Mon, 19 Oct 2015 15:26:24 +0200
+Subject: [PATCH] Fix opencore include paths
+
+Upstream-Status: Inappropriate [no upstream - GStreamer 0.10 is no longer being maintained]
+
+Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
+---
+ ext/amrnb/amrnbdec.h    | 2 +-
+ ext/amrnb/amrnbenc.h    | 2 +-
+ ext/amrwbdec/amrwbdec.h | 4 ++--
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/ext/amrnb/amrnbdec.h b/ext/amrnb/amrnbdec.h
+index 1e81839..01b7154 100644
+--- a/ext/amrnb/amrnbdec.h
++++ b/ext/amrnb/amrnbdec.h
+@@ -22,7 +22,7 @@
+ 
+ #include <gst/gst.h>
+ #include <gst/audio/gstaudiodecoder.h>
+-#include <interf_dec.h>
++#include <opencore-amrnb/interf_dec.h>
+ 
+ G_BEGIN_DECLS
+ 
+diff --git a/ext/amrnb/amrnbenc.h b/ext/amrnb/amrnbenc.h
+index 7f673ac..5be39b5 100644
+--- a/ext/amrnb/amrnbenc.h
++++ b/ext/amrnb/amrnbenc.h
+@@ -21,7 +21,7 @@
+ #define __GST_AMRNBENC_H__
+ 
+ #include <gst/gst.h>
+-#include <interf_enc.h>
++#include <opencore-amrnb/interf_enc.h>
+ #include <gst/audio/gstaudioencoder.h>
+ 
+ G_BEGIN_DECLS
+diff --git a/ext/amrwbdec/amrwbdec.h b/ext/amrwbdec/amrwbdec.h
+index c3528fc..f27c6d2 100644
+--- a/ext/amrwbdec/amrwbdec.h
++++ b/ext/amrwbdec/amrwbdec.h
+@@ -22,8 +22,8 @@
+ 
+ #include <gst/gst.h>
+ #include <gst/audio/gstaudiodecoder.h>
+-#include <dec_if.h>
+-#include <if_rom.h>
++#include <opencore-amrwb/dec_if.h>
++#include <opencore-amrwb/if_rom.h>
+ 
+ G_BEGIN_DECLS
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-ugly_0.10.19.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-ugly_0.10.19.bb
new file mode 100644
index 0000000..a8cb852
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins-ugly_0.10.19.bb
@@ -0,0 +1,35 @@
+require gst-plugins.inc
+
+LICENSE = "GPLv2+ & LGPLv2.1+ & LGPLv2+"
+LICENSE_FLAGS = "commercial"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+                    file://gst/synaesthesia/synaescope.h;beginline=1;endline=20;md5=99f301df7b80490c6ff8305fcc712838 \
+                    file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068 \
+                    file://gst/mpegstream/gstmpegparse.h;beginline=1;endline=18;md5=ff65467b0c53cdfa98d0684c1bc240a9"
+
+DEPENDS += "gst-plugins-base libid3tag libmad mpeg2dec liba52 lame"
+PR = "r3"
+
+inherit gettext
+
+EXTRA_OECONF += "--with-plugins=a52dec,lame,id3tag,mad,mpeg2dec,mpegstream,mpegaudioparse,asfdemux,realmedia \
+                 --disable-orc"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[x264] = "--enable-x264,--disable-x264,x264"
+PACKAGECONFIG[cdio] = "--enable-cdio,--disable-cdio,libcdio"
+PACKAGECONFIG[dvdread] = "--enable-dvdread,--disable-dvdread,libdvdread"
+PACKAGECONFIG[amrnb] = "--enable-amrnb,--disable-amrnb,opencore-amr"
+PACKAGECONFIG[amrwb] = "--enable-amrwb,--disable-amrwb,opencore-amr"
+
+do_configure_prepend() {
+	# This m4 file contains nastiness which conflicts with libtool 2.2.2
+	rm ${S}/m4/lib-link.m4 || true
+}
+
+SRC_URI[md5sum] = "1d81c593e22a6cdf0f2b4f57eae93df2"
+SRC_URI[sha256sum] = "1ca90059275c0f5dca71d4d1601a8f429b7852baed0723e820703b977e2c8df0"
+SRC_URI += "file://0001-cdio-compensate-for-libcdio-s-recent-cd-text-api-cha.patch \
+            file://0002-Fix-opencore-include-paths.patch"
+
+FILES_${PN}-amrnb += "${datadir}/gstreamer-0.10/presets/GstAmrnbEnc.prs"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins.inc b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins.inc
new file mode 100644
index 0000000..68a70b1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-plugins.inc
@@ -0,0 +1,29 @@
+SUMMARY = "Plugins for the GStreamer multimedia framework"
+HOMEPAGE = "http://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
+SECTION = "multimedia"
+DEPENDS = "gstreamer"
+
+# gobject-introspection to get --disable-introspection into UNKNOWN_CONFIGURE_WHITELIST
+inherit autotools pkgconfig gobject-introspection
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/${BPN}/${BPN}-${PV}.tar.bz2"
+
+GSTREAMER_DEBUG ?= "--disable-debug"
+EXTRA_OECONF = "--disable-valgrind ${GSTREAMER_DEBUG} --disable-examples --disable-introspection"
+
+acpaths = "-I ${S}/common/m4 -I ${S}/m4"
+
+LIBV = "0.10"
+require recipes-multimedia/gstreamer/gst-plugins-package.inc
+
+PACKAGES_DYNAMIC += "^${PN}-.*"
+
+# apply gstreamer hack after Makefile.in.in in source is replaced by our version from
+# ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in, but before configure is executed
+# http://lists.linuxtogo.org/pipermail/openembedded-core/2012-November/032233.html
+oe_runconf_prepend() {
+	if [ -e ${S}/po/Makefile.in.in ]; then
+		sed -i -e "1a\\" -e 'GETTEXT_PACKAGE = @GETTEXT_PACKAGE@' ${S}/po/Makefile.in.in
+	fi
+}
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-rtsp/0001-change-deprecated-INCLUDES-to-AM_CPPFLAGS-for-automa.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-rtsp/0001-change-deprecated-INCLUDES-to-AM_CPPFLAGS-for-automa.patch
new file mode 100644
index 0000000..3afca4e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-rtsp/0001-change-deprecated-INCLUDES-to-AM_CPPFLAGS-for-automa.patch
@@ -0,0 +1,34 @@
+index gst-rtsp_0.10.8/bindings/python/Makefile.am
+--- gst-rtsp_0.10.8.orig/bindings/python/Makefile.am
++++ gst-rtsp_0.10.8/bindings/python/Makefile.am
+@@ -14,7 +14,7 @@ defs_DATA = $(DEFS)
+ defsdir = $(pkgdatadir)/$(GST_MAJORMINOR)/defs
+ OVERRIDES = rtspserver.override
+
+-INCLUDES = -I$(top_srcdir) -I$(srcdir) $(PYTHON_INCLUDES)
++AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir) $(PYTHON_INCLUDES)
+
+ rtspserver_la_CFLAGS = -I$(top_srcdir)/src \
+         $(PYGOBJECT_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
+index gst-rtsp_0.10.8/examples/Makefile.am
+--- gst-rtsp_0.10.8.orig/examples/Makefile.am
++++ gst-rtsp_0.10.8/examples/Makefile.am
+@@ -1,6 +1,6 @@
+ noinst_PROGRAMS = test-video test-ogg test-mp4 test-readme test-launch test-sdp test-uri test-auth
+
+-INCLUDES = -I$(top_srcdir) -I$(srcdir)
++AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir)
+
+ AM_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
+ AM_LDFLAGS = \
+index gst-rtsp_0.10.8/tests/Makefile.am
+--- gst-rtsp_0.10.8.orig/tests/Makefile.am
++++ gst-rtsp_0.10.8/tests/Makefile.am
+@@ -1,6 +1,6 @@
+ noinst_PROGRAMS = test-cleanup
+
+-INCLUDES = -I$(top_srcdir) -I$(srcdir)
++AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir)
+
+ AM_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
+ AM_LDFLAGS = \
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-rtsp_0.10.8.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-rtsp_0.10.8.bb
new file mode 100644
index 0000000..b78bcaf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gst-rtsp_0.10.8.bb
@@ -0,0 +1,18 @@
+SUMMARY = "GStreamer RTSP server"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/${BPN}/${BPN}-${PV}.tar.bz2 \
+           file://0001-change-deprecated-INCLUDES-to-AM_CPPFLAGS-for-automa.patch"
+SRC_URI[md5sum] = "b511af07000595f63c3a705946221643"
+SRC_URI[sha256sum] = "9915887cf8515bda87462c69738646afb715b597613edc7340477ccab63a6617"
+
+DEPENDS = "gst-plugins-base gstreamer"
+
+EXTRA_OECONF = "--disable-introspection"
+
+# Configure always checks for Python so inherit pythonnative. Better solution
+# would be to disable the checks entirely.
+inherit autotools pythonnative gettext
+
+FILES_${PN}-dev += "${datadir}/vala/vapi/"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/0001-baseparse-Fix-self-comparison-always-evaluates-to-tr.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/0001-baseparse-Fix-self-comparison-always-evaluates-to-tr.patch
new file mode 100644
index 0000000..d077496
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/0001-baseparse-Fix-self-comparison-always-evaluates-to-tr.patch
@@ -0,0 +1,32 @@
+From ed7f4802222234eef192aa3f74bc92268f338f97 Mon Sep 17 00:00:00 2001
+From: Sebastian Droege <sebastian.droege@collabora.co.uk>
+Date: Tue, 6 Mar 2012 12:28:02 +0100
+Subject: [PATCH] baseparse: Fix 'self-comparison always evaluates to true'
+
+This was really a bug.
+
+Commit is ed7f4802222234eef192aa3f74bc92268f338f97 in 0.10 branch
+
+Upstream Status:  Backported
+
+Signed-off-by: Sebastian Droege <sebastian.droege@collabora.co.uk>
+---
+ libs/gst/base/gstbaseparse.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c
+index 851ec1d..108ee89 100644
+--- a/libs/gst/base/gstbaseparse.c
++++ b/libs/gst/base/gstbaseparse.c
+@@ -3899,7 +3899,7 @@ gst_base_parse_handle_seek (GstBaseParse * parse, GstEvent * event)
+        seek event (in bytes) to upstream. Segment / flush handling happens
+        in corresponding src event handlers */
+     GST_DEBUG_OBJECT (parse, "seek in PUSH mode");
+-    if (seekstop >= 0 && seekpos <= seekpos)
++    if (seekstop >= 0 && seekstop <= seekpos)
+       seekstop = seekpos;
+     new_event = gst_event_new_seek (rate, GST_FORMAT_BYTES, flags,
+         GST_SEEK_TYPE_SET, seekpos, stop_type, seekstop);
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/0001-parse-make-grammar.y-work-with-Bison-3.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/0001-parse-make-grammar.y-work-with-Bison-3.patch
new file mode 100644
index 0000000..dc2d606
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/0001-parse-make-grammar.y-work-with-Bison-3.patch
@@ -0,0 +1,35 @@
+From 60516f4798894f958fc53b470e1283318d0f8706 Mon Sep 17 00:00:00 2001
+From: Kerrick Staley <kerrick@kerrickstaley.com>
+Date: Tue, 20 Aug 2013 23:59:29 -0700
+Subject: [PATCH 1/2] parse: make grammar.y work with Bison 3
+
+YYLEX_PARAM is no longer supported in Bison 3.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=706462
+---
+ gst/parse/grammar.y | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gst/parse/grammar.y b/gst/parse/grammar.y
+index 24fc87b..7f9dd16 100644
+--- a/gst/parse/grammar.y
++++ b/gst/parse/grammar.y
+@@ -26,7 +26,6 @@
+  */
+ 
+ #define YYERROR_VERBOSE 1
+-#define YYLEX_PARAM scanner
+ 
+ #define YYENABLE_NLS 0
+ 
+@@ -648,6 +647,7 @@ static int yyerror (void *scanner, graph_t *graph, const char *s);
+ %right '.'
+ %left '!' '='
+ 
++%lex-param { void *scanner }
+ %parse-param { void *scanner }
+ %parse-param { graph_t *graph }
+ %pure-parser
+-- 
+2.7.2
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/check_fix.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/check_fix.patch
new file mode 100644
index 0000000..5d8bb13
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/check_fix.patch
@@ -0,0 +1,19 @@
+# gstreamer: Fix a problem with configure if check has already been built
+# Richard Purdie <rpurdie@linux.intel.com>
+
+Upstream-Status: Inappropriate [configuration]
+
+diff -urN gstreamer-0.10.29-orig/configure.ac gstreamer-0.10.29/configure.ac
+--- gstreamer-0.10.29-orig/configure.ac	2010-06-26 12:49:27.774930773 +0800
++++ gstreamer-0.10.29/configure.ac	2010-06-26 12:51:12.899200233 +0800
+@@ -543,8 +543,10 @@
+       *) BUILD_CHECK=yes ;;
+     esac
+ ])
++
+ dnl bit of a misnomer, but keep the conditional named like this so we don't
+ dnl have to change too much elsewhere
++HAVE_CHECK=no
+ AM_CONDITIONAL(HAVE_CHECK, test "x$BUILD_CHECK" = "xyes")
+ 
+ dnl configure the desired buffer alignment
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/gst-inspect-check-error.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/gst-inspect-check-error.patch
new file mode 100644
index 0000000..30be85f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/gst-inspect-check-error.patch
@@ -0,0 +1,16 @@
+# Fix crash with gst-inspect
+# Chris Lord <chris@openedhand.com>
+
+Upstream-Status: Pending
+
+--- gstreamer-0.10.9/tools/gst-inspect.c.old	2006-09-12 11:56:53.000000000 +0100
++++ gstreamer-0.10.9/tools/gst-inspect.c	2006-09-12 11:57:27.000000000 +0100
+@@ -1123,7 +1123,7 @@
+   g_option_context_add_main_entries (ctx, options, GETTEXT_PACKAGE);
+   g_option_context_add_group (ctx, gst_init_get_option_group ());
+   if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
+-    g_print ("Error initializing: %s\n", err->message);
++    g_print ("Error initializing: %s\n", err ? err->message : "(null)");
+     exit (1);
+   }
+   g_option_context_free (ctx);
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/gstregistrybinary.c b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/gstregistrybinary.c
new file mode 100644
index 0000000..c1f3e71
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/gstregistrybinary.c
@@ -0,0 +1,487 @@
+/* GStreamer
+ * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
+ *                    2000 Wim Taymans <wtay@chello.be>
+ *                    2005 David A. Schleef <ds@schleef.org>
+ *
+ * gstregistryxml.c: GstRegistry object, support routines
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it ulnder the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+
+#include <gst/gstregistrybinary.h>
+
+/*
+** Simple handy function to write a memory location to the registry cache file
+*/
+inline static gboolean
+gst_registry_binary_write(GstRegistry *registry, const void *mem, const ssize_t size)
+{
+  if (write(registry->cache_file, mem, size) != size)
+    {
+      GST_ERROR("Failed to write binary registry element: ptr=%p size=%u error=%s\n",
+		mem, size, strerror(errno));
+      return FALSE;
+    }
+  return TRUE;
+}
+
+/*
+** Save features GstBinary style
+*/
+static gboolean 
+gst_registry_binary_fill_feature(GList **list, GstPluginFeature *orig, GstBinaryPluginFeature *dest, const char *name)
+{
+  GstBinaryChunck *chk;
+
+  if ((chk = calloc(1, sizeof (GstBinaryChunck))) == NULL)
+    return FALSE;
+
+  chk->data = dest;
+  chk->size = sizeof (GstBinaryPluginFeature);
+
+  *list = g_list_append(*list, chk);
+
+  dest->rank = orig->rank;
+  if (!strncpy(dest->typename, name, GST_BINARY_REGISTRY_TYPENAME_TYPENAME_LEN) ||
+      !strncpy(dest->name, orig->name, GST_BINARY_REGISTRY_TYPENAME_NAME_LEN))
+    {
+      GST_ERROR("Failed to write binary registry feature");
+      goto fail;
+    }
+  
+  if (GST_IS_ELEMENT_FACTORY(orig))
+    {
+      GstElementFactory *factory = GST_ELEMENT_FACTORY(orig);
+      
+      if (!strncpy(dest->longname, factory->details.longname, GST_BINARY_REGISTRY_TYPENAME_LONGNAME_LEN) ||
+	  !strncpy(dest->class, factory->details.klass, GST_BINARY_REGISTRY_TYPENAME_CLASS_LEN) ||
+	  !strncpy(dest->description, factory->details.description, GST_BINARY_REGISTRY_TYPENAME_DESCRIPTION_LEN) ||
+	  !strncpy(dest->author, factory->details.author, GST_BINARY_REGISTRY_TYPENAME_AUTHOR_LEN))
+	{
+	  GST_ERROR("Failed to write binary registry feature");
+	  goto fail;
+	}
+    }
+  
+  dest->npadtemplates = dest->ninterfaces = dest->nuritypes = 0;
+  return TRUE;
+
+ fail:
+  free(chk);
+  return FALSE;
+}
+
+
+/*
+** Initialize the GstBinaryRegistryMagic, setting both our magic number and gstreamer major/minor version
+*/
+inline static gboolean
+gst_registry_binary_initialize_magic(GstBinaryRegistryMagic *m)
+{
+  if (!strncpy(m->magic, GST_MAGIC_BINARY_REGISTRY_STR, GST_MAGIC_BINARY_REGISTRY_LEN) ||
+      !strncpy(m->version, GST_MAJORMINOR, GST_BINARY_REGISTRY_VERSION_LEN))
+    {
+      GST_ERROR("Failed to write magic to the registry magic structure");
+      return FALSE;
+    }
+  return TRUE;
+}
+
+/*
+** Check GstBinaryRegistryMagic validity.
+** Return a pointer pointing right after the magic structure
+*/
+static gchar *
+gst_registry_binary_check_magic(gchar *in)
+{
+  GstBinaryRegistryMagic *m = (GstBinaryRegistryMagic *) in;
+
+  if (m == NULL || m->magic == NULL || m->version == NULL)
+    {
+      GST_ERROR("Binary registry magic structure is broken");
+      return NULL;
+    }
+  if (strncmp(m->magic, GST_MAGIC_BINARY_REGISTRY_STR, GST_MAGIC_BINARY_REGISTRY_LEN) != 0)
+    {
+      GST_ERROR("Binary registry magic is different : %02x%02x%02x%02x != %02x%02x%02x%02x",
+		GST_MAGIC_BINARY_REGISTRY_STR[0] & 0xff, GST_MAGIC_BINARY_REGISTRY_STR[1] & 0xff,
+		GST_MAGIC_BINARY_REGISTRY_STR[2] & 0xff, GST_MAGIC_BINARY_REGISTRY_STR[3] & 0xff,
+		m->magic[0] & 0xff, m->magic[1] & 0xff, m->magic[2] & 0xff, m->magic[3] & 0xff);
+      return NULL;
+    }
+  if (strncmp(m->version, GST_MAJORMINOR, GST_BINARY_REGISTRY_VERSION_LEN))
+    {
+      GST_ERROR("Binary registry magic version is different : %s != %s",
+		GST_MAJORMINOR, m->version);
+      return NULL;
+    }
+  return (in + sizeof (GstBinaryRegistryMagic));
+}
+
+/*
+** Adapt a GstPlugin to our GstBinaryPluginElement structure, and write it to the 
+** registry file.
+*/   
+static gboolean
+gst_registry_binary_save_plugin(GList **list, GstRegistry *registry, GstPlugin *plugin)
+{
+  GstBinaryPluginElement *e;
+  GstBinaryChunck *chk;
+  GList *walk;
+
+  if ((e = calloc(1, sizeof (GstBinaryPluginElement))) == NULL ||
+      (chk = calloc(1, sizeof (GstBinaryChunck))) == NULL)
+    return FALSE;
+
+  chk->data = e;
+  chk->size = sizeof (GstBinaryPluginElement);
+  *list = g_list_append(*list, chk);
+
+  if (!strncpy(e->name, plugin->desc.name, GST_BINARY_REGISTRY_NAME_LEN)		       	||
+      !strncpy(e->description, plugin->desc.description, GST_BINARY_REGISTRY_DESCRIPTION_LEN)	||
+      !strncpy(e->filename, plugin->filename, _POSIX_PATH_MAX)					||
+      !strncpy(e->version, plugin->desc.version, GST_BINARY_REGISTRY_VERSION_LEN)		||
+      !strncpy(e->license, plugin->desc.license, GST_BINARY_REGISTRY_LICENSE_LEN)		||
+      !strncpy(e->source, plugin->desc.source, GST_BINARY_REGISTRY_SOURCE_LEN)			||
+      !strncpy(e->package, plugin->desc.package, GST_BINARY_REGISTRY_PACKAGE_LEN)		||
+      !strncpy(e->origin, plugin->desc.origin, GST_BINARY_REGISTRY_ORIGIN_LEN))
+    {
+      GST_DEBUG("Can't adapt GstPlugin to GstBinaryPluginElement");
+      goto fail;
+    }
+
+  e->size = plugin->file_size;
+  e->m32p = plugin->file_mtime;
+  
+  GList *ft_list = gst_registry_get_feature_list_by_plugin(registry, plugin->desc.name);
+
+  for (walk = ft_list; walk; walk = g_list_next(walk), e->nfeatures++)
+    {
+      GstPluginFeature *curfeat = GST_PLUGIN_FEATURE (walk->data);
+      GstBinaryPluginFeature *newfeat;
+      const char *feat_name = g_type_name(G_OBJECT_TYPE(curfeat));
+      
+      if ((newfeat = calloc(1, sizeof (GstBinaryPluginFeature))) == NULL)
+	  goto fail;
+
+      if (!feat_name || !gst_registry_binary_fill_feature(list, curfeat, newfeat, feat_name))
+	{
+	  GST_ERROR("Can't fill plugin feature, aborting.");
+	  goto fail;
+	}
+    }
+
+  GST_DEBUG("Found %d features in plugin \"%s\"\n", e->nfeatures, e->name);
+  return TRUE;
+
+ fail:
+  free(chk);
+  free(e);
+  return FALSE;
+}
+
+/*
+** Write the cache to file. Part of the code was taken from gstregistryxml.c
+*/
+gboolean 
+gst_registry_binary_write_cache(GstRegistry *registry, const char *location)
+{
+  GList *walk;
+  char *tmp_location;
+  GstBinaryRegistryMagic *magic;
+  GstBinaryChunck *magic_chunck;
+  GList *to_write = NULL;
+ 
+  GST_INFO("Writing binary registry cache");
+
+  g_return_val_if_fail (GST_IS_REGISTRY (registry), FALSE);
+  tmp_location = g_strconcat (location, ".tmpXXXXXX", NULL);
+  registry->cache_file = g_mkstemp (tmp_location);
+  if (registry->cache_file == -1)
+    {
+      char *dir;
+
+      /* oops, I bet the directory doesn't exist */
+      dir = g_path_get_dirname (location);
+      g_mkdir_with_parents (dir, 0777);
+      g_free (dir);
+      
+      registry->cache_file = g_mkstemp (tmp_location);
+    }
+
+  if (registry->cache_file == -1)
+    goto fail;
+
+  if ((magic = calloc(1, sizeof (GstBinaryRegistryMagic))) == NULL ||
+      !gst_registry_binary_initialize_magic(magic))
+    goto fail;
+
+  if ((magic_chunck = calloc(1, sizeof (GstBinaryChunck))) == NULL)
+    goto fail;
+
+  magic_chunck->data = magic;
+  magic_chunck->size = sizeof (GstBinaryRegistryMagic);
+  to_write = g_list_append(to_write, magic_chunck); 
+
+  /* Iterate trough the list of plugins in the GstRegistry and adapt them to our structures */
+  for (walk = g_list_last(registry->plugins); walk; walk = g_list_previous(walk))
+    {
+      GstPlugin *plugin = GST_PLUGIN(walk->data);
+      
+      if (!plugin->filename)
+	continue;
+	  
+      if (plugin->flags & GST_PLUGIN_FLAG_CACHED)
+	{
+	  int ret;
+	  struct stat statbuf;
+	  
+	  ret = g_stat (plugin->filename, &statbuf);
+	  if ((ret = g_stat (plugin->filename, &statbuf)) < 0 	||
+	      plugin->file_mtime != statbuf.st_mtime		||
+	      plugin->file_size != statbuf.st_size)
+	    continue;
+	}
+
+      if (!gst_registry_binary_save_plugin(&to_write, registry, plugin))
+	{
+	  GST_ERROR("Can't write binary plugin information for \"%s\"", plugin->filename);
+	  continue; /* Try anyway */
+	}
+    }
+
+  for (walk = g_list_first(to_write); walk; walk = g_list_next(walk))
+    {
+      GstBinaryChunck *cur = walk->data;
+
+      if (!gst_registry_binary_write(registry, cur->data, cur->size))
+	{
+	  free(cur->data);
+	  free(cur);
+	  g_list_free(to_write);
+	  goto fail;
+	}
+      free(cur->data);
+      free(cur);
+    }
+  g_list_free(to_write);
+
+  if (close(registry->cache_file) < 0)
+    {
+      GST_DEBUG("Can't close registry file : %s", strerror(errno));
+      goto fail;
+    }
+  
+  if (g_file_test (tmp_location, G_FILE_TEST_EXISTS)) {
+#ifdef WIN32
+    remove (location);
+#endif
+    rename (tmp_location, location);
+  }
+
+  g_free (tmp_location);
+  return TRUE;
+
+ fail:
+  g_free(tmp_location);
+  return FALSE;
+}
+
+static GstPluginFeature*
+gst_registry_binary_load_feature(GstBinaryPluginFeature *in)
+{
+  GstPluginFeature *feature;
+  GType type;
+
+  if (!in->typename || !*(in->typename))
+    return NULL;
+
+  /*  GST_INFO("Plugin feature typename : %s", in->typename);*/
+
+  if (!(type = g_type_from_name(in->typename)))
+    {
+      GST_ERROR("Unknown type from typename");
+      return NULL;
+    }
+  feature = g_object_new (type, NULL);
+
+  if (!feature) {
+    GST_ERROR("Can't create feature from type");
+    return NULL;
+  }
+
+  if (!GST_IS_PLUGIN_FEATURE (feature)) {
+    /* don't really know what it is */
+    if (GST_IS_OBJECT (feature))
+      gst_object_unref (feature);
+    else
+      g_object_unref (feature);
+    return NULL;
+  }
+
+  feature->name = g_strdup(in->name);
+  feature->rank = in->rank;
+
+  if (GST_IS_ELEMENT_FACTORY(feature))
+    {
+      GstElementFactory *factory = GST_ELEMENT_FACTORY(feature);
+
+      factory->details.longname = g_strdup(in->longname);
+      factory->details.klass = g_strdup(in->class);
+      factory->details.description = g_strdup(in->description);
+      factory->details.author = g_strdup(in->author);
+
+      /*      GST_INFO("Element factory : %s", factory->details.longname); */
+    }
+
+  GST_DEBUG("Added feature %p with name %s", feature, feature->name);
+  return feature;
+}
+
+/*
+** Make a new plugin from current GstBinaryPluginElement structure
+** and save it to the GstRegistry. Return an offset to the next
+** GstBinaryPluginElement structure.
+*/
+static unsigned long
+gst_registry_binary_get_binary_plugin(GstRegistry *registry, gchar *in)
+{
+  GstBinaryPluginElement *p = (GstBinaryPluginElement *) in;
+  GstPlugin *plugin = NULL;
+  GList *plugin_features = NULL;
+  GstBinaryPluginFeature *feat;
+  unsigned int i;
+  unsigned long offset;
+
+  plugin = g_object_new (GST_TYPE_PLUGIN, NULL);
+
+  plugin->flags |= GST_PLUGIN_FLAG_CACHED;
+
+  plugin->desc.name = g_strdup(p->name);
+  plugin->desc.description= g_strdup(p->description);
+  plugin->filename = g_strdup(p->filename);
+  plugin->desc.version = g_strdup(p->version);
+  plugin->desc.license = g_strdup(p->license);
+  plugin->desc.source = g_strdup(p->source);
+  plugin->desc.package = g_strdup(p->package);
+  plugin->desc.origin = g_strdup(p->origin);
+  plugin->file_mtime = p->m32p;
+  plugin->file_size = p->size;
+  plugin->basename = g_path_get_basename (plugin->filename);
+
+  if (plugin->file_mtime < 0 || plugin->file_size < 0)
+    {
+      GST_ERROR("Plugin time or file size is not valid !");
+      g_free(plugin);
+      return -1;
+    }
+
+  if (p->nfeatures < 0)
+    {
+      GST_ERROR("The number of feature structure is not valid !");
+      gst_object_unref(plugin);
+      return -1;
+    }
+
+  for (feat = (GstBinaryPluginFeature *) (in + sizeof (GstBinaryPluginElement)), i = 0; 
+       i < p->nfeatures; i++, feat++)
+    {
+      GstPluginFeature *gstfeat;
+
+      if ((gstfeat = gst_registry_binary_load_feature(feat)) == NULL)
+	{
+	  g_list_free(plugin_features);
+	  g_free(plugin);
+	  GST_ERROR("Error while loading binary feature");
+	  return -1;
+	}
+      gstfeat->plugin_name = g_strdup(plugin->desc.name);
+      plugin_features = g_list_prepend(plugin_features, gstfeat);
+    }
+  
+  GST_DEBUG("Added plugin \"%s\" to global registry from binary registry", plugin->desc.name); 
+  GList *g;
+
+  gst_registry_add_plugin (registry, plugin);
+  for (g = plugin_features; g; g = g_list_next (g))
+    gst_registry_add_feature (registry, GST_PLUGIN_FEATURE (g->data));
+  /*  g_list_free(plugin_features); */
+
+  offset = sizeof (GstBinaryPluginElement) + p->nfeatures * sizeof (GstBinaryPluginFeature);
+  return offset;
+}
+
+
+/*
+** Read the cache and adapt it to fill GstRegistry
+*/ 
+gboolean 
+gst_registry_binary_read_cache(GstRegistry *registry, const char *location)
+{
+  GMappedFile *mapped = NULL;
+  GTimer *timer = NULL;
+  gchar *contents = NULL;
+  gdouble seconds;
+  unsigned long offset, inc;
+  gsize size;
+
+  /* make sure these types exist */
+  GST_TYPE_ELEMENT_FACTORY;
+  GST_TYPE_TYPE_FIND_FACTORY;
+  GST_TYPE_INDEX_FACTORY;
+
+  timer = g_timer_new ();
+
+  if ((mapped = g_mapped_file_new(location, FALSE, NULL)) == NULL ||
+      (contents = g_mapped_file_get_contents(mapped)) == NULL)
+    {
+      GST_ERROR("Can't load file : %s", strerror(errno));
+      return FALSE;
+    }
+  if ((contents = gst_registry_binary_check_magic(contents)) == NULL)
+    {
+      GST_ERROR("Binary registry type not recognized (invalid magic)");
+      g_mapped_file_free(mapped);
+      return FALSE;
+    }
+
+  if ((size = g_mapped_file_get_length(mapped)) < sizeof (GstBinaryPluginElement))
+    {
+      GST_INFO("No binary plugins structure to read");
+      return TRUE; /* This is not really an error */
+    }
+
+  for (offset = inc = 0; (offset + sizeof (GstBinaryPluginElement)) < size &&
+	 (inc = gst_registry_binary_get_binary_plugin(registry, contents + offset)) > 0;
+       offset += inc)
+    ; /* May want in the future to do something here */
+  if (inc < 0)
+    {
+      GST_DEBUG("Problem while reading binary registry");
+      return FALSE;
+    }
+
+  g_timer_stop (timer);
+  seconds = g_timer_elapsed (timer, NULL);
+  g_timer_destroy (timer);
+
+  GST_INFO ("loaded %s in %f seconds", location, seconds);
+
+  if (mapped)
+    g_mapped_file_free (mapped);
+  return TRUE;
+}
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/gstregistrybinary.h b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/gstregistrybinary.h
new file mode 100644
index 0000000..2ef24d7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer-0.10.36/gstregistrybinary.h
@@ -0,0 +1,194 @@
+/* GStreamer
+ * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
+ *                    2000 Wim Taymans <wim.taymans@chello.be>
+ *
+ * gstregistry.h: Header for registry handling
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* SUGGESTIONS AND TODO :
+** ====================
+** - Use a compressed registry, but would induce performance loss
+** - Encrypt the registry, for security purpose, but would also reduce performances
+** - Also have a non-mmap based cache reading (work with file descriptors)
+*/
+
+#ifndef __GST_REGISTRYBINARY_H__
+#define __GST_REGISTRYBINARY_H__
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include <stdio.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <gst/gst_private.h>
+#include <gst/gstelement.h>
+#include <gst/gsttypefind.h>
+#include <gst/gsttypefindfactory.h>
+#include <gst/gsturi.h>
+#include <gst/gstinfo.h>
+#include <gst/gstenumtypes.h>
+#include <gst/gstregistry.h>
+#include <gst/gstpadtemplate.h>
+
+#include "glib-compat-private.h"
+#include <glib/gstdio.h>
+
+/* A magic, written at the beginning of the file */
+#define GST_MAGIC_BINARY_REGISTRY_STR "\xc0\xde\xf0\x0d"
+#define GST_MAGIC_BINARY_REGISTRY_LEN (4)
+#define GST_MAGIC_BINARY_VERSION_LEN (64)
+
+typedef struct _GstBinaryRegistryMagic
+{
+  char magic[GST_MAGIC_BINARY_REGISTRY_LEN];
+  char version[GST_MAGIC_BINARY_VERSION_LEN];
+} GstBinaryRegistryMagic;
+
+
+/* Used to store pointers to write */
+typedef struct _GstBinaryChunck
+{
+  void *data;
+  unsigned int size;
+} GstBinaryChunck;
+
+
+/* A structure containing (staticely) every information needed for a plugin
+**
+** Notes :
+** "nfeatures" is used to say how many GstBinaryPluginFeature structures we will have 
+** right after the structure itself.
+*/
+
+/* Various lenght defines for our GstBinaryPluginElement structure 
+** Note : We could eventually use smaller size
+*/
+#define GST_BINARY_REGISTRY_NAME_LEN (256)
+#define GST_BINARY_REGISTRY_DESCRIPTION_LEN (1024)
+#define GST_BINARY_REGISTRY_VERSION_LEN (64)
+#define GST_BINARY_REGISTRY_LICENSE_LEN (256)
+#define GST_BINARY_REGISTRY_SOURCE_LEN (256)
+#define GST_BINARY_REGISTRY_PACKAGE_LEN (1024)
+#define GST_BINARY_REGISTRY_ORIGIN_LEN (1024)
+
+typedef struct _GstBinaryPluginElement
+{
+  char name[GST_BINARY_REGISTRY_NAME_LEN];
+  char description[GST_BINARY_REGISTRY_DESCRIPTION_LEN];
+  char filename[_POSIX_PATH_MAX];
+  char version[GST_BINARY_REGISTRY_VERSION_LEN];
+  char license[GST_BINARY_REGISTRY_LICENSE_LEN];
+  char source[GST_BINARY_REGISTRY_SOURCE_LEN];
+  char package[GST_BINARY_REGISTRY_PACKAGE_LEN];
+  char origin[GST_BINARY_REGISTRY_ORIGIN_LEN];
+  unsigned long size;
+  unsigned long m32p;
+  unsigned int nfeatures;
+} GstBinaryPluginElement;
+
+
+/* A structure containing the plugin features
+**
+** Note :
+** "npadtemplates" is used to store the number of GstBinaryPadTemplate structures following the structure itself.
+** "ninterfaces" is used to store the number of GstBinaryInterface structures following the structure itself.
+** "nuritypes" is used to store the number of GstBinaryUriType structures following the structure itself.
+*/
+#define GST_BINARY_REGISTRY_TYPENAME_TYPENAME_LEN (256)
+#define GST_BINARY_REGISTRY_TYPENAME_NAME_LEN (256)
+#define GST_BINARY_REGISTRY_TYPENAME_LONGNAME_LEN (1024)
+#define GST_BINARY_REGISTRY_TYPENAME_CLASS_LEN (512)
+#define GST_BINARY_REGISTRY_TYPENAME_DESCRIPTION_LEN (1024)
+#define GST_BINARY_REGISTRY_TYPENAME_AUTHOR_LEN (256)
+
+typedef struct _GstBinaryPluginFeature
+{
+  char typename[GST_BINARY_REGISTRY_TYPENAME_TYPENAME_LEN];
+  char name[GST_BINARY_REGISTRY_TYPENAME_NAME_LEN];
+  unsigned long rank;
+  char longname[GST_BINARY_REGISTRY_TYPENAME_LONGNAME_LEN];
+  char class[GST_BINARY_REGISTRY_TYPENAME_CLASS_LEN];
+  char description[GST_BINARY_REGISTRY_TYPENAME_DESCRIPTION_LEN];
+  char author[GST_BINARY_REGISTRY_TYPENAME_AUTHOR_LEN];
+  unsigned int npadtemplates;
+  unsigned int ninterfaces;
+  unsigned int nuritypes;
+} GstBinaryPluginFeature;
+
+
+/* 
+** A structure containing the static pad templates of a plugin feature 
+*/
+#define GST_BINARY_REGISTRY_PADTEMPLATE_NAME_LEN (256)
+#define GST_BINARY_REGISTRY_PADTEMPLATE_CAP_LEN (1024)
+
+typedef struct _GstBinaryPadTemplate
+{
+  char name[GST_BINARY_REGISTRY_PADTEMPLATE_NAME_LEN];
+  char cap[GST_BINARY_REGISTRY_PADTEMPLATE_CAP_LEN];
+  int direction;					/* Either 0:"sink" or 1:"src" */
+  GstPadPresence presence;
+} GstBinaryPadTemplate;
+
+/*
+** A very simple structure defining the plugin feature interface string
+*/
+#define GST_BINARY_REGISTRY_INTERFACE_INTERFACE_LEN (512)
+typedef struct _GstBinaryInterface
+{
+  char interface[GST_BINARY_REGISTRY_INTERFACE_INTERFACE_LEN];
+  unsigned long size;
+} GstBinaryInterface;
+
+/* Uri Type */
+typedef struct _GstBinaryUriType
+{
+  GstURIType type;
+  unsigned long nuriprotocols;
+} GstBinaryUriType;
+
+/* 
+** Function prototypes
+*/
+
+/* Local prototypes */
+inline static gboolean gst_registry_binary_write(GstRegistry *registry, const void *mem, const ssize_t size);
+inline static gboolean gst_registry_binary_initialize_magic(GstBinaryRegistryMagic *m);
+static gboolean gst_registry_binary_fill_feature(GList **list, GstPluginFeature *, GstBinaryPluginFeature *, const char *);
+static gboolean gst_registry_binary_save_plugin(GList **list, GstRegistry *registry, GstPlugin *plugin);
+static gchar *gst_registry_binary_check_magic(gchar *in);
+static GstPluginFeature *gst_registry_binary_load_feature(GstBinaryPluginFeature *);
+static unsigned long gst_registry_binary_get_binary_plugin(GstRegistry *registry, gchar *in);
+
+/* Exportable */
+gboolean gst_registry_binary_write_cache(GstRegistry *registry, const char *location);
+gboolean gst_registry_binary_read_cache(GstRegistry *registry, const char *location);
+
+#endif /* !__GST_REGISTRYBINARY_H__ */
+
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer_0.10.36.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer_0.10.36.bb
new file mode 100644
index 0000000..f61a410
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-0.10/gstreamer_0.10.36.bb
@@ -0,0 +1,52 @@
+SUMMARY = "GStreamer multimedia framework"
+DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \
+It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime."
+HOMEPAGE = "http://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
+SECTION = "multimedia"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605 \
+                    file://gst/gst.h;beginline=1;endline=21;md5=8e5fe5e87d33a04479fde862e238eaa4"
+DEPENDS = "glib-2.0 libxml2 bison-native flex-native"
+
+PR = "r2"
+
+SRC_URI = "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.bz2 \
+           file://check_fix.patch \
+           file://gst-inspect-check-error.patch \
+           file://0001-baseparse-Fix-self-comparison-always-evaluates-to-tr.patch \
+           file://0001-parse-make-grammar.y-work-with-Bison-3.patch \
+"
+
+SRC_URI[md5sum] = "a0cf7d6877f694a1a2ad2b4d1ecb890b"
+SRC_URI[sha256sum] = "e556a529e0a8cf1cd0afd0cab2af5488c9524e7c3f409de29b5d82bb41ae7a30"
+
+inherit autotools pkgconfig gettext
+
+GSTREAMER_DEBUG ?= "--disable-debug"
+EXTRA_OECONF = "--disable-docbook --disable-gtk-doc \
+            --disable-dependency-tracking --disable-check \
+            --disable-examples --disable-tests \
+            --disable-valgrind ${GSTREAMER_DEBUG} \
+            --disable-introspection \
+            "
+
+CACHED_CONFIGUREVARS += "ac_cv_header_valgrind_valgrind_h=no"
+
+# apply gstreamer hack after Makefile.in.in in source is replaced by our version from
+# ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in, but before configure is executed
+# http://lists.linuxtogo.org/pipermail/openembedded-core/2012-November/032233.html
+oe_runconf_prepend() {
+        sed -i -e "1a\\" -e 'GETTEXT_PACKAGE = @GETTEXT_PACKAGE@' ${S}/po/Makefile.in.in
+}
+
+#do_compile_prepend () {
+#	mv ${WORKDIR}/gstregistrybinary.[ch] ${S}/gst/
+#}
+
+RRECOMMENDS_${PN}_qemux86    += "kernel-module-snd-ens1370 kernel-module-snd-rawmidi"
+RRECOMMENDS_${PN}_qemux86-64 += "kernel-module-snd-ens1370 kernel-module-snd-rawmidi"
+
+FILES_${PN} += " ${libdir}/gstreamer-0.10/*.so"
+FILES_${PN}-dev += " ${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a"
+FILES_${PN}-dbg += " ${libdir}/gstreamer-0.10/.debug/ ${libexecdir}/gstreamer-0.10/.debug/"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer/files/display.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer/files/display.patch
new file mode 100644
index 0000000..61b0e6c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer/files/display.patch
@@ -0,0 +1,60 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 3e46d2e501da68d929bb5f26900a292a5fc04a1f Mon Sep 17 00:00:00 2001
+From: Stefan Westerfeld <stefan@space.twc.de>
+Date: Mon, 23 Apr 2012 03:10:22 +0200
+Subject: [PATCH] Fix time display updates (broken by introduction of quiet
+ mode).
+
+---
+ src/gst123.cc |    1 +
+ src/msg.cc    |    7 +++++++
+ src/msg.h     |    1 +
+ 3 files changed, 9 insertions(+)
+
+diff --git a/src/gst123.cc b/src/gst123.cc
+index 20e91e5..ce5876d 100644
+--- a/src/gst123.cc
++++ b/src/gst123.cc
+@@ -640,6 +640,7 @@ cb_print_position (gpointer *data)
+       else
+         blanks += "         ";
+       Msg::print ("%s%s\r", status.c_str(), blanks.c_str());
++      Msg::flush();
+     }
+ 
+   /* call me again */
+diff --git a/src/msg.cc b/src/msg.cc
+index 547cd90..33cada2 100644
+--- a/src/msg.cc
++++ b/src/msg.cc
+@@ -41,6 +41,13 @@ print (const char *format, ...)
+     }
+ }
+ 
++void
++flush()
++{
++  if (!Options::the().quiet)
++    fflush (stdout);
++}
++
+ }
+ 
+ }
+diff --git a/src/msg.h b/src/msg.h
+index e0ced24..5bebac0 100644
+--- a/src/msg.h
++++ b/src/msg.h
+@@ -27,6 +27,7 @@ namespace Msg
+ {
+ 
+ void print (const char *format, ...);
++void flush();
+ 
+ }
+ 
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer/gst123_0.3.1.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer/gst123_0.3.1.bb
new file mode 100644
index 0000000..47f1d9f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer/gst123_0.3.1.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Flexible CLI player in the spirit of mpg123, based on GStreamer"
+HOMEPAGE = "http://space.twc.de/~stefan/gst123.php"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
+                    file://src/gst123.cc;beginline=1;endline=19;md5=05d2f5d54b985b986c26af931d2084f8"
+
+DEPENDS = "libx11 gstreamer gst-plugins-base gtk+ ncurses"
+
+SRC_URI = "http://space.twc.de/~stefan/gst123/${BPN}-${PV}.tar.bz2 \
+           file://display.patch"
+
+SRC_URI[md5sum] = "1e77767c9d6fecee5641f95804f160fe"
+SRC_URI[sha256sum] = "89d1de025eca0466c125dcd6a11b64341bdf98ee4c03c3e5a12321d77cb8b0ce"
+
+inherit autotools
+
+PNBLACKLIST[gst123] ?= "gst123 is still "sometimes" using wrong sysroot"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libao/libao_1.2.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libao/libao_1.2.0.bb
new file mode 100644
index 0000000..1339df6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libao/libao_1.2.0.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Cross-platform audio output library and plugins"
+DESCRIPTION = "Libao is a cross-platform audio library that allows programs to \
+               output audio using a simple API on a wide variety of platforms."
+SECTION = "multimedia"
+HOMEPAGE = "https://www.xiph.org/ao/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI="http://downloads.xiph.org/releases/ao/${BP}.tar.gz"
+SRC_URI[md5sum] = "9f5dd20d7e95fd0dd72df5353829f097"
+SRC_URI[sha256sum] = "03ad231ad1f9d64b52474392d63c31197b0bc7bd416e58b1c10a329a5ed89caf"
+
+inherit autotools
+
+PACKAGES += "${BPN}-ckport"
+PACKAGES_DYNAMIC += "^${BPN}-plugin-.*"
+
+do_install_append () {
+    find "${D}" -name '*.la' -exec rm -f {} +
+}
+
+python populate_packages_prepend () {
+    rootdir = bb.data.expand('${libdir}/ao/plugins-4', d)
+    rootdir_dbg = bb.data.expand('${libdir}/ao/plugins-4/.debug', d)
+    do_split_packages(d, rootdir, '^(.*)\.so$', output_pattern='${BPN}-plugin-%s', description='AO %s plugin')
+    do_split_packages(d, rootdir_dbg, '^(.*)\.so$', output_pattern='${BPN}-plugin-%s-dbg', description='AO %s plugin debug data')
+}
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)}"
+PACKAGECONFIG[esound] = "--enable-esd,--disable-esd,esound"
+PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
+PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio"
+FILES_${BPN}-ckport = "${libdir}/ckport"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libavc1394/libavc1394_0.5.4.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libavc1394/libavc1394_0.5.4.bb
new file mode 100644
index 0000000..97e2bf1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libavc1394/libavc1394_0.5.4.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "libavc1394 is a programming interface for the 1394 Trade \
+Association AV/C (Audio/Video Control) Digital Interface Command Set"
+HOMEPAGE = "http://sourceforge.net/projects/libavc1394/"
+SECTION = "libs/multimedia"
+
+DEPENDS = "libraw1394"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz"
+SRC_URI[md5sum] = "caf0db059d8b8d35d6f08e6c0e1c7dfe"
+SRC_URI[sha256sum] = "7cb1ff09506ae911ca9860bef4af08c2403f3e131f6c913a2cbd6ddca4215b53"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/files/install_examples.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/files/install_examples.patch
new file mode 100755
index 0000000..89133ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/files/install_examples.patch
@@ -0,0 +1,14 @@
+Index: libdc1394/examples/Makefile.am
+===================================================================
+--- libdc1394.orig/examples/Makefile.am	2012-06-30 17:50:46.000000000 -0700
++++ libdc1394/examples/Makefile.am	2012-06-30 19:02:13.822646430 -0700
+@@ -36,8 +36,7 @@
+ AM_LDFLAGS = -framework CoreFoundation -framework Carbon
+ endif
+ 
+-noinst_PROGRAMS = $(A)
+-bin_PROGRAMS = $(B)
++bin_PROGRAMS = $(A) $(B)
+ 
+ LDADD = ../dc1394/libdc1394.la
+ 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_git.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_git.bb
new file mode 100755
index 0000000..0ea5cb9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_git.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Capture and control API for IIDC compliant cameras"
+HOMEPAGE = "http://sourceforge.net/projects/libdc1394/"
+SECTION = "libs"
+LICENSE = "LGPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c848e78d9a4a5cc69906178e4d6fbd64"
+
+# libsdl to provide sdl.m4 with AM_PATH_SDL
+DEPENDS += "libusb1 libraw1394 libsdl"
+
+PV = "2.2.1+gitr${SRCPV}"
+
+SRCREV = "b90342933b4b48634b98b73805f47bd25ed5857e"
+
+SRC_URI = "git://git.code.sf.net/p/libdc1394/code;branch=master;protocol=git \
+           file://install_examples.patch \
+          "
+
+S = "${WORKDIR}/git/${PN}"
+
+inherit autotools-brokensep pkgconfig
+
+EXTRA_OECONF += "--disable-doxygen-doc --disable-examples"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbpsi/libdvbpsi_1.3.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbpsi/libdvbpsi_1.3.0.bb
new file mode 100644
index 0000000..48b0111
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbpsi/libdvbpsi_1.3.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "libdvbpsi is a simple library designed for decoding \
+and generation of MPEG TS and DVB PSI tables according to standards \
+ISO/IEC 13818 and ITU-T H.222.0."
+HOMEPAGE = "http://www.videolan.org/developers/libdvbpsi.html"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "http://download.videolan.org/pub/libdvbpsi/${PV}/libdvbpsi-${PV}.tar.bz2"
+SRC_URI[md5sum] = "2b217039a1299000c39423441f77e76a"
+SRC_URI[sha256sum] = "a2fed1d11980662f919bbd1f29e2462719e0f6227e1a531310bd5a706db0a1fe"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdvdnav/libdvdnav_5.0.3.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdvdnav/libdvdnav_5.0.3.bb
new file mode 100644
index 0000000..c2dd96f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libdvdnav/libdvdnav_5.0.3.bb
@@ -0,0 +1,14 @@
+SUMMARY = "library for DVD navigation features"
+SECTION = "libs/multimedia"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "libdvdread"
+
+SRC_URI = "http://download.videolan.org/pub/videolan/${BPN}/${PV}/${BP}.tar.bz2"
+SRC_URI[md5sum] = "e9ea4de3bd8f204e61301d407d09f033"
+SRC_URI[sha256sum] = "5097023e3d2b36944c763f1df707ee06b19dc639b2b68fb30113a5f2cbf60b6d"
+
+inherit autotools lib_package binconfig pkgconfig
+
+CONFIGUREOPTS_remove = "--disable-silent-rules"
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libiec61883/libiec61883_1.2.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libiec61883/libiec61883_1.2.0.bb
new file mode 100644
index 0000000..e6079bd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/libiec61883/libiec61883_1.2.0.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "An implementation of the most relevant parts of IEC 61883 over \
+libraw1394 for transmission, reception, and management of media streams and \
+devices such as DV, MPEG2-TS, audio, and MIDI"
+HOMEPAGE = "https://ieee1394.wiki.kernel.org/index.php/Libraries#libiec61883"
+SECTION = "libs/multimedia"
+
+DEPENDS = "libraw1394"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=771782cb6245c7fbbe74bc0ec059beff"
+
+SRC_URI = "https://www.kernel.org/pub/linux/libs/ieee1394/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "ed91bc1727fac8e019402fc3724a283d"
+SRC_URI[sha256sum] = "d1e02c7e276fac37313a2f8c1c33d7a9e19282ff16f32e72435428ff5121f09e"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/mpg123/mpg123_1.22.4.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/mpg123/mpg123_1.22.4.bb
new file mode 100644
index 0000000..e6a912b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/mpg123/mpg123_1.22.4.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Audio decoder for MPEG-1 Layer 1/2/3"
+DESCRIPTION = "The core of mpg123 is an MPEG-1 Layer 1/2/3 decoding library, which can be used by other programs. \
+mpg123 also comes with a command-line tool which can playback using ALSA, PulseAudio, OSS, and several other APIs, \
+and also can write the decoded audio to WAV."
+HOMEPAGE = "http://mpg123.de/"
+BUGTRACKER = "http://sourceforge.net/p/mpg123/bugs/"
+SECTION = "multimedia"
+
+LICENSE = "LGPLv2.1"
+LICENSE_FLAGS = "commercial"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1e86753638d3cf2512528b99079bc4f3"
+
+DEPENDS = "audiofile"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mpg123/mpg123/${PV}/${BP}.tar.bz2"
+
+SRC_URI[md5sum] = "2dfafae3bbc532b4c8b04a77c6a6de89"
+SRC_URI[sha256sum] = "5069e02e50138600f10cc5f7674e44e9bf6f1930af81d0e1d2f869b3c0ee40d2"
+
+inherit autotools pkgconfig
+
+# The options should be mutually exclusive for configuration script.
+# If both alsa and pulseaudio are specified (as in the default distro features)
+# pulseaudio takes precedence.
+PACKAGECONFIG_ALSA = "${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)}"
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '${PACKAGECONFIG_ALSA}', d)}"
+
+PACKAGECONFIG[alsa] = "--with-default-audio=alsa,,alsa-lib"
+PACKAGECONFIG[esd] = ",,esound"
+PACKAGECONFIG[jack] = ",,jack"
+PACKAGECONFIG[openal] = ",,openal-soft"
+PACKAGECONFIG[portaudio] = ",,portaudio-v19"
+PACKAGECONFIG[pulseaudio] = "--with-default-audio=pulse,,pulseaudio"
+PACKAGECONFIG[sdl] = ",,libsdl"
+
+# Following are possible sound output modules:
+# alsa arts coreaudio dummy esd jack nas openal os2 oss portaudio pulse sdl sndio sun tinyalsa win32 win32_wasapi
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'alsa', 'alsa', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'esd', 'esd', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'jack', 'jack', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'openal', 'openal', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'portaudio', 'portaudio', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'pulse', '', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'sdl', 'sdl', '', d)}"
+
+EXTRA_OECONF = " \
+    --enable-shared \
+    --with-audio='${AUDIOMODS}' \
+    --with-module-suffix=.so \
+    ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-cpu=neon', '', d)} \
+    ${@bb.utils.contains('TUNE_FEATURES', 'altivec', '--with-cpu=altivec', '', d)} \
+"
+
+# The x86 assembler optimisations contains text relocations and there are no
+# upstream plans to fix them: http://sourceforge.net/p/mpg123/bugs/168/
+INSANE_SKIP_${PN}_append_x86 = " textrel"
+
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:47: Error: selected processor does not support Thumb mode `smull r5,r6,r7,r4'
+#| {standard input}:48: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r5,r5,lsr#24'
+#...
+#| make[3]: *** [equalizer.lo] Error 1
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/files/allow-libdir-override.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/files/allow-libdir-override.patch
new file mode 100644
index 0000000..d59d12e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/files/allow-libdir-override.patch
@@ -0,0 +1,21 @@
+Allow LIB_INSTALL_DIR to be set by the the cmake configure invocation.  We dont
+easily have a way of determining something that patches ${LIB_SUFFIX} so we'll
+set LIB_INSTALL_DIR.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
+
+Index: libmusicbrainz-3.0.3/CMakeLists.txt
+===================================================================
+--- libmusicbrainz-3.0.3.orig/CMakeLists.txt
++++ libmusicbrainz-3.0.3/CMakeLists.txt
+@@ -26,7 +26,7 @@ FIND_PACKAGE(DiscId)
+ SET(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")
+ SET(EXEC_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH "Installation prefix for executables and object code libraries" FORCE)
+ SET(BIN_INSTALL_DIR ${EXEC_INSTALL_PREFIX}/bin CACHE PATH "Installation prefix for user executables" FORCE)
+-SET(LIB_INSTALL_DIR ${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX} CACHE PATH  "Installation prefix for object code libraries" FORCE)
++SET(LIB_INSTALL_DIR ${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX} CACHE PATH  "Installation prefix for object code libraries")
+ SET(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include CACHE PATH "Installation prefix for C header files" FORCE)
+ 
+ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libmusicbrainz3.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libmusicbrainz3.pc)
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb
new file mode 100644
index 0000000..a6a4f6a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb
@@ -0,0 +1,41 @@
+SUMMARY = "MusicBrainz client library"
+DESCRIPTION = "The MusicBrainz client is a library which can be built into other programs.  The library allows you to access the data held on the MusicBrainz server."
+HOMEPAGE = "http://musicbrainz.org"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=fbc093901857fcd118f065f900982c24"
+DEPENDS = "expat neon neon-native"
+
+PV = "5.0.1+git${SRCPV}"
+PR = "r1"
+
+SRCREV = "0749dd0a35b4a54316da064475863a4ac6e28e7e"
+SRC_URI = "git://github.com/metabrainz/libmusicbrainz.git \
+           file://allow-libdir-override.patch "
+
+S = "${WORKDIR}/git"
+
+LDFLAGS_prepend_libc-uclibc = " -lpthread "
+
+inherit cmake pkgconfig
+
+do_configure_prepend() {
+    # The native build really doesn't like being rebuilt, so delete
+    # it if it's already present. Also delete all other files not
+    # known to Git to fix subsequent invocations of do_configure.
+    git clean -dfx -e /.pc/ -e /patches/ .
+    mkdir build-native
+    cd build-native
+    cmake -DCMAKE_C_FLAGS=${BUILD_CFLAGS} \
+          -DCMAKE_C_COMPILER=${BUILD_CC} \
+          -DCMAKE_CXX_FLAGS=${BUILD_CXXFLAGS} \
+          -DCMAKE_CXX_COMPILER=${BUILD_CXX} \
+          ..
+    make make-c-interface
+    cd ..
+}
+
+EXTRA_OECMAKE = "-DLIB_INSTALL_DIR:PATH=${libdir} \
+                 -DIMPORT_EXECUTABLES=build-native/ImportExecutables.cmake"
+
+# out-of-tree building doesn't appear to work for this package.
+B = "${S}"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpd-11.8.17/glibc-2.20.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpd-11.8.17/glibc-2.20.patch
new file mode 100644
index 0000000..4a2b25c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpd-11.8.17/glibc-2.20.patch
@@ -0,0 +1,10 @@
+--- libmpd-11.8.17/src/libmpd-internal.h.orig	2014-09-30 04:08:50.963292427 +0200
++++ libmpd-11.8.17/src/libmpd-internal.h	2014-09-30 04:08:30.595292223 +0200
+@@ -21,6 +21,7 @@
+ #define __MPD_INTERNAL_LIB_
+ 
+ #include "libmpdclient.h"
++#include "config.h"
+ struct _MpdData_real;
+ 
+ typedef struct _MpdData_real {
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpd_11.8.17.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpd_11.8.17.bb
new file mode 100644
index 0000000..54d7910
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpd_11.8.17.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Music Player Daemon library"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+HOMEPAGE ="http://sourceforge.net/projects/musicpd"
+DEPENDS = "glib-2.0"
+
+SRC_URI = "http://www.musicpd.org/download/${BPN}/${PV}/${BP}.tar.gz \
+    file://glibc-2.20.patch \
+"
+SRC_URI[md5sum] = "5ae3d87467d52aef3345407adb0a2488"
+SRC_URI[sha256sum] = "fe20326b0d10641f71c4673fae637bf9222a96e1712f71f170fca2fc34bf7a83"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/mpd.conf.in b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/mpd.conf.in
new file mode 100644
index 0000000..f9f92c9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/mpd.conf.in
@@ -0,0 +1,420 @@
+# An example configuration file for MPD
+# See the mpd.conf man page for a more detailed description of each parameter.
+
+
+# Files and directories #######################################################
+#
+# This setting controls the top directory which MPD will search to discover the
+# available audio files and add them to the daemon's online database. This
+# setting defaults to the XDG directory, otherwise the music directory will be
+# be disabled and audio files will only be accepted over ipc socket (using
+# file:// protocol) or streaming files over an accepted protocol.
+#
+music_directory		"%music_directory%"
+#
+# This setting sets the MPD internal playlist directory. The purpose of this
+# directory is storage for playlists created by MPD. The server will use
+# playlist files not created by the server but only if they are in the MPD
+# format. This setting defaults to playlist saving being disabled.
+#
+playlist_directory		"%playlist_directory%"
+#
+# This setting sets the location of the MPD database. This file is used to
+# load the database at server start up and store the database while the
+# server is not up. This setting defaults to disabled which will allow
+# MPD to accept files over ipc socket (using file:// protocol) or streaming
+# files over an accepted protocol.
+#
+db_file			"%db_file%"
+#
+# These settings are the locations for the daemon log files for the daemon.
+# These logs are great for troubleshooting, depending on your log_level
+# settings.
+#
+# The special value "syslog" makes MPD use the local syslog daemon. This
+# setting defaults to logging to syslog, otherwise logging is disabled.
+#
+log_file			"%log_file%"
+#
+# This setting sets the location of the file which stores the process ID
+# for use of mpd --kill and some init scripts. This setting is disabled by
+# default and the pid file will not be stored.
+#
+#pid_file			"/var/run/mpd/mpd.pid"
+#
+# This setting sets the location of the file which contains information about
+# most variables to get MPD back into the same general shape it was in before
+# it was brought down. This setting is disabled by default and the server
+# state will be reset on server start up.
+#
+state_file		"%state_file%"
+#
+# The location of the sticker database.  This is a database which
+# manages dynamic information attached to songs.
+#
+#sticker_file			"~/.mpd/sticker.sql"
+#
+###############################################################################
+
+
+# General music daemon options ################################################
+#
+# This setting specifies the user that MPD will run as. MPD should never run as
+# root and you may use this setting to make MPD change its user ID after
+# initialization. This setting is disabled by default and MPD is run as the
+# current user.
+#
+user "mpd"
+#
+# This setting specifies the group that MPD will run as. If not specified
+# primary group of user specified with "user" setting will be used (if set).
+# This is useful if MPD needs to be a member of group such as "audio" to
+# have permission to use sound card.
+#
+group				"audio"
+#
+# This setting sets the address for the daemon to listen on. Careful attention
+# should be paid if this is assigned to anything other then the default, any.
+# This setting can deny access to control of the daemon.
+#
+# For network
+bind_to_address		"any"
+#
+# And for Unix Socket
+#bind_to_address		"~/.mpd/socket"
+#
+# This setting is the TCP port that is desired for the daemon to get assigned
+# to.
+#
+#port				"6600"
+#
+# This setting controls the type of information which is logged. Available
+# setting arguments are "default", "secure" or "verbose". The "verbose" setting
+# argument is recommended for troubleshooting, though can quickly stretch
+# available resources on limited hardware storage.
+#
+#log_level			"default"
+#
+# If you have a problem with your MP3s ending abruptly it is recommended that
+# you set this argument to "no" to attempt to fix the problem. If this solves
+# the problem, it is highly recommended to fix the MP3 files with vbrfix
+# (available from <http://www.willwap.co.uk/Programs/vbrfix.php>), at which
+# point gapless MP3 playback can be enabled.
+#
+#gapless_mp3_playback			"yes"
+#
+# This setting enables MPD to create playlists in a format usable by other
+# music players.
+#
+#save_absolute_paths_in_playlists	"no"
+#
+# This setting defines a list of tag types that will be extracted during the
+# audio file discovery process. Optionally, 'comment' can be added to this
+# list.
+#
+#metadata_to_use	"artist,album,title,track,name,genre,date,composer,performer,disc"
+#
+# This setting enables automatic update of MPD's database when files in
+# music_directory are changed.
+#
+#auto_update	"yes"
+#
+# Limit the depth of the directories being watched, 0 means only watch
+# the music directory itself.  There is no limit by default.
+#
+#auto_update_depth "3"
+#
+###############################################################################
+
+
+# Symbolic link behavior ######################################################
+#
+# If this setting is set to "yes", MPD will discover audio files by following
+# symbolic links outside of the configured music_directory.
+#
+#follow_outside_symlinks	"yes"
+#
+# If this setting is set to "yes", MPD will discover audio files by following
+# symbolic links inside of the configured music_directory.
+#
+#follow_inside_symlinks		"yes"
+#
+###############################################################################
+
+
+# Zeroconf / Avahi Service Discovery ##########################################
+#
+# If this setting is set to "yes", service information will be published with
+# Zeroconf / Avahi.
+#
+#zeroconf_enabled		"yes"
+#
+# The argument to this setting will be the Zeroconf / Avahi unique name for
+# this MPD server on the network.
+#
+#zeroconf_name			"Music Player"
+#
+###############################################################################
+
+
+# Permissions #################################################################
+#
+# If this setting is set, MPD will require password authorization. The password
+# can setting can be specified multiple times for different password profiles.
+#
+#password                        "password@read,add,control,admin"
+#
+# This setting specifies the permissions a user has who has not yet logged in.
+#
+#default_permissions             "read,add,control,admin"
+#
+###############################################################################
+
+
+# Input #######################################################################
+#
+
+input {
+        plugin "curl"
+#       proxy "proxy.isp.com:8080"
+#       proxy_user "user"
+#       proxy_password "password"
+}
+
+#
+###############################################################################
+
+# Audio Output ################################################################
+#
+# MPD supports various audio output types, as well as playing through multiple
+# audio outputs at the same time, through multiple audio_output settings
+# blocks. Setting this block is optional, though the server will only attempt
+# autodetection for one sound card.
+#
+# See <http://mpd.wikia.com/wiki/Configuration#Audio_Outputs> for examples of
+# other audio outputs.
+#
+# board specific examples #####################################################
+# (feel free to add futher)
+#
+# gumstix overo (tested with TOBI expansion board)
+#audio_output {
+#	type		"alsa"
+#	name		"overo"
+#	mixer_control	"Headset"
+#	mixer_index	"0"
+#}
+#
+# general examples ############################################################
+#
+# An example of an ALSA output:
+#
+#audio_output {
+#	type		"alsa"
+#	name		"My ALSA Device"
+##	device		"hw:0,0"	# optional
+##	format		"44100:16:2"	# optional
+##	mixer_type      "hardware"	# optional
+##	mixer_device	"default"	# optional
+##	mixer_control	"PCM"		# optional
+##	mixer_index	"0"		# optional
+#}
+#
+# An example of an OSS output:
+#
+#audio_output {
+#	type		"oss"
+#	name		"My OSS Device"
+##	device		"/dev/dsp"	# optional
+##	format		"44100:16:2"	# optional
+##	mixer_type      "hardware"	# optional
+##	mixer_device	"/dev/mixer"	# optional
+##	mixer_control	"PCM"		# optional
+#}
+#
+# An example of a shout output (for streaming to Icecast):
+#
+#audio_output {
+#	type		"shout"
+#	encoding	"ogg"			# optional
+#	name		"My Shout Stream"
+#	host		"localhost"
+#	port		"8000"
+#	mount		"/mpd.ogg"
+#	password	"hackme"
+#	quality		"5.0"
+#	bitrate		"128"
+#	format		"44100:16:1"
+##	protocol	"icecast2"		# optional
+##	user		"source"		# optional
+##	description	"My Stream Description"	# optional
+##	genre		"jazz"			# optional
+##	public		"no"			# optional
+##	timeout		"2"			# optional
+##	mixer_type      "software"		# optional
+#}
+#
+# An example of a recorder output:
+#
+#audio_output {
+#	type		"recorder"
+#	name		"My recorder"
+#	encoder		"vorbis"		# optional, vorbis or lame
+#	path		"/var/lib/mpd/recorder/mpd.ogg"
+##	quality		"5.0"			# do not define if bitrate is defined
+#	bitrate		"128"			# do not define if quality is defined
+#	format		"44100:16:1"
+#}
+#
+# An example of a httpd output (built-in HTTP streaming server):
+#
+#audio_output {
+#	type		"httpd"
+#	name		"My HTTP Stream"
+#	encoder		"vorbis"		# optional, vorbis or lame
+#	port		"8000"
+#	bind_to_address	"0.0.0.0"		# optional, IPv4 or IPv6
+##	quality		"5.0"			# do not define if bitrate is defined
+#	bitrate		"128"			# do not define if quality is defined
+#	format		"44100:16:1"
+#	max_clients	"0"			# optional 0=no limit
+#}
+#
+# An example of a pulseaudio output (streaming to a remote pulseaudio server)
+#
+#audio_output {
+#	type		"pulse"
+#	name		"My Pulse Output"
+##	server		"remote_server"		# optional
+##	sink		"remote_server_sink"	# optional
+#}
+#
+## Example "pipe" output:
+#
+#audio_output {
+#	type		"pipe"
+#	name		"my pipe"
+#	command		"aplay -f cd 2>/dev/null"
+## Or if you're want to use AudioCompress
+#	command		"AudioCompress -m | aplay -f cd 2>/dev/null"
+## Or to send raw PCM stream through PCM:
+#	command		"nc example.org 8765"
+#	format		"44100:16:2"
+#}
+#
+## An example of a null output (for no audio output):
+#
+#audio_output {
+#	type		"null"
+#	name		"My Null Output"
+#	mixer_type      "none"			# optional
+#}
+#
+# This setting will change all decoded audio to be converted to the specified
+# format before being passed to the audio outputs. By default, this setting is
+# disabled.
+#
+#audio_output_format		"44100:16:2"
+#
+# If MPD has been compiled with libsamplerate support, this setting specifies
+# the sample rate converter to use.  Possible values can be found in the
+# mpd.conf man page or the libsamplerate documentation. By default, this is
+# setting is disabled.
+#
+#samplerate_converter		"Fastest Sinc Interpolator"
+#
+###############################################################################
+
+
+# Normalization automatic volume adjustments ##################################
+#
+# This setting specifies the type of ReplayGain to use. This setting can have
+# the argument "off", "album" or "track". See <http://www.replaygain.org>
+# for more details. This setting is off by default.
+#
+#replaygain			"album"
+#
+# This setting sets the pre-amp used for files that have ReplayGain tags. By
+# default this setting is disabled.
+#
+#replaygain_preamp		"0"
+#
+# This setting enables on-the-fly normalization volume adjustment. This will
+# result in the volume of all playing audio to be adjusted so the output has
+# equal "loudness". This setting is disabled by default.
+#
+#volume_normalization		"no"
+#
+###############################################################################
+
+
+# MPD Internal Buffering ######################################################
+#
+# This setting adjusts the size of internal decoded audio buffering. Changing
+# this may have undesired effects. Don't change this if you don't know what you
+# are doing.
+#
+#audio_buffer_size		"2048"
+#
+# This setting controls the percentage of the buffer which is filled before
+# beginning to play. Increasing this reduces the chance of audio file skipping,
+# at the cost of increased time prior to audio playback.
+#
+#buffer_before_play		"10%"
+#
+###############################################################################
+
+
+# Resource Limitations ########################################################
+#
+# These settings are various limitations to prevent MPD from using too many
+# resources. Generally, these settings should be minimized to prevent security
+# risks, depending on the operating resources.
+#
+#connection_timeout		"60"
+#max_connections		"10"
+#max_playlist_length		"16384"
+#max_command_list_size		"2048"
+#max_output_buffer_size		"8192"
+#
+###############################################################################
+
+
+# Character Encoding ##########################################################
+#
+# If file or directory names do not display correctly for your locale then you
+# may need to modify this setting.
+#
+#filesystem_charset		"UTF-8"
+#
+# This setting controls the encoding that ID3v1 tags should be converted from.
+#
+#id3v1_encoding			"ISO-8859-1"
+#
+###############################################################################
+
+
+# SIDPlay decoder #############################################################
+#
+# songlength_database:
+#  Location of your songlengths file, as distributed with the HVSC.
+#  The sidplay plugin checks this for matching MD5 fingerprints.
+#  See http://www.c64.org/HVSC/DOCUMENTS/Songlengths.faq
+#
+# default_songlength:
+#  This is the default playing time in seconds for songs not in the
+#  songlength database, or in case you're not using a database.
+#  A value of 0 means play indefinitely.
+#
+# filter:
+#  Turns the SID filter emulation on or off.
+#
+#decoder {
+#	plugin			"sidplay"
+#	songlength_database	"/media/C64Music/DOCUMENTS/Songlengths.txt"
+#	default_songlength	"120"
+#	filter "true"
+#}
+#
+###############################################################################
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.19.10.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.19.10.bb
new file mode 100644
index 0000000..7b124ca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.19.10.bb
@@ -0,0 +1,59 @@
+SUMMARY = "Music Player Daemon"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+HOMEPAGE ="http://www.musicpd.org"
+
+DEPENDS = "alsa-lib libsamplerate0 libsndfile1 libvorbis libogg faad2 ffmpeg curl sqlite bzip2 pulseaudio tcp-wrappers openal-soft yajl jack faad2 flac libao fluidsynth libcdio wavpack libopus mpg123 libmms libmodplug boost icu dbus expat zlib libupnp"
+
+SRC_URI = " \
+    http://www.musicpd.org/download/${BPN}/0.19/${BP}.tar.xz \
+    file://mpd.conf.in \
+"
+SRC_URI[md5sum] = "da4bc3e47afd0faf9e7a67168e012102"
+SRC_URI[sha256sum] = "c386eb3d22f98dc993b5ae3c272f969aa7763713483c6800040ebf1791b15851"
+
+inherit autotools useradd systemd
+
+EXTRA_OECONF = "enable_bzip2=yes"
+EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--without-systemdsystemunitdir', d)}"
+
+PACKAGECONFIG[mad] = "--enable-mad,--disable-mad,libmad"
+PACKAGECONFIG[id3tag] = "--enable-id3,--disable-id3,libid3tag"
+PACKAGECONFIG[lame] = "--enable-lame-encoder,--disable-lame-encoder,lame"
+PACKAGECONFIG[smb] = "--enable-smbclient,--disable-smbclient,samba"
+
+do_install_append() {
+    install -d ${D}/${localstatedir}/lib/mpd/music
+    chmod 775 ${D}/${localstatedir}/lib/mpd/music
+    install -d ${D}/${localstatedir}/lib/mpd/playlists
+    chown -R mpd ${D}/${localstatedir}/lib/mpd
+    chown mpd:mpd ${D}/${localstatedir}/lib/mpd/music
+
+    install -d ${D}/${sysconfdir}
+    install -m 644 ${WORKDIR}/mpd.conf.in ${D}/${sysconfdir}/mpd.conf
+    sed -i \
+        -e 's|%music_directory%|${localstatedir}/lib/mpd/music|' \
+        -e 's|%playlist_directory%|${localstatedir}/lib/mpd/playlists|' \
+        -e 's|%db_file%|${localstatedir}/lib/mpd/mpd.db|' \
+        -e 's|%log_file%|${localstatedir}/log/mpd.log|' \
+        -e 's|%state_file%|${localstatedir}/lib/mpd/state|' \
+        ${D}/${sysconfdir}/mpd.conf
+
+    if [ -e ${D}/${systemd_unitdir}/system/mpd.service ] ; then
+        sed -i \
+            's|^ExecStart=.*|ExecStart=${bindir}/mpd --no-daemon|' \
+            ${D}/${systemd_unitdir}/system/mpd.service
+    fi
+}
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "mpd.service mpd.socket"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = " \
+    --system --no-create-home \
+    --home ${localstatedir}/lib/mpd \
+    --groups audio \
+    --user-group mpd"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft_1.15.1.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft_1.15.1.bb
new file mode 100644
index 0000000..5895234
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft_1.15.1.bb
@@ -0,0 +1,23 @@
+SUMMARY = "OpenAL is a cross-platform 3D audio API"
+HOMEPAGE = "http://kcat.strangesoft.net/openal.html"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=facc3a8f452930083bbb95d82b989c35"
+
+inherit cmake
+
+SRC_URI = "http://kcat.strangesoft.net/openal-releases/${BP}.tar.bz2"
+SRC_URI[md5sum] = "ea83dec3b9655a27d28e7bc7cae9cd71"
+SRC_URI[sha256sum] = "0e29a162f0841ccb4135ce76e92e8a704589b680a85eddf76f898de5236eb056"
+
+PACKAGECONFIG ?= "\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} \
+"
+PACKAGECONFIG[alsa] = "-DALSA=TRUE, -DALSA=FALSE, alsa-lib"
+PACKAGECONFIG[pulseaudio] = "-DPULSEAUDIO=TRUE, -DPULSEAUDIO=FALSE, pulseaudio"
+# currently doesn't work with libav-9
+# PKG_CHECK_MODULES(FFMPEG libavcodec>=53.61.100 libavformat>=53.32.100 libavutil>=51.35.100)
+# but alffmpeg.c:418:44: error: 'AV_CH_LAYOUT_MONO' undeclared (first use in this function)
+PACKAGECONFIG[examples] = "-DEXAMPLES=TRUE, -DEXAMPLES=FALSE, libav"
+
+FILES_${PN} += "${datadir}/openal"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/opencore-amr/opencore-amr_0.1.3.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/opencore-amr/opencore-amr_0.1.3.bb
new file mode 100644
index 0000000..ab5813e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/opencore-amr/opencore-amr_0.1.3.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "OpenCORE Adaptive Multi Rate (AMR) speech codec library implementation"
+HOMEPAGE = "http://sourceforge.net/projects/opencore-amr/"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LICENSE_FLAGS = "commercial"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dd2c2486aca02190153cf399e508c7e7"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/opencore-amr/${BP}.tar.gz"
+SRC_URI[md5sum] = "09d2c5dfb43a9f6e9fec8b1ae678e725"
+SRC_URI[sha256sum] = "106bf811c1f36444d7671d8fd2589f8b2e0cca58a2c764da62ffc4a070595385"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/opencore-amr/vo-aacenc_0.1.3.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/opencore-amr/vo-aacenc_0.1.3.bb
new file mode 100644
index 0000000..ce37362
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/opencore-amr/vo-aacenc_0.1.3.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "VisualOn Advanced Audio Coding (AAC) encoder"
+HOMEPAGE = "http://sourceforge.net/projects/opencore-amr/"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LICENSE_FLAGS = "commercial"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dd2c2486aca02190153cf399e508c7e7"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/opencore-amr/${BP}.tar.gz"
+SRC_URI[md5sum] = "b574da1d92d75fc40b0b75aa16f24ac4"
+SRC_URI[sha256sum] = "e51a7477a359f18df7c4f82d195dab4e14e7414cbd48cf79cc195fc446850f36"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/opencore-amr/vo-amrwbenc_0.1.3.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/opencore-amr/vo-amrwbenc_0.1.3.bb
new file mode 100644
index 0000000..cc049ed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/opencore-amr/vo-amrwbenc_0.1.3.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "VisualOn Adaptive Multi Rate Wideband (AMR-WB) encoder"
+HOMEPAGE = "http://sourceforge.net/projects/opencore-amr/"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LICENSE_FLAGS = "commercial"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dd2c2486aca02190153cf399e508c7e7"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/opencore-amr/${BP}.tar.gz"
+SRC_URI[md5sum] = "f63bb92bde0b1583cb3cb344c12922e0"
+SRC_URI[sha256sum] = "5652b391e0f0e296417b841b02987d3fd33e6c0af342c69542cbb016a71d9d4e"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/rtmpdump/rtmpdump/fix-racing-build-issue.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/rtmpdump/rtmpdump/fix-racing-build-issue.patch
new file mode 100644
index 0000000..bb3d8b0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/rtmpdump/rtmpdump/fix-racing-build-issue.patch
@@ -0,0 +1,18 @@
+Make sure libdir (SODIR) is created when running parallel make.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+
+Index: git/librtmp/Makefile
+===================================================================
+--- git.orig/librtmp/Makefile
++++ git/librtmp/Makefile
+@@ -107,6 +107,7 @@ install_base:	librtmp.a librtmp.pc
+ 	cp librtmp.3 $(MANDIR)/man3
+ 
+ install_so:	librtmp.$(SO_EXT)
++	-mkdir -p $(SODIR)
+ 	cp librtmp.$(SO_EXT) $(SODIR)
+ 	cd $(SODIR); ln -sf librtmp.$(SO_EXT) librtmp.$(SOX)
+ 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/rtmpdump/rtmpdump_2.4.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/rtmpdump/rtmpdump_2.4.bb
new file mode 100644
index 0000000..a1e6502
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/rtmpdump/rtmpdump_2.4.bb
@@ -0,0 +1,22 @@
+SUMMARY = "RTMP Dump"
+DESCRIPTION = "rtmpdump is a toolkit for RTMP streams. All forms of RTMP are \
+supported, including rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://."
+HOMEPAGE = "http://rtmpdump.mplayerhq.hu/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "openssl zlib"
+
+SRCREV = "3121324046e4ca1934e7e28293fc8326475d5053"
+SRC_URI = " \
+    git://git.ffmpeg.org/rtmpdump \
+    file://fix-racing-build-issue.patch"
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep
+
+EXTRA_OEMAKE = " \
+    CC='${CC}' LD='${LD} ${STAGING_LIBDIR}' \
+    SYS=posix INC=-I=/usr/include DESTDIR=${D} \
+    prefix=${prefix} libdir=${libdir} incdir=${includedir}/librtmp bindir=${bindir} mandir=${mandir}"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/bigbuckbunny-1080p.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/bigbuckbunny-1080p.bb
new file mode 100644
index 0000000..e91ba45
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/bigbuckbunny-1080p.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Big Buck Bunny movie - 1080P"
+LICENSE = "CC-BY-3.0"
+# http://www.bigbuckbunny.org/index.php/about/
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/CC-BY-3.0;md5=dfa02b5755629022e267f10b9c0a2ab7"
+
+SRC_URI = "http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_surround.avi"
+SRC_URI[md5sum] = "223991c8b33564eb77988a4c13c1c76a"
+SRC_URI[sha256sum] = "69fe2cfe7154a6e752688e3a0d7d6b07b1605bbaf75b56f6470dc7b4c20c06ea"
+
+inherit allarch
+
+do_install() {
+	install -d ${D}${datadir}/movies
+	install -m 0644 ${WORKDIR}/big_buck_bunny_1080p_surround.avi ${D}${datadir}/movies/
+}
+
+FILES_${PN} += "${datadir}/movies"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/bigbuckbunny-480p.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/bigbuckbunny-480p.bb
new file mode 100644
index 0000000..e7029d9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/bigbuckbunny-480p.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Big Buck Bunny movie - 480P"
+LICENSE = "CC-BY-3.0"
+# http://www.bigbuckbunny.org/index.php/about/
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/CC-BY-3.0;md5=dfa02b5755629022e267f10b9c0a2ab7"
+
+SRC_URI = "http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_surround-fix.avi"
+SRC_URI[md5sum] = "ed7ed01e9aefba8ddd77c13332cec120"
+SRC_URI[sha256sum] = "40d1cf5bc8e1b0e55dac7bb2e3fbc2aea05b6679444864781299b24db044634f"
+
+inherit allarch
+
+do_install() {
+	install -d ${D}${datadir}/movies
+	install -m 0644 ${WORKDIR}/big_buck_bunny_480p_surround-fix.avi ${D}${datadir}/movies/
+}
+
+FILES_${PN} += "${datadir}/movies"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/bigbuckbunny-720p.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/bigbuckbunny-720p.bb
new file mode 100644
index 0000000..55fceab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/bigbuckbunny-720p.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Big Buck Bunny movie - 720P"
+LICENSE = "CC-BY-3.0"
+# http://www.bigbuckbunny.org/index.php/about/
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/CC-BY-3.0;md5=dfa02b5755629022e267f10b9c0a2ab7"
+
+SRC_URI = "http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_surround.avi"
+SRC_URI[md5sum] = "0da8fe124595f5b206d64cb1400bbefc"
+SRC_URI[sha256sum] = "b957d6e6212638441b52d3b620af157cc8d40c2a0342669294854a06edcd528c"
+
+inherit allarch
+
+do_install() {
+	install -d ${D}${datadir}/movies
+	install -m 0644 ${WORKDIR}/big_buck_bunny_720p_surround.avi ${D}${datadir}/movies/
+}
+
+FILES_${PN} += "${datadir}/movies"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/tearsofsteel-1080p.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/tearsofsteel-1080p.bb
new file mode 100644
index 0000000..bb7ee7c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sample-content/tearsofsteel-1080p.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Tears of Steel movie - 1080P"
+LICENSE = "CC-BY-3.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/CC-BY-3.0;md5=dfa02b5755629022e267f10b9c0a2ab7"
+
+SRC_URI = "http://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/ToS-4k-1920.mov"
+SRC_URI[md5sum] = "e3fee55b1779c553e37b1d3988e6fad6"
+SRC_URI[sha256sum] = "bd2b5bc6c16d4085034f47ef7e4b3938afe86b4eec4ac3cf2685367d3b0b23b0"
+
+inherit allarch
+
+do_install() {
+	install -d ${D}${datadir}/movies
+	install -m 0644 ${WORKDIR}/ToS-4k-1920.mov ${D}${datadir}/movies/
+}
+
+FILES_${PN} += "${datadir}/movies"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger/configure.ac.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger/configure.ac.patch
new file mode 100644
index 0000000..2ed8d22
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger/configure.ac.patch
@@ -0,0 +1,20 @@
+Use the version of orcc in the sysroot not the one from the host
+
+Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+Upstream-Status: Inappropriate [configuration]
+
+Index: schroedinger-1.0.9/configure.ac
+===================================================================
+--- schroedinger-1.0.9.orig/configure.ac
++++ schroedinger-1.0.9/configure.ac
+@@ -54,7 +54,7 @@ if test "x${HAVE_ORC}" != xyes ; then
+   AC_ERROR([orc-0.4 >= $ORC_VER is required])
+ fi
+ SCHRO_PKG_DEPS="$SCHRO_PKG_DEPS orc-0.4 >= $ORC_VER"
+-ORCC=`$PKG_CONFIG --variable=orcc orc-0.4`
++ORCC=$STAGING_DIR`$PKG_CONFIG --variable=orcc orc-0.4`
+ AC_SUBST(ORCC)
+ 
+ AC_ARG_WITH([thread],
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb
new file mode 100644
index 0000000..d38eb94
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Dirac compressed video encoder/decoder"
+HOMEPAGE = "http://schrodinger.sourceforge.net/"
+LICENSE = "MPL-1.1 | GPLv2 | LGPLv2 | MIT"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d91a46405fc074b88c963cc4f2a0aae9 \
+                    file://COPYING.GPL;md5=e181e3b7c66f5f96921d813c1074f833 \
+                    file://COPYING.LGPL;md5=38c893e21baec4cd75ad800ba9e2410a \
+                    file://COPYING.MIT;md5=8b345371b3536b4ce37ead1eafc88221 \
+                    file://COPYING.MPL;md5=0117647fecb9a932c25a7bbfc0333c37"
+
+DEPENDS = "liboil orc-native orc"
+
+SRC_URI = "http://www.diracvideo.org/download/schroedinger/${BP}.tar.gz \
+           file://configure.ac.patch"
+
+SRC_URI[md5sum] = "da6af08e564ca1157348fb8d92efc891"
+SRC_URI[sha256sum] = "1e572a0735b92aca5746c4528f9bebd35aa0ccf8619b22fa2756137a8cc9f912"
+
+EXTRA_OECONF += "STAGING_DIR=${STAGING_DIR_NATIVE}"
+
+inherit autotools-brokensep pkgconfig
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.0.bb
new file mode 100644
index 0000000..4b73aa3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.0.bb
@@ -0,0 +1,38 @@
+DESCRIPTION="SoX is the Swiss Army knife of sound processing tools. \
+It converts audio files among various standard audio file formats \
+and can apply different effects and filters to the audio data."
+HOMEPAGE = "http://sox.sourceforge.net"
+SECTION = "audio"
+
+DEPENDS = "libpng ffmpeg libsndfile1 libvorbis"
+
+PR = "r2"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)} \
+                   magic \
+"
+PACKAGECONFIG[pulseaudio] = "--with-pulseaudio=dyn,--with-pulseaudio=no,pulseaudio,"
+PACKAGECONFIG[alsa] = "--with-alsa=dyn,--with-alsa=no,alsa-lib,"
+PACKAGECONFIG[wavpack] = "--with-wavpack=dyn,--with-wavpack=no,wavpack,"
+PACKAGECONFIG[flac] = "--with-flac=dyn,--with-flac=no,flac,"
+PACKAGECONFIG[amrwb] = "--with-amrwb=dyn,--with-amrwb=no,opencore-amr,"
+PACKAGECONFIG[amrnb] = "--with-amrnb=dyn,--with-amrnb=no,opencore-amr,"
+PACKAGECONFIG[magic] = "--with-magic,--without-magic,file,"
+PACKAGECONFIG[mad] = "--with-mad,--without-mad,libmad,"
+PACKAGECONFIG[id3tag] = "--with-id3tag,--without-id3tag,libid3tag,"
+PACKAGECONFIG[lame] = "--with-lame,--without-lame,lame,"
+PACKAGECONFIG[ao] = "--with-ao,--without-ao,libao,"
+
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=751419260aa954499f7abaabaa882bbe \
+                    file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/sox/sox-${PV}.tar.gz"
+SRC_URI[md5sum] = "b0c15cff7a4ba0ec17fdc74e6a1f9cf1"
+SRC_URI[sha256sum] = "3ee34b14dd267de378e8a117aae81ec4cae330772342e6a55bbf6520a0a88aa3"
+
+inherit autotools
+
+BBCLASSEXTEND = "native"
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.3.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.3.0.bb
new file mode 100644
index 0000000..79e64ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.3.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "libdvdcss is a simple library designed for accessing DVDs like a block device without having to bother about the decryption."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = "http://download.videolan.org/pub/libdvdcss/${PV}/libdvdcss-${PV}.tar.bz2"
+
+inherit autotools
+
+EXTRA_OECONF = " --disable-doc "
+
+SRC_URI[md5sum] = "7f0fdb3ff91d638f5e45ed7536f7eb67"
+SRC_URI[sha256sum] = "7c414acd520c4e4dd7267952f72d738ff50321a7869af4d75c65aefad44f1395"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc.inc b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc.inc
new file mode 100644
index 0000000..8142e16
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc.inc
@@ -0,0 +1,106 @@
+DESCRIPTION = "Video player and streamer - davinci edition"
+HOMEPAGE = "http://www.videolan.org"
+SECTION = "multimedia"
+
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "libfribidi libtool libgcrypt libgcrypt-native \
+   dbus dbus-glib libxml2 gnutls \
+   tremor faad2 ffmpeg flac fluidsynth alsa-lib \
+   lua-native lua libidn \
+   avahi jpeg xz libmodplug mpeg2dec \
+   libmtp libopus orc libsamplerate0 libusb1 schroedinger taglib \
+   tiff"
+
+SRC_URI = "http://download.videolan.org/pub/videolan/${BPN}/${PV}/${BP}.tar.xz"
+
+inherit autotools gettext pkgconfig distro_features_check
+
+ARM_INSTRUCTION_SET = "arm"
+
+EXTRA_OECONF = "\
+    --enable-run-as-root \
+    --enable-xvideo \ 
+    --disable-screen --disable-caca \
+    --enable-httpd --enable-vlm \
+    --enable-freetype \
+    --enable-tremor \
+    --enable-v4l2 --disable-aa --disable-faad \
+    --enable-dbus \
+    --without-contrib \
+    --without-kde-solid \
+    --enable-realrtsp \
+    --disable-libtar \
+    ac_cv_path_MOC=${STAGING_BINDIR_NATIVE}/moc4 \
+    ac_cv_path_RCC=${STAGING_BINDIR_NATIVE}/rcc4 \
+    ac_cv_path_UIC=${STAGING_BINDIR_NATIVE}/uic4 \
+"
+
+PACKAGECONFIG ?= " live555 dc1394 dv1394 notify fontconfig freetype dvdread png ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 sdl', '', d)}"
+PACKAGECONFIG[mad] = "--enable-mad,--disable-mad,libmad"
+PACKAGECONFIG[sdl] = "--enable-sdl,--disable-sdl,virtual/libsdl libsdl-image "
+PACKAGECONFIG[a52] = "--enable-a52,--disable-a52,liba52"
+PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
+PACKAGECONFIG[live555] = "--enable-live555,--disable-live555,live555"
+PACKAGECONFIG[libass] = "--enable-libass,--disable-libass,libass"
+PACKAGECONFIG[mkv] = "--enable-mkv,--disable-mkv,libmatroska libebml"
+PACKAGECONFIG[postproc] = "--enable-postproc,--disable-postproc,libpostproc"
+PACKAGECONFIG[opencv] = "--enable-opencv,--disable-opencv,opencv"
+PACKAGECONFIG[libva] = "--enable-libva --enable-avcodec,--disable-libva --disable-avcodec,libva libav"
+PACKAGECONFIG[speex] = "--enable-speex,--disable-speex,speex"
+PACKAGECONFIG[gstreamer] = "--enable-gst-decode,--disable-gst-decode,gstreamer1.0 gstreamer1.0-plugins-base gst-plugins-bad"
+PACKAGECONFIG[vpx] = "--enable-vpx,--disable-vpx, libvpx"
+PACKAGECONFIG[qt4] = "--enable-qt,--disable-qt, qt4-x11-free"
+PACKAGECONFIG[freerdp] = "--enable-freerdp,--disable-freerdp, freerdp"
+PACKAGECONFIG[dvbpsi] = "--enable-dvbpsi,--disable-dvbpsi, libdvbpsi"
+PACKAGECONFIG[gnome-vfs] = "--enable-gnomevfs,--disable-gnomevfs, gnome-vfs"
+PACKAGECONFIG[samba] = "--enable-smbclient,--disable-smbclient, samba"
+PACKAGECONFIG[upnp] = "--enable-upnp,--disable-upnp,libupnp"
+PACKAGECONFIG[dvdnav] = "--enable-dvdnav,--disable-dvdnav,libdvdnav libdvdcss"
+PACKAGECONFIG[sftp] = "--enable-sftp,--disable-sftp,libssh2"
+PACKAGECONFIG[vorbis] = "--enable-vorbis,--disable-vorbis,libvorbis libogg"
+PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libvorbis libogg"
+PACKAGECONFIG[dc1394] = "--enable-dc1394,--disable-dc1394,libdc1394"
+PACKAGECONFIG[dv1394] = "--enable-dv1394,--disable-dv1394,libraw1394 libavc1394"
+PACKAGECONFIG[svg] = "--enable-svg,--disable-svg,librsvg"
+PACKAGECONFIG[svgdec] = "--enable-svgdec,--disable-svgdec,librsvg cairo"
+PACKAGECONFIG[notify] = "--enable-notify,--disable-notify, libnotify gtk+"
+PACKAGECONFIG[fontconfig] = "--enable-fontconfig,--disable-fontconfig, fontconfig"
+PACKAGECONFIG[freetype] = "--enable-freetype,--disable-freetype, freetype"
+PACKAGECONFIG[dvdread] = "--enable-dvdread,--disable-dvdread, libdvdread libdvdcss"
+PACKAGECONFIG[vnc] = "--enable-vnc,--disable-vnc, libvncserver"
+PACKAGECONFIG[x11] = "--with-x --enable-xcb,--without-x --disable-xcb,  xcb-util-keysyms libxpm libxinerama"
+PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng"
+
+do_configure_prepend() {
+    cp ${STAGING_DATADIR}/libtool/config.* ${S}/autotools/ || true
+}
+
+do_configure_append() {
+    sed -i -e s:'$(MOC) $(DEFS) $(CPPFLAGS)':'$(MOC) $(DEFS)'\ -I${B}/include\ -DSYS_LINUX:g ${B}/modules/gui/qt4/Makefile
+    sed -i -e s:'${top_builddir_slash}libtool':'${top_builddir_slash}'${TARGET_SYS}-libtool:g ${B}/doltlibtool
+}
+
+# This recipe packages vlc as a library as well, so qt4 dependencies
+# can be avoided when only the library is installed.
+PACKAGES =+ "libvlc"
+
+LEAD_SONAME_libvlc = "libvlc.so.5"
+FILES_libvlc = "${libdir}/lib*.so.*"
+
+FILES_${PN} += "\
+    ${bindir}/vlc \
+    ${datadir}/applications \
+    ${datadir}/vlc/ \
+    ${datadir}/icons \
+"
+
+FILES_${PN}-dbg += "\
+    ${libdir}/vlc/*/.debug \
+    ${libdir}/vlc/plugins/*/.debug \
+"
+
+FILES_${PN}-staticdev += "\
+    ${libdir}/vlc/plugins/*/*.a \
+"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-enable-subdir-objects.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-enable-subdir-objects.patch
new file mode 100644
index 0000000..9f0e708
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-enable-subdir-objects.patch
@@ -0,0 +1,13 @@
+Index: vlc-2.1.2/configure.ac
+===================================================================
+--- vlc-2.1.2.orig/configure.ac
++++ vlc-2.1.2/configure.ac
+@@ -24,7 +24,7 @@ AC_CANONICAL_BUILD
+ AC_CANONICAL_HOST
+ AC_PRESERVE_HELP_ORDER
+ 
+-AM_INIT_AUTOMAKE(tar-ustar color-tests foreign)
++AM_INIT_AUTOMAKE(tar-ustar color-tests foreign subdir-objects)
+ AC_CONFIG_HEADERS([config.h])
+ 
+ # Disable with "./configure --disable-silent-rules" or "make V=1"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0002-glibc-does-not-provide-strlcpy.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0002-glibc-does-not-provide-strlcpy.patch
new file mode 100644
index 0000000..6d2a46f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0002-glibc-does-not-provide-strlcpy.patch
@@ -0,0 +1,17 @@
+Index: vlc-2.1.2/src/input/subtitles.c
+===================================================================
+--- vlc-2.1.2.orig/src/input/subtitles.c
++++ vlc-2.1.2/src/input/subtitles.c
+@@ -44,6 +44,12 @@
+ #include "input_internal.h"
+ 
+ /**
++ * Drepper's alternative 
++ * http://en.wikibooks.org/wiki/C_Programming/C_Reference/nonstandard/strlcpy
++ */
++#define strlcpy(dst, src, n) *((char* ) mempcpy(dst, src, n)) = '\0'
++
++/**
+  * We are not going to autodetect more subtitle files than this.
+  */
+ #define MAX_SUBTITLE_FILES 128
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0003-use-am-path-libgcrypt.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0003-use-am-path-libgcrypt.patch
new file mode 100644
index 0000000..8e881d0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0003-use-am-path-libgcrypt.patch
@@ -0,0 +1,46 @@
+* The upstream tests for libgcrypt are awkward and not working.
+  - Requires libgcrypt-config, which seems broken?
+* AM_PATH_LIBGCRYPT exists for a reason, why not use it? KISS.
+* Upstream abandoned AM_PATH_LIBGCRYPT in the past...newer automake ok?
+
+Upstream status: Pending
+
+Index: vlc-2.2.1/configure.ac
+===================================================================
+--- vlc-2.2.1.orig/configure.ac
++++ vlc-2.2.1/configure.ac
+@@ -4017,25 +4017,19 @@ PKG_ENABLE_MODULES_VLC([LIBXML2], [xml],
+ dnl
+ dnl libgcrypt
+ dnl
++GCRYPT_LIBVER=1
++GCRYPT_REQ=1.1.94
+ AC_ARG_ENABLE(libgcrypt,
+   [  --disable-libgcrypt     gcrypt support (default enabled)])
+ AS_IF([test "${enable_libgcrypt}" != "no"], [
+-  AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
+-    libgcrypt-config --version >/dev/null || \
+-        AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
+-    AC_CHECK_LIB(gcrypt, gcry_control, [
+-      have_libgcrypt="yes"
+-      GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
+-      GCRYPT_LIBS="`libgcrypt-config --libs`"
+-    ], [
+-      AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or pass --disable-libgcrypt.])
+-    ], [`libgcrypt-config --libs`])
+-  ], [
+-    AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
+-  ], [#include <gcrypt.h>]
+-  )
++      AM_PATH_LIBGCRYPT($GCRYPT_LIBVER:$GCRYPT_REQ,
++      [
++          GCRYPT_CFLAGS="$LIBGCRYPT_CFLAGS"
++          GCRYPT_LIBS="$LIBGCRYPT_LIBS"
++      ],[
++          AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or use --disable-libgcrypt. Have a nice day.])
++      ])
+ ])
+-
+ AC_SUBST(GCRYPT_CFLAGS)
+ AC_SUBST(GCRYPT_LIBS)
+ AM_CONDITIONAL([HAVE_GCRYPT], [test "${have_libgcrypt}" = "yes"])
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-modules-gui-qt4-out-of-tree-build.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-modules-gui-qt4-out-of-tree-build.patch
new file mode 100644
index 0000000..53df1c6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-modules-gui-qt4-out-of-tree-build.patch
@@ -0,0 +1,19 @@
+* modules/gui/qt4/Makefile.am not B!=S friendly
+* Simple solution to missing directories in ${B}
+
+Upstream status: Pending
+
+Signed-off-by: Tim Orling <TicoTimo@gmail.com>
+
+Index: vlc-2.2.1/modules/gui/qt4/Makefile.am
+===================================================================
+--- vlc-2.2.1.orig/modules/gui/qt4/Makefile.am
++++ vlc-2.2.1/modules/gui/qt4/Makefile.am
+@@ -127,6 +127,7 @@ moc_verbose_0 = @echo "  MOC   " $@;
+ moc_verbose__0 = $(moc_verbose_0)
+ 
+ .hpp.moc.cpp:
++	[ -d $(dir $@) ] || mkdir -p $(dir $@)
+ 	$(moc_verbose)$(MOC) $(MOC_CPPFLAGS) -o $@ $<
+ 
+ # These MOC files depend on the configure settings:
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0005-libpostproc-header-check.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0005-libpostproc-header-check.patch
new file mode 100644
index 0000000..2d84ffd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0005-libpostproc-header-check.patch
@@ -0,0 +1,17 @@
+* Also look for postprocess.h under libpostproc/
+
+Upstream-status: Pending
+
+Index: vlc-2.1.4/configure.ac
+===================================================================
+--- vlc-2.1.4.orig/configure.ac
++++ vlc-2.1.4/configure.ac
+@@ -2444,7 +2444,7 @@ then
+       VLC_SAVE_FLAGS
+       CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
+       CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
+-      AC_CHECK_HEADERS(postproc/postprocess.h)
++      AC_CHECK_HEADERS(postproc/postprocess.h,[],[AC_CHECK_HEADERS(libpostproc/postprocess.h)])
+       VLC_ADD_PLUGIN([postproc])
+       VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS])
+       VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS])
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0006-make-opencv-configurable.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0006-make-opencv-configurable.patch
new file mode 100644
index 0000000..950c09b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0006-make-opencv-configurable.patch
@@ -0,0 +1,29 @@
+Recent opencv API changes break upstream filter and example.
+Make opencv explicitly configurable.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Tim Orling <TicoTimo@gmail.com>
+
+Index: vlc-2.1.4/configure.ac
+===================================================================
+--- vlc-2.1.4.orig/configure.ac
++++ vlc-2.1.4/configure.ac
+@@ -1693,7 +1693,16 @@ PKG_ENABLE_MODULES_VLC([BLURAY], [libblu
+ dnl
+ dnl  OpenCV wrapper and example filters
+ dnl
+-PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto])
++AC_ARG_ENABLE(opencv,
++  [AS_HELP_STRING([--disable-opencv],
++    [disable OpenCV computer vision filter and example (default auto)])])
++if test "${enable_opencv}" != "no"
++then
++    PKG_ENABLE_MODULES_VLC([OPENCV], 
++                           [opencv_example opencv_wrapper], 
++                           [opencv > 2.0], 
++                           (OpenCV (computer vision) filter), [auto])
++fi
+ 
+ 
+ dnl
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0007-use-vorbisidec.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0007-use-vorbisidec.patch
new file mode 100644
index 0000000..d05cf02
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0007-use-vorbisidec.patch
@@ -0,0 +1,19 @@
+* tremor provides libvorbisidec, use it instead of libvorbisdec
+
+Upstream-status: Pending
+
+Signed-off-by: Tim Orling <TicoTimo@gmail.com>
+
+Index: vlc-2.2.1/modules/codec/Makefile.am
+===================================================================
+--- vlc-2.2.1.orig/modules/codec/Makefile.am
++++ vlc-2.2.1/modules/codec/Makefile.am
+@@ -234,7 +234,7 @@ codec_LTLIBRARIES += $(LTLIBtheora)
+ libtremor_plugin_la_SOURCES = codec/vorbis.c
+ libtremor_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -DMODULE_NAME_IS_tremor
+ libtremor_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)'
+-libtremor_plugin_la_LIBADD = -lvorbisdec -logg
++libtremor_plugin_la_LIBADD = -lvorbisidec -logg
+ EXTRA_LTLIBRARIES += libtremor_plugin.la
+ codec_LTLIBRARIES += $(LTLIBtremor)
+ 
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0008-fix-luaL-checkint.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0008-fix-luaL-checkint.patch
new file mode 100644
index 0000000..145e1ab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0008-fix-luaL-checkint.patch
@@ -0,0 +1,279 @@
+* luaL_checkint and luaL_optint were deprecated in lua 5.3
+* replacement functions are luaL_checkinteger and luaL_optinteger
+
+Upstream-status: Pending
+
+Signed-off-by: Tim Orling <TicoTimo@gmail.com>
+
+Index: vlc-2.2.1/modules/lua/demux.c
+===================================================================
+--- vlc-2.2.1.orig/modules/lua/demux.c
++++ vlc-2.2.1/modules/lua/demux.c
+@@ -52,7 +52,7 @@ struct demux_sys_t
+ static int vlclua_demux_peek( lua_State *L )
+ {
+     demux_t *p_demux = (demux_t *)vlclua_get_this( L );
+-    int n = luaL_checkint( L, 1 );
++    int n = luaL_checkinteger( L, 1 );
+     const uint8_t *p_peek;
+ 
+     int i_peek = stream_Peek( p_demux->s, &p_peek, n );
+@@ -67,7 +67,7 @@ static int vlclua_demux_read( lua_State
+ {
+     demux_t *p_demux = (demux_t *)vlclua_get_this( L );
+     const uint8_t *p_read;
+-    int n = luaL_checkint( L, 1 );
++    int n = luaL_checkinteger( L, 1 );
+     int i_read = stream_Peek( p_demux->s, &p_read, n );
+ 
+     if( i_read > 0 )
+Index: vlc-2.2.1/modules/lua/libs/configuration.c
+===================================================================
+--- vlc-2.2.1.orig/modules/lua/libs/configuration.c
++++ vlc-2.2.1/modules/lua/libs/configuration.c
+@@ -84,7 +84,7 @@ static int vlclua_config_set( lua_State
+             break;
+ 
+         case VLC_VAR_INTEGER:
+-            config_PutInt( p_this, psz_name, luaL_checkint( L, 2 ) );
++            config_PutInt( p_this, psz_name, luaL_checkinteger( L, 2 ) );
+             break;
+ 
+         case VLC_VAR_BOOL:
+Index: vlc-2.2.1/modules/lua/libs/net.c
+===================================================================
+--- vlc-2.2.1.orig/modules/lua/libs/net.c
++++ vlc-2.2.1/modules/lua/libs/net.c
+@@ -202,7 +202,7 @@ static int vlclua_net_listen_tcp( lua_St
+ {
+     vlc_object_t *p_this = vlclua_get_this( L );
+     const char *psz_host = luaL_checkstring( L, 1 );
+-    int i_port = luaL_checkint( L, 2 );
++    int i_port = luaL_checkinteger( L, 2 );
+     int *pi_fd = net_ListenTCP( p_this, psz_host, i_port );
+     if( pi_fd == NULL )
+         return luaL_error( L, "Cannot listen on %s:%d", psz_host, i_port );
+@@ -274,7 +274,7 @@ static int vlclua_net_connect_tcp( lua_S
+ {
+     vlc_object_t *p_this = vlclua_get_this( L );
+     const char *psz_host = luaL_checkstring( L, 1 );
+-    int i_port = luaL_checkint( L, 2 );
++    int i_port = luaL_checkinteger( L, 2 );
+     int i_fd = net_Connect( p_this, psz_host, i_port, SOCK_STREAM, IPPROTO_TCP );
+     lua_pushinteger( L, vlclua_fd_map_safe( L, i_fd ) );
+     return 1;
+@@ -282,26 +282,26 @@ static int vlclua_net_connect_tcp( lua_S
+ 
+ static int vlclua_net_close( lua_State *L )
+ {
+-    int i_fd = luaL_checkint( L, 1 );
++    int i_fd = luaL_checkinteger( L, 1 );
+     vlclua_fd_unmap_safe( L, i_fd );
+     return 0;
+ }
+ 
+ static int vlclua_net_send( lua_State *L )
+ {
+-    int fd = vlclua_fd_get( L, luaL_checkint( L, 1 ) );
++    int fd = vlclua_fd_get( L, luaL_checkinteger( L, 1 ) );
+     size_t i_len;
+     const char *psz_buffer = luaL_checklstring( L, 2, &i_len );
+ 
+-    i_len = luaL_optint( L, 3, i_len );
++    i_len = luaL_optinteger( L, 3, i_len );
+     lua_pushinteger( L, (fd != -1) ? send( fd, psz_buffer, i_len, 0 ) : -1 );
+     return 1;
+ }
+ 
+ static int vlclua_net_recv( lua_State *L )
+ {
+-    int fd = vlclua_fd_get( L, luaL_checkint( L, 1 ) );
+-    size_t i_len = luaL_optint( L, 2, 1 );
++    int fd = vlclua_fd_get( L, luaL_checkinteger( L, 1 ) );
++    size_t i_len = luaL_optinteger( L, 2, 1 );
+     char psz_buffer[i_len];
+ 
+     ssize_t i_ret = (fd != -1) ? recv( fd, psz_buffer, i_len, 0 ) : -1;
+@@ -382,19 +382,19 @@ static int vlclua_fd_open( lua_State *L
+ #ifndef _WIN32
+ static int vlclua_fd_write( lua_State *L )
+ {
+-    int fd = vlclua_fd_get( L, luaL_checkint( L, 1 ) );
++    int fd = vlclua_fd_get( L, luaL_checkinteger( L, 1 ) );
+     size_t i_len;
+     const char *psz_buffer = luaL_checklstring( L, 2, &i_len );
+ 
+-    i_len = luaL_optint( L, 3, i_len );
++    i_len = luaL_optinteger( L, 3, i_len );
+     lua_pushinteger( L, (fd != -1) ? write( fd, psz_buffer, i_len ) : -1 );
+     return 1;
+ }
+ 
+ static int vlclua_fd_read( lua_State *L )
+ {
+-    int fd = vlclua_fd_get( L, luaL_checkint( L, 1 ) );
+-    size_t i_len = luaL_optint( L, 2, 1 );
++    int fd = vlclua_fd_get( L, luaL_checkinteger( L, 1 ) );
++    size_t i_len = luaL_optinteger( L, 2, 1 );
+     char psz_buffer[i_len];
+ 
+     ssize_t i_ret = (fd != -1) ? read( fd, psz_buffer, i_len ) : -1;
+Index: vlc-2.2.1/modules/lua/libs/osd.c
+===================================================================
+--- vlc-2.2.1.orig/modules/lua/libs/osd.c
++++ vlc-2.2.1/modules/lua/libs/osd.c
+@@ -67,7 +67,7 @@ static int vlclua_osd_icon( lua_State *L
+ {
+     const char *psz_icon = luaL_checkstring( L, 1 );
+     int i_icon = vlc_osd_icon_from_string( psz_icon );
+-    int i_chan = luaL_optint( L, 2, SPU_DEFAULT_CHANNEL );
++    int i_chan = luaL_optinteger( L, 2, SPU_DEFAULT_CHANNEL );
+     if( !i_icon )
+         return luaL_error( L, "\"%s\" is not a valid osd icon.", psz_icon );
+ 
+@@ -114,9 +114,9 @@ static int vlc_osd_position_from_string(
+ static int vlclua_osd_message( lua_State *L )
+ {
+     const char *psz_message = luaL_checkstring( L, 1 );
+-    int i_chan = luaL_optint( L, 2, SPU_DEFAULT_CHANNEL );
++    int i_chan = luaL_optinteger( L, 2, SPU_DEFAULT_CHANNEL );
+     const char *psz_position = luaL_optstring( L, 3, "top-right" );
+-    mtime_t duration = luaL_optint( L, 4, 1000000 );
++    mtime_t duration = luaL_optinteger( L, 4, 1000000 );
+ 
+     input_thread_t *p_input = vlclua_get_input_internal( L );
+     if( p_input )
+@@ -154,10 +154,10 @@ static int vlc_osd_slider_type_from_stri
+ 
+ static int vlclua_osd_slider( lua_State *L )
+ {
+-    int i_position = luaL_checkint( L, 1 );
++    int i_position = luaL_checkinteger( L, 1 );
+     const char *psz_type = luaL_checkstring( L, 2 );
+     int i_type = vlc_osd_slider_type_from_string( psz_type );
+-    int i_chan = luaL_optint( L, 3, SPU_DEFAULT_CHANNEL );
++    int i_chan = luaL_optinteger( L, 3, SPU_DEFAULT_CHANNEL );
+     if( !i_type )
+         return luaL_error( L, "\"%s\" is not a valid slider type.",
+                            psz_type );
+@@ -198,7 +198,7 @@ static int vlclua_spu_channel_register(
+ 
+ static int vlclua_spu_channel_clear( lua_State *L )
+ {
+-    int i_chan = luaL_checkint( L, 1 );
++    int i_chan = luaL_checkinteger( L, 1 );
+     input_thread_t *p_input = vlclua_get_input_internal( L );
+     if( !p_input )
+         return luaL_error( L, "Unable to find input." );
+Index: vlc-2.2.1/modules/lua/libs/playlist.c
+===================================================================
+--- vlc-2.2.1.orig/modules/lua/libs/playlist.c
++++ vlc-2.2.1/modules/lua/libs/playlist.c
+@@ -69,7 +69,7 @@ static int vlclua_playlist_next( lua_Sta
+ 
+ static int vlclua_playlist_skip( lua_State * L )
+ {
+-    int i_skip = luaL_checkint( L, 1 );
++    int i_skip = luaL_checkinteger( L, 1 );
+     playlist_t *p_playlist = vlclua_get_playlist_internal( L );
+     playlist_Skip( p_playlist, i_skip );
+     return 0;
+@@ -127,7 +127,7 @@ static int vlclua_playlist_random( lua_S
+ 
+ static int vlclua_playlist_gotoitem( lua_State * L )
+ {
+-    int i_id = luaL_checkint( L, 1 );
++    int i_id = luaL_checkinteger( L, 1 );
+     playlist_t *p_playlist = vlclua_get_playlist_internal( L );
+     PL_LOCK;
+     int i_ret = playlist_Control( p_playlist, PLAYLIST_VIEWPLAY,
+@@ -139,7 +139,7 @@ static int vlclua_playlist_gotoitem( lua
+ 
+ static int vlclua_playlist_delete( lua_State * L )
+ {
+-    int i_id = luaL_checkint( L, 1 );
++    int i_id = luaL_checkinteger( L, 1 );
+     playlist_t *p_playlist = vlclua_get_playlist_internal( L );
+     PL_LOCK;
+     playlist_item_t *p_item = playlist_ItemGetById( p_playlist, i_id );
+@@ -155,8 +155,8 @@ static int vlclua_playlist_delete( lua_S
+ 
+ static int vlclua_playlist_move( lua_State * L )
+ {
+-    int i_item = luaL_checkint( L, 1 );
+-    int i_target = luaL_checkint( L, 2 );
++    int i_item = luaL_checkinteger( L, 1 );
++    int i_target = luaL_checkinteger( L, 2 );
+     playlist_t *p_playlist = vlclua_get_playlist_internal( L );
+     PL_LOCK;
+     playlist_item_t *p_item = playlist_ItemGetById( p_playlist, i_item );
+Index: vlc-2.2.1/modules/lua/libs/stream.c
+===================================================================
+--- vlc-2.2.1.orig/modules/lua/libs/stream.c
++++ vlc-2.2.1/modules/lua/libs/stream.c
+@@ -101,7 +101,7 @@ static int vlclua_stream_read( lua_State
+ {
+     int i_read;
+     stream_t **pp_stream = (stream_t **)luaL_checkudata( L, 1, "stream" );
+-    int n = luaL_checkint( L, 2 );
++    int n = luaL_checkinteger( L, 2 );
+     uint8_t *p_read = malloc( n );
+     if( !p_read ) return vlclua_error( L );
+ 
+Index: vlc-2.2.1/modules/lua/libs/variables.c
+===================================================================
+--- vlc-2.2.1.orig/modules/lua/libs/variables.c
++++ vlc-2.2.1/modules/lua/libs/variables.c
+@@ -103,7 +103,7 @@ static int vlclua_tovalue( lua_State *L,
+             val->b_bool = luaL_checkboolean( L, -1 );
+             break;
+         case VLC_VAR_INTEGER:
+-            val->i_int = luaL_checkint( L, -1 );
++            val->i_int = luaL_checkinteger( L, -1 );
+             break;
+         case VLC_VAR_STRING:
+             val->psz_string = (char*)luaL_checkstring( L, -1 ); /* XXX: Beware, this only stays valid as long as (L,-1) stays in the stack */
+Index: vlc-2.2.1/modules/lua/libs/volume.c
+===================================================================
+--- vlc-2.2.1.orig/modules/lua/libs/volume.c
++++ vlc-2.2.1/modules/lua/libs/volume.c
+@@ -48,7 +48,7 @@
+ static int vlclua_volume_set( lua_State *L )
+ {
+     playlist_t *p_this = vlclua_get_playlist_internal( L );
+-    int i_volume = luaL_checkint( L, 1 );
++    int i_volume = luaL_checkinteger( L, 1 );
+     if( i_volume < 0 )
+         i_volume = 0;
+     int i_ret = playlist_VolumeSet( p_this, i_volume/(float)AOUT_VOLUME_DEFAULT );
+@@ -68,7 +68,7 @@ static int vlclua_volume_up( lua_State *
+     playlist_t *p_this = vlclua_get_playlist_internal( L );
+     float volume;
+ 
+-    playlist_VolumeUp( p_this, luaL_optint( L, 1, 1 ), &volume );
++    playlist_VolumeUp( p_this, luaL_optinteger( L, 1, 1 ), &volume );
+     lua_pushnumber( L, lroundf(volume * AOUT_VOLUME_DEFAULT) );
+     return 1;
+ }
+@@ -78,7 +78,7 @@ static int vlclua_volume_down( lua_State
+     playlist_t *p_this = vlclua_get_playlist_internal( L );
+     float volume;
+ 
+-    playlist_VolumeDown( p_this, luaL_optint( L, 1, 1 ), &volume );
++    playlist_VolumeDown( p_this, luaL_optinteger( L, 1, 1 ), &volume );
+     lua_pushnumber( L, lroundf(volume * AOUT_VOLUME_DEFAULT) );
+     return 1;
+ }
+Index: vlc-2.2.1/modules/lua/libs/win.c
+===================================================================
+--- vlc-2.2.1.orig/modules/lua/libs/win.c
++++ vlc-2.2.1/modules/lua/libs/win.c
+@@ -123,7 +123,7 @@ static int vlclua_console_init( lua_Stat
+ 
+ static int vlclua_console_wait( lua_State *L )
+ {
+-    int i_timeout = luaL_optint( L, 1, 0 );
++    int i_timeout = luaL_optinteger( L, 1, 0 );
+     DWORD status = WaitForSingleObject( GetConsole( L ), i_timeout );
+     lua_pushboolean( L, status == WAIT_OBJECT_0 );
+     return 1;
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0009-Avcodec-swscale-use-AV_PIX_FMT-consistently.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0009-Avcodec-swscale-use-AV_PIX_FMT-consistently.patch
new file mode 100644
index 0000000..cb3ba71
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0009-Avcodec-swscale-use-AV_PIX_FMT-consistently.patch
@@ -0,0 +1,293 @@
+From 427732a379893491eac27aeadff0e0b3e252d158 Mon Sep 17 00:00:00 2001
+From: Jean-Baptiste Kempf <jb@videolan.org>
+Date: Mon, 31 Aug 2015 08:19:00 +0200
+Subject: [PATCH] Avcodec/swscale: use AV_PIX_FMT consistently
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+(cherry picked from commit faa7bd357b1f9e07a6ffbc451a188773fad7a275)
+Signed-off-by: Rafaël Carré <funman@videolan.org>
+
+Conflicts:
+	modules/codec/avcodec/chroma.c
+	modules/codec/avcodec/video.c
+---
+ modules/codec/avcodec/chroma.c | 104 ++++++++++++++++++++---------------------
+ modules/codec/avcodec/video.c  |  10 ++--
+ modules/video_chroma/swscale.c |  28 +++++------
+ 3 files changed, 71 insertions(+), 71 deletions(-)
+
+diff --git a/modules/codec/avcodec/chroma.c b/modules/codec/avcodec/chroma.c
+index 393364b..c31f93d 100644
+--- a/modules/codec/avcodec/chroma.c
++++ b/modules/codec/avcodec/chroma.c
+@@ -62,77 +62,77 @@ static const struct
+ } chroma_table[] =
+ {
+     /* Planar YUV formats */
+-    {VLC_CODEC_I444, PIX_FMT_YUV444P, 0, 0, 0 },
+-    {VLC_CODEC_J444, PIX_FMT_YUVJ444P, 0, 0, 0 },
+-
+-    {VLC_CODEC_I440, PIX_FMT_YUV440P, 0, 0, 0 },
+-    {VLC_CODEC_J440, PIX_FMT_YUVJ440P, 0, 0, 0 },
+-
+-    {VLC_CODEC_I422, PIX_FMT_YUV422P, 0, 0, 0 },
+-    {VLC_CODEC_J422, PIX_FMT_YUVJ422P, 0, 0, 0 },
+-
+-    {VLC_CODEC_I420, PIX_FMT_YUV420P, 0, 0, 0 },
+-    {VLC_CODEC_YV12, PIX_FMT_YUV420P, 0, 0, 0 },
+-    {VLC_FOURCC('I','Y','U','V'), PIX_FMT_YUV420P, 0, 0, 0 },
+-    {VLC_CODEC_J420, PIX_FMT_YUVJ420P, 0, 0, 0 },
+-    {VLC_CODEC_I411, PIX_FMT_YUV411P, 0, 0, 0 },
+-    {VLC_CODEC_I410, PIX_FMT_YUV410P, 0, 0, 0 },
+-    {VLC_FOURCC('Y','V','U','9'), PIX_FMT_YUV410P, 0, 0, 0 },
+-
+-    {VLC_FOURCC('N','V','1','2'), PIX_FMT_NV12, 0, 0, 0 },
+-    {VLC_FOURCC('N','V','2','1'), PIX_FMT_NV21, 0, 0, 0 },
+-
+-    {VLC_CODEC_I420_9L, PIX_FMT_YUV420P9LE, 0, 0, 0 },
+-    {VLC_CODEC_I420_9B, PIX_FMT_YUV420P9BE, 0, 0, 0 },
+-    {VLC_CODEC_I420_10L, PIX_FMT_YUV420P10LE, 0, 0, 0 },
+-    {VLC_CODEC_I420_10B, PIX_FMT_YUV420P10BE, 0, 0, 0 },
++    {VLC_CODEC_I444, AV_PIX_FMT_YUV444P, 0, 0, 0 },
++    {VLC_CODEC_J444, AV_PIX_FMT_YUVJ444P, 0, 0, 0 },
++
++    {VLC_CODEC_I440, AV_PIX_FMT_YUV440P, 0, 0, 0 },
++    {VLC_CODEC_J440, AV_PIX_FMT_YUVJ440P, 0, 0, 0 },
++
++    {VLC_CODEC_I422, AV_PIX_FMT_YUV422P, 0, 0, 0 },
++    {VLC_CODEC_J422, AV_PIX_FMT_YUVJ422P, 0, 0, 0 },
++
++    {VLC_CODEC_I420, AV_PIX_FMT_YUV420P, 0, 0, 0 },
++    {VLC_CODEC_YV12, AV_PIX_FMT_YUV420P, 0, 0, 0 },
++    {VLC_FOURCC('I','Y','U','V'), AV_PIX_FMT_YUV420P, 0, 0, 0 },
++    {VLC_CODEC_J420, AV_PIX_FMT_YUVJ420P, 0, 0, 0 },
++    {VLC_CODEC_I411, AV_PIX_FMT_YUV411P, 0, 0, 0 },
++    {VLC_CODEC_I410, AV_PIX_FMT_YUV410P, 0, 0, 0 },
++    {VLC_FOURCC('Y','V','U','9'), AV_PIX_FMT_YUV410P, 0, 0, 0 },
++
++    {VLC_FOURCC('N','V','1','2'), AV_PIX_FMT_NV12, 0, 0, 0 },
++    {VLC_FOURCC('N','V','2','1'), AV_PIX_FMT_NV21, 0, 0, 0 },
++
++    {VLC_CODEC_I420_9L, AV_PIX_FMT_YUV420P9LE, 0, 0, 0 },
++    {VLC_CODEC_I420_9B, AV_PIX_FMT_YUV420P9BE, 0, 0, 0 },
++    {VLC_CODEC_I420_10L, AV_PIX_FMT_YUV420P10LE, 0, 0, 0 },
++    {VLC_CODEC_I420_10B, AV_PIX_FMT_YUV420P10BE, 0, 0, 0 },
+ #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51,13,0)
+-    {VLC_CODEC_I422_9L, PIX_FMT_YUV422P9LE, 0, 0, 0 },
+-    {VLC_CODEC_I422_9B, PIX_FMT_YUV422P9BE, 0, 0, 0 },
++    {VLC_CODEC_I422_9L, AV_PIX_FMT_YUV422P9LE, 0, 0, 0 },
++    {VLC_CODEC_I422_9B, AV_PIX_FMT_YUV422P9BE, 0, 0, 0 },
+ #endif
+-    {VLC_CODEC_I422_10L, PIX_FMT_YUV422P10LE, 0, 0, 0 },
+-    {VLC_CODEC_I422_10B, PIX_FMT_YUV422P10BE, 0, 0, 0 },
++    {VLC_CODEC_I422_10L, AV_PIX_FMT_YUV422P10LE, 0, 0, 0 },
++    {VLC_CODEC_I422_10B, AV_PIX_FMT_YUV422P10BE, 0, 0, 0 },
+ 
+-    {VLC_CODEC_YUV420A, PIX_FMT_YUVA420P, 0, 0, 0 },
++    {VLC_CODEC_YUV420A, AV_PIX_FMT_YUVA420P, 0, 0, 0 },
+ #if LIBAVUTIL_VERSION_CHECK( 51, 45, 0, 74, 100 )
+     {VLC_CODEC_YUV422A, AV_PIX_FMT_YUVA422P, 0, 0, 0 },
+ #endif
+ 
+-    {VLC_CODEC_I444_9L, PIX_FMT_YUV444P9LE, 0, 0, 0 },
+-    {VLC_CODEC_I444_9B, PIX_FMT_YUV444P9BE, 0, 0, 0 },
+-    {VLC_CODEC_I444_10L, PIX_FMT_YUV444P10LE, 0, 0, 0 },
+-    {VLC_CODEC_I444_10B, PIX_FMT_YUV444P10BE, 0, 0, 0 },
+-    {VLC_CODEC_I444_16L, PIX_FMT_YUV444P16LE, 0, 0, 0 },
+-    {VLC_CODEC_I444_16B, PIX_FMT_YUV444P16BE, 0, 0, 0 },
++    {VLC_CODEC_I444_9L, AV_PIX_FMT_YUV444P9LE, 0, 0, 0 },
++    {VLC_CODEC_I444_9B, AV_PIX_FMT_YUV444P9BE, 0, 0, 0 },
++    {VLC_CODEC_I444_10L, AV_PIX_FMT_YUV444P10LE, 0, 0, 0 },
++    {VLC_CODEC_I444_10B, AV_PIX_FMT_YUV444P10BE, 0, 0, 0 },
++    {VLC_CODEC_I444_16L, AV_PIX_FMT_YUV444P16LE, 0, 0, 0 },
++    {VLC_CODEC_I444_16B, AV_PIX_FMT_YUV444P16BE, 0, 0, 0 },
+ 
+     /* Packed YUV formats */
+-    {VLC_CODEC_YUYV, PIX_FMT_YUYV422, 0, 0, 0 },
+-    {VLC_FOURCC('Y','U','Y','V'), PIX_FMT_YUYV422, 0, 0, 0 },
+-    {VLC_CODEC_UYVY, PIX_FMT_UYVY422, 0, 0, 0 },
+-    {VLC_FOURCC('Y','4','1','1'), PIX_FMT_UYYVYY411, 0, 0, 0 },
++    {VLC_CODEC_YUYV, AV_PIX_FMT_YUYV422, 0, 0, 0 },
++    {VLC_FOURCC('Y','U','Y','V'), AV_PIX_FMT_YUYV422, 0, 0, 0 },
++    {VLC_CODEC_UYVY, AV_PIX_FMT_UYVY422, 0, 0, 0 },
++    {VLC_FOURCC('Y','4','1','1'), AV_PIX_FMT_UYYVYY411, 0, 0, 0 },
+ 
+     /* Packed RGB formats */
+-    VLC_RGB( VLC_FOURCC('R','G','B','4'), PIX_FMT_RGB4, PIX_FMT_BGR4, 0x10, 0x06, 0x01 )
+-    VLC_RGB( VLC_FOURCC('R','G','B','8'), PIX_FMT_RGB8, PIX_FMT_BGR8, 0xC0, 0x38, 0x07 )
++    VLC_RGB( VLC_FOURCC('R','G','B','4'), AV_PIX_FMT_RGB4, AV_PIX_FMT_BGR4, 0x10, 0x06, 0x01 )
++    VLC_RGB( VLC_FOURCC('R','G','B','8'), AV_PIX_FMT_RGB8, AV_PIX_FMT_BGR8, 0xC0, 0x38, 0x07 )
+ 
+-    VLC_RGB( VLC_CODEC_RGB15, PIX_FMT_RGB555, PIX_FMT_BGR555, 0x7c00, 0x03e0, 0x001f )
+-    VLC_RGB( VLC_CODEC_RGB16, PIX_FMT_RGB565, PIX_FMT_BGR565, 0xf800, 0x07e0, 0x001f )
+-    VLC_RGB( VLC_CODEC_RGB24, PIX_FMT_BGR24, PIX_FMT_RGB24, 0xff0000, 0x00ff00, 0x0000ff )
++    VLC_RGB( VLC_CODEC_RGB15, AV_PIX_FMT_RGB555, AV_PIX_FMT_BGR555, 0x7c00, 0x03e0, 0x001f )
++    VLC_RGB( VLC_CODEC_RGB16, AV_PIX_FMT_RGB565, AV_PIX_FMT_BGR565, 0xf800, 0x07e0, 0x001f )
++    VLC_RGB( VLC_CODEC_RGB24, AV_PIX_FMT_BGR24, AV_PIX_FMT_RGB24, 0xff0000, 0x00ff00, 0x0000ff )
+ 
+-    VLC_RGB( VLC_CODEC_RGB32, PIX_FMT_RGB32, PIX_FMT_BGR32, 0x00ff0000, 0x0000ff00, 0x000000ff )
+-    VLC_RGB( VLC_CODEC_RGB32, PIX_FMT_RGB32_1, PIX_FMT_BGR32_1, 0xff000000, 0x00ff0000, 0x0000ff00 )
++    VLC_RGB( VLC_CODEC_RGB32, AV_PIX_FMT_RGB32, AV_PIX_FMT_BGR32, 0x00ff0000, 0x0000ff00, 0x000000ff )
++    VLC_RGB( VLC_CODEC_RGB32, AV_PIX_FMT_RGB32_1, AV_PIX_FMT_BGR32_1, 0xff000000, 0x00ff0000, 0x0000ff00 )
+ 
+ #ifdef AV_PIX_FMT_0BGR32
+     VLC_RGB( VLC_CODEC_RGB32, AV_PIX_FMT_0BGR32, AV_PIX_FMT_0RGB32, 0x000000ff, 0x0000ff00, 0x00ff0000 )
+ #endif
+ 
+-    {VLC_CODEC_RGBA, PIX_FMT_RGBA, 0, 0, 0 },
+-    {VLC_CODEC_ARGB, PIX_FMT_ARGB, 0, 0, 0 },
+-    {VLC_CODEC_BGRA, PIX_FMT_BGRA, 0, 0, 0 },
+-    {VLC_CODEC_GREY, PIX_FMT_GRAY8, 0, 0, 0},
++    {VLC_CODEC_RGBA, AV_PIX_FMT_RGBA, 0, 0, 0 },
++    {VLC_CODEC_ARGB, AV_PIX_FMT_ARGB, 0, 0, 0 },
++    {VLC_CODEC_BGRA, AV_PIX_FMT_BGRA, 0, 0, 0 },
++    {VLC_CODEC_GREY, AV_PIX_FMT_GRAY8, 0, 0, 0},
+ 
+      /* Paletized RGB */
+-    {VLC_CODEC_RGBP, PIX_FMT_PAL8, 0, 0, 0},
++    {VLC_CODEC_RGBP, AV_PIX_FMT_PAL8, 0, 0, 0},
+ 
+ #if LIBAVUTIL_VERSION_CHECK(51, 42, 0, 74,100)
+     {VLC_CODEC_GBR_PLANAR, AV_PIX_FMT_GBRP, 0, 0, 0 },
+@@ -201,5 +201,5 @@ int FindFfmpegChroma( vlc_fourcc_t fourcc )
+     for( int i = 0; chroma_table[i].i_chroma != 0; i++ )
+         if( chroma_table[i].i_chroma == fourcc )
+             return chroma_table[i].i_chroma_id;
+-    return PIX_FMT_NONE;
++    return AV_PIX_FMT_NONE;
+ }
+diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
+index c115db9..ae600e8 100644
+--- a/modules/codec/avcodec/video.c
++++ b/modules/codec/avcodec/video.c
+@@ -1004,7 +1004,7 @@ static picture_t *lavc_dr_GetFrame(struct AVCodecContext *ctx,
+     if (GetVlcChroma(&dec->fmt_out.video, ctx->pix_fmt) != VLC_SUCCESS)
+         return NULL;
+     dec->fmt_out.i_codec = dec->fmt_out.video.i_chroma;
+-    if (ctx->pix_fmt == PIX_FMT_PAL8)
++    if (ctx->pix_fmt == AV_PIX_FMT_PAL8)
+         return NULL;
+ 
+     int width = frame->width;
+@@ -1180,7 +1180,7 @@ static picture_t *ffmpeg_dr_GetFrameBuf(struct AVCodecContext *p_context)
+     if (GetVlcChroma(&p_dec->fmt_out.video, p_context->pix_fmt) != VLC_SUCCESS)
+         goto no_dr;
+ 
+-    if (p_context->pix_fmt == PIX_FMT_PAL8)
++    if (p_context->pix_fmt == AV_PIX_FMT_PAL8)
+         goto no_dr;
+ 
+     p_dec->fmt_out.i_codec = p_dec->fmt_out.video.i_chroma;
+@@ -1215,7 +1215,7 @@ static picture_t *ffmpeg_dr_GetFrameBuf(struct AVCodecContext *p_context)
+             goto no_dr;
+     }
+ 
+-    if( p_context->pix_fmt == PIX_FMT_YUV422P )
++    if( p_context->pix_fmt == AV_PIX_FMT_YUV422P )
+     {
+         if( 2 * p_pic->p[1].i_pitch != p_pic->p[0].i_pitch ||
+             2 * p_pic->p[2].i_pitch != p_pic->p[0].i_pitch )
+@@ -1325,7 +1325,7 @@ static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *p_context,
+ 
+     /* Enumerate available formats */
+     bool can_hwaccel = false;
+-    for( size_t i = 0; pi_fmt[i] != PIX_FMT_NONE; i++ )
++    for( size_t i = 0; pi_fmt[i] != AV_PIX_FMT_NONE; i++ )
+     {
+         const AVPixFmtDescriptor *dsc = av_pix_fmt_desc_get(pi_fmt[i]);
+         if (dsc == NULL)
+@@ -1352,7 +1352,7 @@ static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *p_context,
+     if( p_va == NULL )
+         goto end;
+ 
+-    for( size_t i = 0; pi_fmt[i] != PIX_FMT_NONE; i++ )
++    for( size_t i = 0; pi_fmt[i] != AV_PIX_FMT_NONE; i++ )
+     {
+         if( p_va->pix_fmt != pi_fmt[i] )
+             continue;
+diff --git a/modules/video_chroma/swscale.c b/modules/video_chroma/swscale.c
+index 569e0f5..4e0ecf1 100644
+--- a/modules/video_chroma/swscale.c
++++ b/modules/video_chroma/swscale.c
+@@ -257,35 +257,35 @@ static void FixParameters( int *pi_fmt, bool *pb_has_a, bool *pb_swap_uv, vlc_fo
+     switch( fmt )
+     {
+     case VLC_CODEC_YUV422A:
+-        *pi_fmt = PIX_FMT_YUV422P;
++        *pi_fmt = AV_PIX_FMT_YUV422P;
+         *pb_has_a = true;
+         break;
+     case VLC_CODEC_YUV420A:
+-        *pi_fmt = PIX_FMT_YUV420P;
++        *pi_fmt = AV_PIX_FMT_YUV420P;
+         *pb_has_a = true;
+         break;
+     case VLC_CODEC_YUVA:
+-        *pi_fmt = PIX_FMT_YUV444P;
++        *pi_fmt = AV_PIX_FMT_YUV444P;
+         *pb_has_a = true;
+         break;
+     case VLC_CODEC_RGBA:
+-        *pi_fmt = PIX_FMT_BGR32;
++        *pi_fmt = AV_PIX_FMT_BGR32;
+         *pb_has_a = true;
+         break;
+     case VLC_CODEC_ARGB:
+-        *pi_fmt = PIX_FMT_BGR32_1;
++        *pi_fmt = AV_PIX_FMT_BGR32_1;
+         *pb_has_a = true;
+         break;
+     case VLC_CODEC_BGRA:
+-        *pi_fmt = PIX_FMT_RGB32;
++        *pi_fmt = AV_PIX_FMT_RGB32;
+         *pb_has_a = true;
+         break;
+     case VLC_CODEC_YV12:
+-        *pi_fmt = PIX_FMT_YUV420P;
++        *pi_fmt = AV_PIX_FMT_YUV420P;
+         *pb_swap_uv = true;
+         break;
+     case VLC_CODEC_YV9:
+-        *pi_fmt = PIX_FMT_YUV410P;
++        *pi_fmt = AV_PIX_FMT_YUV410P;
+         *pb_swap_uv = true;
+         break;
+     default:
+@@ -314,7 +314,7 @@ static int GetParameters( ScalerConfiguration *p_cfg,
+     {
+         if( p_fmti->i_chroma == VLC_CODEC_YUVP && ALLOW_YUVP )
+         {
+-            i_fmti = i_fmto = PIX_FMT_GRAY8;
++            i_fmti = i_fmto = AV_PIX_FMT_GRAY8;
+             i_sws_flags = SWS_POINT;
+         }
+     }
+@@ -327,9 +327,9 @@ static int GetParameters( ScalerConfiguration *p_cfg,
+      * Without SWS_ACCURATE_RND the quality is really bad for some conversions */
+     switch( i_fmto )
+     {
+-    case PIX_FMT_ARGB:
+-    case PIX_FMT_RGBA:
+-    case PIX_FMT_ABGR:
++    case AV_PIX_FMT_ARGB:
++    case AV_PIX_FMT_RGBA:
++    case AV_PIX_FMT_ABGR:
+         i_sws_flags |= SWS_ACCURATE_RND;
+         break;
+     }
+@@ -403,8 +403,8 @@ static int Init( filter_t *p_filter )
+     const unsigned i_fmto_visible_width = p_fmto->i_visible_width * p_sys->i_extend_factor;
+     for( int n = 0; n < (cfg.b_has_a ? 2 : 1); n++ )
+     {
+-        const int i_fmti = n == 0 ? cfg.i_fmti : PIX_FMT_GRAY8;
+-        const int i_fmto = n == 0 ? cfg.i_fmto : PIX_FMT_GRAY8;
++        const int i_fmti = n == 0 ? cfg.i_fmti : AV_PIX_FMT_GRAY8;
++        const int i_fmto = n == 0 ? cfg.i_fmto : AV_PIX_FMT_GRAY8;
+         struct SwsContext *ctx;
+ 
+         ctx = sws_getContext( i_fmti_visible_width, p_fmti->i_visible_height, i_fmti,
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0010-SWSCALE-fix-compilation-with-4.x.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0010-SWSCALE-fix-compilation-with-4.x.patch
new file mode 100644
index 0000000..56744e7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0010-SWSCALE-fix-compilation-with-4.x.patch
@@ -0,0 +1,45 @@
+From 6fa8a4a9bb64ff34328aae46acd600f8502b2c05 Mon Sep 17 00:00:00 2001
+From: Jean-Baptiste Kempf <jb@videolan.org>
+Date: Mon, 31 Aug 2015 09:07:39 +0200
+Subject: [PATCH] SWSCALE: fix compilation with 4.x
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+(cherry picked from commit 2b23857c68622edda76b72b74aeb3d943ee277c9)
+Signed-off-by: Rafaël Carré <funman@videolan.org>
+---
+ modules/video_chroma/swscale.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/modules/video_chroma/swscale.c b/modules/video_chroma/swscale.c
+index 4e0ecf1..26d0d6f 100644
+--- a/modules/video_chroma/swscale.c
++++ b/modules/video_chroma/swscale.c
+@@ -36,6 +36,7 @@
+ #include <vlc_cpu.h>
+ 
+ #include <libswscale/swscale.h>
++#include <libswscale/version.h>
+ 
+ #ifdef __APPLE__
+ # include <TargetConditionals.h>
+@@ -235,6 +236,7 @@ static int GetSwsCpuMask(void)
+ {
+     int i_sws_cpu = 0;
+ 
++#if LIBSWSCALE_VERSION_MAJOR < 4
+ #if defined(__i386__) || defined(__x86_64__)
+     if( vlc_CPU_MMX() )
+         i_sws_cpu |= SWS_CPU_CAPS_MMX;
+@@ -248,6 +250,7 @@ static int GetSwsCpuMask(void)
+     if( vlc_CPU_ALTIVEC() )
+         i_sws_cpu |= SWS_CPU_CAPS_ALTIVEC;
+ #endif
++#endif
+ 
+     return i_sws_cpu;
+ }
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_2.2.2.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_2.2.2.bb
new file mode 100644
index 0000000..b5be04c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_2.2.2.bb
@@ -0,0 +1,19 @@
+require ${BPN}.inc
+
+# work around build failure
+EXTRA_OECONF += " --enable-libxml2=no"
+
+SRC_URI += "file://0001-enable-subdir-objects.patch \
+            file://0002-glibc-does-not-provide-strlcpy.patch \
+            file://0003-use-am-path-libgcrypt.patch \
+            file://0004-modules-gui-qt4-out-of-tree-build.patch \
+            file://0005-libpostproc-header-check.patch \
+            file://0006-make-opencv-configurable.patch \
+            file://0007-use-vorbisidec.patch \
+            file://0008-fix-luaL-checkint.patch \
+            file://0009-Avcodec-swscale-use-AV_PIX_FMT-consistently.patch \
+            file://0010-SWSCALE-fix-compilation-with-4.x.patch \
+"
+
+SRC_URI[md5sum] = "f98d60f0f59ef72b6e3407f2ff09bda6"
+SRC_URI[sha256sum] = "9ad23128be16f9b40ed772961272cb0748ed8e4aa1bc79c129e589feebea5fb5"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools/0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools/0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch
new file mode 100644
index 0000000..b623dbf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools/0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch
@@ -0,0 +1,49 @@
+Upstream-Status: Backport
+
+Backport patch to fix CVE-2015-6749 from:
+
+https://trac.xiph.org/ticket/2212
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+From 04815d3e1bfae3a6cdfb2c25358a5a72b61299f7 Mon Sep 17 00:00:00 2001
+From: Mark Harris <mark.hsj@gmail.com>
+Date: Sun, 30 Aug 2015 05:54:46 -0700
+Subject: [PATCH] oggenc: Fix large alloca on bad AIFF input
+
+Fixes #2212
+---
+ oggenc/audio.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/oggenc/audio.c b/oggenc/audio.c
+index 477da8c..4921fb9 100644
+--- a/oggenc/audio.c
++++ b/oggenc/audio.c
+@@ -245,8 +245,8 @@ static int aiff_permute_matrix[6][6] =
+ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
+ {
+     int aifc; /* AIFC or AIFF? */
+-    unsigned int len;
+-    unsigned char *buffer;
++    unsigned int len, readlen;
++    unsigned char buffer[22];
+     unsigned char buf2[8];
+     aiff_fmt format;
+     aifffile *aiff = malloc(sizeof(aifffile));
+@@ -269,9 +269,9 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
+         return 0; /* Weird common chunk */
+     }
+ 
+-    buffer = alloca(len);
+-
+-    if(fread(buffer,1,len,in) < len)
++    readlen = len < sizeof(buffer) ? len : sizeof(buffer);
++    if(fread(buffer,1,readlen,in) < readlen ||
++       (len > readlen && !seek_forward(in, len-readlen)))
+     {
+         fprintf(stderr, _("Warning: Unexpected EOF in reading AIFF header\n"));
+         return 0;
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.0.bb
new file mode 100644
index 0000000..2683555
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Vorbis Tools"
+DESCRIPTION = "Ogg Vorbis is a high-quality lossy audio codec \
+that is free of intellectual property restrictions. vorbis-tools \
+include some command line applications to use the libraries."
+HOMEPAGE = "http://www.vorbis.com/"
+BUGTRACKER = "https://trac.xiph.org"
+SECTION = "multimedia"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "libogg libvorbis curl libao"
+
+SRC_URI = "http://downloads.xiph.org/releases/vorbis/${BP}.tar.gz \
+           file://0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch \
+          "
+
+SRC_URI[md5sum] = "567e0fb8d321b2cd7124f8208b8b90e6"
+SRC_URI[sha256sum] = "a389395baa43f8e5a796c99daf62397e435a7e73531c9f44d9084055a05d22bc"
+
+inherit autotools pkgconfig gettext
+
+PACKAGECONFIG ??= "flac"
+PACKAGECONFIG[flac] = ",--without-flac,flac,libflac"
+PACKAGECONFIG[speex] = ",--without-speex,speex,speex"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart-2.0_1.9.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart-2.0_1.9.0.bb
new file mode 100644
index 0000000..44f135a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart-2.0_1.9.0.bb
@@ -0,0 +1,7 @@
+require libmediaart.inc
+
+SRC_URI = "${GNOME_MIRROR}/libmediaart/1.9/libmediaart-${PV}.tar.xz"
+SRC_URI[md5sum] = "0b65d64398d2f3dff89534c9dfffab4f"
+SRC_URI[sha256sum] = "94668adb29d4dc3115b0fd105942ebd5ca6f5f9dbb2afa8a191a73a747dd506f"
+
+S = "${WORKDIR}/libmediaart-${PV}"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart.inc b/import-layers/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart.inc
new file mode 100644
index 0000000..57dca9c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Library tasked with managing, extracting and handling media art caches"
+
+LICENSE = "LGPLv2+ & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c \
+                    file://libmediaart/extract.c;endline=18;md5=dff2b6328ab067b5baadc135f9876c36 \
+                    file://tests/mediaarttest.c;endline=18;md5=067106eaa1f7a9d918759a096667f18e"
+
+DEPENDS = "glib-2.0 gdk-pixbuf"
+
+GNOME_COMPRESS_TYPE = "xz"
+
+inherit gnomebase gtk-doc gobject-introspection
+
+EXTRA_OECONF = "--disable-qt --enable-gdkpixbuf"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart_0.7.0.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart_0.7.0.bb
new file mode 100644
index 0000000..eb45974
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart_0.7.0.bb
@@ -0,0 +1,4 @@
+require libmediaart.inc
+
+SRC_URI[archive.md5sum] = "1a44933d4cd0064e3c76d8d0ddacddc9"
+SRC_URI[archive.sha256sum] = "3a9dffcad862aed7c0921579b93080d694b8a66f3676bfee8037867f653a1cd3"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/0001-Fix-enable-vfp-flag.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/0001-Fix-enable-vfp-flag.patch
new file mode 100644
index 0000000..aff1cb1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/0001-Fix-enable-vfp-flag.patch
@@ -0,0 +1,41 @@
+Upstream-Status: Inappropriate [configuration]
+
+From 1921498bcc06408e8b051a3a9e9ce4182998f748 Mon Sep 17 00:00:00 2001
+From: David Schleef <ds@schleef.org>
+Date: Fri, 8 Apr 2011 10:05:49 -0700
+Subject: [PATCH 10/10] Fix --enable-vfp flag
+
+Patch from Christophe Lyon, fixes #36084.
+---
+ configure.ac           |    4 ++--
+ liboil/arm/Makefile.am |    1 +
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 98c81fb..407d88c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -188,8 +188,8 @@ fi
+ AC_ARG_ENABLE(vfp,
+   AC_HELP_STRING([--enable-vfp],[compile with Vector Floating-point unit support]),
+   enable_vfp=$enableval,enable_vfp=yes)
+-if test "x$enable-vfp" = xyes -a x$HAVE_GCC_ASM = xyes -a x$HAVE_ARM = xyes; then
+-  AS_COMPILER_FLAG(["-Wa,-mfpu=vfp"],
++if test "x$enable_vfp" = xyes -a x$HAVE_GCC_ASM = xyes -a x$HAVE_ARM = xyes; then
++  AS_COMPILER_FLAG(["-mfpu=vfp"],
+     [VFP_CFLAGS="$VFP_CFLAGS -mfpu=vfp"],
+     true)
+   #AS_COMPILER_FLAG(["-Wa,-mfloat-abi=softfp"],
+diff --git a/liboil/arm/Makefile.am b/liboil/arm/Makefile.am
+index ead08ed..cd8d9fa 100644
+--- a/liboil/arm/Makefile.am
++++ b/liboil/arm/Makefile.am
+@@ -6,4 +6,5 @@ libarm_la_SOURCES = \
+ 	math_vfp_asm.S
+ 
+ libarm_la_CFLAGS = $(LIBOIL_CFLAGS) $(VFP_CFLAGS)
++libarm_la_CCASFLAGS = $(LIBOIL_CFLAGS) $(VFP_CFLAGS)
+ 
+-- 
+1.7.6
+
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/fix-unaligned-whitelist.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/fix-unaligned-whitelist.patch
new file mode 100644
index 0000000..c8e3c1f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/fix-unaligned-whitelist.patch
@@ -0,0 +1,19 @@
+Upstream: https://bugs.freedesktop.org/show_bug.cgi?id=31358
+
+configure: fix whitelisting of x86_64 unaligned memory access
+
+Fix typo in whitelist so cross-compile works for x86_64.
+
+Upstream-Status: Inappropriate [configuration]
+
+--- liboil-0.3.17/m4/as-unaligned-access.m4.orig	2009-02-26 14:40:08.000000000 -0500
++++ liboil-0.3.17/m4/as-unaligned-access.m4	2010-11-03 12:19:55.000000000 -0400
+@@ -9,7 +9,7 @@
+         _AS_ECHO_N([(blacklisted) ])
+         as_cv_unaligned_access=no
+ 	;;
+-      i?86*|x86_64|amd64|powerpc*|m68k*|cris*)
++      i?86*|x86_64*|amd64*|powerpc*|m68k*|cris*)
+         _AS_ECHO_N([(whitelisted) ])
+         as_cv_unaligned_access=yes
+ 	;;
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/liboil_fix_for_x32.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/liboil_fix_for_x32.patch
new file mode 100644
index 0000000..473380e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/liboil_fix_for_x32.patch
@@ -0,0 +1,222 @@
+Upstream-Status: Pending
+
+Make the assembly syntax compatible with x32 gcc. Othewise x32 gcc throws errors.
+
+Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+2011/12/01
+
+
+Index: liboil-0.3.17/liboil/amd64/wavelet.c
+===================================================================
+--- liboil-0.3.17.orig/liboil/amd64/wavelet.c
++++ liboil-0.3.17/liboil/amd64/wavelet.c
+@@ -21,14 +21,14 @@ deinterleave2_asm (int16_t *d1, int16_t 
+   asm volatile ("\n"
+       "  sub $2, %%rcx\n"
+       "1:\n"
+-      "  movw (%1,%%rcx,4), %%ax\n"
+-      "  movw %%ax, (%0,%%rcx,2)\n"
+-      "  movw 2(%1,%%rcx,4), %%ax\n"
+-      "  movw %%ax, (%2,%%rcx,2)\n"
+-      "  movw 4(%1,%%rcx,4), %%ax\n"
+-      "  movw %%ax, 2(%0,%%rcx,2)\n"
+-      "  movw 6(%1,%%rcx,4), %%ax\n"
+-      "  movw %%ax, 2(%2,%%rcx,2)\n"
++      "  movw (%q1,%%rcx,4), %%ax\n"
++      "  movw %%ax, (%q0,%%rcx,2)\n"
++      "  movw 2(%q1,%%rcx,4), %%ax\n"
++      "  movw %%ax, (%q2,%%rcx,2)\n"
++      "  movw 4(%q1,%%rcx,4), %%ax\n"
++      "  movw %%ax, 2(%q0,%%rcx,2)\n"
++      "  movw 6(%q1,%%rcx,4), %%ax\n"
++      "  movw %%ax, 2(%q2,%%rcx,2)\n"
+       "  sub $2, %%rcx\n"
+       "  jge 1b\n"
+       : "+r" (d1), "+r" (s_2xn), "+r" (d2), "+c" (n)
+@@ -53,20 +53,20 @@ deinterleave2_mmx (int16_t *d1, int16_t 
+   asm volatile ("\n"
+       "  xor %%rcx, %%rcx\n"
+       "1:\n"
+-      "  movq (%1,%%rcx,4), %%mm0\n"
+-      "  movq 8(%1,%%rcx,4), %%mm1\n"
++      "  movq (%q1,%%rcx,4), %%mm0\n"
++      "  movq 8(%q1,%%rcx,4), %%mm1\n"
+       "  pslld $16, %%mm0\n"
+       "  pslld $16, %%mm1\n"
+       "  psrad $16, %%mm0\n"
+       "  psrad $16, %%mm1\n"
+       "  packssdw %%mm1, %%mm0\n"
+-      "  movq %%mm0, (%0,%%rcx,2)\n"
+-      "  movq (%1,%%rcx,4), %%mm0\n"
+-      "  movq 8(%1,%%rcx,4), %%mm1\n"
++      "  movq %%mm0, (%q0,%%rcx,2)\n"
++      "  movq (%q1,%%rcx,4), %%mm0\n"
++      "  movq 8(%q1,%%rcx,4), %%mm1\n"
+       "  psrad $16, %%mm0\n"
+       "  psrad $16, %%mm1\n"
+       "  packssdw %%mm1, %%mm0\n"
+-      "  movq %%mm0, (%2,%%rcx,2)\n"
++      "  movq %%mm0, (%q2,%%rcx,2)\n"
+       "  add $4, %%rcx\n"
+       "  cmp %3, %%ecx\n"
+       "  jl 1b\n"
+@@ -93,10 +93,10 @@ deinterleave2_mmx_2 (int16_t *d1, int16_
+   asm volatile ("\n"
+       "  xor %%rcx, %%rcx\n"
+       "1:\n"
+-      "  pshufw $0xd8, (%1,%%rcx,4), %%mm0\n"
+-      "  movd %%mm0, (%0,%%rcx,2)\n"
+-      "  pshufw $0x8d, (%1,%%rcx,4), %%mm0\n"
+-      "  movd %%mm0, (%2,%%rcx,2)\n"
++      "  pshufw $0xd8, (%q1,%%rcx,4), %%mm0\n"
++      "  movd %%mm0, (%q0,%%rcx,2)\n"
++      "  pshufw $0x8d, (%q1,%%rcx,4), %%mm0\n"
++      "  movd %%mm0, (%q2,%%rcx,2)\n"
+       "  add $2, %%rcx\n"
+       "  cmp %3, %%ecx\n"
+       "  jl 1b\n"
+@@ -123,16 +123,16 @@ deinterleave2_mmx_3 (int16_t *d1, int16_
+   asm volatile ("\n"
+       "  xor %%rcx, %%rcx\n"
+       "1:\n"
+-      "  movq (%1,%%rcx,4), %%mm1\n"
+-      "  movq (%1,%%rcx,4), %%mm2\n"
+-      "  movq 8(%1,%%rcx,4), %%mm0\n"
++      "  movq (%q1,%%rcx,4), %%mm1\n"
++      "  movq (%q1,%%rcx,4), %%mm2\n"
++      "  movq 8(%q1,%%rcx,4), %%mm0\n"
+       "  punpcklwd %%mm0, %%mm1\n"
+       "  punpckhwd %%mm0, %%mm2\n"
+       "  movq %%mm1, %%mm0\n"
+       "  punpcklwd %%mm2, %%mm0\n"
+       "  punpckhwd %%mm2, %%mm1\n"
+-      "  movq %%mm0, (%0,%%rcx,2)\n"
+-      "  movq %%mm1, (%2,%%rcx,2)\n"
++      "  movq %%mm0, (%q0,%%rcx,2)\n"
++      "  movq %%mm1, (%q2,%%rcx,2)\n"
+       "  add $4, %%rcx\n"
+       "  cmp %3, %%ecx\n"
+       "  jl 1b\n"
+@@ -159,26 +159,26 @@ deinterleave2_mmx_4 (int16_t *d1, int16_
+   asm volatile ("\n"
+       "  xor %%rcx, %%rcx\n"
+       "1:\n"
+-      "  movq (%1,%%rcx,4), %%mm1\n"
++      "  movq (%q1,%%rcx,4), %%mm1\n"
+       "  movq %%mm1, %%mm2\n"
+-      "  movq 8(%1,%%rcx,4), %%mm0\n"
+-      "   movq 16(%1,%%rcx,4), %%mm5\n"
++      "  movq 8(%q1,%%rcx,4), %%mm0\n"
++      "   movq 16(%q1,%%rcx,4), %%mm5\n"
+       "  punpcklwd %%mm0, %%mm1\n"
+       "   movq %%mm5, %%mm6\n"
+       "  punpckhwd %%mm0, %%mm2\n"
+-      "   movq 24(%1,%%rcx,4), %%mm4\n"
++      "   movq 24(%q1,%%rcx,4), %%mm4\n"
+       "  movq %%mm1, %%mm0\n"
+       "   punpcklwd %%mm4, %%mm5\n"
+       "  punpcklwd %%mm2, %%mm0\n"
+       "   punpckhwd %%mm4, %%mm6\n"
+       "  punpckhwd %%mm2, %%mm1\n"
+       "   movq %%mm5, %%mm4\n"
+-      "  movq %%mm0, (%0,%%rcx,2)\n"
++      "  movq %%mm0, (%q0,%%rcx,2)\n"
+       "   punpcklwd %%mm6, %%mm4\n"
+-      "  movq %%mm1, (%2,%%rcx,2)\n"
++      "  movq %%mm1, (%q2,%%rcx,2)\n"
+       "   punpckhwd %%mm6, %%mm5\n"
+-      "   movq %%mm4, 8(%0,%%rcx,2)\n"
+-      "   movq %%mm5, 8(%2,%%rcx,2)\n"
++      "   movq %%mm4, 8(%q0,%%rcx,2)\n"
++      "   movq %%mm5, 8(%q2,%%rcx,2)\n"
+       "  add $8, %%rcx\n"
+       "  cmp %3, %%ecx\n"
+       "  jl 1b\n"
+@@ -252,13 +252,13 @@ interleave2_mmx (int16_t *d_2xn, int16_t
+   asm volatile ("\n"
+       "  xor %%rcx, %%rcx\n"
+       "1:\n"
+-      "  movq (%1,%%rcx,2), %%mm0\n"
+-      "  movq (%2,%%rcx,2), %%mm1\n"
++      "  movq (%q1,%%rcx,2), %%mm0\n"
++      "  movq (%q2,%%rcx,2), %%mm1\n"
+       "  movq %%mm0, %%mm2\n"
+       "  punpckhwd %%mm1, %%mm0\n"
+       "  punpcklwd %%mm1, %%mm2\n"
+-      "  movq %%mm2, (%0,%%rcx,4)\n"
+-      "  movq %%mm0, 8(%0,%%rcx,4)\n"
++      "  movq %%mm2, (%q0,%%rcx,4)\n"
++      "  movq %%mm0, 8(%q0,%%rcx,4)\n"
+       "  add $4, %%rcx\n"
+       "  cmp %3, %%ecx\n"
+       "  jl 1b\n"
+@@ -285,12 +285,12 @@ lift_add_shift1_mmx (int16_t *d, int16_t
+   asm volatile ("\n"
+       "  xor %%rcx, %%rcx\n"
+       "1:\n"
+-      "  movq (%2,%%rcx,2), %%mm1\n"
+-      "  movq (%3,%%rcx,2), %%mm2\n"
++      "  movq (%q2,%%rcx,2), %%mm1\n"
++      "  movq (%q3,%%rcx,2), %%mm2\n"
+       "  paddw %%mm2, %%mm1\n"
+       "  psraw $1, %%mm1\n"
+-      "  paddw (%1,%%rcx,2), %%mm1\n"
+-      "  movq %%mm1, (%0,%%rcx,2)\n"
++      "  paddw (%q1,%%rcx,2), %%mm1\n"
++      "  movq %%mm1, (%q0,%%rcx,2)\n"
+       "  add $4, %%rcx\n"
+       "  cmp %4, %%ecx\n"
+       "  jl 1b\n"
+@@ -317,13 +317,13 @@ lift_sub_shift1_mmx (int16_t *d, int16_t
+   asm volatile ("\n"
+       "  xor %%rcx, %%rcx\n"
+       "1:\n"
+-      "  movq (%2,%%rcx,2), %%mm1\n"
+-      "  movq (%3,%%rcx,2), %%mm2\n"
+-      "  movq (%1,%%rcx,2), %%mm0\n"
++      "  movq (%q2,%%rcx,2), %%mm1\n"
++      "  movq (%q3,%%rcx,2), %%mm2\n"
++      "  movq (%q1,%%rcx,2), %%mm0\n"
+       "  paddw %%mm2, %%mm1\n"
+       "  psraw $1, %%mm1\n"
+       "  psubw %%mm1, %%mm0\n"
+-      "  movq %%mm0, (%0,%%rcx,2)\n"
++      "  movq %%mm0, (%q0,%%rcx,2)\n"
+       "  add $4, %%rcx\n"
+       "  cmp %4, %%ecx\n"
+       "  jl 1b\n"
+@@ -350,12 +350,12 @@ lift_add_shift2_mmx (int16_t *d, int16_t
+   asm volatile ("\n"
+       "  xor %%rcx, %%rcx\n"
+       "1:\n"
+-      "  movq (%2,%%rcx,2), %%mm1\n"
+-      "  movq (%3,%%rcx,2), %%mm2\n"
++      "  movq (%q2,%%rcx,2), %%mm1\n"
++      "  movq (%q3,%%rcx,2), %%mm2\n"
+       "  paddw %%mm2, %%mm1\n"
+       "  psraw $2, %%mm1\n"
+-      "  paddw (%1,%%rcx,2), %%mm1\n"
+-      "  movq %%mm1, (%0,%%rcx,2)\n"
++      "  paddw (%q1,%%rcx,2), %%mm1\n"
++      "  movq %%mm1, (%q0,%%rcx,2)\n"
+       "  add $4, %%rcx\n"
+       "  cmp %4, %%ecx\n"
+       "  jl 1b\n"
+@@ -382,13 +382,13 @@ lift_sub_shift2_mmx (int16_t *d, int16_t
+   asm volatile ("\n"
+       "  xor %%rcx, %%rcx\n"
+       "1:\n"
+-      "  movq (%2,%%rcx,2), %%mm1\n"
+-      "  movq (%3,%%rcx,2), %%mm2\n"
+-      "  movq (%1,%%rcx,2), %%mm0\n"
++      "  movq (%q2,%%rcx,2), %%mm1\n"
++      "  movq (%q3,%%rcx,2), %%mm2\n"
++      "  movq (%q1,%%rcx,2), %%mm0\n"
+       "  paddw %%mm2, %%mm1\n"
+       "  psraw $2, %%mm1\n"
+       "  psubw %%mm1, %%mm0\n"
+-      "  movq %%mm0, (%0,%%rcx,2)\n"
++      "  movq %%mm0, (%q0,%%rcx,2)\n"
+       "  add $4, %%rcx\n"
+       "  cmp %4, %%ecx\n"
+       "  jl 1b\n"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/no-tests.patch b/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/no-tests.patch
new file mode 100644
index 0000000..892d441
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil-0.3.17/no-tests.patch
@@ -0,0 +1,24 @@
+Upstream-Status: Inappropriate [disable feature]
+
+--- liboil-0.3.9/liboil/liboilfunction.c.old	2006-09-18 13:03:20.000000000 +0100
++++ liboil-0.3.9/liboil/liboilfunction.c	2006-09-18 13:04:10.000000000 +0100
+@@ -345,7 +345,9 @@
+     return;
+   }
+ 
+-  test = oil_test_new (klass);
++  klass->chosen_impl = klass->reference_impl;
++  klass->func = klass->reference_impl->func;
++/*  test = oil_test_new (klass);
+   if (test == NULL) {
+     OIL_ERROR ("failed to test function class %s", klass->name);
+     return;
+@@ -385,7 +387,7 @@
+   klass->chosen_impl = min_impl;
+   klass->func = min_impl->func;
+ 
+-  oil_test_free (test);
++  oil_test_free (test);*/
+ }
+ 
+ static void
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil_0.3.17.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil_0.3.17.bb
new file mode 100644
index 0000000..03b7785
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-support/liboil/liboil_0.3.17.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Library of simple functions optimized for various CPUs"
+HOMEPAGE = "http://liboil.freedesktop.org/"
+BUGTRACKER = "https://bugs.freedesktop.org/"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ad80780d9c5205d63481a0184e199a15 \
+                    file://liboil/liboil.h;endline=28;md5=95c794a66b88800d949fed17e437d9fb \
+                    file://liboil/liboilcpu.c;endline=28;md5=89da69a61d88eedcba066f42353fb75a \
+                    file://examples/example1.c;endline=29;md5=9d4dad9fcbbdf0441ee063f8af5170c9 \
+                    file://testsuite/trans.c;endline=29;md5=380ecd43121fe3dcc0d8d7e5984f283d"
+
+DEPENDS = "glib-2.0"
+PR = "r5"
+
+SRC_URI = "http://liboil.freedesktop.org/download/${BPN}-${PV}.tar.gz \
+           file://no-tests.patch \
+           file://fix-unaligned-whitelist.patch \
+           file://0001-Fix-enable-vfp-flag.patch \
+           file://liboil_fix_for_x32.patch \
+          "
+
+SRC_URI[md5sum] = "47dc734f82faeb2964d97771cfd2e701"
+SRC_URI[sha256sum] = "105f02079b0b50034c759db34b473ecb5704ffa20a5486b60a8b7698128bfc69"
+
+inherit autotools pkgconfig
+
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-multimedia/recipes-support/libsrtp/libsrtp_1.5.2.bb b/import-layers/meta-openembedded/meta-multimedia/recipes-support/libsrtp/libsrtp_1.5.2.bb
new file mode 100644
index 0000000..8ee6634
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-multimedia/recipes-support/libsrtp/libsrtp_1.5.2.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "library implementing Secure RTP (RFC 3711)"
+HOMEPAGE = "https://github.com/cisco/libsrtp"
+SECTION = "libs"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=15bc16b9d2e305974dde47e733883714"
+
+SRC_URI = "https://github.com/cisco/libsrtp/archive/v${PV}.tar.gz;downloadfilename=${BP}.tar.gz"
+SRC_URI[md5sum] = "2309aa6027992810a4285b042c71e644"
+SRC_URI[sha256sum] = "86e1efe353397c0751f6bdd709794143bd1b76494412860f16ff2b6d9c304eda"
+
+inherit autotools
+
+do_install[postfuncs] += " rm_unused_bindir "
+
+rm_unused_bindir() {
+	rmdir ${D}/${bindir}
+}
diff --git a/import-layers/meta-openembedded/meta-networking/COPYING.MIT b/import-layers/meta-openembedded/meta-networking/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-networking/MAINTAINERS b/import-layers/meta-openembedded/meta-networking/MAINTAINERS
new file mode 100644
index 0000000..f389672
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/MAINTAINERS
@@ -0,0 +1,38 @@
+This file contains a list of maintainers for the meta-networking layer.
+
+Please submit any patches against meta-networking to the OpenEmbedded
+development mailing list (openembedded-devel@lists.openembedded.org) with
+'[meta-networking][krogoth]' in the subject.
+
+When sending single patches, please use something like:
+
+   git send-email -1 -M \
+        --to openembedded-devel@lists.openembedded.org \
+        --subject-prefix=meta-networking][krogoth][PATCH
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
+
+You may also contact the maintainers directly.
+
+Descriptions of section entries:
+
+        M: Mail patches to: FullName <address@domain>
+        F: Files and directories with wildcard patterns.
+           A trailing slash includes all files and subdirectory files.
+           F: recipes-devtools/    all files in and below recipes-devtools
+           F: recipes-selinux/*    all files in recipes-selinux, but not below
+           One pattern per line.  Multiple F: lines acceptable.
+
+Please keep this list in alphabetical order.
+
+Maintainers List (try to look for most precise areas first)
+
+COMMON
+M:      Joe MacDonald <joe_macdonald@mentor.com>
+F:      conf
+F:      recipes-*
+
+NETKIT
+M:      Armin Kuster <akuster808@gmail.com>
+F:      recipes-netkit
diff --git a/import-layers/meta-openembedded/meta-networking/README b/import-layers/meta-openembedded/meta-networking/README
new file mode 100644
index 0000000..e1ba27d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/README
@@ -0,0 +1,40 @@
+meta-networking
+===============
+
+This layer is intended to be a central point for networking-related
+packages and configuration.  It should be useful directly on top of
+oe-core and compliments meta-openembedded.  It should be primarily useful
+to the following groups:
+
+      - Anyone building a small networking device (eg. a home router /
+        bridge / switch).
+
+      - Anyone wanting to add network services to their device (eg.
+        anything that might benefit from a small ftp/tftp server)
+
+Dependencies
+------------
+
+This layer depends on:
+
+URI: git://github.com/openembedded/openembedded-core.git
+branch: master
+revision: HEAD
+
+For some recipes, the meta-oe layer is required:
+
+URI: git://github.com/openembedded/meta-openembedded.git
+subdirectory: meta-oe
+branch: master
+revision: HEAD
+
+URI: git://github.com/openembedded/meta-openembedded.git
+subdirectory: meta-python
+branch: master
+revision: HEAD
+
+Maintenance
+-----------
+
+Please see the MAINTAINERS file for information on contacting the
+maintainers of this layer, as well as instructions for submitting patches. 
diff --git a/import-layers/meta-openembedded/meta-networking/classes/waf-samba.bbclass b/import-layers/meta-openembedded/meta-networking/classes/waf-samba.bbclass
new file mode 100644
index 0000000..45fbcc3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/classes/waf-samba.bbclass
@@ -0,0 +1,95 @@
+# waf is a build system which is used by samba related project.
+# Obtain details from https://wiki.samba.org/index.php/Waf
+# 
+inherit qemu pythonnative
+
+DEPENDS += "qemu-native libxslt-native docbook-xsl-stylesheets-native python"
+
+CONFIGUREOPTS = " --prefix=${prefix} \
+                  --bindir=${bindir} \
+                  --sbindir=${sbindir} \
+                  --libexecdir=${libexecdir} \
+                  --datadir=${datadir} \
+                  --sysconfdir=${sysconfdir} \
+                  --sharedstatedir=${sharedstatedir} \
+                  --localstatedir=${localstatedir} \
+                  --libdir=${libdir} \
+                  --includedir=${includedir} \
+                  --oldincludedir=${oldincludedir} \
+                  --infodir=${infodir} \
+                  --mandir=${mandir} \
+                "
+
+# Three methods for waf cross compile:
+# 1. answers:
+#    Only --cross-answers - try the cross-answers file, and if
+#    there's no corresponding answer, add to the file and mark
+#    the configure process as unfinished.
+# 2. exec:
+#    Only --cross-execute - get the answer from cross-execute,
+#    an emulator (qemu) is used to run cross-compiled binaries.
+# 3. both:
+#    (notes: not supported in lower version of some packages,
+#     please check buildtools/wafsamba/samba_cross.py in the
+#     package source)
+#    Try the cross-answers file first, and if there is no
+#    corresponding answer, use cross-execute to get an answer,
+#    and add that answer to the file.
+#
+# The first one is preferred since it may fail with 2 or 3 if
+# the target board is not suported by qemu, but we can use 2 or 3
+# to help generate the cross answer when adding new board support.
+CROSS_METHOD ?= "answer"
+
+do_configure() {
+
+    # Prepare the cross-answers file
+    CROSS_ANSWERS="${B}/cross-answers-${TARGET_ARCH}.txt"
+    if [ -e ${CROSS_ANSWERS} ]; then
+        rm -f ${CROSS_ANSWERS}
+    fi
+    echo 'Checking uname machine type: "${TARGET_ARCH}"' >> ${CROSS_ANSWERS}
+    echo 'Checking uname release type: "${OLDEST_KERNEL}"' >> ${CROSS_ANSWERS}
+    cat ${WAF_CROSS_ANSWERS_PATH}/cross-answers-${TARGET_ARCH}.txt >> ${CROSS_ANSWERS}
+
+    qemu_binary="${@qemu_target_binary(d)}"
+    if [ "${qemu_binary}" = "qemu-allarch" ]; then
+        qemu_binary="qemuwrapper"
+    fi
+
+    libdir_qemu="${STAGING_DIR_HOST}/${libdir}"
+    base_libdir_qemu="${STAGING_DIR_HOST}/${base_libdir}"
+
+    CROSS_EXEC="${qemu_binary} \
+                ${QEMU_OPTIONS} \
+                -L ${STAGING_DIR_HOST} \
+                -E LD_LIBRARY_PATH=${libdir_qemu}:${base_libdir_qemu}"
+
+    export BUILD_SYS=${BUILD_SYS}
+    export HOST_SYS=${HOST_SYS}
+    export BUILD_ARCH=${BUILD_ARCH}
+    export HOST_ARCH=${HOST_ARCH}
+    export STAGING_LIBDIR=${STAGING_LIBDIR}
+    export STAGING_INCDIR=${STAGING_INCDIR}
+    export PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
+
+    CONFIG_CMD="./configure ${CONFIGUREOPTS} ${EXTRA_OECONF} --cross-compile"
+    if [ "${CROSS_METHOD}" = "answer" ]; then
+        ${CONFIG_CMD} --cross-answers="${CROSS_ANSWERS}"
+    elif [ "${CROSS_METHOD}" = "exec" ]; then
+        ${CONFIG_CMD} --cross-exec="${CROSS_EXEC}"
+    elif [ "${CROSS_METHOD}" = "both" ]; then
+        ${CONFIG_CMD} --cross-answers="${CROSS_ANSWERS}" --cross-exec="${CROSS_EXEC}"
+    else
+        echo "ERROR: ${CROSS_METHOD} is not valid for cross-compile!"
+        exit 1
+    fi
+}
+
+do_compile () {
+    python ./buildtools/bin/waf ${PARALLEL_MAKE}
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+}
diff --git a/import-layers/meta-openembedded/meta-networking/conf/layer.conf b/import-layers/meta-openembedded/meta-networking/conf/layer.conf
new file mode 100644
index 0000000..5fd636a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/conf/layer.conf
@@ -0,0 +1,23 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have a packages directory, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+            ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "networking-layer"
+BBFILE_PATTERN_networking-layer := "^${LAYERDIR}/"
+BBFILE_PRIORITY_networking-layer = "5"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_networking-layer = "1"
+
+LAYERDEPENDS_networking-layer = "core"
+LAYERDEPENDS_networking-layer += "openembedded-layer"
+LAYERDEPENDS_networking-layer += "meta-python"
+
+LICENSE_PATH += "${LAYERDIR}/licenses"
+
+# used by waf-samba.bbclass
+WAF_CROSS_ANSWERS_PATH = "${LAYERDIR}/files/waf-cross-answers"
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/README b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/README
new file mode 100644
index 0000000..dda45c5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/README
@@ -0,0 +1,3 @@
+The files in this directory are cross answers files
+used by waf-samba.bbclass, please see waf-samba.bbclass
+for details about how they are used.
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-aarch64.txt b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-aarch64.txt
new file mode 100644
index 0000000..bbf7f16
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-aarch64.txt
@@ -0,0 +1,38 @@
+Checking uname sysname type: "Linux"
+Checking uname version type: "# Wed May 20 10:34:39 UTC 2015"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: NO
+Checking for HAVE_IFACE_IFCONF: NO
+Checking for HAVE_IFACE_IFREQ: NO
+Checking for large file support without additional flags: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "34"
+Checking whether the WRFILE -keytab is supported: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: OK
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking for small off_t: NO
+Checking whether blkcnt_t is 32 bit: NO
+Checking whether blkcnt_t is 64 bit: OK
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-arm.txt b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-arm.txt
new file mode 100644
index 0000000..e926fcd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-arm.txt
@@ -0,0 +1,39 @@
+Checking uname sysname type: "Linux"
+Checking uname version type: "# Wed May 20 10:34:39 UTC 2015"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: NO
+Checking for HAVE_IFACE_IFCONF: NO
+Checking for HAVE_IFACE_IFREQ: NO
+Checking for large file support without additional flags: NO
+Checking for -D_FILE_OFFSET_BITS=64: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "34"
+Checking whether the WRFILE -keytab is supported: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking for small off_t: NO
+Checking whether blkcnt_t is 32 bit: NO
+Checking whether blkcnt_t is 64 bit: OK
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-i586.txt b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-i586.txt
new file mode 100644
index 0000000..e926fcd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-i586.txt
@@ -0,0 +1,39 @@
+Checking uname sysname type: "Linux"
+Checking uname version type: "# Wed May 20 10:34:39 UTC 2015"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: NO
+Checking for HAVE_IFACE_IFCONF: NO
+Checking for HAVE_IFACE_IFREQ: NO
+Checking for large file support without additional flags: NO
+Checking for -D_FILE_OFFSET_BITS=64: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "34"
+Checking whether the WRFILE -keytab is supported: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking for small off_t: NO
+Checking whether blkcnt_t is 32 bit: NO
+Checking whether blkcnt_t is 64 bit: OK
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-i686.txt b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-i686.txt
new file mode 100644
index 0000000..e926fcd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-i686.txt
@@ -0,0 +1,39 @@
+Checking uname sysname type: "Linux"
+Checking uname version type: "# Wed May 20 10:34:39 UTC 2015"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: NO
+Checking for HAVE_IFACE_IFCONF: NO
+Checking for HAVE_IFACE_IFREQ: NO
+Checking for large file support without additional flags: NO
+Checking for -D_FILE_OFFSET_BITS=64: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "34"
+Checking whether the WRFILE -keytab is supported: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking for small off_t: NO
+Checking whether blkcnt_t is 32 bit: NO
+Checking whether blkcnt_t is 64 bit: OK
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-mips.txt b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-mips.txt
new file mode 100644
index 0000000..18bfa02
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-mips.txt
@@ -0,0 +1,39 @@
+Checking uname sysname type: "Linux"
+Checking uname version type: "# Wed May 20 10:34:39 UTC 2015"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: NO
+Checking for HAVE_IFACE_IFCONF: NO
+Checking for HAVE_IFACE_IFREQ: NO
+Checking for large file support without additional flags: NO
+Checking for -D_FILE_OFFSET_BITS=64: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking value of NSIG: "128"
+Checking value of _NSIG: "128"
+Checking value of SIGRTMAX: "127"
+Checking value of SIGRTMIN: "34"
+Checking whether the WRFILE -keytab is supported: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking for small off_t: NO
+Checking whether blkcnt_t is 32 bit: NO
+Checking whether blkcnt_t is 64 bit: OK
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-mips64.txt b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-mips64.txt
new file mode 100644
index 0000000..8fa015a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-mips64.txt
@@ -0,0 +1,38 @@
+Checking uname sysname type: "Linux"
+Checking uname version type: "# Wed May 20 10:34:39 UTC 2015"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: NO
+Checking for HAVE_IFACE_IFCONF: NO
+Checking for HAVE_IFACE_IFREQ: NO
+Checking for large file support without additional flags: OK
+Checking for HAVE_INCOHERENT_MMAP: OK
+Checking value of NSIG: "128"
+Checking value of _NSIG: "128"
+Checking value of SIGRTMAX: "127"
+Checking value of SIGRTMIN: "34"
+Checking whether the WRFILE -keytab is supported: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: OK
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking for small off_t: NO
+Checking whether blkcnt_t is 32 bit: NO
+Checking whether blkcnt_t is 64 bit: OK
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-mipsel.txt b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-mipsel.txt
new file mode 100644
index 0000000..18bfa02
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-mipsel.txt
@@ -0,0 +1,39 @@
+Checking uname sysname type: "Linux"
+Checking uname version type: "# Wed May 20 10:34:39 UTC 2015"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: NO
+Checking for HAVE_IFACE_IFCONF: NO
+Checking for HAVE_IFACE_IFREQ: NO
+Checking for large file support without additional flags: NO
+Checking for -D_FILE_OFFSET_BITS=64: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking value of NSIG: "128"
+Checking value of _NSIG: "128"
+Checking value of SIGRTMAX: "127"
+Checking value of SIGRTMIN: "34"
+Checking whether the WRFILE -keytab is supported: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking for small off_t: NO
+Checking whether blkcnt_t is 32 bit: NO
+Checking whether blkcnt_t is 64 bit: OK
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-powerpc.txt b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-powerpc.txt
new file mode 100644
index 0000000..fb93b56
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-powerpc.txt
@@ -0,0 +1,39 @@
+Checking uname sysname type: "Linux"
+Checking uname version type: "# Wed May 20 10:34:39 UTC 2015"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: NO
+Checking for HAVE_IFACE_IFCONF: NO
+Checking for HAVE_IFACE_IFREQ: NO
+Checking for large file support without additional flags: NO
+Checking for -D_FILE_OFFSET_BITS=64: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "34"
+Checking whether the WRFILE -keytab is supported: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking for small off_t: NO
+Checking whether blkcnt_t is 32 bit: NO
+Checking whether blkcnt_t is 64 bit: OK
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-powerpc64.txt b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-powerpc64.txt
new file mode 100644
index 0000000..fd585f0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-powerpc64.txt
@@ -0,0 +1,39 @@
+Checking uname sysname type: "Linux"
+Checking uname version type: "# Wed May 20 10:34:39 UTC 2015"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: NO
+Checking for HAVE_IFACE_IFCONF: NO
+Checking for HAVE_IFACE_IFREQ: NO
+Checking for large file support without additional flags: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "34"
+Checking whether the WRFILE -keytab is supported: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
+Checking if can we convert from CP850 to UCS-2LE: (255, "")
+Checking if can we convert from IBM850 to UCS-2LE: (255, "")
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: OK
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking for small off_t: NO
+Checking whether blkcnt_t is 32 bit: NO
+Checking whether blkcnt_t is 64 bit: OK
diff --git a/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-x86_64.txt b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-x86_64.txt
new file mode 100644
index 0000000..bbf7f16
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/files/waf-cross-answers/cross-answers-x86_64.txt
@@ -0,0 +1,38 @@
+Checking uname sysname type: "Linux"
+Checking uname version type: "# Wed May 20 10:34:39 UTC 2015"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: NO
+Checking for HAVE_IFACE_IFCONF: NO
+Checking for HAVE_IFACE_IFREQ: NO
+Checking for large file support without additional flags: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "34"
+Checking whether the WRFILE -keytab is supported: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking whether POSIX capabilities are available: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: OK
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking for small off_t: NO
+Checking whether blkcnt_t is 32 bit: NO
+Checking whether blkcnt_t is 64 bit: OK
diff --git a/import-layers/meta-openembedded/meta-networking/licenses/DMTF b/import-layers/meta-openembedded/meta-networking/licenses/DMTF
new file mode 100644
index 0000000..54a2812
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/licenses/DMTF
@@ -0,0 +1,34 @@
+// Copyright 1998-2008 Distributed Management Task Force, Inc. (DMTF).
+// All rights reserved.
+// DMTF is a not-for-profit association of industry members dedicated
+// to promoting enterprise and systems management and interoperability.
+// DMTF specifications and documents may be reproduced by
+// members and non-members, provided that correct attribution is given.
+// As DMTF specifications may be revised from time to time,
+// the particular version and release date should always be noted.
+// 
+// Implementation of certain elements of this standard or proposed
+// standard may be subject to third party patent rights, including
+// provisional patent rights (herein "patent rights"). DMTF makes
+// no representations to users of the standard as to the existence
+// of such rights, and is not responsible to recognize, disclose, or
+// identify any or all such third party patent right, owners or
+// claimants, nor for any incomplete or inaccurate identification or
+// disclosure of such rights, owners or claimants. DMTF shall have no
+// liability to any party, in any manner or circumstance, under any
+// legal theory whatsoever, for failure to recognize, disclose, or
+// identify any such third party patent rights, or for such party's
+// reliance on the standard or incorporation thereof in its product,
+// protocols or testing procedures. DMTF shall have no liability to
+// any party implementing such standard, whether such implementation
+// is foreseeable or not, nor to any patent owner or claimant, and shall
+// have no liability or responsibility for costs or losses incurred if
+// a standard is withdrawn or modified after publication, and shall be
+// indemnified and held harmless by any party implementing the
+// standard from any and all claims of infringement by a patent owner
+// for such implementations.
+// 
+// For information about patents held by third-parties which have
+// notified the DMTF that, in their opinion, such patent may relate to
+// or impact implementations of DMTF standards, visit
+// http://www.dmtf.org/about/policies/disclosures.php.
diff --git a/import-layers/meta-openembedded/meta-networking/licenses/copyleft-next-0.3.0 b/import-layers/meta-openembedded/meta-networking/licenses/copyleft-next-0.3.0
new file mode 100644
index 0000000..a66d5bf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/licenses/copyleft-next-0.3.0
@@ -0,0 +1,219 @@
+                   copyleft-next 0.3.0 ("this License")
+                         Release date: 2013-05-16
+
+1. License Grants; No Trademark License
+
+   Subject to the terms of this License, I grant You:
+
+   a) A non-exclusive, worldwide, perpetual, royalty-free, irrevocable
+      copyright license, to reproduce, Distribute, prepare derivative works
+      of, publicly perform and publicly display My Work.
+
+   b) A non-exclusive, worldwide, perpetual, royalty-free, irrevocable
+      patent license under Licensed Patents to make, have made, use, sell,
+      offer for sale, and import Covered Works.
+
+   This License does not grant any rights in My name, trademarks, service
+   marks, or logos.
+
+2. Distribution: General Conditions
+
+   You may Distribute Covered Works, provided that You (i) inform
+   recipients how they can obtain a copy of this License; (ii) satisfy the
+   applicable conditions of sections 3 through 6; and (iii) preserve all
+   Legal Notices contained in My Work (to the extent they remain
+   pertinent). "Legal Notices" means copyright notices, license notices,
+   license texts, and author attributions, but does not include logos,
+   other graphical images, trademarks or trademark legends.
+
+3. Conditions for Distributing Derived Works; Outbound GPL Compatibility
+
+   If You Distribute a Derived Work, You must license the entire Derived
+   Work as a whole under this License, with prominent notice of such
+   licensing. This condition may not be avoided through such means as
+   separate Distribution of portions of the Derived Work. You may
+   additionally license the Derived Work under the GPL, so that the
+   recipient may further Distribute the Derived Work under either this
+   License or the GPL.
+
+4. Condition Against Further Restrictions; Inbound License Compatibility
+
+   When Distributing a Covered Work, You may not impose further
+   restrictions on the exercise of rights in the Covered Work granted under
+   this License. This condition is not excused merely because such
+   restrictions result from Your compliance with conditions or obligations
+   extrinsic to this License (such as a court order or an agreement with a
+   third party).
+
+   However, You may Distribute a Covered Work incorporating material
+   governed by a license that is both OSI-Approved and FSF-Free as of the
+   release date of this License, provided that Your Distribution complies
+   with such other license.
+
+5. Conditions for Distributing Object Code
+
+   You may Distribute an Object Code form of a Covered Work, provided that
+   you accompany the Object Code with a URL through which the Corresponding
+   Source is made available, at no charge, by some standard or customary
+   means of providing network access to source code.
+
+   If you Distribute the Object Code in a physical product or tangible
+   storage medium ("Product"), the Corresponding Source must be available
+   through such URL for two years from the date of Your most recent
+   Distribution of the Object Code in the Product. However, if the Product
+   itself contains or is accompanied by the Corresponding Source (made
+   available in a customarily accessible manner), You need not also comply
+   with the first paragraph of this section.
+
+   Each recipient of the Covered Work from You is an intended third-party
+   beneficiary of this License solely as to this section 5, with the right
+   to enforce its terms.
+
+6. Symmetrical Licensing Condition for Upstream Contributions
+
+   If You Distribute a work to Me specifically for inclusion in or
+   modification of a Covered Work (a "Patch"), and no explicit licensing
+   terms apply to the Patch, You license the Patch under this License, to
+   the extent of Your copyright in the Patch. This condition does not
+   negate the other conditions of this License, if applicable to the Patch.
+
+7. Nullification of Copyleft/Proprietary Dual Licensing
+
+   If I offer to license, for a fee, a Covered Work under terms other than
+   a license that is OSI-Approved or FSF-Free as of the release date of this
+   License or a numbered version of copyleft-next released by the
+   Copyleft-Next Project, then the license I grant You under section 1 is no
+   longer subject to the conditions in sections 2 through 5.
+
+8. Copyleft Sunset
+
+   The conditions in sections 2 through 5 no longer apply once fifteen
+   years have elapsed from the date of My first Distribution of My Work
+   under this License.
+
+9. Pass-Through
+
+   When You Distribute a Covered Work, the recipient automatically receives
+   a license to My Work from Me, subject to the terms of this License.
+
+10. Termination
+
+    Your license grants under section 1 are automatically terminated if You
+
+    a) fail to comply with the conditions of this License, unless You cure
+       such noncompliance within thirty days after becoming aware of it, or
+
+    b) initiate a patent infringement litigation claim (excluding
+       declaratory judgment actions, counterclaims, and cross-claims)
+       alleging that any part of My Work directly or indirectly infringes
+       any patent.
+
+    Termination of Your license grants extends to all copies of Covered
+    Works You subsequently obtain. Termination does not terminate the
+    rights of those who have received copies or rights from You subject to
+    this License.
+
+    To the extent permission to make copies of a Covered Work is necessary
+    merely for running it, such permission is not terminable.
+
+11. Later License Versions
+
+    The Copyleft-Next Project may release new versions of copyleft-next,
+    designated by a distinguishing version number ("Later Versions").
+    Unless I explicitly remove the option of Distributing Covered Works
+    under Later Versions, You may Distribute Covered Works under any Later
+    Version.
+
+** 12. No Warranty                                                       **
+**                                                                       **
+**     My Work is provided "as-is", without warranty. You bear the risk  **
+**     of using it. To the extent permitted by applicable law, each      **
+**     Distributor of My Work excludes the implied warranties of title,  **
+**     merchantability, fitness for a particular purpose and             **
+**     non-infringement.                                                 **
+
+** 13. Limitation of Liability                                           **
+**                                                                       **
+**     To the extent permitted by applicable law, in no event will any   **
+**     Distributor of My Work be liable to You for any damages           **
+**     whatsoever, whether direct, indirect, special, incidental, or     **
+**     consequential damages, whether arising under contract, tort       **
+**     (including negligence), or otherwise, even where the Distributor  **
+**     knew or should have known about the possibility of such damages.  **
+
+14. Severability
+
+    The invalidity or unenforceability of any provision of this License
+    does not affect the validity or enforceability of the remainder of
+    this License. Such provision is to be reformed to the minimum extent
+    necessary to make it valid and enforceable.
+
+15. Definitions
+
+    "Copyleft-Next Project" means the project that maintains the source
+    code repository at <https://gitorious.org/copyleft-next/> as of the
+    release date of this License.
+
+    "Corresponding Source" of a Covered Work in Object Code form means (i)
+    the Source Code form of the Covered Work; (ii) all scripts,
+    instructions and similar information that are reasonably necessary for
+    a skilled developer to generate such Object Code from the Source Code
+    provided under (i); and (iii) a list clearly identifying all Separate
+    Works (other than those provided in compliance with (ii)) that were
+    specifically used in building and (if applicable) installing the
+    Covered Work (for example, a specified proprietary compiler including
+    its version number). Corresponding Source must be machine-readable.
+
+    "Covered Work" means My Work or a Derived Work.
+
+    "Derived Work" means a work of authorship that copies from, modifies,
+    adapts, is based on, is a derivative work of, transforms, translates or
+    contains all or part of My Work, such that copyright permission is
+    required. The following are not Derived Works: (i) Mere Aggregation;
+    (ii) a mere reproduction of My Work; and (iii) if My Work fails to
+    explicitly state an expectation otherwise, a work that merely makes
+    reference to My Work.
+
+    "Distribute" means to distribute, transfer or make a copy available to
+    someone else, such that copyright permission is required.
+
+    "Distributor" means Me and anyone else who Distributes a Covered Work.
+
+    "FSF-Free" means classified as 'free' by the Free Software Foundation.
+
+    "GPL" means a version of the GNU General Public License or the GNU
+    Affero General Public License.
+
+    "I"/"Me"/"My" refers to the individual or legal entity that places My
+    Work under this License. "You"/"Your" refers to the individual or legal
+    entity exercising rights in My Work under this License. A legal entity
+    includes each entity that controls, is controlled by, or is under
+    common control with such legal entity. "Control" means (a) the power to
+    direct the actions of such legal entity, whether by contract or
+    otherwise, or (b) ownership of more than fifty percent of the
+    outstanding shares or beneficial ownership of such legal entity.
+
+    "Licensed Patents" means all patent claims licensable royalty-free by
+    Me, now or in the future, that are necessarily infringed by making,
+    using, or selling My Work, and excludes claims that would be infringed
+    only as a consequence of further modification of My Work.
+
+    "Mere Aggregation" means an aggregation of a Covered Work with a
+    Separate Work.
+
+    "My Work" means the particular work of authorship I license to You
+    under this License.
+
+    "Object Code" means any form of a work that is not Source Code.
+
+    "OSI-Approved" means approved as 'Open Source' by the Open Source
+    Initiative.
+
+    "Separate Work" means a work that is separate from and independent of a
+    particular Covered Work and is not by its nature an extension or
+    enhancement of the Covered Work, and/or a runtime library, standard
+    library or similar component that is used to generate an Object Code
+    form of a Covered Work.
+
+    "Source Code" means the preferred form of a work for making
+    modifications to it.
diff --git a/import-layers/meta-openembedded/meta-networking/licenses/netperf b/import-layers/meta-openembedded/meta-networking/licenses/netperf
new file mode 100644
index 0000000..3f3ceb2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/licenses/netperf
@@ -0,0 +1,43 @@
+
+ 
+              Copyright (C) 1993 Hewlett-Packard Company
+                         ALL RIGHTS RESERVED.
+ 
+  The enclosed software and documentation includes copyrighted works
+  of Hewlett-Packard Co. For as long as you comply with the following
+  limitations, you are hereby authorized to (i) use, reproduce, and
+  modify the software and documentation, and to (ii) distribute the
+  software and documentation, including modifications, for
+  non-commercial purposes only.
+      
+  1.  The enclosed software and documentation is made available at no
+      charge in order to advance the general development of
+      high-performance networking products.
+ 
+  2.  You may not delete any copyright notices contained in the
+      software or documentation. All hard copies, and copies in
+      source code or object code form, of the software or
+      documentation (including modifications) must contain at least
+      one of the copyright notices.
+ 
+  3.  The enclosed software and documentation has not been subjected
+      to testing and quality control and is not a Hewlett-Packard Co.
+      product. At a future time, Hewlett-Packard Co. may or may not
+      offer a version of the software and documentation as a product.
+  
+  4.  THE SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS".
+      HEWLETT-PACKARD COMPANY DOES NOT WARRANT THAT THE USE,
+      REPRODUCTION, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR
+      DOCUMENTATION WILL NOT INFRINGE A THIRD PARTY'S INTELLECTUAL
+      PROPERTY RIGHTS. HP DOES NOT WARRANT THAT THE SOFTWARE OR
+      DOCUMENTATION IS ERROR FREE. HP DISCLAIMS ALL WARRANTIES,
+      EXPRESS AND IMPLIED, WITH REGARD TO THE SOFTWARE AND THE
+      DOCUMENTATION. HP SPECIFICALLY DISCLAIMS ALL WARRANTIES OF
+      MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+  
+  5.  HEWLETT-PACKARD COMPANY WILL NOT IN ANY EVENT BE LIABLE FOR ANY
+      DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+      (INCLUDING LOST PROFITS) RELATED TO ANY USE, REPRODUCTION,
+      MODIFICATION, OR DISTRIBUTION OF THE SOFTWARE OR DOCUMENTATION.
+ 
+
diff --git a/import-layers/meta-openembedded/meta-networking/licenses/radvd b/import-layers/meta-openembedded/meta-networking/licenses/radvd
new file mode 100644
index 0000000..03db0b6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/licenses/radvd
@@ -0,0 +1,37 @@
+The author(s) grant permission for redistribution and use in source and
+binary forms, with or without modification, of the software and documentation
+provided that the following conditions are met:
+
+0. If you receive a version of the software that is specifically labelled
+   as not being for redistribution (check the version message and/or README),
+   you are not permitted to redistribute that version of the software in any
+   way or form.
+1. All terms of all other applicable copyrights and licenses must be
+   followed.
+2. Redistributions of source code must retain the authors' copyright
+   notice(s), this list of conditions, and the following disclaimer.
+3. Redistributions in binary form must reproduce the authors' copyright
+   notice(s), this list of conditions, and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+4. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement with the name(s) of the
+   authors as specified in the copyright notice(s) substituted where
+   indicated:
+
+        This product includes software developed by the authors which are 
+	mentioned at the start of the source files and other contributors.
+
+5. Neither the name(s) of the author(s) nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY ITS AUTHORS AND CONTRIBUTORS ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/crda/crda/do-not-run-ldconfig-if-destdir-is-set.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/crda/crda/do-not-run-ldconfig-if-destdir-is-set.patch
new file mode 100644
index 0000000..3ef35ee
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/crda/crda/do-not-run-ldconfig-if-destdir-is-set.patch
@@ -0,0 +1,21 @@
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sat, 23 Aug 2014 12:27:34 -0700
+Subject: crda: Do not run ldconfig if DESTDIR is set
+
+Upstream-Status: Backport [http://www.spinics.net/lists/linux-wireless/msg126028.html]
+
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+
+--- a/Makefile
++++ b/Makefile
+@@ -132,7 +132,9 @@ install-libreg:
+ 	$(NQ) '  INSTALL  libreg'
+ 	$(Q)mkdir -p $(DESTDIR)/$(LIBDIR)
+ 	$(Q)cp $(LIBREG) $(DESTDIR)/$(LIBDIR)/
++ifndef DESTDIR
+ 	$(Q)ldconfig
++endif
+ 
+ %.o: %.c regdb.h $(LIBREG)
+ 	$(NQ) '  CC  ' $@
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/crda/crda/fix-linking-of-libraries-used-by-reglib.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/crda/crda/fix-linking-of-libraries-used-by-reglib.patch
new file mode 100644
index 0000000..aceb56d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/crda/crda/fix-linking-of-libraries-used-by-reglib.patch
@@ -0,0 +1,50 @@
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sat, 23 Aug 2014 12:26:37 -0700
+Subject: Fix linking of libraries used by libreg
+
+The math and crypto libraries are called by and need to be linked to
+libreg.so, not to the executables.
+
+Upstream-Status: Backport [http://www.spinics.net/lists/linux-wireless/msg126027.html]
+
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+
+--- a/Makefile
++++ b/Makefile
+@@ -30,7 +30,7 @@ CFLAGS += -std=gnu99 -Wall -Werror -peda
+ CFLAGS += -Wall -g
+ LDLIBREG += -lreg
+ LDLIBS += $(LDLIBREG)
+-LDLIBS += -lm
++LIBREGLDLIBS += -lm
+ LIBREG += libreg.so
+ LDFLAGS += -L ./
+ 
+@@ -40,7 +40,7 @@ all_noverify: $(LIBREG) crda intersect r
+ 
+ ifeq ($(USE_OPENSSL),1)
+ CFLAGS += -DUSE_OPENSSL -DPUBKEY_DIR=\"$(RUNTIME_PUBKEY_DIR)\" `pkg-config --cflags openssl`
+-LDLIBS += `pkg-config --libs openssl`
++LIBREGLDLIBS += `pkg-config --libs openssl`
+ 
+ ifeq ($(RUNTIME_PUBKEY_ONLY),1)
+ CFLAGS += -DRUNTIME_PUBKEY_ONLY
+@@ -51,7 +51,7 @@ endif
+ 
+ else
+ CFLAGS += -DUSE_GCRYPT
+-LDLIBS += -lgcrypt
++LIBREGLDLIBS += -lgcrypt
+ 
+ $(LIBREG): keys-gcrypt.c
+ 
+@@ -121,7 +121,7 @@ keys-%.c: utils/key2pub.py $(wildcard $(
+ 
+ $(LIBREG): regdb.h reglib.h reglib.c
+ 	$(NQ) '  CC  ' $@
+-	$(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -shared -Wl,-soname,$(LIBREG) $^
++	$(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -shared -Wl,-soname,$(LIBREG) $^ $(LIBREGLDLIBS)
+ 
+ install-libreg-headers:
+ 	$(NQ) '  INSTALL  libreg-headers'
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/crda/crda_3.18.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/crda/crda_3.18.bb
new file mode 100644
index 0000000..931a053
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/crda/crda_3.18.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Wireless Central Regulatory Domain Agent"
+HOMEPAGE = "http://wireless.kernel.org/en/developers/Regulatory/CRDA"
+SECTION = "net"
+LICENSE = "copyleft-next-0.3.0 & ISC"
+LIC_FILES_CHKSUM = "file://copyleft-next-0.3.0;md5=8743a2c359037d4d329a31e79eabeffe \
+                    file://${WORKDIR}/wireless-regdb-2014.11.18/LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c"
+
+DEPENDS = "python-m2crypto-native python-native libgcrypt libnl"
+
+SRC_URI = "https://www.kernel.org/pub/software/network/crda/${BP}.tar.xz;name=crda \
+           https://www.kernel.org/pub/software/network/wireless-regdb/wireless-regdb-2014.11.18.tar.xz;name=bin \
+           file://do-not-run-ldconfig-if-destdir-is-set.patch \
+           file://fix-linking-of-libraries-used-by-reglib.patch \
+"
+SRC_URI[crda.md5sum] = "0431fef3067bf503dfb464069f06163a"
+SRC_URI[crda.sha256sum] = "43fcb9679f8b75ed87ad10944a506292def13e4afb194afa7aa921b01e8ecdbf"
+
+SRC_URI[bin.md5sum] = "d750c402c5510add7380edcb1d9b75b2"
+SRC_URI[bin.sha256sum] = "eab6b50f30748a8b0065ba38cf3df05aac161a5861ae0a6c3cfd01d38a71c9dd"
+
+inherit python-dir pythonnative
+# Recursive make problem
+EXTRA_OEMAKE = "MAKEFLAGS= DESTDIR=${D} LIBDIR=${libdir}/crda LDLIBREG='-Wl,-rpath,${libdir}/crda -lreg'"
+
+do_compile() {
+    oe_runmake all_noverify
+}
+
+do_install() {
+    oe_runmake SBINDIR=${sbindir}/ install
+
+    install -d ${D}${libdir}/crda/
+
+    install -m 0644 ${WORKDIR}/wireless-regdb-2014.11.18/regulatory.bin ${D}${libdir}/crda/regulatory.bin
+}
+
+
+RDEPENDS_${PN} = "udev"
+FILES_${PN} += "${libdir}crda/regulatory.bin \
+                ${base_libdir}/udev/rules.d/85-regulatory.rules \
+"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/daq/daq_2.0.6.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/daq/daq_2.0.6.bb
new file mode 100644
index 0000000..48039f0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/daq/daq_2.0.6.bb
@@ -0,0 +1,26 @@
+SUMMARY = "The dump DAQ test the various inline mode features "
+HOMEPAGE = "http://www.snort.org"
+SECTION = "libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f9ce51a65dd738dc1ae631d8b21c40e0"
+
+PARALLEL_MAKE = ""
+
+DEPENDS = "libpcap libpcre libdnet"
+
+SRC_URI = "http://fossies.org/linux/misc/daq-${PV}.tar.gz \
+            file://disable-run-test-program-while-cross-compiling.patch "
+
+# these 2 create undeclared dependency on libdnet and libnetfilter-queue from meta-networking
+# this error from test-dependencies script:
+# daq/daq/latest lost dependency on  libdnet libmnl libnetfilter-queue libnfnetlink
+#
+# never look to /usr/local lib while cross compiling
+
+EXTRA_OECONF = "--disable-nfq-module --disable-ipq-module --includedir=${includedir} \
+	--with-libpcap-includes=${STAGING_INCDIR} --with-dnet-includes=${STAGING_LIBDIR}"
+
+SRC_URI[md5sum] = "2cd6da422a72c129c685fc4bb848c24c"
+SRC_URI[sha256sum] = "b40e1d1273e08aaeaa86e69d4f28d535b7e53bdb3898adf539266b63137be7cb"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/daq/files/disable-run-test-program-while-cross-compiling.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/daq/files/disable-run-test-program-while-cross-compiling.patch
new file mode 100644
index 0000000..a100b7c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/daq/files/disable-run-test-program-while-cross-compiling.patch
@@ -0,0 +1,31 @@
+Upstream-Status:Inappropriate [embedded specific]
+
+fix the below error:
+configure: error: cannot run test program while cross compiling
+
+Signed-off-by: Chunrong Guo <B40290@freescale.com>
+
+--- a/m4/sf.m4old    2015-10-28 10:21:20.270557986 +0800
++++ a/m4/sf.m4       2015-10-28 10:23:22.726551974 +0800
+@@ -135,20 +135,7 @@
+         echo
+         exit 1
+     fi
+-    AC_CACHE_CHECK([for libpcap version >= $1], [daq_cv_libpcap_version_1x], [
+-    AC_RUN_IFELSE(
+-    [AC_LANG_PROGRAM(
+-    [[
+-    #include <pcap.h>
+-    #include <string.h>
+-    extern char pcap_version[];
+-    ]],
+-    [[
+-        if (strcmp(pcap_version, $1) < 0)
+-            return 1;
+-    ]])],
+-    [daq_cv_libpcap_version_1x="yes"],
+-    [daq_cv_libpcap_version_1x="no"])])
++    AC_CACHE_CHECK([for libpcap version >= $1], [daq_cv_libpcap_version_1x])
+     if test "x$daq_cv_libpcap_version_1x" = "xno"; then
+         echo
+         echo "    ERROR!  Libpcap library version >= $1  not found."
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_6.10.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_6.10.1.bb
new file mode 100644
index 0000000..cd80428
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_6.10.1.bb
@@ -0,0 +1,24 @@
+SECTION = "console/network"
+SUMMARY = "dhcpcd - a DHCP client"
+DESCRIPTION = "dhcpcd runs on your machine and silently configures your computer to work on the attached networks without trouble and mostly without configuration."
+
+HOMEPAGE = "http://roy.marples.name/projects/dhcpcd/"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://dhcpcd.c;endline=26;md5=77c40d671aff804ca91ea99556da8e9b"
+
+SRC_URI = "http://roy.marples.name/downloads/${BPN}/${BPN}-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "a7b83c57f47b62f48373905d3b4f7978"
+SRC_URI[sha256sum] = "284abf8c3be0580bbac5eaca95359346ab0d78d4072317b6ce87cc68f2e8ae7b"
+
+inherit autotools-brokensep
+
+PACKAGECONFIG ?= "udev ${@bb.utils.contains("DISTRO_FEATURES", "ipv6", "ipv6", "", d)}"
+
+PACKAGECONFIG[udev] = "--with-udev,--without-udev,udev,udev"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6"
+
+EXTRA_OECONF = "--enable-ipv4"
+
+FILES_${PN}-dbg += "${libdir}/dhcpcd/dev/.debug"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/0001-rcp-fix-to-work-with-large-files.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/0001-rcp-fix-to-work-with-large-files.patch
new file mode 100644
index 0000000..d4764f5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/0001-rcp-fix-to-work-with-large-files.patch
@@ -0,0 +1,31 @@
+Upstream-Status: Pending
+
+Subject: rcp: fix to work with large files
+
+When we copy file by rcp command, if the file > 2GB, it will fail.
+The cause is that it used incorrect data type on file size in sink() of rcp.
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/rcp.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/rcp.c b/src/rcp.c
+index 21f55b6..bafa35f 100644
+--- a/src/rcp.c
++++ b/src/rcp.c
+@@ -876,9 +876,9 @@ sink (int argc, char *argv[])
+   enum
+   { YES, NO, DISPLAYED } wrerr;
+   BUF *bp;
+-  off_t i, j;
++  off_t i, j, size;
+   int amt, count, exists, first, mask, mode, ofd, omode;
+-  int setimes, size, targisdir, wrerrno;
++  int setimes, targisdir, wrerrno;
+   char ch, *cp, *np, *targ, *vect[1], buf[BUFSIZ];
+   const char *why;
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch
new file mode 100644
index 0000000..bd3ae47
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch
@@ -0,0 +1,60 @@
+Upstream: http://www.mail-archive.com/bug-inetutils@gnu.org/msg02103.html
+
+Upstream-Status: Pending
+
+diff -ur inetutils-1.8.orig/ping/ping_common.h inetutils-1.8/ping/ping_common.h
+--- inetutils-1.8.orig/ping/ping_common.h	2010-05-15 20:55:47.000000000 +0930
++++ inetutils-1.8/ping/ping_common.h	2010-12-01 12:19:08.000000000 +1030
+@@ -17,10 +17,14 @@
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see `http://www.gnu.org/licenses/'. */
+ 
++#include <config.h>
++
+ #include <netinet/in_systm.h>
+ #include <netinet/in.h>
+ #include <netinet/ip.h>
++#ifdef HAVE_IPV6
+ #include <netinet/icmp6.h>
++#endif
+ #include <icmp.h>
+ #include <error.h>
+ #include <progname.h>
+@@ -66,13 +70,19 @@
+   (t).tv_usec = ((i)%PING_PRECISION)*(1000000/PING_PRECISION) ;\
+ } while (0)
+ 
++#ifdef HAVE_IPV6
+ /* Not sure about this step*/
+ #define _PING_BUFLEN(p, USE_IPV6) ((USE_IPV6)? ((p)->ping_datalen + sizeof (struct icmp6_hdr)) : \
+ 				   ((p)->ping_datalen + sizeof (icmphdr_t)))
++#else
++#define _PING_BUFLEN(p, USE_IPV6) ((p)->ping_datalen + sizeof (icmphdr_t))
++#endif
+ 
++#ifdef HAVE_IPV6
+ typedef int (*ping_efp6) (int code, void *closure, struct sockaddr_in6 * dest,
+ 			  struct sockaddr_in6 * from, struct icmp6_hdr * icmp,
+ 			  int datalen);
++#endif
+ 
+ typedef int (*ping_efp) (int code,
+ 			 void *closure,
+@@ -81,13 +91,17 @@
+ 			 struct ip * ip, icmphdr_t * icmp, int datalen);
+ 
+ union event {
++#ifdef HAVE_IPV6
+   ping_efp6 handler6;
++#endif
+   ping_efp handler;
+ };
+ 
+ union ping_address {
+   struct sockaddr_in ping_sockaddr;
++#ifdef HAVE_IPV6
+   struct sockaddr_in6 ping_sockaddr6;
++#endif
+ };
+ 
+ typedef struct ping_data PING;
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch
new file mode 100644
index 0000000..3da4e9f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch
@@ -0,0 +1,29 @@
+From 552a7d64ad4a7188a9b7cd89933ae7caf7ebfe90 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier at gentoo.org>
+Date: Thu, 18 Nov 2010 16:59:14 -0500
+Subject: [PATCH gnulib] printf-parse: pull in features.h for __GLIBC__
+
+Upstream-Status: Pending
+
+Signed-off-by: Mike Frysinger <vapier at gentoo.org>
+---
+ lib/printf-parse.h |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/lib/printf-parse.h b/lib/printf-parse.h
+index 67a4a2a..3bd6152 100644
+--- a/lib/printf-parse.h
++++ b/lib/printf-parse.h
+@@ -25,6 +25,9 @@
+ 
+ #include "printf-args.h"
+ 
++#ifdef HAVE_FEATURES_H
++# include <features.h>	/* for __GLIBC__ */
++#endif
+ 
+ /* Flags */
+ #define FLAG_GROUP       1      /* ' flag */
+-- 
+1.7.3.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch
new file mode 100644
index 0000000..b13bb92
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch
@@ -0,0 +1,14 @@
+Upstream-Status: Pending
+
+--- inetutils-1.8/lib/wchar.in.h
++++ inetutils-1.8/lib/wchar.in.h
+@@ -70,6 +70,9 @@
+ /* The include_next requires a split double-inclusion guard.  */
+ #if @HAVE_WCHAR_H@
+ # @INCLUDE_NEXT@ @NEXT_WCHAR_H@
++#else
++# include <stddef.h>
++# define MB_CUR_MAX 1
+ #endif
+ 
+ #undef _GL_ALREADY_INCLUDING_WCHAR_H
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch
new file mode 100644
index 0000000..2592989
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch
@@ -0,0 +1,26 @@
+inetutils: define PATH_PROCNET_DEV if not already defined
+
+this prevents the following compilation error :
+system/linux.c:401:15: error: 'PATH_PROCNET_DEV' undeclared (first use in this function)
+
+this patch comes from :
+ http://repository.timesys.com/buildsources/i/inetutils/inetutils-1.9/
+
+Upstream-Status: Inappropriate [not author]
+
+Signed-of-by: Eric Bénard <eric@eukrea.com>
+---
+diff -Naur inetutils-1.9.orig/ifconfig/system/linux.c inetutils-1.9/ifconfig/system/linux.c
+--- inetutils-1.9.orig/ifconfig/system/linux.c	2012-01-04 16:31:36.000000000 -0500
++++ inetutils-1.9/ifconfig/system/linux.c	2012-01-04 16:40:53.000000000 -0500
+@@ -49,6 +49,10 @@
+ #include "../ifconfig.h"
+ 
+ 
++#ifndef PATH_PROCNET_DEV
++  #define PATH_PROCNET_DEV "/proc/net/dev"
++#endif
++
+ /* ARPHRD stuff.  */
+ 
+ static void
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch
new file mode 100644
index 0000000..ff3abd8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch
@@ -0,0 +1,40 @@
+Only check security/pam_appl.h which is provided by package libpam when pam is
+enabled.
+
+Upstream-Status: Pending
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/configure.ac b/configure.ac
+index b35e672..e78a751 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -195,6 +195,19 @@ fi
+ 
+ # See if we have libpam.a.  Investigate PAM versus Linux-PAM.
+ if test "$with_pam" = yes ; then
++  AC_CHECK_HEADERS([security/pam_appl.h], [], [], [
++#include <sys/types.h>
++#ifdef HAVE_NETINET_IN_SYSTM_H
++# include <netinet/in_systm.h>
++#endif
++#include <netinet/in.h>
++#ifdef HAVE_NETINET_IP_H
++# include <netinet/ip.h>
++#endif
++#ifdef HAVE_SYS_PARAM_H
++# include <sys/param.h>
++#endif
++])
+   AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl)
+   AC_CHECK_LIB(pam, pam_authenticate, LIBPAM=-lpam)
+   if test "$ac_cv_lib_pam_pam_authenticate" = yes ; then
+@@ -587,7 +600,7 @@ AC_HEADER_DIRENT
+ AC_CHECK_HEADERS([arpa/nameser.h errno.h fcntl.h features.h \
+ 		  glob.h memory.h netinet/ether.h netinet/in_systm.h \
+ 		  netinet/ip.h netinet/ip_icmp.h netinet/ip_var.h \
+-		  security/pam_appl.h shadow.h \
++		  shadow.h \
+ 		  stdarg.h stdlib.h string.h stropts.h sys/tty.h \
+ 		  sys/utsname.h sys/ptyvar.h sys/msgbuf.h sys/filio.h \
+ 		  sys/ioctl_compat.h sys/cdefs.h sys/stream.h sys/mkdev.h \
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rexec.xinetd.inetutils b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rexec.xinetd.inetutils
new file mode 100644
index 0000000..30e81ef
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rexec.xinetd.inetutils
@@ -0,0 +1,20 @@
+# default: off
+# description:
+# Rexecd is the server for the rexec program. The server provides remote 
+# execution facilities with authentication based on user names and 
+# passwords.
+#
+service exec
+{
+	socket_type	= stream
+	protocol	= tcp
+	flags		= NAMEINARGS
+	wait		= no
+	user		= root
+	group		= root
+	log_on_success	+= USERID
+	log_on_failure	+= USERID
+	server		= @SBINDIR@/tcpd
+	server_args	= @SBINDIR@/in.rexecd
+	disable		= yes
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rlogin.xinetd.inetutils b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rlogin.xinetd.inetutils
new file mode 100644
index 0000000..21b55da
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rlogin.xinetd.inetutils
@@ -0,0 +1,23 @@
+# default: off
+# description:
+# Rlogind is a server for the rlogin program. The server provides remote 
+# execution with authentication based on privileged port numbers from trusted
+# host
+#
+service login
+{
+	socket_type	= stream
+	protocol	= tcp
+	flags		= NAMEINARGS
+	wait		= no
+	user		= root
+	group		= root
+	log_on_success	+= USERID
+	log_on_failure	+= USERID
+	server		= @SBINDIR@/tcpd
+	server_args	= @SBINDIR@/in.rlogind -a
+	disable		= yes
+}
+							
+							
+							
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rsh.xinetd.inetutils b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rsh.xinetd.inetutils
new file mode 100644
index 0000000..2b894a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rsh.xinetd.inetutils
@@ -0,0 +1,21 @@
+# default: off
+# description:
+# The rshd server is a server for the rcmd(3) routine and, 
+# consequently, for the rsh(1) program. The server provides 
+# remote execution facilities with authentication based on 
+# privileged port numbers from trusted hosts.
+#
+service shell
+{
+	socket_type	= stream
+	protocol	= tcp
+	flags		= NAMEINARGS
+	wait		= no
+	user		= root
+	group		= root
+	log_on_success	+= USERID
+	log_on_failure	+= USERID
+	server		= @SBINDIR@/tcpd
+	server_args	= @SBINDIR@/in.rshd -aL
+	disable		= yes
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/telnet.xinetd.inetutils b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/telnet.xinetd.inetutils
new file mode 100644
index 0000000..2d9a040
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/telnet.xinetd.inetutils
@@ -0,0 +1,13 @@
+# default: on
+# description: The telnet server serves telnet sessions; it uses \
+#       unencrypted username/password pairs for authentication.
+service telnet
+{
+	disable		= no
+	flags		= REUSE
+	socket_type	= stream
+	wait		= no
+	user		= root
+	server		= @SBINDIR@/in.telnetd
+	log_on_failure	+= USERID
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/tftpd.xinetd.inetutils b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/tftpd.xinetd.inetutils
new file mode 100644
index 0000000..67b44c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/tftpd.xinetd.inetutils
@@ -0,0 +1,19 @@
+# default: off
+# description:
+# Tftpd is a server which supports the Internet Trivial File Transfer
+# Pro-tocol (RFC 783). The TFTP server operates at the port indicated
+# in the tftp service description; see services(5).
+#
+service tftp
+{
+        disable         = yes
+        socket_type     = dgram
+        protocol        = udp
+        flags           = IPv6
+        wait            = yes
+        user            = root
+        group           = root
+        server          = @SBINDIR@/in.tftpd
+        server_args     = /tftpboot
+}
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/version.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/version.patch
new file mode 100644
index 0000000..532a0e5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/version.patch
@@ -0,0 +1,17 @@
+Upstream-Status: Pending
+
+remove m4_esyscmd function
+
+Signed-off-by: Chunrong Guo <b40290@freescale.com>
+--- inetutils-1.9.1/configure.ac	2012-01-06 22:05:05.000000000 +0800
++++ inetutils-1.9.1/configure.ac	2012-11-12 14:01:11.732957019 +0800
+@@ -20,8 +20,7 @@
+ 
+ AC_PREREQ(2.59)
+ 
+-AC_INIT([GNU inetutils],
+- m4_esyscmd([build-aux/git-version-gen .tarball-version 's/inetutils-/v/;s/_/./g']),
++AC_INIT([GNU inetutils],[1.9.4],
+  [bug-inetutils@gnu.org])
+ 
+ AC_CONFIG_SRCDIR([src/inetd.c])
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils_1.9.4.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils_1.9.4.bb
new file mode 100644
index 0000000..68487ea
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils_1.9.4.bb
@@ -0,0 +1,179 @@
+DESCRIPTION = "The GNU inetutils are a collection of common \
+networking utilities and servers including ftp, ftpd, rcp, \
+rexec, rlogin, rlogind, rsh, rshd, syslog, syslogd, talk, \
+talkd, telnet, telnetd, tftp, tftpd, and uucpd."
+HOMEPAGE = "http://www.gnu.org/software/inetutils"
+SECTION = "net"
+DEPENDS = "ncurses netbase readline"
+LICENSE = "GPLv3"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7"
+
+SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.gz \
+           file://version.patch \
+           file://inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch \
+           file://inetutils-1.8-0003-wchar.patch \
+           file://rexec.xinetd.inetutils  \
+           file://rlogin.xinetd.inetutils \
+           file://rsh.xinetd.inetutils \
+           file://telnet.xinetd.inetutils \
+           file://tftpd.xinetd.inetutils \
+           file://inetutils-1.9-PATH_PROCNET_DEV.patch \
+           file://inetutils-only-check-pam_appl.h-when-pam-enabled.patch \
+           file://0001-rcp-fix-to-work-with-large-files.patch \
+"
+
+SRC_URI[md5sum] = "04852c26c47cc8c6b825f2b74f191f52"
+SRC_URI[sha256sum] = "be8f75eff936b8e41b112462db51adf689715658a1b09e0d6b05d11ec92cc616"
+
+inherit autotools gettext update-alternatives texinfo
+
+SRC_URI += "${@base_contains('DISTRO_FEATURES', 'ipv6', '', 'file://fix-disable-ipv6.patch', d)}"
+noipv6="${@base_contains('DISTRO_FEATURES', 'ipv6', '', '--disable-ipv6 gl_cv_socket_ipv6=no', d)}"
+
+PACKAGECONFIG ??= "ftp uucpd \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+                  "
+PACKAGECONFIG[ftp] = "--enable-ftp,--disable-ftp,readline"
+PACKAGECONFIG[uucpd] = "--enable-uucpd,--disable-uucpd,readline"
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
+
+EXTRA_OECONF = "--with-ncurses-include-dir=${STAGING_INCDIR} \
+        ${noipv6} \
+        inetutils_cv_path_login=${base_bindir}/login \
+        --with-libreadline-prefix=${STAGING_LIBDIR} \
+        --enable-rpath=no \
+"
+
+do_configure_prepend () {
+    export HELP2MAN='true'
+    cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${S}/build-aux/config.rpath
+    rm -f ${S}/glob/configure*
+}
+
+do_install_append () {
+    install -m 0755 -d ${D}${base_bindir}
+    install -m 0755 -d ${D}${base_sbindir}
+    install -m 0755 -d ${D}${sbindir}
+    install -m 0755 -d ${D}${sysconfdir}/xinetd.d
+    mv ${D}${bindir}/ping ${D}${base_bindir}/
+    mv ${D}${bindir}/ping6 ${D}${base_bindir}/
+    mv ${D}${bindir}/ifconfig ${D}${base_sbindir}/
+    mv ${D}${libexecdir}/syslogd ${D}${base_sbindir}/
+    mv ${D}${bindir}/hostname ${D}${base_bindir}/
+    mv ${D}${libexecdir}/tftpd ${D}${sbindir}/in.tftpd
+    mv ${D}${libexecdir}/telnetd ${D}${sbindir}/in.telnetd
+    mv ${D}${libexecdir}/rexecd ${D}${sbindir}/in.rexecd
+    mv ${D}${libexecdir}/rlogind ${D}${sbindir}/in.rlogind
+    mv ${D}${libexecdir}/rshd ${D}${sbindir}/in.rshd
+    mv ${D}${libexecdir}/talkd ${D}${sbindir}/in.talkd
+    mv ${D}${libexecdir}/uucpd ${D}${sbindir}/in.uucpd
+    mv ${D}${libexecdir}/* ${D}${bindir}/
+    cp ${WORKDIR}/rexec.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/rexec
+    cp ${WORKDIR}/rlogin.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/rlogin
+    cp ${WORKDIR}/rsh.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/rsh
+    cp ${WORKDIR}/telnet.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/telnet
+    cp ${WORKDIR}/tftpd.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/tftpd
+
+    sed -e 's,@SBINDIR@,${sbindir},g' -i ${D}/${sysconfdir}/xinetd.d/*
+
+    rm -rf ${D}${libexecdir}/
+    # remove usr/lib if empty
+    rmdir ${D}${libdir} || true
+}
+
+PACKAGES =+ "${PN}-ping ${PN}-ping6 ${PN}-hostname ${PN}-ifconfig \
+${PN}-tftp ${PN}-logger ${PN}-traceroute ${PN}-syslogd \
+${PN}-ftp ${PN}-ftpd ${PN}-tftpd ${PN}-telnet ${PN}-telnetd ${PN}-inetd \
+${PN}-rsh ${PN}-rshd"
+
+# The packages tftpd, telnetd and rshd conflict with the ones
+# provided by netkit, so add the corresponding -dbg packages
+# for them to avoid the confliction between the dbg package
+# of inetutils and netkit.
+PACKAGES += "${PN}-tftpd-dbg ${PN}-telnetd-dbg ${PN}-rshd-dbg"
+
+ALTERNATIVE_PRIORITY = "80"
+ALTERNATIVE_${PN} = "talk whois"
+ALTERNATIVE_LINK_NAME[talkd]  = "${sbindir}/in.talkd"
+ALTERNATIVE_LINK_NAME[uucpd]  = "${sbindir}/in.uucpd"
+
+ALTERNATIVE_${PN}-logger = "logger"
+ALTERNATIVE_${PN}-syslogd = "syslogd"
+ALTERNATIVE_LINK_NAME[syslogd]  = "${base_sbindir}/syslogd"
+
+ALTERNATIVE_${PN}-ftp = "ftp"
+ALTERNATIVE_${PN}-ftpd = "ftpd"
+ALTERNATIVE_${PN}-tftp = "tftp"
+ALTERNATIVE_${PN}-tftpd = "tftpd"
+ALTERNATIVE_LINK_NAME[tftpd] = "${sbindir}/tftpd"
+ALTERNATIVE_TARGET[tftpd]  = "${sbindir}/in.tftpd"
+
+ALTERNATIVE_${PN}-telnet = "telnet"
+ALTERNATIVE_${PN}-telnetd = "telnetd"
+ALTERNATIVE_LINK_NAME[telnetd] = "${sbindir}/telnetd"
+ALTERNATIVE_TARGET[telnetd] = "${sbindir}/in.telnetd"
+
+ALTERNATIVE_${PN}-rsh = "rcp rexec rlogin rsh"
+ALTERNATIVE_${PN}-rshd = "rshd rexecd rlogind"
+ALTERNATIVE_LINK_NAME[rshd] = "${sbindir}/rshd"
+ALTERNATIVE_TARGET[rshd] = "${sbindir}/in.rshd"
+ALTERNATIVE_LINK_NAME[rexecd] = "${sbindir}/rexecd"
+ALTERNATIVE_TARGET[rexecd] = "${sbindir}/in.rexecd"
+ALTERNATIVE_LINK_NAME[rlogind] = "${sbindir}/rlogind"
+ALTERNATIVE_TARGET[rlogind] = "${sbindir}/in.rlogind"
+
+ALTERNATIVE_${PN}-inetd= "inetd"
+ALTERNATIVE_${PN}-traceroute = "traceroute"
+
+ALTERNATIVE_${PN}-hostname = "hostname"
+ALTERNATIVE_LINK_NAME[hostname]  = "${base_bindir}/hostname"
+
+ALTERNATIVE_${PN}-ifconfig = "ifconfig"
+ALTERNATIVE_LINK_NAME[ifconfig]  = "${base_sbindir}/ifconfig"
+
+ALTERNATIVE_${PN}-ping = "ping"
+ALTERNATIVE_LINK_NAME[ping]   = "${base_bindir}/ping"
+
+ALTERNATIVE_${PN}-ping6 = "ping6"
+ALTERNATIVE_LINK_NAME[ping6]  = "${base_bindir}/ping6"
+
+
+FILES_${PN}-ping = "${base_bindir}/ping.${BPN}"
+FILES_${PN}-ping6 = "${base_bindir}/ping6.${BPN}"
+FILES_${PN}-hostname = "${base_bindir}/hostname.${BPN}"
+FILES_${PN}-ifconfig = "${base_sbindir}/ifconfig.${BPN}"
+FILES_${PN}-traceroute = "${bindir}/traceroute.${BPN}"
+FILES_${PN}-logger = "${bindir}/logger.${BPN}"
+FILES_${PN}-syslogd = "${base_sbindir}/syslogd.${BPN}"
+FILES_${PN}-ftp = "${bindir}/ftp.${BPN}"
+
+FILES_${PN}-tftp = "${bindir}/tftp.${BPN}"
+FILES_${PN}-telnet = "${bindir}/telnet.${BPN}"
+FILES_${PN}-rsh = "${bindir}/rsh.${BPN} ${bindir}/rlogin.${BPN} ${bindir}/rexec.${BPN} ${bindir}/rcp.${BPN}"
+
+FILES_${PN}-rshd = "${sbindir}/in.rshd ${sbindir}/in.rlogind ${sbindir}/in.rexecd \
+                    ${sysconfdir}/xinetd.d/rsh ${sysconfdir}/xinetd.d/rlogin ${sysconfdir}/xinetd.d/rexec"
+FILES_${PN}-rshd-dbg = "${sbindir}/.debug/in.rshd ${sbindir}/.debug/in.rlogind ${sbindir}/.debug/in.rexecd"
+RDEPENDS_${PN}-rshd += "xinetd tcp-wrappers"
+RCONFLICTS_${PN}-rshd += "netkit-rshd"
+RPROVIDES_${PN}-rshd = "rshd"
+
+FILES_${PN}-ftpd = "${bindir}/ftpd.${BPN}"
+FILES_${PN}-ftpd-dbg = "${bindir}/.debug/ftpd.${BPN}"
+RDEPENDS_${PN}-ftpd += "xinetd"
+
+FILES_${PN}-tftpd = "${sbindir}/in.tftpd ${sysconfdir}/xinetd.d/tftpd"
+FILES_${PN}-tftpd-dbg = "${sbindir}/.debug/in.tftpd"
+RCONFLICTS_${PN}-tftpd += "netkit-tftpd"
+RDEPENDS_${PN}-tftpd += "xinetd"
+
+FILES_${PN}-telnetd = "${sbindir}/in.telnetd ${sysconfdir}/xinetd.d/telnet"
+FILES_${PN}-telnetd-dbg = "${sbindir}/.debug/in.telnetd"
+RCONFLICTS_${PN}-telnetd += "netkit-telnetd"
+RPROVIDES_${PN}-telnetd = "telnetd"
+RDEPENDS_${PN}-telnetd += "xinetd"
+
+FILES_${PN}-inetd = "${bindir}/inetd.${BPN}"
+
+RDEPENDS_${PN} = "xinetd"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.6.3a.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.6.3a.bb
new file mode 100644
index 0000000..e6796a6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.6.3a.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "LFTP is a sophisticated file transfer program with \
+               command line interface. It supports FTP, HTTP, \
+               FISH, SFTP, HTTPS and FTPS protocols"
+HOMEPAGE = "http://lftp.yar.ru/"
+SECTION = "console/network"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+DEPENDS = "readline"
+
+SRC_URI = "http://fossies.org/linux/misc/lftp-${PV}.tar.gz \
+          "
+SRC_URI[md5sum] = "2777dd514d21fe1da764bedd1d0ab36c"
+SRC_URI[sha256sum] = "a8b53e5ca2c1acbecd181c87f21a8673ca9038dc9f2be6ab8c23790bd91fd446"
+
+inherit autotools gettext pkgconfig
+
+EXTRA_OECONF += "--with-modules"
+
+PACKAGECONFIG ??= "libidn openssl zlib gnutls"
+PACKAGECONFIG[libidn] = "--with-libidn, --without-libidn, libidn"
+PACKAGECONFIG[openssl] = "--with-openssl, --without-openssl, openssl"
+PACKAGECONFIG[zlib] = "--with-zlib, --without-zlib, zlib"
+PACKAGECONFIG[gnutls] = "--with-gnutls, --without-gnutls, gnutls"
+
+FILES_${PN}-dbg += "${libdir}/lftp/${PV}/.debug"
+RDEPENDS_${PN} = "perl bash readline"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.12.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.12.bb
new file mode 100644
index 0000000..28b6c82
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.12.bb
@@ -0,0 +1,15 @@
+SUMMARY = "dumb networking library"
+HOMEPAGE = "http://code.google.com/p/libdnet/"
+SECTION = "libs"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0036c1b155f4e999f3e0a373490b5db9"
+
+SRC_URI = "http://libdnet.googlecode.com/files/libdnet-${PV}.tgz"
+
+SRC_URI[md5sum] = "9253ef6de1b5e28e9c9a62b882e44cc9"
+SRC_URI[sha256sum] = "83b33039787cf99990e977cef7f18a5d5e7aaffc4505548a83d31bd3515eb026"
+
+inherit autotools
+
+acpaths = "-I ./config/"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_1.3.10.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_1.3.10.bb
new file mode 100644
index 0000000..d5c7afe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_1.3.10.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Lightweight crypto and SSL/TLS library"
+DESCRIPTION = "mbedtls is a lean open source crypto library          \
+for providing SSL and TLS support in your programs. It offers        \
+an intuitive API and documented header files, so you can actually    \
+understand what the code does. It features:                          \
+                                                                     \
+ - Symmetric algorithms, like AES, Blowfish, Triple-DES, DES, ARC4,  \
+   Camellia and XTEA                                                 \
+ - Hash algorithms, like SHA-1, SHA-2, RIPEMD-160 and MD5            \
+ - Entropy pool and random generators, like CTR-DRBG and HMAC-DRBG   \
+ - Public key algorithms, like RSA, Elliptic Curves, Diffie-Hellman, \
+   ECDSA and ECDH                                                    \
+ - SSL v3 and TLS 1.0, 1.1 and 1.2                                   \
+ - Abstraction layers for ciphers, hashes, public key operations,    \
+   platform abstraction and threading                                \
+"
+
+HOMEPAGE = "https://polarssl.org"
+BUGTRACKER = "https://github.com/polarssl/polarssl/issues"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
+
+SECTION = "libdevel"
+
+SRC_URI = "https://tls.mbed.org/download/mbedtls-${PV}-gpl.tgz"
+
+SRC_URI[md5sum] = "19ebbc96feceb430ad958dfe89cb633f"
+SRC_URI[sha256sum] = "746fd88e0c6623691fc56c4eed52e40a57b2da0ac80f6dd8995094aa6adb407e"
+
+DEPENDS = "openssl"
+RDEPENDS_${PN} += "libcrypto"
+PROVIDES += "polarssl"
+RPROVIDES_${PN} = "polarssl"
+EXTRA_OECMAKE = "-DUSE_SHARED_POLARSSL_LIBRARY=on -DLIB_INSTALL_DIR=${baselib}"
+
+inherit cmake
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_git.bb
new file mode 100644
index 0000000..6d3c252
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_git.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Open client for Cisco AnyConnect VPN"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LGPL;md5=243b725d71bb5df4a1e5920b344b86ad"
+
+DEPENDS = "vpnc libxml2 gnutls lz4 krb5 libproxy pcsc-lite"
+RDEPENDS_${PN} = "vpnc"
+
+PV = "7.06"
+
+SRCREV = "35542d52202672b8c12ecc63867432128244013a"
+SRC_URI = "git://git.infradead.org/users/dwmw2/openconnect.git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF += "--with-vpnc-script=${SYSROOT_DESTDIR}${sysconfdir}/vpnc/vpnc-script \
+                 --disable-static"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/relayd/relayd_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/relayd/relayd_git.bb
new file mode 100644
index 0000000..aab2ab5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/relayd/relayd_git.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Layer 3 relay daemon"
+SECTION = "console/network"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://main.c;endline=17;md5=86aad799085683e0a2e1c2684a20bab2"
+
+DEPENDS = "libubox"
+
+SRC_URI = "git://nbd.name/relayd.git"
+
+SRCREV = "2970ff60bac6b70ecb682779d5c776dc559dc0b9"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/00-fix-typos-in-man-pages.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/00-fix-typos-in-man-pages.patch
new file mode 100644
index 0000000..c94bc31
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/00-fix-typos-in-man-pages.patch
@@ -0,0 +1,108 @@
+From 1573638212a9733a44939a4d38a226f38dca36f1 Mon Sep 17 00:00:00 2001
+From: Michele Baldessari <michele@acksyn.org>
+Date: Tue, 9 Jul 2013 23:23:33 +0200
+Subject: [PATCH] Fix typos in man-pages
+
+Fix some typos in the man-pages.
+
+Signed-off-by: Michele Baldessari <michele@acksyn.org>
+Reviewed-by: Simo Sorce <idra@samba.org>
+
+Autobuild-User(master): Simo Sorce <idra@samba.org>
+Autobuild-Date(master): Wed Jul 10 16:45:07 CEST 2013 on sn-devel-104
+---
+ docs-xml/manpages/dbwrap_tool.1.xml              | 2 +-
+ docs-xml/manpages/idmap_autorid.8.xml            | 2 +-
+ docs-xml/manpages/net.8.xml                      | 2 +-
+ docs-xml/manpages/pdbedit.8.xml                  | 2 +-
+ docs-xml/manpages/samba.7.xml                    | 2 +-
+ docs-xml/manpages/smbclient.1.xml                | 2 +-
+ docs-xml/manpages/smbpasswd.5.xml                | 2 +-
+ docs-xml/manpages/vfs_smb_traffic_analyzer.8.xml | 2 +-
+ 8 files changed, 8 insertions(+), 8 deletions(-)
+
+Index: samba-4.1.11/docs-xml/manpages/smbstatus.1.xml
+===================================================================
+--- samba-4.1.11.orig/docs-xml/manpages/smbstatus.1.xml
++++ samba-4.1.11/docs-xml/manpages/smbstatus.1.xml
+@@ -137,6 +137,13 @@
+ 		</listitem>
+ 		</varlistentry>
+ 
++		<varlistentry>
++		<term>-n|--numeric</term>
++		<listitem><para>causes smbstatus to display numeric UIDs and GIDs instead of
++				resolving them to names.</para>
++		</listitem>
++		</varlistentry>
++
+ 	</variablelist>
+ </refsect1>
+ 
+Index: samba-4.1.11/docs-xml/manpages/sharesec.1.xml
+===================================================================
+--- samba-4.1.11.orig/docs-xml/manpages/sharesec.1.xml
++++ samba-4.1.11/docs-xml/manpages/sharesec.1.xml
+@@ -129,6 +129,13 @@
+ 		</para></listitem>
+ 		</varlistentry>
+ 
++		<varlistentry>
++		<term>-S|--setsddl=STRING</term>
++		<listitem><para>
++		Set security descriptor by providing ACL in SDDL format.
++		</para></listitem>
++		</varlistentry>
++
+ 		&stdarg.help;
+ 		&stdarg.server.debug;
+ 		&popt.common.samba;
+Index: samba-4.1.11/docs-xml/build/DTD/samba.entities
+===================================================================
+--- samba-4.1.11.orig/docs-xml/build/DTD/samba.entities
++++ samba-4.1.11/docs-xml/build/DTD/samba.entities
+@@ -270,6 +270,44 @@ file.
+ &popt.common.samba;
+ '>
+ 
++<!ENTITY stdarg.signing '
++<varlistentry>
++<term>-S|--signing on|off|required</term>
++<listitem><para>Set the client signing state.
++</para></listitem>
++</varlistentry>
++'>
++
++<!ENTITY stdarg.machinepass '
++<varlistentry>
++<term>-P|--machine-pass</term>
++<listitem><para>Use stored machine account password.
++</para></listitem>
++</varlistentry>
++'>
++
++<!ENTITY stdarg.encrypt '
++<varlistentry>
++<term>-e|--encrypt</term>
++<listitem><para>
++This command line parameter requires the remote
++server support the UNIX extensions or that the SMB3 protocol has been selected.
++Requests that the connection be encrypted. Negotiates SMB encryption using either
++SMB3 or POSIX extensions via GSSAPI. Uses the given credentials for
++the encryption negotiation (either kerberos or NTLMv1/v2 if given
++domain/username/password triple. Fails the connection if encryption
++cannot be negotiated.
++</para></listitem>
++</varlistentry>
++'>
++
++<!ENTITY stdarg.pwnthash '
++<varlistentry>
++<term>--pw-nt-hash</term>
++<listitem><para>The supplied password is the NT hash.
++</para></listitem>
++</varlistentry>
++'>
+ 
+ <!ENTITY stdarg.resolve.order '
+ <varlistentry>
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/0006-avoid-using-colon-in-the-checking-msg.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/0006-avoid-using-colon-in-the-checking-msg.patch
new file mode 100644
index 0000000..cdf7a38
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/0006-avoid-using-colon-in-the-checking-msg.patch
@@ -0,0 +1,32 @@
+From 5413f97290d3126262eb309ecbcf7769509f2a11 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Tue, 10 Nov 2015 00:48:35 -0500
+Subject: [PATCH 6/7] avoid using colon in the checking msg
+
+Upstream-Status: Pending
+
+colon is used as the separator when parse from
+a answers file, the colon here makes it never
+get the right answer.
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ wscript_configure_system_mitkrb5 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/wscript_configure_system_mitkrb5 b/wscript_configure_system_mitkrb5
+index a62d00b..a2d89f0 100644
+--- a/wscript_configure_system_mitkrb5
++++ b/wscript_configure_system_mitkrb5
+@@ -240,7 +240,7 @@ conf.CHECK_CODE('''
+        ''',
+     'HAVE_WRFILE_KEYTAB',
+     headers='krb5.h', lib='krb5', execute=True,
+-    msg="Checking whether the WRFILE:-keytab is supported");
++    msg="Checking whether the WRFILE -keytab is supported");
+ # Check for KRB5_DEPRECATED handling
+ conf.CHECK_CODE('''#define KRB5_DEPRECATED 1
+        #include <krb5.h>''',
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/16-do-not-check-xsltproc-manpages.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/16-do-not-check-xsltproc-manpages.patch
new file mode 100644
index 0000000..c37cfcd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/16-do-not-check-xsltproc-manpages.patch
@@ -0,0 +1,43 @@
+Don't check xsltproc manpages
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+Index: samba-4.4.2/lib/ldb/wscript
+===================================================================
+--- samba-4.4.2.orig/lib/ldb/wscript
++++ samba-4.4.2/lib/ldb/wscript
+@@ -65,7 +65,7 @@ def configure(conf):
+                 conf.define('USING_SYSTEM_LDB', 1)
+ 
+     if conf.env.standalone_ldb:
+-        conf.CHECK_XSLTPROC_MANPAGES()
++        #conf.CHECK_XSLTPROC_MANPAGES()
+ 
+         # we need this for the ldap backend
+         if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'):
+Index: samba-4.4.2/lib/talloc/wscript
+===================================================================
+--- samba-4.4.2.orig/lib/talloc/wscript
++++ samba-4.4.2/lib/talloc/wscript
+@@ -56,7 +56,7 @@ def configure(conf):
+     if conf.env.standalone_talloc:
+         conf.env.TALLOC_COMPAT1 = Options.options.TALLOC_COMPAT1
+ 
+-    conf.CHECK_XSLTPROC_MANPAGES()
++    #conf.CHECK_XSLTPROC_MANPAGES()
+ 
+     if not conf.env.disable_python:
+         # also disable if we don't have the python libs installed
+Index: samba-4.4.2/lib/tdb/wscript
+===================================================================
+--- samba-4.4.2.orig/lib/tdb/wscript
++++ samba-4.4.2/lib/tdb/wscript
+@@ -92,7 +92,7 @@ def configure(conf):
+         not conf.env.disable_tdb_mutex_locking):
+         conf.define('USE_TDB_MUTEX_LOCKING', 1)
+ 
+-    conf.CHECK_XSLTPROC_MANPAGES()
++    #conf.CHECK_XSLTPROC_MANPAGES()
+ 
+     if not conf.env.disable_python:
+         # also disable if we don't have the python libs installed
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/20-do-not-import-target-module-while-cross-compile.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/20-do-not-import-target-module-while-cross-compile.patch
new file mode 100644
index 0000000..e112b3b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/20-do-not-import-target-module-while-cross-compile.patch
@@ -0,0 +1,58 @@
+Some modules such as dynamic library maybe cann't be imported while cross compile, 
+we just check whether does the module exist.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+Index: samba-4.4.2/buildtools/wafsamba/samba_bundled.py
+===================================================================
+--- samba-4.4.2.orig/buildtools/wafsamba/samba_bundled.py
++++ samba-4.4.2/buildtools/wafsamba/samba_bundled.py
+@@ -2,6 +2,7 @@
+ 
+ import sys
+ import Build, Options, Logs
++import imp, os
+ from Configure import conf
+ from samba_utils import TO_LIST
+ 
+@@ -230,17 +231,32 @@ def CHECK_BUNDLED_SYSTEM_PYTHON(conf, li
+     # versions
+     minversion = minimum_library_version(conf, libname, minversion)
+ 
+-    try:
+-        m = __import__(modulename)
+-    except ImportError:
+-        found = False
+-    else:
++    # Find module in PYTHONPATH
++    stuff = imp.find_module(modulename, [os.environ["PYTHONPATH"]])
++    if stuff:
+         try:
+-            version = m.__version__
+-        except AttributeError:
++            m = imp.load_module(modulename, stuff[0], stuff[1], stuff[2])
++        except ImportError:
+             found = False
++
++            if conf.env.CROSS_COMPILE:
++                # Some modules such as dynamic library maybe cann't be imported
++                # while cross compile, we just check whether the module exist
++                Logs.warn('Cross module[%s] has been found, but can not be loaded.' % (stuff[1]))
++                found = True
+         else:
+-            found = tuplize_version(version) >= tuplize_version(minversion)
++            try:
++                version = m.__version__
++            except AttributeError:
++                found = False
++            else:
++                found = tuplize_version(version) >= tuplize_version(minversion)
++        finally:
++            if stuff[0]:
++                stuff[0].close()
++    else:
++        found = False
++
+     if not found and not conf.LIB_MAY_BE_BUNDLED(libname):
+         Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion))
+         sys.exit(1)
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/21-add-config-option-without-valgrind.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/21-add-config-option-without-valgrind.patch
new file mode 100644
index 0000000..025ac27
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/21-add-config-option-without-valgrind.patch
@@ -0,0 +1,63 @@
+From 9a2d6315ff206b2a47100dfd85afe3af56576995 Mon Sep 17 00:00:00 2001
+From: Wenzong Fan <wenzong.fan@windriver.com>
+Date: Thu, 10 Dec 2015 04:20:51 -0500
+Subject: [PATCH] Add config option without-valgrind
+
+Upstream-Status: Pending
+
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+---
+ lib/replace/wscript | 4 +++-
+ source3/wscript     | 5 ++++-
+ wscript             | 4 ++++
+ 3 files changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/lib/replace/wscript b/lib/replace/wscript
+index f0040b1..aca73af 100644
+--- a/lib/replace/wscript
++++ b/lib/replace/wscript
+@@ -101,7 +101,9 @@ struct foo bar = { .y = 'X', .x = 1 };
+ 
+     conf.CHECK_CODE('', headers='rpc/rpc.h rpcsvc/yp_prot.h', define='HAVE_RPCSVC_YP_PROT_H')
+ 
+-    conf.CHECK_HEADERS('valgrind.h valgrind/valgrind.h valgrind/memcheck.h')
++    if not Options.options.disable_valgrind:
++        conf.CHECK_HEADERS('valgrind.h valgrind/valgrind.h valgrind/memcheck.h')
++
+     conf.CHECK_HEADERS('nss_common.h nsswitch.h ns_api.h')
+     conf.CHECK_HEADERS('sys/extattr.h sys/ea.h sys/proplist.h sys/cdefs.h')
+     conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h malloc.h')
+diff --git a/source3/wscript b/source3/wscript
+index bac3dd5..a5c51ea 100644
+--- a/source3/wscript
++++ b/source3/wscript
+@@ -1016,7 +1016,10 @@ syscall(SYS_setgroups32, 0, NULL);
+             Logs.warn("--with-dnsupdate=yes but gssapi support not sufficient")
+         else:
+             conf.DEFINE('WITH_DNS_UPDATES', 1)
+-    conf.CHECK_HEADERS('valgrind.h valgrind/valgrind.h valgrind/memcheck.h')
++
++    if not Options.options.disable_valgrind:
++        conf.CHECK_HEADERS('valgrind.h valgrind/valgrind.h valgrind/memcheck.h')
++
+     if Options.options.developer:
+         if conf.CONFIG_SET('HAVE_VALGRIND_H') or conf.CONFIG_SET('HAVE_VALGRIND_VALGRIND_H'):
+             conf.DEFINE('VALGRIND', '1')
+diff --git a/wscript b/wscript
+index 7679c0f..681ac17 100644
+--- a/wscript
++++ b/wscript
+@@ -72,6 +72,10 @@ def set_options(opt):
+                    help=("Disable systemd integration"),
+                    action='store_false', dest='enable_systemd')
+ 
++    opt.add_option('--without-valgrind',
++                   help=("Disable use of the valgrind headers"),
++                   action="store_true", dest='disable_valgrind', default=False)
++
+     gr = opt.option_group('developer options')
+ 
+     opt.tool_options('python') # options for disabling pyc or pyo compilation
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/volatiles.03_samba b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/volatiles.03_samba
new file mode 100644
index 0000000..4bdfa7d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba-4.4.2/volatiles.03_samba
@@ -0,0 +1,3 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d root root 0755 /var/log/samba none
+d root root 0755 /var/run/samba none
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.4.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.4.2.bb
new file mode 100644
index 0000000..6a2220a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.4.2.bb
@@ -0,0 +1,320 @@
+SECTION = "console/network"
+
+LICENSE = "GPL-3.0+ & LGPL-3.0+ & GPL-2.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=bfccfe952269fff2b407dd11f2f3083b \
+                    file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 "
+
+SAMBA_MIRROR = "http://samba.org/samba/ftp"
+MIRRORS += "\
+${SAMBA_MIRROR}    http://mirror.internode.on.net/pub/samba \n \
+${SAMBA_MIRROR}    http://www.mirrorservice.org/sites/ftp.samba.org \n \
+"
+
+SRC_URI = "${SAMBA_MIRROR}/stable/samba-${PV}.tar.gz \
+           file://00-fix-typos-in-man-pages.patch \
+           file://16-do-not-check-xsltproc-manpages.patch \
+           file://20-do-not-import-target-module-while-cross-compile.patch \
+           file://21-add-config-option-without-valgrind.patch \
+           file://0006-avoid-using-colon-in-the-checking-msg.patch \
+           file://volatiles.03_samba \
+          "
+
+SRC_URI[md5sum] = "03a65a3adf08ceb1636ad59d234d7f9d"
+SRC_URI[sha256sum] = "eaecd41a85ebb9507b8db9856ada2a949376e9d53cf75664b5493658f6e5926a"
+
+inherit systemd waf-samba cpan-base perlnative
+# remove default added RDEPENDS on perl
+RDEPENDS_${PN}_remove = "perl"
+
+DEPENDS += "readline virtual/libiconv zlib popt libtalloc libtdb libtevent libldb krb5 libbsd libaio"
+
+SYSVINITTYPE_linuxstdbase = "lsb"
+SYSVINITTYPE = "sysv"
+
+PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '${SYSVINITTYPE}', '', d)} \
+                   ${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
+                   ${@base_contains('DISTRO_FEATURES', 'zeroconf', 'zeroconf', '', d)} \
+                   acl cups ldap \
+"
+
+RDEPENDS_${PN}-base += "${@bb.utils.contains('PACKAGECONFIG', 'lsb', 'lsb', '', d)}"
+RDEPENDS_${PN}-ctdb-tests += "bash"
+
+PACKAGECONFIG[acl] = "--with-acl-support,--without-acl-support,acl"
+PACKAGECONFIG[fam] = "--with-fam,--without-fam,gamin"
+PACKAGECONFIG[pam] = "--with-pam --with-pammodulesdir=${base_libdir}/security,--without-pam,libpam"
+PACKAGECONFIG[lsb] = ",,lsb"
+PACKAGECONFIG[sysv] = ",,sysvinit"
+PACKAGECONFIG[cups] = "--enable-cups,--disable-cups,cups"
+PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap"
+PACKAGECONFIG[sasl] = ",,cyrus-sasl"
+PACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd"
+PACKAGECONFIG[dmapi] = "--with-dmapi,--without-dmapi,dmapi"
+PACKAGECONFIG[zeroconf] = "--enable-avahi,--disable-avahi,avahi"
+PACKAGECONFIG[valgrind] = ",--without-valgrind,valgrind,"
+PACKAGECONFIG[lttng] = "--with-lttng, --without-lttng,lttng-ust"
+PACKAGECONFIG[archive] = "--with-libarchive, --without-libarchive, libarchive"
+
+
+SAMBA4_IDMAP_MODULES="idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2"
+SAMBA4_PDB_MODULES="pdb_tdbsam,${@bb.utils.contains('PACKAGECONFIG', 'ldap', 'pdb_ldap,', '', d)}pdb_ads,pdb_smbpasswd,pdb_wbc_sam,pdb_samba4"
+SAMBA4_AUTH_MODULES="auth_unix,auth_wbc,auth_server,auth_netlogond,auth_script,auth_samba4"
+SAMBA4_MODULES="${SAMBA4_IDMAP_MODULES},${SAMBA4_PDB_MODULES},${SAMBA4_AUTH_MODULES}"
+
+SAMBA4_LIBS="heimdal,!zlib,!popt,!talloc,!pytalloc,!pytalloc-util,!tevent,!pytevent,!tdb,!pytdb,!ldb,!pyldb"
+
+EXTRA_OECONF += "--enable-fhs \
+                 --with-piddir=/run \
+                 --with-sockets-dir=/run/samba \
+                 --with-modulesdir=${libdir}/samba \
+                 --with-lockdir=${localstatedir}/lib/samba \
+                 --with-cachedir=${localstatedir}/lib/samba \
+                 --disable-gnutls \
+                 --disable-rpath-install \
+                 --with-shared-modules=${SAMBA4_MODULES} \
+                 --bundled-libraries=${SAMBA4_LIBS} \
+                 --with-system-mitkrb5 \
+                 --without-ad-dc \
+                 ${@base_conditional('TARGET_ARCH', 'x86_64', '', '--disable-glusterfs', d)} \
+                 --with-cluster-support \
+                 --with-profiling-data \
+                 --with-libiconv=${STAGING_DIR_HOST}${prefix} \
+                "
+DISABLE_STATIC = ""
+
+LDFLAGS += "-Wl,-z,relro,-z,now"
+
+do_install_append() {
+    if ${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        for i in nmb smb winbind; do
+            install -m 0644 packaging/systemd/$i.service ${D}${systemd_unitdir}/system
+        done
+        sed -i 's,\(ExecReload=\).*\(/kill\),\1${base_bindir}\2,' ${D}${systemd_unitdir}/system/*.service
+
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        install -m644 packaging/systemd/samba.conf.tmp ${D}${sysconfdir}/tmpfiles.d/samba.conf
+        echo "d ${localstatedir}/log/samba 0755 root root -" \
+            >> ${D}${sysconfdir}/tmpfiles.d/samba.conf
+    elif ${@bb.utils.contains('PACKAGECONFIG', 'lsb', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/init.d
+        install -m 0755 packaging/LSB/samba.sh ${D}${sysconfdir}/init.d
+        update-rc.d -r ${D} samba.sh start 20 3 5 .
+        update-rc.d -r ${D} samba.sh start 20 0 1 6 .
+    elif ${@bb.utils.contains('PACKAGECONFIG', 'sysv', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/init.d
+        install -m 0755 packaging/sysv/samba.init ${D}${sysconfdir}/init.d/samba.sh
+        sed -e 's,/opt/samba/bin,${sbindir},g' \
+            -e 's,/opt/samba/smb.conf,${sysconfdir}/samba/smb.conf,g' \
+            -e 's,/opt/samba/log,${localstatedir}/log/samba,g' \
+            -e 's,/etc/init.d/samba.server,${sysconfdir}/init.d/samba.sh,g' \
+            -i ${D}${sysconfdir}/init.d/samba.sh
+        update-rc.d -r ${D} samba.sh start 20 3 5 .
+        update-rc.d -r ${D} samba.sh start 20 0 1 6 .
+    fi
+
+    install -d ${D}${sysconfdir}/samba
+    echo "127.0.0.1 localhost" > ${D}${sysconfdir}/samba/lmhosts
+    install -m644 packaging/LSB/smb.conf ${D}${sysconfdir}/samba/smb.conf
+    install -D -m 644 ${WORKDIR}/volatiles.03_samba ${D}${sysconfdir}/default/volatiles/03_samba
+
+    install -d ${D}${sysconfdir}/sysconfig/
+    install -m644 packaging/systemd/samba.sysconfig ${D}${sysconfdir}/sysconfig/samba
+
+    rm -rf ${D}/run ${D}${localstatedir}/run
+}
+
+PACKAGES += "${PN}-python ${PN}-python-dbg ${PN}-pidl libwinbind libwinbind-dbg libwinbind-krb5-locator"
+PACKAGES =+ "libwbclient libnss-winbind winbind winbind-dbg libnetapi libsmbsharemodes \
+             libsmbclient libsmbclient-dev lib${PN}-base ${PN}-base ${PN}-ctdb-tests"
+
+RDEPENDS_${PN} += "${PN}-base"
+
+FILES_${PN}-base = "${sbindir}/nmbd \
+                    ${sbindir}/smbd \
+                    ${sysconfdir}/init.d \
+                    ${localstatedir}/lib/samba \
+                    ${localstatedir}/log/samba \
+                    ${localstatedir}/nmbd \
+                    ${localstatedir}/spool/samba \
+"
+
+FILES_${PN}-ctdb-tests = "${bindir}/ctdb_run_tests \
+                          ${libdir}/ctdb-tests \
+                          ${datadir}/ctdb-tests \
+                          /run/ctdb \
+                         "
+
+# figured out by
+# FILES="tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/samba/4.1.12-r0/image/usr/sbin/smbd tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/samba/4.1.12-r0/image/usr/sbin/nmbd"
+#
+# while [ "${FILES}" != "${OLDFILES}" ]
+# do
+#     OLDFILES="${FILES}"
+#     NEEDED=`tmp/sysroots/x86_64-linux/usr/libexec/arm-poky-linux-gnueabi.gcc-cross-initial-arm/gcc/arm-poky-linux-gnueabi/5.2.0/objdump -x ${FILES} | grep NEEDED | egrep -E 'so(.[0-9]|$)' | sort -u | perl -MData::Dumper -le 'while (<>) {chomp; push @lib, (split)[1]}; print "(", join("|", @lib), ")"'`
+#     NF=`find tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/samba/4.1.12-r0/image/usr/lib -type f | egrep "${NEEDED}" | sort -u`
+#
+#     FILES=`perl -le 'foreach (@ARGV) { $f{$_}++ }; print join(" ", sort keys %f)' ${FILES} ${NF}`
+# done
+#
+# LIBS=`echo ${FILES} | sed -e 's,tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/samba/4.1.12-r0/image/usr/lib,${libdir},g' -e 's,.so.[0-9]+.*$,.so.*,g'`
+# for l in ${LIBS}
+# do
+#     echo $l
+# done
+
+FILES_lib${PN}-base = "\
+                    ${sysconfdir}/default \
+                    ${sysconfdir}/samba \
+                    ${libdir}/libdcerpc-binding.so.* \
+                    ${libdir}/libgensec.so.* \
+                    ${libdir}/libndr-krb5pac.so.* \
+                    ${libdir}/libndr-nbt.so.* \
+                    ${libdir}/libndr-standard.so.* \
+                    ${libdir}/libndr.so.* \
+                    ${libdir}/libnetapi.so.* \
+                    ${libdir}/libpdb.so.* \
+                    ${libdir}/libsamba-credentials.so.* \
+                    ${libdir}/libsamba-hostconfig.so.* \
+                    ${libdir}/libsamba-util.so.* \
+                    ${libdir}/libsamdb.so.* \
+                    ${libdir}/libsmbconf.so.* \
+                    ${libdir}/libtevent-util.so.* \
+                    ${libdir}/samba/libCHARSET3.so \
+                    ${libdir}/samba/libaddns.so \
+                    ${libdir}/samba/libads.so \
+                    ${libdir}/samba/libasn1util.so \
+                    ${libdir}/samba/libauth.so \
+                    ${libdir}/samba/libauth_sam_reply.so \
+                    ${libdir}/samba/libauthkrb5.so \
+                    ${libdir}/samba/libccan.so \
+                    ${libdir}/samba/libcli-ldap-common.so \
+                    ${libdir}/samba/libcli-nbt.so \
+                    ${libdir}/samba/libcli_cldap.so \
+                    ${libdir}/samba/libcli_smb_common.so \
+                    ${libdir}/samba/libcli_spoolss.so \
+                    ${libdir}/samba/libcliauth.so \
+                    ${libdir}/samba/libdbwrap.so \
+                    ${libdir}/samba/libdcerpc-samba.so \
+                    ${libdir}/samba/liberrors.so \
+                    ${libdir}/samba/libflag_mapping.so \
+                    ${libdir}/samba/libgse.so \
+                    ${libdir}/samba/libinterfaces.so \
+                    ${libdir}/samba/libkrb5samba.so \
+                    ${libdir}/samba/libldbsamba.so \
+                    ${libdir}/samba/liblibcli_lsa3.so \
+                    ${libdir}/samba/liblibcli_netlogon3.so \
+                    ${libdir}/samba/liblibsmb.so \
+                    ${libdir}/samba/libmsrpc3.so \
+                    ${libdir}/samba/libndr-samba.so \
+                    ${libdir}/samba/libndr-samba4.so \
+                    ${libdir}/samba/libnpa_tstream.so \
+                    ${libdir}/samba/libntdb.so.* \
+                    ${libdir}/samba/libpopt_samba3.so \
+                    ${libdir}/samba/libprinting_migrate.so \
+                    ${libdir}/samba/libsamba-modules.so \
+                    ${libdir}/samba/libsamba-security.so \
+                    ${libdir}/samba/libsamba-sockets.so \
+                    ${libdir}/samba/libsamba3-util.so \
+                    ${libdir}/samba/libsamdb-common.so \
+                    ${libdir}/samba/libsecrets3.so \
+                    ${libdir}/samba/libserver-role.so \
+                    ${libdir}/samba/libsmb_transport.so \
+                    ${libdir}/samba/libsmbd_base.so \
+                    ${libdir}/samba/libsmbd_conn.so \
+                    ${libdir}/samba/libsmbd_shim.so \
+                    ${libdir}/samba/libsmbregistry.so \
+                    ${libdir}/samba/libtdb-wrap.so \
+                    ${libdir}/samba/libutil_cmdline.so \
+                    ${libdir}/samba/libutil_ntdb.so \
+                    ${libdir}/samba/libutil_reg.so \
+                    ${libdir}/samba/libutil_setid.so \
+                    ${libdir}/samba/libutil_tdb.so \
+                    ${libdir}/samba/pdb/smbpasswd.so \
+                    ${libdir}/samba/pdb/tdbsam.so \
+                    ${libdir}/samba/pdb/wbc_sam.so \
+"
+
+FILES_winbind-dbg = "${libdir}/idmap/.debug/*.so \
+                     ${libdir}/security/.debug/pam_winbind.so \
+"
+
+FILES_${PN} += "${libdir}/vfs/*.so \
+                ${libdir}/charset/*.so \
+                ${libdir}/*.dat \
+                ${libdir}/auth/*.so \
+                ${libdir}/security/pam_smbpass.so \
+"
+
+FILES_${PN}-dbg += "${libdir}/vfs/.debug/*.so \
+                    ${libdir}/charset/.debug/*.so \
+                    ${libdir}/auth/.debug/*.so \
+                    ${libdir}/security/.debug/pam_smbpass.so \
+"
+
+FILES_libwbclient = "${libdir}/libwbclient.so.* ${libdir}/samba/libwinbind-client.so"
+FILES_libnetapi = "${libdir}/libnetapi.so.*"
+FILES_libsmbsharemodes = "${libdir}/libsmbsharemodes.so.*"
+FILES_libsmbclient = "${libdir}/libsmbclient.so.*"
+FILES_libsmbclient-dev = "${libdir}/libsmbclient.so ${includedir}"
+FILES_winbind = "${sbindir}/winbindd \
+                 ${bindir}/wbinfo \
+                 ${bindir}/ntlm_auth \
+                 ${sysconfdir}/init.d/winbind \
+                 ${systemd_unitdir}/system/winbind.service \
+"
+
+FILES_libnss-winbind = "${libdir}/libnss_*${SOLIBS} \
+                        ${libdir}/nss_info \
+"
+
+FILES_${PN} += "${base_libdir}/security/pam_smbpass.so \
+"
+
+SMB_SERVICE="${systemd_unitdir}/system/nmb.service ${systemd_unitdir}/system/smb.service"
+SMB_SYSV="${sysconfdir}/init.d ${sysconfdir}/rc?.d"
+FILES_${PN}-base +="${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${SMB_SERVICE}', '', d)}"
+FILES_${PN}-base +="${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '${SMB_SYSV}', '', d)}"
+
+FILES_${PN}-dbg += "${libdir}/samba/idmap/.debug/* \
+                    ${libdir}/samba/pdb/.debug/* \
+                    ${libdir}/samba/auth/.debug/* \
+                    ${libdir}/samba/nss_info/.debug/* \
+                    ${libdir}/samba/ldb/.debug/* \
+                    ${libdir}/samba/vfs/.debug/* \
+                    ${base_libdir}/security/.debug/pam_smbpass.so \
+"
+
+FILES_libwinbind = "${base_libdir}/security/pam_winbind.so"
+FILES_libwinbind += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/winbind.service', '', d)}"
+FILES_libwinbind-dbg = "${base_libdir}/security/.debug/pam_winbind.so"
+FILES_libwinbind-krb5-locator = "${libdir}/winbind_krb5_locator.so"
+
+FILES_${PN}-python = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/*.so \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/_ldb_text.py \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/*.py \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/*.so \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/dcerpc/*.so \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/dcerpc/*.py \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/external/* \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/kcc/* \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/netcmd/*.py \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/provision/*.py \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/samba3/*.py \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/samba3/*.so \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/subunit/* \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/tests/* \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/third_party/* \
+                      ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/web_server/* \
+"
+
+FILES_${PN}-python-dbg = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/.debug/* \
+                          ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/.debug/* \
+                          ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/samba3/.debug/* \
+                          ${libdir}/python${PYTHON_BASEVERSION}/site-packages/samba/dcerpc/.debug/* \
+"
+
+RDEPENDS_${PN}-pidl_append = " perl"
+FILES_${PN}-pidl = "${bindir}/pidl ${datadir}/perl5/Parse"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/sethdlc/files/sethdlc-fix-host-contamination.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/sethdlc/files/sethdlc-fix-host-contamination.patch
new file mode 100644
index 0000000..f25a02c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/sethdlc/files/sethdlc-fix-host-contamination.patch
@@ -0,0 +1,42 @@
+From 9a9137c3df5309ac359737d6ebd67fb4ff5f3cf2 Mon Sep 17 00:00:00 2001
+From: Wenzong Fan <wenzong.fan@windriver.com>
+Date: Mon, 24 Nov 2014 22:05:18 -0500
+Subject: [PATCH] sethdlc: fix host contamination
+
+Clean INCLUDES to fix the host contamination errors:
+
+  In file included from /usr/src/linux/include/linux/posix_types.h:47:0,
+  from /usr/src/linux/include/linux/types.h:17,
+  from /usr/src/linux/include/linux/if.h:22,
+  from sethdlc.c:23:
+  /usr/src/linux/include/asm-generic/posix_types.h:91:3: \
+    error: conflicting types for '__kernel_fsid_t'
+  } __kernel_fsid_t;
+  ^
+  .../tmp/sysroots/qemumips/usr/include/asm/posix_types.h:26:3: \
+    note: previous declaration of '__kernel_fsid_t' was here
+  } __kernel_fsid_t;
+  ^
+
+Upstream-Status: Pending
+
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+---
+ Makefile |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 0492f2b..97dec22 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ CC = gcc
+ CFLAGS = -O2 -Wall -W -Wno-long-long -pipe
+-INCLUDES = -I/usr/src/linux/include -I/usr/src/linux-2.6/include
++INCLUDES =
+ 
+ all:		sethdlc
+ 
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/sethdlc/sethdlc.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/sethdlc/sethdlc.bb
new file mode 100644
index 0000000..fc304fa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/sethdlc/sethdlc.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "set Linux HDLC packet radio modem driver port information"
+HOMEPAGE = "https://www.kernel.org/pub/linux/utils/net/hdlc"
+SECTION = "comm"
+LICENSE = "GPLv2 & GPLv2+ "
+LIC_FILES_CHKSUM = "file://sethdlc.c;endline=10;md5=90f936879e9f8b755a138aeb348782eb"
+
+
+SRC_URI = "https://www.kernel.org/pub/linux/utils/net/hdlc/${BPN}-1.18.tar.gz \
+           file://sethdlc-fix-host-contamination.patch \
+"
+SRC_URI[md5sum] = "9016878156a5eadb06c0bae71cc5c9ab"
+SRC_URI[sha256sum] = "21b1e2e1cb0e288b0ec8fcfd9fed449914e0f8e6fc273706bd5b3d4f6ab6b04e"
+
+
+S = "${WORKDIR}/${BPN}-1.18"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+DEPENDS = "virtual/kernel"
+
+EXTRA_OEMAKE="CROSS_COMPILE=${TARGET_PREFIX} CC='${CC} ${LDFLAGS}' \
+              KERNEL_DIR=${STAGING_KERNEL_DIR} "
+
+do_compile_prepend () {
+    oe_runmake clean
+}
+
+
+do_install() {
+    install -d ${D}/${bindir}
+    install sethdlc ${D}/${bindir}/
+}
+
+FILES_${PN} += "${bindir}/sethdlc"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/0001-fix-do_package-failed-since-snort-2.9.7.0.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/0001-fix-do_package-failed-since-snort-2.9.7.0.patch
new file mode 100644
index 0000000..1520553
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/0001-fix-do_package-failed-since-snort-2.9.7.0.patch
@@ -0,0 +1,35 @@
+From 815e861721a9c43efddb78521147145ebc7569ca Mon Sep 17 00:00:00 2001
+From: Zhiquan Li <zhiquan.li@windriver.com>
+Date: Fri, 13 Nov 2015 17:40:24 +0800
+Subject: [PATCH] fix do_package failed since snort 2.9.7.0
+
+Remove redundant '/' as a workround for below error:
+/lib/rpm/bin/debugedit: canonicalization unexpectedly shrank by one character
+
+It's a rpm debugedit bug:
+* http://sourceforge.net/p/snort/mailman/message/34130268/
+* https://bugzilla.redhat.com/show_bug.cgi?id=304121
+
+Upstream-Status:Inappropriate [embedded specific]
+
+Signed-off-by: Zhiquan Li <zhiquan.li@windriver.com>
+---
+ src/snort.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/snort.h b/src/snort.h
+index 8308e57..499d157 100644
+--- a/src/snort.h
++++ b/src/snort.h
+@@ -39,7 +39,7 @@
+ #include "sfdaq.h"
+ #include "sf_types.h"
+ #include "sfutil/sflsq.h"
+-#include "sfutil//sfActionQueue.h"
++#include "sfutil/sfActionQueue.h"
+ #include "profiler.h"
+ #include "rules.h"
+ #include "treenodes.h"
+--
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/0001-libpcap-search-sysroot-for-headers.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/0001-libpcap-search-sysroot-for-headers.patch
new file mode 100644
index 0000000..54c2a95
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/0001-libpcap-search-sysroot-for-headers.patch
@@ -0,0 +1,31 @@
+From 4d7ebe3ed6cee72bc7db98bd408d22c10ef5dd82 Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe@deserted.net>
+Date: Wed, 20 Nov 2013 16:06:07 -0500
+Subject: [PATCH] libpcap: search sysroot for headers
+
+Configure hard-coded host header paths when building with libpcap.  Point
+the search path at the sysroot instead.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe MacDonald <joe@deserted.net>
+---
+ configure.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.in b/configure.in
+index e52bb6c..8ded35d 100644
+--- a/configure.in
++++ b/configure.in
+@@ -78,7 +78,7 @@ case "$host" in
+     linux="yes"
+     AC_DEFINE([LINUX],[1],[Define if Linux])
+     AC_SUBST(extra_incl)
+-    extra_incl="-I/usr/include/pcap"
++    extra_incl="-I=/usr/include/pcap"
+     ;;
+   *-hpux10*|*-hpux11*)
+     AC_DEFINE([HPUX],[1],[Define if HP-UX 10 or 11])
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-dap-address-space-id.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-dap-address-space-id.patch
new file mode 100644
index 0000000..39e5c9c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-dap-address-space-id.patch
@@ -0,0 +1,52 @@
+Upstream-Status:Inappropriate [embedded specific]
+
+fix the below error:
+checking for dap address space id... configure: 
+configure: error: cannot run test program while cross compiling
+
+
+Signed-off-by: Chunrong Guo <B40290@freescale.com>
+
+--- a/configure.in	2013-08-23 00:06:37.239361932 -0500
++++ b/configure.in	2013-08-23 00:07:32.860266534 -0500
+@@ -679,23 +679,23 @@
+ 
+ AC_CHECK_FUNCS([daq_hup_apply] [daq_acquire_with_meta])
+ 
+-AC_MSG_CHECKING([for daq address space ID])
+-AC_RUN_IFELSE(
+-[AC_LANG_PROGRAM(
+-[[
+-#include <daq.h>
+-]],
+-[[
+-   DAQ_PktHdr_t hdr;
+-   hdr.address_space_id = 0;
+-]])],
+-[have_daq_address_space_id="yes"],
+-[have_daq_address_space_id="no"])
+-AC_MSG_RESULT($have_daq_address_space_id)
+-if test "x$have_daq_address_space_id" = "xyes"; then
+-    AC_DEFINE([HAVE_DAQ_ADDRESS_SPACE_ID],[1],
+-        [DAQ version supports address space ID in header.])
+-fi
++#AC_MSG_CHECKING([for daq address space ID])
++#AC_RUN_IFELSE(
++#[AC_LANG_PROGRAM(
++#[[
++##include <daq.h>
++#]],
++#[[
++#   DAQ_PktHdr_t hdr;
++#   hdr.address_space_id = 0;
++#]])],
++have_daq_address_space_id="yes"
++#[have_daq_address_space_id="no"])
++#AC_MSG_RESULT($have_daq_address_space_id)
++#if test "x$have_daq_address_space_id" = "xyes"; then
++#    AC_DEFINE([HAVE_DAQ_ADDRESS_SPACE_ID],[1],
++#        [DAQ version supports address space ID in header.])
++#fi
+ 
+ # any sparc platform has to have this one defined.
+ AC_MSG_CHECKING(for sparc)
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-daq-flow-id.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-daq-flow-id.patch
new file mode 100644
index 0000000..e6afcab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-daq-flow-id.patch
@@ -0,0 +1,50 @@
+Upstream-Status:Inappropriate [embedded specific]
+
+fix the below error:
+checking for daq flow ID... configure:
+configure: error: cannot run test program while cross compiling
+
+
+--- a/configure.in    2015-10-28 10:36:42.918512690 +0800
++++ b/configure.in    2015-10-28 10:37:36.738510048 +0800
+@@ -716,23 +716,23 @@
+ #        [DAQ version supports address space ID in header.])
+ #fi
+
+-AC_MSG_CHECKING([for daq flow ID])
+-AC_RUN_IFELSE(
+-[AC_LANG_PROGRAM(
+-[[
+-#include <daq.h>
+-]],
+-[[
+-   DAQ_PktHdr_t hdr;
+-   hdr.flow_id = 0;
+-]])],
+-[have_daq_flow_id="yes"],
+-[have_daq_flow_id="no"])
+-AC_MSG_RESULT($have_daq_flow_id)
+-if test "x$have_daq_flow_id" = "xyes"; then
+-    AC_DEFINE([HAVE_DAQ_FLOW_ID],[1],
+-        [DAQ version supports flow ID in header.])
+-fi
++#AC_MSG_CHECKING([for daq flow ID])
++#AC_RUN_IFELSE(
++#[AC_LANG_PROGRAM(
++#[[
++##include <daq.h>
++#]],
++#[[
++#   DAQ_PktHdr_t hdr;
++#   hdr.flow_id = 0;
++#]])],
++have_daq_flow_id="yes"
++#[have_daq_flow_id="no"])
++#AC_MSG_RESULT($have_daq_flow_id)
++#if test "x$have_daq_flow_id" = "xyes"; then
++#    AC_DEFINE([HAVE_DAQ_FLOW_ID],[1],
++#        [DAQ version supports flow ID in header.])
++#fi
+
+ AC_MSG_CHECKING([for DAQ_VERDICT_RETRY])
+ AC_RUN_IFELSE(
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-daq-verdict-retry.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-daq-verdict-retry.patch
new file mode 100644
index 0000000..1a13298
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-daq-verdict-retry.patch
@@ -0,0 +1,51 @@
+Upstream-Status:Inappropriate [embedded specific]
+
+fix the below error:
+checking for DAQ_VERDICT_RETRY... configure:
+configure: error: cannot run test program while cross compiling
+
+
+--- a/configure.in    2015-10-28 10:45:18.174487395 +0800
++++ b/configure.in    2015-10-28 10:45:47.586485951 +0800
+@@ -734,23 +734,23 @@
+ #        [DAQ version supports flow ID in header.])
+ #fi
+
+-AC_MSG_CHECKING([for DAQ_VERDICT_RETRY])
+-AC_RUN_IFELSE(
+-[AC_LANG_PROGRAM(
+-[[
+-#include <daq.h>
+-]],
+-[[
+-   DAQ_Verdict verdict;
+-   verdict = DAQ_VERDICT_RETRY;
+-]])],
+-[have_daq_verdict_retry="yes"],
+-[have_daq_verdict_retry="no"])
+-AC_MSG_RESULT($have_daq_verdict_retry)
+-if test "x$have_daq_verdict_retry" = "xyes"; then
+-    AC_DEFINE([HAVE_DAQ_VERDICT_RETRY],[1],
+-        [DAQ version supports DAQ_VERDICT_RETRY in DAQ_Verdict.])
+-fi
++#AC_MSG_CHECKING([for DAQ_VERDICT_RETRY])
++#AC_RUN_IFELSE(
++#[AC_LANG_PROGRAM(
++#[[
++##include <daq.h>
++#]],
++#[[
++#   DAQ_Verdict verdict;
++#   verdict = DAQ_VERDICT_RETRY;
++#]])],
++have_daq_verdict_retry="yes"
++#[have_daq_verdict_retry="no"])
++#AC_MSG_RESULT($have_daq_verdict_retry)
++#if test "x$have_daq_verdict_retry" = "xyes"; then
++#    AC_DEFINE([HAVE_DAQ_VERDICT_RETRY],[1],
++#        [DAQ version supports DAQ_VERDICT_RETRY in DAQ_Verdict.])
++#fi
+
+ # any sparc platform has to have this one defined.
+ AC_MSG_CHECKING(for sparc)
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-inaddr-none.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-inaddr-none.patch
new file mode 100644
index 0000000..9dafe63
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/disable-inaddr-none.patch
@@ -0,0 +1,75 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+fix the below error:
+checking for INADDR_NONE... configure:
+configure: error: cannot run test program while cross compiling
+
+Signed-off-by: Chunrong Guo <B40290@freescale.com>
+
+
+--- a/configure.in	2013-08-21 03:56:17.197414789 -0500
++++ b/configure.in	2013-08-21 23:19:05.298553560 -0500
+@@ -281,25 +281,7 @@
+ AC_CHECK_TYPES([boolean])
+ 
+ # In case INADDR_NONE is not defined (like on Solaris)
+-have_inaddr_none="no"
+-AC_MSG_CHECKING([for INADDR_NONE])
+-AC_RUN_IFELSE(
+-[AC_LANG_PROGRAM(
+-[[
+-#include <sys/types.h>
+-#include <netinet/in.h>
+-#include <arpa/inet.h>
+-]],
+-[[
+-	if (inet_addr("10,5,2") == INADDR_NONE);
+-    return 0;
+-]])],
+-[have_inaddr_none="yes"],
+-[have_inaddr_none="no"])
+-AC_MSG_RESULT($have_inaddr_none)
+-if test "x$have_inaddr_none" = "xno"; then
+-	AC_DEFINE([INADDR_NONE],[-1],[For INADDR_NONE definition])
+-fi
++have_inaddr_none="yes"
+ 
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <stdio.h>
+@@ -397,21 +379,21 @@
+   fi
+ fi
+ 
+-AC_MSG_CHECKING([for pcap_lex_destroy])
+-AC_RUN_IFELSE(
+-[AC_LANG_PROGRAM(
+-[[
+-#include <pcap.h>
+-]],
+-[[
+-   pcap_lex_destroy();
+-]])],
+-[have_pcap_lex_destroy="yes"],
+-[have_pcap_lex_destroy="no"])
+-AC_MSG_RESULT($have_pcap_lex_destroy)
+-if test "x$have_pcap_lex_destroy" = "xyes"; then
+-    AC_DEFINE([HAVE_PCAP_LEX_DESTROY],[1],[Can cleanup lex buffer stack created by pcap bpf filter])
+-fi
++#AC_MSG_CHECKING([for pcap_lex_destroy])
++#AC_RUN_IFELSE(
++#[AC_LANG_PROGRAM(
++#[[
++##include <pcap.h>
++#]],
++#[[
++#   pcap_lex_destroy();
++#]])],
++have_pcap_lex_destroy="yes"
++#[have_pcap_lex_destroy="no"])
++#AC_MSG_RESULT($have_pcap_lex_destroy)
++#if test "x$have_pcap_lex_destroy" = "xyes"; then
++#    AC_DEFINE([HAVE_PCAP_LEX_DESTROY],[1],[Can cleanup lex buffer stack created by pcap bpf filter])
++#fi
+ 
+ AC_MSG_CHECKING([for pcap_lib_version])
+ AC_LINK_IFELSE(
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/snort.init b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/snort.init
new file mode 100644
index 0000000..d8a00c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/snort.init
@@ -0,0 +1,109 @@
+#!/bin/sh
+#
+#   Snort Startup Script modified for OpenEmbedded
+#
+
+# Script variables
+
+LAN_INTERFACE="$2"
+RETURN_VAL=0
+BINARY=/usr/bin/snort
+PATH=/bin:/usr/bin
+PID=/var/run/snort_${LAN_INTERFACE}_ids.pid
+DEL_PID=$PID
+LOGDIR="/var/log/snort"
+DATE=`/bin/date +%Y%m%d`
+CONFIG_FILE=/etc/snort/snort.conf
+PROG=snort
+USER=root
+GROUP=root
+
+if [ ! -x "$BINARY" ]; then
+    echo "ERROR: $BINARY not found."
+    exit 1
+fi
+
+if [ ! -r "$CONFIG_FILE" ]; then
+    echo "ERROR: $CONFIG_FILE not found."
+    exit 1
+fi
+
+start()
+{
+
+    [ -n "$LAN_INTERFACE" ] || return 0
+    # Check if log diratory is present. Otherwise, create it.
+    if [ ! -d $LOGDIR/$DATE ]; then
+        mkdir -d $LOGDIR/$DATE
+        /bin/chown -R $USER:$USER $LOGDIR/$DATE
+    /bin/chmod -R 700 $LOGDIR/$DATE
+    fi
+
+    /bin/echo "Starting $PROG: "
+    # Snort parameters
+    # -D Run Snort in background (daemon) mode
+    # -i <if> Listen on interface <if>
+    # -u <uname> Run snort uid as <uname> user (or uid)
+    # -g <gname> Run snort uid as <gname> group (or gid)
+    # -c Load configuration file
+    # -N Turn off logging (alerts still work) (removed to enable logging) :)
+    # -l Log to directory
+    # -t Chroots process to directory after initialization
+    # -R <id> Include 'id' in snort_intf<id>.pid file name
+
+    $BINARY -D -i $LAN_INTERFACE -u $USER -g $GROUP -c $CONFIG_FILE -l $LOGDIR/$DATE -t $LOGDIR/$DATE -R _ids
+    /bin/echo "$PROG startup complete."
+    return $RETURN_VAL
+}
+
+stop()
+{
+    if [ -s $PID ]; then
+        /bin/echo "Stopping $PROG with PID `cat $PID`: "
+        kill -TERM `cat $PID` 2>/dev/null
+        RETURN_VAL=$?
+        /bin/echo "$PROG shutdown complete."
+        [ -e $DEL_PID ] && rm -f $DEL_PID
+    [ -e $DEL_PID.lck ] && rm -f $DEL_PID.lck
+    else
+        /bin/echo "ERROR: PID in $PID file not found."
+        RETURN_VAL=1
+    fi
+    return $RETURN_VAL
+}
+
+status() {
+        if [ -s $PID ]; then
+                echo "$PROG is running as pid `cat $PID`:"
+        else
+                echo "$PROG is not running."
+        fi
+}
+
+restart()
+{
+    stop
+    start
+    RETURN_VAL=$?
+    return $RETURN_VAL
+}
+
+case "$1" in
+ start)
+       start
+    ;;
+ stop)
+       stop
+    ;;
+ status)
+       status
+    ;;
+ restart|reload)
+       restart
+    ;;
+ *)
+    /bin/echo "Usage: $0 {start|stop|status|restart|reload}"
+    RETURN_VAL=1
+esac
+
+exit $RETURN_VAL
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.7.5.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.7.5.bb
new file mode 100644
index 0000000..7d946af
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.7.5.bb
@@ -0,0 +1,89 @@
+DESCRIPTION = "snort - a free lightweight network intrusion detection system for UNIX and Windows."
+HOMEPAGE = "http://www.snort.org/"
+SECTION = "net"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=78fa8ef966b48fbf9095e13cc92377c5"
+
+DEPENDS = "libpcap libpcre daq libdnet util-linux"
+
+SRC_URI = " ${GENTOO_MIRROR}/${BP}.tar.gz;name=tarball \
+    file://snort.init \
+    file://disable-inaddr-none.patch \
+    file://disable-dap-address-space-id.patch \
+    file://disable-daq-flow-id.patch \
+    file://disable-daq-verdict-retry.patch \
+    file://0001-libpcap-search-sysroot-for-headers.patch \
+    file://0001-fix-do_package-failed-since-snort-2.9.7.0.patch \
+"
+
+SRC_URI[tarball.md5sum] = "fd271788c0f8876be87a858a9142f202"
+SRC_URI[tarball.sha256sum] = "ad03f11b5301b16642199a86aa90388eaa53f5003f83b0c5595745a490047be1"
+
+inherit autotools gettext update-rc.d pkgconfig
+
+INITSCRIPT_NAME = "snort"
+INITSCRIPT_PARAMS = "defaults"
+
+EXTRA_OECONF = " \
+    --enable-gre \
+    --enable-linux-smp-stats \
+    --enable-reload \
+    --enable-reload-error-restart \
+    --enable-targetbased \
+    --disable-static-daq \
+    --with-dnet-includes=${STAGING_INCDIR} \
+    --with-dnet-libraries=${STAGING_LIBDIR} \
+    --with-libpcre-includes=${STAGING_INCDIR} \
+    --with-libpcre-libraries=${STAGING_LIBDIR} \
+    --with-daq-includes=${STAGING_INCDIR} \
+    --with-daq-libraries=${STAGING_LIBDIR} \
+"
+
+# if you want to disable it, you need to patch configure.in first
+# AC_CHECK_HEADERS([openssl/sha.h],, SHA_H="no")
+# is called even with --without-openssl-includes
+PACKAGECONFIG ?= "openssl"
+PACKAGECONFIG[openssl] = "--with-openssl-includes=${STAGING_INCDIR} --with-openssl-libraries=${STAGING_LIBDIR}, --without-openssl-includes --without-openssl-libraries, openssl,"
+
+do_install_append() {
+    install -d ${D}${sysconfdir}/snort/rules
+    install -d ${D}${sysconfdir}/snort/preproc_rules
+    install -d ${D}${sysconfdir}/init.d
+    for i in map config conf dtd; do
+        cp ${S}/etc/*.$i ${D}${sysconfdir}/snort/
+    done
+    cp ${S}/preproc_rules/*.rules ${D}${sysconfdir}/snort/preproc_rules/
+    install -m 755 ${WORKDIR}/snort.init ${D}${sysconfdir}/init.d/snort
+    mkdir -p ${D}${localstatedir}/log/snort
+    install -d ${D}/var/log/snort
+}
+
+FILES_${PN} += " \
+    ${libdir}/snort_dynamicengine/*.so.* \
+    ${libdir}/snort_dynamicpreprocessor/*.so.* \
+    ${libdir}/snort_dynamicrules/*.so.* \
+"
+FILES_${PN}-dbg += " \
+    ${libdir}/snort_dynamicengine/.debug \
+    ${libdir}/snort_dynamicpreprocessor/.debug \
+    ${libdir}/snort_dynamicrules/.debug \
+"
+FILES_${PN}-staticdev += " \
+    ${libdir}/snort_dynamicengine/*.a \
+    ${libdir}/snort_dynamicpreprocessor/*.a \
+    ${libdir}/snort_dynamicrules/*.a \
+    ${libdir}/snort/dynamic_preproc/*.a \
+    ${libdir}/snort/dynamic_output/*.a \
+"
+FILES_${PN}-dev += " \
+    ${libdir}/snort_dynamicengine/*.la \
+    ${libdir}/snort_dynamicpreprocessor/*.la \
+    ${libdir}/snort_dynamicrules/*.la \
+    ${libdir}/snort_dynamicengine/*.so \
+    ${libdir}/snort_dynamicpreprocessor/*.so \
+    ${libdir}/snort_dynamicrules/*.so \
+    ${prefix}/src/snort_dynamicsrc \
+"
+
+# http://errors.yoctoproject.org/Errors/Details/35137/
+PNBLACKLIST[snort] ?= "BROKEN: QA Issue: snort_preproc.pc, snort_output.pc, snort.pc"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0001-optimize-boot.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0001-optimize-boot.patch
new file mode 100644
index 0000000..a1e56b7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0001-optimize-boot.patch
@@ -0,0 +1,25 @@
+Author: Jamie Strandboge <jamie@canonical.com>
+Description: to improve boot speed when disabled, don't source all of
+ ufw-init-functions (which also sources in other files).
+
+Upstream-Status: Inappropriate [ not author ]
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+
+Index: ufw-0.31/src/ufw-init
+===================================================================
+--- ufw-0.31.orig/src/ufw-init	2012-03-09 17:07:11.000000000 -0600
++++ ufw-0.31/src/ufw-init	2012-03-17 09:37:51.000000000 -0500
+@@ -18,6 +18,12 @@
+ #
+ set -e
+ 
++# Debian/Ubuntu: small boot speed improvement
++. "#CONFIG_PREFIX#/ufw/ufw.conf"
++if [ "$1" = "start" ] && [ "$2" = "quiet" ] && [ "$ENABLED" = "no" ]; then
++    exit 0
++fi
++
+ if [ -s "#STATE_PREFIX#/ufw-init-functions" ]; then
+     . "#STATE_PREFIX#/ufw-init-functions"
+ else
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0002-lp1044361.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0002-lp1044361.patch
new file mode 100644
index 0000000..804c18b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0002-lp1044361.patch
@@ -0,0 +1,118 @@
+Origin: r795, r796
+Description: move netfilter capabilities checking into initcaps(), and call
+ initcaps() only when we need it.
+Bug-Ubuntu: https://launchpad.net/bugs/1044361
+
+Upstream-Status: Inappropriate [ not author ]
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+
+Index: ufw-0.33/src/backend_iptables.py
+===================================================================
+--- ufw-0.33.orig/src/backend_iptables.py	2012-09-23 09:58:34.000000000 -0500
++++ ufw-0.33/src/backend_iptables.py	2012-09-23 09:58:36.000000000 -0500
+@@ -160,6 +160,9 @@
+             out += "> " + _("Checking raw ip6tables\n")
+             return out
+ 
++        # Initialize the capabilities database
++        self.initcaps()
++
+         args = ['-n', '-v', '-x', '-L']
+         items = []
+         items6 = []
+@@ -470,6 +473,9 @@
+         if self.dryrun:
+             return False
+ 
++        # Initialize the capabilities database
++        self.initcaps()
++
+         prefix = "ufw"
+         exe = self.iptables
+         if v6:
+@@ -684,6 +690,9 @@
+         except Exception:
+             raise
+ 
++        # Initialize the capabilities database
++        self.initcaps()
++
+         chain_prefix = "ufw"
+         rules = self.rules
+         if v6:
+@@ -830,6 +839,10 @@
+         * updating user rules file
+         * reloading the user rules file if rule is modified
+         '''
++
++        # Initialize the capabilities database
++        self.initcaps()
++
+         rstr = ""
+ 
+         if rule.v6:
+@@ -1073,6 +1086,9 @@
+         if self.dryrun:
+             return
+ 
++        # Initialize the capabilities database
++        self.initcaps()
++
+         rules_t = []
+         try:
+             rules_t = self._get_logging_rules(level)
+Index: ufw-0.33/src/backend.py
+===================================================================
+--- ufw-0.33.orig/src/backend.py	2012-09-23 09:58:34.000000000 -0500
++++ ufw-0.33/src/backend.py	2012-09-23 09:59:03.000000000 -0500
+@@ -21,7 +21,7 @@
+ import stat
+ import sys
+ import ufw.util
+-from ufw.util import warn, debug
++from ufw.util import error, warn, debug
+ from ufw.common import UFWError, config_dir, iptables_dir, UFWRule
+ import ufw.applications
+ 
+@@ -68,6 +68,17 @@
+             err_msg = _("Couldn't determine iptables version")
+             raise UFWError(err_msg)
+ 
++        # Initialize via initcaps only when we need it (LP: #1044361)
++        self.caps = None
++
++    def initcaps(self):
++        '''Initialize the capabilities database. This needs to be called
++           before accessing the database.'''
++
++        # Only initialize if not initialized already
++        if self.caps != None:
++            return
++
+         self.caps = {}
+         self.caps['limit'] = {}
+ 
+@@ -78,14 +89,20 @@
+         # Try to get capabilities from the running system if root
+         if self.do_checks and os.getuid() == 0 and not self.dryrun:
+             # v4
+-            nf_caps = ufw.util.get_netfilter_capabilities(self.iptables)
++            try:
++                nf_caps = ufw.util.get_netfilter_capabilities(self.iptables)
++            except OSError as e:
++                error("initcaps\n%s" % e)
+             if 'recent-set' in nf_caps and 'recent-update' in nf_caps:
+                 self.caps['limit']['4'] = True
+             else:
+                 self.caps['limit']['4'] = False
+ 
+             # v6
+-            nf_caps = ufw.util.get_netfilter_capabilities(self.ip6tables)
++            try:
++                nf_caps = ufw.util.get_netfilter_capabilities(self.ip6tables)
++            except OSError as e:
++                error("initcaps\n%s" % e)
+             if 'recent-set' in nf_caps and 'recent-update' in nf_caps:
+                 self.caps['limit']['6'] = True
+             else:
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0003-fix-typeerror-on-error.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0003-fix-typeerror-on-error.patch
new file mode 100644
index 0000000..b259fdf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0003-fix-typeerror-on-error.patch
@@ -0,0 +1,20 @@
+Origin: r797
+Description: src/backend_iptables.py: fix misplaced parenthesis
+
+Upstream-Status: Inappropriate [ not author ]
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+
+Index: ufw-0.33/src/backend_iptables.py
+===================================================================
+--- ufw-0.33.orig/src/backend_iptables.py	2012-09-24 08:51:13.000000000 -0500
++++ ufw-0.33/src/backend_iptables.py	2012-09-24 08:52:00.000000000 -0500
+@@ -1075,7 +1075,7 @@
+             exe = self.ip6tables
+         (rc, out) = cmd([exe] + args)
+         if rc != 0:
+-            err_msg = _("Could not perform '%s'") % (args)
++            err_msg = _("Could not perform '%s'" % (args))
+             if fail_ok:
+                 debug("FAILOK: " + err_msg)
+             else:
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0004-lp1039729.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0004-lp1039729.patch
new file mode 100644
index 0000000..695b265
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0004-lp1039729.patch
@@ -0,0 +1,40 @@
+Origin: r803, r804
+Description: Don't call get_netfilter_capabilities() with ipv6 if ipv6 is
+ disabled.
+Bug-Ubuntu: https://launchpad.net/ufw/bugs/1039729
+
+Upstream-Status: Inappropriate [ not author ]
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+
+Index: ufw-0.33/src/backend.py
+===================================================================
+--- ufw-0.33.orig/src/backend.py	2012-12-04 09:21:57.000000000 -0600
++++ ufw-0.33/src/backend.py	2012-12-04 09:22:40.000000000 -0600
+@@ -98,15 +98,17 @@
+             else:
+                 self.caps['limit']['4'] = False
+ 
+-            # v6
+-            try:
+-                nf_caps = ufw.util.get_netfilter_capabilities(self.ip6tables)
+-            except OSError as e:
+-                error("initcaps\n%s" % e)
+-            if 'recent-set' in nf_caps and 'recent-update' in nf_caps:
+-                self.caps['limit']['6'] = True
+-            else:
+-                self.caps['limit']['6'] = False
++            # v6 (skip capabilities check for ipv6 if ipv6 is disabled in ufw
++            # because the system may not have ipv6 support (LP: #1039729)
++            if self.use_ipv6():
++                try:
++                    nf_caps = ufw.util.get_netfilter_capabilities(self.ip6tables)
++                except OSError as e:
++                    error("initcaps\n%s" % e)
++                if 'recent-set' in nf_caps and 'recent-update' in nf_caps:
++                    self.caps['limit']['6'] = True
++                else:
++                    self.caps['limit']['6'] = False
+ 
+     def is_enabled(self):
+         '''Is firewall configured as enabled'''
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0005-lp1191197.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0005-lp1191197.patch
new file mode 100644
index 0000000..b760d3f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0005-lp1191197.patch
@@ -0,0 +1,32 @@
+Origin: r816
+Description: add check for -m rt --rt-type 0
+Bug-Ubuntu: https://launchpad.net/bugs/1191197
+Forwarded: yes
+
+Upstream-Status: Inappropriate [ not author ]
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+
+Index: ufw-0.33/tests/check-requirements
+===================================================================
+--- ufw-0.33.orig/tests/check-requirements	2012-08-17 16:12:49.000000000 -0500
++++ ufw-0.33/tests/check-requirements	2013-06-15 07:47:00.000000000 -0500
+@@ -3,7 +3,7 @@
+ # check-requirements: verify all the required iptables functionality is
+ # available
+ #
+-# Copyright 2008-2012 Canonical Ltd.
++# Copyright 2008-2013 Canonical Ltd.
+ #
+ #    This program is free software: you can redistribute it and/or modify
+ #    it under the terms of the GNU General Public License version 3,
+@@ -218,6 +218,9 @@
+             echo -n "icmpv6 with hl ($j): "
+             runcmd $exe -A $c -p icmpv6 --icmpv6-type $j -m hl --hl-eq 255 -j ACCEPT
+         done
++
++        echo -n "ipv6 rt: "
++        runcmd $exe -A $c -m rt --rt-type 0 -j ACCEPT
+     fi
+ 
+     echo ""
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/setup-add-an-option-to-specify-iptables-location.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/setup-add-an-option-to-specify-iptables-location.patch
new file mode 100644
index 0000000..5117423
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/setup-add-an-option-to-specify-iptables-location.patch
@@ -0,0 +1,107 @@
+From c54d36d0582a60fd281cd9287077cea205fd849d Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe_macdonald@mentor.com>
+Date: Thu, 27 Nov 2014 15:20:34 -0500
+Subject: [PATCH] setup: add an option to specify iptables location
+
+When cross-compiling it isn't certain that the location of iptables on the
+target will be the same as on the host.  It also doesn't make sense the
+test the version of the host during setup.  We provide an option to
+specify an alternate iptables directory.  This is assumed to be a
+cross-compile environment and therefore no attempt is made to verify the
+version of iptables to be used.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+---
+ setup.py | 69 ++++++++++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 39 insertions(+), 30 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 6fb3751..b13d11c 100644
+--- a/setup.py
++++ b/setup.py
+@@ -225,41 +225,50 @@ shutil.copytree('src', 'staging')
+ os.unlink(os.path.join('staging', 'ufw-init'))
+ os.unlink(os.path.join('staging', 'ufw-init-functions'))
+ 
++iptables_set = 0
+ iptables_exe = ''
+ iptables_dir = ''
+ 
+-for e in ['iptables']:
+-    for dir in ['/sbin', '/bin', '/usr/sbin', '/usr/bin', '/usr/local/sbin', \
+-                '/usr/local/bin']:
+-        if e == "iptables":
+-            if os.path.exists(os.path.join(dir, e)):
+-                iptables_dir = dir
+-                iptables_exe = os.path.join(iptables_dir, "iptables")
+-                print("Found '%s'" % iptables_exe)
+-            else:
+-                continue
+-
+-        if iptables_exe != "":
+-            break
+-
+-
+-if iptables_exe == '':
+-    print("ERROR: could not find required binary 'iptables'", file=sys.stderr)
+-    sys.exit(1)
+-
+-for e in ['ip6tables', 'iptables-restore', 'ip6tables-restore']:
+-    if not os.path.exists(os.path.join(iptables_dir, e)):
+-        print("ERROR: could not find required binary '%s'" % (e), file=sys.stderr)
++if "--iptables-dir" in sys.argv:
++    iptables_dir = sys.argv[sys.argv.index("--iptables-dir") + 1]
++    iptables_exe = os.path.join(iptables_dir, "iptables")
++    iptables_set = 1
++    print("INFO: iptables manually set: '%s'" % (iptables_exe))
++    sys.argv.remove(iptables_dir)
++    sys.argv.remove("--iptables-dir")
++
++if not iptables_set:
++    for e in ['iptables']:
++        for dir in ['/sbin', '/bin', '/usr/sbin', '/usr/bin', '/usr/local/sbin', \
++                    '/usr/local/bin']:
++            if e == "iptables":
++                if os.path.exists(os.path.join(dir, e)):
++                    iptables_dir = dir
++                    iptables_exe = os.path.join(iptables_dir, "iptables")
++                    print("Found '%s'" % iptables_exe)
++                else:
++                    continue
++
++            if iptables_exe != "":
++                break
++
++    if iptables_exe == '':
++        print("ERROR: could not find required binary 'iptables'", file=sys.stderr)
+         sys.exit(1)
+ 
+-(rc, out) = cmd([iptables_exe, '-V'])
+-if rc != 0:
+-    raise OSError(errno.ENOENT, "Could not find version for '%s'" % \
+-                  (iptables_exe))
+-version = re.sub('^v', '', re.split('\s', str(out))[1])
+-print("Found '%s' version '%s'" % (iptables_exe, version))
+-if version < "1.4":
+-    print("WARN: version '%s' has limited IPv6 support. See README for details." % (version), file=sys.stderr)
++    for e in ['ip6tables', 'iptables-restore', 'ip6tables-restore']:
++        if not os.path.exists(os.path.join(iptables_dir, e)):
++            print("ERROR: could not find required binary '%s'" % (e), file=sys.stderr)
++            sys.exit(1)
++
++    (rc, out) = cmd([iptables_exe, '-V'])
++    if rc != 0:
++        raise OSError(errno.ENOENT, "Could not find version for '%s'" % \
++                      (iptables_exe))
++    version = re.sub('^v', '', re.split('\s', str(out))[1])
++    print("Found '%s' version '%s'" % (iptables_exe, version))
++    if version < "1.4":
++        print("WARN: version '%s' has limited IPv6 support. See README for details." % (version), file=sys.stderr)
+ 
+ setup (name='ufw',
+       version=ufw_version,
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/setup-only-make-one-reference-to-env.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/setup-only-make-one-reference-to-env.patch
new file mode 100644
index 0000000..ff704b5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/setup-only-make-one-reference-to-env.patch
@@ -0,0 +1,77 @@
+From be53eea06a5655fdc98f47a73be8277b65bb42ed Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe_macdonald@mentor.com>
+Date: Tue, 11 Nov 2014 21:41:14 -0500
+Subject: [PATCH] setup: only make one reference to env
+
+If sys.executable happens to be '/usr/bin/env python' or something
+similar, the setup script will result in 'ufw' getting /usr/bin/env
+repeated on the top line.  This causes an error at runtime.  Perform a
+quick sanity check on sys.executable before doing the substitution.
+
+While we're at it, change the default value of 'exe' to the one we either
+detected or specified on the build line.
+
+Upstream-Status: Inappropriate [ embedded specific ]
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+---
+ setup.py | 34 ++++++++++++++++++++++++++++------
+ 1 file changed, 28 insertions(+), 6 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index b13d11c..73acdef 100644
+--- a/setup.py
++++ b/setup.py
+@@ -64,7 +64,7 @@ class Install(_install, object):
+         real_sharedir = os.path.join(real_prefix, 'share', 'ufw')
+ 
+         # Update the modules' paths
+-        for file in [ 'common.py' ]:
++        for file in [ 'common.py', 'util.py' ]:
+             print("Updating " + file)
+             subprocess.call(["sed",
+                              "-i",
+@@ -91,6 +91,11 @@ class Install(_install, object):
+                              "s%#SHARE_DIR#%" + real_sharedir + "%g",
+                              os.path.join('staging', file)])
+ 
++            subprocess.call(["sed",
++                             "-i.jjm",
++                             "s%/sbin/iptables%" + iptables_exe + "%g",
++                             os.path.join('staging', file)])
++
+         # Now byte-compile everything
+         super(Install, self).run()
+ 
+@@ -107,12 +112,23 @@ class Install(_install, object):
+         for f in [ script, manpage, manpage_f ]:
+             self.mkpath(os.path.dirname(f))
+ 
++        # if sys.executable == /usr/bin/env python* the result will be the top
++        # of ufw getting:
++        #
++        #  #! /usr/bin/env /usr/bin/env python
++        #
++        # which is not ideal
++        #
+         # update the interpreter to that of the one the user specified for setup
+-        print("Updating staging/ufw to use %s" % (sys.executable))
+-        subprocess.call(["sed",
+-                         "-i",
+-                         "1s%^#.*python.*%#! /usr/bin/env " + sys.executable + "%g",
+-                         'staging/ufw'])
++        print("Updating staging/ufw to use (%s)" % (sys.executable))
++
++        if re.search("(/usr/bin/env)", sys.executable):
++            print("found 'env' in sys.executable (%s)" % (sys.executable))
++            subprocess.call(["sed",
++                             "-i.jjm",
++                             "1s%^#.*python.*%#! " + sys.executable + "%g",
++                             'staging/ufw'])
++
+         self.copy_file('staging/ufw', script)
+         self.copy_file('doc/ufw.8', manpage)
+         self.copy_file('doc/ufw-framework.8', manpage_f)
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw_0.33.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw_0.33.bb
new file mode 100644
index 0000000..19cfe46
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw_0.33.bb
@@ -0,0 +1,56 @@
+SUMMARY = "Uncomplicated Firewall"
+DESCRIPTION = "UFW stands for Uncomplicated Firewall, and is program for \
+managing a netfilter firewall. It provides a command line interface and aims \
+to be uncomplicated and easy to use."
+HOMEPAGE = "https://launchpad.net/ufw"
+SECTION = "net"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
+
+SRC_URI = " \
+           https://launchpad.net/ufw/0.33/0.33/+download/ufw-0.33.tar.gz \
+           file://setup-add-an-option-to-specify-iptables-location.patch \
+           file://setup-only-make-one-reference-to-env.patch \
+           file://0001-optimize-boot.patch \
+           file://0002-lp1044361.patch \
+           file://0003-fix-typeerror-on-error.patch \
+           file://0004-lp1039729.patch \
+           file://0005-lp1191197.patch \
+"
+SRC_URI[md5sum] = "3747b453d76709e5a99da209fc0bb5f5"
+SRC_URI[sha256sum] = "5f85a8084ad3539b547bec097286948233188c971f498890316dec170bdd1da8"
+
+inherit setuptools distro_features_check
+
+RDEPENDS_${PN} = " \
+                  iptables \
+                  python \
+                  python-modules \
+                 "
+
+RRECOMMENDS_${PN} = " \
+                     kernel-module-ipv6 \
+                     kernel-module-nf-conntrack-ipv6 \
+                     kernel-module-nf-log-common \
+                     kernel-module-nf-log-ipv4 \
+                     kernel-module-nf-log-ipv6 \
+                     kernel-module-nf-addrtype \
+                     kernel-module-nf-limit \
+                     kernel-module-nf-log \
+                     kernel-module-nf-recent \
+"
+
+# Certain items are explicitly put under /lib, not base_libdir when installed.
+#
+FILES_${PN} += " \
+                ${sbindir}/* \
+                ${datadir}/ufw/* \
+                /lib/ufw/* \
+                ${sysconfdir}/ufw/* \
+                ${sysconfdir}/default/ufw \
+"
+
+REQUIRED_DISTRO_FEATURES = "ipv6"
+
+DISTUTILS_BUILD_ARGS_append = " --iptables-dir /usr/sbin"
+DISTUTILS_INSTALL_ARGS_append = " --iptables-dir /usr/sbin"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vlan/vlan-1.9/no-HOME-includes.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vlan/vlan-1.9/no-HOME-includes.patch
new file mode 100644
index 0000000..b7ab7d9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vlan/vlan-1.9/no-HOME-includes.patch
@@ -0,0 +1,22 @@
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Subject: vlan: do not include ${HOME}/linux/include dir
+
+~/linux/include dir may exist and so will be added to include path
+in front of sanitized kernel headers in OE chroot. Drop this include
+option.
+
+Upstream-Status: not-applicable
+
+Index: vlan/MakeInclude
+===================================================================
+--- vlan.orig/MakeInclude
++++ vlan/MakeInclude
+@@ -16,7 +16,7 @@ ifeq "${PLATFORM}" ""
+ endif
+ 
+ ## You may need to change this linux/include part.
+-CCFLAGS = -g -D_GNU_SOURCE -Wall -I${HOME}/linux/include
++CCFLAGS = -g -D_GNU_SOURCE -Wall
+ LDLIBS = # -lm #-lnsl # -lsocket
+ 
+ ARM_TC_BIN = ${HOME}/Intrinsyc/bin
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vlan/vlan_1.9.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vlan/vlan_1.9.bb
new file mode 100644
index 0000000..09c4007
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vlan/vlan_1.9.bb
@@ -0,0 +1,29 @@
+SUMMARY = "VLAN provides vconfig utility"
+SECTION = "misc"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://vconfig.c;md5=293ef69c4e88434d37a5ee577a5288cb"
+
+SRC_URI = "http://${BPN}.sourcearchive.com/downloads/${PV}-3ubuntu9/${BPN}_${PV}.orig.tar.gz \
+           file://no-HOME-includes.patch"
+
+SRC_URI[md5sum] = "5f0c6060b33956fb16e11a15467dd394"
+SRC_URI[sha256sum] = "3b8f0a1bf0d3642764e5f646e1f3bbc8b1eeec474a77392d9aeb4868842b4cca"
+
+S = "${WORKDIR}/${BPN}"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+# comment out MakeInclude in Makefile which sets build environment
+do_configure_append () {
+    sed -i 's/^ include/#^include/' ${S}/Makefile
+}
+
+# ignore strip to avoid yocto errors in stripping
+do_compile () {
+    oe_runmake PLATFORM=ARM 'STRIP=echo' all
+}
+
+do_install () {
+    install -d ${D}/${base_sbindir}
+    install -m 0755 ${S}/vconfig ${D}/${base_sbindir}/
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/default.conf b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/default.conf
new file mode 100644
index 0000000..48b15ec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/default.conf
@@ -0,0 +1,19 @@
+# Comment out the options you need.
+# Verify your config with "vpnc --print-config".
+# You might also try "vpnc --long-help" or look into the documentation.
+
+# Needed (you will be prompted if this is missing):
+#IPSec gateway 10.1.2.3
+#IPSec ID YOURPEERSID
+#IPSec secret YOURPEERSSECRET
+#Xauth username YOURUSERNAME
+#Xauth password YOURPASSWORD
+
+# Optional:
+#UDP Encapsulate
+#UDP Encapsulation Port 10000
+#Noninteractive
+#No Detach
+#Debug 99
+#Interface name tun0
+#Script /etc/vpnc/vpnc-script
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/long-help b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/long-help
new file mode 100644
index 0000000..fbec254
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/long-help
@@ -0,0 +1,168 @@
+Usage: vpnc [--version] [--print-config] [--help] [--long-help] [options] [config files]
+
+Options:
+  --gateway <ip/hostname>
+      IP/name of your IPSec gateway
+  conf-variable: IPSec gateway <ip/hostname>
+
+  --id <ASCII string>
+      your group name
+  conf-variable: IPSec ID <ASCII string>
+
+  (configfile only option) 
+      your group password (cleartext)
+  conf-variable: IPSec secret <ASCII string>
+
+  (configfile only option) 
+      your group password (obfuscated)
+  conf-variable: IPSec obfuscated secret <hex string>
+
+  --username <ASCII string>
+      your username
+  conf-variable: Xauth username <ASCII string>
+
+  (configfile only option) 
+      your password (cleartext)
+  conf-variable: Xauth password <ASCII string>
+
+  (configfile only option) 
+      your password (obfuscated)
+  conf-variable: Xauth obfuscated password <hex string>
+
+  --domain <ASCII string>
+      (NT-) Domain name for authentication
+  conf-variable: Domain <ASCII string>
+
+  --xauth-inter 
+      enable interactive extended authentication (for challenge response auth)
+  conf-variable: Xauth interactive
+
+  --vendor <cisco/netscreen>
+      vendor of your IPSec gateway
+    Default: cisco
+  conf-variable: Vendor <cisco/netscreen>
+
+  --natt-mode <natt/none/force-natt/cisco-udp>
+      Which NAT-Traversal Method to use:
+       * natt -- NAT-T as defined in RFC3947
+       * none -- disable use of any NAT-T method
+       * force-natt -- always use NAT-T encapsulation even
+                       without presence of a NAT device
+                       (useful if the OS captures all ESP traffic)
+       * cisco-udp -- Cisco proprietary UDP encapsulation, commonly over Port 10000
+      Note: cisco-tcp encapsulation is not yet supported
+    Default: natt
+  conf-variable: NAT Traversal Mode <natt/none/force-natt/cisco-udp>
+
+  --script <command>
+      command is executed using system() to configure the interface,
+      routing and so on. Device name, IP, etc. are passed using enviroment
+      variables, see README. This script is executed right after ISAKMP is
+      done, but before tunneling is enabled. It is called when vpnc
+      terminates, too
+    Default: /etc/vpnc/vpnc-script
+  conf-variable: Script <command>
+
+  --dh <dh1/dh2/dh5>
+      name of the IKE DH Group
+    Default: dh2
+  conf-variable: IKE DH Group <dh1/dh2/dh5>
+
+  --pfs <nopfs/dh1/dh2/dh5/server>
+      Diffie-Hellman group to use for PFS
+    Default: server
+  conf-variable: Perfect Forward Secrecy <nopfs/dh1/dh2/dh5/server>
+
+  --enable-1des 
+      enables weak single DES encryption
+  conf-variable: Enable Single DES
+
+  --enable-no-encryption 
+      enables using no encryption for data traffic (key exchanged must be encrypted)
+  conf-variable: Enable no encryption
+
+  --application-version <ASCII string>
+      Application Version to report. Note: Default string is generated at runtime.
+    Default: Cisco Systems VPN Client 0.5.3-394:Linux
+  conf-variable: Application version <ASCII string>
+
+  --ifname <ASCII string>
+      visible name of the TUN/TAP interface
+  conf-variable: Interface name <ASCII string>
+
+  --ifmode <tun/tap>
+      mode of TUN/TAP interface:
+       * tun: virtual point to point interface (default)
+       * tap: virtual ethernet interface
+    Default: tun
+  conf-variable: Interface mode <tun/tap>
+
+  --debug <0/1/2/3/99>
+      Show verbose debug messages
+       *  0: Do not print debug information.
+       *  1: Print minimal debug information.
+       *  2: Show statemachine and packet/payload type information.
+       *  3: Dump everything exluding authentication data.
+       * 99: Dump everything INCLUDING AUTHENTICATION data (e.g. PASSWORDS).
+  conf-variable: Debug <0/1/2/3/99>
+
+  --no-detach 
+      Don't detach from the console after login
+  conf-variable: No Detach
+
+  --pid-file <filename>
+      store the pid of background process in <filename>
+    Default: /var/run/vpnc/pid
+  conf-variable: Pidfile <filename>
+
+  --local-addr <ip/hostname>
+      local IP to use for ISAKMP / ESP / ... (0.0.0.0 == automatically assign)
+    Default: 0.0.0.0
+  conf-variable: Local Addr <ip/hostname>
+
+  --local-port <0-65535>
+      local ISAKMP port number to use (0 == use random port)
+    Default: 500
+  conf-variable: Local Port <0-65535>
+
+  --udp-port <0-65535>
+      Local UDP port number to use (0 == use random port).
+      This is only relevant if cisco-udp nat-traversal is used.
+      This is the _local_ port, the remote udp port is discovered automatically.
+      It is especially not the cisco-tcp port.
+    Default: 10000
+  conf-variable: Cisco UDP Encapsulation Port <0-65535>
+
+  --dpd-idle <0,10-86400>
+      Send DPD packet after not receiving anything for <idle> seconds.
+      Use 0 to disable DPD completely (both ways).
+    Default: 300
+  conf-variable: DPD idle timeout (our side) <0,10-86400>
+
+  --non-inter 
+      Don't ask anything, exit on missing options
+  conf-variable: Noninteractive
+
+  --auth-mode <psk/cert/hybrid>
+      Authentication mode:
+       * psk:    pre-shared key (default)
+       * cert:   server + client certificate (not implemented yet)
+       * hybrid: server certificate + xauth (if built with openssl support)
+    Default: psk
+  conf-variable: IKE Authmode <psk/cert/hybrid>
+
+  --ca-file <filename>
+      filename and path to the CA-PEM-File
+  conf-variable: CA-File <filename>
+
+  --ca-dir <directory>
+      path of the trusted CA-Directory
+    Default: /etc/ssl/certs
+  conf-variable: CA-Dir <directory>
+
+  --target-network <target network/netmask>
+      Target network in dotted decimal or CIDR notation
+    Default: 0.0.0.0/0.0.0.0
+  conf-variable: IPSEC target network <target network/netmask>
+
+Report bugs to vpnc@unix-ag.uni-kl.de
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/makeman.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/makeman.patch
new file mode 100644
index 0000000..f394e6a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/makeman.patch
@@ -0,0 +1,11 @@
+--- vpnc-0.5.1/makeman.pl.old	2008-03-16 02:17:59.000000000 -0500
++++ vpnc-0.5.1/makeman.pl	2008-03-16 02:29:34.000000000 -0500
+@@ -29,7 +29,7 @@ my $vpnc = './vpnc';
+ # indenting lists (those originally starting with an asterisk). I hope
+ # this pays off when converting the manpage to HTML or such.
+ 
+-open my $LONGHELP, '-|', "$vpnc --long-help";
++open my $LONGHELP, '-|', "cat ../long-help";
+ my $vpnc_options    = '';
+ my $relative_indent = 0;
+ my $indent_needed   = 0;
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/vpnc-install.patch b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/vpnc-install.patch
new file mode 100644
index 0000000..3de65ec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc/vpnc-install.patch
@@ -0,0 +1,35 @@
+--- a/Makefile~	2009-01-20 18:44:30.000000000 +0100
++++ b/Makefile	2009-01-20 18:44:30.000000000 +0100
+@@ -119,21 +119,21 @@
+ 	else \
+ 		install vpnc-script $(DESTDIR)$(ETCDIR); \
+ 	fi
+-	install -m600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf
+-	install -m755 vpnc-disconnect $(DESTDIR)$(SBINDIR)
+-	install -m755 pcf2vpnc $(DESTDIR)$(BINDIR)
+-	install -m644 vpnc.8 $(DESTDIR)$(MANDIR)/man8
+-	install -m644 pcf2vpnc.1 $(DESTDIR)$(MANDIR)/man1
+-	install -m644 cisco-decrypt.1 $(DESTDIR)$(MANDIR)/man1
+-	install -m644 COPYING $(DESTDIR)$(DOCDIR)
++	install -m 600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf
++	install -m 755 vpnc-disconnect $(DESTDIR)$(SBINDIR)
++	install -m 755 pcf2vpnc $(DESTDIR)$(BINDIR)
++	install -m 644 vpnc.8 $(DESTDIR)$(MANDIR)/man8
++	install -m 644 pcf2vpnc.1 $(DESTDIR)$(MANDIR)/man1
++	install -m 644 cisco-decrypt.1 $(DESTDIR)$(MANDIR)/man1
++	install -m 644 COPYING $(DESTDIR)$(DOCDIR)
+ 
+ install : install-common
+-	install -m755 vpnc $(DESTDIR)$(SBINDIR)
+-	install -m755 cisco-decrypt $(DESTDIR)$(BINDIR)
++	install -m 755 vpnc $(DESTDIR)$(SBINDIR)
++	install -m 755 cisco-decrypt $(DESTDIR)$(BINDIR)
+ 
+ install-strip : install-common
+-	install -s -m755 vpnc $(DESTDIR)$(SBINDIR)
+-	install -s -m755 cisco-decrypt $(DESTDIR)$(BINDIR)
++	install -s -m 755 vpnc $(DESTDIR)$(SBINDIR)
++	install -s -m 755 cisco-decrypt $(DESTDIR)$(BINDIR)
+ 
+ uninstall :
+ 	rm -f $(DESTDIR)$(SBINDIR)/vpnc \
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc_0.5.3.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc_0.5.3.bb
new file mode 100644
index 0000000..ccb4494
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc_0.5.3.bb
@@ -0,0 +1,45 @@
+SUMMARY = "A client for the Cisco3000 VPN Concentrator"
+HOMEPAGE = "http://www.unix-ag.uni-kl.de/~massar/vpnc/"
+AUTHOR = "Maurice Massar vpnc@unix-ag.uni-kl.de"
+SECTION = "net"
+LICENSE = "GPL-2.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=173b74cb8ac640a9992c03f3bce22a33"
+DEPENDS = "libgcrypt"
+
+inherit perlnative
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+CFLAGS_append = ' -DVERSION=\\"${PV}\\"'
+LDFLAGS_append = " -lgcrypt -lgpg-error"
+
+do_configure_append () {
+    # Make sure we use our nativeperl wrapper
+    sed -i "1s:#!.*:#!/usr/bin/env nativeperl:" ${S}/*.pl
+}
+
+do_install () {
+    sed -i s:m600:m\ 600:g Makefile    
+    oe_runmake 'DESTDIR=${D}' 'PREFIX=/usr' install
+    rm -f ${D}${sysconfdir}/vpnc/vpnc.conf #This file is useless
+    install ${WORKDIR}/default.conf ${D}${sysconfdir}/vpnc/default.conf
+}
+
+SYSROOT_PREPROCESS_FUNCS += "vpnc_sysroot_preprocess"
+
+vpnc_sysroot_preprocess () {
+    install -d ${SYSROOT_DESTDIR}${sysconfdir}/vpnc
+    install -m 755 ${D}${sysconfdir}/vpnc/vpnc-script ${SYSROOT_DESTDIR}${sysconfdir}/vpnc
+}
+
+CONFFILES_${PN} = "${sysconfdir}/vpnc/default.conf"
+RDEPENDS_${PN} = "perl-module-io-file"
+RRECOMMENDS_${PN} = "kernel-module-tun"
+
+SRC_URI = "http://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-${PV}.tar.gz \
+           file://makeman.patch \
+           file://vpnc-install.patch \
+           file://long-help \
+           file://default.conf"
+
+SRC_URI[md5sum] = "4378f9551d5b077e1770bbe09995afb3"
+SRC_URI[sha256sum] = "46cea3bd02f207c62c7c6f2f22133382602baeda1dc320747809e94881414884"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.9.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.9.0.bb
new file mode 100644
index 0000000..d086cef
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.9.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "wolfSSL Lightweight, Embedded SSL Library"
+DESCRIPTION = "wolfSSL, formerly CyaSSL, is a lightweight SSL library written in C and \
+               optimized for embedded and RTOS environments. It can be \
+               Up to 20 times smaller than OpenSSL while still supporting \
+               a full TLS 1.2 client and server."
+HOMEPAGE = "http://www.wolfssl.com/yaSSL/Products-wolfssl.html"
+BUGTRACKER = "http://github.com/wolfssl/wolfssl/issues"
+SECTION = "libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+PROVIDES += "cyassl"
+RPROVIDES_${PN} = "cyassl"
+
+SRC_URI = "http://www.wolfssl.com/${BP}.zip"
+
+SRC_URI[md5sum] = "f3396726a9befd61443c2cce216e39ba"
+SRC_URI[sha256sum] = "98f50244f7b43f8683bd0cf5c599849d330e75e6cf077e96f14e83bda8b03ca3"
+
+inherit autotools
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp/atftpd.service b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp/atftpd.service
new file mode 100644
index 0000000..480bc70
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp/atftpd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Advanced TFTP Server
+After=syslog.target network.target
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/atftpd --daemon --port 69
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_git.bb
new file mode 100644
index 0000000..0ece58f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_git.bb
@@ -0,0 +1,63 @@
+SUMMARY = "Advanced TFTP server and client"
+SECTION = "net"
+HOMEPAGE = "http://packages.debian.org/atftp"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
+PV = "0.7.1+git${SRCPV}"
+PR = "r3"
+
+SRCREV = "be3291a18c069ae23a124ffdc56d64a5ff0bbec7"
+
+SRC_URI = "git://git.code.sf.net/p/atftp/code \
+           file://atftpd-0.7_circumvent_tftp_size_restrictions.patch \
+           file://atftpd-0.7_unprotected_assignments_crash.patch \
+           file://atftpd.init \
+           file://atftpd.service \   
+           file://atftp-0.7-sorcerers_apprentice.patch \
+"
+S = "${WORKDIR}/git"
+
+inherit autotools update-rc.d useradd systemd
+
+PACKAGECONFIG ??= "tcp-wrappers"
+PACKAGECONFIG[pcre] = "--enable-libpcre,--disable-libpcre,libpcre"
+PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
+PACKAGECONFIG[readline] = "--enable-libreadline,--disable-libreadline,readline"
+
+INITSCRIPT_PACKAGES = "${PN}d"
+INITSCRIPT_NAME_${PN}d = "atftpd"
+INITSCRIPT_PARAMS_${PN}d = "defaults 80"
+
+USERADD_PACKAGES = "${PN}d"
+USERADD_PARAM_${PN}d = "--system --no-create-home --shell /bin/false \
+                        --user-group nobody"
+
+EXTRA_OEMAKE = "CFLAGS='${CFLAGS} -std=gnu89'"
+
+do_install_append() {
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/atftpd.init ${D}${sysconfdir}/init.d/atftpd
+
+    install -d ${D}/srv/tftp
+
+    rm ${D}${sbindir}/in.tftpd
+    
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/atftpd.service ${D}${systemd_unitdir}/system
+}
+
+PACKAGES =+ "${PN}d"
+
+FILES_${PN} = "${bindir}/*"
+
+FILES_${PN}d = "${sbindir}/* \
+    ${sysconfdir} \
+    /srv/tftp \
+    ${systemd_unitdir}/system/atftpd.service \
+"
+
+SYSTEMD_PACKAGES = "${PN}d"
+SYSTEMD_SERVICE_${PN}d = "atftpd.service"
+RPROVIDES_${PN}d += "${PN}d-systemd"
+RREPLACES_${PN}d += "${PN}d-systemd"
+RCONFLICTS_${PN}d += "${PN}d-systemd"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftp-0.7-sorcerers_apprentice.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftp-0.7-sorcerers_apprentice.patch
new file mode 100644
index 0000000..fc64291
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftp-0.7-sorcerers_apprentice.patch
@@ -0,0 +1,94 @@
+atftp exhibits the well known "Sorcerer's Apprentice Syndrome"(SAS) problem.
+According to RFC 1350, the fix to SAS is quite simple: further copies of the
+acknowledgment for a particular data block would be ignored.
+
+Patch originally from OpenSUSE:
+https://build.opensuse.org/package/view_file?file=atftp-0.7-sorcerers_apprentice.patch&package=atftp.539&project=openSUSE%3A12.1%3AUpdate&rev=84569792975e00573d7df597d2a6e895
+
+Upstream-Status: Pending
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+Index: atftp-0.7/tftp_file.c
+===================================================================
+--- atftp-0.7.orig/tftp_file.c	2011-11-22 15:12:53.792744083 +0100
++++ atftp-0.7/tftp_file.c	2011-11-22 15:13:51.706421893 +0100
+@@ -605,6 +605,7 @@
+      int timeout_state = state; /* what state should we go on when timeout */
+      int result;
+      long block_number = 0;
++     long last_requested_block = -1;
+      long last_block = -1;
+      int data_size;             /* size of data received */
+      int sockfd = data->sockfd; /* just to simplify calls */
+@@ -765,6 +766,17 @@
+                          connected = 1;
+                     }
+                     block_number = ntohs(tftphdr->th_block);
++
++                    if (last_requested_block >= block_number)
++                    {
++                        if (data->trace)
++                            fprintf(stderr, "received duplicated ACK <block: %ld >= %ld>\n",
++                                    last_requested_block, block_number);
++                        break;
++                    }
++                    else
++                        last_requested_block = block_number;
++
+                     if (data->trace)
+                          fprintf(stderr, "received ACK <block: %ld>\n",
+                                  block_number);
+Index: atftp-0.7/tftpd_file.c
+===================================================================
+--- atftp-0.7.orig/tftpd_file.c	2011-11-22 15:12:53.793744112 +0100
++++ atftp-0.7/tftpd_file.c	2011-11-22 15:15:04.617534260 +0100
+@@ -403,6 +403,7 @@
+      int timeout_state = state;
+      int result;
+      long block_number = 0;
++     long last_requested_block = -1;
+      long last_block = -1;
+      int block_loops = 0;
+      int data_size;
+@@ -859,6 +860,32 @@
+                     {
+                          logger(LOG_DEBUG, "received ACK <block: %d>", block_number);
+                     }
++
++		    /* check whether the block request isn't already fulfilled */
++
++                    /* multicast, block numbers could contain gaps */
++                    if (multicast) {
++                        if (last_requested_block >= block_number)
++                        {
++                            if (data->trace)
++                                logger(LOG_DEBUG, "received duplicated ACK <block: %d >= %d>", last_requested_block, block_number);
++                            break;
++                        }
++                        else
++                            last_requested_block = block_number;
++                    /* unicast, blocks should be requested one after another */
++		    } else {
++                        if (last_requested_block + 1 != block_number && last_requested_block != -1)
++                        {
++                            if (data->trace)
++                                logger(LOG_DEBUG, "received out of order ACK <block: %d != %d>", last_requested_block + 1, block_number);
++                            break;
++                        }
++                        else
++                            last_requested_block = block_number;
++                    }
++
++
+                     if (ntohs(tftphdr->th_block) == 65535)
+                     {
+                          block_loops++;
+@@ -958,6 +985,8 @@
+                          /* nedd to send an oack to that client */
+                          state = S_SEND_OACK;                
+                          fseek(fp, 0, SEEK_SET);
++			 /* reset the last block received counter */
++			 last_requested_block = -1;
+                     }
+                     else
+                     {
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftpd-0.7_circumvent_tftp_size_restrictions.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftpd-0.7_circumvent_tftp_size_restrictions.patch
new file mode 100644
index 0000000..280b570
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftpd-0.7_circumvent_tftp_size_restrictions.patch
@@ -0,0 +1,163 @@
+Fate #303031: Circumvent TFTP size restrictions in atftpd
+The size of a single image file that can be transferred with TFTP is limited to
+2^(2*8) *BLOCKSIZE (as per RFC 1350 there are only two bytes for the block
+counter). This is problematic for one of our customers who needs to transfer
+100+ MB Windows images using a TFTP client (NT bootloader) which has a
+hardwared BLOCKSIZE setting of 1432).
+
+block rollover
+http://www.compuphase.com/tftp.htm
+
+Patch originally from OpenSUSE:
+https://build.opensuse.org/package/show?package=atftp&project=openSUSE%3A12.2
+
+Upstream-Status: Pending
+
+Index: git/tftp_def.h
+===================================================================
+--- git.orig/tftp_def.h	2012-11-19 16:28:50.221027144 -0800
++++ git/tftp_def.h	2012-11-20 17:40:54.391206979 -0800
+@@ -32,6 +32,7 @@
+ #define TIMEOUT       5         /* Client timeout */
+ #define S_TIMEOUT     5         /* Server timout. */
+ #define NB_OF_RETRY   5
++#define MAXBLOCKS   1000000      /* maximum number of blocks in a download */
+ 
+ /* definition to use tftp_options structure */
+ #define OPT_FILENAME  0
+Index: git/tftp_file.c
+===================================================================
+--- git.orig/tftp_file.c	2012-11-19 16:28:50.221027144 -0800
++++ git/tftp_file.c	2012-11-19 16:28:51.201027167 -0800
+@@ -622,8 +622,8 @@
+      int state = S_SEND_REQ;    /* current state in the state machine */
+      int timeout_state = state; /* what state should we go on when timeout */
+      int result;
+-     int block_number = 0;
+-     int last_block = -1;
++     long block_number = 0;
++     long last_block = -1;
+      int data_size;             /* size of data received */
+      int sockfd = data->sockfd; /* just to simplify calls */
+      struct sockaddr_storage sa; /* a copy of data.sa_peer */
+@@ -637,8 +637,8 @@
+      int convert = 0;           /* if true, do netascii convertion */
+      char string[MAXLEN];
+ 
+-     int prev_block_number = 0; /* needed to support netascii convertion */
+-     int prev_file_pos = 0;
++     long prev_block_number = 0; /* needed to support netascii convertion */
++     long prev_file_pos = 0;
+      int temp = 0;
+ 
+      data->file_size = 0;
+@@ -745,7 +745,7 @@
+                               data_size, data->data_buffer);
+                data->file_size += data_size;
+                if (data->trace)
+-                    fprintf(stderr, "sent DATA <block: %d, size: %d>\n",
++                    fprintf(stderr, "sent DATA <block: %ld, size: %d>\n",
+                             block_number + 1, data_size - 4);
+                state = S_WAIT_PACKET;
+                break;
+@@ -785,7 +785,7 @@
+                     }
+                     block_number = ntohs(tftphdr->th_block);
+                     if (data->trace)
+-                         fprintf(stderr, "received ACK <block: %d>\n",
++                         fprintf(stderr, "received ACK <block: %ld>\n",
+                                  block_number);
+                     if ((last_block != -1) && (block_number > last_block))
+                     {
+Index: git/tftp_io.c
+===================================================================
+--- git.orig/tftp_io.c	2012-11-19 16:28:50.221027144 -0800
++++ git/tftp_io.c	2012-11-19 16:28:51.201027167 -0800
+@@ -350,8 +350,8 @@
+ /*
+  * Read from file and do netascii conversion if needed
+  */
+-int tftp_file_read(FILE *fp, char *data_buffer, int data_buffer_size, int block_number,
+-                   int convert, int *prev_block_number, int *prev_file_pos, int *temp)
++int tftp_file_read(FILE *fp, char *data_buffer, int data_buffer_size, long block_number,
++                   int convert, long *prev_block_number, long *prev_file_pos, int *temp)
+ {
+      int i;
+      int c;
+Index: git/tftp_io.h
+===================================================================
+--- git.orig/tftp_io.h	2012-11-19 16:28:50.221027144 -0800
++++ git/tftp_io.h	2012-11-19 16:28:51.201027167 -0800
+@@ -52,8 +52,8 @@
+ int tftp_get_packet(int sock1, int sock2, int *sock, struct sockaddr_storage *sa,
+                     struct sockaddr_storage *from, struct sockaddr_storage *to,
+                     int timeout, int *size, char *data);
+-int tftp_file_read(FILE *fp, char *buffer, int buffer_size, int block_number, int convert,
+-                   int *prev_block_number, int *prev_file_pos, int *temp);
++int tftp_file_read(FILE *fp, char *buffer, int buffer_size, long block_number, int convert,
++                   long *prev_block_number, long *prev_file_pos, int *temp);
+ int tftp_file_write(FILE *fp, char *data_buffer, int data_buffer_size, int block_number,
+                     int data_size, int convert, int *prev_block_number, int *temp);
+ #endif
+Index: git/tftpd_file.c
+===================================================================
+--- git.orig/tftpd_file.c	2012-11-19 16:28:50.225027144 -0800
++++ git/tftpd_file.c	2012-11-19 16:28:51.201027167 -0800
+@@ -407,8 +407,9 @@
+      int state = S_BEGIN;
+      int timeout_state = state;
+      int result;
+-     int block_number = 0;
+-     int last_block = -1;
++     long block_number = 0;
++     long last_block = -1;
++     int block_loops = 0;
+      int data_size;
+      struct sockaddr_storage *sa = &data->client_info->client;
+      struct sockaddr_storage from;
+@@ -431,8 +432,8 @@
+      struct client_info *client_old = NULL;
+      struct tftp_opt options[OPT_NUMBER];
+ 
+-     int prev_block_number = 0; /* needed to support netascii convertion */
+-     int prev_file_pos = 0;
++     long prev_block_number = 0; /* needed to support netascii convertion */
++     long prev_file_pos = 0;
+      int temp = 0;
+ 
+      /* look for mode option */
+@@ -565,11 +566,12 @@
+           logger(LOG_INFO, "blksize option -> %d", result);
+      }
+ 
+-     /* Verify that the file can be sent in 2^16 block of BLKSIZE octets */
+-     if ((file_stat.st_size / (data->data_buffer_size - 4)) > 65535)
++     /* Verify that the file can be sent in MAXBLOCKS blocks of BLKSIZE octets */
++     if ((file_stat.st_size / (data->data_buffer_size - 4)) > MAXBLOCKS)
+      {
+           tftp_send_error(sockfd, sa, EUNDEF, data->data_buffer, data->data_buffer_size);
+-          logger(LOG_NOTICE, "Requested file to big, increase BLKSIZE");
++          logger(LOG_NOTICE, "Requested file too big, increase BLKSIZE");
++          logger(LOG_NOTICE, "Only %d blocks of %d bytes can be served.", MAXBLOCKS, data->data_buffer_size);
+           if (data->trace)
+                logger(LOG_DEBUG, "sent ERROR <code: %d, msg: %s>", EUNDEF,
+                       tftp_errmsg[EUNDEF]);
+@@ -880,10 +882,15 @@
+                     }
+                     /* The ACK is from the current client */
+                     number_of_timeout = 0;
+-                    block_number = ntohs(tftphdr->th_block);
++                    block_number = (block_loops * 65536) + ntohs(tftphdr->th_block);
+                     if (data->trace)
+-                         logger(LOG_DEBUG, "received ACK <block: %d>",
+-                                block_number);
++                    {
++                         logger(LOG_DEBUG, "received ACK <block: %d>", block_number);
++                    }
++                    if (ntohs(tftphdr->th_block) == 65535)
++                    {
++                         block_loops++;
++                    };
+                     if ((last_block != -1) && (block_number > last_block))
+                     {
+                          state = S_END;
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftpd-0.7_unprotected_assignments_crash.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftpd-0.7_unprotected_assignments_crash.patch
new file mode 100644
index 0000000..28fba6c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftpd-0.7_unprotected_assignments_crash.patch
@@ -0,0 +1,152 @@
+Avoid assigning thread data outside of mutex lock
+
+Patch originally from OpenSUSE:
+https://build.opensuse.org/package/show?package=atftp&project=openSUSE%3A12.2
+
+Upstream-Status: Pending
+
+Index: git/tftpd_list.c
+===================================================================
+--- git.orig/tftpd_list.c	2012-10-24 21:48:47.000000000 -0700
++++ git/tftpd_list.c	2012-10-24 21:52:04.266205076 -0700
+@@ -49,11 +49,11 @@
+  */
+ int tftpd_list_add(struct thread_data *new)
+ {
+-     struct thread_data *current = thread_data;
++     struct thread_data *current;
+      int ret;
+ 
+      pthread_mutex_lock(&thread_list_mutex);
+-
++     current = thread_data;
+      number_of_thread++;
+      
+      ret = number_of_thread;
+@@ -81,11 +81,13 @@
+  */
+ int tftpd_list_remove(struct thread_data *old)
+ {
+-     struct thread_data *current = thread_data;
++     struct thread_data *current;
+      int ret;
+ 
+      pthread_mutex_lock(&thread_list_mutex);
+ 
++     current = thread_data;
++
+      number_of_thread--;
+      ret = number_of_thread;
+     
+@@ -137,23 +139,26 @@
+                                              struct thread_data *data,
+                                              struct client_info *client)
+ {
+-     struct thread_data *current = thread_data; /* head of the list */
+-     struct tftp_opt *tftp_options = data->tftp_options;
++     struct thread_data *current; /* head of the list */
++     struct tftp_opt *tftp_options;
+      struct client_info *tmp;
+      char options[MAXLEN];
+      char string[MAXLEN];
+      char *index;
+      int len;
+ 
++     /* lock the whole list before walking it */
++     pthread_mutex_lock(&thread_list_mutex);
++
+      *thread = NULL;
+ 
++     current = thread_data;
++     tftp_options = data->tftp_options;
++
+      opt_request_to_string(tftp_options, options, MAXLEN);
+      index = strstr(options, "multicast");
+      len = (int)index - (int)options;
+ 
+-     /* lock the whole list before walking it */
+-     pthread_mutex_lock(&thread_list_mutex);
+-
+      while (current)
+      {
+           if (current != data)
+@@ -214,9 +219,10 @@
+ void tftpd_clientlist_remove(struct thread_data *thread,
+                              struct client_info *client)
+ {
+-     struct client_info *tmp = thread->client_info;
++     struct client_info *tmp;
+ 
+      pthread_mutex_lock(&thread->client_mutex);
++     tmp = thread->client_info;
+      while ((tmp->next != client) && (tmp->next != NULL))
+           tmp = tmp->next;
+      if (tmp->next == NULL)
+@@ -231,9 +237,11 @@
+ void tftpd_clientlist_free(struct thread_data *thread)
+ {
+      struct client_info *tmp;
+-     struct client_info *head = thread->client_info;
++     struct client_info *head;
+ 
+      pthread_mutex_lock(&thread->client_mutex);
++     head = thread->client_info;
++
+      while (head)
+      {
+           tmp = head;
+@@ -250,9 +258,10 @@
+                           struct client_info *client,
+                           struct sockaddr_storage *sock)
+ {
+-     struct client_info *head = thread->client_info;
++     struct client_info *head;
+ 
+      pthread_mutex_lock(&thread->client_mutex);
++     head = thread->client_info;
+ 
+      if (client)
+      {
+@@ -334,10 +343,10 @@
+ 
+ void tftpd_list_kill_threads(void)
+ {
+-     struct thread_data *current = thread_data; /* head of list */
++     struct thread_data *current; /* head of list */
+ 
+      pthread_mutex_lock(&thread_list_mutex);
+-
++     current = thread_data;
+ 
+      while (current != NULL)
+      {
+Index: git/tftpd_mcast.c
+===================================================================
+--- git.orig/tftpd_mcast.c	2012-10-24 21:48:47.000000000 -0700
++++ git/tftpd_mcast.c	2012-10-24 21:49:11.570201582 -0700
+@@ -51,9 +51,11 @@
+  */
+ int tftpd_mcast_get_tid(char **addr, short *port)
+ {
+-     struct tid *current = tid_list;
++     struct tid *current;
+ 
+      pthread_mutex_lock(&mcast_tid_list);
++     current = tid_list;
++
+      /* walk the list for a free tid */
+      while (current != NULL)
+      {
+@@ -74,9 +76,11 @@
+ 
+ int tftpd_mcast_free_tid(char *addr, short port)
+ {
+-     struct tid *current = tid_list;
++     struct tid *current;
+ 
+      pthread_mutex_lock(&mcast_tid_list);
++     current = tid_list;
++
+      while (current != NULL)
+      {
+ 	  if ((current->used == 1) && (current->port == port) &&
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftpd.init b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftpd.init
new file mode 100644
index 0000000..161d97a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/atftp/files/atftpd.init
@@ -0,0 +1,37 @@
+#! /bin/sh
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/atftpd and type
+# > update-rc.d atftpd defaults 60
+#
+
+
+test -f /usr/sbin/atftpd || exit 0
+
+test -d /srv/tftp || mkdir -p /srv/tftp
+
+case "$1" in
+  start)
+    echo -n "Starting tftp daemon: atftpd"
+    start-stop-daemon --start --quiet --exec /usr/sbin/atftpd -- --daemon --port 69
+    echo "."
+    ;;
+  stop)
+    echo -n "Stopping tftp daemon: atftpd"
+    start-stop-daemon --stop --quiet --exec /usr/sbin/atftpd
+    echo "."
+    ;;
+  reload|force-reload)
+    start-stop-daemon --stop --quiet --signal 1 --exec /usr/sbin/atftpd
+    ;;
+  restart)
+    $0 stop
+    sleep 1
+	$0 start
+    ;;
+  *)
+    echo "Usage: /etc/init.d/atftpd {start|stop|reload|restart|force-reload}"
+    exit 1
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-systemd-allow-with-systemd-to-take-a-path-arg.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-systemd-allow-with-systemd-to-take-a-path-arg.patch
new file mode 100644
index 0000000..742f25d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-systemd-allow-with-systemd-to-take-a-path-arg.patch
@@ -0,0 +1,47 @@
+From 40971911d653bf53de295d7462c643e4073916b9 Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe@deserted.net>
+Date: Fri, 1 Nov 2013 12:47:18 -0400
+Subject: [PATCH] systemd: allow --with-systemd to take a path arg
+
+If building for a cross-compile environment with systemd it is convenient
+to be able to specify a systemd path for the target that may not be the
+same as that on the host.
+
+Upstream-status: Submitted [http://www.spinics.net/lists/autofs/msg00740.html]
+
+Signed-off-by: Joe MacDonald <joe@deserted.net>
+---
+ aclocal.m4 |   10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/aclocal.m4 b/aclocal.m4
+index 3e6f223..105e3e9 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -229,8 +229,10 @@ dnl Check the location of the systemd unit files directory
+ dnl --------------------------------------------------------------------------
+ AC_DEFUN([AF_WITH_SYSTEMD],
+ [AC_ARG_WITH(systemd,
+-[  --with-systemd         install systemd unit file if systemd unit directory
+-			  is found on system],
++[  --with-systemd@<:@=systemddir@:>@  install systemd unit file.  If 'yes'
++			  probe the system for unit directory.
++			  If a path is specified, assume that
++			  is a valid install path.],
+ [if test "$withval" = yes; then
+   if test -z "$systemddir"; then
+     AC_MSG_CHECKING([location of the systemd unit files directory])
+@@ -247,6 +249,10 @@ AC_DEFUN([AF_WITH_SYSTEMD],
+   else
+     AC_MSG_RESULT(not found)
+   fi
++else
++ if test "$withval" != no; then
++  systemddir=$withval
++ fi
+ fi])
+ ])
+ 
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/Makefile.rules-cross.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/Makefile.rules-cross.patch
new file mode 100644
index 0000000..7dc7096
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/Makefile.rules-cross.patch
@@ -0,0 +1,23 @@
+Index: autofs-5.0.7/Makefile.rules
+===================================================================
+--- autofs-5.0.7.orig/Makefile.rules	2012-07-24 23:05:26.000000000 -0700
++++ autofs-5.0.7/Makefile.rules	2012-10-26 09:23:40.270204270 -0700
+@@ -34,14 +34,14 @@
+ else
+ CFLAGS    ?= -O2 -Wall
+ LDFLAGS   = -s
+-STRIP     = strip --strip-debug
++STRIP     = ${TARGET_PREFIX}strip --strip-debug
+ endif
+ endif
+ 
+-CC        = gcc
+-CXX       = g++
++CC        ?= ${TARGET_PREFIX}gcc
++CXX       ?= ${TARGET_PREFIX}g++
+ CXXFLAGS  = $(CFLAGS)
+-LD        = ld
++LD        ?= ${TARGET_PREFIX}ld
+ SOLDFLAGS = -shared
+ 
+ CFLAGS += -D_REENTRANT -D_FILE_OFFSET_BITS=64
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/add-the-needed-stdarg.h.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/add-the-needed-stdarg.h.patch
new file mode 100644
index 0000000..fdb906b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/add-the-needed-stdarg.h.patch
@@ -0,0 +1,24 @@
+[PATCH] add the needed stdarg.h
+
+Upstream-status: Pending
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ lib/defaults.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lib/defaults.c b/lib/defaults.c
+index 2b03ea2..5728e67 100644
+--- a/lib/defaults.c
++++ b/lib/defaults.c
+@@ -16,6 +16,7 @@
+ 
+ #include <stdlib.h>
+ #include <stdio.h>
++#include <stdarg.h>
+ #include <ctype.h>
+ #include <string.h>
+ #include <sys/utsname.h>
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-do-not-check-for-modprobe.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-do-not-check-for-modprobe.patch
new file mode 100644
index 0000000..af5be6a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-do-not-check-for-modprobe.patch
@@ -0,0 +1,75 @@
+Description: Loading autofs module is #ifdef'ed in the source, so
+ there is no need to check for /proc (which is only used
+ to load module) or modprobe.  Both modprobe and /proc
+ are always in the fixed location so there's no need to
+ check for these to start with.
+
+Upstream-Status: Backport [1]
+[1] http://www.spinics.net/lists/autofs/msg00139.html
+
+diff -urpN a/configure.in b/configure.in
+--- a/configure.in	2013-01-15 11:30:22.000000000 +0800
++++ b/configure.in	2013-01-15 11:31:45.000000000 +0800
+@@ -34,11 +34,6 @@ AC_MSG_CHECKING([for binaries in])
+ AC_MSG_RESULT([$searchpath])
+ 
+ #
+-# Make sure we have "/proc"
+-#
+-AF_LINUX_PROCFS()
+-
+-#
+ # Location of init.d directory?
+ #
+ AF_INIT_D()
+@@ -142,7 +137,6 @@ AF_PATH_INCLUDE(UMOUNT, umount, /bin/umo
+ AF_PATH_INCLUDE(E2FSCK, fsck.ext2 e2fsck, , $searchpath)
+ AF_PATH_INCLUDE(E3FSCK, fsck.ext3 e3fsck, , $searchpath)
+ AF_PATH_INCLUDE(E4FSCK, fsck.ext4 e4fsck, , $searchpath)
+-AF_PATH_INCLUDE(MODPROBE, modprobe, , $searchpath)
+ 
+ AF_CHECK_PROG(LEX, flex lex, , $searchpath)
+ AF_CHECK_PROG(YACC, bison, , $searchpath)
+diff -urpN a/daemon/module.c b/daemon/module.c
+--- a/daemon/module.c	2013-01-15 11:30:49.000000000 +0800
++++ b/daemon/module.c	2013-01-15 11:32:00.000000000 +0800
+@@ -18,6 +18,8 @@
+ #include <stdlib.h>
+ #include "automount.h"
+ 
++#if 0
++/* see comment in daemon/automount.c around load_autofs4_module() call */
+ int load_autofs4_module(void)
+ {
+ 	FILE *fp;
+@@ -52,6 +54,7 @@ int load_autofs4_module(void)
+ 
+ 	return 1;
+ }
++#endif
+ 
+ struct lookup_mod *open_lookup(const char *name, const char *err_prefix,
+ 			       const char *mapfmt, int argc, const char *const *argv)
+diff -urpN a/include/automount.h b/include/automount.h
+--- a/include/automount.h	2013-01-15 11:31:10.000000000 +0800
++++ b/include/automount.h	2013-01-15 11:32:06.000000000 +0800
+@@ -50,16 +50,11 @@
+ #error Failed to locate umount(8)!
+ #endif
+ 
+-#ifndef HAVE_MODPROBE
+-#error Failed to locate modprobe(8)!
+-#endif
+-
+-#ifndef HAVE_LINUX_PROCFS
+-#error Failed to verify existence of procfs filesystem!
+-#endif
+-
++#if 0
++/* see comment in daemon/automount.c around load_autofs4_module() call */
+ #define FS_MODULE_NAME  "autofs4"
+ int load_autofs4_module(void);
++#endif
+ 
+ /* The -s (sloppy) option to mount is good, if we have it... */
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-fix-lib-deps.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-fix-lib-deps.patch
new file mode 100644
index 0000000..09fea49
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-fix-lib-deps.patch
@@ -0,0 +1,28 @@
+From 54a9bd28a307dd74df044d779ca85adcf36aa202 Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe.macdonald@windriver.com>
+Date: Tue, 18 Jun 2013 10:05:21 -0400
+Subject: [PATCH] Fix the dependency issue
+
+Upstream-Status: Pending
+
+autofs's lib sources have a dependency on a number of files that are
+generated by rpcgen during buildtime
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+Signed-off-by: Joe MacDonald <joe.macdonald@windriver.com>
+---
+ lib/Makefile |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lib/Makefile b/lib/Makefile
+index 5418009..bff4e1d 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -75,3 +75,4 @@ install: all
+ clean:
+ 	rm -f $(LIB) $(RPCS) $(OBJS) $(YACCSRC) *.output *~
+ 
++$(OBJS): $(RPCS)
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-include-linux-nfs.h-directly-in-rpc_sub.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-include-linux-nfs.h-directly-in-rpc_sub.patch
new file mode 100644
index 0000000..3a87898
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-include-linux-nfs.h-directly-in-rpc_sub.patch
@@ -0,0 +1,32 @@
+Upstream-Status: Pending
+
+From 44bdce8c6ed9b30c1643e5981172a4f9025f013c Mon Sep 17 00:00:00 2001
+From: Andreas Oberritter <obi@opendreambox.org>
+Date: Wed, 13 Mar 2013 16:17:08 +0100
+Subject: [PATCH] autofs-5.0.7: include linux/nfs.h directly in rpc_subs.h
+
+Fixes compile error with uclibc. Glibc's nfs/nfs.h contains
+nothing but "#include linux/nfs.h". rpc_subs.h already includes
+other linux/nfs*.h files directly.
+
+Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
+---
+ include/rpc_subs.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/rpc_subs.h b/include/rpc_subs.h
+index b6d59f9..a2d9648 100644
+--- a/include/rpc_subs.h
++++ b/include/rpc_subs.h
+@@ -18,7 +18,7 @@
+ 
+ #include <rpc/rpc.h>
+ #include <rpc/pmap_prot.h>
+-#include <nfs/nfs.h>
++#include <linux/nfs.h>
+ #include <linux/nfs2.h>
+ #include <linux/nfs3.h>
+ 
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-additional-distros.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-additional-distros.patch
new file mode 100644
index 0000000..6a35843
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-additional-distros.patch
@@ -0,0 +1,12 @@
+--- autofs-4.1.4/samples/rc.autofs.in~	2005-04-11 06:30:54.000000000 -0500
++++ autofs-4.1.4/samples/rc.autofs.in	2007-04-07 13:18:44.000000000 -0500
+@@ -43,6 +43,9 @@
+ 	system=debian
+ elif [ -f /etc/redhat-release ]; then
+ 	system=redhat
++elif [ -f /etc/issue ] && grep -q "^SlugOS\|Yocto" /etc/issue ; then
++	# SlugOS and Yocto behave like Debian, at least for autofs purposes.
++	system=debian
+ else
+ 	echo "$0: Unknown system, please port and contact autofs@linux.kernel.org" 1>&2
+ 	exit 1
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/cross.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/cross.patch
new file mode 100644
index 0000000..8f1af62
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/cross.patch
@@ -0,0 +1,44 @@
+Index: autofs-5.0.7/aclocal.m4
+===================================================================
+--- autofs-5.0.7.orig/aclocal.m4	2012-10-28 04:45:07.000000000 -0700
++++ autofs-5.0.7/aclocal.m4	2012-10-28 10:47:53.263996910 -0700
+@@ -7,6 +7,8 @@
+ AC_DEFUN(AF_PATH_INCLUDE,
+ [AC_PATH_PROGS($1,$2,$3,$4)
+ if test -n "$$1"; then
++  AH_TEMPLATE([HAVE_$1], [Have $2])
++  AH_TEMPLATE([PATH_$1], [Have $2])
+   AC_DEFINE(HAVE_$1,1,[define if you have $1])
+   AC_DEFINE_UNQUOTED(PATH_$1, "$$1", [define if you have $1])
+   HAVE_$1=1
+Index: autofs-5.0.7/configure.in
+===================================================================
+--- autofs-5.0.7.orig/configure.in	2012-10-28 04:45:06.000000000 -0700
++++ autofs-5.0.7/configure.in	2012-10-28 10:50:07.580000628 -0700
+@@ -301,13 +301,15 @@
+ cat > pietest.c <<EOF
+ int main(void) { return 0; }
+ EOF
++AF_tmp_ldflags="$LDFLAGS"
++AF_tmp_cflags="$CFLAGS"
+ CFLAGS=-fPIE
+ LDFLAGS=-pie
+ DAEMON_CFLAGS=
+ DAEMON_LDFLAGS=
+ AC_MSG_CHECKING([whether gcc -fPIE works])
+-AC_RUN_IFELSE([AC_LANG_PROGRAM([[]], [[int main(void) {return 0;}]])],
+-	      [gcc_supports_pie=yes], [gcc_supports_pie=no], [gcc_supports_pie=no])
++AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int main(void) {return 0;}]])],
++	       [gcc_supports_pie=yes], [gcc_supports_pie=no], [gcc_supports_pie=no])
+ AC_MSG_RESULT([$gcc_supports_pie])
+ if test $gcc_supports_pie = yes ; then
+ 	DAEMON_CFLAGS="-fPIE"
+@@ -316,6 +318,8 @@
+ rm -f pietest.c
+ AC_SUBST(DAEMON_CFLAGS)
+ AC_SUBST(DAEMON_LDFLAGS)
++CFLAGS="${AF_tmp_cflags}"
++LDFLAGS="${AF_tmp_ldflags}"
+ 
+ #
+ # Enable ability to access value in external env variable
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/fix-the-YACC-rule-to-fix-a-building-failure.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/fix-the-YACC-rule-to-fix-a-building-failure.patch
new file mode 100644
index 0000000..9b64183
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/fix-the-YACC-rule-to-fix-a-building-failure.patch
@@ -0,0 +1,62 @@
+[PATCH] fix the YACC rule to fix a building failure
+
+Upstream-Statu: Pending
+
+The original rule will create the header file twice, one is that the header
+file as the object file is created, other time is when create the C source file.
+since YACC always has "-d" parameter.
+
+This lead to a race when compile amd_tok.o, the header file maybe rewritten.
+  |----------------------
+  |amd_tok.l:359:10: error: 'RBRACKET' undeclared (first use in this function)
+  |  ")" { return RBRACKET; }
+  |          ^
+  |../Makefile.rules:64: recipe for target 'amd_tok.o' failed
+  |----------------------
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ lib/Makefile     | 6 ++++--
+ modules/Makefile | 3 ++-
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/lib/Makefile b/lib/Makefile
+index 4798a4b..c40cf86 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -57,7 +57,8 @@ mount_xdr.o: mount_xdr.c
+ master_tok.c: master_tok.l
+ 	$(LEX) -o$@ -Pmaster_ $?
+ 
+-master_parse.tab.c master_parse.tab.h: master_parse.y
++master_parse.tab.h: master_parse.tab.c
++master_parse.tab.c: master_parse.y
+ 	$(YACC) -v -d -p master_ -b master_parse $?
+ 
+ master_tok.o: master_tok.c master_parse.tab.h
+@@ -67,7 +68,8 @@ master_parse.tab.o: master_parse.tab.c master_parse.tab.h
+ nss_tok.c: nss_tok.l
+ 	$(LEX) -o$@ -Pnss_ $?
+ 
+-nss_parse.tab.c nss_parse.tab.h: nss_parse.y
++nss_parse.tab.h: nss_parse.tab.c
++nss_parse.tab.c: nss_parse.y
+ 	$(YACC) -v -d -p nss_ -b nss_parse $?
+ 
+ nss_tok.o: nss_tok.c nss_parse.tab.h
+diff --git a/modules/Makefile b/modules/Makefile
+index 237b70b..71415d0 100644
+--- a/modules/Makefile
++++ b/modules/Makefile
+@@ -103,7 +103,8 @@ amd_tok.c: amd_tok.l
+ 
+ amd_tok.o: amd_tok.c amd_parse.tab.h
+ 
+-amd_parse.tab.c amd_parse.tab.h: amd_parse.y
++amd_parse.tab.h: amd_parse.tab.c
++amd_parse.tab.c: amd_parse.y
+ 	$(YACC) -v -d -p amd_ -b amd_parse $?
+ 
+ amd_parse.tab.o: amd_parse.tab.c amd_parse.tab.h
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/fix_disable_ldap.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/fix_disable_ldap.patch
new file mode 100644
index 0000000..31c8510
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/fix_disable_ldap.patch
@@ -0,0 +1,42 @@
+autofs: fails to compile with openldap disabled
+
+As of 5.0.6, it appears that changes were introduced so that 
+if you compile with openldap disabled and openldap headers are not
+available, then autofs fails to build.
+
+Upstream-Status: Pending
+
+Signed-off-by: Amy Fong <amy.fong@windriver.com>
+--
+ lookup_ldap.h |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+---
+ include/lookup_ldap.h |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/include/lookup_ldap.h
++++ b/include/lookup_ldap.h
+@@ -1,7 +1,9 @@
+ #ifndef LOOKUP_LDAP_H
+ #define LOOKUP_LDAP_H
+ 
++#ifdef WITH_LDAP
+ #include <ldap.h>
++#endif
+ 
+ #ifdef WITH_SASL
+ #include <openssl/ssl.h>
+@@ -109,10 +111,12 @@
+ 
+ #define LDAP_AUTH_USESIMPLE	0x0008
+ 
++#ifdef WITH_LDAP
+ /* lookup_ldap.c */
+ LDAP *init_ldap_connection(unsigned logopt, const char *uri, struct lookup_context *ctxt);
+ int unbind_ldap_connection(unsigned logopt, LDAP *ldap, struct lookup_context *ctxt);
+ int authtype_requires_creds(const char *authtype);
++#endif
+ 
+ #ifdef WITH_SASL
+ /* cyrus-sasl.c */
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/force-STRIP-to-emtpy.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/force-STRIP-to-emtpy.patch
new file mode 100644
index 0000000..634005b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/force-STRIP-to-emtpy.patch
@@ -0,0 +1,25 @@
+[PATCH] force STRIP to emtpy
+
+otherwise the generate file will be stripped
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ Makefile.rules |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.rules b/Makefile.rules
+index 710a2c9..e4334db 100644
+--- a/Makefile.rules
++++ b/Makefile.rules
+@@ -31,7 +31,7 @@ LDFLAGS   ?= -s
+ endif
+ 
+ ifdef DONTSTRIP
+-STRIP     ?= :
++STRIP     = :
+ else
+ STRIP     ?= strip --strip-debug
+ endif
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/libtirpc-name-clash-backout.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/libtirpc-name-clash-backout.patch
new file mode 100644
index 0000000..e93021d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/libtirpc-name-clash-backout.patch
@@ -0,0 +1,28 @@
+---
+ lib/rpc_subs.c |   10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/lib/rpc_subs.c b/lib/rpc_subs.c
+index 5d6ead0..c7177f2 100644
+--- a/lib/rpc_subs.c
++++ b/lib/rpc_subs.c
+@@ -34,16 +34,6 @@
+ #include <poll.h>
+ 
+ #ifdef WITH_LIBTIRPC
+-#undef auth_destroy
+-#define auth_destroy(auth)                                              \
+-                do {                                                    \
+-                        int refs;                                       \
+-                        if ((refs = auth_put((auth))) == 0)             \
+-                                ((*((auth)->ah_ops->ah_destroy))(auth));\
+-                } while (0)
+-#endif
+-
+-#ifdef WITH_LIBTIRPC
+ const rpcprog_t rpcb_prog = RPCBPROG;
+ const rpcvers_t rpcb_version = RPCBVERS;
+ #else
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/libtirpc.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/libtirpc.patch
new file mode 100644
index 0000000..d68944b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/libtirpc.patch
@@ -0,0 +1,26 @@
+Index: autofs-5.0.7/aclocal.m4
+===================================================================
+--- autofs-5.0.7.orig/aclocal.m4	2012-10-28 13:17:45.504237027 -0700
++++ autofs-5.0.7/aclocal.m4	2012-10-28 13:20:50.108242739 -0700
+@@ -403,7 +403,7 @@
+ # save current flags
+ af_check_libtirpc_save_cflags="$CFLAGS"
+ af_check_libtirpc_save_ldflags="$LDFLAGS"
+-CFLAGS="$CFLAGS -I/usr/include/tirpc"
++CFLAGS="$CFLAGS -I=/usr/include/tirpc"
+ LDFLAGS="$LDFLAGS -ltirpc"
+ 
+ AC_TRY_LINK(
+Index: autofs-5.0.7/Makefile.rules
+===================================================================
+--- autofs-5.0.7.orig/Makefile.rules	2012-10-28 13:17:45.308237022 -0700
++++ autofs-5.0.7/Makefile.rules	2012-10-28 13:21:25.720242803 -0700
+@@ -48,7 +48,7 @@
+ LIBS += -lpthread
+ 
+ ifdef TIRPCLIB
+-CFLAGS += -I/usr/include/tirpc
++CFLAGS += -I=/usr/include/tirpc
+ LIBS += $(TIRPCLIB)
+ endif
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/no-bash.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/no-bash.patch
new file mode 100644
index 0000000..cf03635
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/no-bash.patch
@@ -0,0 +1,20 @@
+Index: autofs-5.0.7/samples/auto.net
+===================================================================
+--- autofs-5.0.7.orig/samples/auto.net	2012-07-24 23:05:26.000000000 -0700
++++ autofs-5.0.7/samples/auto.net	2012-10-28 10:44:25.035991715 -0700
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ # This file must be executable to work! chmod 755!
+ 
+Index: autofs-5.0.7/samples/auto.smb
+===================================================================
+--- autofs-5.0.7.orig/samples/auto.smb	2012-07-24 23:05:26.000000000 -0700
++++ autofs-5.0.7/samples/auto.smb	2012-10-28 10:44:25.035991715 -0700
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ # This file must be executable to work! chmod 755!
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/remove-bashism.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/remove-bashism.patch
new file mode 100644
index 0000000..282d6f0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/remove-bashism.patch
@@ -0,0 +1,120 @@
+From 79034f969bbd12215d65b4337dfd38a13d02d4ef Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Sat, 13 Sep 2014 20:19:28 -0700
+Subject: [PATCH] autofs.init.in: remove bashism
+
+It can work without the bashism.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ redhat/autofs.init.in |   12 ++++++------
+ samples/rc.autofs.in  |   10 +++++-----
+ 2 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/redhat/autofs.init.in b/redhat/autofs.init.in
+index 9d008ff..4f1c0d8 100644
+--- a/redhat/autofs.init.in
++++ b/redhat/autofs.init.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # rc file for automount using a Sun-style "master map".
+ #
+@@ -42,7 +42,7 @@ if [ -r $confdir/autofs ]; then
+ 	. $confdir/autofs
+ fi
+ 
+-function start() {
++start() {
+ 	# Make sure autofs4 module is loaded
+ 	if ! grep -q autofs /proc/filesystems
+ 	then
+@@ -102,7 +102,7 @@ function start() {
+ 	return $RETVAL
+ }
+ 
+-function stop() {
++stop() {
+ 	echo -n $"Stopping $prog: "
+ 	count=0
+ 	while [ -n "`pidof $prog`" -a $count -lt 15 ] ; do
+@@ -125,7 +125,7 @@ function stop() {
+ 	return $RETVAL
+ }
+ 
+-function restart() {
++restart() {
+ 	status autofs > /dev/null 2>&1
+ 	if [ $? -eq 0 ]; then
+ 		stop
+@@ -143,7 +143,7 @@ function restart() {
+ 	start
+ }
+ 
+-function reload() {
++reload() {
+ 	if [ ! -f /var/lock/subsys/autofs ]; then
+ 		echo $"$prog not running"
+ 		RETVAL=1
+@@ -161,7 +161,7 @@ function reload() {
+ 	return $RETVAL
+ }
+ 
+-function usage_message() {
++usage_message() {
+ 	echo $"Usage: $0 {start|forcestart|stop|status|restart|force-reload|forcerestart|reload|condrestart|try-restart|usage}"
+ }
+ 
+diff --git a/samples/rc.autofs.in b/samples/rc.autofs.in
+index 487669f..e96cde1 100644
+--- a/samples/rc.autofs.in
++++ b/samples/rc.autofs.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # rc file for automount using a Sun-style "master map".
+ #
+@@ -36,7 +36,7 @@ if [ -r $confdir/autofs ]; then
+ 	. $confdir/autofs
+ fi
+ 
+-function start() {
++start() {
+ 	echo -n "Starting $prog: "
+ 
+ 	# Make sure autofs4 module is loaded
+@@ -85,7 +85,7 @@ function start() {
+ 	return $RETVAL
+ }
+ 
+-function stop() {
++stop() {
+ 	echo -n $"Stopping $prog: "
+ 	count=0
+ 	while [ -n "`pidof $prog`" -a $count -lt 15 ] ; do
+@@ -102,7 +102,7 @@ function stop() {
+ 	return $RETVAL
+ }
+ 
+-function restart() {
++restart() {
+ 	stop
+ 	while [ -n "`pidof $prog`" ] ; do
+ 		sleep 5
+@@ -110,7 +110,7 @@ function restart() {
+ 	start
+ }
+ 
+-function reload() {
++reload() {
+ 	pid=`pidof $prog`
+ 	if [ -z $pid ]; then
+ 		echo $"$prog not running"
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/using-pkg-config-to-detect-libxml-2.0-and-krb5.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/using-pkg-config-to-detect-libxml-2.0-and-krb5.patch
new file mode 100644
index 0000000..93b76bd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/using-pkg-config-to-detect-libxml-2.0-and-krb5.patch
@@ -0,0 +1,39 @@
+using pkg-config to detect libxml-2.0 and krb5
+
+Upstream-status: Pending
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ configure.in |   16 ++++++++++++++--
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 392d122..a3028aa 100644
+--- a/configure.in
++++ b/configure.in
+@@ -162,8 +162,20 @@ if test x$enable_sloppy_mount = xyes; then
+ fi
+ 
+ # LDAP SASL auth needs libxml and Kerberos
+-AF_CHECK_LIBXML()
+-AF_CHECK_KRB5()
++PKG_CHECK_MODULES(XML, [libxml-2.0],HAVE_LIBXML=1,HAVE_LIBXML=0)
++AC_SUBST([HAVE_LIBXML])
++XML_FLAGS=$XML_CFLAGS
++
++PKG_CHECK_MODULES(KRB5, [krb5],HAVE_KRB5=1,HAVE_KRB5=0)
++AC_SUBST([HAVE_KRB5])
++if test "x$HAVE_KRB5" = "x1"; then
++  SAVE_CFLAGS=$CFLAGS
++  SAVE_LIBS=$LIBS
++  CFLAGS="$CFLAGS $KRB5_FLAGS"
++  LIBS="$LIBS $KRB5_LIBS"
++
++  AC_CHECK_FUNCS([krb5_principal_get_realm])
++fi
+ 
+ AC_SEARCH_LIBS([versionsort],[])
+ if test "$ac_cv_search_versionsort" = "no"; then
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.1.bb
new file mode 100644
index 0000000..0f4c247
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.1.bb
@@ -0,0 +1,72 @@
+SUMMARY = "Kernel based automounter for linux"
+SECTION = "utils"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+DEPENDS += "libtirpc flex-native bison-native"
+
+inherit autotools-brokensep systemd
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/daemons/autofs/v5/autofs-${PV}.tar.gz \
+           file://autofs-5.0.7-include-linux-nfs.h-directly-in-rpc_sub.patch \
+           file://no-bash.patch \
+           file://cross.patch \
+           file://libtirpc.patch \
+           file://libtirpc-name-clash-backout.patch \
+           file://autofs-5.0.7-do-not-check-for-modprobe.patch \
+           file://fix_disable_ldap.patch \
+           file://autofs-5.0.7-fix-lib-deps.patch \
+           file://add-the-needed-stdarg.h.patch \
+           file://using-pkg-config-to-detect-libxml-2.0-and-krb5.patch \
+           file://force-STRIP-to-emtpy.patch \
+           file://remove-bashism.patch \
+           file://fix-the-YACC-rule-to-fix-a-building-failure.patch \
+"
+
+SRC_URI[md5sum] = "e143df66b614b8cdb1ff533735f8e12d"
+SRC_URI[sha256sum] = "795419383b120d15699ab3b89ea0f3d029f6fb28405a83982d305c4b7b61130f"
+
+inherit update-rc.d pkgconfig
+
+INITSCRIPT_NAME = "autofs"
+INITSCRIPT_PARAMS = "defaults"
+
+# FIXME: modules/Makefile has crappy rules that don't obey LDFLAGS
+CFLAGS += "${LDFLAGS}"
+
+PACKAGECONFIG[systemd] = "--with-systemd=${systemd_unitdir}/system,--without-systemd,systemd"
+
+PACKAGECONFIG ?= "${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+
+EXTRA_OEMAKE = "DONTSTRIP=1"
+EXTRA_OECONF += "--disable-mount-locking \
+                --enable-ignore-busy --with-openldap=no \
+                --with-sasl=no --with-libtirpc=yes \
+                --with-path=${STAGING_BINDIR_NATIVE} \
+"
+CACHED_CONFIGUREVARS = "ac_cv_path_RANLIB=${RANLIB} \
+                        ac_cv_path_RPCGEN=rpcgen \
+"
+
+do_configure_prepend () {
+    sed -e "s:filagdir:flagdir:" -i configure.in
+    if [ ! -e acinclude.m4 ]; then
+        cp aclocal.m4 acinclude.m4
+    fi
+}
+
+do_install_append () {
+    if [ -d ${D}/run ]; then
+	rmdir ${D}/run
+    fi
+    if [ -d ${D}${localstatedir}/run ]; then
+	rmdir ${D}${localstatedir}/run
+    fi
+}
+
+INSANE_SKIP_${PN} = "dev-so"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "autofs.service"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/Fix-hardcoded-libdir.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/Fix-hardcoded-libdir.patch
new file mode 100644
index 0000000..3fa8431
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/Fix-hardcoded-libdir.patch
@@ -0,0 +1,25 @@
+Fix hardcoded libdir.
+
+Upstream-Status: Pending 
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ plugins/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/plugins/Makefile.am b/plugins/Makefile.am
+index b00915f..25262a1 100644
+--- a/plugins/Makefile.am
++++ b/plugins/Makefile.am
+@@ -62,7 +62,7 @@ plugindir = @plugindir@
+ 
+ common_sources = plugin_common.c plugin_common.h
+ 
+-sasldir = $(prefix)/lib/sasl2
++sasldir = $(libdir)/sasl2
+ sasl_LTLIBRARIES = @SASL_MECHS@
+ EXTRA_LTLIBRARIES = libplain.la libanonymous.la libkerberos4.la libcrammd5.la \
+ 	libgs2.la libgssapiv2.la libdigestmd5.la liblogin.la libsrp.la libotp.la \
+-- 
+1.7.4.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch
new file mode 100644
index 0000000..6407721
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch
@@ -0,0 +1,46 @@
+Avoid to call AC_TRY_RUN
+
+Upstream-Status: Inappropriate [configuration]
+
+Avoid to call AC_TRY_RUN to check if GSSAPI libraries support SPNEGO
+on cross-compile environment by definition AC_ARG_ENABLE enable-spnego
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ cmulocal/sasl2.m4 |   13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/cmulocal/sasl2.m4 b/cmulocal/sasl2.m4
+index 3c2841a..a5ecf81 100644
+--- a/cmulocal/sasl2.m4
++++ b/cmulocal/sasl2.m4
+@@ -281,6 +281,17 @@ if test "$gssapi" != no; then
+ 
+   cmu_save_LIBS="$LIBS"
+   LIBS="$LIBS $GSSAPIBASE_LIBS"
++  AC_ARG_ENABLE([spnego],
++              [AC_HELP_STRING([--enable-spnego=<DIR>],
++                              [enable SPNEGO support in GSSAPI libraries [no]])],
++              [spnego=$enableval],
++              [spnego=no])
++
++  if test "$spnego" = no; then
++       echo "no"
++  elif test "$spnego" = yes; then
++       AC_DEFINE(HAVE_GSS_SPNEGO,,[Define if your GSSAPI implementation supports SPNEGO])
++  else
+   AC_MSG_CHECKING([for SPNEGO support in GSSAPI libraries])
+   AC_TRY_RUN([
+ #ifdef HAVE_GSSAPI_H
+@@ -308,7 +319,7 @@ int main(void)
+ 	AC_MSG_RESULT(yes) ],
+ 	AC_MSG_RESULT(no))
+   LIBS="$cmu_save_LIBS"
+-
++   fi
+ else
+   AC_MSG_RESULT([disabled])
+ fi
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/debian_patches_0009_sasldb_al.diff b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/debian_patches_0009_sasldb_al.diff
new file mode 100644
index 0000000..8eff5a8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/debian_patches_0009_sasldb_al.diff
@@ -0,0 +1,14 @@
+Author: Fabian Fagerholm <fabbe@debian.org>
+Description: Fix linking with libsasldb.a when saslauthd is built with sasldb
+support.
+--- a/saslauthd/configure.in
++++ b/saslauthd/configure.in
+@@ -77,7 +77,7 @@ if test "$authsasldb" != no; then
+   AC_DEFINE(AUTH_SASLDB,[],[Include SASLdb Support])
+   SASL_DB_PATH_CHECK()
+   SASL_DB_CHECK()
+-  SASL_DB_LIB="$SASL_DB_LIB ../sasldb/.libs/libsasldb.al"
++  SASL_DB_LIB="$SASL_DB_LIB ../sasldb/.libs/libsasldb.a"
+ fi
+ 
+ AC_ARG_ENABLE(httpform, [  --enable-httpform       enable HTTP form authentication [[no]] ],
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/debian_patches_0014_avoid_pic_overwrite.diff b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/debian_patches_0014_avoid_pic_overwrite.diff
new file mode 100644
index 0000000..2e5b175
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/debian_patches_0014_avoid_pic_overwrite.diff
@@ -0,0 +1,27 @@
+Author: Fabian Fagerholm <fabbe@debian.org>
+Description: This patch makes sure the non-PIC version of libsasldb.a, which
+is created out of non-PIC objects, is not going to overwrite the PIC version,
+which is created out of PIC objects. The PIC version is placed in .libs, and
+the non-PIC version in the current directory.  This ensures that both non-PIC
+and PIC versions are available in the correct locations.
+--- a/lib/Makefile.am
++++ b/lib/Makefile.am
+@@ -78,7 +78,7 @@ endif
+ 
+ libsasl2.a: libsasl2.la $(SASL_STATIC_OBJS)
+ 	@echo adding static plugins and dependencies
+-	$(AR) cru .libs/$@ $(SASL_STATIC_OBJS)
++	$(AR) cru $@ $(SASL_STATIC_OBJS)
+ 	@for i in ./libsasl2.la ../sasldb/libsasldb.la ../plugins/lib*.la; do \
+ 	if test ! -f $$i; then continue; fi; . $$i; \
+ 	for j in $$dependency_libs foo; do \
+--- a/sasldb/Makefile.am
++++ b/sasldb/Makefile.am
+@@ -63,6 +63,6 @@ libsasldb_a_SOURCES =
+ EXTRA_libsasldb_a_SOURCES =
+ 
+ libsasldb.a: libsasldb.la $(SASL_DB_BACKEND_STATIC)
+-	$(AR) cru .libs/$@ $(SASL_DB_BACKEND_STATIC)
++	$(AR) cru $@ $(SASL_DB_BACKEND_STATIC)
+ 
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/sasl.h-include-stddef.h-for-size_t-on-NetBSD.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/sasl.h-include-stddef.h-for-size_t-on-NetBSD.patch
new file mode 100644
index 0000000..ecbab84
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/sasl.h-include-stddef.h-for-size_t-on-NetBSD.patch
@@ -0,0 +1,31 @@
+From 92d72789c811b0d55f624a8bac5ccc4412f5996e Mon Sep 17 00:00:00 2001
+From: Ken Murchison <murch@andrew.cmu.edu>
+Date: Thu, 20 Dec 2012 18:14:50 -0500
+Subject: [PATCH] sasl.h: #include <stddef.h> for size_t on NetBSD
+
+This patch was imported from git://git.cyrusimap.org/cyrus-sasl
+commit 67a188693796a14e3a76ac603104807fbbfddfc4
+
+Upstream-Status: Backport
+
+Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
+---
+ include/sasl.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/include/sasl.h b/include/sasl.h
+index fef4d51..8b8a63f 100755
+--- a/include/sasl.h
++++ b/include/sasl.h
+@@ -121,6 +121,8 @@
+ #ifndef SASL_H
+ #define SASL_H 1
+ 
++#include <stddef.h>  /* For size_t */
++
+ /* Keep in sync with win32/common.mak */
+ #define SASL_VERSION_MAJOR 2
+ #define SASL_VERSION_MINOR 1
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/saslauthd.conf b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/saslauthd.conf
new file mode 100644
index 0000000..a91a9d3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/saslauthd.conf
@@ -0,0 +1,11 @@
+# Directory in which to place saslauthd's listening socket, pid file, and so
+# on.  This directory must already exist.
+SOCKETDIR=@LOCALSTATEDIR@/run/saslauthd
+
+# Mechanism to use when checking passwords.  Run "saslauthd -v" to get a list
+# of which mechanism your installation was compiled with the ablity to use.
+MECH=pam
+
+# Additional flags to pass to saslauthd on the command line.  See saslauthd(8)
+# for the list of accepted flags.
+FLAGS=
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/saslauthd.service b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/saslauthd.service
new file mode 100644
index 0000000..96dbae3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/saslauthd.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=SASL authentication daemon.
+After=syslog.target
+
+[Service]
+Type=forking
+PIDFile=@LOCALSTATEDIR@/run/saslauthd/saslauthd.pid
+EnvironmentFile=@SYSCONFDIR@/default/saslauthd
+ExecStart=@SBINDIR@/saslauthd -m $SOCKETDIR -a $MECH $FLAGS
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl_2.1.26.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl_2.1.26.bb
new file mode 100644
index 0000000..5da3d96
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl_2.1.26.bb
@@ -0,0 +1,95 @@
+SUMMARY = "Generic client/server library for SASL authentication"
+SECTION = "libs"
+DEPENDS = "openssl virtual/db"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3f55e0974e3d6db00ca6f57f2d206396"
+
+SRC_URI = "ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-${PV}.tar.gz \
+	   file://avoid-to-call-AC_TRY_RUN.patch \
+	   file://Fix-hardcoded-libdir.patch \
+	   file://debian_patches_0009_sasldb_al.diff \
+	   file://debian_patches_0014_avoid_pic_overwrite.diff \
+	   file://sasl.h-include-stddef.h-for-size_t-on-NetBSD.patch \
+	   file://saslauthd.service \
+	   file://saslauthd.conf \
+	   "
+
+inherit autotools-brokensep pkgconfig useradd systemd
+
+EXTRA_OECONF += "--with-dblib=berkeley \
+                 --with-bdb-libdir=${STAGING_LIBDIR} \
+                 --with-bdb-incdir=${STAGING_INCDIR} \
+                 --with-bdb=db-5.3 \
+                 --with-plugindir="${libdir}/sasl2" \
+                 andrew_cv_runpath_switch=none"
+
+PACKAGECONFIG ??= "ntlm \
+        ${@base_contains('DISTRO_FEATURES', 'ldap', 'ldap', '', d)} \
+        ${@base_contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+        "
+PACKAGECONFIG[gssapi] = "--enable-gssapi=yes,--enable-gssapi=no,krb5,"
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam,"
+PACKAGECONFIG[opie] = "--with-opie,--without-opie,opie,"
+PACKAGECONFIG[des] = "--with-des,--without-des,,"
+PACKAGECONFIG[ldap] = "--with-ldap=${STAGING_LIBDIR} --enable-ldapdb,--without-ldap --disable-ldapdb,openldap,"
+PACKAGECONFIG[ntlm] = "--with-ntlm,--without-ntlm,,"
+
+CFLAGS += "-fPIC"
+
+do_configure_prepend () {
+    rm -f acinclude.m4 config/libtool.m4
+
+    # make it be able to work with db 5.0 version
+    local sed_files="sasldb/db_berkeley.c utils/dbconverter-2.c"
+    for sed_file in $sed_files; do
+        sed -i 's#DB_VERSION_MAJOR == 4.*#(&) || DB_VERSION_MAJOR == 5#' $sed_file
+    done
+}
+
+do_compile_prepend () {
+    cd include
+    ${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} makemd5.c -o makemd5
+    touch makemd5.o makemd5.lo makemd5
+    cd ..
+}
+
+do_install_append() {
+    if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/saslauthd.service ${D}${systemd_unitdir}/system
+
+        sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/saslauthd.service
+        sed -i -e 's#@LOCALSTATEDIR@#${localstatedir}#g' ${D}${systemd_unitdir}/system/saslauthd.service
+        sed -i -e 's#@SYSCONFDIR@#${sysconfdir}#g' ${D}${systemd_unitdir}/system/saslauthd.service
+
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        echo "d /run/saslauthd/ - - - -" > ${D}${sysconfdir}/tmpfiles.d/saslauthd.conf
+
+        install -d ${D}${sysconfdir}/default/
+        install -m 0644 ${WORKDIR}/saslauthd.conf ${D}${sysconfdir}/default/saslauthd
+        sed -i -e 's#@LOCALSTATEDIR@#${localstatedir}#g' ${D}${sysconfdir}/default/saslauthd
+    fi
+}
+
+USERADD_PACKAGES = "${PN}-bin"
+USERADD_PARAM_${PN}-bin = "--system --home=/var/spool/mail -g mail cyrus"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "saslauthd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+SRC_URI[md5sum] = "a7f4e5e559a0e37b3ffc438c9456e425"
+SRC_URI[sha256sum] = "8fbc5136512b59bb793657f36fadda6359cae3b08f01fd16b3d406f1345b7bc3"
+
+PACKAGES =+ "${PN}-bin"
+
+FILES_${PN}           += "${libdir}/sasl2/*.so*"
+FILES_${PN}-bin       += "${bindir} \
+                          ${sysconfdir}/default/saslauthd \
+                          ${systemd_unitdir}/system/saslauthd.service \
+                          ${sysconfdir}/tmpfiles.d/saslauthd.conf"
+FILES_${PN}-dev       += "${libdir}/sasl2/*.la"
+FILES_${PN}-dbg       += "${libdir}/sasl2/.debug"
+FILES_${PN}-staticdev += "${libdir}/sasl2/*.a"
+
+INSANE_SKIP_${PN} += "dev-so"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd/dnrd.conf.sample b/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd/dnrd.conf.sample
new file mode 100644
index 0000000..ec05841
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd/dnrd.conf.sample
@@ -0,0 +1,21 @@
+# options to dnrd
+
+# example: two default dns servers and dns servers for exampledomain.com. The
+# latter are load balanced (-b)
+#
+#
+
+# DNRD_OPTS="
+# -s XXX.XXX.XX.XXX
+# -s XXX.XXX.XX.XXX
+# -b
+# -s XXX.XXX.XX.XXX:exampledomain.com
+# -s XXX.XXX.XX.XXX:exampledomain.com"
+
+# example: dnrd user
+#
+
+# DNRD_USER="user"
+#
+
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd/dnrd.init b/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd/dnrd.init
new file mode 100644
index 0000000..2fe583f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd/dnrd.init
@@ -0,0 +1,94 @@
+#!/bin/sh
+#
+# Startup script for dnrd
+#
+#       Copyright 2008, Rakesh Pandit <rakesh.pandit@gmail.com>
+#
+#       This source is free software; you can redistribute it and/or modify
+#       it under the terms of the GNU General Public License as published by
+#       the Free Software Foundation; either version 2, or (at your option)
+#       any later version.
+
+#       This source is distributed in the hope that it will be useful,
+#       but WITHOUT ANY WARRANTY; without even the implied warranty of
+#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#       GNU General Public License for more details.
+
+#       You should have received a copy of the GNU General Public License
+#       along with this program; if not, write to the Free Software
+#       Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# chkconfig: - 85 15
+# description: dnrd is a proxying nameserver. It forwards DNS queries to the
+# appropriate nameserver, but can also act as the primary nameserver for
+# a subnet behind a firewall. It also has features such as caching DNS
+# requests, support for DNS servers, cache poisoning prevention, TCP
+# support, etc..
+
+# processname: dnrd
+# pidfile: /var/run/dnrd.pid
+# config: /etc/dnrd/dnrd.conf
+
+# Provides:          dnrd
+# Required-Start:
+# Should-Start:
+# Required-Stop:
+# Default-Stop:      0 1 2 6
+# Short-Description: Start dnrd daemon
+# Description:       Domain Name Relay Daemon
+# END INIT INFO
+
+exe=/usr/sbin/dnrd
+pfile=/etc/passwd
+
+# Source function library.
+. /etc/init.d/functions
+
+# Source conf file
+. /etc/dnrd/dnrd.conf
+
+[ -x $exe ] || exit 1
+[ -r "/etc/dnrd/dnrd.conf" ] || exit 1
+if [ $DNRD_USER ]
+then
+         grep "^${LOGIN}:" $pfile >/dev/null 2>&1
+         if [ $? -eq 0 ];then
+                 echo "$DNRD_USER specified in /etc/dnrd/dnrd.conf does not exist!"
+         fi
+else
+        echo "DNRD_USER not set at /etc/dnrd/dnrd.conf!"
+        exit 1
+fi
+
+case "$1" in
+  start)
+        echo -n "Starting  dnrd: "
+        daemon  dnrd $DNRD_OPTS -u $DNRD_USER
+        echo
+        touch /var/lock/subsys/dnrd
+        ;;
+  stop)
+        echo -n "Shutting down dnrd: "
+        killproc dnrd
+        echo
+        rm -f /var/lock/subsys/dnrd
+        rm -f /var/run/dnrd.pid
+        ;;
+  status)
+        status dnrd
+        ;;
+  restart)
+        $0 stop
+        $0 start
+        ;;
+  reload)
+        echo -n "Reloading dnrd: "
+        killproc dnrd -HUP
+        echo
+        ;;
+  *)
+        echo "Usage: $0 {start|stop|restart|reload|status}"
+        exit 1
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd/dnrd.service b/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd/dnrd.service
new file mode 100644
index 0000000..9c9fa66
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd/dnrd.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Domain Name Relay Daemon
+After=network.target
+
+[Service]
+Type=forking
+PIDFile=/var/run/dnrd.pid
+EnvironmentFile=/etc/dnrd/dnrd.conf
+ExecStart=/usr/sbin/dnrd $DNRD_OPTS -u $DNRD_USER
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd_2.20.3.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd_2.20.3.bb
new file mode 100644
index 0000000..8769e52
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/dnrd/dnrd_2.20.3.bb
@@ -0,0 +1,41 @@
+SUMMARY = "A caching, forwarding DNS proxy server"
+DESCRIPTION = "\
+dnrd is a proxying nameserver. It forwards DNS queries to the appropriate \
+nameserver, but can also act as the primary nameserver for a subnet behind \
+a firewall. It also has features such as caching DNS requests, support for \
+DNS servers, cache poisoning prevention, TCP support, etc.."
+HOMEPAGE = "http://dnrd.sourceforge.net/"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0be67017f1c770313ad7b40e18d568f1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz \
+           file://dnrd.service \
+           file://dnrd.conf.sample \
+           file://dnrd.init"
+SRC_URI[md5sum] = "41c9b070aae8ed403fc8c2aac7ab157c"
+SRC_URI[sha256sum] = "aa46e7f8736b88c1d752cf606b3990041221ce91d014e955c6b02eb2167db015"
+
+PNBLACKLIST[dnrd] ?= "BROKEN: dnrd-2.20.3-r0 do_package: QA Issue: dnrd: Files/directories were installed but not shipped in any package:"
+
+SYSTEMD_SERVICE_${PN} = "dnrd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+inherit autotools
+inherit ${@base_contains('VIRTUAL-RUNTIME_init_manager','systemd','systemd','', d)}
+
+do_install() {
+    oe_runmake install DESTDIR=${D} INSTALL="install -p"
+
+    sed -i -e 's:/etc/rc.d/init.d/functions:/etc/init.d/functions:g' \
+        ${WORKDIR}/dnrd.init
+    install -d -m 0755 ${D}${sysconfdir}/init.d
+    install -d -m 0755 ${D}${sysconfdir}/dnrd
+    install -p -m 0644 ${WORKDIR}/dnrd.conf.sample ${D}${sysconfdir}/dnrd/dnrd.conf
+    install -p -m 0755 ${WORKDIR}/dnrd.init ${D}${sysconfdir}/init.d/dnrd
+
+    if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d -m 0755 ${D}${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/dnrd.service ${D}${systemd_unitdir}/system
+    fi
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/99_iscsi-initiator-utils b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/99_iscsi-initiator-utils
new file mode 100644
index 0000000..42fdd60
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/99_iscsi-initiator-utils
@@ -0,0 +1,2 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d root root 0755 /var/lock/iscsi none
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/initd.debian b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/initd.debian
new file mode 100644
index 0000000..99a7638
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/initd.debian
@@ -0,0 +1,119 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Starts and stops the iSCSI initiator services and logins to default targets
+### END INIT INFO
+#set -x
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/iscsid
+ADM=/usr/sbin/iscsiadm
+PIDFILE=/var/run/iscsid.pid
+
+[ -x "$DAEMON" ] || exit 0
+
+if [ ! -d /sys/class/ ]; then
+  echo "Failure:" "iSCSI requires a mounted sysfs, not started."
+  exit 1
+fi
+
+nodestartup_re='s/^node\.conn\[0]\.startup[ 	]*=[ 	]*//p'
+
+RETVAL=0
+
+start() {
+	echo "Starting iSCSI initiator service" "iscsid"
+	modprobe -q iscsi_tcp 2>/dev/null || :
+	modprobe -q ib_iser 2>/dev/null || :
+	if [ ! -f /etc/iscsi/initiatorname.iscsi ]; then
+		INITIATORNAME=$(iscsi-iname)
+		cat >/etc/iscsi/initiatorname.iscsi <<EOF
+## DO NOT EDIT OR REMOVE THIS FILE!
+## If you remove this file, the iSCSI daemon will not start.
+## If you change the InitiatorName, existing access control lists
+## may reject this initiator.  The InitiatorName must be unique
+## for each iSCSI initiator.  Do NOT duplicate iSCSI InitiatorNames.
+InitiatorName=$INITIATORNAME
+EOF
+	fi
+	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON
+	RETVAL=$?
+	starttargets
+}
+
+starttargets() {
+	echo "Setting up iSCSI targets"
+	$ADM -m node --loginall=automatic
+}
+
+stoptargets() {
+	echo "Disconnecting iSCSI targets"
+	sync
+	$ADM -m node --logoutall=all
+	RETVAL=$?
+	#if RETVAL is 21, means no active sessions, consider ok
+	if [ "$RETVAL" = "21" ]; then
+		RETVAL=0
+	fi
+}
+
+stop() {
+	stoptargets
+	if [ $RETVAL -ne 0 ]; then
+		echo "Failure:" "Could not stop all targets, try again later"
+		return $RETVAL
+	fi
+
+	echo "Stopping iSCSI initiator service"
+	start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
+	rm -f $PIDFILE
+	status=0
+	modprobe -r ib_iser 2>/dev/null
+	if [ "$?" -ne "0" -a "$?" -ne "1" ]; then
+		status=1
+	fi
+	modprobe -r iscsi_tcp 2>/dev/null
+	if [ "$?" -ne "0" -a "$?" -ne "1" ]; then
+		status=1
+	fi
+}
+
+restart() {
+	stop
+	if [ $RETVAL -ne 0 ]; then
+		echo "Failure:" "Stopping iSCSI initiator service failed, not starting"
+		return $RETVAL
+	fi
+	start
+}
+
+restarttargets() {
+	stoptargets
+	if [ $RETVAL -ne 0 ]; then
+		echo "Failure:" "Could not stop all targets, try again later"
+		return $RETVAL
+	fi
+	starttargets
+}
+
+status() {
+	#XXX FIXME: what to do here?
+	#status iscsid
+	# list active sessions
+	echo Current active iSCSI sessions:
+	$ADM -m session
+}
+
+case "$1" in
+	start|starttargets|stop|stoptargets|restart|restarttargets|status)
+		$1
+		;;
+	*)
+		echo "Usage: $0 {start|stop|restart|status}"
+		exit 1
+		;;
+esac
+exit $RETVAL
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator
new file mode 100644
index 0000000..7fa49a2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator
@@ -0,0 +1,4 @@
+# default command line settings for open-iscsi's iscsid
+
+OPTS_ISCSID=""
+OPTS_ISCSIADM=""
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator-targets.service b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator-targets.service
new file mode 100644
index 0000000..564b2d2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator-targets.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Open-iSCSI initiator (i.e. client) target bindings
+After=iscsi-initiator.service
+Requires=iscsi-initiator.service
+
+[Service]
+Type=oneshot
+EnvironmentFile=/etc/default/iscsi-initiator
+ExecStart=/usr/sbin/iscsiadm -m node --loginall=automatic $OPTS_ISCSIADM
+ExecStop=/usr/sbin/iscsiadm -m node --logoutall=all $OPTS_ISCSIADM
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator-utils-dont-use-static.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator-utils-dont-use-static.patch
new file mode 100644
index 0000000..ce48e2b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator-utils-dont-use-static.patch
@@ -0,0 +1,21 @@
+iscsi-initiator-utils not to use static
+
+Upstream-status: Backport
+This patch is from fedora17.
+
+Signed-off-by: Yao Zhao <yao.zhao@windriver.com>
+Signed-off-by: Vu Tran <vu.tran@windriver.com>
+
+diff --git a/usr/Makefile b/usr/Makefile
+index 673b7f1..fd14a10 100644
+--- a/usr/Makefile
++++ b/usr/Makefile
+@@ -61,7 +61,7 @@ iscsiadm: $(ISCSI_LIB_SRCS) $(DISCOVERY_SRCS) iscsiadm.o session_mgmt.o
+ 
+ iscsistart: $(ISCSI_LIB_SRCS) $(INITIATOR_SRCS) $(FW_BOOT_SRCS) \
+ 		iscsistart.o statics.o
+-	$(CC) $(CFLAGS) -static $^ -o $@
++	$(CC) $(CFLAGS) $^ -o $@
+ clean:
+ 	rm -f *.o $(PROGRAMS) .depend $(LIBSYS)
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator-utils-use-var-for-config.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator-utils-use-var-for-config.patch
new file mode 100644
index 0000000..50227a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator-utils-use-var-for-config.patch
@@ -0,0 +1,240 @@
+iscsi-initiator-utils to use var for config
+
+Upstream-status: Backport
+This patch is from fedora.
+
+Use /var/lib/iscsi/ instead of /etc/iscsi/ for holding
+state files.
+
+Signed-off-by: Yao Zhao <yao.zhao@windriver.com>
+Signed-off-by: Vu Tran <vu.tran@windriver.com>
+
+diff --git a/README b/README
+index 7364b2d..5e8bff8 100644
+--- a/README
++++ b/README
+@@ -164,10 +164,10 @@ available on all Linux installations.
+ 
+ The database contains two tables:
+ 
+-- Discovery table (/etc/iscsi/send_targets);
+-- Node table (/etc/iscsi/nodes).
++- Discovery table (/var/lib/iscsi/send_targets);
++- Node table (/var/lib/iscsi/nodes).
+ 
+-The regular place for iSCSI database files: /etc/iscsi/nodes
++The regular place for iSCSI database files: /var/lib/iscsi/nodes
+ 
+ The iscsiadm utility is a command-line tool to manage (update, delete,
+ insert, query) the persistent database.
+@@ -444,7 +444,7 @@ a scsi_host per HBA port).
+ To manage both types of initiator stacks, iscsiadm uses the interface (iface)
+ structure. For each HBA port or for software iscsi for each network
+ device (ethX) or NIC, that you wish to bind sessions to you must create
+-a iface config /etc/iscsi/ifaces.
++a iface config /var/lib/iscsi/ifaces.
+ 
+ Prep:
+ 
+@@ -478,29 +478,29 @@ Running:
+ iface0 qla4xxx,00:c0:dd:08:63:e8,20.15.0.7,default,iqn.2005-06.com.redhat:madmax
+ iface1 qla4xxx,00:c0:dd:08:63:ea,20.15.0.9,default,iqn.2005-06.com.redhat:madmax
+ 
+-Will report iface configurations that are setup in /etc/iscsi/ifaces.
++Will report iface configurations that are setup in /var/lib/iscsi/ifaces.
+ The format is:
+ 
+ iface_name transport_name,hwaddress,ipaddress,net_ifacename,initiatorname
+ 
+ For software iscsi, you can create the iface configs by hand, but it is
+ reccomended that you use iscsiadm's iface mode. There is a iface.example in
+-/etc/iscsi/ifaces which can be used as a template for the daring.
++/var/lib/iscsi/ifaces which can be used as a template for the daring.
+ 
+ For each network object you wish to bind a session to you must create
+-a seperate iface config in /etc/iscsi/ifaces and each iface config file
++a seperate iface config in /var/lib/iscsi/ifaces and each iface config file
+ must have a unique name which is less than or equal to 64 characters.
+ 
+ Example:
+ 
+ If you have NIC1 with MAC address 00:0F:1F:92:6B:BF and NIC2 with
+ MAC address 00:C0:DD:08:63:E7 and you wanted to do software iscsi over
+-TCP/IP. Then in /etc/iscsi/ifaces/iface0 you would enter:
++TCP/IP. Then in /var/lib/iscsi/ifaces/iface0 you would enter:
+ 
+ iface.transport_name = tcp
+ iface.hwaddress = 00:0F:1F:92:6B:BF
+ 
+-and in /etc/iscsi/ifaces/iface1 you would enter:
++and in /var/lib/iscsi/ifaces/iface1 you would enter:
+ 
+ iface.transport_name = tcp
+ iface.hwaddress = 00:C0:DD:08:63:E7
+@@ -550,7 +550,7 @@ cxgb3i.00:07:43:05:97:07 cxgb3i,00:07:43:05:97:07,<empty>,<empty>,<empty>
+ qla4xxx.00:0e:1e:04:8b:2e qla4xxx,00:0e:1e:04:8b:2e,<empty>,<empty>,<empty>
+ 
+ 
+-Will report iface configurations that are setup in /etc/iscsi/ifaces.
++Will report iface configurations that are setup in /var/lib/iscsi/ifaces.
+ The format is:
+ 
+ iface_name transport_name,hwaddress,ipaddress,net_ifacename,initiatorname
+@@ -636,7 +636,7 @@ need a seperate network connection to the target for discovery purposes.
+ *This will be fixed in the next version of open-iscsi*
+ 
+ For compatibility reasons, when you run iscsiadm to do discovery, it
+-will check for interfaces in /etc/iscsi/iscsi/ifaces that are using
++will check for interfaces in /var/lib/iscsi/iscsi/ifaces that are using
+ tcp for the iface.transport and it will bind the portals that are discovered
+ so that they will be logged in through those ifaces. This behavior can also
+ be overriden by passing in the interfaces you want to use. For the case
+@@ -654,7 +654,7 @@ we do not bind a session to a iface, then you can use the special iface
+ 
+ iscsiadm -m discoverydb -t st -p ip:port -I default --discover -P 1
+ 
+-And if you did not define any interfaces in /etc/iscsi/ifaces and do
++And if you did not define any interfaces in /var/lib/iscsi/ifaces and do
+ not pass anything into iscsiadm, running iscsiadm will do the default
+ behavior, where we allow the network subsystem to decide which
+ device to use.
+@@ -696,7 +696,7 @@ To now log into targets it is the same as with sofware iscsi. See section
+ 
+ 	    ./iscsiadm -m discoverydb -t st -p 192.168.1.1:3260 --discover
+ 
+-	This will search /etc/iscsi/send_targets for a record with the
++	This will search /var/lib/iscsi/send_targets for a record with the
+ 	ID [portal = 192.168.1.1:3260 and type = sendtargets. If found it
+ 	will perform discovery using the settings stored in the record.
+ 	If a record does not exist, it will be created using the iscsid.conf
+@@ -705,7 +705,7 @@ To now log into targets it is the same as with sofware iscsi. See section
+ 	The argument to -p may also be a hostname instead of an address.
+ 	    ./iscsiadm -m discoverydb -t st -p smoehost --discover
+ 
+-	For the ifaces, iscsiadm will first search /etc/iscsi/ifaces for
++	For the ifaces, iscsiadm will first search /var/lib/iscsi/ifaces for
+ 	interfaces using software iscsi. If any are found then nodes found
+ 	during discovery will be setup so that they can logged in through
+ 	those interfaces. To specify a specific iface, pass the
+@@ -761,7 +761,7 @@ To now log into targets it is the same as with sofware iscsi. See section
+ 	This command will perform discovery, but not manipulate the node DB.
+ 
+   - SendTargets iSCSI Discovery with a specific interface. If you
+-	wish to only use a subset of the interfaces in /etc/iscsi/ifaces
++	wish to only use a subset of the interfaces in /var/lib/iscsi/ifaces
+ 	then you can pass them in during discovery:
+ 
+ 	     ./iscsiadm -m discoverydb -t sendtargets -p 192.168.1.1:3260 \
+@@ -1072,8 +1072,8 @@ where targetname is the name of the target and ip_address:port is the address
+ and port of the portal. tpgt, is the portal group tag of
+ the portal, and is not used in iscsiadm commands except for static
+ record creation. And iface name is the name of the iscsi interface
+-defined in /etc/iscsi/ifaces. If no interface was defined in
+-/etc/iscsi/ifaces or passed in, the default behavior is used.
++defined in /var/lib/iscsi/ifaces. If no interface was defined in
++/var/lib/iscsi/ifaces or passed in, the default behavior is used.
+ Default here is iscsi_tcp/tcp to be used over which ever NIC the
+ network layer decides is best.
+ 
+@@ -1188,7 +1188,7 @@ If set, iscsid will perform discovery to the address every
+ discovery.isns.discoveryd_poll_inval or
+ discovery.sendtargets.discoveryd_poll_inval seconds,
+ and it will log into any portals found from the discovery source using
+-the ifaces in /etc/iscsi/ifaces.
++the ifaces in /var/lib/iscsi/ifaces.
+ 
+ Note that for iSNS the poll_interval does not have to be set. If not set,
+ iscsid will only perform rediscovery when it gets a SCN from the server.
+diff --git a/doc/iscsiadm.8 b/doc/iscsiadm.8
+index 7c209f6..e94cca0 100644
+--- a/doc/iscsiadm.8
++++ b/doc/iscsiadm.8
+@@ -89,7 +89,7 @@ This option is only valid for ping submode.
+ .TP
+ \fB\-I\fR, \fB\-\-interface=\fI[iface]\fR
+ The interface argument specifies the iSCSI interface to use for the operation.
+-iSCSI interfaces (iface) are defined in /etc/iscsi/ifaces. For hardware
++iSCSI interfaces (iface) are defined in /var/lib/iscsi/ifaces. For hardware
+ iSCSI (qla4xxx) the iface config must have the hardware address
+ (iface.hwaddress = port's MAC address)
+ and the driver/transport_name (iface.transport_name). The iface's name is
+@@ -166,7 +166,7 @@ If no other options are specified: for \fIdiscoverydb\fR and \fInode\fR, all
+ of their respective records are displayed; for \fIsession\fR, all active
+ sessions and connections are displayed; for \fIfw\fR, all boot firmware
+ values are displayed; for \fIhost\fR, all iSCSI hosts are displayed; and
+-for \fIiface\fR, all ifaces setup in /etc/iscsi/ifaces are displayed.
++for \fIiface\fR, all ifaces setup in /var/lib/iscsi/ifaces are displayed.
+ 
+ .TP
+ \fB\-n\fR, \fB\-\-name=\fIname\fR
+@@ -535,10 +535,10 @@ The configuration file read by \fBiscsid\fR and \fBiscsiadm\fR on startup.
+ The file containing the iSCSI InitiatorName and InitiatorAlias read by
+ \fBiscsid\fR and \fBiscsiadm\fR on startup.
+ .TP
+-/etc/iscsi/nodes/
++/var/lib/iscsi/nodes/
+ This directory contains the nodes with their targets.
+ .TP
+-/etc/iscsi/send_targets
++/var/lib/iscsi/send_targets
+ This directory contains the portals.
+ 
+ .SH "SEE ALSO"
+diff --git a/usr/idbm.c b/usr/idbm.c
+index 4d30aa9..316e54f 100644
+--- a/usr/idbm.c
++++ b/usr/idbm.c
+@@ -2468,9 +2468,9 @@ free_info:
+ int idbm_init(idbm_get_config_file_fn *fn)
+ {
+ 	/* make sure root db dir is there */
+-	if (access(ISCSI_CONFIG_ROOT, F_OK) != 0) {
+-		if (mkdir(ISCSI_CONFIG_ROOT, 0660) != 0) {
+-			log_error("Could not make %s %d\n", ISCSI_CONFIG_ROOT,
++	if (access(ISCSIVAR, F_OK) != 0) {
++		if (mkdir(ISCSIVAR, 0660) != 0) {
++			log_error("Could not make %s %d\n", ISCSIVAR,
+ 				   errno);
+ 			return errno;
+ 		}
+diff --git a/usr/idbm.h b/usr/idbm.h
+index 245f046..f45e86e 100644
+--- a/usr/idbm.h
++++ b/usr/idbm.h
+@@ -28,12 +28,16 @@
+ #include "config.h"
+ #include "list.h"
+ 
+-#define NODE_CONFIG_DIR		ISCSI_CONFIG_ROOT"nodes"
+-#define SLP_CONFIG_DIR		ISCSI_CONFIG_ROOT"slp"
+-#define ISNS_CONFIG_DIR		ISCSI_CONFIG_ROOT"isns"
+-#define STATIC_CONFIG_DIR	ISCSI_CONFIG_ROOT"static"
+-#define FW_CONFIG_DIR		ISCSI_CONFIG_ROOT"fw"
+-#define ST_CONFIG_DIR		ISCSI_CONFIG_ROOT"send_targets"
++#define ISCSIVAR			"/var/lib/iscsi/"
++
++#define NODE_CONFIG_DIR    ISCSIVAR"nodes"
++#define SLP_CONFIG_DIR     ISCSIVAR"slp"
++#define ISNS_CONFIG_DIR    ISCSIVAR"isns"
++#define STATIC_CONFIG_DIR  ISCSIVAR"static"
++#define FW_CONFIG_DIR      ISCSIVAR"fw"
++#define ST_CONFIG_DIR      ISCSIVAR"send_targets"
++
++
+ #define ST_CONFIG_NAME		"st_config"
+ #define ISNS_CONFIG_NAME	"isns_config"
+ 
+diff --git a/usr/iface.h b/usr/iface.h
+index 01f7074..2c6ef72 100644
+--- a/usr/iface.h
++++ b/usr/iface.h
+@@ -20,7 +20,8 @@
+ #ifndef ISCSI_IFACE_H
+ #define ISCSI_IFACE_H
+ 
+-#define IFACE_CONFIG_DIR	ISCSI_CONFIG_ROOT"ifaces"
++#include "idbm.h"
++#define IFACE_CONFIG_DIR	ISCSIVAR"ifaces"
+ 
+ struct iface_rec;
+ struct list_head;
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator.service b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator.service
new file mode 100644
index 0000000..b139751
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/files/iscsi-initiator.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Open-iSCSI initiator (i.e. client) service
+After=syslog.target
+
+[Service]
+EnvironmentFile=/etc/default/iscsi-initiator
+ExecStartPre=/sbin/modprobe iscsi_tcp
+ExecStart=/usr/sbin/iscsid -f $OPTS_ISCSID
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb
new file mode 100644
index 0000000..03f6459
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb
@@ -0,0 +1,113 @@
+SUMMARY = "iSCSI daemon and utility programs"
+DESCRIPTION = "Open-iSCSI project is a high performance, transport \
+independent, multi-platform implementation of RFC3720. The iscsi package \
+provides the server daemon for the iSCSI protocol, as well as the utility \
+programs used to manage it. iSCSI is a protocol for distributed \
+disk access using SCSI commands sent over Internet Protocol networks."
+HOMEPAGE = "http://www.open-iscsi.org/"
+LICENSE = "GPLv2 & LGPLv2.1"
+SECTION = "net"
+DEPENDS = "openssl flex-native bison-native"
+
+LIC_FILES_CHKSUM = \
+        "file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \
+         file://utils/open-isns/COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+SRC_URI = "http://www.open-iscsi.org/bits/open-iscsi-${PV}.tar.gz \
+           file://iscsi-initiator-utils-use-var-for-config.patch \
+           file://iscsi-initiator-utils-dont-use-static.patch \
+           file://initd.debian \
+           file://99_iscsi-initiator-utils \
+           file://iscsi-initiator \
+           file://iscsi-initiator.service \
+           file://iscsi-initiator-targets.service \
+"
+SRC_URI[md5sum] = "8b8316d7c9469149a6cc6234478347f7"
+SRC_URI[sha256sum] = "7dd9f2f97da417560349a8da44ea4fcfe98bfd5ef284240a2cc4ff8e88ac7cd9"
+
+S = "${WORKDIR}/open-iscsi-${PV}"
+
+inherit update-rc.d systemd
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+do_configure () {
+    #need to support cross-compiling in open-isns only
+    (cd utils/open-isns; gnu-configize; \
+     ./configure --host=${TARGET_SYS} --build=${BUILD_SYS} --with-security=no )
+}
+
+do_compile () {
+    #make iscsistart one of PROGRAMS if install_user in do_install
+    #sed -i -e '/^PROGRAMS = /s;$; usr/iscsistart;' Makefile
+
+    #fix the ar used in open-isns
+    sed -i -e 's:ar cr :$(AR) cr :' ${S}/utils/open-isns/Makefile
+    oe_runmake user
+}
+
+do_install () {
+    #completely override the install_user as bugs in Makefile
+    #oe_runmake DESTDIR="${D}" install_user
+
+    #install necessary directories
+    install -d ${D}${sbindir} \
+        ${D}${sysconfdir}/init.d \
+        ${D}${sysconfdir}/iscsi \
+        ${D}${localstatedir}/lib/iscsi/nodes \
+        ${D}${localstatedir}/lib/iscsi/send_targets \
+        ${D}${localstatedir}/lib/iscsi/static \
+        ${D}${localstatedir}/lib/iscsi/isns \
+        ${D}${localstatedir}/lib/iscsi/slp \
+        ${D}${localstatedir}/lib/iscsi/ifaces \
+        ${D}/${mandir}/man8
+
+    install -p -m 755 ${S}/usr/iscsid ${S}/usr/iscsiadm \
+        ${S}/utils/iscsi-iname \
+        ${S}/usr/iscsistart ${D}/${sbindir}
+
+    install -p -m 644 ${S}/doc/iscsiadm.8 ${S}/doc/iscsid.8 ${D}/${mandir}/man8
+    install -p -m 644 ${S}/etc/iscsid.conf ${D}${sysconfdir}/iscsi
+    install -p -m 755 ${WORKDIR}/initd.debian ${D}${sysconfdir}/init.d/iscsid
+
+    sed -i -e "s:= /sbin/iscsid:= ${sbindir}/iscsid:" ${D}${sysconfdir}/iscsi/iscsid.conf
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        echo "d /run/${BPN}/lock - - - -" \
+                     > ${D}${sysconfdir}/tmpfiles.d/iscsi.conf
+        install -d ${D}/etc/default/
+        install -p -m 755 ${WORKDIR}/iscsi-initiator ${D}${sysconfdir}/default/
+
+        install -d ${D}${systemd_unitdir}/system/
+        install -m 0644 ${WORKDIR}/iscsi-initiator.service \
+                        ${WORKDIR}/iscsi-initiator-targets.service \
+                        ${D}${systemd_unitdir}/system/
+    else
+        install -d ${D}/etc/default/volatiles
+        install -m 0644 ${WORKDIR}/99_iscsi-initiator-utils ${D}/etc/default/volatiles
+    fi
+}
+
+pkg_postinst_${PN}() {
+    #default there is no initiatorname.iscsi installed
+    #but it is needed or iscsid will fail
+
+    #will run only when postinst on target
+    if [ "x$D" != "x" ]; then
+        exit 1
+    fi
+    if [ ! -f ${sysconfdir}/iscsi/initiatorname.iscsi ]; then
+        echo "InitiatorName=$(${sbindir}/iscsi-iname)" > \
+        ${sysconfdir}/iscsi/initiatorname.iscsi
+    fi
+
+    if [ -e /etc/init.d/populate-volatile.sh ]; then
+        /etc/init.d/populate-volatile.sh update
+    elif command -v systemd-tmpfiles >/dev/null; then
+        systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/iscsi.conf
+    fi
+}
+
+SYSTEMD_SERVICE = " iscsi-initiator.service iscsi-initiator-targets.service "
+INITSCRIPT_NAME = "iscsid"
+INITSCRIPT_PARAMS = "start 30 1 2 3 4 5 . stop 70 0 1 2 3 4 5 6 ."
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/lldpd/files/lldpd.default b/import-layers/meta-openembedded/meta-networking/recipes-daemons/lldpd/files/lldpd.default
new file mode 100644
index 0000000..3acacfd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/lldpd/files/lldpd.default
@@ -0,0 +1,2 @@
+# Uncomment to start SNMP subagent and enable CDP, SONMP and EDP protocol
+#DAEMON_ARGS="-x -c -s -e"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/lldpd/files/lldpd.init.d b/import-layers/meta-openembedded/meta-networking/recipes-daemons/lldpd/files/lldpd.init.d
new file mode 100644
index 0000000..88bf958
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/lldpd/files/lldpd.init.d
@@ -0,0 +1,128 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          lldpd
+# Required-Start:    $remote_fs $network $syslog
+# Required-Stop:     $network $remote_fs $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: LLDP daemon
+# Description:       lldpd is a 802.1AB implementation, a L2 network
+#                    discovery protocol. It also supports CDP, EDP and
+#                    various other protocols.
+### END INIT INFO
+
+# Do NOT "set -e"
+
+log_daemon_msg() {
+    echo $*
+}
+
+log_end_msg() {
+    if [ $1 -eq 0 ]; then
+        success $*
+    else
+        failure $*
+    fi
+}
+
+log_failure_msg() {
+    echo $*
+}
+
+log_success_msg() {
+    echo $*
+}
+
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="LLDP daemon"
+NAME=lldpd
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS=""
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+CHROOT=/var/run/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# LSB log_* functions
+. /etc/init.d/functions
+
+do_start()
+{
+	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+		$DAEMON_ARGS \
+		|| return 2
+}
+
+do_stop()
+{
+	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+	RETVAL="$?"
+	[ "$RETVAL" = 2 ] && return 2
+	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+	[ "$?" = 2 ] && return 2
+	rm -f $PIDFILE
+	return "$RETVAL"
+}
+
+do_reload() {
+	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+	return 0
+}
+
+case "$1" in
+  start)
+	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+	do_start
+	case "$?" in
+		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+	;;
+  stop)
+	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+	do_stop
+	case "$?" in
+		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+	;;
+  reload)
+	log_daemon_msg "Reloading $DESC" "$NAME"
+	do_reload
+	log_end_msg $?
+	;;
+  restart|force-reload)
+	log_daemon_msg "Restarting $DESC" "$NAME"
+	do_stop
+	case "$?" in
+	  0|1)
+		do_start
+		case "$?" in
+			0) log_end_msg 0 ;;
+			1) log_end_msg 1 ;; # Old process is still running
+			*) log_end_msg 1 ;; # Failed to start
+		esac
+		;;
+	  *)
+	  	# Failed to stop
+		log_end_msg 1
+		;;
+	esac
+	;;
+  status)
+	status_of_proc $DAEMON $NAME -p $PIDFILE && exit 0 || exit $?
+	;;
+  *)
+	echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload|status}" >&2
+	exit 3
+	;;
+esac
+
+:
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/lldpd/lldpd_0.9.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/lldpd/lldpd_0.9.2.bb
new file mode 100644
index 0000000..77ed09f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/lldpd/lldpd_0.9.2.bb
@@ -0,0 +1,65 @@
+SUMMARY = "A 802.1ab implementation (LLDP) to help you locate neighbors of all your equipments"
+SECTION = "net/misc"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/ISC;md5=f3b90e78ea0cffb20bf5cca7947a896d"
+
+DEPENDS = "libbsd libevent"
+
+SRC_URI = "\
+    http://media.luffy.cx/files/${BPN}/${BPN}-${PV}.tar.gz \
+    file://lldpd.init.d \
+    file://lldpd.default \
+    "
+
+SRC_URI[md5sum] = "b809887bc927fb558fd5dd64b6c0a494"
+SRC_URI[sha256sum] = "6054f29d41faf32186a22331853a299c87f4419b4332df4a564f76a139305a32"
+
+inherit autotools update-rc.d useradd systemd pkgconfig bash-completion
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system -g lldpd --shell /bin/false lldpd"
+GROUPADD_PARAM_${PN} = "--system lldpd"
+
+EXTRA_OECONF += "--without-embedded-libevent \
+                 --disable-oldies \
+                 --with-privsep-user=lldpd \
+                 --with-privsep-group=lldpd \
+                 --with-systemdsystemunitdir=${systemd_system_unitdir} \
+                 --without-sysusersdir \
+"
+
+PACKAGECONFIG ??= "cdp fdp edp sonmp lldpmed dot1 dot3"
+PACKAGECONFIG[json] = "--with-json,--without-json,jansson"
+PACKAGECONFIG[xml] = "--with-xml,--without-xml,libxm2"
+PACKAGECONFIG[snmp] = "--with-snmp,--without-snmp,net-snmp"
+PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
+PACKAGECONFIG[seccomp] = "--with-seccomp,--without-seccomp,libseccomp"
+PACKAGECONFIG[cdp] = "--enable-cdp,--disable-cdp"
+PACKAGECONFIG[fdp] = "--enable-fdp,--disable-fdp"
+PACKAGECONFIG[edp] = "--enable-edp,--disable-edp"
+PACKAGECONFIG[sonmp] = "--enable-sonmp,--disable-sonmp"
+PACKAGECONFIG[lldpmed] = "--enable-lldpmed,--disable-lldpmed"
+PACKAGECONFIG[dot1] = "--enable-dot1,--disable-dot1"
+PACKAGECONFIG[dot3] = "--enable-dot3,--disable-dot3"
+PACKAGECONFIG[custom] = "--enable-custom,--disable-custom"
+
+INITSCRIPT_NAME = "lldpd"
+INITSCRIPT_PARAMS = "defaults"
+
+SYSTEMD_SERVICE_${PN} = "lldpd.service"
+
+do_install_append() {
+    install -Dm 0755 ${WORKDIR}/lldpd.init.d ${D}${sysconfdir}/init.d/lldpd
+    install -Dm 0644 ${WORKDIR}/lldpd.default ${D}${sysconfdir}/default/lldpd
+    # Make an empty configuration file
+    touch ${D}${sysconfdir}/lldpd.conf
+}
+
+PACKAGES =+ "${PN}-zsh-completion"
+
+FILES_${PN} += "${libdir}/sysusers.d"
+RDEPENDS_${PN} += "os-release"
+
+FILES_${PN}-zsh-completion += "${datadir}/zsh/"
+# FIXME: zsh is broken in meta-oe so this cannot be enabled for now
+#RDEPENDS_${PN}-zsh-completion += "zsh"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/ncftp/ncftp/ncftp-configure-use-BUILD_CC-for-ccdv.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ncftp/ncftp/ncftp-configure-use-BUILD_CC-for-ccdv.patch
new file mode 100644
index 0000000..aa59017
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ncftp/ncftp/ncftp-configure-use-BUILD_CC-for-ccdv.patch
@@ -0,0 +1,32 @@
+From 043e1a9ec83a59671ef8c4cad679dbf781e5ef98 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Sun, 29 Nov 2015 23:37:06 -0800
+Subject: [PATCH] configure: use BUILD_CC for ccdv
+
+ccdv is intended to be invoked from Makefiles only,
+it doesn't work for the cross compiling, so compile
+it with $BUILD_CC and corresponding CFLAGS.
+
+Upstream-Status: Inappropriate [cross compile specific]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure b/configure
+index 2f0fae0..a7e9112 100755
+--- a/configure
++++ b/configure
+@@ -11286,7 +11286,7 @@ panic:
+ }	/* main */
+ /* eof ccdv.c */
+ EOF
+-		${CC-cc} $DEFS $CPPFLAGS $CFLAGS "ccdv.c" -o "ccdv" >/dev/null 2>&1
++		${BUILD_CC} $DEFS ${BUILD_CPPFLAGS} ${BUILD_CFLAGS} "ccdv.c" -o "ccdv" >/dev/null 2>&1
+ 	rm -f ccdv.c ccdv.o ccdv.c.gz.uu ccdv.c.gz
+ 	strip ./ccdv >/dev/null 2>&1
+ 	./ccdv >/dev/null 2>&1
+-- 
+2.3.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/ncftp/ncftp_3.2.5.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ncftp/ncftp_3.2.5.bb
new file mode 100644
index 0000000..893eacb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ncftp/ncftp_3.2.5.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "A sophisticated console ftp client"
+HOMEPAGE = "http://ncftp.com/"
+SECTION = "net"
+LICENSE = "ClArtistic"
+LIC_FILES_CHKSUM = "file://ncftp/cmds.c;beginline=3;endline=4;md5=9de76faeaedc4f908082e3f8142715f4"
+DEPENDS = "ncurses"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/n/${BPN}/${BPN}_${PV}.orig.tar.gz \
+           file://ncftp-configure-use-BUILD_CC-for-ccdv.patch \
+"
+SRC_URI[md5sum] = "685e45f60ac11c89442c572c28af4228"
+SRC_URI[sha256sum] = "ac111b71112382853b2835c42ebe7bd59acb7f85dd00d44b2c19fbd074a436c4"
+
+inherit autotools-brokensep pkgconfig
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[ccdv] = "--enable-ccdv,--disable-ccdv,,"
+
+do_configure() {
+    oe_runconf
+}
+do_install () {
+    install -d ${D}${bindir} ${D}${sysconfdir} ${D}${mandir}
+    oe_runmake 'prefix=${D}${prefix}' 'BINDIR=${D}${bindir}' \
+        'SYSCONFDIR=${D}${sysconfdir}' 'mandir=${D}${mandir}' \
+        install
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf/0001-plmcd-error-fix.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf/0001-plmcd-error-fix.patch
new file mode 100644
index 0000000..624cd2d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf/0001-plmcd-error-fix.patch
@@ -0,0 +1,43 @@
+From f1813af4c154fb1d3950abbdf678c3a5a67222fc Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Thu, 25 Jun 2015 11:44:27 +0900
+Subject: [PATCH] plmcd: error fix
+
+ld: cannot find -lsystemd-daemon
+collect2: error: ld returned 1 exit status
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ contrib/plmc/plmcd/Makefile.am | 2 +-
+ contrib/plmc/plmcd/Makefile.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/contrib/plmc/plmcd/Makefile.am b/contrib/plmc/plmcd/Makefile.am
+index 8d847f2..dd7913a 100644
+--- a/contrib/plmc/plmcd/Makefile.am
++++ b/contrib/plmc/plmcd/Makefile.am
+@@ -32,7 +32,7 @@ plmcd_SOURCES = \
+ plmcd_LDFLAGS = -lpthread
+ 
+ if ENABLE_SYSTEMD
+-plmcd_LDFLAGS += -lsystemd-daemon
++plmcd_LDFLAGS += -lsystemd
+ endif
+ 
+ plmcd_LDADD = \
+diff --git a/contrib/plmc/plmcd/Makefile.in b/contrib/plmc/plmcd/Makefile.in
+index 0185dc4..e40513a 100644
+--- a/contrib/plmc/plmcd/Makefile.in
++++ b/contrib/plmc/plmcd/Makefile.in
+@@ -106,7 +106,7 @@ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+ sbin_PROGRAMS = plmcd$(EXEEXT)
+-@ENABLE_SYSTEMD_TRUE@am__append_1 = -lsystemd-daemon
++@ENABLE_SYSTEMD_TRUE@am__append_1 = -lsystemd
+ subdir = plmcd
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf/install-samples-from-srcdir.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf/install-samples-from-srcdir.patch
new file mode 100644
index 0000000..016b64f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf/install-samples-from-srcdir.patch
@@ -0,0 +1,11 @@
+--- opensaf-4.5.0.orig/Makefile.am	2014-12-31 14:45:54.088797989 +0800
++++ opensaf-4.5.0/Makefile.am	2014-12-31 14:45:08.328796688 +0800
+@@ -219,7 +219,7 @@ install-data-local:
+ 	$(mkinstalldirs) $(DESTDIR)$(pkgpiddir)
+ 	$(mkinstalldirs) $(DESTDIR)$(lockdir)
+ 	$(mkinstalldirs) $(DESTDIR)$(pkglocalstatedir)
+-	cp -R samples/ $(DESTDIR)$(pkgdatadir)
++	cp -R $(srcdir)/samples/ $(DESTDIR)$(pkgdatadir)
+ 
+ install-data-hook:
+ 	@for i in $$(grep -lr -e 'xxLIBDIRxx' -e 'xxLOGDIRxx' -e 'xxCLCCLIDIRxx' $(DESTDIR)$(pkgimmxml_svcdir)/*.xml) ; do \
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_4.7.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_4.7.0.bb
new file mode 100644
index 0000000..42e883a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_4.7.0.bb
@@ -0,0 +1,66 @@
+SUMMARY = "OpenSAF is an open source implementation of the SAF AIS specification"
+DESCRIPTION = "OpenSAF is an open source project established to develop a base platform \
+middleware consistent with Service Availability Forum (SA Forum) \
+specifications, under the LGPLv2.1 license. The OpenSAF Foundation was \
+established by leading Communications and Enterprise Computing Companies to \
+facilitate the OpenSAF Project and to accelerate the adoption of the OpenSAF \
+code base in commercial products. \
+The OpenSAF project was launched in mid 2007 and has been under development by \
+an informal group of supporters of the OpenSAF initiative. The OpenSAF \
+Foundation was founded on January 22nd 2008 with Emerson Network Power, \
+Ericsson, Nokia Siemens Networks, HP and Sun Microsystems as founding members."
+HOMEPAGE = "http://www.opensaf.org"
+
+inherit autotools useradd systemd pkgconfig
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/releases/${BPN}-${PV}.tar.gz \
+           file://install-samples-from-srcdir.patch \
+           file://0001-plmcd-error-fix.patch \
+           "
+
+SRC_URI[md5sum] = "82dd2777a672140e22b8205f10aa55d3"
+SRC_URI[sha256sum] = "da9e138650b835728ad51d99268d3a31419b254c4cb4e87c6ec90bc45266d7d2"
+
+SECTION = "admin"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7"
+
+DEPENDS = "libxml2 python"
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "-f -r opensaf"
+USERADD_PARAM_${PN} =  "-r -g opensaf -d ${datadir}/opensaf/ -s ${sbindir}/nologin -c \"OpenSAF\" opensaf"
+
+SYSTEMD_SERVICE_${PN} += "opensafd.service plmcboot.service plmcd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+PACKAGECONFIG[systemd] = "--enable-systemd-daemon"
+PACKAGECONFIG[openhpi] = "--with-hpi-interface=B03 --enable-ais-plm,,openhpi"
+
+do_configure_prepend () {
+        ( cd ${S}; autoreconf -f -i -s )
+}
+
+EXTRA_OECONF += " --libdir=${libdir}/opensaf "
+EXTRA_OEMAKE += " -Wl,-rpath,${libdir}/opensaf "
+
+PKGLIBDIR="${libdir}/opensaf/opensaf"
+
+FILES_${PN} += "${localstatedir}/run"
+
+FILES_${PN}-staticdev += "${PKGLIBDIR}/*.a"
+
+RDEPENDS_${PN} += "bash python"
+
+INSANE_SKIP_${PN} = "dev-so"
+
+do_install_append() {
+    rm -fr "${D}${localstatedir}/lock"
+    rm -fr "${D}${localstatedir}/run"
+    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}"
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${B}/osaf/services/infrastructure/nid/config/opensafd.service \
+        ${D}${systemd_unitdir}/system
+    install -m 0644 ${B}/contrib/plmc/config/*.service ${D}/${systemd_unitdir}/system
+
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/aliasesdb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/aliasesdb
new file mode 100755
index 0000000..855a64f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/aliasesdb
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+ALIASESDB_STAMP=/var/lib/misc/postfix.aliasesdb-stamp
+
+make_aliasesdb() {
+        if [ "$(/usr/sbin/postconf -h alias_database)" = "hash:/etc/aliases" ]
+        then
+                # /etc/aliases.db may be used by other MTA, make sure nothing
+                # has touched it since our last newaliases call
+                [ /etc/aliases -nt /etc/aliases.db ] ||
+                        [ "$ALIASESDB_STAMP" -nt /etc/aliases.db ] ||
+                        [ "$ALIASESDB_STAMP" -ot /etc/aliases.db ] || return 0
+                /usr/bin/newaliases
+                touch -r /etc/aliases.db "$ALIASESDB_STAMP"
+        else
+                /usr/bin/newaliases
+        fi
+}
+
+make_aliasesdb
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/check_hostname.sh b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/check_hostname.sh
new file mode 100755
index 0000000..37a0dd0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/check_hostname.sh
@@ -0,0 +1,13 @@
+#! /bin/sh
+
+HOSTNAME=$(/bin/hostname)
+
+if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" -o ! -z "`echo $HOSTNAME | sed -n '/^[0-9]*\.[0-9].*/p'`" ]; then
+	# If hostname is invalid, and myhostname not existed in main.cf
+	/usr/sbin/postconf -h "myhostname" 2>/dev/null
+	if [ $? -ne 0 ]; then
+		# Set "localhost" to main.cf
+		/usr/sbin/postconf -e "myhostname=localhost"
+	fi
+fi
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/install.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/install.patch
new file mode 100644
index 0000000..d023680
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/install.patch
@@ -0,0 +1,93 @@
+From 190650e1cd5700cd6950ead3fcb17ebcec192a2e Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 19 Jun 2015 17:14:58 +0900
+Subject: [PATCH] Change fixed postconf to a variable for cross-compiling
+
+Upstreamstatus: Inappropriate [embedded specific]
+
+Signed-off-by: Yao Zhao <yao.zhao@windriver.com>
+---
+ postfix-install | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/postfix-install b/postfix-install
+index 1662c3d..d11fa12 100644
+--- a/postfix-install
++++ b/postfix-install
+@@ -226,8 +226,8 @@ test -z "$non_interactive" -a ! -t 0 && {
+     exit 1
+ }
+ 
+-test -x bin/postconf || {
+-    echo $0: Error: no bin/postconf file. Did you forget to run \"make\"? 1>&2
++test -x "$POSTCONF" || {
++    echo $0: Error: no $POSTCONF file. Did you forget to run \"make\"? 1>&2
+     exit 1
+ }
+ 
+@@ -248,7 +248,7 @@ do
+     case "$junk" in
+     *MAIL_VERSION*) 
+ 	case "$mail_version" in
+-	"") mail_version="`bin/postconf -dhx mail_version`" || exit 1
++	"") mail_version="`$POSTCONF -dhx mail_version`" || exit 1
+ 	esac
+ 	val=`echo "$junk" | sed 's/MAIL_VERSION$/'"$mail_version/g"` || exit 1
+ 	case "$val" in
+@@ -434,7 +434,7 @@ template files main.cf.proto and master.cf.proto."
+ 
+ : ${install_root=/}
+ : ${tempdir=`pwd`}
+-: ${config_directory=`bin/postconf -c conf -h -d config_directory`}
++: ${config_directory=`$POSTCONF -c conf -h -d config_directory`}
+ 
+ # Find out the location of installed configuration files.
+ 
+@@ -500,7 +500,7 @@ test -f $CONFIG_DIRECTORY/main.cf && {
+ 	case "$junk" in
+ 	"") eval unset $name;;
+ 	esac
+-	eval : \${$name=\`bin/postconf -c $CONFIG_DIRECTORY -hx $name\`} ||
++	eval : \${$name=\`$POSTCONF -c $CONFIG_DIRECTORY -hx $name\`} ||
+ 	    exit 1
+     done
+ }
+@@ -513,7 +513,7 @@ do
+     case "$junk" in
+     "") eval unset $name;;
+     esac
+-    eval : \${$name=\`bin/postconf -c conf -d -hx $name\`} || exit 1
++    eval : \${$name=\`$POSTCONF -c conf -d -hx $name\`} || exit 1
+ done
+ 
+ # Override settings manually.
+@@ -639,6 +639,8 @@ README_DIRECTORY=$install_root$readme_directory
+ SHLIB_DIRECTORY=$install_root$shlib_directory
+ META_DIRECTORY=$install_root$meta_directory
+ 
++test "x$POSTCONF" != "x" || POSTCONF="bin/postconf"
++
+ # Avoid repeated tests for existence of these; default permissions suffice.
+ 
+ test -d $DAEMON_DIRECTORY || mkdir -p $DAEMON_DIRECTORY || exit 1
+@@ -810,7 +812,7 @@ IFS="$BACKUP_IFS"
+ # the wrong place when Postfix is being upgraded.
+ 
+ case "$mail_version" in
+-"") mail_version="`bin/postconf -dhx mail_version`" || exit 1
++"") mail_version="`$POSTCONF -dhx mail_version`" || exit 1
+ esac
+ 
+ # Undo MAIL_VERSION expansion at the end of a parameter value. If
+@@ -830,7 +832,7 @@ do
+     esac
+ done
+ 
+-bin/postconf -c $CONFIG_DIRECTORY -e \
++"$POSTCONF" -c $CONFIG_DIRECTORY -e \
+     "daemon_directory = $daemon_directory" \
+     "data_directory = $data_directory" \
+     "command_directory = $command_directory" \
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/internal_recipient b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/internal_recipient
new file mode 100644
index 0000000..6a8f268
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/internal_recipient
@@ -0,0 +1 @@
+root@   permit_mynetworks,reject
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/main.cf_2.0 b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/main.cf_2.0
new file mode 100644
index 0000000..dc7feb5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/main.cf_2.0
@@ -0,0 +1,102 @@
+# Configure your domain and accounts
+#mydomain=sample.com
+#FQDN from gethostname
+#myhostname =
+mydomain=localdomain
+mydestination = $myhostname, localhost.localdomain localhost
+mynetworks = 127.0.0.1/8
+inet_interfaces = 127.0.0.1
+
+virtual_mailbox_domains = sample.com, other.net
+virtual_mailbox_maps = hash:/etc/postfix/virtual
+virtual_alias_maps = hash:/etc/postfix/virtual_alias
+
+alias_maps = hash:/etc/aliases
+
+# You'll start with the following lines for maildir storage
+virtual_mailbox_base = /var/spool/vmail
+virtual_uid_maps = static:`grep vmail /etc/passwd | cut -d ":" -f 3`
+virtual_gid_maps = static:`grep vmail /etc/passwd | cut -d ":" -f 4`
+
+
+# You'll start with the following lines for IMAP storage
+#virtual_transport = lmtp:unix:/var/lib/cyrus/socket/lmtp
+
+
+# General stuff here again
+#config_directory = /etc/postfix
+sample_directory = /etc/postfix
+queue_directory = /var/spool/postfix
+mail_spool_directory = /var/spool/mail
+readme_directory = no
+command_directory = /usr/sbin
+daemon_directory = @LIBEXECDIR@
+mail_owner = postfix
+setgid_group = postdrop
+unknown_local_recipient_reject_code = 450
+mynetworks_style = host
+debug_peer_level = 2
+sendmail_path = /usr/sbin/sendmail
+newaliases_path = /usr/bin/newaliases
+mailq_path = /usr/bin/mailq
+
+smtpd_data_restrictions =
+        permit_mynetworks,
+        reject_unauth_pipelining,
+        permit
+
+smtpd_client_restrictions =
+        permit_mynetworks,
+        # reject_unknown_client, # This can cause a lot of false rejects.
+        reject_invalid_hostname,
+        reject_rbl_client list.dsbl.org,
+        reject_rbl_client sbl.spamhaus.org,
+        reject_rbl_client cbl.abuseat.org,
+        reject_rbl_client dul.dnsbl.sorbs.net,
+        permit
+
+smtpd_helo_required = yes
+smtpd_helo_restrictions =
+        permit_mynetworks,
+        reject_unauth_pipelining,
+        # reject_non_fqdn_hostname, # This can cause a lot of false rejects.
+        # reject_unknown_hostname, # This can cause a lot of false rejects.
+        reject_invalid_hostname,
+        permit
+
+smtpd_sender_restrictions =
+        permit_mynetworks,
+        reject_non_fqdn_sender,
+        # check_sender_access hash:/etc/postfix/access_domains,
+        reject_unknown_sender_domain,
+        permit
+
+smtpd_recipient_restrictions =
+        permit_mynetworks,
+        permit_sasl_authenticated,
+        reject_unauth_destination,
+
+        # check_recipient_access pcre:/etc/postfix/recipient_checks.pcre,
+        # check_helo_access pcre:/etc/postfix/helo_checks.pcre,
+
+        # check_client_access hash:/etc/postfix/maps/access_client,
+        # check_client_access hash:/etc/postfix/maps/exceptions_client,
+        # check_helo_access hash:/etc/postfix/maps/access_helo,
+        # check_helo_access hash:/etc/postfix/maps/verify_helo,
+        # check_sender_access hash:/etc/postfix/maps/access_sender,
+        # check_sender_access hash:/etc/postfix/maps/verify_sender,
+        # check_recipient_access hash:/etc/postfix/maps/access_recipient,
+
+        # reject_multi_recipient_bounce,
+        reject_non_fqdn_recipient,
+        reject_unknown_recipient_domain,
+        # reject_unlisted_recipient,
+        #check_policy_service unix:private/policy,
+
+        # check_sender_access hash:/etc/postfix/maps/no_verify_sender,
+        # check_sender_access hash:/etc/postfix/access_domains,
+        # reject_unverified_sender,
+        # reject_unverified_recipient
+        check_recipient_access hash:/etc/postfix/internal_recipient
+
+disable_vrfy_command = yes
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/makedefs.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/makedefs.patch
new file mode 100644
index 0000000..98d5f7e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/makedefs.patch
@@ -0,0 +1,116 @@
+From 4f49e2ce420fb3c17415937530493158ef312733 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 19 Jun 2015 16:45:54 +0900
+Subject: [PATCH] 1)remove RANLIB, SYSLIBS, AR and get them from env.
+
+2)reference sysroot when searching header files
+3)include sysroot path instead of absolute include path
+for Linux2 and Linux3 systems.
+4)for non-native build, search STAGING_BASELIBDIR/LIBDIR
+  native build, search host library path for nsl and resolv library
+  which comes from libc
+
+Upstreamstatus: Inappropriate [embedded specific]
+
+Signed-off-by: Yao Zhao <yao.zhao@windriver.com>
+---
+ makedefs | 27 +++++++++++----------------
+ 1 file changed, 11 insertions(+), 16 deletions(-)
+
+diff --git a/makedefs b/makedefs
+index 8b84e47..893fb0d 100644
+--- a/makedefs
++++ b/makedefs
+@@ -170,9 +170,6 @@ echo "# pie=$pie"
+ 
+ # Defaults for most sane systems
+ 
+-RANLIB=ranlib
+-SYSLIBS=
+-AR=ar
+ ARFL=rv
+ 
+ # Ugly function to make our error message more visible among the
+@@ -424,12 +421,12 @@ case "$SYSTEM.$RELEASE" in
+ 		case "$CCARGS" in
+ 		 *-DNO_DB*) ;;
+ 		 *-DHAS_DB*) ;;
+-		 *) if [ -f /usr/include/db.h ]
++		 *) if [ -f "$BUILD_SYSROOT"/usr/include/db.h ]
+ 		    then
+ 			: we are all set
+-		    elif [ -f /usr/include/db/db.h ]
++		    elif [ -f "$BUILD_SYSROOT"/usr/include/db/db.h ]
+ 		    then
+-			CCARGS="$CCARGS -I/usr/include/db"
++			CCARGS="$CCARGS -I"$BUILD_SYSROOT"/usr/include/db"
+ 		    else
+ 			# No, we're not going to try db1 db2 db3 etc.
+ 			# On a properly installed system, Postfix builds
+@@ -438,12 +435,12 @@ case "$SYSTEM.$RELEASE" in
+ 			echo "Install the appropriate db*-devel package first." 1>&2
+ 			exit 1
+ 		    fi
+-		    SYSLIBS="-ldb"
++		    SYSLIBS="$SYSLIBS -ldb"
+ 		    ;;
+ 		esac
+ 		for name in nsl resolv $GDBM_LIBS
+ 		do
+-		    for lib in /usr/lib64 /lib64 /usr/lib /lib
++		    for lib in $BUILD_SYSROOT_NSL_PATH
+ 		    do
+ 			test -e $lib/lib$name.a -o -e $lib/lib$name.so && {
+ 			    SYSLIBS="$SYSLIBS -l$name"
+@@ -463,7 +460,7 @@ case "$SYSTEM.$RELEASE" in
+ 		       if [ `expr "X$CCARGS" : "X.*-DNO_EPOLL"` -gt 0 ]
+ 		       then
+ 			   :
+-		       elif [ ! -e /usr/include/sys/epoll.h ]
++		       elif [ ! -e "$BUILD_SYSROOT"/usr/include/sys/epoll.h ]
+ 		       then
+ 			   echo CCARGS="$CCARGS -DNO_EPOLL"
+ 		       else
+@@ -487,8 +484,6 @@ int     main(int argc, char **argv)
+ }
+ EOF
+ 			   ${CC-gcc} -o makedefs.test makedefs.test.c || exit 1
+-			   ./makedefs.test 2>/dev/null ||
+-				CCARGS="$CCARGS -DNO_EPOLL"
+ 			   rm -f makedefs.test makedefs.test.[co]
+ 		       fi;;
+ 		esac
+@@ -504,12 +499,12 @@ EOF
+ 		case "$CCARGS" in
+ 		 *-DNO_DB*) ;;
+ 		 *-DHAS_DB*) ;;
+-		 *) if [ -f /usr/include/db.h ]
++		 *) if [ -f "$BUILD_SYSROOT"/usr/include/db.h ]
+ 		    then
+ 			: we are all set
+-		    elif [ -f /usr/include/db/db.h ]
++		    elif [ -f "$BUILD_SYSROOT"/usr/include/db/db.h ]
+ 		    then
+-			CCARGS="$CCARGS -I/usr/include/db"
++			CCARGS="$CCARGS -I"$BUILD_SYSROOT"/usr/include/db"
+ 		    else
+ 			# On a properly installed system, Postfix builds
+ 			# by including <db.h> and by linking with -ldb
+@@ -517,12 +512,12 @@ EOF
+ 			echo "Install the appropriate db*-devel package first." 1>&2
+ 			exit 1
+ 		    fi
+-		    SYSLIBS="-ldb"
++		    SYSLIBS="$SYSLIBS -ldb"
+ 		    ;;
+ 		esac
+ 		for name in nsl resolv
+ 		do
+-		    for lib in /usr/lib64 /lib64 /usr/lib /usr/lib/* /lib /lib/*
++		    for lib in $BUILD_SYSROOT_NSL_PATH
+ 		    do
+ 			test -e $lib/lib$name.a -o -e $lib/lib$name.so && {
+ 			    SYSLIBS="$SYSLIBS -l$name"
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/postfix b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/postfix
new file mode 100755
index 0000000..8c7a601
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/postfix
@@ -0,0 +1,94 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: postfix MTA
+# Default-Start: 2345
+# Default-Stop: 016
+# Short-Description: start and stop postfix
+# Description: Postfix is a Mail Transport Agent, which is the program
+#              that moves mail from one machine to another.
+### END INIT INFO
+
+success() {
+        echo " Successful"
+        exit 0
+}
+
+fail() {
+        echo " Failed"
+        exit 1
+
+}
+
+check_return () {
+        local ret="$1"
+
+        if [ "$ret" = "0" ]; then
+          success
+        else
+          fail
+        fi
+}
+
+PIDFile=/var/spool/postfix/pid/master.pid
+case "$1" in
+
+        start)
+        echo -n "Starting Postfix..."
+        if [ ! -e /etc/aliases.db ]; then
+          # The alias database is necessary for postfix to work correctly.
+          echo "Creating aliases database ..."
+          newaliases
+        fi
+        if ! postfix status >/dev/null 2>&1; then
+          /usr/sbin/check_hostname.sh
+          postfix start
+          check_return $?
+        else
+          success
+        fi
+        ;;
+
+        stop)
+        echo -n  "Stopping Postfix..."
+        if postfix status >/dev/null 2>&1; then
+          postfix stop
+          check_return $?
+        else
+          success
+        fi
+        ;;
+
+        reload)
+        echo -n "Reloading Postfix..."
+        if postfix status >/dev/null 2>&1; then
+          postfix reload
+          check_return $?
+        else
+          postfix start
+          check_return $?
+        fi
+        ;;
+
+        restart)
+        $0 stop
+        sleep 1
+        $0 start
+        ;;
+
+        status)
+        if postfix status >/dev/null 2>&1; then
+          pid=`sed -e 's/\s//g' $PIDFile`
+          echo "The Postfix mail system is running (PID: $pid)"
+          exit 0
+        else
+          echo "The Postfix mail system is not running"
+          exit 1
+        fi
+        ;;
+
+        *)
+        echo "Usage: $0 {start|stop|status|reload|restart}"
+        exit 1
+        ;;
+esac
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/postfix.service b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/postfix.service
new file mode 100644
index 0000000..3a9a0a1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/files/postfix.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Postfix Mail Transport Agent
+After=syslog.target network.target
+Conflicts=sendmail.service exim.service
+
+[Service]
+Type=forking
+PIDFile=@LOCALSTATEDIR@/spool/postfix/pid/master.pid
+ExecStartPre=-@SBINDIR@/check_hostname.sh
+ExecStartPre=-@LIBEXECDIR@/aliasesdb
+ExecStart=@SBINDIR@/postfix start
+ExecReload=@SBINDIR@/postfix reload
+ExecStop=@SBINDIR@/postfix stop
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix.inc b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix.inc
new file mode 100644
index 0000000..17dbf76
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix.inc
@@ -0,0 +1,251 @@
+SUMMARY = "Postfix Mail Transport Agent"
+DESCRIPTION = "Postfix is Wietse Venema's mail server that started life at \
+IBM research as an alternative to the widely-used Sendmail program. \
+Postfix attempts to be fast, easy to administer, and secure. The outsidei \
+has a definite Sendmail-ish flavor, but the inside is completely different."
+
+HOMEPAGE= "http://www.postfix.org"
+SECTION = "mail"
+DEPENDS = "virtual/db libpcre openssl postfix-native \
+    ${@base_contains('DISTRO_FEATURES', 'ldap', 'openldap', '', d)} \
+    ${@base_contains('DISTRO_FEATURES', 'sasl', 'cyrus-sasl', '', d)} \
+"
+DEPENDS_class-native = "virtual/db-native openssl-native libpcre-native"
+
+LICENSE = "IPL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=64375f37431336ea1b1b3005fe3fa354"
+
+SRC_URI = "ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-${PV}.tar.gz \
+    file://makedefs.patch \
+    file://install.patch \
+    file://main.cf_2.0 \
+    file://postfix \
+    file://internal_recipient \
+    file://postfix.service \
+    file://aliasesdb \
+    file://check_hostname.sh \
+"
+
+S = "${WORKDIR}/postfix-${PV}"
+
+CLEANBROKEN = "1"
+
+BBCLASSEXTEND = "native"
+
+inherit update-rc.d useradd update-alternatives systemd
+
+INITSCRIPT_NAME = "postfix"
+INITSCRIPT_PARAMS = "start 58 3 4 5 . stop 13 0 1 6 ."
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = \
+"-d /var/spool/postfix -r -g postfix --shell /bin/false postfix; \
+ -d /var/spool/vmail -r -g vmail --shell /bin/false vmail \
+"
+GROUPADD_PARAM_${PN} = "--system postfix;--system postdrop;--system vmail"
+
+export SYSLIBS = "${LDFLAGS}"
+
+# CCARGS specifies includes, defines
+# AUXLIBS specifies libraries
+# Linux2/Linux3 has HAS_DB defined
+# makedefs will make CC to be CC+CCARGS
+
+# ldap support
+export CCARGS-ldap  = "\
+    ${@base_contains('DISTRO_FEATURES', 'ldap', '-DHAS_LDAP', '', d)}"
+export AUXLIBS-ldap = "\
+    ${@base_contains('DISTRO_FEATURES', 'ldap', '-lldap -llber', '', d)}"
+
+# no native openldap
+export CCARGS-ldap_class-native = ""
+export AUXLIBS-ldap_class-native = ""
+
+# SASL support -DUSE_LDAP_SASL -DUSE_SASL_AUTH
+# current openldap didn't enable SASL
+export CCARGS-sasl  = "\
+    ${@base_contains('DISTRO_FEATURES', 'sasl', '-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I=/usr/include/sasl', '', d)}"
+export AUXLIBS-sasl = "\
+    ${@base_contains('DISTRO_FEATURES', 'sasl', '-lsasl2', '', d)}"
+export CCARGS-sasl_class-native = ""
+export AUXLIBS-sasl_class-native = ""
+
+# PCRE, TLS support default
+export CCARGS  = "${CFLAGS} -DHAS_PCRE -DUSE_TLS ${CCARGS-ldap} ${CCARGS-sasl}"
+export AUXLIBS = "-lpcre -lssl -lcrypto ${AUXLIBS-sasl} ${AUXLIBS-ldap}"
+export POSTCONF = "${STAGING_DIR_NATIVE}${sbindir_native}/postconf"
+
+# OPT,DEBUG is aready in CFLAGS
+# ignore the OPTS="CC=$CC" in Makefile it will not use the CC=$CC $CCARGS
+EXTRA_OEMAKE += "OPT= DEBUG= OPTS= "
+
+do_compile () {
+    unset CFLAGS CPPFLAGS CXXFLAGS
+    local native_build
+
+    native_build="${@['0', '1'][bb.data.inherits_class('native', d) or bb.data.inherits_class('nativesdk', d)]}"
+
+    # if not native build, then pass SYSTEM and RELEASE to makedefs
+    if [ "${native_build}" != "1" ]; then
+        # uname -s for target
+        SYSTEM="Linux"
+
+        # uname -r, use 2.6 as bottomline, even target kernel ver > 2.6
+        RELEASE="2.6.34"
+        sed -i -e \
+            "s:\$(SHELL) makedefs):\$(SHELL) makedefs $SYSTEM $RELEASE):" \
+            ${S}/Makefile.in
+        export BUILD_SYSROOT="${STAGING_DIR_HOST}"
+        export BUILD_SYSROOT_NSL_PATH="${STAGING_BASELIBDIR} \
+                                       ${STAGING_LIBDIR}"
+    else
+        # native build
+        export BUILD_SYSROOT="${STAGING_DIR_NATIVE}"
+
+        # ubuntu x86 host: /lib/x86_64-linux-gnu(64) /lib/i386-linux-gnu (32)
+        #             on 64 bits, 32 libs in i386-linux-gnu
+        # let makedefs finds nsl and resolv libs, host CC will link
+        # the correct libraries
+        BUILD_SYSROOT_NSL_PATH="$(${CC} -print-search-dirs 2>/dev/null | \
+                      sed -n '/^libraries: =/s/libraries: =//p' | \
+                      sed -e 's/:/\n/g' | xargs -n1 readlink -f | \
+                      grep -v 'gcc\|/[0-9.]\+$' | sort -u)"
+        if [ -z "$BUILD_SYSROOT_NSL_PATH" ]; then
+            BUILD_SYSROOT_NSL_PATH="/usr/lib64 /lib64 \
+                                    /lib/x86_64-linux-gnu \
+                                    /usr/lib   /lib \
+                                    /lib/i386-linux-gnu"
+        fi
+        export BUILD_SYSROOT_NSL_PATH
+    fi
+
+    oe_runmake makefiles
+    oe_runmake
+}
+
+do_install_prepend_class-native() {
+    export POSTCONF="bin/postconf"
+}
+
+SYSTEMD_SERVICE_${PN} = "postfix.service"
+
+do_install () {
+    sh ./postfix-install 'install_root=${D}' \
+        'config_directory=${sysconfdir}/postfix' \
+        'daemon_directory=${libexecdir}' \
+        'command_directory=${sbindir}' \
+        'queue_directory=${localstatedir}/spool/postfix' \
+        'sendmail_path=${sbindir}/sendmail.postfix' \
+        'newaliases_path=${bindir}/newaliases' \
+        'mailq_path=${bindir}/mailq' \
+        'manpage_directory=${mandir}' \
+        'readme_directory=${datadir}/doc/postfix' \
+        'data_directory=${localstatedir}/lib/postfix' \
+        -non-interactive
+    rm -rf ${D}${localstatedir}/spool/postfix
+    mv ${D}${sysconfdir}/postfix/main.cf ${D}${sysconfdir}/postfix/sample-main.cf
+    install -m 755 ${S}/bin/smtp-sink ${D}/${sbindir}/
+    install -d ${D}${sysconfdir}/init.d
+    install -m 644 ${WORKDIR}/main.cf_2.0 ${D}${sysconfdir}/postfix/main.cf
+    sed -i 's#@LIBEXECDIR@#${libexecdir}#' ${D}${sysconfdir}/postfix/main.cf
+
+    install -m 755 ${WORKDIR}/check_hostname.sh ${D}${sbindir}/
+
+    install -m 755 ${WORKDIR}/postfix ${D}${sysconfdir}/init.d/postfix
+    install -m 644 ${WORKDIR}/internal_recipient ${D}${sysconfdir}/postfix/internal_recipient
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/postfix.service ${D}${systemd_unitdir}/system
+    sed -i -e 's#@LIBEXECDIR@#${libexecdir}#g' ${D}${systemd_unitdir}/system/postfix.service
+    sed -i -e 's#@LOCALSTATEDIR@#${localstatedir}#g' ${D}${systemd_unitdir}/system/postfix.service
+    sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/postfix.service
+
+    install -m 0755 ${WORKDIR}/aliasesdb ${D}${libexecdir}
+
+    install -m 770 -d ${D}${localstatedir}/spool/postfix
+    chown postfix:postfix ${D}${localstatedir}/spool/postfix
+
+    install -m 2755 -d ${D}${localstatedir}/spool/mail
+    chown postfix:nogroup ${D}${localstatedir}/spool/mail
+    install -m 0755 -d ${D}${localstatedir}/lib/postfix
+    chown postfix:nogroup ${D}${localstatedir}/lib/postfix
+    install -m 0755 -d ${D}${localstatedir}/spool/postfix
+    chown root:postfix ${D}${localstatedir}/spool/postfix
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/active
+    chown postfix:root ${D}${localstatedir}/spool/postfix/active
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/bounce
+    chown postfix:root ${D}${localstatedir}/spool/postfix/bounce
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/corrupt
+    chown postfix:root ${D}${localstatedir}/spool/postfix/corrupt
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/defer
+    chown postfix:root ${D}${localstatedir}/spool/postfix/defer
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/deferred
+    chown postfix:root ${D}${localstatedir}/spool/postfix/deferred
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/flush
+    chown postfix:root ${D}${localstatedir}/spool/postfix/flush
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/hold
+    chown postfix:root ${D}${localstatedir}/spool/postfix/hold
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/incoming
+    chown postfix:root ${D}${localstatedir}/spool/postfix/incoming
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/saved
+    chown postfix:root ${D}${localstatedir}/spool/postfix/saved
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/trace
+    chown postfix:root ${D}${localstatedir}/spool/postfix/trace
+    install -m 0730 -d ${D}${localstatedir}/spool/postfix/maildrop
+    chown postfix:postdrop ${D}${localstatedir}/spool/postfix/maildrop
+    install -m 0755 -d ${D}${localstatedir}/spool/postfix/pid
+    chown root:root ${D}${localstatedir}/spool/postfix/pid
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/private
+    chown postfix:root ${D}${localstatedir}/spool/postfix/private
+    install -m 0710 -d ${D}${localstatedir}/spool/postfix/public
+    chown postfix:postdrop ${D}${localstatedir}/spool/postfix/public
+    install -m 0755 -d ${D}${localstatedir}/spool/vmail
+    chown vmail:vmail ${D}${localstatedir}/spool/vmail
+
+    chown :postdrop ${D}${sbindir}/postqueue
+    chown :postdrop ${D}${sbindir}/postdrop
+    chmod g+s ${D}${sbindir}/postqueue
+    chmod g+s ${D}${sbindir}/postdrop
+}
+
+do_install_append_class-native() {
+    ln -sf ../sbin/sendmail.postfix ${D}${bindir}/newaliases
+    ln -sf ../sbin/sendmail.postfix ${D}${bindir}/mailq
+}
+
+do_install_append_class-target() {
+    # Remove references to buildmachine paths in target makedefs.out
+    sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' ${D}/etc/postfix/makedefs.out
+}
+
+NATIVE_INSTALL_WORKS = "1"
+
+ALTERNATIVE_${PN} = "sendmail"
+ALTERNATIVE_TARGET[sendmail] = "${sbindir}/sendmail.postfix"
+ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
+ALTERNATIVE_PRIORITY = "120"
+
+pkg_postinst_${PN} () {
+    if [ "x$D" = "x" ]; then
+        touch /etc/aliases
+        newaliases
+
+        # generate virtual_alias, default is hash
+        touch /etc/postfix/virtual_alias
+        postmap /etc/postfix/virtual_alias
+    else
+        touch $D/etc/aliases
+        newaliases -C $D/etc/postfix/main.cf -oA$D/etc/aliases
+        touch $D/etc/postfix/virtual_alias
+        postmap -c $D/etc/postfix $D/etc/postfix/virtual_alias
+
+        if ${@'true' if 'linuxstdbase' in d.getVar('DISTROOVERRIDES', False) else 'false'}; then
+            # /usr/lib/sendmial is required by LSB core test
+            [ ! -L $D/usr/lib/sendmail ] && ln -sf ${sbindir}/sendmail $D/usr/lib/
+        fi
+    fi
+}
+
+# Exclude .debug directories from the main package
+FILES_${PN} = "${sysconfdir} ${localstatedir} ${bindir}/* ${sbindir}/* \
+               ${libexecdir}/* ${systemd_unitdir}/*"
+FILES_${PN}-dbg += "${libexecdir}/.debug"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.0.3.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.0.3.bb
new file mode 100644
index 0000000..7104a9d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.0.3.bb
@@ -0,0 +1,4 @@
+require postfix.inc
+
+SRC_URI[md5sum] = "61caffae689c11d09b4c972a394ae3b1"
+SRC_URI[sha256sum] = "401e46ec3450569dcce60d1d8ca22a19ab1f7f817b0cc730cdf4875ba608ac02"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/CVE-2016-3125.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/CVE-2016-3125.patch
new file mode 100644
index 0000000..69c9be0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/CVE-2016-3125.patch
@@ -0,0 +1,247 @@
+From 7a8f683cedf9b0d1024a80362693c9f8b93a0f2b Mon Sep 17 00:00:00 2001
+From: TJ Saunders <tj@castaglia.org>
+Date: Thu, 10 Mar 2016 15:07:58 -0800
+Subject: [PATCH] Backport of fix for Bug#4230 to 1.3.5 branch.
+
+Upstream-Status: Backport
+CVE: CVE-2016-3125
+
+Author: TJ Saunders <tj@castaglia.org>
+Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
+---
+ contrib/mod_tls.c | 167 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ 1 file changed, 147 insertions(+), 20 deletions(-)
+
+diff --git a/contrib/mod_tls.c b/contrib/mod_tls.c
+index df92658..5883cc7 100644
+--- a/contrib/mod_tls.c
++++ b/contrib/mod_tls.c
+@@ -411,6 +411,13 @@ static int tls_required_on_ctrl = 0;
+ static int tls_required_on_data = 0;
+ static unsigned char *tls_authenticated = NULL;
+ 
++/* Define the minimum DH group length we allow (unless the AllowWeakDH
++ * TLSOption is used).  Ideally this would be 2048, per https://weakdh.org,
++ * but for compatibility with older Java versions, which only support up to
++ * 1024, we'll use 1024.  For now.
++ */
++#define TLS_DH_MIN_LEN				1024
++
+ /* mod_tls session flags */
+ #define	TLS_SESS_ON_CTRL			0x0001
+ #define TLS_SESS_ON_DATA			0x0002
+@@ -438,6 +445,7 @@ static unsigned char *tls_authenticated = NULL;
+ #define TLS_OPT_USE_IMPLICIT_SSL			0x0200
+ #define TLS_OPT_ALLOW_CLIENT_RENEGOTIATIONS		0x0400
+ #define TLS_OPT_VERIFY_CERT_CN				0x0800
++#define TLS_OPT_ALLOW_WEAK_DH				0x1000
+ 
+ /* mod_tls SSCN modes */
+ #define TLS_SSCN_MODE_SERVER				0
+@@ -2417,24 +2425,139 @@ static int tls_ctrl_renegotiate_cb(CALLBACK_FRAME) {
+ 
+ static DH *tls_dh_cb(SSL *ssl, int is_export, int keylength) {
+   DH *dh = NULL;
++  EVP_PKEY *pkey;
++  int pkeylen = 0, use_pkeylen = FALSE;
++
++  /* OpenSSL will only ever call us (currently) with a keylen of 512 or 1024;
++   * see the SSL_EXPORT_PKEYLENGTH macro in ssl_locl.h.  Sigh.
++   *
++   * Thus we adjust the DH parameter length according to the size of the
++   * RSA/DSA private key used for the current connection.
++   *
++   * NOTE: This MAY cause interoperability issues with some clients, notably
++   * Java 7 (and earlier) clients, since Java 7 and earlier supports
++   * Diffie-Hellman only up to 1024 bits.  More sighs.  To deal with these
++   * clients, then, you need to configure a certificate/key of 1024 bits.
++   */
++  pkey = SSL_get_privatekey(ssl);
++  if (pkey != NULL) {
++    if (EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA ||
++        EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) {
++      pkeylen = EVP_PKEY_bits(pkey);
++
++      if (pkeylen < TLS_DH_MIN_LEN) {
++        if (!(tls_opts & TLS_OPT_ALLOW_WEAK_DH)) {
++          pr_trace_msg(trace_channel, 11,
++            "certificate private key length %d less than %d bits, using %d "
++            "(see AllowWeakDH TLSOption)", pkeylen, TLS_DH_MIN_LEN,
++            TLS_DH_MIN_LEN);
++          pkeylen = TLS_DH_MIN_LEN;
++        }
++      }
++
++      if (pkeylen != keylen) {
++        pr_trace_msg(trace_channel, 13,
++          "adjusted DH parameter length from %d to %d bits", keylen, pkeylen);
++        use_pkeylen = TRUE;
++      }
++    }
++  }
+ 
+   if (tls_tmp_dhs != NULL &&
+       tls_tmp_dhs->nelts > 0) {
+     register unsigned int i;
+-    DH **dhs;
++    DH *best_dh = NULL, **dhs;
++    int best_dhlen = 0;
+ 
+     dhs = tls_tmp_dhs->elts;
++
++    /* Search the configured list of DH parameters twice: once for any sizes
++     * matching the actual requested size (usually 1024), and once for any
++     * matching the certificate private key size (pkeylen).
++     *
++     * This behavior allows site admins to configure a TLSDHParamFile that
++     * contains 1024-bit parameters, for e.g. Java 7 (and earlier) clients.
++     */
++
++    /* Note: the keylen argument is in BITS, but DH_size() returns the number
++     * of BYTES.
++     */
+     for (i = 0; i < tls_tmp_dhs->nelts; i++) {
+-      /* Note: the keylength argument is in BITS, but DH_size() returns
+-       * the number of BYTES.
++      int dhlen;
++
++      dhlen = DH_size(dhs[i]) * 8;
++      if (dhlen == keylen) {
++        pr_trace_msg(trace_channel, 11,
++          "found matching DH parameter for key length %d", keylen);
++        return dhs[i];
++      }
++
++      /* Try to find the next "best" DH to use, where "best" means
++       * the smallest DH that is larger than the necessary keylen.
+        */
+-      if (DH_size(dhs[i]) == (keylength / 8)) {
++      if (dhlen > keylen) {
++        if (best_dh != NULL) {
++          if (dhlen < best_dhlen) {
++            best_dh = dhs[i];
++            best_dhlen = dhlen;
++          }
++
++        } else {
++          best_dh = dhs[i];
++          best_dhlen = dhlen;
++        }
++      }
++    }
++
++    for (i = 0; i < tls_tmp_dhs->nelts; i++) {
++      int dhlen;
++
++      dhlen = DH_size(dhs[i]) * 8;
++      if (dhlen == pkeylen) {
++        pr_trace_msg(trace_channel, 11,
++          "found matching DH parameter for certificate private key length %d",
++          pkeylen);
+         return dhs[i];
+       }
++
++      if (dhlen > pkeylen) {
++        if (best_dh != NULL) {
++          if (dhlen < best_dhlen) {
++            best_dh = dhs[i];
++            best_dhlen = dhlen;
++          }
++
++        } else {
++          best_dh = dhs[i];
++          best_dhlen = dhlen;
++        }
++      }
++    }
++
++    if (best_dh != NULL) {
++      pr_trace_msg(trace_channel, 11,
++        "using best DH parameter for key length %d (length %d)", keylen,
++        best_dhlen);
++      return best_dh;
+     }
+   }
+ 
+-  switch (keylength) {
++  /* Still no DH parameters found?  Use the built-in ones. */
++
++  if (keylen < TLS_DH_MIN_LEN) {
++    if (!(tls_opts & TLS_OPT_ALLOW_WEAK_DH)) {
++      pr_trace_msg(trace_channel, 11,
++        "requested key length %d less than %d bits, using %d "
++        "(see AllowWeakDH TLSOption)", keylen, TLS_DH_MIN_LEN, TLS_DH_MIN_LEN);
++      keylen = TLS_DH_MIN_LEN;
++    }
++  }
++
++  if (use_pkeylen) {
++    keylen = pkeylen;
++  }
++
++  switch (keylen) {
+     case 512:
+       dh = get_dh512();
+       break;
+@@ -2443,32 +2566,33 @@ static DH *tls_dh_cb(SSL *ssl, int is_export, int keylength) {
+       dh = get_dh768();
+       break;
+ 
+-     case 1024:
+-       dh = get_dh1024();
+-       break;
++    case 1024:
++      dh = get_dh1024();
++      break;
+ 
+-     case 1536:
+-       dh = get_dh1536();
+-       break;
++    case 1536:
++      dh = get_dh1536();
++      break;
+ 
+-     case 2048:
+-       dh = get_dh2048();
+-       break;
++    case 2048:
++      dh = get_dh2048();
++      break;
+ 
+-     default:
+-       tls_log("unsupported DH key length %d requested, returning 1024 bits",
+-         keylength);
+-       dh = get_dh1024();
+-       break;
++    default:
++      tls_log("unsupported DH key length %d requested, returning 1024 bits",
++        keylen);
++      dh = get_dh1024();
++      break;
+   }
+ 
++  pr_trace_msg(trace_channel, 11, "using builtin DH for %d bits", keylen);
++
+   /* Add this DH to the list, so that it can be freed properly later. */
+   if (tls_tmp_dhs == NULL) {
+     tls_tmp_dhs = make_array(session.pool, 1, sizeof(DH *));
+   }
+ 
+   *((DH **) push_array(tls_tmp_dhs)) = dh;
+-
+   return dh;
+ }
+ 
+@@ -8445,6 +8569,9 @@ MODRET set_tlsoptions(cmd_rec *cmd) {
+                strcmp(cmd->argv[i], "AllowClientRenegotiations") == 0) {
+       opts |= TLS_OPT_ALLOW_CLIENT_RENEGOTIATIONS;
+ 
++    } else if (strcmp(cmd->argv[i], "AllowWeakDH") == 0) {
++      opts |= TLS_OPT_ALLOW_WEAK_DH;
++
+     } else if (strcmp(cmd->argv[i], "EnableDiags") == 0) {
+       opts |= TLS_OPT_ENABLE_DIAGS;
+ 
+-- 
+2.7.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/basic.conf.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/basic.conf.patch
new file mode 100644
index 0000000..4967bed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/basic.conf.patch
@@ -0,0 +1,21 @@
+Upstream-Status: Inappropriate [configuration]
+
+proftpd tries to get the IP address from the hostname.
+Unluckily now the hostname is not properly configured in /etc/hosts.
+We can use this patch as a workaround.
+
+Author: Dexuan Cui <dexuan.cui@intel.com>
+Tue Oct 25 12:59:27 CST 2011
+
+--- proftpd-1.3.3c.orig/sample-configurations/basic.conf
++++ proftpd-1.3.3c/sample-configurations/basic.conf
+@@ -7,6 +7,9 @@
+ ServerType			standalone
+ DefaultServer			on
+ 
++#By default we bind to all interfaces.
++DefaultAddress      0.0.0.0
++
+ # Port 21 is the standard FTP port.
+ Port				21
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/build_fixup.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/build_fixup.patch
new file mode 100644
index 0000000..19617a6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/build_fixup.patch
@@ -0,0 +1,112 @@
+Upstream-Status: Inappropriate [configuration]
+
+combined the following patches into one:
+make, move-pidfile-to-var-run, move-runfile-to-var-run
+
+move pidfile to /var/run
+redefine PR_RUN_DIR as ${localstatedir}/run
+
+Signed-off-By: Armin Kuster <akuster808@gmail.com>
+
+
+Index: proftpd-1.3.5/Make.rules.in
+===================================================================
+--- proftpd-1.3.5.orig/Make.rules.in
++++ proftpd-1.3.5/Make.rules.in
+@@ -29,9 +29,9 @@ INSTALL=@INSTALL@
+ INSTALL_STRIP=@INSTALL_STRIP@
+ INSTALL_USER=@install_user@
+ INSTALL_GROUP=@install_group@
+-INSTALL_BIN=$(INSTALL) $(INSTALL_STRIP) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0755
+-INSTALL_SBIN=$(INSTALL) $(INSTALL_STRIP) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0755
+-INSTALL_MAN=$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0644
++INSTALL_BIN=$(INSTALL) -m 0755
++INSTALL_SBIN=$(INSTALL) -m 0755
++INSTALL_MAN=$(INSTALL) -m 0644
+ 
+ RM=rm -f
+ SHELL=@CONFIG_SHELL@
+Index: proftpd-1.3.5/Makefile.in
+===================================================================
+--- proftpd-1.3.5.orig/Makefile.in
++++ proftpd-1.3.5/Makefile.in
+@@ -105,7 +105,6 @@ check: proftpd$(EXEEXT)
+ $(DESTDIR)$(localedir) $(DESTDIR)$(includedir) $(DESTDIR)$(includedir)/proftpd $(DESTDIR)$(libdir) $(DESTDIR)$(pkgconfigdir) $(DESTDIR)$(libdir)/proftpd $(DESTDIR)$(libexecdir) $(DESTDIR)$(localstatedir) $(DESTDIR)$(sysconfdir) $(DESTDIR)$(bindir) $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man8:
+ 	@if [ ! -d $@ ]; then \
+ 		mkdir -p $@; \
+-		chown $(INSTALL_USER):$(INSTALL_GROUP) $@; \
+ 		chmod 0755 $@; \
+ 	fi
+ 
+@@ -115,7 +114,6 @@ install-proftpd: proftpd $(DESTDIR)$(inc
+ 		rm -f $(DESTDIR)$(sbindir)/in.proftpd ; \
+ 	fi
+ 	ln -s proftpd $(DESTDIR)$(sbindir)/in.proftpd
+-	-chown -h $(INSTALL_USER):$(INSTALL_GROUP) $(DESTDIR)$(sbindir)/in.proftpd
+ 
+ install-libs: $(DESTDIR)$(libdir)/proftpd
+ 	cd lib/ && $(MAKE) install
+@@ -152,11 +150,11 @@ install-utils: $(DESTDIR)$(sbindir) $(DE
+ 	$(INSTALL_SBIN) ftpshut  $(DESTDIR)$(sbindir)/ftpshut
+ 	$(INSTALL_BIN)  ftptop   $(DESTDIR)$(bindir)/ftptop
+ 	$(INSTALL_BIN)  ftpwho   $(DESTDIR)$(bindir)/ftpwho
+-	$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0755 src/prxs $(DESTDIR)$(bindir)/prxs
++	$(INSTALL) -m 0755 src/prxs $(DESTDIR)$(bindir)/prxs
+ 
+ install-conf: $(DESTDIR)$(sysconfdir)
+ 	if [ ! -f $(DESTDIR)$(sysconfdir)/proftpd.conf ] ; then \
+-		$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0644 \
++		$(INSTALL) -m 0644 \
+ 		           $(top_srcdir)/sample-configurations/basic.conf \
+ 	       	           $(DESTDIR)$(sysconfdir)/proftpd.conf ; \
+ 	fi
+Index: proftpd-1.3.5/configure
+===================================================================
+--- proftpd-1.3.5.orig/configure
++++ proftpd-1.3.5/configure
+@@ -38255,7 +38255,7 @@ _ACEOF
+ 
+ 
+ cat >>confdefs.h <<_ACEOF
+-#define PR_RUN_DIR "`eval echo "${localstatedir}"`"
++#define PR_RUN_DIR "`eval echo "${localstatedir}"/run/`"
+ _ACEOF
+ 
+ cat >>confdefs.h <<_ACEOF
+@@ -38263,7 +38263,7 @@ cat >>confdefs.h <<_ACEOF
+ _ACEOF
+ 
+ cat >>confdefs.h <<_ACEOF
+-#define PR_PID_FILE_PATH "`eval echo "${localstatedir}/proftpd.pid"`"
++#define PR_PID_FILE_PATH "`eval echo "${localstatedir}/run/proftpd.pid"`"
+ _ACEOF
+ 
+ 
+Index: proftpd-1.3.5/configure.in
+===================================================================
+--- proftpd-1.3.5.orig/configure.in
++++ proftpd-1.3.5/configure.in
+@@ -2971,8 +2971,8 @@ locale_dir="`eval echo ${locale_dir}`"
+ AC_DEFINE_UNQUOTED(PR_LOCALE_DIR, "`eval echo "${locale_dir}"`")
+ 
+ AC_DEFINE_UNQUOTED(PR_RUN_DIR, "`eval echo "${localstatedir}"`")
+-AC_DEFINE_UNQUOTED(PR_CONFIG_FILE_PATH, "`eval echo "${sysconfdir}/proftpd.conf"`")
+-AC_DEFINE_UNQUOTED(PR_PID_FILE_PATH, "`eval echo "${localstatedir}/proftpd.pid"`")
++AC_DEFINE_UNQUOTED(PR_CONFIG_FILE_PATH, "`eval echo "${sysconfdir}/run/proftpd.conf"`")
++AC_DEFINE_UNQUOTED(PR_PID_FILE_PATH, "`eval echo "${localstatedir}/run/proftpd.pid"`")
+ 
+ prefix="$pr_saved_prefix"
+ exec_prefix="$pr_saved_exec_prefix"
+Index: proftpd-1.3.5/lib/libcap/Makefile
+===================================================================
+--- proftpd-1.3.5.orig/lib/libcap/Makefile
++++ proftpd-1.3.5/lib/libcap/Makefile
+@@ -26,7 +26,7 @@ OBJS=$(addsuffix .o, $(FILES))
+ all: $(LIBNAME)
+ 
+ _makenames: _makenames.c cap_names.sed
+-	$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
++	$(BUILD_CC) $(CFLAGS) $(LDFLAGS) $< -o $@
+ 
+ cap_names.h: _makenames
+ 	./_makenames > cap_names.h
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/close-RequireValidShell-check.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/close-RequireValidShell-check.patch
new file mode 100644
index 0000000..c64535c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/close-RequireValidShell-check.patch
@@ -0,0 +1,27 @@
+close RequireValidShell check
+
+Upstream-Status: Inappropriate [configuration]
+
+close RequireValidShell check since we like to make /bin/false as shell
+for ftp user
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ sample-configurations/basic.conf |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sample-configurations/basic.conf b/sample-configurations/basic.conf
+index 314eb79..abcb284 100644
+--- a/sample-configurations/basic.conf
++++ b/sample-configurations/basic.conf
+@@ -53,6 +53,7 @@ AllowOverwrite		on
+   # We want clients to be able to login with "anonymous" as well as "ftp"
+   UserAlias			anonymous ftp
+ 
++  RequireValidShell	 	off
+   # Limit the maximum number of anonymous logins
+   MaxClients			10
+ 
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/contrib.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/contrib.patch
new file mode 100644
index 0000000..7e2a8e3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/contrib.patch
@@ -0,0 +1,42 @@
+The contrib directory now contains its own Makefile which is
+used during installation. It was required to pass DESTDIR through
+when it gets called from the base Makefile.
+
+Upstream-Status: Pending
+
+Signed-off-by: Kevin Strasser <kevin.strasser@linux.intel.com>
+---
+ Makefile.in         |    2 +-
+ contrib/Makefile.in |    6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 5b2e683..ee72fe1 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -120,7 +120,7 @@ install-modules: $(DESTDIR)$(libexecdir) $(DESTDIR)$(sysconfdir)
+ 	test -z "$(SHARED_MODULE_OBJS)" -a -z "$(SHARED_MODULE_DIRS)" -a -z "$(STATIC_MODULE_DIRS)" || (cd modules/ && $(MAKE) install)
+ 
+ install-utils: $(DESTDIR)$(sbindir) $(DESTDIR)$(bindir)
+-	cd contrib/ && $(MAKE) install-utils
++	cd contrib/ && $(MAKE) DESTDIR=${DESTDIR} install-utils
+ 	$(INSTALL_BIN)  ftpcount $(DESTDIR)$(bindir)/ftpcount
+ 	$(INSTALL_BIN)  ftpdctl  $(DESTDIR)$(bindir)/ftpdctl
+ 	$(INSTALL_SBIN) ftpscrub $(DESTDIR)$(sbindir)/ftpscrub
+diff --git a/contrib/Makefile.in b/contrib/Makefile.in
+index 5bcc038..51d248c 100644
+--- a/contrib/Makefile.in
++++ b/contrib/Makefile.in
+@@ -18,6 +18,6 @@ Makefile: Makefile.in ../config.status
+ 	cd ../ && ./config.status
+ 
+ install-utils:
+-	$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0755 ftpasswd $(DESTDIR)$(bindir)/ftpasswd
+-	$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0755 ftpmail $(DESTDIR)$(bindir)/ftpmail
+-	$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0755 ftpquota $(DESTDIR)$(bindir)/ftpquota
++	$(INSTALL) -m 0755 ftpasswd $(DESTDIR)$(bindir)/ftpasswd
++	$(INSTALL) -m 0755 ftpmail $(DESTDIR)$(bindir)/ftpmail
++	$(INSTALL) -m 0755 ftpquota $(DESTDIR)$(bindir)/ftpquota
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/default b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/default
new file mode 100644
index 0000000..b31f36c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/default
@@ -0,0 +1,9 @@
+# Defaults for proftpd initscript
+
+# Master system-wide proftpd switch. The initscript
+# will not run if it is not set to yes.
+RUN="yes"
+
+# Default options.
+# For more exhaustive logging, try "-d 3".
+OPTIONS=""
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/proftpd-basic.init b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/proftpd-basic.init
new file mode 100644
index 0000000..01c998c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/proftpd-basic.init
@@ -0,0 +1,220 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:          proftpd
+# Required-Start:    $remote_fs $syslog $local_fs $network
+# Required-Stop:     $remote_fs $syslog $local_fs $network
+# Should-Start:      $named
+# Should-Stop:       $named
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Starts ProFTPD daemon
+# Description:       This script runs the FTP service offered
+#                    by the ProFTPD daemon
+### END INIT INFO
+
+# Start the proftpd FTP daemon.
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+DAEMON=/usr/sbin/proftpd
+NAME=proftpd
+
+# Defaults
+RUN="no"
+OPTIONS=""
+CONFIG_FILE=/etc/proftpd.conf
+
+PIDFILE=`grep -i '^pidfile' $CONFIG_FILE|awk '{ print $2 }'`
+if [ "x$PIDFILE" = "x" ];
+then
+    PIDFILE=/var/run/proftpd.pid
+fi
+
+# Read config (will override defaults)
+[ -r /etc/default/proftpd ] && . /etc/default/proftpd
+
+trap "" 1
+trap "" 15
+
+test -f $DAEMON || exit 0
+
+. /etc/init.d/functions
+
+#
+# Servertype could be inetd|standalone|none.
+# In all cases check against inetd and xinetd support.
+#
+if ! egrep -qi "^[[:space:]]*ServerType.*standalone" $CONFIG_FILE
+then
+    if egrep -qi "server[[:space:]]*=[[:space:]]*/usr/sbin/proftpd" /etc/xinetd.conf 2>/dev/null || \
+       egrep -qi "server[[:space:]]*=[[:space:]]*/usr/sbin/proftpd" /etc/xinetd.d/* 2>/dev/null || \
+       egrep -qi "^ftp.*/usr/sbin/proftpd" /etc/inetd.conf 2>/dev/null
+    then
+        RUN="no"
+        INETD="yes"
+    else
+        if ! egrep -qi "^[[:space:]]*ServerType.*inetd" $CONFIG_FILE
+        then
+            RUN="yes"
+            INETD="no"
+        else
+            RUN="no"
+            INETD="no"
+        fi
+    fi
+fi
+
+# /var/run could be on a tmpfs
+
+[ ! -d /var/run/proftpd ] && mkdir /var/run/proftpd
+
+inetd_check()
+{
+    if [ ! -x /usr/sbin/inetd -a ! -x /usr/sbin/xinetd ]; then
+        echo "Neither inetd nor xinetd appears installed: check your configuration."
+    fi
+}
+
+start()
+{
+    set -e
+    echo -n "Starting ftp server $NAME... "
+    start-stop-daemon --start --quiet --pidfile "$PIDFILE" --oknodo --exec $DAEMON -- -c $CONFIG_FILE $OPTIONS
+    echo "done."
+}
+
+signal()
+{
+
+    if [ "$1" = "stop" ]; then
+        SIGNAL="TERM"
+        echo -n "Stopping ftp server $NAME... "
+    else
+        if [ "$1" = "reload" ]; then
+            SIGNAL="HUP"
+            echo -n "Reloading ftp server $NAME... "
+        else
+            echo "ERR: wrong parameter given to signal()"
+            exit 1
+        fi
+    fi
+    if [ -f "$PIDFILE" ]; then
+        start-stop-daemon --stop --signal $SIGNAL --quiet --pidfile "$PIDFILE"
+        if [ $? = 0 ]; then
+            echo "done."
+            return
+        else
+            SIGNAL="KILL"
+            start-stop-daemon --stop --signal $SIGNAL --quiet --pidfile "$PIDFILE"
+            if [ $? != 0 ]; then
+                echo
+                [ $2 != 0 ] || exit 0
+            else
+                echo "done."
+                return
+            fi
+        fi
+        if [ "$SIGNAL" = "KILL" ]; then
+            rm -f "$PIDFILE"
+        fi
+    else
+        echo "done."
+        return
+    fi
+}
+
+case "$1" in
+    start)
+        if [ "x$RUN" = "xyes" ] ; then
+            start
+        else
+            if [ "x$INETD" = "xyes" ] ; then
+                echo "ProFTPD is started from inetd/xinetd."
+                inetd_check
+            else
+                echo "ProFTPD warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration."
+            fi
+        fi
+        ;;
+
+    force-start)
+        if [ "x$INETD" = "xyes" ] ; then
+            echo "Warning: ProFTPD is started from inetd/xinetd (trying to start anyway)."
+            inetd_check
+        fi
+        start
+        ;;
+
+    stop)
+        if [ "x$RUN" = "xyes" ] ; then
+            signal stop 0
+        else
+            if [ "x$INETD" = "xyes" ] ; then
+                echo "ProFTPD is started from inetd/xinetd."
+                inetd_check
+            else
+                echo "ProFTPD warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration."
+            fi
+        fi
+        ;;
+
+    force-stop)
+        if [ "x$INETD" = "xyes" ] ; then
+            echo "Warning: ProFTPD is started from inetd/xinetd (trying to kill anyway)."
+            inetd_check
+        fi
+        signal stop 0
+        ;;
+
+    reload)
+        signal reload 0
+        ;;
+
+    force-reload|restart)
+        if [ "x$RUN" = "xyes" ] ; then
+            signal stop 1
+            sleep 2
+            start
+        else
+            if [ "x$INETD" = "xyes" ] ; then
+                echo "ProFTPD is started from inetd/xinetd."
+                inetd_check
+            else
+                echo "ProFTPD warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration."
+            fi
+        fi
+        ;;
+
+    status)
+        if [ "x$INETD" = "xyes" ] ; then
+            echo "ProFTPD is started from inetd/xinetd."
+            inetd_check
+            exit 0
+        else
+            if [ -f "$PIDFILE" ]; then
+                pid=$(cat $PIDFILE)
+            else
+                pid="x"
+            fi
+            if [ `pidof proftpd|grep "$pid"|wc -l` -ne 0 ] ; then
+                echo "ProFTPD is started in standalone mode, currently running."
+                exit 0
+            else
+                echo "ProFTPD is started in standalone mode, currently not running."
+                exit 3
+            fi
+        fi
+        ;;
+
+    check-config)
+        $DAEMON -t >/dev/null && echo "ProFTPD configuration OK" && exit 0
+        exit 1
+        ;;
+
+    *)
+        echo "Usage: /etc/init.d/$NAME {start|status|force-start|stop|force-stop|reload|restart|force-reload|check-config}"
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/proftpd.service b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/proftpd.service
new file mode 100644
index 0000000..ba97f8e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/files/proftpd.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=proftpd Daemon
+
+[Service]
+Type=forking
+ExecStart=-@SBINDIR@/proftpd -c @SYSCONFDIR@/proftpd.conf
+StandardError=syslog
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/proftpd_1.3.5a.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/proftpd_1.3.5a.bb
new file mode 100644
index 0000000..57d4984
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/proftpd/proftpd_1.3.5a.bb
@@ -0,0 +1,115 @@
+SUMMARY = "Secure and configurable FTP server"
+SECTION = "net"
+HOMEPAGE = "http://www.proftpd.org"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fb0d1484d11915fa88a6a7702f1dc184"
+
+SRC_URI = "ftp://ftp.proftpd.org/distrib/source/${BPN}-${PV}.tar.gz \
+           file://basic.conf.patch \
+           file://proftpd-basic.init \
+           file://default \
+           file://close-RequireValidShell-check.patch \
+           file://contrib.patch  \
+           file://build_fixup.patch \
+           file://proftpd.service \
+           file://CVE-2016-3125.patch \
+           "
+
+SRC_URI[md5sum] = "b9d3092411478415b31d435f8e26d173"
+SRC_URI[sha256sum] = "a1f48df8539c414ec56e0cea63dcf4b8e16e606c05f10156f030a4a67fae5696"
+
+inherit autotools-brokensep useradd update-rc.d systemd
+
+PACKAGECONFIG ??= "sia shadow"
+PACKAGECONFIG += " ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
+
+PACKAGECONFIG[curses] = "--enable-curses --enable-ncurses, --disable-curses --disable-ncurses, ncurses"
+PACKAGECONFIG[openssl] = "--enable-openssl, --disable-openssl, openssl, openssl"
+PACKAGECONFIG[pam] = "--enable-auth-pam, --disable-auth-pam, libpam, libpam"
+PACKAGECONFIG[ipv6] = "--enable-ipv6, --disable-ipv6"
+PACKAGECONFIG[shadow] = "--enable-shadow, --disable-shadow"
+PACKAGECONFIG[pcre] = "--enable-pcre, --disable-pcre, libpcre "
+
+# enable POSIX.1e capabilities
+PACKAGECONFIG[cap] = "--enable-cap, --disable-cap, libcap, libcap"
+
+#enable support for POSIX ACLs
+PACKAGECONFIG[acl] = "--enable-facl, --disable-facl"
+
+#enable proftpd controls via ftpdct
+PACKAGECONFIG[ctrls] = "--enable-ctrls, --disable-crtls"
+
+#prevent proftpd from using its bundled getopt implementation.
+PACKAGECONFIG[getopt] = "--with-getopt, --without-getopt"
+
+#do not strip debugging symbols from installed code
+PACKAGECONFIG[strip] = "--enable-strip, --disable-strip"
+
+#enable SIA authentication support (Tru64)
+PACKAGECONFIG[sia] = "--enable-sia, --disable-sia"
+PACKAGECONFIG[sendfile] = "-enable-sendfile, --disable-sendfile"
+
+#enable Native Language Support (NLS)
+PACKAGECONFIG[nls] = "--enable-nls, --disable-nls"
+
+#add mod_dso to core modules
+PACKAGECONFIG[dso] = "--enable-dso, --disable-dso"
+PACKAGECONFIG[largefile] = "--enable-largefile, --disable-largefile"
+
+#omit mod_auth_file from core modules
+PACKAGECONFIG[auth] = "--enable-auth-file, --disable-auth-file"
+
+
+# proftpd uses libltdl which currently makes configuring using
+# autotools.bbclass a pain...
+do_configure () {
+    oe_runconf
+    cp ${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool ${S}/libtool
+}
+
+FTPUSER = "ftp"
+FTPGROUP = "ftp"
+
+do_install () {
+    oe_runmake DESTDIR=${D} install
+    rmdir ${D}${libdir}/proftpd ${D}${datadir}/locale
+    [ -d ${D}${libexecdir} ] && rmdir ${D}${libexecdir}
+    sed -i '/ *User[ \t]*/s/ftp/${FTPUSER}/' ${D}${sysconfdir}/proftpd.conf
+    sed -i '/ *Group[ \t]*/s/ftp/${FTPGROUP}/' ${D}${sysconfdir}/proftpd.conf
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/proftpd-basic.init ${D}${sysconfdir}/init.d/proftpd
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/proftpd
+    sed -i 's!/etc/!${sysconfdir}/!g' ${D}${sysconfdir}/init.d/proftpd
+    sed -i 's!/var/!${localstatedir}/!g' ${D}${sysconfdir}/init.d/proftpd
+    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${sysconfdir}/init.d/proftpd
+
+    install -d ${D}${sysconfdir}/default
+    install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/proftpd
+
+    # create the pub directory
+    mkdir -p ${D}/home/${FTPUSER}/pub/
+    chown -R ${FTPUSER}:${FTPGROUP} ${D}/home/${FTPUSER}/pub
+
+    install -d ${D}/${systemd_unitdir}/system
+    install -m 644 ${WORKDIR}/proftpd.service ${D}/${systemd_unitdir}/system
+    sed -e 's,@BASE_SBINDIR@,${base_sbindir},g' \
+        -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+        -e 's,@SBINDIR@,${sbindir},g' \
+        -i ${D}${systemd_unitdir}/system/*.service
+}
+
+INITSCRIPT_NAME = "proftpd"
+INITSCRIPT_PARAM = "defaults 85 15"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "proftpd.service"
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "--system ${FTPGROUP}"
+USERADD_PARAM_${PN} = "--system -g ${FTPGROUP} --home-dir /var/lib/${FTPUSER} --no-create-home \
+                       --shell /bin/false ${FTPUSER}"
+
+FILES_${PN} += "/home/${FTPUSER}"
+
+RDEPENDS_${PN} += "perl"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd/ptpd-use-pkgconfig.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd/ptpd-use-pkgconfig.patch
new file mode 100644
index 0000000..e4578dd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd/ptpd-use-pkgconfig.patch
@@ -0,0 +1,35 @@
+From 4c850b92a1cf8cfa19677c66bcde2edfab1a4490 Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe_macdonald@mentor.com>
+Date: Tue, 24 Feb 2015 23:02:14 -0500
+Subject: [PATCH] ptpd: use pkgconfig
+
+Yocto uses pkg-config for libpcap, rather than pcap-config, so use that
+instead as the source for libs and cflags.
+
+Upstream-status: Inappropriate [ embedded specific ]
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index dc9541f..288f547 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -112,10 +112,10 @@ case "$try_pcap" in
+  yes)
+     case "$PATH_PCAP_CONFIG" in
+      /*)
+-	PCAP_LIBS=`$PATH_PCAP_CONFIG --libs`
++	PCAP_LIBS=`$PATH_PCAP_CONFIG --libs libpcap`
+ 	AC_SUBST([PCAP_LIBS])
+ 	# Separate CPPFLAGS and CFLAGS
+-	foo=`$PATH_PCAP_CONFIG --cflags`
++	foo=`$PATH_PCAP_CONFIG --cflags libpcap`
+ 	PCAP_CPPFLAGS=
+ 	PCAP_CFLAGS=
+ 	for i in $foo; do
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd/ptpd.conf b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd/ptpd.conf
new file mode 100644
index 0000000..ddd5710
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd/ptpd.conf
@@ -0,0 +1,7 @@
+#
+# PTPD Configuration
+#
+# See man ptpd2 for arguments.
+#
+# Example arguments
+PTPDARGS="-d 1 -i eth0"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd/ptpd.service b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd/ptpd.service
new file mode 100644
index 0000000..f84799e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd/ptpd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=ptpd time precision daemon
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/ptpd
+ExecStart=@BINDIR@/ptpd2 $PTPDARGS
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd_2.3.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd_2.3.1.bb
new file mode 100644
index 0000000..f6aaee0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/ptpd/ptpd_2.3.1.bb
@@ -0,0 +1,58 @@
+SUMMARY = "The PTP daemon (PTPd)"
+DESCRIPTION = "The PTP daemon (PTPd) implements the Precision Time protocol (PTP) as \
+defined by the relevant IEEE 1588 standard. PTP Version 1 implements IEEE-1588-2002, \
+and PTP Version 2 implements IEEE-1588-2008. PTP was developed to provide very precise \
+time coordination of LAN connected computers."
+HOMEPAGE = "http://sourceforge.net/projects/ptpd"
+SECTION = "net"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://README;md5=0733e1b3788ab2ebbc63bf33a020da1d"
+
+DEPENDS = "libpcap"
+
+inherit autotools systemd
+
+# return something like '1.2.3' or '1.2.3/rc1'
+#
+def get_sub(d):
+    parts = d.getVar('PV',True).split('-')
+    try:
+        return parts[0] + '/' + parts[1]
+    except:
+        return parts[0]
+
+SRC_URI = "http://downloads.sourceforge.net/project/ptpd/ptpd/${@get_sub(d)}/ptpd-${PV}.tar.gz \
+           file://ptpd-use-pkgconfig.patch \
+           file://ptpd.service \
+           file://ptpd.conf \
+"
+
+SRC_URI[md5sum] = "253bab7ab51d969616ea811be1f132f3"
+SRC_URI[sha256sum] = "0dbf54dd2c178bd9fe62481d2c37513ee36636d8bf137cfdad96891490cdbf93"
+
+S = "${WORKDIR}/ptpd-${PV}"
+
+EXTRA_OEMAKE = ""
+
+EXTRA_OECONF += "--disable-snmp --with-pcap-config=pkg-config"
+
+do_install() {
+    install -d ${D}${bindir} ${D}${mandir}/man8
+    install -m 0755 ${B}/src/ptpd2 ${D}${bindir}
+    install -m 0644 ${B}/src/ptpd2.8 ${D}${mandir}/man8
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/ptpd.service ${D}${systemd_unitdir}/system
+
+        sed -i -e 's#@SYSCONFDIR@#${sysconfdir}#g' ${D}${systemd_unitdir}/system/ptpd.service
+        sed -i -e 's#@BINDIR@#${bindir}#g' ${D}${systemd_unitdir}/system/ptpd.service
+
+        install -d ${D}${sysconfdir}/default/
+        install -m 0644 ${WORKDIR}/ptpd.conf ${D}${sysconfdir}/default/ptpd
+    fi
+}
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "ptpd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd/0001-Remove-hardcoded-usr-local-includes-from-configure.a.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd/0001-Remove-hardcoded-usr-local-includes-from-configure.a.patch
new file mode 100644
index 0000000..76523fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd/0001-Remove-hardcoded-usr-local-includes-from-configure.a.patch
@@ -0,0 +1,39 @@
+From 1bafadf2502334a3e972ff667061469316d0d2ca Mon Sep 17 00:00:00 2001
+From: Tudor Florea <tudor.florea@enea.com>
+Date: Tue, 4 Aug 2015 02:46:39 +0200
+Subject: [PATCH] Remove hardcoded /usr/local includes from configure.ac
+
+Upstream-Status: Inappropriate [config]
+
+Signed-off-by: Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com>
+Signed-off-by: Tudor Florea <tudor.florea@enea.com>
+---
+ configure.ac | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 6c78e8c..851d45d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -100,18 +100,6 @@ AC_ARG_VAR(PYTHON,local path to the python interpreter)
+ python_possible_path="/usr/bin:/usr/local/bin:/bin:/opt/python/bin:/opt/python/usr/bin:/opt/python/usr/local/bin"
+ AC_PATH_PROG(PYTHON,python,/usr/bin/env python,$python_possible_path)
+ 
+-if test -d /usr/local/include; then
+-  CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+-fi
+-
+-if test -d /usr/kerberos/include; then
+-  CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
+-fi
+-
+-if test -d /usr/local/lib; then
+-  LDFLAGS="$LDFLAGS -L/usr/local/lib"
+-fi
+-
+ CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2"
+ 
+ dnl Checks for header files
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd/nostrip.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd/nostrip.patch
new file mode 100644
index 0000000..4cb33bc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd/nostrip.patch
@@ -0,0 +1,31 @@
+From 0290bd6f4ceddff2c52dff833c9d31d24de7d0e1 Mon Sep 17 00:00:00 2001
+From: Tudor Florea <tudor.florea@enea.com>
+Date: Tue, 4 Aug 2015 03:07:01 +0200
+Subject: [PATCH] Don't mess with CFLAGS and LDFLAGS when --with-minimal is specified
+
+We especially don't want stripping enabled.
+
+Upstream-Status: Inappropriate [config]
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+Signed-off-by: Tudor Florea <tudor.florea@enea.com>
+---
+ configure.ac | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 851d45d..dc410a1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -423,8 +423,6 @@ AC_ARG_WITH(minimal,
+     AC_DEFINE(NO_FTP_USERS)
+     AC_DEFINE(WITHOUT_ASCII)    
+     AC_DEFINE(BORING_MODE)
+-    CFLAGS="$CFLAGS -Os -fomit-frame-pointer -fno-unroll-loops "
+-    LDFLAGS="$LDFLAGS -s "
+   fi ])
+ 
+ AC_ARG_WITH(paranoidmsg,
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd_1.0.42.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd_1.0.42.bb
new file mode 100644
index 0000000..c1f1504
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd_1.0.42.bb
@@ -0,0 +1,22 @@
+SUMMARY = "FTP Server with a strong focus on software security"
+DESCRIPTION = "Pure-FTPd is a free (BSD license), secure, production-quality and standard-conformant FTP server."
+HOMEPAGE = "http://www.pureftpd.org/project/pure-ftpd"
+SECTION = "net"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=90352fb2bfe17f4261687a0d6e09f489"
+
+DEPENDS = "libcap"
+
+
+SRC_URI = "http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-${PV}.tar.gz \
+           file://0001-Remove-hardcoded-usr-local-includes-from-configure.a.patch \
+           file://nostrip.patch \
+"
+SRC_URI[md5sum] = "4195af8f0e5ee2a798b1014071dae3a3"
+SRC_URI[sha256sum] = "7be73a8e58b190a7054d2ae00c5e650cb9e091980420082d02ec3c3b68d8e7f9"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-minimal"
+PACKAGECONFIG[libsodium] ="ac_cv_lib_sodium_crypto_pwhash_scryptsalsa208sha256_str=yes, \
+                       ac_cv_lib_sodium_crypto_pwhash_scryptsalsa208sha256_str=no, libsodium"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/radvd.default b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/radvd.default
new file mode 100644
index 0000000..7cb73c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/radvd.default
@@ -0,0 +1 @@
+OPTIONS="-u radvd"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/radvd.init b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/radvd.init
new file mode 100755
index 0000000..8b26317
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/radvd.init
@@ -0,0 +1,135 @@
+#! /bin/sh
+#
+### BEGIN INIT INFO
+# Provides:       radvd
+# Required-Start: $remote_fs $named $syslog
+# Required-Stop:  $remote_fs $named $syslog
+# Default-Start:  3 5
+# Default-Stop:   0 1 2 6
+# Description:    router advertisement daemon
+### END INIT INFO
+
+# Source function library.
+. /etc/init.d/functions
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/radvd
+NAME=radvd
+DESC=radvd
+CONFIG=/etc/radvd.conf
+SAVED_SETTINGS=/var/run/radvd/saved-settings
+PIDFILE=/var/run/radvd/radvd.pid
+OPTIONS="-u radvd -p $PIDFILE"
+
+test -x $DAEMON || exit 0
+
+set -e
+
+# Check for IPv6 support in kernel
+if test \! -e /proc/sys/net/ipv6; then
+  echo "IPv6 support must be enabled in the kernel for $DESC to work."
+  exit
+fi
+
+save_settings()
+{
+    local file=$1
+    
+    rm -f $file
+    for if_conf in /proc/sys/net/ipv6/conf/*; do
+	echo -e "$if_conf/forwarding\t `cat $if_conf/forwarding`" >> $file
+    done
+    return 0
+}
+
+restore_settings()
+{
+    file=$1
+    
+    if [ ! -f $file ]; then
+	echo "$0: warning: cannot restore settings"
+	return
+    fi
+    
+    ( 
+	while read f value; do
+	    if [ -w $f ]; then
+		echo $value > $f
+	    fi
+	done
+    ) < $file
+}
+
+chkconfig() {
+    if [ ! -e $CONFIG -o ! -s $CONFIG ]; then
+        echo ""
+	echo "* $CONFIG does not exist or is empty." 
+	echo "* See /usr/share/doc/radvd/radvd.conf.example for a simple"
+	echo "* configuration suitable for most systems, and radvd.conf(5)"
+	echo "* for configuration file syntax. radvd will *not* be started."
+	exit 0
+    fi
+}
+
+case "$1" in
+  start)
+	echo -n "Starting $DESC: "
+	chkconfig
+	save_settings $SAVED_SETTINGS
+	
+        # We must enable IPv6 forwarding for radvd to work
+	echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
+
+	# Check for stale pidfile; radvd won't start if one is lying around
+	if [ -f $PIDFILE ] && ! ps `cat  $PIDFILE` > /dev/null; then
+	  rm -f $PIDFILE
+	fi
+	if ! start-stop-daemon --oknodo --start --pidfile $PIDFILE \
+		--exec $DAEMON -- $OPTIONS; then
+	  echo "failed." && exit 1
+	fi
+	echo "$NAME."
+	;;
+  stop)
+	echo -n "Stopping $DESC: "
+	if ! [ -f $PIDFILE ] ; then
+		echo "not running."
+		exit 0
+	fi
+	start-stop-daemon --oknodo --stop --pidfile $PIDFILE \
+		--exec $DAEMON
+	restore_settings $SAVED_SETTINGS
+	rm -f $SAVED_SETTINGS
+	echo "$NAME."
+	;;
+  status)
+	status $DAEMON;
+	exit $?
+	;;
+  reload|force-reload)
+	echo "Reloading $DESC configuration files."
+	start-stop-daemon --stop --signal HUP --quiet --pidfile \
+	    $PIDFILE --exec $DAEMON
+	;;
+  restart)
+	chkconfig
+	echo -n "Restarting $DESC: "
+	if ! start-stop-daemon --stop --quiet --pidfile \
+		$PIDFILE --exec $DAEMON; then
+	  # stop failed, so we were not running
+	  save_settings $SAVED_SETTINGS
+	  echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
+	fi
+	sleep 1
+	start-stop-daemon --start --quiet --pidfile \
+		$PIDFILE --exec $DAEMON -- $OPTIONS
+	echo "$NAME."
+	;;
+  *)
+	N=/etc/init.d/$NAME
+	echo "Usage: $N {start|stop|status|restart|reload|force-reload}" >&2
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/radvd.service b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/radvd.service
new file mode 100644
index 0000000..e60798a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/radvd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Router advertisement daemon for IPv6
+After=network.target
+ConditionPathExists=@SYSCONFDIR@/radvd.conf
+
+[Service]
+EnvironmentFile=-@SYSCONFDIR@/default/radvd
+ExecStart=@SBINDIR@/radvd -n $OPTIONS
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/volatiles.03_radvd b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/volatiles.03_radvd
new file mode 100644
index 0000000..89256a4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/files/volatiles.03_radvd
@@ -0,0 +1,2 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d radvd root 0755 /var/run/radvd none
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/radvd.inc b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/radvd.inc
new file mode 100644
index 0000000..47e4736
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/radvd.inc
@@ -0,0 +1,67 @@
+SUMMARY = "IPv6 router advertisement daemon"
+DESCRIPTION = "radvd is the router advertisement daemon for IPv6. It \
+listens to router solicitations and sends router \
+advertisements as described in RFC 2461, Neighbor \
+Discovery for IP Version 6 (IPv6). With these \
+advertisements hosts can automatically configure their \
+addresses and some other parameters. They also can \
+choose a default router based on these advertisements."
+HOMEPAGE = "http://www.litech.org/radvd/"
+SECTION = "net"
+DEPENDS = "flex-native libdaemon"
+
+# License is BSD-Style (with advertising clause) but also has an additional 0th clause
+LICENSE = "radvd"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=73ebbf7182ae996e65e8fadc9a8c45db"
+
+SRC_URI = "http://v6web.litech.org/radvd/dist/radvd-${PV}.tar.gz \
+           file://radvd.init \
+           file://radvd.service \
+           file://volatiles.03_radvd \
+           file://radvd.default"
+
+inherit autotools update-rc.d useradd pkgconfig systemd
+
+SYSTEMD_SERVICE_${PN} = "radvd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+do_install_append () {
+    install -m 0755 -d ${D}${sysconfdir}/init.d \
+                       ${D}${sysconfdir}/default/volatiles \
+                       ${D}${docdir}/radvd
+    # Install init script and volatiles
+    install -m 0755 ${WORKDIR}/radvd.init ${D}${sysconfdir}/init.d/radvd
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/radvd
+    sed -i 's!/etc/!${sysconfdir}/!g' ${D}${sysconfdir}/init.d/radvd
+    sed -i 's!/var/!${localstatedir}/!g' ${D}${sysconfdir}/init.d/radvd
+    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${sysconfdir}/init.d/radvd
+
+    install -m 0644 ${WORKDIR}/volatiles.03_radvd ${D}${sysconfdir}/default/volatiles/volatiles.03_radvd
+
+    # Install systemd service files
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/radvd.service ${D}${systemd_unitdir}/system
+    sed -i -e 's#@SYSCONFDIR@#${sysconfdir}#g' \
+           -e 's#@SBINDIR@#${sbindir}#g' \
+           -e 's#@BASE_BINDIR@#${base_bindir}#g' ${D}${systemd_unitdir}/system/radvd.service
+
+    # Install default environment file
+    install -m 0644 ${WORKDIR}/radvd.default ${D}${sysconfdir}/default/radvd
+
+    # Documentation
+    for i in radvd.conf.example README; do \
+        install -m 0644 ${S}/$i ${D}${docdir}/radvd; \
+    done
+}
+
+INITSCRIPT_NAME = "radvd"
+INITSCRIPT_PARAMS = "defaults 20 80"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system --home ${localstatedir}/run/radvd/ -M -g nogroup radvd"
+
+pkg_postinst_${PN} () {
+    if [ -z "$D" -a -x /etc/init.d/populate-volatile.sh ]; then
+	/etc/init.d/populate-volatile.sh update
+    fi
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/radvd_2.11.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/radvd_2.11.bb
new file mode 100644
index 0000000..c0b7532
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/radvd/radvd_2.11.bb
@@ -0,0 +1,5 @@
+
+require radvd.inc
+
+SRC_URI[md5sum] = "57fc6021f6a5e5472e455937685472a3"
+SRC_URI[sha256sum] = "80ad60b15689e9591a5af393a57a1d93304deeff2e46482f0fd98046c00622f8"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Add-default-entry-for-cross-compile.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Add-default-entry-for-cross-compile.patch
new file mode 100644
index 0000000..5f845bb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Add-default-entry-for-cross-compile.patch
@@ -0,0 +1,31 @@
+From faa212a4e0aaf442ff58fca50770a8fadc1038e3 Mon Sep 17 00:00:00 2001
+Message-Id: <faa212a4e0aaf442ff58fca50770a8fadc1038e3.1382041123.git.Jim.Somerville@windriver.com>
+From: Jim Somerville <Jim.Somerville@windriver.com>
+Date: Thu, 17 Oct 2013 16:17:48 -0400
+Subject: [PATCH 1/1] Add default entry for cross compile
+
+Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
+---
+ acinclude/krb5.m4 |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+diff --git a/acinclude/krb5.m4 b/acinclude/krb5.m4
+index 5d9ac36..7a072a2 100644
+--- a/acinclude/krb5.m4
++++ b/acinclude/krb5.m4
+@@ -82,7 +82,11 @@ main(void)
+ 
+         return 0;
+ }
+-]])], [ squid_cv_broken_heimdal_krb5_h=yes ], [ squid_cv_broken_heimdal_krb5_h=no ])
++]])], [ squid_cv_broken_heimdal_krb5_h=yes ], [ squid_cv_broken_heimdal_krb5_h=no ],
++[
++  dnl Can't test in cross compiled env - so assume good
++  squid_cv_broken_heimdal_krb5_h=no
++])
+     ],
+     [
+      dnl Can't test in cross compiled env - so assume good
+-- 
+1.7.4.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/CVE-2016-3947.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/CVE-2016-3947.patch
new file mode 100644
index 0000000..c83e6ab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/CVE-2016-3947.patch
@@ -0,0 +1,48 @@
+From 0fe108ecb2bbdf684f159950eaa55d22f07c4008 Mon Sep 17 00:00:00 2001
+From: Catalin Enache <catalin.enache@windriver.com>
+Date: Wed, 20 Apr 2016 15:17:18 +0300
+Subject: [PATCH] pinger: Fix buffer overflow in Icmp6::Recv
+
+Upstream-Status: Backport
+CVE: CVE-2016-3947
+
+Author: Yuriy M. Kaminskiy <yumkam@gmail.com>
+Committer: Amos Jeffries <squid3@treenet.co.nz
+Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
+---
+ src/icmp/Icmp6.cc | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/icmp/Icmp6.cc b/src/icmp/Icmp6.cc
+index 794a51a..ee84b80 100644
+--- a/src/icmp/Icmp6.cc
++++ b/src/icmp/Icmp6.cc
+@@ -256,7 +256,7 @@ Icmp6::Recv(void)
+     #define ip6_hops    // HOPS!!!  (can it be true??)
+ 
+         ip = (struct ip6_hdr *) pkt;
+-        pkt += sizeof(ip6_hdr);
++        NP: echo size needs to +sizeof(ip6_hdr);
+ 
+     debugs(42, DBG_CRITICAL, HERE << "ip6_nxt=" << ip->ip6_nxt <<
+             ", ip6_plen=" << ip->ip6_plen <<
+@@ -267,7 +267,6 @@ Icmp6::Recv(void)
+     */
+ 
+     icmp6header = (struct icmp6_hdr *) pkt;
+-    pkt += sizeof(icmp6_hdr);
+ 
+     if (icmp6header->icmp6_type != ICMP6_ECHO_REPLY) {
+ 
+@@ -292,7 +291,7 @@ Icmp6::Recv(void)
+         return;
+     }
+ 
+-    echo = (icmpEchoData *) pkt;
++    echo = (icmpEchoData *) (pkt + sizeof(icmp6_hdr));
+ 
+     preply.opcode = echo->opcode;
+ 
+-- 
+2.7.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Fix-flawed-dynamic-ldb-link-test-in-configure.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Fix-flawed-dynamic-ldb-link-test-in-configure.patch
new file mode 100644
index 0000000..2304c5f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Fix-flawed-dynamic-ldb-link-test-in-configure.patch
@@ -0,0 +1,43 @@
+From 0d5b337ff5ef7dd48f970f08bd95d6327917cfd1 Mon Sep 17 00:00:00 2001
+Message-Id: <0d5b337ff5ef7dd48f970f08bd95d6327917cfd1.1382375807.git.Jim.Somerville@windriver.com>
+From: Jim Somerville <Jim.Somerville@windriver.com>
+Date: Mon, 21 Oct 2013 12:50:44 -0400
+Subject: [PATCH 1/1] Fix flawed dynamic -ldb link test in configure
+
+The test uses dbopen, but just ignores the fact
+that this function may not exist in the db version
+used.  This leads to the dynamic link test failing
+and the configure script just making assumptions
+about why and setting the need for -ldb incorrectly.
+
+Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
+---
+ configure.ac |   12 ++++++++++--
+ 1 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 962a748..42e6a93 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3051,8 +3051,16 @@ AC_CHECK_DECL(dbopen,,,[
+ #include <db.h>
+ #endif])
+ 
+-dnl 1.85
+-SQUID_CHECK_DBOPEN_NEEDS_LIBDB
++if test "x$ac_cv_have_decl_dbopen" = "xyes"; then
++  dnl 1.85
++  SQUID_CHECK_DBOPEN_NEEDS_LIBDB
++else
++  # dbopen isn't there. So instead of running a compile/link test that
++  # uses it and is thus guaranteed to fail, we just assume that we will
++  # need to link in the db library, rather than fabricate some other
++  # dynamic compile/link test.
++  ac_cv_dbopen_libdb="yes"
++fi
+ if test "x$ac_cv_dbopen_libdb" = "xyes"; then
+     LIB_DB="-ldb"
+ fi
+-- 
+1.7.4.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Set-up-for-cross-compilation.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Set-up-for-cross-compilation.patch
new file mode 100644
index 0000000..4ca2744
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Set-up-for-cross-compilation.patch
@@ -0,0 +1,29 @@
+From 17e5a28667f667859c48bee25e575a072d39ee1b Mon Sep 17 00:00:00 2001
+Message-Id: <17e5a28667f667859c48bee25e575a072d39ee1b.1381956170.git.Jim.Somerville@windriver.com>
+From: Jim Somerville <Jim.Somerville@windriver.com>
+Date: Wed, 16 Oct 2013 16:41:03 -0400
+Subject: [PATCH 1/1] Set up for cross compilation
+
+Set the host compiler to BUILD_CXX so
+proper cross compilation can occur.
+
+Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
+---
+ configure.ac |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c2d3033..dda9ed9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -19,6 +19,7 @@ m4_include([acinclude/lib-checks.m4])
+ m4_include([acinclude/ax_cxx_compile_stdcxx_0x.m4])
+ m4_include([acinclude/ax_cxx_0x_types.m4])
+ 
++HOSTCXX="$BUILD_CXX"
+ PRESET_CFLAGS="$CFLAGS"
+ PRESET_CXXFLAGS="$CXXFLAGS"
+ PRESET_LDFLAGS="$LDFLAGS"
+-- 
+1.7.4.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Skip-AC_RUN_IFELSE-tests.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Skip-AC_RUN_IFELSE-tests.patch
new file mode 100644
index 0000000..7b6dcc8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/Skip-AC_RUN_IFELSE-tests.patch
@@ -0,0 +1,64 @@
+Subject: [PATCH] Skip AC_RUN_IFELSE tests
+
+Upstream-Status: Inappropriate [cross compiling specific]
+
+Such tests are not supported in a cross compile
+environment.  Choose sane defaults.
+
+Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ acinclude/krb5.m4       |   10 +++++++++-
+ acinclude/lib-checks.m4 |    8 ++++++--
+ 2 files changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/acinclude/krb5.m4 b/acinclude/krb5.m4
+index 946bea8..7a072a2 100644
+--- a/acinclude/krb5.m4
++++ b/acinclude/krb5.m4
+@@ -82,7 +82,15 @@ main(void)
+ 
+         return 0;
+ }
+-]])], [ squid_cv_broken_heimdal_krb5_h=yes ], [ squid_cv_broken_heimdal_krb5_h=no ])
++]])], [ squid_cv_broken_heimdal_krb5_h=yes ], [ squid_cv_broken_heimdal_krb5_h=no ],
++[
++  dnl Can't test in cross compiled env - so assume good
++  squid_cv_broken_heimdal_krb5_h=no
++])
++    ],
++    [
++     dnl Can't test in cross compiled env - so assume good
++     squid_cv_broken_heimdal_krb5_h=no
+     ])
+   ])
+ ]) dnl SQUID_CHECK_KRB5_HEIMDAL_BROKEN_KRB5_H
+diff --git a/acinclude/lib-checks.m4 b/acinclude/lib-checks.m4
+index 2bf98ee..50dba9b 100644
+--- a/acinclude/lib-checks.m4
++++ b/acinclude/lib-checks.m4
+@@ -128,7 +128,9 @@ AC_DEFUN([SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS],[
+    AC_DEFINE(SQUID_SSLGETCERTIFICATE_BUGGY, 1)
+    AC_MSG_RESULT([yes])
+   ],
+-  [])
++  [
++   AC_MSG_RESULT([skipped - can't test in cross-compiled env])
++  ])
+ 
+   AC_MSG_CHECKING(whether the workaround for SSL_get_certificate works)
+   AC_RUN_IFELSE([
+@@ -154,7 +156,9 @@ AC_DEFUN([SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS],[
+   [
+    AC_MSG_RESULT([no])
+   ],
+-[])
++[
++   AC_MSG_RESULT([skipped - can't test in cross-compiled env])
++])
+ 
+ SQUID_STATE_ROLLBACK(check_SSL_get_certificate)
+ ])
+-- 
+1.7.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/run-ptest b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/run-ptest
new file mode 100644
index 0000000..de79a29
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+#
+make -C test-suite -k runtest-TESTS
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/squid-use-serial-tests-config-needed-by-ptest.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/squid-use-serial-tests-config-needed-by-ptest.patch
new file mode 100644
index 0000000..9e2ceab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/squid-use-serial-tests-config-needed-by-ptest.patch
@@ -0,0 +1,31 @@
+From 2192fdbc90b0ff2d5408e8763df200620870deea Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Mon, 13 Oct 2014 01:32:37 -0700
+Subject: [PATCH] squid: use serial-tests config needed by ptest
+
+ptest needs buildtest-TESTS and runtest-TESTS targets.
+serial-tests is required to generate those targets.
+
+Upstream-Status: Inappropriate [default automake behavior incompatible with ptest]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ configure.ac |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 6f7171f..ab9b93e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3,7 +3,7 @@ AC_PREREQ(2.61)
+ AC_CONFIG_HEADERS([include/autoconf.h])
+ AC_CONFIG_AUX_DIR(cfgaux)
+ AC_CONFIG_SRCDIR([src/main.cc])
+-AM_INIT_AUTOMAKE([tar-ustar nostdinc])
++AM_INIT_AUTOMAKE([tar-ustar nostdinc serial-tests])
+ AC_REVISION($Revision$)dnl
+ AC_PREFIX_DEFAULT(/usr/local/squid)
+ AM_MAINTAINER_MODE
+-- 
+1.7.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/volatiles.03_squid b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/volatiles.03_squid
new file mode 100644
index 0000000..b96865d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/files/volatiles.03_squid
@@ -0,0 +1,2 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d squid squid 0755 /var/run/squid none
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/squid_3.5.7.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/squid_3.5.7.bb
new file mode 100644
index 0000000..e35aad7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/squid/squid_3.5.7.bb
@@ -0,0 +1,79 @@
+SUMMARY = "A fully-featured http proxy and web-cache daemon for Linux"
+DESCRIPTION = "A fully-featured http proxy and web-cache daemon for Linux. \
+Squid offers a rich access control, authorization and logging environment to \
+develop web proxy and content serving applications. \
+Squid offers a rich set of traffic optimization options, most of which are \
+enabled by default for simpler installation and high performance. \
+"
+HOMEPAGE = "http://www.squid-cache.org"
+SECTION = "web"
+LICENSE = "GPLv2+"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 1)}"
+MIN_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "http://www.squid-cache.org/Versions/v${MAJ_VER}/${MIN_VER}/${BPN}-${PV}.tar.bz2 \
+           file://Set-up-for-cross-compilation.patch \
+           file://Skip-AC_RUN_IFELSE-tests.patch \
+           file://Fix-flawed-dynamic-ldb-link-test-in-configure.patch \
+           file://squid-use-serial-tests-config-needed-by-ptest.patch \
+           file://run-ptest \
+           file://volatiles.03_squid \
+           file://CVE-2016-3947.patch \
+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=c492e2d6d32ec5c1aad0e0609a141ce9 \
+                    file://errors/COPYRIGHT;md5=0fed8f1462f6fdbc62bb431bcb618f46 \
+                   "
+SRC_URI[md5sum] = "06e43abc67aedcc3903a2780de20a3ed"
+SRC_URI[sha256sum] = "b7dcec8c5cb7f5687aff4256a7522f670c310a350cc9e9c0f29f3fd9cf88d017"
+
+DEPENDS = "libtool krb5 openldap db cyrus-sasl"
+
+inherit autotools useradd ptest
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system --no-create-home --home-dir /var/run/squid --shell /bin/false --user-group squid"
+
+PACKAGECONFIG ??= "${@base_contains('TARGET_ARCH', 'powerpc', 'noatomics', '', d)} \
+                   ${@base_contains('TARGET_ARCH', 'mips', 'noatomics', '', d)} \
+                  "
+PACKAGECONFIG[libnetfilter-conntrack] = "--with-netfilter-conntrack=${includedir}, --without-netfilter-conntrack, libnetfilter-conntrack"
+PACKAGECONFIG[noatomics] = "squid_cv_gnu_atomics=no,squid_cv_gnu_atomics=yes,,"
+
+BASIC_AUTH = "DB SASL LDAP NIS"
+DEPENDS += "${@base_contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+BASIC_AUTH += "${@base_contains('DISTRO_FEATURES', 'pam', 'PAM', '', d)}"
+
+EXTRA_OECONF += "--with-default-user=squid --enable-auth-basic='${BASIC_AUTH}'"
+export BUILDCXXFLAGS="${BUILD_CXXFLAGS}"
+
+TESTDIR = "test-suite"
+do_compile_ptest() {
+    oe_runmake -C ${TESTDIR} buildtest-TESTS
+}
+
+do_install_ptest() {
+    cp -rf ${B}/${TESTDIR} ${D}${PTEST_PATH}
+    cp -rf ${S}/${TESTDIR} ${D}${PTEST_PATH}
+
+    # do NOT need to rebuild Makefile itself
+    sed -i 's/^Makefile:.*$/Makefile:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+}
+
+do_install_append() {
+	install -d ${D}${sysconfdir}/default/volatiles
+	install -m 0644 ${WORKDIR}/volatiles.03_squid  ${D}${sysconfdir}/default/volatiles/volatiles.03_squid
+	rmdir "${D}${localstatedir}/run/${BPN}"
+	rmdir --ignore-fail-on-non-empty "${D}${localstatedir}/run"
+}
+
+FILES_${PN} += "${libdir} ${datadir}/errors ${datadir}/icons"
+FILES_${PN}-dbg += "/usr/src/debug"
+FILES_${PN}-doc += "${datadir}/*.txt"
+
+RDEPENDS_${PN} += "perl"
+RDEPENDS_${PN}-ptest += "make"
+
+# http://errors.yoctoproject.org/Errors/Details/35128/
+PNBLACKLIST[squid] ?= "BROKEN: sysroots/qemuarm/usr/include/linux/in.h:28:16: error: redeclaration of 'IPPROTO_IP'"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/add-error-check-for-disk-filled-up.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/add-error-check-for-disk-filled-up.patch
new file mode 100644
index 0000000..d01c20d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/add-error-check-for-disk-filled-up.patch
@@ -0,0 +1,81 @@
+From bd5773947af5ca80ca546ad5625818fc912bdd60 Mon Sep 17 00:00:00 2001
+From: "Roy.Li" <rongqing.li@windriver.com>
+Date: Thu, 22 Aug 2013 08:56:09 +0800
+Subject: [PATCH] tftp-hpa: add error check for disk filled up
+
+Upstream-status: Pending [Sent to http://www.syslinux.org/archives/2013-August/020765.html]
+
+Add error check when the write-buffer is finally flushed to the file,
+the caller can detect if the disk filled up (or had an i/o error) and
+return a NOSAPCE nak to the other side.
+
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ common/tftpsubs.c |    8 +++++---
+ tftpd/tftpd.c     |   12 ++++++++++--
+ 2 files changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/common/tftpsubs.c b/common/tftpsubs.c
+index 8c999f6..b4d4ffe 100644
+--- a/common/tftpsubs.c
++++ b/common/tftpsubs.c
+@@ -206,20 +206,22 @@ int write_behind(FILE * file, int convert)
+ 
+     p = buf;
+     ct = count;
++    count = 0;
+     while (ct--) {              /* loop over the buffer */
+         c = *p++;               /* pick up a character */
+         if (prevchar == '\r') { /* if prev char was cr */
+             if (c == '\n')      /* if have cr,lf then just */
+-                fseek(file, -1, 1);     /* smash lf on top of the cr */
++                count = count - 1;
+             else if (c == '\0') /* if have cr,nul then */
+                 goto skipit;    /* just skip over the putc */
+             /* else just fall through and allow it */
+         }
+-        putc(c, file);
++        buf[count] = c;
++        count ++;
+       skipit:
+         prevchar = c;
+     }
+-    return count;
++    return write(fileno(file), buf, count);
+ }
+ 
+ /* When an error has occurred, it is possible that the two sides
+diff --git a/tftpd/tftpd.c b/tftpd/tftpd.c
+index 1873e70..c2adbda 100644
+--- a/tftpd/tftpd.c
++++ b/tftpd/tftpd.c
+@@ -1681,7 +1681,11 @@ static void tftp_recvfile(const struct formats *pf, struct tftphdr *oap, int oac
+             syslog(LOG_WARNING, "tftpd: write(ack): %m");
+             goto abort;
+         }
+-        write_behind(file, pf->f_convert);
++        if(write_behind(file, pf->f_convert) < 0) {
++            nak(ENOSPACE, NULL);
++            (void)fclose(file);
++            goto abort;
++        }
+         for (;;) {
+             n = recv_time(peer, dp, PKTSIZE, 0, &r_timeout);
+             if (n < 0) {        /* really? */
+@@ -1712,7 +1716,11 @@ static void tftp_recvfile(const struct formats *pf, struct tftphdr *oap, int oac
+             goto abort;
+         }
+     } while (size == segsize);
+-    write_behind(file, pf->f_convert);
++    if(write_behind(file, pf->f_convert) < 0) {
++        nak(ENOSPACE, NULL);
++        (void)fclose(file);
++        goto abort;
++    }
+     (void)fclose(file);         /* close data file */
+ 
+     ap->th_opcode = htons((u_short) ACK);       /* send the "final" ack */
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/default b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/default
new file mode 100644
index 0000000..1dce7fd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/default
@@ -0,0 +1,3 @@
+#Defaults for tftpd-hpa
+RUN_DAEMON="yes"
+OPTIONS="-l -s /var/lib/tftpboot"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/fix-writing-emtpy-file.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/fix-writing-emtpy-file.patch
new file mode 100644
index 0000000..452aa05
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/fix-writing-emtpy-file.patch
@@ -0,0 +1,39 @@
+[PATCH] fix the empty file writting
+
+Upstream-Status: pending
+
+With the feature that checking the disk filled up, the return
+value of function write_behind was checked and used to detect
+the disk status. While for empty file, without data being
+written, this function will return -1 thus the disk filled up
+error was miss-raised.
+
+make write_behind to return 0 if written file is empty, to fix
+the this bug.
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ common/tftpsubs.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/common/tftpsubs.c b/common/tftpsubs.c
+index b4ea3f2..9f6cafc 100644
+--- a/common/tftpsubs.c
++++ b/common/tftpsubs.c
+@@ -198,9 +198,12 @@ int write_behind(FILE * file, int convert)
+     nextone = !nextone;         /* incr for next time */
+     buf = dp->th_data;
+ 
+-    if (count <= 0)
++    if (count < 0)
+         return -1;              /* nak logic? */
+ 
++    if (count == 0)
++        return 0;
++
+     if (convert == 0)
+         return write(fileno(file), buf, count);
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/init b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/init
new file mode 100644
index 0000000..9e18436
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/init
@@ -0,0 +1,105 @@
+#! /bin/sh
+#
+# Author:	Jaakko Niemi <liiwi@iki.fi>
+# Modified from skeleton file in sarge
+
+### BEGIN INIT INFO
+# Provides:          tftp-hpa
+# Required-Start:    $local_fs $remote_fs $syslog $network
+# Required-Stop:     $local_fs $remote_fs $syslog $network
+# Default-Start:     2 3 4 5
+# Default-Stop:      1
+# Short-Description: HPA's tftp client 
+# Description:       tftp server to allow booting clients which support
+#                    the PXE protocol.
+### END INIT INFO
+
+set -e
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DESC="HPA's tftpd"
+NAME=in.tftpd-hpa
+SCRIPTNAME=/etc/init.d/tftpd-hpa
+
+# Read config file if it is present.
+if [ -r /etc/default/tftpd-hpa ]
+then
+	. /etc/default/tftpd-hpa
+fi
+
+DAEMON=/usr/sbin/$NAME
+PIDFILE=/var/run/$NAME.pid
+
+# Gracefully exit if the package has been removed.
+test -x $DAEMON || exit 0
+
+if [ "$RUN_DAEMON" != "yes" ] ; then
+         echo "tftpd-hpa disabled in /etc/default/tftpd-hpa"
+	 exit 0
+fi
+
+#
+#	Function that starts the daemon/service.
+#
+d_start() {
+	start-stop-daemon --start --quiet --exec $DAEMON -- $OPTIONS
+}
+
+#
+#	Function that stops the daemon/service.
+#
+d_stop() {
+	start-stop-daemon --stop --quiet --name $NAME
+}
+
+#
+#	Function that sends a SIGHUP to the daemon/service.
+#
+d_reload() {
+	start-stop-daemon --stop --quiet --name $NAME --signal 1
+}
+
+case "$1" in
+  start)
+	echo  "Starting $DESC: $NAME"
+	d_start
+	echo "."
+	;;
+  stop)
+	echo  "Stopping $DESC: $NAME"
+	d_stop
+	echo "."
+	;;
+  #reload)
+	#
+	#	If the daemon can reload its configuration without
+	#	restarting (for example, when it is sent a SIGHUP),
+	#	then implement that here.
+	#
+	#	If the daemon responds to changes in its config file
+	#	directly anyway, make this an "exit 0".
+	#
+	# echo -n "Reloading $DESC configuration..."
+	# d_reload
+	# echo "done."
+  #;;
+  restart|force-reload)
+	#
+	#	If the "reload" option is implemented, move the "force-reload"
+	#	option to the "reload" entry above. If not, "force-reload" is
+	#	just the same as "restart".
+	#
+	echo "Restarting $DESC: $NAME"
+	d_stop
+	sleep 1
+	d_start
+	echo "."
+	;;
+  *)
+	# echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.40-remap.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.40-remap.patch
new file mode 100644
index 0000000..3f69060
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.40-remap.patch
@@ -0,0 +1,25 @@
+Patch originally from Fedora
+
+http://pkgs.fedoraproject.org/cgit/tftp.git/
+
+Upstream-Status: Pending
+
+diff -up tftp-hpa-0.49/tftpd/remap.c.zero tftp-hpa-0.49/tftpd/remap.c
+--- tftp-hpa-0.49/tftpd/remap.c.zero	2008-10-20 18:08:31.000000000 -0400
++++ tftp-hpa-0.49/tftpd/remap.c	2008-11-25 11:41:09.000000000 -0500
+@@ -286,6 +286,7 @@ struct rule *parserulefile(FILE * f)
+     int lineno = 0;
+     int err = 0;
+ 
++    memset(this_rule, '\0', sizeof(struct rule));
+     while (lineno++, fgets(line, MAXLINE, f)) {
+         rv = parseline(line, this_rule, lineno);
+         if (rv < 0)
+@@ -294,6 +295,7 @@ struct rule *parserulefile(FILE * f)
+             *last_rule = this_rule;
+             last_rule = &this_rule->next;
+             this_rule = tfmalloc(sizeof(struct rule));
++            memset(this_rule, '\0', sizeof(struct rule));
+         }
+     }
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.42-tftpboot.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.42-tftpboot.patch
new file mode 100644
index 0000000..98a86b7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.42-tftpboot.patch
@@ -0,0 +1,60 @@
+Patch originally from Fedora
+
+http://pkgs.fedoraproject.org/cgit/tftp.git/
+
+Upstream-Status: Pending
+
+diff -up tftp-hpa-0.48/tftp-xinetd.tftpboot tftp-hpa-0.48/tftp-xinetd
+--- tftp-hpa-0.48/tftp-xinetd.tftpboot	2007-01-31 00:51:05.000000000 +0100
++++ tftp-hpa-0.48/tftp-xinetd	2008-05-20 12:05:53.000000000 +0200
+@@ -10,7 +10,7 @@ service tftp
+ 	wait			= yes
+ 	user			= root
+ 	server			= /usr/sbin/in.tftpd
+-	server_args		= -s /tftpboot
++	server_args		= -s /var/lib/tftpboot
+ 	disable			= yes
+ 	per_source		= 11
+ 	cps			= 100 2
+diff -up tftp-hpa-0.48/README.security.tftpboot tftp-hpa-0.48/README.security
+--- tftp-hpa-0.48/README.security.tftpboot	2008-05-29 17:36:32.000000000 +0200
++++ tftp-hpa-0.48/README.security	2008-05-29 17:37:21.000000000 +0200
+@@ -17,10 +17,10 @@ probably the following:
+ 
+ 1. Create a separate "tftpd" user and group only used for tftpd;
+ 2. Have all your boot files in a single directory tree (usually called 
+-   /tftpboot).
+-3. Specify "-p -u tftpd -s /tftpboot" on the tftpd command line; if
++   /var/lib/tftpboot).
++3. Specify "-p -u tftpd -s /var/lib/tftpboot" on the tftpd command line; if
+    you want clients to be able to create files use
+-   "-p -c -U 002 -u tftpd -s /tftpboot" (replace 002 with whatever
++   "-p -c -U 002 -u tftpd -s /var/lib/tftpboot" (replace 002 with whatever
+    umask is appropriate for your setup.)
+ 
+ 	       =======================================
+@@ -40,12 +40,12 @@ directly.  Thus, if your /etc/inetd.conf
+ line):
+ 
+ tftp	dgram	udp	wait	root	/usr/sbin/tcpd
+-/usr/sbin/in.tftpd -s /tftpboot -r blksize
++/usr/sbin/in.tftpd -s /var/lib/tftpboot -r blksize
+ 
+ ... it's better to change to ...
+ 
+ tftp	dgram	udp	wait	root	/usr/sbin/in.tftpd
+-in.tftpd -s /tftpboot -r blksize
++in.tftpd -s /var/lib/tftpboot -r blksize
+ 
+ You should make sure that you are using "wait" option in tftpd; you
+ also need to have tftpd spawned as root in order for chroot (-s) to
+diff -up tftp-hpa-0.48/tftpd/sample.rules.tftpboot tftp-hpa-0.48/tftpd/sample.rules
+--- tftp-hpa-0.48/tftpd/sample.rules.tftpboot	2008-05-29 17:38:46.000000000 +0200
++++ tftp-hpa-0.48/tftpd/sample.rules	2008-05-29 17:38:05.000000000 +0200
+@@ -30,5 +30,5 @@ rg	\\		/		# Convert backslashes to slash
+ rg	\#		@		# Convert hash marks to @ signs
+ rg	/../		/..no../	# Convert /../ to /..no../
+ e	^ok/				# These are always ok
+-r	^[^/]		/tftpboot/\0	# Convert non-absolute files
++r	^[^/]		/var/lib/tftpboot/\0	# Convert non-absolute files
+ a	\.pvt$				# Reject requests for private files
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-chk_retcodes.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-chk_retcodes.patch
new file mode 100644
index 0000000..7ae1a87
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-chk_retcodes.patch
@@ -0,0 +1,21 @@
+Patch originally from Fedora
+
+http://pkgs.fedoraproject.org/cgit/tftp.git/
+
+Upstream-Status: Pending
+
+diff -up tftp-hpa-0.49/tftpd/tftpd.c.chk_retcodes tftp-hpa-0.49/tftpd/tftpd.c
+--- tftp-hpa-0.49/tftpd/tftpd.c.chk_retcodes	2009-01-15 15:28:50.000000000 +0100
++++ tftp-hpa-0.49/tftpd/tftpd.c	2009-01-15 15:31:36.000000000 +0100
+@@ -932,7 +932,10 @@ int main(int argc, char **argv)
+             exit(EX_OSERR);
+         }
+ #ifdef __CYGWIN__
+-        chdir("/");             /* Cygwin chroot() bug workaround */
++				if (chdir("/") < 0) {			/* Cygwin chroot() bug workaround */
++					syslog(LOG_ERR, "chroot: %m");
++					exit(EX_OSERR);
++				}
+ #endif
+     }
+ #ifdef HAVE_SETREGID
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-cmd_arg.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-cmd_arg.patch
new file mode 100644
index 0000000..6b8ceaa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-cmd_arg.patch
@@ -0,0 +1,165 @@
+Patch originally from Fedora
+
+http://pkgs.fedoraproject.org/cgit/tftp.git/
+
+Upstream-Status: Pending
+
+diff -up tftp-hpa-0.49/config.h.cmd_arg tftp-hpa-0.49/config.h
+--- tftp-hpa-0.49/config.h.cmd_arg	2010-04-19 15:29:10.567331454 +0200
++++ tftp-hpa-0.49/config.h	2010-04-20 07:33:03.133232772 +0200
+@@ -291,6 +291,7 @@ typedef int socklen_t;
+ /* Prototypes for libxtra functions */
+ 
+ void *xmalloc(size_t);
++void *xrealloc(void *, size_t);
+ char *xstrdup(const char *);
+ 
+ #ifndef HAVE_BSD_SIGNAL
+diff -up tftp-hpa-0.49/configure.in.cmd_arg tftp-hpa-0.49/configure.in
+--- tftp-hpa-0.49/configure.in.cmd_arg	2008-10-21 00:08:31.000000000 +0200
++++ tftp-hpa-0.49/configure.in	2010-04-19 11:05:12.387340698 +0200
+@@ -152,6 +152,7 @@ OBJROOT=`pwd`
+ 
+ XTRA=false
+ PA_SEARCH_LIBS_AND_ADD(xmalloc, iberty)
++PA_SEARCH_LIBS_AND_ADD(xrealloc, iberty)
+ PA_SEARCH_LIBS_AND_ADD(xstrdup, iberty)
+ PA_SEARCH_LIBS_AND_ADD(bsd_signal, bsd, bsdsignal)
+ PA_SEARCH_LIBS_AND_ADD(getopt_long, getopt, getopt_long)
+diff -up tftp-hpa-0.49/lib/xrealloc.c.cmd_arg tftp-hpa-0.49/lib/xrealloc.c
+--- tftp-hpa-0.49/lib/xrealloc.c.cmd_arg	2010-04-19 11:05:12.387340698 +0200
++++ tftp-hpa-0.49/lib/xrealloc.c	2010-04-19 11:05:12.387340698 +0200
+@@ -0,0 +1,20 @@
++/*
++ * xrealloc.c
++ *
++ * Simple error-checking version of realloc()
++ *
++ */
++
++#include "config.h"
++
++void *xrealloc(void *ptr, size_t size)
++{
++    void *p = realloc(ptr, size);
++
++    if (!p) {
++        fprintf(stderr, "Out of memory!\n");
++        exit(128);
++    }
++
++    return p;
++}
+diff -up tftp-hpa-0.49/tftp/main.c.cmd_arg tftp-hpa-0.49/tftp/main.c
+--- tftp-hpa-0.49/tftp/main.c.cmd_arg	2008-10-21 00:08:31.000000000 +0200
++++ tftp-hpa-0.49/tftp/main.c	2010-04-19 11:05:12.389329337 +0200
+@@ -89,11 +89,14 @@ int connected;
+ const struct modes *mode;
+ #ifdef WITH_READLINE
+ char *line = NULL;
++char *remote_pth = NULL;
+ #else
+ char line[LBUFLEN];
++char remote_pth[LBUFLEN];
+ #endif
+ int margc;
+-char *margv[20];
++char **margv;
++int sizeof_margv=0;
+ const char *prompt = "tftp> ";
+ sigjmp_buf toplevel;
+ void intr(int);
+@@ -379,6 +382,10 @@ static void getmoreargs(const char *part
+         free(line);
+         line = NULL;
+     }
++    if (remote_pth) {
++        free(remote_pth);
++        remote_pth = NULL;
++    }
+     line = xmalloc(len + elen + 1);
+     strcpy(line, partial);
+     strcpy(line + len, eline);
+@@ -535,6 +542,7 @@ void put(int argc, char *argv[])
+     int fd;
+     int n, err;
+     char *cp, *targ;
++    long dirlen, namelen, lastlen=0;
+ 
+     if (argc < 2) {
+         getmoreargs("send ", "(file) ");
+@@ -588,9 +596,22 @@ void put(int argc, char *argv[])
+     }
+     /* this assumes the target is a directory */
+     /* on a remote unix system.  hmmmm.  */
+-    cp = strchr(targ, '\0');
+-    *cp++ = '/';
++    dirlen = strlen(targ)+1;
++#ifdef WITH_READLINE
++    remote_pth = xmalloc(dirlen+1);
++#endif
++    strcpy(remote_pth, targ);
++    remote_pth[dirlen-1] = '/';
++    cp = remote_pth + dirlen;
+     for (n = 1; n < argc - 1; n++) {
++#ifdef WITH_READLINE
++        namelen = strlen(tail(argv[n])) + 1;
++        if (namelen > lastlen) {
++            remote_pth = xrealloc(remote_pth, dirlen + namelen + 1);
++            cp = remote_pth + dirlen;
++            lastlen = namelen;
++        }
++#endif
+         strcpy(cp, tail(argv[n]));
+         fd = open(argv[n], O_RDONLY | mode->m_openflags);
+         if (fd < 0) {
+@@ -600,9 +621,9 @@ void put(int argc, char *argv[])
+         }
+         if (verbose)
+             printf("putting %s to %s:%s [%s]\n",
+-                   argv[n], hostname, targ, mode->m_mode);
++                   argv[n], hostname, remote_pth, mode->m_mode);
+         sa_set_port(&peeraddr, port);
+-        tftp_sendfile(fd, targ, mode->m_mode);
++        tftp_sendfile(fd, remote_pth, mode->m_mode);
+     }
+ }
+ 
+@@ -801,6 +822,10 @@ static void command(void)
+             free(line);
+             line = NULL;
+         }
++        if (remote_pth) {
++            free(remote_pth);
++            remote_pth = NULL;
++        }
+         line = readline(prompt);
+         if (!line)
+             exit(0);            /* EOF */
+@@ -872,7 +897,13 @@ struct cmd *getcmd(char *name)
+ static void makeargv(void)
+ {
+     char *cp;
+-    char **argp = margv;
++    char **argp;
++
++    if (!sizeof_margv) {
++        sizeof_margv = 20;
++        margv = xmalloc(sizeof_margv * sizeof(char *));
++    }
++    argp = margv;
+ 
+     margc = 0;
+     for (cp = line; *cp;) {
+@@ -882,6 +913,11 @@ static void makeargv(void)
+             break;
+         *argp++ = cp;
+         margc += 1;
++        if (margc == sizeof_margv) {
++            sizeof_margv += 20;
++            margv = xrealloc(margv, sizeof_margv * sizeof(char *));
++            argp = margv + margc;
++        }
+         while (*cp != '\0' && !isspace(*cp))
+             cp++;
+         if (*cp == '\0')
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.39-tzfix.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.39-tzfix.patch
new file mode 100644
index 0000000..85110eb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.39-tzfix.patch
@@ -0,0 +1,24 @@
+Patch originally from Fedora
+
+http://pkgs.fedoraproject.org/cgit/tftp.git/
+
+Upstream-Status: Pending
+
+diff -up tftp-hpa-0.49/tftpd/tftpd.c.tzfix tftp-hpa-0.49/tftpd/tftpd.c
+--- tftp-hpa-0.49/tftpd/tftpd.c.tzfix	2008-10-20 18:08:31.000000000 -0400
++++ tftp-hpa-0.49/tftpd/tftpd.c	2008-11-25 11:45:27.000000000 -0500
+@@ -350,6 +350,14 @@ int main(int argc, char **argv)
+     const char *pidfile = NULL;
+     u_short tp_opcode;
+ 
++    time_t my_time = 0;
++    struct tm* p_tm;
++    char envtz[10];
++    my_time = time(NULL);
++    p_tm = localtime(&my_time);
++    snprintf(envtz, sizeof(envtz) - 1, "UTC%+d", (p_tm->tm_gmtoff * -1)/3600);
++    setenv("TZ", envtz, 0);
++
+     /* basename() is way too much of a pain from a portability standpoint */
+ 
+     p = strrchr(argv[0], '/');
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-fortify-strcpy-crash.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-fortify-strcpy-crash.patch
new file mode 100644
index 0000000..08d2b5b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-fortify-strcpy-crash.patch
@@ -0,0 +1,32 @@
+Patch originally from Fedora
+
+http://pkgs.fedoraproject.org/cgit/tftp.git/
+
+Upstream-Status: Pending
+
+diff -urN tftp-hpa-0.49.orig/tftp/tftp.c tftp-hpa-0.49/tftp/tftp.c
+--- tftp-hpa-0.49.orig/tftp/tftp.c	2008-10-20 18:08:31.000000000 -0400
++++ tftp-hpa-0.49/tftp/tftp.c	2009-08-05 09:47:18.072585848 -0400
+@@ -279,15 +279,16 @@
+             struct tftphdr *tp, const char *mode)
+ {
+     char *cp;
++    size_t len;
+ 
+     tp->th_opcode = htons((u_short) request);
+     cp = (char *)&(tp->th_stuff);
+-    strcpy(cp, name);
+-    cp += strlen(name);
+-    *cp++ = '\0';
+-    strcpy(cp, mode);
+-    cp += strlen(mode);
+-    *cp++ = '\0';
++    len = strlen(name) + 1;
++    memcpy(cp, name, len);
++    cp += len;
++    len = strlen(mode) + 1;
++    memcpy(cp, mode, len);
++    cp += len;
+     return (cp - (char *)tp);
+ }
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-stats.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-stats.patch
new file mode 100644
index 0000000..720cd69
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-stats.patch
@@ -0,0 +1,20 @@
+Patch originally from Fedora
+
+http://pkgs.fedoraproject.org/cgit/tftp.git/
+
+Upstream-Status: Pending
+
+diff -up tftp-hpa-0.49/tftp/tftp.c.stats tftp-hpa-0.49/tftp/tftp.c
+--- tftp-hpa-0.49/tftp/tftp.c.stats	2011-01-03 15:38:34.217918067 +0100
++++ tftp-hpa-0.49/tftp/tftp.c	2011-01-03 15:38:37.498917014 +0100
+@@ -400,8 +400,8 @@ static void printstats(const char *direc
+ {
+     double delta;
+ 
+-    delta = (tstop.tv_sec + (tstop.tv_usec / 100000.0)) -
+-        (tstart.tv_sec + (tstart.tv_usec / 100000.0));
++    delta = (tstop.tv_sec + (tstop.tv_usec / 1000000.0)) -
++        (tstart.tv_sec + (tstart.tv_usec / 1000000.0));
+     if (verbose) {
+         printf("%s %lu bytes in %.1f seconds", direction, amount, delta);
+         printf(" [%.0f bit/s]", (amount * 8.) / delta);
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-5.2-pktinfo.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-5.2-pktinfo.patch
new file mode 100644
index 0000000..216349d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-5.2-pktinfo.patch
@@ -0,0 +1,29 @@
+Patch originally from Fedora
+
+http://pkgs.fedoraproject.org/cgit/tftp.git/
+
+Upstream-Status: Pending
+
+diff -up tftp-hpa-5.2/tftpd/recvfrom.c.test tftp-hpa-5.2/tftpd/recvfrom.c
+--- tftp-hpa-5.2/tftpd/recvfrom.c.test	2011-12-11 23:13:52.000000000 +0100
++++ tftp-hpa-5.2/tftpd/recvfrom.c	2012-01-04 10:05:17.852042256 +0100
+@@ -149,16 +149,16 @@ myrecvfrom(int s, void *buf, int len, un
+ 
+     /* Try to enable getting the return address */
+ #ifdef IP_RECVDSTADDR
+-    if (from->sa_family == AF_INET)
++    if (from->sa_family == AF_INET || !from->sa_family)
+         setsockopt(s, IPPROTO_IP, IP_RECVDSTADDR, &on, sizeof(on));
+ #endif
+ #ifdef IP_PKTINFO
+-    if (from->sa_family == AF_INET)
++    if (from->sa_family == AF_INET || !from->sa_family)
+         setsockopt(s, IPPROTO_IP, IP_PKTINFO, &on, sizeof(on));
+ #endif
+ #ifdef HAVE_IPV6
+ #ifdef IPV6_RECVPKTINFO
+-    if (from->sa_family == AF_INET6)
++    if (from->sa_family == AF_INET6 || !from->sa_family)
+         setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on, sizeof(on));
+ #endif
+ #endif
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-bug-fix-on-separated-CR-and-LF.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-bug-fix-on-separated-CR-and-LF.patch
new file mode 100644
index 0000000..3e220ec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-bug-fix-on-separated-CR-and-LF.patch
@@ -0,0 +1,38 @@
+From 6ed1eb8829dee351b54e183bc42c007cb306aaa5 Mon Sep 17 00:00:00 2001
+From: Zhang Xiao <xiao.zhang@windriver.com>
+Date: Wed, 11 Jun 2014 14:01:16 +0800
+Subject: [PATCH] tftp-hpa: bug fix on separated CR and LF
+
+In ascii mode, if the CR and LF was separated into different transfer
+blocks, LF will be just dropped instead of replacing the previous CR.
+Add a checking on the first character to fix it.
+
+Upstream-Status: pending
+
+Signed-off-by: Zhang Xiao <xiao.zhang@windriver.com>
+---
+ common/tftpsubs.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/common/tftpsubs.c b/common/tftpsubs.c
+index b4d4ffe..b4ea3f2 100644
+--- a/common/tftpsubs.c
++++ b/common/tftpsubs.c
+@@ -207,6 +207,14 @@ int write_behind(FILE * file, int convert)
+     p = buf;
+     ct = count;
+     count = 0;
++
++    /* Check the first character together with prevchar */
++    c = *p;
++    if ((prevchar == '\r') && (c == '\n')) {
++        lseek(fileno(file), -1, SEEK_CUR);
++        count++;
++    }
++
+     while (ct--) {              /* loop over the buffer */
+         c = *p++;               /* pick up a character */
+         if (prevchar == '\r') { /* if prev char was cr */
+-- 
+1.8.5.2.233.g932f7e4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-xinetd b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-xinetd
new file mode 100644
index 0000000..fe70163
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/files/tftp-xinetd
@@ -0,0 +1,18 @@
+# default: off
+# description: The tftp server serves files using the trivial file transfer \
+#	protocol.  The tftp protocol is often used to boot diskless \
+#	workstations, download configuration files to network-aware printers, \
+#	and to start the installation process for some operating systems.
+service tftp
+{
+	socket_type		= dgram
+	protocol		= udp
+	wait			= yes
+	user			= root
+	server			= /usr/sbin/in.tftpd-hpa
+	server_args		= -s /var/lib/tftpboot
+	disable			= yes
+	per_source		= 11
+	cps				= 100 2
+	flags			= IPv6
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb
new file mode 100644
index 0000000..98842e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb
@@ -0,0 +1,76 @@
+SUMMARY        = "Client for the Trivial File Transfer Protocol"
+DESCRIPTION    = \
+"The Trivial File Transfer Protocol (TFTP) is normally used only for \
+booting diskless workstations.  The tftp package provides the user   \
+interface for TFTP, which allows users to transfer files to and from a \
+remote machine.  This program and TFTP provide very little security, \
+and should not be enabled unless it is expressly needed."
+DEPENDS = "tcp-wrappers readline"
+SECTION = "net"
+LICENSE = "BSD-4-Clause"
+LIC_FILES_CHKSUM = "file://MCONFIG.in;beginline=1;endline=9;md5=c28ba5adb43041fae4629db05c83cbdd \
+                    file://tftp/tftp.c;beginline=1;endline=32;md5=988c1cba99d70858a26cd877209857f4"
+
+
+SRC_URI = "http://kernel.org/pub/software/network/tftp/tftp-hpa/tftp-hpa-${PV}.tar.bz2 \
+           file://tftp-0.40-remap.patch \
+           file://tftp-0.42-tftpboot.patch \
+           file://tftp-0.49-chk_retcodes.patch \
+           file://tftp-0.49-cmd_arg.patch \
+           file://tftp-hpa-0.39-tzfix.patch \
+           file://tftp-hpa-0.49-fortify-strcpy-crash.patch \
+           file://tftp-hpa-0.49-stats.patch \
+           file://tftp-hpa-5.2-pktinfo.patch \
+           file://default \
+           file://init \
+           file://add-error-check-for-disk-filled-up.patch \
+           file://tftp-hpa-bug-fix-on-separated-CR-and-LF.patch \
+           file://fix-writing-emtpy-file.patch \
+"
+
+SRC_URI[md5sum] = "46c9bd20bbffa62f79c958c7b99aac21"
+SRC_URI[sha256sum] = "0a9f88d4c1c02687b4853b02ab5dd8779d4de4ffdb9b2e5c9332841304d1a269"
+
+inherit autotools-brokensep update-rc.d update-alternatives
+
+export AR = "${HOST_PREFIX}ar cq"
+
+EXTRA_OECONF += "--disable-option-checking"
+
+# configure.in has errors
+do_configure() {
+    oe_runconf
+}
+
+do_install() {
+    oe_runmake install INSTALLROOT=${D}
+    mv ${D}${bindir}/tftp ${D}${bindir}/tftp-hpa
+    mv ${D}${sbindir}/in.tftpd ${D}${sbindir}/in.tftpd-hpa
+
+    install -m 755 -d ${D}${localstatedir}/lib/tftpboot/
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/tftpd-hpa
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/tftpd-hpa
+    sed -i 's!/etc/!${sysconfdir}/!g' ${D}${sysconfdir}/init.d/tftpd-hpa
+    sed -i 's!/var/!${localstatedir}/!g' ${D}${sysconfdir}/init.d/tftpd-hpa
+    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${sysconfdir}/init.d/tftpd-hpa
+
+    install -d ${D}${sysconfdir}/default
+    install -m 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/tftpd-hpa
+}
+
+FILES_${PN} = "${bindir}"
+
+PACKAGES += "tftp-hpa-server"
+SUMMARY_tftp-hpa-server = "Server for the Trivial File Transfer Protocol"
+FILES_tftp-hpa-server = "${sbindir} ${sysconfdir} ${localstatedir}"
+CONFFILES_tftp-hpa-server = "${sysconfdir}/default/tftpd-hpa"
+
+INITSCRIPT_PACKAGES = "tftp-hpa-server"
+INITSCRIPT_NAME = "tftpd-hpa"
+INITSCRIPT_PARAMS = "start 20 2 3 4 5 . stop 20 1 ."
+
+ALTERNATIVE_${PN} = "tftp"
+ALTERNATIVE_TARGET[tftp] = "${bindir}/tftp-hpa"
+ALTERNATIVE_PRIORITY = "50"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vblade/files/cross.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vblade/files/cross.patch
new file mode 100644
index 0000000..d2eb156
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vblade/files/cross.patch
@@ -0,0 +1,16 @@
+Remove CC and CFLAGS values, we set these ourselves
+
+Upstream-Status: Inappropriate [config]
+
+diff -urN vblade-19.old//makefile vblade-19//makefile
+--- vblade-19.old//makefile	2008-10-08 22:07:40.000000000 +0100
++++ vblade-19//makefile	2008-11-18 19:07:51.700365029 +0000
+@@ -9,8 +9,6 @@
+ mandir = ${sharedir}/man
+ 
+ O=aoe.o bpf.o ${PLATFORM}.o ata.o
+-CFLAGS += -Wall -g -O2
+-CC = gcc
+ 
+ vblade: $O
+ 	${CC} -o vblade $O
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vblade/vblade_20.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vblade/vblade_20.bb
new file mode 100644
index 0000000..a357e40
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vblade/vblade_20.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Virtual EtherDrive blade AoE target"
+SECTION = "admin"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/aoetools/${BPN}-${PV}.tgz \
+       file://cross.patch"
+
+SRC_URI[md5sum] = "3c80e4a6bc7d66ae0c235b88cb44bd59"
+SRC_URI[sha256sum] = "c8fe2fc4f2fba8e07e5cfdf17335982584eef2cd5c78bf8b1db93f2b56e7121d"
+
+inherit autotools-brokensep
+
+do_install() {
+    install -D -m 0755 ${S}/vblade ${D}/${sbindir}/vblade
+    install -D -m 0755 ${S}/vbladed ${D}/${sbindir}/vbladed
+    install -D -m 0644 ${S}/vblade.8 ${D}/${mandir}/man8/vblade.8
+}
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/change-secure_chroot_dir.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/change-secure_chroot_dir.patch
new file mode 100644
index 0000000..5f2860e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/change-secure_chroot_dir.patch
@@ -0,0 +1,55 @@
+vsftpd: change default value of secure_chroot_dir
+
+Upstream-Status: Pending
+
+Change secure_chroot_dir pointing to a volatile directory.
+
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
+---
+ INSTALL       |    6 +++---
+ tunables.c    |    2 +-
+ vsftpd.conf.5 |    2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff -urpN a/INSTALL b/INSTALL
+--- a/INSTALL	2013-09-13 10:23:57.504972397 +0800
++++ b/INSTALL	2013-09-13 10:25:25.664971779 +0800
+@@ -27,11 +27,11 @@ user in case it does not already exist. 
+ [root@localhost root]# useradd nobody
+ useradd: user nobody exists
+ 
+-2b) vsftpd needs the (empty) directory /usr/share/empty in the default
++2b) vsftpd needs the (empty) directory /var/run/vsftpd/empty in the default
+ configuration. Add this directory in case it does not already exist. e.g.:
+ 
+-[root@localhost root]# mkdir /usr/share/empty/
+-mkdir: cannot create directory `/usr/share/empty': File exists
++[root@localhost root]# mkdir /var/run/vsftpd/empty/
++mkdir: cannot create directory `/var/run/vsftpd/empty': File exists
+ 
+ 2c) For anonymous FTP, you will need the user "ftp" to exist, and have a
+ valid home directory (which is NOT owned or writable by the user "ftp").
+diff -urpN a/tunables.c b/tunables.c
+--- a/tunables.c	2013-09-13 10:26:29.554972817 +0800
++++ b/tunables.c	2013-09-13 10:27:18.104972210 +0800
+@@ -254,7 +254,7 @@ tunables_load_defaults()
+   /* -rw------- */
+   tunable_chown_upload_mode = 0600;
+ 
+-  install_str_setting("/usr/share/empty", &tunable_secure_chroot_dir);
++  install_str_setting("/var/run/vsftpd/empty", &tunable_secure_chroot_dir);
+   install_str_setting("ftp", &tunable_ftp_username);
+   install_str_setting("root", &tunable_chown_username);
+   install_str_setting("/var/log/xferlog", &tunable_xferlog_file);
+diff -urpN a/vsftpd.conf.5 b/vsftpd.conf.5
+--- a/vsftpd.conf.5	2013-09-13 10:09:33.774972462 +0800
++++ b/vsftpd.conf.5	2013-09-13 10:10:41.914971989 +0800
+@@ -969,7 +969,7 @@ This option should be the name of a dire
+ directory should not be writable by the ftp user. This directory is used
+ as a secure chroot() jail at times vsftpd does not require filesystem access.
+ 
+-Default: /usr/share/empty
++Default: /var/run/vsftpd/empty
+ .TP
+ .B ssl_ciphers
+ This option can be used to select which SSL ciphers vsftpd will allow for
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/init b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/init
new file mode 100755
index 0000000..72adf0d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/init
@@ -0,0 +1,50 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: vsftpd
+# Default-Start:  2345
+# Default-Stop:   016
+# Short-Description: Very Secure Ftp Daemon
+# Description: vsftpd is a Very Secure FTP daemon. It was written completely from
+#              scratch
+### END INIT INFO
+
+DAEMON=/usr/sbin/vsftpd
+NAME=vsftpd
+DESC="FTP Server"
+ARGS=""
+FTPDIR=/var/lib/ftp
+
+test -f $DAEMON || exit 0
+
+set -e
+
+case "$1" in
+    start)
+        echo -n "* starting $DESC: $NAME... "
+        if ! test -d $FTPDIR; then
+            mkdir -p $FTPDIR/in
+            chown ftp $FTPDIR -R
+            chmod a-w $FTPDIR
+            chmod u+w $FTPDIR/in
+        fi
+        start-stop-daemon -S -b -x $DAEMON -- $ARGS
+        echo "done."
+        ;;
+    stop)
+        echo -n "* stopping $DESC: $NAME... "
+        start-stop-daemon -K -x $DAEMON
+        echo "done."
+        ;;
+    restart)
+        echo "* restarting $DESC: $NAME... "
+        $0 stop
+        $0 start
+        echo "done."
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/volatiles.99_vsftpd b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/volatiles.99_vsftpd
new file mode 100644
index 0000000..8a602ba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/volatiles.99_vsftpd
@@ -0,0 +1 @@
+d root root 0755 /var/run/vsftpd/empty none
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.conf b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.conf
new file mode 100644
index 0000000..bb19294
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.conf
@@ -0,0 +1,139 @@
+# Example config file /etc/vsftpd.conf
+#
+# The default compiled in settings are fairly paranoid. This sample file
+# loosens things up a bit, to make the ftp daemon more usable.
+# Please see vsftpd.conf.5 for all compiled in defaults.
+#
+# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
+# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
+# capabilities.
+
+# run standalone
+listen=YES
+
+# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
+anonymous_enable=NO
+#
+# Uncomment this to allow local users to log in.
+local_enable=YES
+#
+# Uncomment this to enable any form of FTP write command.
+write_enable=YES
+#
+# Default umask for local users is 077. You may wish to change this to 022,
+# if your users expect that (022 is used by most other ftpd's)
+local_umask=022
+#
+# Uncomment this to allow the anonymous FTP user to upload files. This only
+# has an effect if the above global write enable is activated. Also, you will
+# obviously need to create a directory writable by the FTP user.
+#anon_upload_enable=YES
+#
+# Uncomment this if you want the anonymous FTP user to be able to create
+# new directories.
+#anon_mkdir_write_enable=YES
+#
+# Activate directory messages - messages given to remote users when they
+# go into a certain directory.
+dirmessage_enable=YES
+#
+# Activate logging of uploads/downloads.
+xferlog_enable=YES
+#
+# Make sure PORT transfer connections originate from port 20 (ftp-data).
+connect_from_port_20=YES
+#
+# If you want, you can arrange for uploaded anonymous files to be owned by
+# a different user. Note! Using "root" for uploaded files is not
+# recommended!
+#chown_uploads=YES
+#chown_username=whoever
+#
+# You may override where the log file goes if you like. The default is shown
+# below.
+#xferlog_file=/var/log/vsftpd.log
+#
+# If you want, you can have your log file in standard ftpd xferlog format
+xferlog_std_format=YES
+#
+# You may change the default value for timing out an idle session.
+#idle_session_timeout=600
+#
+# You may change the default value for timing out a data connection.
+#data_connection_timeout=120
+#
+# It is recommended that you define on your system a unique user which the
+# ftp server can use as a totally isolated and unprivileged user.
+#nopriv_user=ftp
+#
+# Enable this and the server will recognise asynchronous ABOR requests. Not
+# recommended for security (the code is non-trivial). Not enabling it,
+# however, may confuse older FTP clients.
+#async_abor_enable=YES
+#
+# By default the server will pretend to allow ASCII mode but in fact ignore
+# the request. Turn on the below options to have the server actually do ASCII
+# mangling on files when in ASCII mode.
+# Beware that turning on ascii_download_enable enables malicious remote parties
+# to consume your I/O resources, by issuing the command "SIZE /big/file" in
+# ASCII mode.
+# These ASCII options are split into upload and download because you may wish
+# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
+# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
+# on the client anyway..
+#ascii_upload_enable=YES
+#ascii_download_enable=YES
+#
+# You may fully customise the login banner string:
+#ftpd_banner=Welcome to blah FTP service.
+#
+# You may specify a file of disallowed anonymous e-mail addresses. Apparently
+# useful for combatting certain DoS attacks.
+#deny_email_enable=YES
+# (default follows)
+#banned_email_file=/etc/vsftpd.banned_emails
+#
+# You may specify an explicit list of local users to chroot() to their home
+# directory. If chroot_local_user is YES, then this list becomes a list of
+# users to NOT chroot().
+#chroot_list_enable=YES
+# (default follows)
+#chroot_list_file=/etc/vsftpd.chroot_list
+#
+# You may activate the "-R" option to the builtin ls. This is disabled by
+# default to avoid remote users being able to cause excessive I/O on large
+# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
+# the presence of the "-R" option, so there is a strong case for enabling it.
+#ls_recurse_enable=YES
+#
+# This string is the name of the PAM service vsftpd will use.
+pam_service_name=vsftpd
+#
+# This option is examined if userlist_enable is activated. If you set this
+# setting to NO, then users will be denied login  unless  they are  explicitly 
+# listed  in the file specified by userlist_file.  When login is denied, the 
+# denial is issued before the user is asked for a password.
+userlist_deny=YES
+#
+# If enabled, vsftpd will load a list of usernames, from the filename given by
+# userlist_file.  If a user tries to log in using  a  name in  this  file,  they
+# will be denied before they are asked for a password. This may be useful in 
+# preventing cleartext passwords being transmitted. See also userlist_deny.
+userlist_enable=YES
+#
+# If enabled,  vsftpd  will display directory listings with the time in your
+# local time zone. The default is to display GMT. The times returned by the
+# MDTM FTP command are also affected by this option.
+use_localtime=YES
+#
+# If set to YES, local users will be (by default) placed in a chroot() jail in
+# their home directory after login.  Warning: This  option has  security  
+# implications,  especially  if  the users have upload permission, or shell access.
+# Only enable if you know what you are doing.  Note that these security implications
+# are not vsftpd specific. They apply to all FTP daemons which offer to put 
+# local  users in chroot() jails.
+chroot_local_user=YES
+#
+allow_writeable_chroot=YES
+#
+tcp_wrappers=YES
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.ftpusers b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.ftpusers
new file mode 100644
index 0000000..096142f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.ftpusers
@@ -0,0 +1,15 @@
+# Users that are not allowed to login via ftp
+root
+bin
+daemon
+adm
+lp
+sync
+shutdown
+halt
+mail
+news
+uucp
+operator
+games
+nobody
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.service b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.service
new file mode 100644
index 0000000..e271020
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Vsftpd ftp daemon
+After=network.target
+
+[Service]
+ExecStart=@SBINDIR@/vsftpd
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.user_list b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.user_list
new file mode 100644
index 0000000..d283e3d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/files/vsftpd.user_list
@@ -0,0 +1,20 @@
+# vsftpd userlist
+# If userlist_deny=NO, only allow users in this file
+# If userlist_deny=YES (default), never allow users in this file, and
+# do not even prompt for a password.
+# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
+# for users that are denied.
+root
+bin
+daemon
+adm
+lp
+sync
+shutdown
+halt
+mail
+news
+uucp
+operator
+games
+nobody
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/makefile-destdir.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/makefile-destdir.patch
new file mode 100644
index 0000000..1980d09
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/makefile-destdir.patch
@@ -0,0 +1,44 @@
+Use DESTDIR within install to allow installing under a prefix
+
+Upstream-Status: Pending
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+diff --git a/Makefile b/Makefile
+--- a/Makefile
++++ b/Makefile
+@@ -24,21 +24,21 @@
+ 	$(CC) -o vsftpd $(OBJS) $(LINK) $(LIBS)
+ 
+ install:
+-	if [ -x /usr/local/sbin ]; then \
+-		$(INSTALL) -m 755 vsftpd /usr/local/sbin/vsftpd; \
++	if [ -x ${DESTDIR}/usr/local/sbin ]; then \
++		$(INSTALL) -m 755 vsftpd ${DESTDIR}/usr/local/sbin/vsftpd; \
+ 	else \
+-		$(INSTALL) -m 755 vsftpd /usr/sbin/vsftpd; fi
+-	if [ -x /usr/local/man ]; then \
+-		$(INSTALL) -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \
+-		$(INSTALL) -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \
+-	elif [ -x /usr/share/man ]; then \
+-		$(INSTALL) -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \
+-		$(INSTALL) -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \
++		$(INSTALL) -m 755 vsftpd ${DESTDIR}/usr/sbin/vsftpd; fi
++	if [ -x ${DESTDIR}/usr/local/man ]; then \
++		$(INSTALL) -m 644 vsftpd.8 ${DESTDIR}/usr/local/man/man8/vsftpd.8; \
++		$(INSTALL) -m 644 vsftpd.conf.5 ${DESTDIR}/usr/local/man/man5/vsftpd.conf.5; \
++	elif [ -x ${DESTDIR}/usr/share/man ]; then \
++		$(INSTALL) -m 644 vsftpd.8 ${DESTDIR}/usr/share/man/man8/vsftpd.8; \
++		$(INSTALL) -m 644 vsftpd.conf.5 ${DESTDIR}/usr/share/man/man5/vsftpd.conf.5; \
+ 	else \
+-		$(INSTALL) -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \
+-		$(INSTALL) -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
+-	if [ -x /etc/xinetd.d ]; then \
+-		$(INSTALL) -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi
++		$(INSTALL) -m 644 vsftpd.8 ${DESTDIR}/usr/man/man8/vsftpd.8; \
++		$(INSTALL) -m 644 vsftpd.conf.5 ${DESTDIR}/usr/man/man5/vsftpd.conf.5; fi
++	if [ -x ${DESTDIR}/etc/xinetd.d ]; then \
++		$(INSTALL) -m 644 xinetd.d/vsftpd ${DESTDIR}/etc/xinetd.d/vsftpd; fi
+ 
+ clean:
+ 	rm -f *.o *.swp vsftpd
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/makefile-libs.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/makefile-libs.patch
new file mode 100644
index 0000000..9a10f72
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/makefile-libs.patch
@@ -0,0 +1,21 @@
+Hardcode LIBS instead of using a script to determine available libs
+
+We want to avoid this dynamic detection so we have a deterministic
+build.
+
+Upstream-Status: Inappropriate [config]
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+diff --git a/Makefile b/Makefile
+--- a/Makefile
++++ b/Makefile
+@@ -5,7 +5,7 @@
+ #CFLAGS = -g
+ CFLAGS	=	-O2 -Wall -W -Wshadow #-pedantic -Werror -Wconversion
+ 
+-LIBS	=	`./vsf_findlibs.sh`
++LIBS	=	-lssl -lcrypto -lnsl -lresolv
+ LINK	=	-Wl,-s
+ 
+ OBJS	=	main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o \
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/makefile-strip.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/makefile-strip.patch
new file mode 100644
index 0000000..fd31600
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/makefile-strip.patch
@@ -0,0 +1,17 @@
+Disable stripping at link time
+
+Upstream-Status: Inappropriate [config]
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+diff --git a/Makefile b/Makefile
+--- a/Makefile
++++ b/Makefile
+@@ -9,7 +9,6 @@ CFLAGS	=	-O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 \
+ 	#-pedantic -Wconversion
+ 
+ LIBS	=	-lssl -lcrypto -lnsl -lresolv
+-LINK	=	-Wl,-s
+ LDFLAGS	=	-fPIE -pie -Wl,-z,relro -Wl,-z,now
+ 
+ OBJS	=	main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o \
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/nopam-with-tcp_wrappers.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/nopam-with-tcp_wrappers.patch
new file mode 100644
index 0000000..fdcf3a0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/nopam-with-tcp_wrappers.patch
@@ -0,0 +1,17 @@
+Disable PAM
+
+Upstream-Status: Inappropriate [config]
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+diff -ur vsftpd-2.0.1_org/builddefs.h vsftpd-2.0.1_patch/builddefs.h
+--- vsftpd-2.0.1_org/builddefs.h	2004-07-02 16:36:59.000000000 +0200
++++ vsftpd-2.0.1_patch/builddefs.h	2004-07-21 09:34:49.044900488 +0200
+@@ -2,7 +2,7 @@
+ #define VSF_BUILDDEFS_H
+ 
+ #define VSF_BUILD_TCPWRAPPERS
+-#define VSF_BUILD_PAM
++#undef VSF_BUILD_PAM
+ #undef VSF_BUILD_SSL
+ 
+ #endif /* VSF_BUILDDEFS_H */
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/nopam.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/nopam.patch
new file mode 100644
index 0000000..cf0d68e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/nopam.patch
@@ -0,0 +1,16 @@
+Disable PAM
+
+Upstream-Status: Inappropriate [config]
+
+diff -ur vsftpd-2.0.1_org/builddefs.h vsftpd-2.0.1_patch/builddefs.h
+--- vsftpd-2.0.1_org/builddefs.h	2004-07-02 16:36:59.000000000 +0200
++++ vsftpd-2.0.1_patch/builddefs.h	2004-07-21 09:34:49.044900488 +0200
+@@ -2,7 +2,7 @@
+ #define VSF_BUILDDEFS_H
+ 
+ #undef VSF_BUILD_TCPWRAPPERS
+-#define VSF_BUILD_PAM
++#undef VSF_BUILD_PAM
+ #undef VSF_BUILD_SSL
+ 
+ #endif /* VSF_BUILDDEFS_H */
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/vsftpd-2.1.0-filter.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/vsftpd-2.1.0-filter.patch
new file mode 100644
index 0000000..32f7e82
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/vsftpd-2.1.0-filter.patch
@@ -0,0 +1,77 @@
+Fix the CVE-2015-1419
+
+Upstream-Status: Pending
+
+Try to fix deny_file parsing to do more what is expected. Taken
+from fedora. CVE-2015-1419
+
+ftp://195.220.108.108/linux/fedora/linux/development/rawhide/source/SRPMS/v/vsftpd-3.0.2-13.fc22.src.rpm
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+
+diff -up vsftpd-2.1.0/ls.c.filter vsftpd-2.1.0/ls.c
+--- vsftpd-2.1.0/ls.c.filter	2008-02-02 02:30:41.000000000 +0100
++++ vsftpd-2.1.0/ls.c	2009-01-08 19:31:15.000000000 +0100
+@@ -239,9 +239,31 @@ vsf_filename_passes_filter(const struct 
+   int ret = 0;
+   char last_token = 0;
+   int must_match_at_current_pos = 1;
++  
++  
+   str_copy(&filter_remain_str, p_filter_str);
+-  str_copy(&name_remain_str, p_filename_str);
+-
++  
++  if (!str_isempty (&filter_remain_str) && !str_isempty(p_filename_str)) {
++    if (str_get_char_at(p_filter_str, 0) == '/') {
++      if (str_get_char_at(p_filename_str, 0) != '/') {
++        str_getcwd (&name_remain_str);
++     
++        if (str_getlen(&name_remain_str) > 1) /* cwd != root dir */
++          str_append_char (&name_remain_str, '/');
++          
++        str_append_str (&name_remain_str, p_filename_str);
++      }
++      else
++       str_copy (&name_remain_str, p_filename_str);
++    } else {
++      if (str_get_char_at(p_filter_str, 0) != '{')
++        str_basename (&name_remain_str, p_filename_str);
++      else
++        str_copy (&name_remain_str, p_filename_str);
++    }
++  } else
++    str_copy(&name_remain_str, p_filename_str);
++  
+   while (!str_isempty(&filter_remain_str) && *iters < VSFTP_MATCHITERS_MAX)
+   {
+     static struct mystr s_match_needed_str;
+diff -up vsftpd-2.1.0/str.c.filter vsftpd-2.1.0/str.c
+--- vsftpd-2.1.0/str.c.filter	2008-12-17 06:54:16.000000000 +0100
++++ vsftpd-2.1.0/str.c	2009-01-08 19:31:15.000000000 +0100
+@@ -680,3 +680,14 @@ str_replace_unprintable(struct mystr* p_
+   }
+ }
+ 
++void
++str_basename (struct mystr* d_str, const struct mystr* path)
++{
++  static struct mystr tmp;
++
++  str_copy (&tmp, path);
++  str_split_char_reverse(&tmp, d_str, '/');
++
++  if (str_isempty(d_str))
++   str_copy (d_str, path);
++}
+diff -up vsftpd-2.1.0/str.h.filter vsftpd-2.1.0/str.h
+--- vsftpd-2.1.0/str.h.filter	2008-12-17 06:53:23.000000000 +0100
++++ vsftpd-2.1.0/str.h	2009-01-08 19:32:14.000000000 +0100
+@@ -100,6 +100,7 @@ void str_replace_unprintable(struct myst
+ int str_atoi(const struct mystr* p_str);
+ filesize_t str_a_to_filesize_t(const struct mystr* p_str);
+ unsigned int str_octal_to_uint(const struct mystr* p_str);
++void str_basename (struct mystr* d_str, const struct mystr* path);
+ 
+ /* PURPOSE: Extract a line of text (delimited by \n or EOF) from a string
+  * buffer, starting at character position 'p_pos'. The extracted line will
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/vsftpd-tcp_wrappers-support.patch b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/vsftpd-tcp_wrappers-support.patch
new file mode 100644
index 0000000..69745b3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd-3.0.3/vsftpd-tcp_wrappers-support.patch
@@ -0,0 +1,25 @@
+Enable tcp_wrapper.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ builddefs.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/builddefs.h b/builddefs.h
+index e908352..0106d1a 100644
+--- a/builddefs.h
++++ b/builddefs.h
+@@ -1,7 +1,7 @@
+ #ifndef VSF_BUILDDEFS_H
+ #define VSF_BUILDDEFS_H
+ 
+-#undef VSF_BUILD_TCPWRAPPERS
++#define VSF_BUILD_TCPWRAPPERS
+ #define VSF_BUILD_PAM
+ #undef VSF_BUILD_SSL
+ 
+-- 
+1.7.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd_3.0.3.bb b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd_3.0.3.bb
new file mode 100644
index 0000000..4ee881d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd_3.0.3.bb
@@ -0,0 +1,109 @@
+SUMMARY = "Very Secure FTP server"
+HOMEPAGE = "https://security.appspot.com/vsftpd.html"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6067ad950b28336613aed9dd47b1271"
+
+DEPENDS = "libcap openssl"
+
+SRC_URI = "https://security.appspot.com/downloads/vsftpd-${PV}.tar.gz \
+           file://makefile-destdir.patch \
+           file://makefile-libs.patch \
+           file://makefile-strip.patch \
+           file://init \
+           file://vsftpd.conf \
+           file://vsftpd.user_list \
+           file://vsftpd.ftpusers \
+           file://change-secure_chroot_dir.patch \
+           file://volatiles.99_vsftpd \
+           file://vsftpd.service \
+           file://vsftpd-2.1.0-filter.patch \
+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6067ad950b28336613aed9dd47b1271 \
+                        file://COPYRIGHT;md5=04251b2eb0f298dae376d92454f6f72e \
+                        file://LICENSE;md5=654df2042d44b8cac8a5654fc5be63eb"
+SRC_URI[md5sum] = "da119d084bd3f98664636ea05b5bb398"
+SRC_URI[sha256sum] = "9d4d2bf6e6e2884852ba4e69e157a2cecd68c5a7635d66a3a8cf8d898c955ef7"
+
+
+PACKAGECONFIG ??= "tcp-wrappers"
+PACKAGECONFIG[tcp-wrappers] = ",,tcp-wrappers"
+SRC_URI +="${@base_contains('PACKAGECONFIG', 'tcp-wrappers', 'file://vsftpd-tcp_wrappers-support.patch', '', d)}"
+
+DEPENDS += "${@base_contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+RDEPENDS_${PN} += "${@base_contains('DISTRO_FEATURES', 'pam', 'pam-plugin-listfile', '', d)}"
+PAMLIB = "${@base_contains('DISTRO_FEATURES', 'pam', '-L${STAGING_BASELIBDIR} -lpam', '', d)}"
+NOPAM_SRC ="${@base_contains('PACKAGECONFIG', 'tcp-wrappers', 'file://nopam-with-tcp_wrappers.patch', 'file://nopam.patch', d)}"
+SRC_URI += "${@base_contains('DISTRO_FEATURES', 'pam', '', '${NOPAM_SRC}', d)}"
+
+inherit update-rc.d useradd systemd
+
+CONFFILES_${PN} = "${sysconfdir}/vsftpd.conf"
+LDFLAGS_append =" -lcrypt -lcap"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_configure() {
+    # Fix hardcoded /usr, /etc, /var mess.
+    cat tunables.c|sed s:\"/usr:\"${prefix}:g|sed s:\"/var:\"${localstatedir}:g \
+    |sed s:\"/etc:\"${sysconfdir}:g > tunables.c.new
+    mv tunables.c.new tunables.c
+}
+
+do_compile() {
+   oe_runmake "LIBS=-L${STAGING_LIBDIR} -lcrypt -lcap ${PAMLIB} -lwrap"
+}
+
+do_install() {
+    install -d ${D}${sbindir}
+    install -d ${D}${mandir}/man8
+    install -d ${D}${mandir}/man5
+    oe_runmake 'DESTDIR=${D}' install
+    install -d ${D}${sysconfdir}
+    install -m 600 ${WORKDIR}/vsftpd.conf ${D}${sysconfdir}/vsftpd.conf
+    install -d ${D}${sysconfdir}/init.d/
+    install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/vsftpd
+    install -d ${D}/${sysconfdir}/default/volatiles
+    install -m 644 ${WORKDIR}/volatiles.99_vsftpd ${D}/${sysconfdir}/default/volatiles/99_vsftpd
+
+    install -m 600 ${WORKDIR}/vsftpd.ftpusers ${D}${sysconfdir}/
+    install -m 600 ${WORKDIR}/vsftpd.user_list ${D}${sysconfdir}/
+    if ! test -z "${PAMLIB}" ; then
+        install -d ${D}${sysconfdir}/pam.d/
+        cp ${S}/RedHat/vsftpd.pam ${D}${sysconfdir}/pam.d/vsftpd
+        sed -i "s:/lib/security:${base_libdir}/security:" ${D}${sysconfdir}/pam.d/vsftpd
+        sed -i "s:ftpusers:vsftpd.ftpusers:" ${D}${sysconfdir}/pam.d/vsftpd
+    fi
+    if ${@base_contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        echo "d /var/run/vsftpd/empty 0755 root root -" \
+        > ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
+    fi
+
+    # Install systemd unit files
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/vsftpd.service ${D}${systemd_unitdir}/system
+    sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/vsftpd.service
+}
+
+INITSCRIPT_PACKAGES = "${PN}"
+INITSCRIPT_NAME_${PN} = "vsftpd"
+INITSCRIPT_PARAMS_${PN} = "defaults 80"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system --home-dir /var/lib/ftp --no-create-home -g ftp \
+                       --shell /bin/false ftp "
+GROUPADD_PARAM_${PN} = "-r ftp"
+
+SYSTEMD_SERVICE_${PN} = "vsftpd.service"
+
+pkg_postinst_${PN}() {
+    if [ -z "$D" ]; then
+	if type systemd-tmpfiles >/dev/null; then
+	    systemd-tmpfiles --create
+	elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+	    ${sysconfdir}/init.d/populate-volatile.sh update
+	fi
+    fi
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/access-sk_v6_daddr-iff-IPV6-defined.patch b/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/access-sk_v6_daddr-iff-IPV6-defined.patch
new file mode 100644
index 0000000..4444234
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/access-sk_v6_daddr-iff-IPV6-defined.patch
@@ -0,0 +1,28 @@
+The element skc_v6_daddr (in struct sock_common) is defined in 
+kernel source only when CONFIG_IPV6 is enabled. Hence, access 
+sk_v6_daddr element (i.e __sk_common.skc_v6_daddr) only when CONFIG_IPV6 
+is defined; to fix below error in world build:
+
+-- snip --
+/home/jenkins/oe/world/shr-core/tmp-glibc/work-shared/qemux86/kernel-source/include/net/sock.h:330:33: error: 'struct sock_common' has no member named 'skc_v6_daddr'
+-- CUT --
+
+Upstream-Status: Pending
+
+Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
+
+--- iscsitarget-1.4.20.3+svn502_org/kernel/conn.c	2015-12-29 21:57:50.547932217 -0800
++++ iscsitarget-1.4.20.3+svn502/kernel/conn.c	2015-12-29 22:47:25.254657627 -0800
+@@ -46,10 +46,12 @@ void conn_info_show(struct seq_file *seq
+ 			snprintf(buf, sizeof(buf),
+ 				 "%pI4", &inet_sk(sk)->inet_daddr);
+ 			break;
++#if defined(CONFIG_IPV6)
+ 		case AF_INET6:
+ 			snprintf(buf, sizeof(buf), "[%pI6]",
+ 				 &(sk)->sk_v6_daddr);
+ 			break;
++#endif /* defined(CONFIG_IPV6) */
+ 		default:
+ 			break;
+ 		}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/build_with_updated_bio_struct_of_linux_v4.3_and_above.patch b/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/build_with_updated_bio_struct_of_linux_v4.3_and_above.patch
new file mode 100644
index 0000000..0e8b792
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/build_with_updated_bio_struct_of_linux_v4.3_and_above.patch
@@ -0,0 +1,75 @@
+1. test_bit was used to return true boolean value, if
+   BIO_UPTODATE bit of bio->bi_flags is set. But the same
+   job can be done by checking bio->bi_error, implemented in
+   linux kernel 4.3 and above. If bio->bi_error is set, then 
+   it denotes error.
+
+Ref: https://github.com/torvalds/linux/commit/4246a0b63bd8f56a1469b12eafeb875b1041a451
+
+It solves below build error:
+-- snip --
+iscsitarget-1.4.20.3+svn502/kernel/block-io.c:40:19: error: 'BIO_UPTODATE' undeclared (first use in this function)
+   error = test_bit(BIO_UPTODATE, &bio->bi_flags) ? error : -EIO;
+-- CUT --
+
+2. bio can always be filled to a maximum value of BIO_MAX_PAGES, 
+   so no need to check for min value for linux kernel 4.3 and above.
+
+Ref: https://github.com/torvalds/linux/commit/b54ffb73cadcdcff9cc1ae0e11f502407e3e2e4c
+
+It solves below build error:
+-- snip --
+iscsitarget-1.4.20.3+svn502/kernel/block-io.c:80:15: error: implicit declaration of function 'bio_get_nr_vecs' [-Werror=implicit-function-declaration]
+    max_pages = bio_get_nr_vecs(bio_data->bdev);
+-- CUT --
+
+Upstream-Status: Pending
+
+Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
+
+diff -Naurp iscsitarget-1.4.20.3+svn502_org/kernel/block-io.c iscsitarget-1.4.20.3+svn502/kernel/block-io.c
+--- iscsitarget-1.4.20.3+svn502_org/kernel/block-io.c	2016-04-01 09:07:12.891810059 +0530
++++ iscsitarget-1.4.20.3+svn502/kernel/block-io.c	2016-04-01 09:15:59.076469313 +0530
+@@ -33,7 +33,11 @@ static void blockio_bio_endio(struct bio
+ {
+ 	struct tio_work *tio_work = bio->bi_private;
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
++	error = bio->bi_error ? -EIO : error;
++#else
+ 	error = test_bit(BIO_UPTODATE, &bio->bi_flags) ? error : -EIO;
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0) */	
+ 
+ 	if (error)
+ 		atomic_set(&tio_work->error, error);
+@@ -61,6 +65,10 @@ blockio_make_request(struct iet_volume *
+ 	u32 size = tio->size;
+ 	u32 tio_index = 0;
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
++	int err = 0;
++	loff_t ppos = tio->offset;	
++#else	
+ 	int max_pages = 1;
+ 	int err = 0;
+ 
+@@ -69,6 +77,7 @@ blockio_make_request(struct iet_volume *
+ 	/* Calculate max_pages for bio_alloc (memory saver) */
+ 	if (bdev_q)
+ 		max_pages = bio_get_nr_vecs(bio_data->bdev);
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0) */
+ 
+ 	tio_work = kzalloc(sizeof (*tio_work), GFP_KERNEL);
+ 	if (!tio_work)
+@@ -80,7 +89,11 @@ blockio_make_request(struct iet_volume *
+ 
+ 	/* Main processing loop, allocate and fill all bios */
+ 	while (size && tio_index < tio->pg_cnt) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
++		bio = bio_alloc(GFP_KERNEL, BIO_MAX_PAGES);
++#else    		
+ 		bio = bio_alloc(GFP_KERNEL, min(max_pages, BIO_MAX_PAGES));
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0) */		
+ 		if (!bio) {
+ 			err = -ENOMEM;
+ 			goto out;
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/fix-errors-observed-with-linux-3.19-and-greater.patch b/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/fix-errors-observed-with-linux-3.19-and-greater.patch
new file mode 100644
index 0000000..6878ca2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/fix-errors-observed-with-linux-3.19-and-greater.patch
@@ -0,0 +1,198 @@
+Fix build errors with linux kernel v3.19 and above
+
+Below errors came up while building iscsitarget for 
+qemux86-64 (and others) because,
+1. 'struct user_msghdr' is being used for userland-side msghdr instead
+of 'struct msghdr', which is used for kernel-side msghdr in linux v3.19
+and above.
+
+error snippet:
+-- snip --
+| /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/iscsi.c: In function 'cmnd_skip_pdu':
+| /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/iscsi.c:492:16: error: 'struct msghdr' has no member named 'msg_iov'
+|   conn->read_msg.msg_iov = conn->read_iov;
+-- CUT --
+
+Reference:
+https://github.com/torvalds/linux/commit/666547ff591cebdedc4679bf6b1b3f3383a8dea3
+
+2. 'SERVICE_ACTION_IN' has been renamed to SERVICE_ACTION_IN_16 in linux v3.19
+and above.
+
+error snippet:
+-- snip --
+| /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/iscsi.c: In function 'scsi_cmnd_start':
+| /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/iscsi.c:989:7: error: 'SERVICE_ACTION_IN' undeclared (first use in this function)
+|   case SERVICE_ACTION_IN:
+-- CUT --
+
+Reference:
+https://github.com/torvalds/linux/commit/eb846d9f147455e4e5e1863bfb5e31974bb69b7c
+
+3. In linux v3.19 and above, f_dentry member has been removed from 
+'struct file' structure.
+
+error snippet:
+-- snip --
+| /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/conn.c: In function 'iet_socket_bind':
+| /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/conn.c:130:34: error: 'struct file' has no member named 'f_dentry'
+|   conn->sock = SOCKET_I(conn->file->f_dentry->d_inode);
+-- CUT --
+
+new helper function file_inode(file) should be used instead.
+
+References:
+1. https://github.com/torvalds/linux/commit/78d28e651f97866d608d9b41f8ad291e65d47dd5
+2. https://github.com/torvalds/linux/commit/496ad9aa8ef448058e36ca7a787c61f2e63f0f54
+
+Upstream-Status: Pending
+
+Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
+
+--- iscsitarget-1.4.20.3+svn502_org/kernel/conn.c	2015-08-24 16:13:26.481924679 +0530
++++ iscsitarget-1.4.20.3+svn502/kernel/conn.c	2015-08-24 17:27:06.897653698 +0530
+@@ -127,7 +127,11 @@ static void iet_socket_bind(struct iscsi
+ 
+ 	dprintk(D_GENERIC, "%llu\n", (unsigned long long) session->sid);
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
++	conn->sock = SOCKET_I(file_inode(conn->file));
++#else
+ 	conn->sock = SOCKET_I(conn->file->f_dentry->d_inode);
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
+ 	conn->sock->sk->sk_user_data = conn;
+ 
+ 	write_lock_bh(&conn->sock->sk->sk_callback_lock);
+--- iscsitarget-1.4.20.3+svn502_org/kernel/file-io.c	2015-08-24 16:13:26.481924679 +0530
++++ iscsitarget-1.4.20.3+svn502/kernel/file-io.c	2015-08-24 17:30:54.390131100 +0530
+@@ -69,7 +69,11 @@ static int fileio_make_request(struct ie
+ static int fileio_sync(struct iet_volume *lu, struct tio *tio)
+ {
+ 	struct fileio_data *p = lu->private;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
++	struct inode *inode = file_inode(p->filp);
++#else
+ 	struct inode *inode = p->filp->f_dentry->d_inode;
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
+ 	struct address_space *mapping = inode->i_mapping;
+ 	loff_t ppos, count;
+ 	int res;
+@@ -213,7 +217,11 @@ static int fileio_attach(struct iet_volu
+ 		eprintk("%d\n", err);
+ 		goto out;
+ 	}
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
++	inode = file_inode(p->filp);
++#else
+ 	inode = p->filp->f_dentry->d_inode;
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
+ 
+ 	if (S_ISREG(inode->i_mode))
+ 		;
+--- iscsitarget-1.4.20.3+svn502_org/kernel/iscsi.c	2015-08-24 16:13:26.481924679 +0530
++++ iscsitarget-1.4.20.3+svn502/kernel/iscsi.c	2015-08-24 17:33:50.950490156 +0530
+@@ -986,7 +986,11 @@ static void scsi_cmnd_start(struct iscsi
+ 		set_cmnd_lunit(req);
+ 
+ 	switch (req_hdr->scb[0]) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
++	case SERVICE_ACTION_IN_16:
++#else
+ 	case SERVICE_ACTION_IN:
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
+ 		if ((req_hdr->scb[1] & 0x1f) != 0x10)
+ 			goto error;
+ 	case INQUIRY:
+--- iscsitarget-1.4.20.3+svn502_org/kernel/iscsi.h	2015-08-24 16:13:26.481924679 +0530
++++ iscsitarget-1.4.20.3+svn502/kernel/iscsi.h	2015-08-24 17:35:31.354690051 +0530
+@@ -257,7 +257,11 @@ struct iscsi_conn {
+ 	struct timer_list nop_timer;
+ 
+ 	struct iscsi_cmnd *read_cmnd;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
++	struct user_msghdr read_msg;
++#else
+ 	struct msghdr read_msg;
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
+ 	struct iovec read_iov[ISCSI_CONN_IOV_MAX];
+ 	u32 read_size;
+ 	u32 read_overflow;
+--- iscsitarget-1.4.20.3+svn502_org/kernel/nthread.c	2015-08-24 16:13:26.481924679 +0530
++++ iscsitarget-1.4.20.3+svn502/kernel/nthread.c	2015-08-24 17:41:56.187428925 +0530
+@@ -80,8 +80,11 @@ static int is_data_available(struct iscs
+ 	set_fs(oldfs);
+ 	return (res >= 0) ? avail : res;
+ }
+-
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
++static void forward_iov(struct user_msghdr *msg, int len)
++#else
+ static void forward_iov(struct msghdr *msg, int len)
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
+ {
+ 	while (msg->msg_iov->iov_len <= len) {
+ 		len -= msg->msg_iov->iov_len;
+@@ -96,7 +99,11 @@ static void forward_iov(struct msghdr *m
+ static int do_recv(struct iscsi_conn *conn, int state)
+ {
+ 	mm_segment_t oldfs;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
++	struct user_msghdr msg;
++#else
+ 	struct msghdr msg;
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
+ 	struct iovec iov[ISCSI_CONN_IOV_MAX];
+ 	int i, len, res;
+ 
+@@ -461,7 +468,11 @@ static void exit_tx(struct iscsi_conn *c
+ static int tx_ddigest(struct iscsi_cmnd *cmnd, int state)
+ {
+ 	int res, rest = cmnd->conn->write_size;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
++	struct user_msghdr msg = {.msg_flags = MSG_NOSIGNAL | MSG_DONTWAIT};
++#else
+ 	struct msghdr msg = {.msg_flags = MSG_NOSIGNAL | MSG_DONTWAIT};
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
+ 	struct kvec iov;
+ 
+ 	iov.iov_base = (char *) (&cmnd->ddigest) + (sizeof(u32) - rest);
+--- iscsitarget-1.4.20.3+svn502_org/kernel/target_disk.c	2015-08-24 16:13:26.481924679 +0530
++++ iscsitarget-1.4.20.3+svn502/kernel/target_disk.c	2015-08-24 17:43:42.167625159 +0530
+@@ -606,7 +606,11 @@ static int disk_execute_cmnd(struct iscs
+ 	case REQUEST_SENSE:
+ 		send_data_rsp(cmnd, build_request_sense_response);
+ 		break;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
++	case SERVICE_ACTION_IN_16:
++#else
+ 	case SERVICE_ACTION_IN:
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */	
+ 		send_data_rsp(cmnd, build_service_action_in_response);
+ 		break;
+ 	case READ_6:
+--- iscsitarget-1.4.20.3+svn502_org/kernel/volume.c	2015-08-24 16:13:26.477924674 +0530
++++ iscsitarget-1.4.20.3+svn502/kernel/volume.c	2015-08-24 18:28:15.697074780 +0530
+@@ -398,7 +398,11 @@ int is_volume_reserved(struct iet_volume
+ 		case READ_CAPACITY:
+ 			/* allowed commands when reserved */
+ 			break;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)			
++		case SERVICE_ACTION_IN_16:
++#else
+ 		case SERVICE_ACTION_IN:
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
+ 			if ((scb[1] & 0x1F) == 0x10)
+ 				break;
+ 			/* fall through */
+@@ -465,7 +469,11 @@ int is_volume_reserved(struct iet_volume
+ 		if (excl_access_ro && !registered)
+ 			err = -EBUSY;
+ 		break;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
++	case SERVICE_ACTION_IN_16:
++#else
+ 	case SERVICE_ACTION_IN:
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
+ 		if ((scb[1] & 0x1F) == 0x10)
+ 			break;
+ 		/* fall through */
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/use-kernel-makefile-to-get-kernel-version.patch b/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/use-kernel-makefile-to-get-kernel-version.patch
new file mode 100644
index 0000000..95bd047
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/files/use-kernel-makefile-to-get-kernel-version.patch
@@ -0,0 +1,67 @@
+Get linux kernel version from Makefile of kernel source
+
+We get below messages while building iscsitarget,
+
+-- snip --
+x86_64-poky-linux-gcc: error:
+/CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work-shared/qemux86-64/kernel-source/include/linux/version.h:
+No such file or directory
+x86_64-poky-linux-gcc: fatal error: no input files
+compilation terminated.
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+/bin/sh: line 0: [: too many arguments
+-- CUT --
+
+These messages are due to absence of include/linux/version.h file in 
+kernel source directory and failed to compute linux kernel version.
+So, use kernel source Makefile ( i.e $(KSRC)/Makefile) to find out 
+actual kernel version.
+
+Upstream-Status: Pending
+
+Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
+
+--- iscsitarget-1.4.20.3+svn499_org/Makefile	2014-01-27 00:00:45.000000000 +0530
++++ iscsitarget-1.4.20.3+svn499/Makefile	2015-07-23 10:44:47.013600285 +0530
+@@ -18,27 +18,11 @@ ifeq ($(KSRC),)
+ endif
+ 
+ 
+-ifneq ($(wildcard $(KSRC)/include/generated/utsrelease.h),)
+-	VERSION_FILE := $(KSRC)/include/generated/utsrelease.h
+-else
+-  ifneq ($(wildcard $(KSRC)/include/linux/utsrelease.h),)
+-	  VERSION_FILE := $(KSRC)/include/linux/utsrelease.h
+-  else
+-	  VERSION_FILE := $(KSRC)/include/linux/version.h
+-  endif
+-endif
+-
+-KVER := $(shell $(CC) $(CFLAGS) $(LDFLAGS) -E -dM $(VERSION_FILE) | \
+-	grep UTS_RELEASE | awk '{ print $$3 }' | sed 's/\"//g')
+-
+ KMOD := /lib/modules/$(KVER)/extra
+-
+-KMAJ := $(shell echo $(KVER) | \
+-	sed -e 's/^\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*.*/\1/')
+-KMIN := $(shell echo $(KVER) | \
+-	sed -e 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*.*/\1/')
+-KREV := $(shell echo $(KVER) | \
+-	sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/')
++KMAJ := $(shell cat $(KSRC)/Makefile | grep ^VERSION | gawk -F " " '{ print $$NF }')
++KMIN := $(shell cat $(KSRC)/Makefile | grep ^PATCHLEVEL | gawk -F " " '{ print $$NF }')
++KREV := $(shell cat $(KSRC)/Makefile | grep ^SUBLEVEL | gawk -F " " '{ print $$NF }')
++KVER := ${KMAJ}.${KMIN}.${KREV}
+ 
+ kver_eq = $(shell [ $(KMAJ) -eq $(1) -a $(KMIN) -eq $(2) -a $(KREV) -eq $(3) ] && \
+ 	echo 1 || echo 0)
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb b/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb
new file mode 100644
index 0000000..4c5eed6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "iSCSI Enterprise Target is aimed to develop an \
+               open source iSCSI target with professional features, \
+               that works well in enterprise environment under real \
+               workload, and is scalable and versatile enough to meet the \
+               challenge of future storage needs and developments."
+HOMEPAGE = "http://iscsitarget.sourceforge.net/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6e233eda45c807aa29aeaa6d94bc48a2"
+DEPENDS = "openssl virtual/kernel"
+
+SRC_URI = "http://ftp.heanet.ie/mirrors/ubuntu/pool/universe/i/${BPN}/${BPN}_${PV}.orig.tar.gz \
+           file://use-kernel-makefile-to-get-kernel-version.patch \
+           file://fix-errors-observed-with-linux-3.19-and-greater.patch \
+           file://access-sk_v6_daddr-iff-IPV6-defined.patch \
+           file://build_with_updated_bio_struct_of_linux_v4.3_and_above.patch"
+
+SRC_URI[md5sum] = "ef9bc823bbabd3c772208c00d5f2d089"
+SRC_URI[sha256sum] = "d3196ccb78a43266dce28587bfe30d8ab4db7566d7bce96057dfbb84100babb5"
+
+inherit module
+
+do_configure[noexec] = "1"
+
+# make_scripts requires kernel source directory to create
+# kernel scripts
+do_make_scripts[depends] += "virtual/kernel:do_shared_workdir"
+
+do_compile() {
+    oe_runmake KSRC=${STAGING_KERNEL_DIR} LDFLAGS='' V=1
+}
+
+do_install() {
+    # Module
+    install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/iscsi
+    install -m 0644 kernel/iscsi_trgt.ko \
+    ${D}/lib/modules/${KERNEL_VERSION}/kernel/iscsi/iscsi_trgt.ko
+    
+    # Userspace utilities
+    install -d ${D}${sbindir}
+    install -m 0755 usr/ietd ${D}${sbindir}/ietd
+    install -m 0755 usr/ietadm ${D}${sbindir}/ietadm
+    
+    # Config files, init scripts
+    mkdir -p ${D}${sysconfdir}/iet
+    install -m 0644 etc/ietd.conf ${D}/${sysconfdir}/iet/ietd.conf
+    install -m 0644 etc/initiators.allow ${D}${sysconfdir}/iet/initiators.allow
+    install -m 0644 etc/targets.allow ${D}${sysconfdir}/iet/targets.allow
+    mkdir -p ${D}${sysconfdir}/init.d
+    install -m 0755 etc/initd/initd ${D}${sysconfdir}/init.d/iscsi-target
+    install -m 0644 etc/initiators.deny ${D}${sysconfdir}/iet/initiators.deny
+}
+
+FILES_${PN} += "${sbindir} \
+                ${sysconfdir}"
+
+RDEPENDS_${PN} = "kernel-module-iscsi-trgt"
+RRECOMMENDS_${PN} = "kernel-module-crc32c kernel-module-libcrc32c"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/conntrack-tools_1.4.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/conntrack-tools_1.4.2.bb
new file mode 100644
index 0000000..7b11d20
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/conntrack-tools_1.4.2.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Connection tracking userspace tools for Linux"
+SECTION = "net"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+DEPENDS = "libnfnetlink libnetfilter-conntrack libnetfilter-cttimeout \
+           libnetfilter-cthelper libnetfilter-queue bison-native"
+
+SRC_URI = " \
+    http://www.netfilter.org/projects/conntrack-tools/files/conntrack-tools-${PV}.tar.bz2;name=tar \
+    file://conntrack-failover \
+    file://init \
+    file://0001-conntrackd-build-fix-crash-when-optional-kernel-modu.patch \
+"
+SRC_URI[tar.md5sum] = "b1f9d006e7bf000a77395ff7cd3fac16"
+SRC_URI[tar.sha256sum] = "e5c423dc077f9ca8767eaa6cf40446943905711c6a8fe27f9cc1977d4d6aa11e"
+
+inherit autotools-brokensep update-rc.d pkgconfig
+
+INITSCRIPT_NAME = "conntrackd"
+
+do_install_append() {
+    install -d ${D}/${sysconfdir}/conntrackd
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 0644 doc/sync/ftfw/conntrackd.conf ${D}/${sysconfdir}/conntrackd/conntrackd.conf.sample
+    install -m 0755 ${WORKDIR}/conntrack-failover ${D}/${sysconfdir}/init.d/conntrack-failover
+    install -m 0755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/conntrackd
+
+    # Fix hardcoded paths in scripts
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}/${sysconfdir}/init.d/conntrack-failover ${D}/${sysconfdir}/init.d/conntrackd
+    sed -i 's!/etc/!${sysconfdir}/!g' ${D}/${sysconfdir}/init.d/conntrack-failover ${D}/${sysconfdir}/init.d/conntrackd
+    sed -i 's!/var/!${localstatedir}/!g' ${D}/${sysconfdir}/init.d/conntrack-failover ${D}/${sysconfdir}/init.d/conntrackd ${D}/${sysconfdir}/conntrackd/conntrackd.conf.sample
+    sed -i 's!^export PATH=.*!export PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}/${sysconfdir}/init.d/conntrackd
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/files/0001-conntrackd-build-fix-crash-when-optional-kernel-modu.patch b/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/files/0001-conntrackd-build-fix-crash-when-optional-kernel-modu.patch
new file mode 100644
index 0000000..a7ab6d6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/files/0001-conntrackd-build-fix-crash-when-optional-kernel-modu.patch
@@ -0,0 +1,85 @@
+From c392c159605956c7bd4a264ab4490e2b2704c0cd Mon Sep 17 00:00:00 2001
+From: Pablo Neira Ayuso <pablo@netfilter.org>
+Date: Fri, 13 Jun 2014 12:53:17 +0200
+Subject: [PATCH] conntrackd: build: fix crash when optional kernel modules are
+ not loaded
+
+Upstream-Status: Backport
+
+Fix a possible crash if conntrackd sees DCCP, SCTP and ICMPv6 traffic
+and the corresponding kernel modules that track this traffic are not
+available.
+
+Fixes: http://bugzilla.netfilter.org/show_bug.cgi?id=910
+Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+---
+ src/build.c | 22 +++++++++++++---------
+ 1 file changed, 13 insertions(+), 9 deletions(-)
+
+diff --git a/src/build.c b/src/build.c
+index 5799b51..9ba8b57 100644
+--- a/src/build.c
++++ b/src/build.c
+@@ -105,14 +105,14 @@ static enum nf_conntrack_attr nat_type[] =
+ 	  ATTR_ORIG_NAT_SEQ_OFFSET_AFTER, ATTR_REPL_NAT_SEQ_CORRECTION_POS,
+ 	  ATTR_REPL_NAT_SEQ_OFFSET_BEFORE, ATTR_REPL_NAT_SEQ_OFFSET_AFTER };
+ 
++/* ICMP, UDP and TCP are always loaded with nf_conntrack_ipv4 */
+ static void build_l4proto_tcp(const struct nf_conntrack *ct, struct nethdr *n)
+ {
+-	ct_build_group(ct, ATTR_GRP_ORIG_PORT, n, NTA_PORT,
+-		      sizeof(struct nfct_attr_grp_port));
+-
+ 	if (!nfct_attr_is_set(ct, ATTR_TCP_STATE))
+ 		return;
+ 
++	ct_build_group(ct, ATTR_GRP_ORIG_PORT, n, NTA_PORT,
++		      sizeof(struct nfct_attr_grp_port));
+ 	ct_build_u8(ct, ATTR_TCP_STATE, n, NTA_TCP_STATE);
+ 	if (CONFIG(sync).tcp_window_tracking) {
+ 		ct_build_u8(ct, ATTR_TCP_WSCALE_ORIG, n, NTA_TCP_WSCALE_ORIG);
+@@ -122,12 +122,12 @@ static void build_l4proto_tcp(const struct nf_conntrack *ct, struct nethdr *n)
+ 
+ static void build_l4proto_sctp(const struct nf_conntrack *ct, struct nethdr *n)
+ {
+-	ct_build_group(ct, ATTR_GRP_ORIG_PORT, n, NTA_PORT,
+-		      sizeof(struct nfct_attr_grp_port));
+-
++	/* SCTP is optional, make sure nf_conntrack_sctp is loaded */
+ 	if (!nfct_attr_is_set(ct, ATTR_SCTP_STATE))
+ 		return;
+ 
++	ct_build_group(ct, ATTR_GRP_ORIG_PORT, n, NTA_PORT,
++		      sizeof(struct nfct_attr_grp_port));
+ 	ct_build_u8(ct, ATTR_SCTP_STATE, n, NTA_SCTP_STATE);
+ 	ct_build_u32(ct, ATTR_SCTP_VTAG_ORIG, n, NTA_SCTP_VTAG_ORIG);
+ 	ct_build_u32(ct, ATTR_SCTP_VTAG_REPL, n, NTA_SCTP_VTAG_REPL);
+@@ -135,18 +135,22 @@ static void build_l4proto_sctp(const struct nf_conntrack *ct, struct nethdr *n)
+ 
+ static void build_l4proto_dccp(const struct nf_conntrack *ct, struct nethdr *n)
+ {
+-	ct_build_group(ct, ATTR_GRP_ORIG_PORT, n, NTA_PORT,
+-		      sizeof(struct nfct_attr_grp_port));
+-
++	/* DCCP is optional, make sure nf_conntrack_dccp is loaded */
+ 	if (!nfct_attr_is_set(ct, ATTR_DCCP_STATE))
+ 		return;
+ 
++	ct_build_group(ct, ATTR_GRP_ORIG_PORT, n, NTA_PORT,
++		      sizeof(struct nfct_attr_grp_port));
+ 	ct_build_u8(ct, ATTR_DCCP_STATE, n, NTA_DCCP_STATE);
+ 	ct_build_u8(ct, ATTR_DCCP_ROLE, n, NTA_DCCP_ROLE);
+ }
+ 
+ static void build_l4proto_icmp(const struct nf_conntrack *ct, struct nethdr *n)
+ {
++	/* This is also used by ICMPv6 and nf_conntrack_ipv6 is optional */
++	if (!nfct_attr_is_set(ct, ATTR_ICMP_TYPE))
++		return;
++
+ 	ct_build_u8(ct, ATTR_ICMP_TYPE, n, NTA_ICMP_TYPE);
+ 	ct_build_u8(ct, ATTR_ICMP_CODE, n, NTA_ICMP_CODE);
+ 	ct_build_u16(ct, ATTR_ICMP_ID, n, NTA_ICMP_ID);
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/files/conntrack-failover b/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/files/conntrack-failover
new file mode 100644
index 0000000..6d92e63
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/files/conntrack-failover
@@ -0,0 +1,77 @@
+#!/bin/sh
+# 
+# (C) 2008 by Pablo Neira Ayuso <pablo@netfilter.org>
+# (C) 2009 Roman I Khimov <khimov@altell.ru>
+#
+# This software may be used and distributed according to the terms
+# of the GNU General Public License, incorporated herein by reference.
+#
+# Description:
+#
+# This is the script for primary-backup setups for keepalived
+# (http://www.keepalived.org). You may adapt it to make it work with other
+# high-availability managers.
+#
+# Do not forget to include the required modifications to your keepalived.conf
+# file to invoke this script during keepalived's state transitions.
+#
+# Contributions to improve this script are welcome :).
+#
+## Modified to work as init.d script under pacemaker control
+
+CONNTRACKD_BIN=/usr/sbin/conntrackd
+CONNTRACKD_LOCK=/var/lock/conntrack.lock
+CONNTRACKD_CONFIG=/etc/conntrackd/conntrackd.conf
+
+case "$1" in
+  start)
+    #
+    # commit the external cache into the kernel table
+    #
+    $CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -c
+    if [ $? -eq 1 ]
+    then
+        logger "ERROR: failed to invoke conntrackd -c"
+    fi
+
+    #
+    # flush the internal and the external caches
+    #
+    $CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -f
+    if [ $? -eq 1 ]
+    then
+    	logger "ERROR: failed to invoke conntrackd -f"
+    fi
+
+    #
+    # resynchronize my internal cache to the kernel table
+    #
+    $CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -R
+    if [ $? -eq 1 ]
+    then
+    	logger "ERROR: failed to invoke conntrackd -R"
+    fi
+
+    #
+    # send a bulk update to backups 
+    #
+    $CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -B
+    if [ $? -eq 1 ]
+    then
+        logger "ERROR: failed to invoke conntrackd -B"
+    fi
+    ;;
+  stop)
+	$CONNTRACKD_BIN -t
+	$CONNTRACKD_BIN -n
+	;;
+  status)
+	;;
+  *)
+    logger "ERROR: unknown command"
+    echo "Usage: conntrack-failover {start|stop|status}"
+    exit 1
+    ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/files/init b/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/files/init
new file mode 100644
index 0000000..bce2075
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/files/init
@@ -0,0 +1,87 @@
+#!/bin/sh
+#
+# /etc/init.d/conntrackd
+#
+# Maximilian Wilhelm <max@rfc2324.org>
+#  -- Mon, 06 Nov 2006 18:39:07 +0100
+#
+# Roman I Khimov <khimov@altell.ru>
+#  -- Tue, 27 Oct 2009 14:34:00 +0300
+
+### BEGIN INIT INFO
+# Provides:          conntrackd
+# Required-Start:    $remote_fs $syslog
+# Required-Stop:     $remote_fs $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Description: Starts conntrackd
+# short-description: Starts conntrackd
+### END INIT INFO
+
+export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+NAME="conntrackd"
+DAEMON="/usr/sbin/conntrackd"
+CONFIG="/etc/conntrackd/conntrackd.conf"
+PIDFILE="/var/run/${NAME}.pid"
+
+
+# Gracefully exit if there is no daemon (debian way of life)
+if [ ! -x "${DAEMON}" ]; then
+	exit 0
+fi
+
+# Check for config file
+if [ ! -f /etc/conntrackd/conntrackd.conf ]; then
+	echo "Error: There is no config file for $NAME" >&2
+	exit 1;
+fi
+
+case "$1" in
+  start)
+        echo -n "Starting $NAME: "
+	for i in nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_proto_dccp nf_conntrack_tftp \
+		nf_conntrack_sane nf_conntrack_pptp nf_conntrack_irc nf_conntrack_amanda nf_conntrack_h323 \
+		nf_conntrack_proto_udplite nf_conntrack_proto_gre nf_conntrack_proto_sctp nf_conntrack_ftp \
+		nf_conntrack_sip; do
+		modprobe $i >/dev/null 2>/dev/null &
+	done
+	start-stop-daemon --start --quiet --make-pidfile --pidfile "/var/run/${NAME}.pid" --background --exec "${DAEMON}"
+	RET=$?
+	if [ "$?" = "0" ]; then
+		sleep 2
+		# Sync with other server
+		conntrackd -n
+		echo "done."
+	else
+		echo "FAILED!"
+	fi
+	exit $RET
+	;;
+  stop)
+        echo -n "Stopping $NAME:"
+	start-stop-daemon --stop --quiet --oknodo --pidfile "/var/run/${NAME}.pid" && echo "done." || echo "FAILED!"
+	;;
+  status)
+	echo -n "conntrackd "
+	start-stop-daemon -q -K -t -x $DAEMON
+	RET=$?
+	if [ "$RET" = "0" ]; then
+                PID=`cat $PIDFILE`
+		echo "($PID) is running"
+	else
+		echo "is not running"
+		exit $RET
+	fi
+	;;
+  restart)
+	$0 stop
+	$0 start
+	;;
+
+  *)
+	echo "Usage: /etc/init.d/conntrackd {start|stop|restart}"
+	exit 1
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/01debian_defaultconfig.patch b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/01debian_defaultconfig.patch
new file mode 100644
index 0000000..c260403
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/01debian_defaultconfig.patch
@@ -0,0 +1,50 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## debian_defaultconfig.dpatch by  <hesso@pool.math.tu-berlin.de>
+##
+## DP: Debian enhancements to the ebtables "sysconfig" default settings.
+
+@DPATCH@
+
+--- ebtables-2.0.8.1.orig/ebtables-config
++++ ebtables-2.0.8.1/ebtables-config
+@@ -1,17 +1,3 @@
+-# Save (and possibly restore) in text format.
+-#   Value: yes|no,  default: yes
+-# Save the firewall rules in text format to __SYSCONFIG__/ebtables
+-# If EBTABLES_BINARY_FORMAT="no" then restoring the firewall rules
+-# is done using this text format.
+-EBTABLES_TEXT_FORMAT="yes"
+-
+-# Save (and restore) in binary format.
+-#   Value: yes|no,  default: yes
+-# Save (and restore) the firewall rules in binary format to (and from)
+-# __SYSCONFIG__/ebtables.<chain>. Enabling this option will make
+-# firewall initialisation a lot faster.
+-EBTABLES_BINARY_FORMAT="yes"
+-
+ # Unload modules on restart and stop
+ #   Value: yes|no,  default: yes
+ # This option has to be 'yes' to get to a sane state for a firewall
+@@ -19,6 +5,12 @@
+ # modules.
+ EBTABLES_MODULES_UNLOAD="yes"
+ 
++# Load firewall rules on system startup.
++#   Value: yes|no,  default: no
++# Restores the ebtables rulesets from the last saved state when the
++# system boots up.
++EBTABLES_LOAD_ON_START="no"
++
+ # Save current firewall rules on stop.
+ #   Value: yes|no,  default: no
+ # Saves all firewall rules if firewall gets stopped
+@@ -35,3 +27,9 @@
+ # Save rule counters when saving a kernel table to a file. If the
+ # rule counters were saved, they will be restored when restoring the table.
+ EBTABLES_SAVE_COUNTER="no"
++
++# Backup suffix for ruleset save files.
++#   Value: <string>,  default: "~"
++# Keep one backup level of saved rules.
++# Set this variable to the empty string to disable backups.
++EBTABLES_BACKUP_SUFFIX="~"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/ebtables.common b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/ebtables.common
new file mode 100644
index 0000000..640025d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/ebtables.common
@@ -0,0 +1,163 @@
+#!/bin/sh
+
+[ -x /sbin/ebtables ] || exit 1
+
+EBTABLES_DUMPFILE_STEM=/etc/ebtables/dump
+
+RETVAL=0
+prog="ebtables"
+desc="Ethernet bridge filtering"
+umask 0077
+
+#default configuration
+EBTABLES_MODULES_UNLOAD="yes"
+EBTABLES_LOAD_ON_START="no"
+EBTABLES_SAVE_ON_STOP="no"
+EBTABLES_SAVE_ON_RESTART="no"
+EBTABLES_SAVE_COUNTER="no"
+EBTABLES_BACKUP_SUFFIX="~"
+
+config=/etc/default/$prog
+[ -f "$config" ] && . "$config"
+
+function get_supported_tables() {
+	EBTABLES_SUPPORTED_TABLES=
+	/sbin/ebtables -t filter -L 2>&1 1>/dev/null | grep -q permission
+	if [ $? -eq 0 ]; then
+		echo "Error: insufficient privileges to access the ebtables rulesets."
+		exit 1
+	fi
+	for table in filter nat broute; do
+		/sbin/ebtables -t $table -L &> /dev/null
+		if [ $? -eq 0 ]; then
+			EBTABLES_SUPPORTED_TABLES="${EBTABLES_SUPPORTED_TABLES} $table"
+		fi
+	done
+}
+
+function load() {
+	RETVAL=0
+	get_supported_tables
+	echo -n "Restoring ebtables rulesets: "
+	for table in $EBTABLES_SUPPORTED_TABLES; do
+		echo -n "$table "
+		if [ -s ${EBTABLES_DUMPFILE_STEM}.$table ]; then
+			/sbin/ebtables -t $table --atomic-file ${EBTABLES_DUMPFILE_STEM}.$table --atomic-commit
+			RET=$?
+			if [ $RET -ne 0 ]; then
+				echo -n "(failed) "
+				RETVAL=$RET
+			fi
+		else
+			echo -n "(no saved state) "
+		fi
+	done
+	if [ -z "$EBTABLES_SUPPORTED_TABLES" ]; then
+		echo -n "no kernel support. "
+	else
+		echo -n "done. "
+	fi
+	if [ $RETVAL -eq 0 ]; then
+		echo "ok"
+	else
+		echo "fail"
+	fi
+}
+
+function clear() {
+	RETVAL=0
+	get_supported_tables
+	echo -n "Clearing ebtables rulesets: "
+	for table in $EBTABLES_SUPPORTED_TABLES; do
+		echo -n "$table "
+		/sbin/ebtables -t $table --init-table
+	done
+
+	if [ "$EBTABLES_MODULES_UNLOAD" = "yes" ]; then
+		for mod in $(grep -E '^(ebt|ebtable)_' /proc/modules | cut -d' ' -f1) ebtables; do
+			rmmod $mod 2> /dev/null
+		done
+	fi
+	if [ -z "$EBTABLES_SUPPORTED_TABLES" ]; then
+		echo -n "no kernel support. "
+	else
+		echo -n "done. "
+	fi
+	if [ $RETVAL -eq 0 ]; then
+		echo "ok"
+	else
+		echo "fail"
+	fi
+}
+
+function save() {
+	RETVAL=0
+	get_supported_tables
+	echo -n "Saving ebtables rulesets: "
+	for table in $EBTABLES_SUPPORTED_TABLES; do
+		echo -n "$table "
+		[ -n "$EBTABLES_BACKUP_SUFFIX" ] && [ -s ${EBTABLES_DUMPFILE_STEM}.$table ] && \
+		  mv ${EBTABLES_DUMPFILE_STEM}.$table ${EBTABLES_DUMPFILE_STEM}.$table$EBTABLES_BACKUP_SUFFIX
+		/sbin/ebtables -t $table --atomic-file ${EBTABLES_DUMPFILE_STEM}.$table --atomic-save
+		RET=$?
+		if [ $RET -ne 0 ]; then
+			echo -n "(failed) "
+			RETVAL=$RET
+		else
+			if [ "$EBTABLES_SAVE_COUNTER" = "no" ]; then
+				/sbin/ebtables -t $table --atomic-file ${EBTABLES_DUMPFILE_STEM}.$table -Z
+			fi
+		fi
+	done
+	if [ -z "$EBTABLES_SUPPORTED_TABLES" ]; then
+		echo -n "no kernel support. "
+	else
+		echo -n "done. "
+	fi
+	if [ $RETVAL -eq 0 ]; then
+		echo "ok"
+	else
+		echo "fail"
+	fi
+}
+
+case "$1" in
+  start)
+	[ "$EBTABLES_LOAD_ON_START" = "yes" ] && load
+	;;
+  stop)
+	[ "$EBTABLES_SAVE_ON_STOP" = "yes" ] && save
+	clear
+	;;
+  restart|reload|force-reload)
+	[ "$EBTABLES_SAVE_ON_RESTART" = "yes" ] && save
+	clear
+	[ "$EBTABLES_LOAD_ON_START" = "yes" ] && load
+	;;
+  load)
+	load
+	;;
+  save)
+	save
+	;;
+  status)
+	get_supported_tables
+	if [ -z "$EBTABLES_SUPPORTED_TABLES" ]; then
+		echo "No kernel support for ebtables."
+		RETVAL=1
+	else
+		echo -n "Ebtables support available, number of installed rules: "
+		for table in $EBTABLES_SUPPORTED_TABLES; do
+			COUNT=$(( $(/sbin/ebtables -t $table -L | sed -e "/^Bridge chain/! d" -e "s/^.*entries: //" -e "s/,.*$/ +/") 0 ))
+			echo -n "$table($COUNT) "
+		done
+		echo ok
+		RETVAL=0
+	fi
+	;;
+  *)
+	echo "Usage: $0 {start|stop|restart|reload|force-reload|load|save|status}" >&2
+	RETVAL=1
+esac
+
+exit $RETVAL
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/ebtables.init b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/ebtables.init
new file mode 100755
index 0000000..c9a77a2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/ebtables.init
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# init script for the Ethernet Bridge filter tables
+#
+# Written by Dag Wieers <dag@wieers.com>
+# Modified by Rok Papez <rok.papez@arnes.si>
+#	     Bart De Schuymer <bdschuym@pandora.be>
+# Adapted to Debian by Jan Christoph Nordholz <hesso@pool.math.tu-berlin.de>
+# Adapted to OpenEmbedded by Roman I Khimov <khimov@altell.ru>
+#
+# chkconfig: - 15 85
+# description: Ethernet Bridge filtering tables
+#
+### BEGIN INIT INFO
+# Provides:		ebtables
+# Required-Start:	
+# Required-Stop:	
+# Should-Start:		$local_fs
+# Should-Stop:		$local_fs
+# Default-Start:	S
+# Default-Stop:		0 6
+# Short-Description:	ebtables ruleset management
+# Description:		Saves and restores the state of the ebtables rulesets.
+### END INIT INFO
+
+/usr/sbin/ebtables.common $1
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/ebtables.service b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/ebtables.service
new file mode 100644
index 0000000..3abd1fe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/ebtables.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Ethernet Bridge Filtering Tables
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=@SBINDIR@/ebtables.common start
+ExecStop=@SBINDIR@/ebtables.common stop
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/installnonroot.patch b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/installnonroot.patch
new file mode 100644
index 0000000..bcd9bed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/installnonroot.patch
@@ -0,0 +1,43 @@
+diff --git a/Makefile b/Makefile
+index c1106a4..7ea6b7a 100644
+--- a/Makefile
++++ b/Makefile
+@@ -157,31 +157,31 @@ tmp3:=$(shell printf $(PIPE) | sed 's/\//\\\//g')
+ scripts: ebtables-save ebtables.sysv ebtables-config
+ 	cat ebtables-save | sed 's/__EXEC_PATH__/$(tmp1)/g' > ebtables-save_
+ 	mkdir -p $(DESTDIR)$(BINDIR)
+-	install -m 0755 -o root -g root ebtables-save_ $(DESTDIR)$(BINDIR)/ebtables-save
++	install -m 0755 ebtables-save_ $(DESTDIR)$(BINDIR)/ebtables-save
+ 	cat ebtables.sysv | sed 's/__EXEC_PATH__/$(tmp1)/g' | sed 's/__SYSCONFIG__/$(tmp2)/g' > ebtables.sysv_
+ 	if [ "$(DESTDIR)" != "" ]; then mkdir -p $(DESTDIR)$(INITDIR); fi
+-	if test -d $(DESTDIR)$(INITDIR); then install -m 0755 -o root -g root ebtables.sysv_ $(DESTDIR)$(INITDIR)/ebtables; fi
++	if test -d $(DESTDIR)$(INITDIR); then install -m 0755 ebtables.sysv_ $(DESTDIR)$(INITDIR)/ebtables; fi
+ 	cat ebtables-config | sed 's/__SYSCONFIG__/$(tmp2)/g' > ebtables-config_
+ 	if [ "$(DESTDIR)" != "" ]; then mkdir -p $(DESTDIR)$(SYSCONFIGDIR); fi
+-	if test -d $(DESTDIR)$(SYSCONFIGDIR); then install -m 0600 -o root -g root ebtables-config_ $(DESTDIR)$(SYSCONFIGDIR)/ebtables-config; fi
++	if test -d $(DESTDIR)$(SYSCONFIGDIR); then install -m 0600 ebtables-config_ $(DESTDIR)$(SYSCONFIGDIR)/ebtables-config; fi
+ 	rm -f ebtables-save_ ebtables.sysv_ ebtables-config_
+ 
+ tmp4:=$(shell printf $(LOCKFILE) | sed 's/\//\\\//g')
+ $(MANDIR)/man8/ebtables.8: ebtables.8
+ 	mkdir -p $(DESTDIR)$(@D)
+ 	sed -e 's/$$(VERSION)/$(PROGVERSION)/' -e 's/$$(DATE)/$(PROGDATE)/' -e 's/$$(LOCKFILE)/$(tmp4)/' ebtables.8 > ebtables.8_
+-	install -m 0644 -o root -g root ebtables.8_ $(DESTDIR)$@
++	install -m 0644 ebtables.8_ $(DESTDIR)$@
+ 	rm -f ebtables.8_
+ 
+ $(DESTDIR)$(ETHERTYPESFILE): ethertypes
+ 	mkdir -p $(@D)
+-	install -m 0644 -o root -g root $< $@
++	install -m 0644 $< $@
+ 
+ .PHONY: exec
+ exec: ebtables ebtables-restore
+ 	mkdir -p $(DESTDIR)$(BINDIR)
+-	install -m 0755 -o root -g root $(PROGNAME) $(DESTDIR)$(BINDIR)/$(PROGNAME)
+-	install -m 0755 -o root -g root ebtables-restore $(DESTDIR)$(BINDIR)/ebtables-restore
++	install -m 0755 $(PROGNAME) $(DESTDIR)$(BINDIR)/$(PROGNAME)
++	install -m 0755 ebtables-restore $(DESTDIR)$(BINDIR)/ebtables-restore
+ 
+ .PHONY: install
+ install: $(MANDIR)/man8/ebtables.8 $(DESTDIR)$(ETHERTYPESFILE) exec scripts
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/no-as-needed.patch b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/no-as-needed.patch
new file mode 100644
index 0000000..336119d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables-2.0.10-4/no-as-needed.patch
@@ -0,0 +1,25 @@
+link ebtables with --no-as-needed and adjust the link order to fix runtime crash
+
+Program terminated with signal 11, Segmentation fault.
+#0  0x00007ffaa837fb53 in ebt_initialize_entry () from /lib64/ebtables/libebtc.so
+(gdb) bt
+#0  0x00007ffaa837fb53 in ebt_initialize_entry () from /lib64/ebtables/libebtc.so
+#1  0x00007ffaa83824dc in do_command () from /lib64/ebtables/libebtc.so
+#2  0x000000000040065c in ?? ()
+#3  0x00007ffaa7fed755 in __libc_start_main () from /lib64/libc.so.6
+#4  0x0000000000400691 in ?? ()
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Index: ebtables-v2.0.10-4/Makefile
+===================================================================
+--- ebtables-v2.0.10-4.orig/Makefile	2011-12-15 12:02:47.000000000 -0800
++++ ebtables-v2.0.10-4/Makefile	2012-12-17 22:09:45.065973753 -0800
+@@ -90,7 +90,7 @@
+ 	$(CC) -shared $(LDFLAGS) -Wl,-soname,libebtc.so -o libebtc.so -lc $(OBJECTS2)
+ 
+ ebtables: $(OBJECTS) ebtables-standalone.o libebtc.so
+-	$(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(LDFLAGS) -o $@ ebtables-standalone.o -I$(KERNEL_INCLUDES) -L. -Lextensions -lebtc $(EXT_LIBSI) \
++	$(CC) $(CFLAGS) $(CFLAGS_SH_LIB) $(LDFLAGS) -o $@ ebtables-standalone.o -I$(KERNEL_INCLUDES) -L. -Lextensions -Wl,--no-as-needed $(EXT_LIBSI) -lebtc \
+ 	-Wl,-rpath,$(LIBDIR)
+ 
+ ebtablesu: ebtablesu.c
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables_2.0.10-4.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables_2.0.10-4.bb
new file mode 100644
index 0000000..e9b726c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables_2.0.10-4.bb
@@ -0,0 +1,90 @@
+SUMMARY = "Filtering tool for a Linux-based bridging firewall"
+DESCRIPTION = "Utility for basic Ethernet frame filtering on a Linux bridge, \
+               advanced logging, MAC DNAT/SNAT and brouting."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=53b4a999993871a28ab1488fdbd2e73e"
+SECTION = "net"
+PR = "r3"
+
+RDEPENDS_${PN} += "perl"
+
+RRECOMMENDS_${PN} += "kernel-module-ebtables \
+    "
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/ebtables/ebtables-v${PV}.tar.gz \
+           file://installnonroot.patch \
+           file://01debian_defaultconfig.patch \
+           file://ebtables.init \
+           file://ebtables.common \
+           file://ebtables.service \
+           file://no-as-needed.patch \
+"
+
+SRC_URI[md5sum] = "506742a3d44b9925955425a659c1a8d0"
+SRC_URI[sha256sum] = "dc6f7b484f207dc712bfca81645f45120cb6aee3380e77a1771e9c34a9a4455d"
+
+S = "${WORKDIR}/ebtables-v${PV}"
+
+inherit update-rc.d systemd
+
+python __anonymous () {
+    import re
+
+    karch = d.getVar('KARCH', True)
+    multilib = d.getVar('MLPREFIX', True)
+
+    if multilib and karch == 'powerpc64':
+        searchstr = "lib.?32"
+        reg = re.compile(searchstr)
+        if reg.search(multilib):
+            d.appendVar('CFLAGS' ,' -DKERNEL_64_USERSPACE_32 -DEBT_MIN_ALIGN=8')
+}
+
+EXTRA_OEMAKE = " \
+        BINDIR=${base_sbindir} \
+        MANDIR=${mandir} \
+        ETHERTYPESPATH=${sysconfdir} \
+        INITDIR=${sysconfdir}/init.d \
+        SYSCONFIGDIR=${sysconfdir}/default \
+        LIBDIR=${base_libdir}/ebtables \
+        'CC=${CC}' \
+        'CFLAGS=${CFLAGS}' \
+        'LDFLAGS=${LDFLAGS} -Wl,--no-as-needed' \
+        'LD=${LD}' \
+"
+
+do_install () {
+    install -d ${D}${sbindir}
+    install -m 0755 ${WORKDIR}/ebtables.common ${D}${sbindir}/ebtables.common
+    # Fix hardcoded paths in scripts
+    sed -i 's!/sbin/!${base_sbindir}/!g' ${D}${sbindir}/ebtables.common
+    sed -i 's!/etc/!${sysconfdir}/!g' ${D}${sbindir}/ebtables.common
+
+    install -d ${D}${sysconfdir}/init.d
+    install -d ${D}${sysconfdir}/default
+    install -d ${D}${sysconfdir}/ebtables
+    oe_runmake DESTDIR='${D}' install
+    install -m 0755 ${WORKDIR}/ebtables.init ${D}/${sysconfdir}/init.d/ebtables
+    mv ${D}${sysconfdir}/default/ebtables-config ${D}${sysconfdir}/default/ebtables
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/ebtables
+
+    # The script ebtables-save refernces perl in exec_prefix, so
+    # move it to sbindir to avoid QA issue
+    install -d ${D}/${sbindir}
+    mv ${D}/${base_sbindir}/ebtables-save ${D}/${sbindir}
+
+    # Install systemd service files
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/ebtables.service ${D}${systemd_unitdir}/system
+    sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/ebtables.service
+}
+
+CONFFILES_${PN} += "${sysconfdir}/default/ebtables"
+
+INITSCRIPT_NAME = "ebtables"
+INITSCRIPT_PARAMS = "start 41 S . stop 41 6 ."
+
+SYSTEMD_SERVICE_${PN} = "ebtables.service"
+
+FILES_${PN}-dbg += "${base_libdir}/ebtables/.debug"
+FILES_${PN} += "${base_libdir}/ebtables/*.so"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/libmnl/libmnl_1.0.3.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/libmnl/libmnl_1.0.3.bb
new file mode 100644
index 0000000..b3a5f2e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/libmnl/libmnl_1.0.3.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Minimalistic user-space Netlink utility library"
+DESCRIPTION = "Minimalistic user-space library oriented to Netlink developers, providing \
+    functions for common tasks in parsing, validating, and constructing both the Netlink header and TLVs."
+HOMEPAGE = "http://www.netfilter.org/projects/libmnl/index.html"
+SECTION = "libs"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "http://www.netfilter.org/projects/libmnl/files/libmnl-${PV}.tar.bz2;name=tar"
+SRC_URI[tar.md5sum] = "7d95fc3bea3365bc03c48e484224f65f"
+SRC_URI[tar.sha256sum] = "6f14336e9acdbc62c2dc71bbb59ce162e54e9af5c80153e92476c5443fe784de"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/files/replace-VLAs-in-union.patch b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/files/replace-VLAs-in-union.patch
new file mode 100644
index 0000000..16e4af4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/files/replace-VLAs-in-union.patch
@@ -0,0 +1,89 @@
+VLAs in structs and unions (non-PODs) is unsupported in non-gcc compilers
+therefore convert it to not use VLAs instead use fixed arrays
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+Index: libnetfilter_conntrack-1.0.4/src/conntrack/api.c
+===================================================================
+--- libnetfilter_conntrack-1.0.4.orig/src/conntrack/api.c
++++ libnetfilter_conntrack-1.0.4/src/conntrack/api.c
+@@ -954,16 +954,15 @@ int nfct_query(struct nfct_handle *h,
+ 	       const enum nf_conntrack_query qt,
+ 	       const void *data)
+ {
+-	size_t size = 4096;	/* enough for now */
+ 	union {
+-		char buffer[size];
++		char buffer[4096];
+ 		struct nfnlhdr req;
+ 	} u;
+ 
+ 	assert(h != NULL);
+ 	assert(data != NULL);
+ 
+-	if (__build_query_ct(h->nfnlssh_ct, qt, data, &u.req, size) == -1)
++	if (__build_query_ct(h->nfnlssh_ct, qt, data, &u.req, 4096) == -1)
+ 		return -1;
+ 
+ 	return nfnl_query(h->nfnlh, &u.req.nlh);
+@@ -986,16 +985,15 @@ int nfct_send(struct nfct_handle *h,
+ 	      const enum nf_conntrack_query qt,
+ 	      const void *data)
+ {
+-	size_t size = 4096;	/* enough for now */
+ 	union {
+-		char buffer[size];
++		char buffer[4096];
+ 		struct nfnlhdr req;
+ 	} u;
+ 
+ 	assert(h != NULL);
+ 	assert(data != NULL);
+ 
+-	if (__build_query_ct(h->nfnlssh_ct, qt, data, &u.req, size) == -1)
++	if (__build_query_ct(h->nfnlssh_ct, qt, data, &u.req, 4096) == -1)
+ 		return -1;
+ 
+ 	return nfnl_send(h->nfnlh, &u.req.nlh);
+Index: libnetfilter_conntrack-1.0.4/src/expect/api.c
+===================================================================
+--- libnetfilter_conntrack-1.0.4.orig/src/expect/api.c
++++ libnetfilter_conntrack-1.0.4/src/expect/api.c
+@@ -669,16 +669,15 @@ int nfexp_query(struct nfct_handle *h,
+ 	        const enum nf_conntrack_query qt,
+ 	        const void *data)
+ {
+-	size_t size = 4096;	/* enough for now */
+ 	union {
+-		char buffer[size];
++		char buffer[4096];
+ 		struct nfnlhdr req;
+ 	} u;
+ 
+ 	assert(h != NULL);
+ 	assert(data != NULL);
+ 
+-	if (__build_query_exp(h->nfnlssh_exp, qt, data, &u.req, size) == -1)
++	if (__build_query_exp(h->nfnlssh_exp, qt, data, &u.req, 4096) == -1)
+ 		return -1;
+ 
+ 	return nfnl_query(h->nfnlh, &u.req.nlh);
+@@ -701,16 +700,15 @@ int nfexp_send(struct nfct_handle *h,
+ 	       const enum nf_conntrack_query qt,
+ 	       const void *data)
+ {
+-	size_t size = 4096;	/* enough for now */
+ 	union {
+-		char buffer[size];
++		char buffer[4096];
+ 		struct nfnlhdr req;
+ 	} u;
+ 
+ 	assert(h != NULL);
+ 	assert(data != NULL);
+ 
+-	if (__build_query_exp(h->nfnlssh_exp, qt, data, &u.req, size) == -1)
++	if (__build_query_exp(h->nfnlssh_exp, qt, data, &u.req, 4096) == -1)
+ 		return -1;
+ 
+ 	return nfnl_send(h->nfnlh, &u.req.nlh);
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-conntrack_1.0.4.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-conntrack_1.0.4.bb
new file mode 100644
index 0000000..ecbc86b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-conntrack_1.0.4.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Netfilter connection tracking library"
+DESCRIPTION = "Userspace library providing a programming interface (API) to the Linux kernel netfilter connection tracking state table"
+HOMEPAGE = "http://www.netfilter.org/projects/libnetfilter_conntrack/index.html"
+SECTION = "libs"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+DEPENDS = "libnfnetlink libmnl"
+
+SRC_URI = "http://www.netfilter.org/projects/libnetfilter_conntrack/files/libnetfilter_conntrack-${PV}.tar.bz2;name=tar \
+           file://replace-VLAs-in-union.patch \
+"
+SRC_URI[tar.md5sum] = "18cf80c4b339a3285e78822dbd4f08d7"
+SRC_URI[tar.sha256sum] = "d9ec4a3caf49417f2b0a2d8d44249133e8c3ec78c757b7eb8c273f1cb6929c7d"
+
+S = "${WORKDIR}/libnetfilter_conntrack-${PV}"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cthelper_1.0.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cthelper_1.0.0.bb
new file mode 100644
index 0000000..3d37997
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cthelper_1.0.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Netfilter connection tracking helper library"
+DESCRIPTION = "Userspace library providing a programming interface (API) to the Linux kernel netfilter user-space helper infrastructure"
+HOMEPAGE = "http://www.netfilter.org/projects/libnetfilter_cthelper/index.html"
+SECTION = "libs"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+DEPENDS = "libmnl"
+
+SRC_URI = "http://www.netfilter.org/projects/libnetfilter_cthelper/files/libnetfilter_cthelper-${PV}.tar.bz2;name=tar"
+SRC_URI[tar.md5sum] = "b2efab1a3a198a5add448960ba011acd"
+SRC_URI[tar.sha256sum] = "07618e71c4d9a6b6b3dc1986540486ee310a9838ba754926c7d14a17d8fccf3d"
+
+S = "${WORKDIR}/libnetfilter_cthelper-${PV}"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cttimeout_1.0.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cttimeout_1.0.0.bb
new file mode 100644
index 0000000..dcf7485
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cttimeout_1.0.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Netfilter connection tracking timeout library"
+DESCRIPTION = "Userspace library providing a programming interface (API) to the Linux kernel netfilter fine-grain connection tracking timeout infrastructure"
+SECTION = "libs"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+DEPENDS = "libmnl"
+
+SRC_URI = "http://www.netfilter.org/projects/libnetfilter_cttimeout/files/libnetfilter_cttimeout-${PV}.tar.bz2;name=tar"
+SRC_URI[tar.md5sum] = "7697437fc9ebb6f6b83df56a633db7f9"
+SRC_URI[tar.sha256sum] = "aeab12754f557cba3ce2950a2029963d817490df7edb49880008b34d7ff8feba"
+
+S = "${WORKDIR}/libnetfilter_cttimeout-${PV}"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-log_1.0.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-log_1.0.1.bb
new file mode 100644
index 0000000..30c9ae6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-log_1.0.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Netfilter logging library"
+DESCRIPTION = "Userspace library providing a programming interface (API) to the Linux kernel netfilter log message (NFLOG)"
+HOMEPAGE = "http://www.netfilter.org/projects/libnetfilter_log/index.html"
+SECTION = "libs"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+DEPENDS = "libnfnetlink"
+
+SRC_URI = "http://www.netfilter.org/projects/libnetfilter_log/files/libnetfilter_log-${PV}.tar.bz2;name=tar"
+SRC_URI[tar.md5sum] = "2a4bb0654ae675a52d2e8d1c06090b94"
+SRC_URI[tar.sha256sum] = "74e0fe75753dba3ac114531b5e73240452c789a3f3adccf5c51217da1d933b21"
+
+S = "${WORKDIR}/libnetfilter_log-${PV}"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-queue_1.0.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-queue_1.0.2.bb
new file mode 100644
index 0000000..ddf2aa5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-queue_1.0.2.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Netfilter packet queue access library"
+DESCRIPTION = "Userspace library providing a programming interface (API) to access the Linux kernel netfilter packet queue"
+HOMEPAGE = "http://www.netfilter.org/projects/libnetfilter_queue/index.html"
+SECTION = "libs"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+DEPENDS = "libnfnetlink libmnl"
+
+SRC_URI = "http://www.netfilter.org/projects/libnetfilter_queue/files/libnetfilter_queue-${PV}.tar.bz2;name=tar"
+SRC_URI[tar.md5sum] = "df09befac35cb215865b39a36c96a3fa"
+SRC_URI[tar.sha256sum] = "838490eb5dbe358f9669823704982f5313a8d397111562373200203f93ac1a32"
+
+S = "${WORKDIR}/libnetfilter_queue-${PV}"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/libnfnetlink/libnfnetlink_1.0.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnfnetlink/libnfnetlink_1.0.1.bb
new file mode 100644
index 0000000..edd0f86
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnfnetlink/libnfnetlink_1.0.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Low-level library for netfilter related kernel/userspace communication"
+DESCRIPTION = "libnfnetlink is the low-level library for netfilter related \
+kernel/userspace communication. It provides a generic messaging \
+infrastructure for in-kernel netfilter subsystems (such as nfnetlink_log, \
+nfnetlink_queue, nfnetlink_conntrack) and their respective users and/or \
+management tools in userspace."
+HOMEPAGE = "http://www.netfilter.org/projects/libnfnetlink/index.html"
+SECTION = "libs"
+LICENSE = "GPLv2+"
+
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+
+SRC_URI = "http://www.netfilter.org/projects/libnfnetlink/files/libnfnetlink-${PV}.tar.bz2;name=tar"
+SRC_URI[tar.md5sum] = "98927583d2016a9fb1936fed992e2c5e"
+SRC_URI[tar.sha256sum] = "f270e19de9127642d2a11589ef2ec97ef90a649a74f56cf9a96306b04817b51a"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.0.5.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.0.5.bb
new file mode 100644
index 0000000..6171151
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.0.5.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Library for low-level interaction with nftables Netlink's API over libmnl"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=79808397c3355f163c012616125c9e26"
+SECTION = "libs"
+DEPENDS = "libmnl"
+
+SRC_URI = "http://netfilter.org/projects/libnftnl/files/${BP}.tar.bz2  \
+          "
+
+SRC_URI[md5sum] = "af0c62ce6bbd7a7d39def0996c1c17c9"
+SRC_URI[sha256sum] = "f6d4f5a702e38bc7987f2363f9fcd65930e8b702595c221a497e2f3a359be497"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/nftables/files/fix-to-generate-ntf.8.patch b/import-layers/meta-openembedded/meta-networking/recipes-filter/nftables/files/fix-to-generate-ntf.8.patch
new file mode 100644
index 0000000..8dce90a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/nftables/files/fix-to-generate-ntf.8.patch
@@ -0,0 +1,26 @@
+[PATCH] disable to make ntf.8 man
+
+Upstream-Status: Pending
+
+$DB2MAN do not support the xinclude parameter whether it is
+docbook2x-man or other, so disable to make ntf.8 man
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ doc/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index a92de7f..537c36b 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -1,5 +1,5 @@
+ if BUILD_MAN
+-man_MANS = nft.8
++#man_MANS = nft.8
+ endif
+ 
+ if BUILD_PDF
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.5.bb b/import-layers/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.5.bb
new file mode 100644
index 0000000..11b5e5a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.5.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Netfilter Tables userspace utillites"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d1a78fdd879a263a5e0b42d1fc565e79"
+SECTION = "net"
+
+DEPENDS = "libmnl libnftnl readline gmp"
+RRECOMMENDS_${PN} += "kernel-module-nf-tables \
+    "
+
+SRC_URI = "http://www.netfilter.org/projects/nftables/files/${BP}.tar.bz2 \
+           file://fix-to-generate-ntf.8.patch \
+          "
+
+SRC_URI[md5sum] = "94bfe1c54bcb9f6ed974835f2fca8069"
+SRC_URI[sha256sum] = "1fb6dff333d8a4fc347cbbe273bf905a2634b27a8c39df0d3a45d5a3fde10ad6"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-irc/znc/znc_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-irc/znc/znc_git.bb
new file mode 100644
index 0000000..22aecba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-irc/znc/znc_git.bb
@@ -0,0 +1,31 @@
+SUMMARY = "ZNC, an advanced IRC bouncer"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS = "openssl zlib icu"
+
+PV = "1.6.0"
+
+SRC_URI = "git://github.com/znc/znc.git;name=znc \
+           git://github.com/jimloco/Csocket.git;destsuffix=git/third_party/Csocket;name=Csocket \
+          "
+SRCREV_znc = "f47e8465efa4e1cd948b9caae93ac401b4355df8"
+SRCREV_Csocket = "07b4437396122650e5b8fb3d014e820a5decf4ee"
+
+# This constructs a composite revision based on multiple SRCREV's.
+#
+SRCREV_FORMAT = "znc_Csocket"
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep pkgconfig
+
+# ZNC has a custom autogen.sh that states that this command is needed *and* expected to fail
+do_configure_prepend() {
+    automake --add-missing || true
+}
+
+do_install_append() {
+    sed -i 's/-fdebug-prefix-map[^ ]*//g; s#${STAGING_DIR_TARGET}##g' ${D}${libdir}/pkgconfig/*.pc
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/files/0001-testmmap-fix-compile-issue-with-gcc-5.x.patch b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/files/0001-testmmap-fix-compile-issue-with-gcc-5.x.patch
new file mode 100644
index 0000000..ea36b1c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/files/0001-testmmap-fix-compile-issue-with-gcc-5.x.patch
@@ -0,0 +1,33 @@
+Upstream-Status: Pending
+
+From c81bf54d6eb870286662a11d3b4a994717c47696 Mon Sep 17 00:00:00 2001
+From: Armin Kuster <akuster808@gmail.com>
+Date: Tue, 8 Sep 2015 05:36:27 -0700
+Subject: [PATCH] testmmap: fix compile issue with gcc 5.x
+
+this fixes:
+examples/testmmap.c:540:10: error: format '%ld' expects argument of type 'long int', but argument 3 has type 'ssize_t {aka const int}' [-Werror=format=]
+|    printf("ring_ofs[%d] %ld\n", i, nifp->ring_ofs[i]);
+|           ^
+
+Signed-off-by: Armin Kuster <akuster808@gmail.com>
+---
+ examples/testmmap.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/examples/testmmap.c b/examples/testmmap.c
+index d7f6acc..934489a 100644
+--- a/examples/testmmap.c
++++ b/examples/testmmap.c
+@@ -537,7 +537,7 @@ do_if()
+ 	for (i = 0; i < 5; i++)
+ 		printf("spare1[%d]  %u\n", i, nifp->ni_spare1[i]);
+ 	for (i = 0; i < (nifp->ni_tx_rings + nifp->ni_rx_rings + 2); i++)
+-		printf("ring_ofs[%d] %ld\n", i, nifp->ring_ofs[i]);
++		printf("ring_ofs[%d] %zd\n", i, nifp->ring_ofs[i]);
+ }
+ 
+ struct netmap_ring *
+-- 
+2.3.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/files/makefile_fixup.patch b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/files/makefile_fixup.patch
new file mode 100644
index 0000000..b050bf0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/files/makefile_fixup.patch
@@ -0,0 +1,97 @@
+The makefile assumes building locally.
+
+Upstream Status: Inappropriate [Native]
+
+The configure is not auto-make based
+
+Signed-of-by: Armin Kuster <akuster@mvista.com>
+
+Index: LINUX/netmap.mak.in
+===================================================================
+--- a/LINUX/netmap.mak.in
++++ b/LINUX/netmap.mak.in
+@@ -12,10 +12,9 @@ SRCDIR:=@SRCDIR@
+ # The following commands are needed to build the modules as out-of-tree,
+ # in fact the kernel sources path must be specified.
+ 
+-PWD ?= $(CURDIR)
+ 
+ # Additional compile flags (e.g. header location)
+-EXTRA_CFLAGS := -I$(PWD) -I$(SRCDIR) -I$(SRCDIR)/../sys -I$(SRCDIR)/../sys/dev -DCONFIG_NETMAP
++EXTRA_CFLAGS := -I$(SRCDIR) -I$(SRCDIR)/../sys -I$(SRCDIR)/../sys/dev -DCONFIG_NETMAP
+ EXTRA_CFLAGS += -Wno-unused-but-set-variable
+ EXTRA_CFLAGS += $(foreach s,$(SUBSYS),-DCONFIG_NETMAP_$(shell echo $s|tr a-z- A-Z_))
+ 
+Index: LINUX/configure
+===================================================================
+--- a/LINUX/configure
++++ b/LINUX/configure
+@@ -349,52 +349,6 @@ reset_tests() {
+ 	EOF
+ }
+ 
+-# run_tests: run all accumulated tests and exec the pertinent
+-#   success/failure actions for each one.
+-run_tests() {
+-	local t= 	# prevent -EOF to eat the make TAB
+-	cat > $TMPDIR/Makefile <<-EOF
+-		ifneq (\$(KERNELRELEASE),)
+-		obj-m := $TESTOBJS
+-		else
+-		S_DRIVERS := $(drv print)
+-		all: \$(S_DRIVERS:%=get-%)
+-		$t	\$(MAKE) -C $ksrc M=\$\$PWD $kopts
+-
+-		-include $TOPDIR/drivers.mak
+-	EOF
+-	for d in $(drv print); do
+-		cat >> $TMPDIR/Makefile <<-EOF
+-			get-$d:
+-			$t	[ -z "\$($d-src)" ] || cp -Rp \$($d-src) \$(if \$($d-dst),\$($d-dst),.)
+-			$t	touch get-$d
+-		EOF
+-	done
+-	echo endif >> $TMPDIR/Makefile
+-	{
+-		cat <<-EOF
+-##############################################################################
+-## BEGIN RUNNING TESTS: $(date)
+-##############################################################################
+-## Makefile:
+-		EOF
+-		cat $TMPDIR/Makefile
+-		cat <<-EOF
+-##############################################################################
+-		EOF
+-	} >> config.log
+-	(
+-		cd $TMPDIR
+-		make -k -j $(grep -c processor /proc/cpuinfo)
+-	) >> config.log
+-	eval "$TESTPOSTPROC"
+-	cat >> config.log <<-EOF
+-##############################################################################
+-## END RUNNING TESTS: $(date)
+-##############################################################################
+-	EOF
+-}
+-
+ configh=netmap_linux_config.h
+ # succes/failure actions are expected to write some macros
+ # in netma_linux_config.h. The following functions can be
+@@ -619,7 +573,6 @@ configuration. Please check 'config.log'
+ reset_tests
+ rm -f drivers.mak
+ add_test true broken_buildsystem < /dev/null
+-run_tests
+ 
+ drvname2config() {
+ 	local name=$1
+@@ -1280,7 +1233,6 @@ cat > $configh <<-EOF
+ EOF
+ 
+ # the TESTPOSTPROC script will add macros to $configh
+-run_tests
+ 
+ define DRIVER_SUFFIX \"$drvsuffix\"
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap-modules_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap-modules_git.bb
new file mode 100644
index 0000000..406a4f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap-modules_git.bb
@@ -0,0 +1,89 @@
+require netmap.inc
+
+DEPENDS = "virtual/kernel"
+do_configure[depends] += "virtual/kernel:do_shared_workdir"
+
+inherit module
+
+CLEANBROKEN = "1"
+
+export INSTALL_MOD_DIR="kernel/netmap-modules"
+
+EXTRA_OECONF = "--kernel-dir=${STAGING_KERNEL_BUILDDIR} \
+                --kernel-sources=${STAGING_KERNEL_DIR} \
+                --install-mod-path=${D} \
+                --driver-suffix="-netmap" \
+                "
+
+# The driver builds are optional, but for deterministic builds,
+# we should be able to explicitly enable/disable the builds
+# for them in a proper place (maybe in BSP).
+# But we can't use PACKAGECONFIG since there is no option for
+# each driver, and the options are:
+#  --no-drivers    do not compile any driver
+#  --no-drivers=   do not compile the given drivers (comma sep.)
+#  --drivers=      only compile the given drivers (comma sep.)
+#
+# So use NETMAP_DRIVERS and the following python code to add proper
+# configs to EXTRA_OECONF.
+#
+# The default is no-drivers, and all supported drivers are listed
+# in NETMAP_ALL_DRIVERS.
+NETMAP_DRIVERS ??= ""
+NETMAP_ALL_DRIVERS = "ixgbe igb e1000e e1000 veth.c forcedeth.c virtio_net.c r8169.c"
+
+python __anonymous () {
+    drivers_list = d.getVar("NETMAP_DRIVERS", True).split()
+    all_drivers_list = d.getVar("NETMAP_ALL_DRIVERS", True).split()
+    config_drivers = "--drivers=" + ",".join(drivers_list)
+
+    extra_oeconf_drivers = bb.utils.contains_any('NETMAP_DRIVERS', all_drivers_list, config_drivers, '--no-drivers', d)
+    d.appendVar("EXTRA_OECONF", extra_oeconf_drivers)
+}
+
+LDFLAGS := "${@'${LDFLAGS}'.replace('-Wl,-O1', '')}"
+LDFLAGS := "${@'${LDFLAGS}'.replace('-Wl,--as-needed', '')}"
+
+do_configure () {
+    cd ${S}/LINUX
+    ./configure ${EXTRA_OECONF}
+}
+
+do_configure_append () {
+    cat >>  ${S}/LINUX/netmap_linux_config.h <<EOF
+#define NETMAP_LINUX_HAVE_HRTIMER_MODE_REL
+#define NETMAP_LINUX_HAVE_HRTIMER_FORWARD_NOW
+#define NETMAP_LINUX_HAVE_PHYS_ADDR_T
+#define NETMAP_LINUX_HAVE_ACCESS_ONCE
+#define NETMAP_LINUX_HAVE_NETDEV_OPS
+#define NETMAP_LINUX_HAVE_INIT_NET
+#define NETMAP_LINUX_HAVE_LIVE_ADDR_CHANGE
+#define NETMAP_LINUX_HAVE_TX_SKB_SHARING
+#define NETMAP_LINUX_HAVE_UNLOCKED_IOCTL
+#define NETMAP_LINUX_HAVE_PERNET_OPS_ID
+#define NETMAP_LINUX_VIRTIO_FUNCTIONS
+#define NETMAP_LINUX_VIRTIO_FREE_PAGES
+#define NETMAP_LINUX_VIRTIO_GET_VRSIZE
+#define NETMAP_LINUX_TIMER_RTYPE enum hrtimer_restart
+#define NETMAP_LINUX_VIRTIO_MULTI_QUEUE
+#define NETMAP_LINUX_HAVE_E1000E_EXT_RXDESC
+#define NETMAP_LINUX_HAVE_E1000E_DOWN2
+EOF
+
+if ${@ 'false' if (bb.utils.vercmp_string(d.getVar('KERNEL_VERSION', True), '3.17') < 0) else 'true' } ; then
+    echo OK
+    cat >>  ${S}/LINUX/netmap_linux_config.h <<EOF
+#define NETMAP_LINUX_ALLOC_NETDEV_4ARGS
+EOF
+fi
+}
+
+do_compile () {
+    cd ${S}/LINUX
+    oe_runmake
+}
+
+do_install () {
+    cd ${S}/LINUX
+    oe_runmake install
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap.inc b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap.inc
new file mode 100644
index 0000000..ab33e76
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap.inc
@@ -0,0 +1,17 @@
+SUMMARY = "netmap and VALE - very fast packet I/O from userspace (FreeBSD/Linux)"
+DESCRIPTION= "NETMAP is a framework for very fast packet I/O from userspace.  VALE is an equally fast in-kernel software switch using the netmap API.  Both are implemented as a single kernel module for FreeBSD and Linux, and can deal with line rate on real or emulated 10 Gbit ports."
+SECTION = "networking"
+HOMEPAGE = "http://code.google.com/p/netmap/"
+LICENSE = "GPLv2+"
+
+LIC_FILES_CHKSUM = "file://README;beginline=13;endline=14;md5=56ae0b9c7ba0476ab9098de94c2714d6"
+
+SRCREV = "da9e19e69b84e4f6f8ae125f8d01b42a4abade6a"
+PV = "master+git${SRCPV}"
+
+SRC_URI = "git://github.com/luigirizzo/netmap.git"
+SRC_URI += "file://makefile_fixup.patch"
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_HOST = '(x86_64|i.86|mips|arm).*-linux'
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap_git.bb
new file mode 100644
index 0000000..a028585
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap_git.bb
@@ -0,0 +1,34 @@
+require netmap.inc
+
+DEPENDS = "netmap-modules"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+EXTRA_OECONF = "--kernel-dir=${STAGING_KERNEL_BUILDDIR} \
+                --kernel-sources=${STAGING_KERNEL_DIR} \
+                --no-drivers \
+                --disable-generic \
+                --prefix=${prefix} \
+                --destdir=${D} \
+                --cc='${CC}' \
+                --ld='${LD}' \
+                "
+SRC_URI += "file://0001-testmmap-fix-compile-issue-with-gcc-5.x.patch"
+
+do_configure () {
+    cd ${S}/LINUX
+    ./configure ${EXTRA_OECONF}
+}
+
+do_compile () {
+    cd ${S}/LINUX
+    make apps
+}
+
+do_install () {
+    cd ${S}/LINUX
+    make install-apps DESTDIR=${D}
+}
+
+FILES_${PN} += "${bindir}"
+RDEPENDS_${PN} = "kernel-module-netmap"
+RRECOMMENDS_${PN} = "kernel-module-netmap"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-ftp/netkit-ftp/Add_ARG_MAX_define.patch b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-ftp/netkit-ftp/Add_ARG_MAX_define.patch
new file mode 100644
index 0000000..5a47fd9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-ftp/netkit-ftp/Add_ARG_MAX_define.patch
@@ -0,0 +1,28 @@
+This adds ARG_MAX define to be _SC_ARG_MAX
+
+Upstream-Status: Inappropriate.
+Most distros have their own verion for this fix.
+
+Signed-off-by: Armin Kuster <akuster808@gmail.com>
+
+Index: netkit-ftp-0.17/ftp/glob.c
+===================================================================
+--- netkit-ftp-0.17.orig/ftp/glob.c
++++ netkit-ftp-0.17/ftp/glob.c
+@@ -50,6 +50,7 @@ char glob_rcsid[] =
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <unistd.h>
+ 
+ #include "ftp_var.h"  /* for protos only */
+ #include "glob.h"
+@@ -57,6 +58,9 @@ char glob_rcsid[] =
+ #define	QUOTE 0200
+ #define	TRIM 0177
+ #define	eq(a,b)		(strcmp(a, b)==0)
++#ifndef ARG_MAX
++#define ARG_MAX (sysconf(_SC_ARG_MAX))
++#endif
+ #define	GAVSIZ		(ARG_MAX/6)
+ #define	isdir(d)	((d.st_mode & S_IFMT) == S_IFDIR)
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-ftp/netkit-ftp_0.17.bb b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-ftp/netkit-ftp_0.17.bb
new file mode 100644
index 0000000..37f5bc7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-ftp/netkit-ftp_0.17.bb
@@ -0,0 +1,46 @@
+DESCRIPTION = "netkit-ft includes the ftp client."
+SECTION = "net"
+HOMEPAGE="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit"
+LICENSE = "BSD"
+
+LIC_FILES_CHKSUM = "file://ftp/ftp.c;beginline=2;endline=3;md5=2d40a75a50d83b8f6317b3f53db72bfa"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/n/netkit-ftp/netkit-ftp_${PV}.orig.tar.gz;name=archive \
+            ${DEBIAN_MIRROR}/main/n/netkit-ftp/netkit-ftp_${PV}-31.debian.tar.xz;name=patch31 \
+            file://Add_ARG_MAX_define.patch \
+"
+
+SRC_URI[archive.md5sum] = "94441610c9b86ef45c4c6ec609444060"
+SRC_URI[archive.sha256sum] = "61c913299b81a4671ff089aac821329f7db9bc111aa812993dd585798b700349"
+SRC_URI[patch31.md5sum] = "93d71e28ce70df69e080c7f90da63cac"
+SRC_URI[patch31.sha256sum] = "4edd46a32d70daa7ba00f0ebf0118dc5d17dff23d6e46aa21a2722be2e22d1c1"
+
+inherit autotools-brokensep
+
+do_configure () {
+    ./configure --prefix=${prefix}
+    echo "LDFLAGS=${LDFLAGS}" >> MCONFIG
+}
+
+BINMODE = "0755"
+MANMODE = "0644"
+
+do_install () {
+    install -d ${D}${bindir}
+    install -d ${D}${mandir}/man1
+    install -d ${D}${mandir}/man5
+
+    install -m${BINMODE} ${S}/ftp/ftp ${D}${bindir}
+    ln -sf ftp ${D}${bindir}/pftp
+    install -m${MANMODE} ${S}/ftp/ftp.1 ${D}${mandir}/man1
+    ln -sf ftp.1 ${D}${mandir}/man1/pftp.1
+    install -m${MANMODE} ${S}/ftp/netrc.5 ${D}${mandir}/man5
+}
+
+PACKAGES = "${PN} ${PN}-doc ${BPN}-dbg"
+FILES_${PN} = "${bindir}/*"
+FILES_${PN}-doc = "${mandir}"
+FILES_${PN}-dbg = "${prefix}/src/debug \
+            ${bindir}/.debug"
+
+RDEPENDS_${PN} = "readline"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc/gcc4.patch b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc/gcc4.patch
new file mode 100644
index 0000000..d54cea9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc/gcc4.patch
@@ -0,0 +1,39 @@
+This fixes an issue when building with gcc 4.x
+
+https://github.com/openembedded/openembedded/tree/master/recipes/netkit-rpc/netkit-rpc
+
+Upstream-status: Backported
+
+Signed-off-By: Armin Kuster <akuster808@gmail.com>
+
+--- netkit-rpc-0.17/rpcgen/rpc_cout.c~gcc4
++++ netkit-rpc-0.17/rpcgen/rpc_cout.c
+@@ -101,8 +101,6 @@
+ 	case DEF_TYPEDEF:
+ 		emit_typedef(def);
+ 		break;
+-	default:
+-	  /* can't happen */
+ 	}
+ 	print_trailer();
+ }
+@@ -664,9 +662,6 @@
+ 	   decl->name,decl->array_max);
+   emit_single_in_line(decl,flag,REL_VECTOR);
+     f_print(fout,"\t\t   }\n\t\t };\n");
+-
+-  default:
+-    /* ?... do nothing I guess */
+   }
+ }
+ 
+--- netkit-rpc-0.17/rpcgen/rpc_hout.c~gcc4
++++ netkit-rpc-0.17/rpcgen/rpc_hout.c
+@@ -106,8 +106,6 @@
+ 		f_print(fout, "\n");
+ 		pprogramdef(def);
+ 		break;
+-	  default:
+-	    /* ?... shouldn't happen I guess */
+ 	}
+ }
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb
new file mode 100644
index 0000000..abc9d88
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb
@@ -0,0 +1,38 @@
+DESCRIPTION = "netkit-rpc includes rpcinfo and rpcgen."
+HOMEPAGE = "http://ftp.linux.org.uk/pub/linux/Networking/netkit"
+SECTION = "net"
+LICENSE = "SPL-1.0"
+LIC_FILES_CHKSUM = "file://rpcinfo/rpcinfo.c;beginline=2;endline=3;md5=3e6339e3ce266e1122c5ba293e04bc89"
+
+SRC_URI = "http://sources.openembedded.org/${BPN}-${PV}.tar.gz \
+           file://gcc4.patch"
+SRC_URI[md5sum] = "67212720482ea1aea9182a98653a9642"
+SRC_URI[sha256sum] = "421d63b414162237a72867061f1bd3e3752a0d962cd5d30b5e933ddad8a14d3b"
+
+do_configure () {
+    ./configure --prefix=${prefix}
+    echo "LDFLAGS=${LDFLAGS}" > MCONFIG
+    echo "CC=${CC}" >> MCONFIG
+    echo "LD=${LD}" >> MCONFIG
+    echo "CFLAGS=${CFLAGS}" >> MCONFIG
+    echo "LDFLAGS=${LDFLAGS}" >> MCONFIG
+}
+
+do_compile () {
+    oe_runmake 'CC=${CC}' 'LD=${LD}' 'LDFLAGS=${LDFLAGS}'
+}
+
+do_install () {
+    install -d ${D}${bindir}
+    install -d ${D}${mandir}/man1
+    install -d ${D}${mandir}/man8
+
+    # remove strip flag
+    sed -i 's/install -s/install/' rpcinfo/Makefile
+    sed -i 's/install -s/install/' rpcgen/Makefile
+
+    oe_runmake 'INSTALLROOT=${D}' 'BINMODE=0755' \
+    'DAEMONMODE=0755' 'MANMODE=0644' \
+    'BINDIR=${bindir}' 'SBINDIR=${sbindir}' \
+    'MANDIR=${mandir}' install
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/fix-host-variable.patch b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/fix-host-variable.patch
new file mode 100644
index 0000000..1d3631d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/fix-host-variable.patch
@@ -0,0 +1,27 @@
+fix host variable when rsh is renamed to other.
+
+Upstream-Status: Pending
+
+If rsh is renamed to other, like rsh.netkit, host variable is assigned to
+rsh.netkit, which is wrong.
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ rsh/rsh.c |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+diff --git a/rsh/rsh.c b/rsh/rsh.c
+index ac594f9..11f533e 100644
+--- a/rsh/rsh.c
++++ b/rsh/rsh.c
+@@ -100,7 +100,6 @@ main(int argc, char *argv[])
+ #else
+ 	if (!strcmp(p, "rsh")) asrsh = 1;
+ #endif
+-	else host = p;
+ 
+ 	/* handle "rsh host flags" */
+ 	if (!host && argc > 2 && argv[1][0] != '-') {
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/netkit-rsh-0.17-rexec-ipv6.patch b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/netkit-rsh-0.17-rexec-ipv6.patch
new file mode 100644
index 0000000..efd060f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/netkit-rsh-0.17-rexec-ipv6.patch
@@ -0,0 +1,30 @@
+make rexec support ipv6
+
+Upstream-status: Pending
+
+rexec equals rexec_af(... ,AF_INET) which only support ipv4,
+use rexec_af(..., AF_UNSPEC) to support both ipv6 and ipv4.
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ rexec/rexec.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/rexec/rexec.c b/rexec/rexec.c
+index 0913c02..9c8f769 100644
+--- a/rexec/rexec.c
++++ b/rexec/rexec.c
+@@ -214,8 +214,8 @@ int main(int argc, char *argv[])
+     passwd = getpass("Password: ");
+   }
+ 
+-  if ( (sock = rexec(&host, port_exec, user_name, passwd, command, 
+-		     p_to_aux_sock)) < 0 )
++  if ( (sock = rexec_af(&host, port_exec, user_name, passwd, command, 
++		     p_to_aux_sock, AF_UNSPEC)) < 0 )
+  {
+     fprintf(stderr,"%s: Error in rexec system call: ",argv[0]);
+     perror(NULL);
+-- 
+1.7.4.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/no_pam_build_fix.patch b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/no_pam_build_fix.patch
new file mode 100644
index 0000000..fdd535b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/no_pam_build_fix.patch
@@ -0,0 +1,39 @@
+netkit-rsh:
+Allow to build with no PAM enabled.
+
+Upstream-Status: Inappropriate [ no upstream maintaner ]
+
+Signed-off-by: Armin Kuster <akuster808@gmail.com>
+
+Index: netkit-rsh-0.17/rshd/rshd.c
+===================================================================
+--- netkit-rsh-0.17.orig/rshd/rshd.c
++++ netkit-rsh-0.17/rshd/rshd.c
+@@ -110,9 +110,11 @@ extern	char	**environ;
+ static void error(const char *fmt, ...);
+ static void doit(struct sockaddr *fromp, socklen_t fromlen);
+ static char *getstr(char *, size_t, const char *);
++#ifdef USE_PAM
+ static int err_conv(
+ 	int, const struct pam_message **, struct pam_response **, void *
+ );
++#endif /* USE_PAM */
+ 
+ extern int _check_rhosts_file;
+ 
+@@ -256,6 +258,7 @@ static void stderr_parent(int sock, int
+ }
+ 
+ 
++#ifdef USE_PAM
+ static int err_conv(
+ 	int num_msg, const struct pam_message **msg,
+ 	struct pam_response **resp, void *appdata_ptr
+@@ -266,6 +269,7 @@ static int err_conv(
+ 	(void) appdata_ptr;
+ 	return PAM_CONV_ERR;
+ }
++#endif
+ 
+ static struct passwd *doauth(const char *remuser, 
+ 			     const char *hostname, 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rexec.pam b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rexec.pam
new file mode 100644
index 0000000..94e5dda
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rexec.pam
@@ -0,0 +1,10 @@
+#%PAM-1.0
+# For root login to succeed here with pam_securetty, "rexec" must be
+# listed in /etc/securetty.
+auth       required     pam_nologin.so
+auth       required     pam_env.so
+auth       include      common-auth
+account    include      common-account
+session	   optional     pam_keyinit.so    force revoke
+session    include      common-session
+session    required     pam_loginuid.so
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rexec.xinetd.netkit b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rexec.xinetd.netkit
new file mode 100644
index 0000000..7354360
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rexec.xinetd.netkit
@@ -0,0 +1,20 @@
+# default: off
+# description:
+# Rexecd is the server for the rexec program. The server provides remote 
+# execution facilities with authentication based on user names and 
+# passwords.
+#
+service exec
+{
+	socket_type	= stream
+	protocol	= tcp
+	flags		= NAMEINARGS
+	wait		= no
+	user		= root
+	group		= root
+	log_on_success	+= USERID
+	log_on_failure	+= USERID
+	server		= /usr/sbin/tcpd
+	server_args	= /usr/sbin/in.rexecd
+	disable		= yes
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rlogin.pam b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rlogin.pam
new file mode 100644
index 0000000..b30f139
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rlogin.pam
@@ -0,0 +1,12 @@
+#%PAM-1.0
+# For root login to succeed here with pam_securetty, "rlogin" must be
+# listed in /etc/securetty.
+auth       required     pam_nologin.so
+auth       required     pam_securetty.so
+auth       required     pam_env.so
+auth       include      common-auth
+account    include      common-account
+password   include      common-password
+session	   optional     pam_keyinit.so    force revoke
+session    include      common-session
+session    required     pam_loginuid.so
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rlogin.xinetd.netkit b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rlogin.xinetd.netkit
new file mode 100644
index 0000000..70493e6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rlogin.xinetd.netkit
@@ -0,0 +1,23 @@
+# default: off
+# description:
+# Rlogind is a server for the rlogin program. The server provides remote 
+# execution with authentication based on privileged port numbers from trusted
+# host
+#
+service login
+{
+	socket_type	= stream
+	protocol	= tcp
+	flags		= NAMEINARGS
+	wait		= no
+	user		= root
+	group		= root
+	log_on_success	+= USERID
+	log_on_failure	+= USERID
+	server		= /usr/sbin/tcpd
+	server_args	= /usr/sbin/in.rlogind -a
+	disable		= yes
+}
+							
+							
+							
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rsh-redone_link_order_file.patch b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rsh-redone_link_order_file.patch
new file mode 100644
index 0000000..c12ee9b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rsh-redone_link_order_file.patch
@@ -0,0 +1,77 @@
+This fixes a build issue caused by linking order.
+
+Upstream-Status: Inappropriate
+Most distos have there own verison of this fix. This was derived by
+* Fix link order to list libraries after the objects that require them
+(LP: #771080).
+
+-- Colin Watson <cjwatson@ubuntu.com>  Tue, 13 Sep 2011 10:07:08 +0100
+
+
+signed-off-by: Armin Kuster <akuster808@gmail.com>
+
+Index: netkit-rsh-0.17/rsh/Makefile
+===================================================================
+--- netkit-rsh-0.17.orig/rsh/Makefile
++++ netkit-rsh-0.17/rsh/Makefile
+@@ -6,7 +6,7 @@ include ../MRULES
+ OBJS = rsh.o
+ 
+ rsh: $(OBJS)
+-	$(CC) $(LDFLAGS) $^ $(LIBS) -o $@
++	$(CC) $^ -o $@ $(LDFLAGS) $(LIBS)
+ 
+ install: rsh
+ 	install -o root -m$(SUIDMODE) rsh $(INSTALLROOT)$(BINDIR)
+Index: netkit-rsh-0.17/rshd/Makefile
+===================================================================
+--- netkit-rsh-0.17.orig/rshd/Makefile
++++ netkit-rsh-0.17/rshd/Makefile
+@@ -11,7 +11,7 @@ LIBS += -ldl -lpam
+ endif
+ 
+ rshd: $(OBJS)
+-	$(CC) $(LDFLAGS) $^ $(LIBS) -o $@
++	$(CC) $^ -o $@ $(LDFLAGS) $(LIBS)
+ 
+ install: rshd
+ 	install -m$(DAEMONMODE) rshd $(INSTALLROOT)$(SBINDIR)/in.rshd
+Index: netkit-rsh-0.17/rlogin/Makefile
+===================================================================
+--- netkit-rsh-0.17.orig/rlogin/Makefile
++++ netkit-rsh-0.17/rlogin/Makefile
+@@ -7,7 +7,7 @@ PROG=rlogin
+ OBJS=rlogin.o
+ 
+ $(PROG): $(OBJS)
+-	$(CC) $(LDFLAGS) $^ $(LIBS) -o $@
++	$(CC) $^ -o $@ $(LDFLAGS) $(LIBS)
+ 
+ install: $(PROG)
+ 	install -o root -m$(SUIDMODE) $(PROG) $(INSTALLROOT)$(BINDIR)
+Index: netkit-rsh-0.17/rlogind/Makefile
+===================================================================
+--- netkit-rsh-0.17.orig/rlogind/Makefile
++++ netkit-rsh-0.17/rlogind/Makefile
+@@ -13,7 +13,7 @@ LIBS += -ldl -lpam -lpam_misc
+ endif
+ 
+ rlogind: $(OBJS)
+-	$(CC) $(LDFLAGS) $^ $(LIBS) -o $@
++	$(CC) $^ -o $@ $(LDFLAGS) $(LIBS)
+ 
+ rlogind.o: pathnames.h logwtmp.h rlogind.h ../version.h
+ logwtmp.o: logwtmp.h
+Index: netkit-rsh-0.17/rexecd/Makefile
+===================================================================
+--- netkit-rsh-0.17.orig/rexecd/Makefile
++++ netkit-rsh-0.17/rexecd/Makefile
+@@ -24,7 +24,7 @@ endif
+ CFLAGS += -DRESTRICT_FTP=1
+ 
+ rexecd: rexecd.o
+-	$(CC) $(LDFLAGS) $^ $(LIBS) -o $@
++	$(CC) $^ -o $@ $(LDFLAGS) $(LIBS)
+ 
+ install: rexecd
+ 	install -m$(DAEMONMODE) rexecd $(INSTALLROOT)$(SBINDIR)/in.rexecd
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rsh.pam b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rsh.pam
new file mode 100644
index 0000000..072327a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rsh.pam
@@ -0,0 +1,10 @@
+#%PAM-1.0
+# For root login to succeed here with pam_securetty, "rsh" must be
+# listed in /etc/securetty.
+auth       required     pam_nologin.so
+auth       required     pam_securetty.so
+auth       required     pam_env.so
+account    include      common-account
+session	   optional     pam_keyinit.so    force revoke
+session    include      common-session
+session    required     pam_loginuid.so
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rsh.xinetd.netkit b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rsh.xinetd.netkit
new file mode 100644
index 0000000..a842eb9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh/rsh.xinetd.netkit
@@ -0,0 +1,21 @@
+# default: off
+# description:
+# The rshd server is a server for the rcmd(3) routine and, 
+# consequently, for the rsh(1) program. The server provides 
+# remote execution facilities with authentication based on 
+# privileged port numbers from trusted hosts.
+#
+service shell
+{
+	socket_type	= stream
+	protocol	= tcp
+	flags		= NAMEINARGS
+	wait		= no
+	user		= root
+	group		= root
+	log_on_success	+= USERID
+	log_on_failure	+= USERID
+	server		= /usr/sbin/tcpd
+	server_args	= /usr/sbin/in.rshd -aL
+	disable		= yes
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb
new file mode 100644
index 0000000..e29369c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb
@@ -0,0 +1,100 @@
+DESCRIPTION = "netkit-rsh includes the rsh daemon and client."
+SECTION = "net"
+HOMEPAGE="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit"
+LICENSE = "BSD-4-Clause"
+DEPENDS = "xinetd libgcrypt"
+
+LIC_FILES_CHKSUM = "file://rsh/rsh.c;endline=32;md5=487b3c637bdc181d32b2a8543d41b606"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/n/netkit-rsh/netkit-rsh_${PV}.orig.tar.gz;name=archive \
+            ${DEBIAN_MIRROR}/main/n/netkit-rsh/netkit-rsh_${PV}-15.diff.gz;name=patch15 \
+            file://rsh-redone_link_order_file.patch \
+            file://no_pam_build_fix.patch \
+            file://rexec.xinetd.netkit \
+            file://rlogin.xinetd.netkit \
+            file://rsh.xinetd.netkit \
+            file://netkit-rsh-0.17-rexec-ipv6.patch \
+            file://fix-host-variable.patch \
+"
+
+SRC_URI[archive.md5sum] = "65f5f28e2fe22d9ad8b17bb9a10df096"
+SRC_URI[archive.sha256sum] = "edcac7fa18015f0bc04e573f3f54ae3b638d71335df1ad7dae692779914ad669"
+SRC_URI[patch15.md5sum] = "655efc0d541b03ca5de0ae506c805ea3"
+SRC_URI[patch15.sha256sum] = "2bc071c438e8b0ed42a0bd2db2d8b681b27a1e9b1798694d9874733293bc2aa9"
+
+# Other support files
+PAM_SRC_URI = "file://rexec.pam \
+	file://rlogin.pam \
+	file://rsh.pam"
+SRC_URI += "${@base_contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)}"
+
+inherit pkgconfig
+
+CFLAGS += " -D_GNU_SOURCE -Wno-deprecated-declarations"
+LDFLAGS += " -L${STAGING_LIBDIR} -lutil -lcrypt"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG += " ${@bb.utils.contains("DISTRO_FEATURES", "pam", "pam", "", d)}"
+PACKAGECONFIG[pam] = " , --without-pam, libpam, libpam"
+
+do_configure () {
+    ./configure --prefix=${prefix} --exec-prefix=${exec_prefix}
+    echo "INSTALLROOT=${D}" > MCONFIG
+
+    if [ "${@base_contains('PACKAGECONFIG', 'pam', 'pam', '', d)}" != "" ]; then
+        echo "USE_PAM=1" >> MCONFIG
+    fi
+
+    # didn't want to patch these next changes
+    sed -i 's/netkit-//' ${S}/rsh/pathnames.h
+    sed -i 's/netkit-//' ${S}/rcp/pathnames.h
+}
+
+do_install () {
+    install -d ${D}${bindir}
+    install -d ${D}${sbindir}
+    install -d ${D}${mandir}/man1
+    install -d ${D}${mandir}/man8
+    install -d ${D}${sysconfdir}/xinetd.d
+
+    oe_runmake 'INSTALLROOT=${D}' 'BINMODE=0755' \
+    'DAEMONMODE=0755' 'MANMODE=0644' \
+    'SUIDMODE=4755' \
+    'BINDIR=${bindir}' 'SBINDIR=${sbindir}' \
+    'MANDIR=${mandir}' install
+
+    if [ "${@base_contains('PACKAGECONFIG', 'pam', 'pam', '', d)}" != "" ]; then
+        install -d ${D}${sysconfdir}/pam.d
+        install -m 0644 debian/hosts.equiv ${D}/${sysconfdir}
+        install -m 0644 ${WORKDIR}/rexec.pam ${D}/${sysconfdir}/pam.d/rexec
+        install -m 0644 ${WORKDIR}/rlogin.pam ${D}/${sysconfdir}/pam.d/rlogin
+        install -m 0664 ${WORKDIR}/rsh.pam ${D}/${sysconfdir}/pam.d/rsh
+    fi
+    cp ${WORKDIR}/rexec.xinetd.netkit  ${D}/${sysconfdir}/xinetd.d/rexec
+    cp ${WORKDIR}/rlogin.xinetd.netkit  ${D}/${sysconfdir}/xinetd.d/rlogin
+    cp ${WORKDIR}/rsh.xinetd.netkit  ${D}/${sysconfdir}/xinetd.d/rsh
+}
+
+PACKAGES = "${PN}-client ${PN}-server ${PN}-doc ${BPN}-dbg"
+
+FILES_${PN}-client = "${bindir}/*"
+FILES_${PN}-server = "${sbindir}/* ${sysconfdir}"
+FILES_${PN}-doc = "${mandir}"
+FILES_${PN}-dbg = "${prefix}/src/debug \
+                   ${sbindir}/.debug ${bindir}/.debug"
+
+ALTERNATIVE_PRIORITY = "80"
+ALTERNATIVE_${PN}-client = "rcp rexec rlogin rsh"
+ALTERNATIVE_${PN}-server = "rshd rexecd rlogind"
+ALTERNATIVE_LINK_NAME[server] = "${bindir}/rshd"
+ALTERNATIVE_TARGET[rshd] = "${sbindir}/in.rshd"
+ALTERNATIVE_LINK_NAME[rexecd] = "${bindir}/rexecd"
+ALTERNATIVE_TARGET[rexecd] = "${sbindir}/in.rexecd"
+ALTERNATIVE_LINK_NAME[rlogind] = "${bindir}/rlogind"
+ALTERNATIVE_TARGET[rlogind] = "${sbindir}/in.rlogind"
+
+RCONFLICTS_${PN}-server += "inetutils-rshd"
+RPROVIDES_${PN}-server = "rshd"
+
+RDEPENDS_${PN}-server = "xinetd"
+RDEPENDS_${PN}-server += "tcp-wrappers"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers/rpc.rusersd-Makefile-fix-parallel-build-issue.patch b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers/rpc.rusersd-Makefile-fix-parallel-build-issue.patch
new file mode 100644
index 0000000..d85178d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers/rpc.rusersd-Makefile-fix-parallel-build-issue.patch
@@ -0,0 +1,30 @@
+From c23cc112a480f90950de5cf1de09b1a7e732bf21 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Mon, 15 Dec 2014 18:31:13 -0800
+Subject: [PATCH] rpc.rusersd/Makefile: fix parallel build issue
+
+Fixed:
+rusers.x: No such file or directory
+Makefile:44: recipe for target 'rusers_xdr.c' failed
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ rpc.rusersd/Makefile |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/rpc.rusersd/Makefile b/rpc.rusersd/Makefile
+index 792f528..65a424a 100644
+--- a/rpc.rusersd/Makefile
++++ b/rpc.rusersd/Makefile
+@@ -40,5 +40,5 @@ rusers.x:
+ rusers.h: $(RUSERSX) rusers.x
+ 	$(RPCGEN) -h -o rusers.h rusers.x
+ 
+-rusers_xdr.c: $(RUSERSX)
++rusers_xdr.c: $(RUSERSX) rusers.x
+ 	$(RPCGEN) -c -C -o rusers_xdr.c rusers.x
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb
new file mode 100644
index 0000000..24eb96f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb
@@ -0,0 +1,70 @@
+DESCRIPTION = "netkit-rusers includes rusers - Displays who is logged in to machines on local network \
+    rusersd - Logged in users server"
+HOMEPAGE = "ftp://ftp.uk.linux.org/pub/linux/Networking/netkit"
+SECTION = "net"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://rusers/rusers.c;beginline=2;endline=3;md5=f4fc634a4ce8c569911196b72b10770e"
+DEPENDS = " tcp-wrappers libtirpc rpcbind"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/n/${BPN}/${BPN}_${PV}.orig.tar.gz;name=archive \
+           ${DEBIAN_MIRROR}/main/n/${BPN}/${BPN}_${PV}-8.diff.gz;name=patch8 \
+           file://rpc.rusersd-Makefile-fix-parallel-build-issue.patch \
+"
+
+SRC_URI[archive.md5sum] = "dc99a80b9fde2ab427c874f88f1c1602"
+SRC_URI[archive.sha256sum] = "f00138651865ad2dcfec5dedda0cda403cb80c4ab68efcc3bbccafe198c24b6d"
+SRC_URI[patch8.md5sum] = "1ff498113e0f920d92088092e5570bdc"
+SRC_URI[patch8.sha256sum] = "14882dbdda4e37baa84d55b54b46c7e063a20fc9e04d1be1a2807643cd0f3067"
+
+inherit autotools-brokensep
+
+do_configure () {
+    ./configure --prefix=${prefix}
+    echo "LDFLAGS=${LDFLAGS}" >> MCONFIG
+    echo "USE_GLIBC=1" >> MCONFIG
+}
+
+do_install () {
+    install -d ${D}${bindir}
+    install -d ${D}${sbindir}
+    install -d ${D}${mandir}/man1
+    install -d ${D}${mandir}/man8
+    install -d ${D}${sysconfdir}/xinetd.d
+
+    sed -i 's/install -s/install/' rusers/Makefile
+    sed -i 's/install -s/install/' rup/Makefile
+    sed -i 's/install -s/install/' rpc.rusersd/Makefile
+
+    oe_runmake 'INSTALLROOT=${D}' 'BINMODE=0755' \
+    'DAEMONMODE=0755' 'MANMODE=0644' \
+    'BINDIR=${bindir}' 'SBINDIR=${sbindir}' \
+    'MANDIR=${mandir}' install
+
+    # create the xinetd config file
+    cat >rusersd.conf <<EOF
+ service rusersd
+ {
+    disable     = yes
+    type        = RPC
+    rpc_version = 1-2
+    socket_type = dgram
+    protocol    = udp
+    wait        = yes
+    user        = root
+    server      = ${sbindir}/rpc.rusersd
+ }
+EOF
+    install rusersd.conf ${D}/${sysconfdir}/xinetd.d/rusersd
+}
+
+
+INSANE_SKIP_${PN} = "already-stripped"
+
+PACKAGES = "${PN}-client ${PN}-server ${PN}-doc ${BPN}-dbg"
+FILES_${PN}-client = "${bindir}/*"
+FILES_${PN}-server = "${sbindir}/* ${sysconfdir}"
+FILES_${PN}-doc = "${mandir}"
+FILES_${PN}-dbg = "${prefix}/src/debug \
+            ${bindir}/.debug ${sbindir}/.debug"
+
+RDEPENDS_${PN}-server = "tcp-wrappers xinetd rpcbind"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho/rwhod b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho/rwhod
new file mode 100755
index 0000000..f641903
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho/rwhod
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:        rwhod
+# Required-Start:  $network $remote_fs $syslog
+# Required-Stop:   $network $remote_fs $syslog
+# Default-Start:   2 3 4 5
+# Default-Stop:    0 1 6
+# Short-Description: Server for rwho and ruptime services
+### END INIT INFO
+
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+DAEMON=/usr/sbin/rwhod
+PIDFILE=/var/run/rwhod.pid
+CONF_FILE="/etc/default/rwhod"
+DESC="Who daemon "
+# default options. Change them in /etc/default/rwhod
+RWHOD_OPTIONS="-b"
+
+# rwhod	init.d script for ntpdc from ntp.isc.org
+test -f $DAEMON || exit 0
+
+# Source function library.
+. /etc/init.d/functions
+
+[ -r $CONF_FILE ] && . $CONF_FILE
+
+startdaemon(){
+	echo -n "Starting $DESC" " rwhod "
+	start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON -- $RWHOD_OPTIONS
+	echo "done"
+}
+stopdaemon(){
+	echo -n "Stopping $DESC" " rwhod "
+	start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
+	echo "done"
+}
+
+case "$1" in
+  start)
+	startdaemon
+	;;
+  stop)
+	stopdaemon
+	;;
+  force-reload)
+	stopdaemon
+	startdaemon
+	;;
+  restart)
+	stopdaemon
+	sleep 1
+	startdaemon
+	;;
+  reload)
+	stopdaemon
+	sleep 1
+	startdaemon
+	;;
+  status)
+	status /usr/sbin/rwhod;
+	exit $?
+	;;
+  *)
+	echo "Usage: rwhod { start | stop | status | restart | reload }" >&2
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho/rwhod.default b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho/rwhod.default
new file mode 100644
index 0000000..62d3a94
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho/rwhod.default
@@ -0,0 +1,2 @@
+#Options for the rwhod daemon.
+RWHOD_OPTIONS="-b"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho_0.17.bb b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho_0.17.bb
new file mode 100644
index 0000000..04baa42
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-rwho/netkit-rwho_0.17.bb
@@ -0,0 +1,83 @@
+DESCRIPTION = "netkit-rwho includes, ruptime rwho and rwhod (Daemon to maintain data for rwho/ruptime)"
+HOMEPAGE = "ftp://ftp.uk.linux.org/pub/linux/Networking/netkit"
+SECTION = "net"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://rwho/rwho.c;beginline=2;endline=3;md5=5a85f13c0142d72fc378e00f15da5b9e"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/n/netkit-rwho/netkit-rwho_${PV}.orig.tar.gz;name=archive \
+           ${DEBIAN_MIRROR}/main/n/netkit-rwho/netkit-rwho_${PV}-13.debian.tar.gz;name=patch13 \
+           file://rwhod \
+           file://rwhod.default \
+"
+SRC_URI[archive.md5sum] = "0f71620d45d472f89134ba0d74242e75"
+SRC_URI[archive.sha256sum] = "0409e2ce4bfdb2dacb2c193d0fedfc49bb975cb057c5c6b0ffcca603a1188da7"
+SRC_URI[patch13.md5sum] = "82ed5a3c6b0bbf00b36508b9787963b9"
+SRC_URI[patch13.sha256sum] = "53aefa27d98b565bf756db57120c03bd224a238e45699d92076420272a6eba8e"
+
+inherit autotools-brokensep useradd update-rc.d update-alternatives
+
+CFLAGS += " -D_GNU_SOURCE"
+
+debian_do_patch() {
+    cd ${S}
+    while read line; do patch -p1 < ${WORKDIR}/debian/patches/$line; done < ${WORKDIR}/debian/patches/series
+}
+
+python do_patch() {
+    bb.build.exec_func('debian_do_patch', d)
+    bb.build.exec_func('patch_do_patch', d)
+}
+
+do_configure () {
+    ./configure --prefix=${prefix}
+    echo "LDFLAGS=${LDFLAGS}" >> MCONFIG
+}
+
+do_install () {
+    # rwho & ruptime
+    install -d ${D}${bindir}
+    install -d ${D}${mandir}/man1
+    #rwhod
+    install -d ${D}${sbindir}
+    install -d ${D}${mandir}/man8
+    install -d ${D}${sysconfdir}/init.d
+    install -d ${D}${sysconfdir}/default
+    sed -i 's/install -s/install/' rwho/Makefile
+    sed -i 's/install -s/install/' ruptime/Makefile
+    sed -i 's/install -s/install/' rwhod/Makefile
+    oe_runmake 'INSTALLROOT=${D}' 'BINMODE=0755' \
+    'DAEMONMODE=0755' 'MANMODE=0644' \
+    'BINDIR=${bindir}' 'SBINDIR=${sbindir}' \
+    'MANDIR=${mandir}' install
+
+    install -m 0644 ${WORKDIR}/rwhod.default ${D}${sysconfdir}/default/rwhod
+    install -m 755 ${WORKDIR}/rwhod ${D}${sysconfdir}/init.d
+
+    mkdir -p -m 755 ${D}${localstatedir}/spool/rwho
+    chown -R rwhod ${D}${localstatedir}/spool/rwho
+}
+
+pkg_postinst_${PN}-server() {
+    ${sysconfdir}/init.d/rwhod start
+}
+
+pkg_postrm_${PN}-server() {
+    ${sysconfdir}/init.d/rwhod stop
+}
+
+INITSCRIPT_NAME = "rwhod"
+INITSCRIPT_PARAM = "defaults 85 15"
+
+USERADD_PACKAGES = "${PN}-server"
+GROUPADD_PARAM_${PN}-server = "--system rwhod"
+USERADD_PARAM_${PN}-server = "--system -g rwhod --home-dir  ${localstatedir}/spool/rwho \
+        --no-create-home  --shell /bin/false rwhod"
+
+INSANE_SKIP_${PN} = "already-stripped"
+
+PACKAGES = "${PN}-client ${PN}-server ${PN}-doc ${BPN}-dbg"
+FILES_${PN}-client = "${bindir}/*"
+FILES_${PN}-server = "${sbindir}/* ${localstatedir} ${sysconfdir}/default/* ${sysconfdir}/init.d/*"
+FILES_${PN}-doc = "${mandir}"
+FILES_${PN}-dbg = "${prefix}/src/debug \
+            ${bindir}/.debug ${sbindir}/.debug"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/To-aviod-buffer-overflow-in-telnet.patch b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/To-aviod-buffer-overflow-in-telnet.patch
new file mode 100644
index 0000000..7fff8cf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/To-aviod-buffer-overflow-in-telnet.patch
@@ -0,0 +1,1217 @@
+From f09a6460a62aacb87bb8683d16aa3ce55848bf7e Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 28 Nov 2014 07:06:24 +0900
+Subject: [PATCH 1/2] To aviod buffer overflow in telnet
+
+This patch is from Fedora.
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ telnet/Makefile     |   4 +-
+ telnet/commands.cc  | 270 +++++++++++++++++++++++++++++++++++-----------------
+ telnet/defines.h    |   2 +
+ telnet/externs.h    |   7 +-
+ telnet/main.cc      |  65 ++++++++++---
+ telnet/netlink.cc   |  78 +++++++++------
+ telnet/netlink.h    |   7 +-
+ telnet/network.cc   |   1 +
+ telnet/proto.h      |   2 +-
+ telnet/ring.cc      |   2 +-
+ telnet/ring.h       |   2 +-
+ telnet/sys_bsd.cc   |  11 +++
+ telnet/telnet.1     |  37 +++++--
+ telnet/telnet.cc    |  45 +++++----
+ telnet/terminal.cc  |  17 +++-
+ telnet/utilities.cc |   2 +
+ 16 files changed, 380 insertions(+), 172 deletions(-)
+
+diff --git a/telnet/Makefile b/telnet/Makefile
+index cef866f..39249e1 100644
+--- a/telnet/Makefile
++++ b/telnet/Makefile
+@@ -7,7 +7,7 @@ include ../MRULES
+ 
+ # -DAUTHENTICATE
+ CXXFLAGS += -DUSE_TERMIO -DKLUDGELINEMODE
+-LIBS += $(LIBTERMCAP)
++LIBS = $(LIBTERMCAP)
+ 
+ SRCS = commands.cc main.cc network.cc ring.cc sys_bsd.cc telnet.cc \
+ 	terminal.cc tn3270.cc utilities.cc genget.cc environ.cc netlink.cc
+@@ -22,7 +22,7 @@ depend:
+ 	$(CXX) $(CXXFLAGS) -MM $(SRCS) >depend.mk
+ 
+ install: telnet
+-	install -s -m$(BINMODE) telnet $(INSTALLROOT)$(BINDIR)
++	install -m$(BINMODE) telnet $(INSTALLROOT)$(BINDIR)
+ 	install -m$(MANMODE) telnet.1 $(INSTALLROOT)$(MANDIR)/man1
+ 
+ clean:
+diff --git a/telnet/commands.cc b/telnet/commands.cc
+index d92bccd..02c593e 100644
+--- a/telnet/commands.cc
++++ b/telnet/commands.cc
+@@ -86,10 +86,6 @@ char cmd_rcsid[] =
+ 
+ #define HELPINDENT ((int) sizeof ("connect"))
+ 
+-#ifndef       MAXHOSTNAMELEN
+-#define       MAXHOSTNAMELEN 64
+-#endif        MAXHOSTNAMELEN
+-
+ #if	defined(HAS_IPPROTO_IP) && defined(IP_TOS)
+ int tos = -1;
+ #endif	/* defined(HAS_IPPROTO_IP) && defined(IP_TOS) */
+@@ -98,7 +94,7 @@ static unsigned long sourceroute(char *arg, char **cpp, int *lenp);
+ 
+ 
+ char	*hostname;
+-static char _hostname[MAXHOSTNAMELEN];
++static char *_hostname;
+ 
+ //typedef int (*intrtn_t)(int argc, const char *argv[]);
+ 
+@@ -161,7 +157,7 @@ class command_entry {
+ 	assert(argc>=1);
+ 	if (nargs>=0 && argc!=nargs+1) {
+ 	    fprintf(stderr, "Wrong number of arguments for command.\n");
+-	    fprintf(stderr, "Try %s ? for help\n", argv[0]);
++	    fprintf(stderr, "Try ? %s for help\n", argv[0]);
+ 	    return 0;    /* is this right? */
+ 	}
+ 	if (nargs==-2) {
+@@ -480,6 +476,7 @@ static int send_wontcmd(const char *name, const char *) {
+ int send_tncmd(int (*func)(int, int), const char *cmd, const char *name) {
+     char **cpp;
+     extern char *telopts[];
++    long opt;
+ 
+     if (isprefix(name, "help") || isprefix(name, "?")) {
+ 	register int col, len;
+@@ -506,16 +503,23 @@ int send_tncmd(int (*func)(int, int), const char *cmd, const char *name) {
+ 					name, cmd);
+ 	return 0;
+     }
++
++    opt = cpp - telopts;
+     if (cpp == 0) {
+-	fprintf(stderr, "'%s': unknown argument ('send %s ?' for help).\n",
++	char *end;
++
++	opt = strtol(name, &end, 10);
++	if (*end || opt < 0 || opt > 255) {
++	    fprintf(stderr, "'%s': unknown argument ('send %s ?' for help).\n",
+ 					name, cmd);
+-	return 0;
++	    return 0;
++	}
+     }
+     if (!connected) {
+ 	printf("?Need to be connected first.\n");
+ 	return 0;
+     }
+-    (*func)(cpp - telopts, 1);
++    (*func)(opt, 1);
+     return 1;
+ }
+ 
+@@ -689,9 +693,9 @@ static struct togglelist Togglelist[] = {
+       "print encryption debugging information" },
+ #endif
+ 
+-    { "skiprc", "don't read ~/.telnetrc file",
++    { "skiprc", "don't read the telnetrc files",
+       NULL, &skiprc,
+-      "read ~/.telnetrc file" },
++      "read the telnetrc files" },
+     { "binary",
+       "sending and receiving of binary data",
+       togbinary, NULL,
+@@ -1615,15 +1619,20 @@ void ayt_status(int) {
+ #endif
+ 
+ int tn(int argc, const char *argv[]) {
+-    register struct hostent *host = 0;
+     struct sockaddr_in sn;
+-    struct servent *sp = 0;
+     char *srp = NULL;
+     int srlen;
+-
+-    const char *cmd, *volatile user = 0;
++    int family = 0;
++    const char *cmd, *volatile user = 0, *srchostp = 0;
+     const char *portp = NULL;
+     char *hostp = NULL;
++    char *resolv_hostp;
++    struct addrinfo hints;
++    struct addrinfo *hostaddr = 0;
++    int res;
++    char name[NI_MAXHOST];
++    char service[NI_MAXSERV];
++    struct addrinfo *tmpaddr;
+ 
+     /* clear the socket address prior to use */
+     memset(&sn, 0, sizeof(sn));
+@@ -1632,6 +1641,10 @@ int tn(int argc, const char *argv[]) {
+ 	printf("?Already connected to %s\n", hostname);
+ 	return 0;
+     }
++    if (_hostname) {
++	delete[] _hostname;
++	_hostname = 0;
++    }
+     if (argc < 2) {
+ 	(void) strcpy(line, "open ");
+ 	printf("(to) ");
+@@ -1657,11 +1670,33 @@ int tn(int argc, const char *argv[]) {
+ 	    --argc;
+ 	    continue;
+ 	}
++	if (strcmp(*argv, "-b") == 0) {
++	    --argc; ++argv;
++	    if (argc == 0)
++		goto usage;
++	    srchostp = *argv++;
++	    --argc;
++	    continue;
++	}
+ 	if (strcmp(*argv, "-a") == 0) {
+ 	    --argc; ++argv;
+ 	    autologin = 1;
+ 	    continue;
+ 	}
++	if (strcmp(*argv, "-6") == 0) {
++	    --argc; ++argv;
++#ifdef AF_INET6
++	    family = AF_INET6;
++#else
++	    puts("IPv6 unsupported");
++#endif
++	    continue;
++	}
++	if (strcmp(*argv, "-4") == 0) {
++	    --argc; ++argv;
++	    family = AF_INET;
++	    continue;
++	}
+ 	if (hostp == 0) {
+ 	    /* this leaks memory - FIXME */
+ 	    hostp = strdup(*argv++);
+@@ -1680,6 +1715,8 @@ int tn(int argc, const char *argv[]) {
+     if (hostp == 0)
+ 	goto usage;
+ 
++    resolv_hostp = hostp;
++
+ #if defined(IP_OPTIONS) && defined(HAS_IPPROTO_IP)
+     if (hostp[0] == '@' || hostp[0] == '!') {
+ 	if ((hostname = strrchr(hostp, ':')) == NULL)
+@@ -1696,78 +1733,122 @@ int tn(int argc, const char *argv[]) {
+ 	} else {
+ 	    sn.sin_addr.s_addr = temp;
+ 	    sn.sin_family = AF_INET;
++	    /*
++	     * For source route we just make sure to get the IP given
++	     * on the command line when looking up the port.
++	     */
++	    resolv_hostp = inet_ntoa(sn.sin_addr);
+ 	}
+     } 
+-    else {
+-#endif
+-	if (inet_aton(hostp, &sn.sin_addr)) {
+-	    sn.sin_family = AF_INET;
+-	    strcpy(_hostname, hostp);
+-	    hostname = _hostname;
+-	} 
+-	else {
+-	    host = gethostbyname(hostp);
+-	    if (host) {
+-		sn.sin_family = host->h_addrtype;
+-		if (host->h_length > (int)sizeof(sn.sin_addr)) {
+-		    host->h_length = sizeof(sn.sin_addr);
+-		}
+-#if	defined(h_addr)		/* In 4.3, this is a #define */
+-		memcpy((caddr_t)&sn.sin_addr,
+-				host->h_addr_list[0], host->h_length);
+-#else	/* defined(h_addr) */
+-		memcpy((caddr_t)&sn.sin_addr, host->h_addr, host->h_length);
+-#endif	/* defined(h_addr) */
+-		strncpy(_hostname, host->h_name, sizeof(_hostname));
+-		_hostname[sizeof(_hostname)-1] = '\0';
+-		hostname = _hostname;
+-	    } else {
+-		herror(hostp);
+-		return 0;
+-	    }
+-	}
+-#if defined(IP_OPTIONS) && defined(HAS_IPPROTO_IP)
+-    }
+ #endif
++
++    /* User port or the default name of telnet. */
+     if (portp) {
+ 	if (*portp == '-') {
+ 	    portp++;
+ 	    telnetport = 1;
+-	} else
++	} else {
+ 	    telnetport = 0;
+-	sn.sin_port = atoi(portp);
+-	if (sn.sin_port == 0) {
+-	    sp = getservbyname(portp, "tcp");
+-	    if (sp)
+-		sn.sin_port = sp->s_port;
+-	    else {
+-		printf("%s: bad port number\n", portp);
+-		return 0;
++	    if (*portp >='0' && *portp<='9') {
++	       char *end;
++	       long int p;
++
++	       p=strtol(portp, &end, 10);
++	       if (ERANGE==errno && (LONG_MIN==p || LONG_MAX==p)) {
++	          fprintf(stderr, "telnet: port %s overflows\n", portp);
++		  return 0;
++	       } else if (p<=0 || p>=65536) {
++	          fprintf(stderr, "telnet: port %s out of range\n", portp);
++		  return 0;
++	       }
+ 	    }
+-	} 
+-	else {
+-	    sn.sin_port = htons(sn.sin_port);
+ 	}
+-    } 
++    }
+     else {
+-	if (sp == 0) {
+-	    sp = getservbyname("telnet", "tcp");
+-	    if (sp == 0) {
+-		fprintf(stderr, "telnet: tcp/telnet: unknown service\n");
+-		return 0;
+-	    }
+-	    sn.sin_port = sp->s_port;
+-	}
++	portp = "telnet";
+ 	telnetport = 1;
+     }
+-    printf("Trying %s...\n", inet_ntoa(sn.sin_addr));
++
++    /* We only understand SOCK_STREAM sockets. */
++    memset(&hints, 0, sizeof(hints));
++    hints.ai_socktype = SOCK_STREAM;
++    hints.ai_flags = AI_NUMERICHOST;
++    hints.ai_family = family;
++
++    if (srchostp) {
++	res = getaddrinfo(srchostp, "0", &hints, &hostaddr);
++	if (res) {
++	    fprintf(stderr, "telnet: could not resolve %s: %s\n", srchostp,
++		    gai_strerror(res));
++	    return 0;
++	}
++	hints.ai_family = hostaddr->ai_family;
++	res = nlink.bind(hostaddr);
++	freeaddrinfo(hostaddr);
++	if (res < 0)
++	    return 0;
++    }
++        
++    /* Resolve both the host and service simultaneously. */
++    res = getaddrinfo(resolv_hostp, portp, &hints, &hostaddr);
++    if (res == EAI_NONAME) {
++	hints.ai_flags = AI_CANONNAME;
++	res = getaddrinfo(resolv_hostp, portp, &hints, &hostaddr);
++    } else if (hostaddr) {
++	hostaddr->ai_canonname = 0;
++    }
++    if (res || !hostaddr) {
++	fprintf(stderr, "telnet: could not resolve %s/%s: %s\n", resolv_hostp, portp, gai_strerror(res));
++	return 0;
++    }
++     
++    /* Try to connect to every listed round robin IP. */
++    tmpaddr = hostaddr;
++    errno = 0;
+     do {
+-	int x = nlink.connect(debug, host, &sn, srp, srlen, tos);
+-	if (!x) return 0;
+-	else if (x==1) continue;
++	int x;
++
++	if (!tmpaddr) {
++	    if (errno)
++		perror("telnet: Unable to connect to remote host");
++	    else
++		fputs("telnet: Unable to connect to remote host: "
++		      "Bad port number\n", stderr);
++err:
++	    freeaddrinfo(hostaddr);
++	    return 0;
++	}
++
++	if (tmpaddr->ai_family == AF_UNIX) {
++nextaddr:
++	    tmpaddr = tmpaddr->ai_next;
++	    continue;
++	}
++
++	getnameinfo(tmpaddr->ai_addr, tmpaddr->ai_addrlen,
++		    name, sizeof(name), service, sizeof(service),
++		    NI_NUMERICHOST | NI_NUMERICSERV);
++
++	printf("Trying %s...\n", name);
++	x = nlink.connect(debug, tmpaddr, srp, srlen, tos);
++	if (!x)
++	    goto err;
++	else if (x==1)
++	    goto nextaddr;
++
+ 	connected++;
+     } while (connected == 0);
+-    cmdrc(hostp, hostname);
++    if (tmpaddr->ai_canonname == 0) {
++	hostname = new char[strlen(hostp)+1];
++	strcpy(hostname, hostp);
++    }
++    else {
++	hostname = new char[strlen(tmpaddr->ai_canonname)+1];
++	strcpy(hostname, tmpaddr->ai_canonname);
++    }
++
++    cmdrc(hostp, hostname, portp);
++    freeaddrinfo(hostaddr);
+     if (autologin && user == NULL) {
+ 	struct passwd *pw;
+ 
+@@ -2013,30 +2094,21 @@ static int help(command_table *tab, int argc, const char *argv[]) {
+     return 0;
+ }
+ 
+-static char *rcname = 0;
+-static char rcbuf[128];
+-
+-void cmdrc(const char *m1, const char *m2) {
++static void readrc(const char *m1, const char *m2, const char *port,
++		   const char *rcname)
++{
+     FILE *rcfile;
+     int gotmachine = 0;
+     int l1 = strlen(m1);
+     int l2 = strlen(m2);
+-    char m1save[64];
+-
+-    if (skiprc) return;
++    int lport = strlen(port);
++    char m1save[l1 + 1];
++    char portsave[lport + 1];
+ 
+     strcpy(m1save, m1);
+     m1 = m1save;
+-
+-    if (rcname == 0) {
+-	rcname = getenv("HOME");
+-	if (rcname)
+-	    strcpy(rcbuf, rcname);
+-	else
+-	    rcbuf[0] = '\0';
+-	strcat(rcbuf, "/.telnetrc");
+-	rcname = rcbuf;
+-    }
++    strcpy(portsave, port);
++    port = portsave;
+ 
+     rcfile = fopen(rcname, "r");
+     if (!rcfile) return;
+@@ -2061,6 +2133,13 @@ void cmdrc(const char *m1, const char *m2) {
+ 		strncpy(line, &line[7], sizeof(line) - 7);
+ 	    else
+ 		continue;
++
++	    if (line[0] == ':') {
++		if (!strncasecmp(&line[1], port, lport))
++		    continue;
++		strncpy(line, &line[lport + 1], sizeof(line) - lport - 1);
++	    }
++
+ 	    if (line[0] != ' ' && line[0] != '\t' && line[0] != '\n')
+ 		continue;
+ 	    gotmachine = 1;
+@@ -2073,6 +2152,21 @@ void cmdrc(const char *m1, const char *m2) {
+     fclose(rcfile);
+ }
+ 
++void cmdrc(const char *m1, const char *m2, const char *port) {
++    char *rcname = NULL;
++
++    if (skiprc) return;
++
++    readrc(m1, m2, port, "/etc/telnetrc");
++    if (asprintf (&rcname, "%s/.telnetrc", getenv ("HOME")) == -1)
++      {
++        perror ("asprintf");
++        return;
++      }
++    readrc(m1, m2, port, rcname);
++    free (rcname);
++}
++
+ #if defined(IP_OPTIONS) && defined(HAS_IPPROTO_IP)
+ 
+ /*
+diff --git a/telnet/defines.h b/telnet/defines.h
+index 2784400..d5edc46 100644
+--- a/telnet/defines.h
++++ b/telnet/defines.h
+@@ -50,3 +50,5 @@
+ #define	MODE_COMMAND_LINE(m)	((m)==-1)
+ 
+ #define	CONTROL(x)	((x)&0x1f)		/* CTRL(x) is not portable */
++
++#define MODE_OUT8	0x8000			/* binary mode sans -opost */
+diff --git a/telnet/externs.h b/telnet/externs.h
+index 955df79..0730e8a 100644
+--- a/telnet/externs.h
++++ b/telnet/externs.h
+@@ -48,9 +48,7 @@
+ typedef unsigned char cc_t;
+ #endif
+ 
+-#ifdef __linux__
+ #include <unistd.h>   /* get _POSIX_VDISABLE */
+-#endif
+ 
+ #ifndef	_POSIX_VDISABLE
+ #error "Please fix externs.h to define _POSIX_VDISABLE"
+@@ -60,7 +58,8 @@ typedef unsigned char cc_t;
+ 
+ extern int autologin;		/* Autologin enabled */
+ extern int skiprc;		/* Don't process the ~/.telnetrc file */
+-extern int eight;		/* use eight bit mode (binary in and/or out */
++extern int eight;		/* use eight bit mode (binary in and/or out) */
++extern int binary;		/* use binary option (in and/or out) */
+ extern int flushout;		/* flush output */
+ extern int connected;		/* Are we connected to the other side? */
+ extern int globalmode;		/* Mode tty should be in */
+@@ -225,6 +224,8 @@ cc_t *tcval(int);
+ 
+ //#if 0
+ extern struct termios new_tc;
++extern struct termios old_tc;
++
+ 
+ #define termEofChar		new_tc.c_cc[VEOF]
+ #define termEraseChar		new_tc.c_cc[VERASE]
+diff --git a/telnet/main.cc b/telnet/main.cc
+index b67f2ce..b626e54 100644
+--- a/telnet/main.cc
++++ b/telnet/main.cc
+@@ -45,7 +45,10 @@ char main_rcsid[] =
+ 
+ #include <sys/types.h>
+ #include <getopt.h>
++#include <stdlib.h>
+ #include <string.h>
++#include <netdb.h>
++#include <errno.h>
+ 
+ #include "ring.h"
+ #include "externs.h"
+@@ -80,12 +83,13 @@ tninit(void)
+ void usage(void) {
+     fprintf(stderr, "Usage: %s %s%s%s%s\n",
+ 	    prompt,
+-	    " [-8] [-E] [-L] [-a] [-d] [-e char] [-l user] [-n tracefile]",
+-	    "\n\t",
++	    "[-4] [-6] [-8] [-E] [-L] [-a] [-d] [-e char] [-l user]",
++	    "\n\t[-n tracefile] [ -b addr ]",
+ #ifdef TN3270
++	    "\n\t"
+ 	    "[-noasynch] [-noasynctty] [-noasyncnet] [-r] [-t transcom]\n\t",
+ #else
+-	    "[-r] ",
++	    " [-r] ",
+ #endif
+ 	    "[host-name [port]]"
+ 	);
+@@ -102,7 +106,8 @@ main(int argc, char *argv[])
+ 	extern char *optarg;
+ 	extern int optind;
+ 	int ch;
+-	char *user;
++	char *user, *srcaddr;
++	int family;
+ 
+ 	tninit();		/* Clear out things */
+ #if	defined(CRAY) && !defined(__STDC__)
+@@ -110,21 +115,38 @@ main(int argc, char *argv[])
+ #endif
+ 
+ 	TerminalSaveState();
++	if ((old_tc.c_cflag & (CSIZE|PARENB)) != CS8)
++		eight = 0;
+ 
+ 	if ((prompt = strrchr(argv[0], '/'))!=NULL)
+ 		++prompt;
+ 	else
+ 		prompt = argv[0];
+ 
+-	user = NULL;
++	user = srcaddr = NULL;
++	family = 0;
+ 
+ 	rlogin = (strncmp(prompt, "rlog", 4) == 0) ? '~' : _POSIX_VDISABLE;
+ 	autologin = -1;
+ 
+-	while ((ch = getopt(argc, argv, "8EKLS:X:ade:k:l:n:rt:x")) != EOF) {
++	while ((ch = getopt(argc, argv,
++			    "4678EKLS:X:ab:de:k:l:n:rt:x")) != EOF) {
+ 		switch(ch) {
++		case '4':
++			family = AF_INET;
++			break;
++		case '6':
++#ifdef AF_INET6
++			family = AF_INET6;
++#else
++			fputs("IPv6 unsupported\n", stderr);
++#endif
++			break;
++		case '7':
++			eight = 0;	/* 7-bit ouput and input */
++			break;
+ 		case '8':
+-			eight = 3;	/* binary output and input */
++			binary = 3;	/* binary output and input */
+ 			break;
+ 		case 'E':
+ 			rlogin = escapechar = _POSIX_VDISABLE;
+@@ -133,23 +155,26 @@ main(int argc, char *argv[])
+ 		        //autologin = 0;
+ 			break;
+ 		case 'L':
+-			eight |= 2;	/* binary output only */
++			binary |= 2;	/* binary output only */
+ 			break;
+ 		case 'S':
+ 		    {
+-#ifdef	HAS_GETTOS
+ 			extern int tos;
++			int num;
+ 
+-			if ((tos = parsetos(optarg, "tcp")) < 0)
++#ifdef	HAS_GETTOS
++			if ((num = parsetos(optarg, "tcp")) < 0) {
++#else
++			errno = 0;
++			num = strtol(optarg, 0, 0);
++			if (errno) {
++#endif
+ 				fprintf(stderr, "%s%s%s%s\n",
+ 					prompt, ": Bad TOS argument '",
+ 					optarg,
+ 					"; will try to use default TOS");
+-#else
+-			fprintf(stderr,
+-			   "%s: Warning: -S ignored, no parsetos() support.\n",
+-								prompt);
+-#endif
++			} else
++				tos = num;
+ 		    }
+ 			break;
+ 		case 'X':
+@@ -210,6 +235,9 @@ main(int argc, char *argv[])
+ 				"%s: -x ignored, no encryption support.\n",
+ 				prompt);
+ 			break;
++		case 'b':
++			srcaddr = optarg;
++			break;
+ 		case '?':
+ 		default:
+ 			usage();
+@@ -233,6 +261,13 @@ main(int argc, char *argv[])
+ 			*argp++ = "-l";
+ 			*argp++ = user;
+ 		}
++		if (srcaddr) {
++			*argp++ = "-b";
++			*argp++ = srcaddr;
++		}
++		if (family) {
++			*argp++ = family == AF_INET ? "-4" : "-6";
++		}
+ 		*argp++ = argv[0];		/* host */
+ 		if (argc > 1)
+ 			*argp++ = argv[1];	/* port */
+diff --git a/telnet/netlink.cc b/telnet/netlink.cc
+index f439cff..f839747 100644
+--- a/telnet/netlink.cc
++++ b/telnet/netlink.cc
+@@ -79,22 +79,61 @@ void netlink::close(int doshutdown) {
+ 	shutdown(net, 2);
+     }
+     ::close(net);
++    net = -1;
+ }
+ 
+-int netlink::connect(int debug, struct hostent *host, 
+-		     struct sockaddr_in *sn, 
+-		     char *srcroute, int srlen, int tos) 
++int netlink::bind(struct addrinfo *addr)
+ {
+-    int on=1;
++    int res;
++
++    res = socket(addr->ai_family);
++    if (res < 2) {
++	if (res == 1)
++	    perror("telnet: socket");
++	return -1;
++    }
++
++    if (::bind(net, addr->ai_addr, addr->ai_addrlen) < 0) {
++	perror("telnet: bind");
++	return -1;
++    }
++
++    return 0;
++}
++
++int netlink::socket(int family)
++{
++    if (this->family != family)
++	close(0);
+ 
+-    net = socket(AF_INET, SOCK_STREAM, 0);
+     if (net < 0) {
+-	perror("telnet: socket");
+-	return 0;
++	this->family = family;
++	net = ::socket(family, SOCK_STREAM, 0);
++	if (net < 0) {
++	    if (errno == EAFNOSUPPORT)
++		return 1;
++	    perror("telnet: socket");
++	    return 0;
++	}
+     }
+ 
++    return 2;
++}
++
++int netlink::connect(int debug, struct addrinfo *addr, 
++		     char *srcroute, int srlen, int tos) 
++{
++    int on=1;
++    int res;
++
++    res = socket(addr->ai_family);
++    if (res < 2)
++	return res;
++
+ #if defined(IP_OPTIONS) && defined(HAS_IPPROTO_IP)
+     if (srcroute) {
++	if (addr->ai_family != AF_INET)
++	    fputs("Source route is only supported for IPv4\n", stderr);
+ 	if (setsockopt(net, IPPROTO_IP, IP_OPTIONS, srcroute, srlen) < 0)
+ 	    perror("setsockopt (IP_OPTIONS)");
+     }
+@@ -108,7 +147,7 @@ int netlink::connect(int debug, struct hostent *host,
+ #endif
+     if (tos < 0) tos = 020;	/* Low Delay bit */
+     if (tos && (setsockopt(net, IPPROTO_IP, IP_TOS, &tos, sizeof(int)) < 0)
+-	&& (errno != ENOPROTOOPT))
++	&& (errno != ENOPROTOOPT) && (errno != EOPNOTSUPP))
+ 	perror("telnet: setsockopt (IP_TOS) (ignored)");
+ #endif	/* defined(IPPROTO_IP) && defined(IP_TOS) */
+ 
+@@ -116,27 +155,8 @@ int netlink::connect(int debug, struct hostent *host,
+ 	perror("setsockopt (SO_DEBUG)");
+     }
+     
+-    if (::connect(net, (struct sockaddr *)sn, sizeof(*sn)) < 0) {
+-#if defined(h_addr)		/* In 4.3, this is a #define */
+-	if (host && host->h_addr_list[1]) {
+-	    int oerrno = errno;
+-	    
+-	    fprintf(stderr, "telnet: connect to address %s: ",
+-		    inet_ntoa(sn->sin_addr));
+-	    errno = oerrno;
+-	    perror(NULL);
+-	    host->h_addr_list++;
+-	    if (host->h_length > (int)sizeof(sn->sin_addr)) {
+-		host->h_length = sizeof(sn->sin_addr);
+-	    }
+-	    memcpy(&sn->sin_addr, host->h_addr_list[0], host->h_length);
+-	    close(net);
+-	    return 1;
+-	}
+-#endif	/* defined(h_addr) */
+-
+-	perror("telnet: Unable to connect to remote host");
+-	return 0;
++    if (::connect(net, addr->ai_addr, addr->ai_addrlen) < 0) {
++	return 1;
+     }
+     return 2;
+ }
+diff --git a/telnet/netlink.h b/telnet/netlink.h
+index 9852b30..0ac8a08 100644
+--- a/telnet/netlink.h
++++ b/telnet/netlink.h
+@@ -1,13 +1,16 @@
+ 
+ class netlink {
++ private:
++    int family;
+  protected:
+     int net;
+  public:
+     netlink();
+     ~netlink();
+ 
+-    int connect(int debug, struct hostent *host, 
+-		struct sockaddr_in *sin, 
++    int bind(struct addrinfo *hostaddr);
++    int socket(int family);
++    int connect(int debug, struct addrinfo *hostaddr, 
+ 		char *srcroute, int srlen,
+ 		int tos);
+     void close(int doshutdown);
+diff --git a/telnet/network.cc b/telnet/network.cc
+index 6a2c374..0dcf3e2 100644
+--- a/telnet/network.cc
++++ b/telnet/network.cc
+@@ -40,6 +40,7 @@ char net_rcsid[] =
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/time.h>
++#include <stdlib.h>
+ #include <errno.h>
+ #include <arpa/telnet.h>
+ 
+diff --git a/telnet/proto.h b/telnet/proto.h
+index 8be4a39..92f2419 100644
+--- a/telnet/proto.h
++++ b/telnet/proto.h
+@@ -13,7 +13,7 @@ int TerminalWindowSize(long *rows, long *cols);
+ void auth_encrypt_user(char *);
+ void auth_name(unsigned char *, int);
+ void auth_printsub(unsigned char *, int, unsigned char *, int);
+-void cmdrc(const char *m1, const char *m2);
++void cmdrc(const char *, const char *, const char *);
+ void env_init(void);
+ int getconnmode(void);
+ void init_network(void);
+diff --git a/telnet/ring.cc b/telnet/ring.cc
+index be57396..772c6c5 100644
+--- a/telnet/ring.cc
++++ b/telnet/ring.cc
+@@ -165,7 +165,7 @@ int ringbuf::flush() {
+ 
+ /////////////////////////////////////////////////// supply //////////////
+ 
+-void ringbuf::printf(const char *format, ...) {
++void ringbuf::xprintf(const char *format, ...) {
+     char xbuf[256];
+     va_list ap;
+     va_start(ap, format);
+diff --git a/telnet/ring.h b/telnet/ring.h
+index 15d3f3f..049377e 100644
+--- a/telnet/ring.h
++++ b/telnet/ring.h
+@@ -83,7 +83,7 @@ class ringbuf {
+     // manual supply
+     void putch(char c) { write(&c, 1); }
+     void write(const char *buffer, int ct);
+-    void printf(const char *format, ...);
++    void xprintf(const char *format, ...);
+     int empty_count() { return size - count; }
+ 
+     // automatic supply
+diff --git a/telnet/sys_bsd.cc b/telnet/sys_bsd.cc
+index 93fba7e..a8c9aab 100644
+--- a/telnet/sys_bsd.cc
++++ b/telnet/sys_bsd.cc
+@@ -189,18 +189,25 @@ void NetSetPgrp(int fd) {
+  * Various signal handling routines.
+  */
+ 
++#if 0
+ static void deadpeer(int /*sig*/) {
+     setcommandmode();
+     siglongjmp(peerdied, -1);
+ }
++#endif
+ 
+ static void intr(int /*sig*/) {
+     if (localchars) {
+ 	intp();
+     }
+     else {
++#if 0
+         setcommandmode();
+ 	siglongjmp(toplevel, -1);
++#else
++	signal(SIGINT, SIG_DFL);
++	raise(SIGINT);
++#endif
+     }
+ }
+ 
+@@ -214,6 +221,8 @@ static void intr2(int /*sig*/) {
+ 	    sendabort();
+ 	return;
+     }
++    signal(SIGQUIT, SIG_DFL);
++    raise(SIGQUIT);
+ }
+ 
+ #ifdef	SIGWINCH
+@@ -238,7 +247,9 @@ void ayt(int sig) {
+ void sys_telnet_init(void) {
+     signal(SIGINT, intr);
+     signal(SIGQUIT, intr2);
++#if 0
+     signal(SIGPIPE, deadpeer);
++#endif
+ #ifdef	SIGWINCH
+     signal(SIGWINCH, sendwin);
+ #endif
+diff --git a/telnet/telnet.1 b/telnet/telnet.1
+index 54a47fb..8365e42 100644
+--- a/telnet/telnet.1
++++ b/telnet/telnet.1
+@@ -42,8 +42,9 @@
+ protocol
+ .Sh SYNOPSIS
+ .Nm telnet
+-.Op Fl 8ELadr
++.Op Fl 468ELadr
+ .Op Fl S Ar tos
++.Op Fl b Ar address
+ .Op Fl e Ar escapechar
+ .Op Fl l Ar user
+ .Op Fl n Ar tracefile
+@@ -68,6 +69,10 @@ command implicitly; see the description below.
+ .Pp
+ Options:
+ .Bl -tag -width indent
++.It Fl 4
++Force IPv4 address resolution.
++.It Fl 6
++Force IPv6 address resolution.
+ .It Fl 8
+ Request 8-bit operation. This causes an attempt to negotiate the
+ .Dv TELNET BINARY
+@@ -89,6 +94,8 @@ of the
+ option if supported by the remote system. The username is retrieved
+ via
+ .Xr getlogin 3 .
++.It Fl b Ar address
++Use bind(2) on the local socket to bind it to a specific local address.
+ .It Fl d
+ Sets the initial value of the
+ .Ic debug
+@@ -474,17 +481,29 @@ protocol without making a mess. Protocol negotiation can be forced by
+ placing a dash before the port number.
+ .Pp
+ After establishing a connection, any commands associated with the
+-remote host in the user's
++remote host in
++.Pa /etc/telnetrc
++and the user's
+ .Pa .telnetrc
+-file are executed.
++file are executed, in that order.
+ .Pp
+-The format of the .telnetrc file is as follows: Lines beginning with a
++The format of the telnetrc files is as follows: Lines beginning with a
+ #, and blank lines, are ignored.  The rest of the file should consist
+ of hostnames and sequences of
+ .Nm telnet
+ commands to use with that host. Commands should be one per line,
+ indented by whitespace; lines beginning without whitespace are
+-interpreted as hostnames. Upon connecting to a particular host, the
++interpreted as hostnames.  Lines beginning with the special hostname
++.Ql DEFAULT
++will apply to all hosts.  Hostnames including
++.Ql DEFAULT
++may be followed immediately by a colon and a port number or string.
++If a port is specified it must match exactly with what is specified
++on the command line.  If no port was specified on the command line,
++then the value
++.Ql telnet
++is used.
++Upon connecting to a particular host, the
+ commands associated with that host are executed.
+ .It Ic quit
+ Close any open session and exit
+@@ -1184,9 +1203,7 @@ escape sequences are preceded by a '*' to aid in locating them.
+ When the skiprc toggle is
+ .Dv TRUE ,
+ .Tn telnet
+-does not read the 
+-.Pa \&.telnetrc
+-file.  The initial value for this toggle is
++does not read the telnetrc files.  The initial value for this toggle is
+ .Dv FALSE.
+ .It Ic termdata
+ Toggles the display of all terminal data (in hexadecimal format).
+@@ -1239,7 +1256,9 @@ to the other side via the
+ .Dv TELNET ENVIRON
+ option.
+ .Sh FILES
+-.Bl -tag -width ~/.telnetrc -compact
++.Bl -tag -width /etc/telnetrc -compact
++.It Pa /etc/telnetrc
++global telnet startup values
+ .It Pa ~/.telnetrc
+ user customized telnet startup values
+ .El
+diff --git a/telnet/telnet.cc b/telnet/telnet.cc
+index 4fc3b1f..7eca811 100644
+--- a/telnet/telnet.cc
++++ b/telnet/telnet.cc
+@@ -88,7 +88,8 @@ char	do_dont_resp[256];
+ char	will_wont_resp[256];
+ 
+ int
+-eight = 0,
++  eight = 3,
++  binary = 0,
+   autologin = 0,	/* Autologin anyone? */
+   skiprc = 0,
+   connected,
+@@ -639,14 +640,14 @@ static const char *gettermname(void) {
+   if (resettermname) {
+     resettermname = 0;
+     tname = env_getvalue("TERM", 0);
+-    if (!tname || my_setupterm(tname, 1, &err)) {
++    if (!tname /* || my_setupterm(tname, 1, &err) */) {
+       termbuf[0] = 0;
+       tname = "UNKNOWN";
+     }
+     mklist(termbuf, tname, termtypes);
+     next = 0;
+   }
+-  if (next==termtypes.num()) next = 0;
++  if (next==termtypes.num()-1) next = 0;
+   return termtypes[next++];
+ }
+ /*
+@@ -681,7 +682,7 @@ static void suboption(void) {
+       }
+ #endif /* TN3270 */
+       name = gettermname();
+-      netoring.printf("%c%c%c%c%s%c%c", IAC, SB, TELOPT_TTYPE,
++      netoring.xprintf("%c%c%c%c%s%c%c", IAC, SB, TELOPT_TTYPE,
+ 		      TELQUAL_IS, name, IAC, SE);
+     }
+     break;
+@@ -693,7 +694,7 @@ static void suboption(void) {
+     if (SB_GET() == TELQUAL_SEND) {
+       long oospeed, iispeed;
+       TerminalSpeeds(&iispeed, &oospeed);
+-      netoring.printf("%c%c%c%c%ld,%ld%c%c", IAC, SB, TELOPT_TSPEED, 
++      netoring.xprintf("%c%c%c%c%ld,%ld%c%c", IAC, SB, TELOPT_TSPEED, 
+ 		      TELQUAL_IS, oospeed, iispeed, IAC, SE);
+     }
+     break;
+@@ -780,7 +781,7 @@ static void suboption(void) {
+ 	send_wont(TELOPT_XDISPLOC, 1);
+ 	break;
+       }
+-      netoring.printf("%c%c%c%c%s%c%c", IAC, SB, TELOPT_XDISPLOC,
++      netoring.xprintf("%c%c%c%c%s%c%c", IAC, SB, TELOPT_XDISPLOC,
+ 		      TELQUAL_IS, dp, IAC, SE);
+     }
+     break;
+@@ -798,7 +799,7 @@ void lm_will(unsigned char *cmd, int len) {
+     return;
+   }
+   
+-  netoring.printf("%c%c%c%c%c%c%c", IAC, SB, TELOPT_LINEMODE, 
++  netoring.xprintf("%c%c%c%c%c%c%c", IAC, SB, TELOPT_LINEMODE, 
+ 		  DONT, cmd[0], IAC, SE);
+ }
+ 
+@@ -815,7 +816,7 @@ void lm_do(unsigned char *cmd, int len) {
+     /*@*/	printf("lm_do: no command!!!\n");	/* Should not happen... */
+     return;
+   }
+-  netoring.printf("%c%c%c%c%c%c%c", IAC, SB, TELOPT_LINEMODE, 
++  netoring.xprintf("%c%c%c%c%c%c%c", IAC, SB, TELOPT_LINEMODE, 
+ 		  WONT, cmd[0], IAC, SE);
+ }
+ 
+@@ -838,7 +839,7 @@ void lm_mode(unsigned char *cmd, int len, int init) {
+     k |= MODE_ACK;
+   }
+   
+-  netoring.printf("%c%c%c%c%c%c%c", IAC, SB, TELOPT_LINEMODE, LM_MODE,
++  netoring.xprintf("%c%c%c%c%c%c%c", IAC, SB, TELOPT_LINEMODE, LM_MODE,
+ 		  k, IAC, SE);
+   
+   setconnmode(0);	/* set changed mode */
+@@ -933,11 +934,11 @@ void slc_mode_import(int def) {
+ 
+ void slc_import(int def) {
+   if (def) {
+-    netoring.printf("%c%c%c%c%c%c%c%c%c", IAC, SB, TELOPT_LINEMODE,
++    netoring.xprintf("%c%c%c%c%c%c%c%c%c", IAC, SB, TELOPT_LINEMODE,
+ 		    LM_SLC, 0, SLC_DEFAULT, 0, IAC, SE);
+   }
+   else {
+-    netoring.printf("%c%c%c%c%c%c%c%c%c", IAC, SB, TELOPT_LINEMODE,
++    netoring.xprintf("%c%c%c%c%c%c%c%c%c", IAC, SB, TELOPT_LINEMODE,
+ 		    LM_SLC, 0, SLC_VARIABLE, 0, IAC, SE);
+   }
+ }
+@@ -1050,6 +1051,7 @@ void slc_check(void) {
+ 
+ 
+ unsigned char slc_reply[128];
++unsigned char const * const slc_reply_eom = &slc_reply[sizeof(slc_reply)];
+ unsigned char *slc_replyp;
+ 
+ void slc_start_reply(void) {
+@@ -1061,6 +1063,14 @@ void slc_start_reply(void) {
+ }
+ 
+ void slc_add_reply(int func, int flags, int value) {
++  /* A sequence of up to 6 bytes my be written for this member of the SLC
++   * suboption list by this function.  The end of negotiation command,
++   * which is written by slc_end_reply(), will require 2 additional
++   * bytes.  Do not proceed unless there is sufficient space for these
++   * items.
++   */
++  if (&slc_replyp[6+2] > slc_reply_eom)
++    return;
+   if ((*slc_replyp++ = func) == IAC)
+     *slc_replyp++ = IAC;
+   if ((*slc_replyp++ = flags) == IAC)
+@@ -1142,6 +1152,7 @@ void env_opt(unsigned char *buf, int len) {
+   }
+ }
+ 
++/* OPT_REPLY_SIZE must be a multiple of 2. */
+ #define	OPT_REPLY_SIZE	256
+ unsigned char *opt_reply;
+ unsigned char *opt_replyp;
+@@ -1173,6 +1184,7 @@ void env_opt_start_info(void) {
+ 
+ void env_opt_add(const char *ep) {
+   const char *vp;
++  const unsigned char *tp;
+   unsigned char c;
+   
+   if (opt_reply == NULL)		/*XXX*/
+@@ -1185,11 +1197,12 @@ void env_opt_add(const char *ep) {
+     return;
+   }
+   vp = env_getvalue(ep, 1);
+-  if (opt_replyp + (vp ? strlen(vp) : 0) + strlen(ep) + 6 > opt_replyend)
++  tp = opt_replyp + (vp ? strlen(vp) * 2 : 0) + strlen(ep) * 2 + 6;
++  if (tp > opt_replyend)
+     {
+       register int len;
+-      opt_replyend += OPT_REPLY_SIZE;
+-      len = opt_replyend - opt_reply;
++      len = ((tp - opt_reply) + OPT_REPLY_SIZE - 1) & ~(OPT_REPLY_SIZE - 1);
++      opt_replyend = opt_reply + len;
+       opt_reply = (unsigned char *)realloc(opt_reply, len);
+       if (opt_reply == NULL) {
+ 	/*@*/			printf("env_opt_add: realloc() failed!!!\n");
+@@ -1740,8 +1753,8 @@ void telnet(const char * /*user*/) {
+     send_do(TELOPT_STATUS, 1);
+     if (env_getvalue("DISPLAY", 0))
+       send_will(TELOPT_XDISPLOC, 1);
+-    if (eight)
+-      tel_enter_binary(eight);
++    if (binary)
++      tel_enter_binary(binary);
+   }
+ #endif /* !defined(TN3270) */
+   
+diff --git a/telnet/terminal.cc b/telnet/terminal.cc
+index 9eb47ae..764f18f 100644
+--- a/telnet/terminal.cc
++++ b/telnet/terminal.cc
+@@ -45,6 +45,8 @@ char terminal_rcsid[] =
+ #include <signal.h>
+ #include <errno.h>
+ #include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
+ 
+ #include "ring.h"
+ #include "defines.h"
+@@ -155,9 +157,11 @@ int getconnmode(void) {
+     if (localflow)
+ 	mode |= MODE_FLOW;
+ 
+-    if (my_want_state_is_will(TELOPT_BINARY))
++    if ((eight & 1) || my_want_state_is_will(TELOPT_BINARY))
+ 	mode |= MODE_INBIN;
+ 
++    if (eight & 2)
++	mode |= MODE_OUT8;
+     if (his_want_state_is_will(TELOPT_BINARY))
+ 	mode |= MODE_OUTBIN;
+ 
+@@ -449,10 +453,13 @@ void TerminalNewMode(int f)
+ 		// breaks SunOS.
+ 	 	tmp_tc.c_iflag |= ISTRIP;
+ 	}
+-	if (f & MODE_OUTBIN) {
++	if (f & (MODE_OUTBIN|MODE_OUT8)) {
+ 		tmp_tc.c_cflag &= ~(CSIZE|PARENB);
+ 		tmp_tc.c_cflag |= CS8;
+-		tmp_tc.c_oflag &= ~OPOST;
++		if (f & MODE_OUTBIN)
++			tmp_tc.c_oflag &= ~OPOST;
++		else
++			tmp_tc.c_oflag |= OPOST;
+ 	} else {
+ 		tmp_tc.c_cflag &= ~(CSIZE|PARENB);
+ 		tmp_tc.c_cflag |= old_tc.c_cflag & (CSIZE|PARENB);
+@@ -468,7 +475,7 @@ void TerminalNewMode(int f)
+ 
+ #ifdef	SIGINFO
+ 	signal(SIGINFO, ayt);
+-#endif	SIGINFO
++#endif	/* SIGINFO */
+ 
+ #if defined(NOKERNINFO)
+ 	tmp_tc.c_lflag |= NOKERNINFO;
+@@ -504,7 +511,7 @@ void TerminalNewMode(int f)
+ 
+ #ifdef	SIGINFO
+ 	signal(SIGINFO, ayt_status);
+-#endif	SIGINFO
++#endif	/* SIGINFO */
+ 
+ #ifdef	SIGTSTP
+ 	signal(SIGTSTP, SIG_DFL);
+diff --git a/telnet/utilities.cc b/telnet/utilities.cc
+index 0448f0a..66839ab 100644
+--- a/telnet/utilities.cc
++++ b/telnet/utilities.cc
+@@ -47,6 +47,8 @@ char util_rcsid[] =
+ #include <sys/socket.h>
+ #include <unistd.h>
+ #include <ctype.h>
++#include <string.h>
++#include <stdlib.h>
+ 
+ #include "ring.h"
+ #include "defines.h"
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/Warning-fix-in-the-step-of-install.patch b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/Warning-fix-in-the-step-of-install.patch
new file mode 100644
index 0000000..b9a98f1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/Warning-fix-in-the-step-of-install.patch
@@ -0,0 +1,41 @@
+From 31362e4c0d02b4a2b952ad0dd32acfb573c442f3 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 28 Nov 2014 07:17:40 +0900
+Subject: [PATCH 2/2] WARNING Fix and modify "CFLAGS"
+
+WARNING: QA Issue: File '/usr/sbin/in.telnetd' from netkit-telnet was 
+already stripped, this will prevent future debugging! [already-stripped]
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ telnetd/Makefile | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/telnetd/Makefile b/telnetd/Makefile
+index 72650b4..a4cf9fa 100644
+--- a/telnetd/Makefile
++++ b/telnetd/Makefile
+@@ -9,7 +9,8 @@ include ../MRULES
+ # take out -DPARANOID_TTYS.
+ 
+ CFLAGS += '-DISSUE_FILE="/etc/issue.net"' -DPARANOID_TTYS \
+-	   -DNO_REVOKE -DKLUDGELINEMODE -DDIAGNOSTICS
++	   -DNO_REVOKE -DKLUDGELINEMODE -DDIAGNOSTICS \
++	   -DLOGIN_WRAPPER=\"/${libdir}/telnetlogin\"
+ # LIBS += $(LIBTERMCAP)
+ 
+ OBJS = telnetd.o state.o termstat.o slc.o sys_term.o utility.o \
+@@ -27,7 +28,7 @@ $(OBJS): defs.h ext.h pathnames.h telnetd.h logwtmp.h logout.h setproctitle.h
+ telnetd.o: ../version.h
+ 
+ install: telnetd
+-	install -s -m$(DAEMONMODE) telnetd $(INSTALLROOT)$(SBINDIR)/in.telnetd
++	install -m$(DAEMONMODE) telnetd $(INSTALLROOT)$(SBINDIR)/in.telnetd
+ 	install -m$(MANMODE) issue.net.5 $(INSTALLROOT)$(MANDIR)/man5/
+ 	install -m$(MANMODE) telnetd.8 $(INSTALLROOT)$(MANDIR)/man8/in.telnetd.8
+ 	ln -sf in.telnetd.8 $(INSTALLROOT)$(MANDIR)/man8/telnetd.8
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/cross-compile.patch b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/cross-compile.patch
new file mode 100644
index 0000000..b3fe36b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/cross-compile.patch
@@ -0,0 +1,48 @@
+To support the cross-compile
+
+Upstream-Status: Pending
+
+make the configure to support the cross-compile, by only to compile the
+target, and not to run it
+
+Roy Li <rongqing.li@windriver.com>
+Index: netkit-telnet-0.17/configure
+===================================================================
+--- netkit-telnet-0.17.orig/configure	2008-11-23 22:01:26.000000000 +0100
++++ netkit-telnet-0.17/configure	2008-11-23 22:05:00.000000000 +0100
+@@ -94,7 +94,7 @@
+     echo -n 'Checking if C compiler works... '
+     if (
+           $CC __conftest.c -o __conftest || exit 1
+-          ./__conftest || exit 1
++          # Idiots belong shot! ./__conftest || exit 1
+        ) >/dev/null 2>&1; then
+          echo 'yes'
+      else
+@@ -141,7 +141,7 @@
+     echo -n 'Checking if C++ compiler works... '
+     if (
+           $CXX __conftest.cc -o __conftest || exit 1
+-          ./__conftest || exit 1
++          # Iditios belong shot! ./__conftest || exit 1
+        ) >/dev/null 2>&1; then
+          echo 'yes'
+      else
+@@ -284,7 +284,7 @@
+ else
+     if (
+           $CXX $CXXFLAGS -D__USE_BSD_SIGNAL __conftest.cc  -o __conftest || exit 1
+-          ./__conftest || exit 1
++          # running still does not work./__conftest || exit 1
+        ) >/dev/null 2>&1; then
+         echo '-D__USE_BSD_SIGNAL'
+         CFLAGS="$CFLAGS -D__USE_BSD_SIGNAL"
+@@ -501,7 +501,7 @@
+ EOF
+ if (
+       $CXX $CXXFLAGS  __conftest.cc $LIBBSD -o __conftest || exit 1
+-      ./__conftest || exit 1
++      # argh! morons!./__conftest || exit 1
+    ) >/dev/null 2>&1; then
+     echo 'ok'
+ else
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/telnet-xinetd b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/telnet-xinetd
new file mode 100644
index 0000000..12204c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/telnet-xinetd
@@ -0,0 +1,14 @@
+# default: on
+# description: The telnet server serves telnet sessions; it uses \
+#	unencrypted username/password pairs for authentication.
+service telnet
+{
+	flags		= REUSE
+	socket_type	= stream
+	wait		= no
+	user		= root
+	server		= /usr/sbin/in.telnetd
+	log_on_failure	+= USERID
+	disable		= yes
+}
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb
new file mode 100644
index 0000000..9438adc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb
@@ -0,0 +1,59 @@
+DESCRIPTION = "netkit-telnet includes the telnet daemon and client."
+SECTION = "net"
+DEPENDS = "ncurses"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://telnet/telnet.cc;beginline=2;endline=3;md5=780868e7b566313e70cb701560ca95ef"
+
+SRC_URI = "ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/${BP}.tar.gz \
+    file://To-aviod-buffer-overflow-in-telnet.patch \
+    file://Warning-fix-in-the-step-of-install.patch \
+    file://telnet-xinetd \
+    file://cross-compile.patch \
+"
+
+EXTRA_OEMAKE = "INSTALLROOT=${D} SBINDIR=${sbindir} DAEMONMODE=755 \
+    MANMODE=644 MANDIR=${mandir}"
+
+do_configure () {
+    ./configure --prefix=${prefix}
+    sed -e 's#^CFLAGS=\(.*\)$#CFLAGS= -D_GNU_SOURCE \1#' \
+        -e 's#^CXXFLAGS=\(.*\)$#CXXFLAGS= -D_GNU_SOURCE \1#' \
+        -e 's#^LDFLAGS=.*$#LDFLAGS= ${LDFLAGS}#' \
+        -i MCONFIG
+}
+
+do_compile () {
+    oe_runmake 'CC=${CC}' 'LD=${LD}' 'LDFLAGS=${LDFLAGS}' SUB=telnet
+    oe_runmake 'CC=${CC}' 'LD=${LD}' 'LDFLAGS=${LDFLAGS}' LIBS=-lutil SUB=telnetd
+    oe_runmake 'CC=${CC}' 'LD=${LD}' 'LDFLAGS=${LDFLAGS}' SUB=telnetlogin
+}
+
+do_install () {
+    install -d ${D}${bindir}
+    install -m 0755 telnet/telnet ${D}${bindir}/telnet.${PN}
+    install -d ${D}${sbindir}
+    install -d ${D}${mandir}/man1
+    install -d ${D}${mandir}/man5
+    install -d ${D}${mandir}/man8
+    oe_runmake SUB=telnetd install
+    rm -rf ${D}${mandir}/man1
+    install -D -m 4750 ${B}/telnetlogin/telnetlogin ${D}/${libdir}/telnetlogin
+    # fix up hardcoded paths
+    sed -i -e 's,/usr/sbin/,${sbindir}/,' ${WORKDIR}/telnet-xinetd
+    install -d  ${D}/etc/xinetd.d/
+    install -p -m644 ${WORKDIR}/telnet-xinetd ${D}/etc/xinetd.d/telnet
+}
+
+pkg_postinst_${PN} () {
+#!/bin/sh
+    update-alternatives --install ${bindir}/telnet telnet telnet.${PN} 100
+}
+
+pkg_prerm_${PN} () {
+#!/bin/sh
+    update-alternatives --remove telnet telnet.${PN} 100
+}
+
+SRC_URI[md5sum] = "d6beabaaf53fe6e382c42ce3faa05a36"
+SRC_URI[sha256sum] = "9c80d5c7838361a328fb6b60016d503def9ce53ad3c589f3b08ff71a2bb88e00"
+FILES_${PN} += "${sbindir}/in.* ${libdir}/* ${sysconfdir}/xinetd.d/*"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-tftp/netkit-tftp/tftp.conf b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-tftp/netkit-tftp/tftp.conf
new file mode 100644
index 0000000..7bc6ca9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-tftp/netkit-tftp/tftp.conf
@@ -0,0 +1,11 @@
+service tftp
+{
+    disable        = no
+    socket_type    = dgram
+    port           = 69
+    protocol       = udp
+    wait           = yes
+    user           = nobody
+    server         = /usr/sbin/in.tftpd
+    server_args    = /tftpboot
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-tftp/netkit-tftp_0.17.bb b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-tftp/netkit-tftp_0.17.bb
new file mode 100644
index 0000000..67a541d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-netkit/netkit-tftp/netkit-tftp_0.17.bb
@@ -0,0 +1,54 @@
+SUMMARY = "tftp - Trivial file transfer protocol client"
+SECTION = "net"
+LICENSE = "BSD-4-Clause"
+DEPENDS = "tcp-wrappers"
+
+LIC_FILES_CHKSUM = "file://tftp/tftp.c;beginline=2;endline=3;md5=84d2cfe1e60863a7d82648734ba4d30c"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/n/${BPN}/${BPN}_${PV}.orig.tar.gz;name=archive \
+    ${DEBIAN_MIRROR}/main/n/${BPN}/${BPN}_${PV}-18.diff.gz;name=patch18 \
+    file://tftp.conf \
+"
+
+SRC_URI[archive.md5sum] = "b7262c798e2ff50e29c2ff50dfd8d6a8"
+SRC_URI[archive.sha256sum] = "3a43c0010d4e61f412563fd83769d4667d8b8e82903526d21cb9205fe55ad14d"
+SRC_URI[patch18.md5sum] = "cb29e7a33dd85105ba6e6ec4f971e42c"
+SRC_URI[patch18.sha256sum] = "092437d27b4fa88c044ef6290372fee5ce06d223607f0e22a6e527065c8930e7"
+
+inherit autotools-brokensep
+
+do_configure () {
+    ./configure --prefix=${prefix}
+    echo "CFLAGS=${CFLAGS}" > MCONFIG
+}
+
+do_compile () {
+    oe_runmake 'CC=${CC}' 'LD=${LD}' 'LDFLAGS=${LDFLAGS}' 'CFLAGS=${CFLAGS}'
+}
+
+do_install () {
+    install -d ${D}${bindir}
+    install -d ${D}${sbindir}
+    install -d ${D}${mandir}/man1
+    install -d ${D}${mandir}/man8
+    install -d ${D}${sysconfdir}/xinetd.d
+
+    sed -i 's/install -s/install/' tftp/Makefile
+    sed -i 's/install -s/install/' tftpd/Makefile
+
+    oe_runmake 'INSTALLROOT=${D}' 'BINMODE=0755' \
+    'DAEMONMODE=0755' 'MANMODE=0644' \
+    'BINDIR=${bindir}' 'SBINDIR=${sbindir}' \
+    'MANDIR=${mandir}' install
+
+    install ${WORKDIR}/tftp.conf ${D}/${sysconfdir}/xinetd.d/tftp
+}
+
+PACKAGES = "${PN}-client ${PN}-server ${PN}-doc ${BPN}-dbg"
+FILES_${PN}-client = "${bindir}/*"
+FILES_${PN}-server = "${sbindir}/* ${sysconfdir}/xinetd.d/*"
+FILES_${PN}-doc = "${mandir}"
+FILES_${PN}-dbg = "${prefix}/src/debug \
+    ${bindir}/.debug ${sbindir}/.debug"
+
+RDEPENDS_${PN}-server = "tcp-wrappers xinetd"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/accel-ppp/accel-ppp_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/accel-ppp/accel-ppp_git.bb
new file mode 100644
index 0000000..10e98a4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/accel-ppp/accel-ppp_git.bb
@@ -0,0 +1,42 @@
+SUMMARY = "ACCEL-PPP is a high performance VPN server application for linux"
+HOMEPAGE = "http://sourceforge.net/apps/trac/accel-ppp/wiki"
+SECTION = "net"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+DEPENDS = "openssl libpcre"
+
+inherit cmake
+
+PR = "r1"
+PV = "1.7.3+git"
+
+SRCREV = "4acfa46c321a344b9a6ce4128e72d1e02828d8a0"
+SRC_URI = "git://accel-ppp.git.sourceforge.net/gitroot/accel-ppp/accel-ppp;branch=1.7"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE = " \
+                 -DBUILD_DRIVER=FALSE \
+                 -DCMAKE_INSTALL_PREFIX=${prefix} \
+                 -DCMAKE_BUILD_TYPE=Release \
+                 -DLOG_PGSQL=FALSE \
+                 -DRADIUS=FALSE \
+                 -DNETSNMP=FALSE \
+"
+FILES_${PN}-dbg += "/usr/lib/${BPN}/.debug/*"
+
+PACKAGES =+ "${PN}-libs"
+FILES_${PN}-libs = "${libdir}/${BPN}/*.so /usr/lib/${BPN}/*.so"
+INSANE_SKIP_${PN}-libs = "dev-so"
+RDEPENDS_${PN} += "${PN}-libs"
+
+do_install_prepend() {
+    cmlist=`find ${S} -name CMakeLists.txt`
+    for file in $cmlist; do
+        sed -i -e "s:LIBRARY DESTINATION lib/accel-ppp:LIBRARY DESTINATION ${baselib}/accel-ppp:g" \
+               -e "s:\${CMAKE_INSTALL_PREFIX}/lib/accel-ppp:\${CMAKE_INSTALL_PREFIX}/${baselib}/accel-ppp:g" \
+               $cmlist
+    done
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/init b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/init
new file mode 100755
index 0000000..2b8fe18
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/init
@@ -0,0 +1,66 @@
+#! /bin/sh
+# /etc/init.d/snmpd: start snmp daemon.
+
+. /etc/init.d/functions
+
+test -x /usr/sbin/snmpd || exit 0
+test -x /usr/sbin/snmptrapd || exit 0
+
+# Defaults
+export MIBDIRS=/usr/share/snmp/mibs
+SNMPDRUN=yes
+SNMPDOPTS='-Lsd -Lf /dev/null -p /var/run/snmpd.pid'
+TRAPDRUN=no
+TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid'
+PIDFILE=/var/run/snmpd.pid
+SPIDFILE=/var/run/snmptrapd.pid
+
+# Reads config file if exists (will override defaults above)
+[ -r /etc/default/snmpd ] && . /etc/default/snmpd
+
+case "$1" in
+  start)
+    echo -n "Starting network management services:"
+    if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf -a ! -f "$PIDFILE" ]; then
+	start-stop-daemon -o --start --quiet --name snmpd --pidfile "$PIDFILE" \
+		--exec /usr/sbin/snmpd -- $SNMPDOPTS
+	echo -n " snmpd"
+    fi
+    if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf -a ! -f "$SPIDFILE" ]; then
+	start-stop-daemon -o --start --quiet --name snmptrapd  --pidfile "$SPIDFILE" \
+		 --exec /usr/sbin/snmptrapd -- $TRAPDOPTS
+	echo -n " snmptrapd"
+    fi
+    echo "."
+
+    test ! -x /sbin/restorecon || /sbin/restorecon -FR /var/lib/net-snmp
+    ;;
+  stop)
+    echo -n "Stopping network management services:"
+    if [ -f  "$PIDFILE" ] ; then
+	start-stop-daemon -o --stop  --quiet --pidfile $PIDFILE --name snmpd
+    fi
+    echo -n " snmpd"
+    if [ -f "$SPIDFILE" ] ; then
+	start-stop-daemon -o --stop  --quiet --pidfile $SPIDFILE --name snmptrapd
+	rm -rf $SPIDFILE
+    fi
+    echo -n " snmptrapd"
+    echo "."
+    ;;
+  status)
+    status /usr/sbin/snmpd;
+    exit $?
+    ;;
+  restart|reload|force-reload)
+    $0 stop
+    # Allow the daemons time to exit completely.
+    sleep 2
+    $0 start
+    ;;
+  *)
+    echo "Usage: /etc/init.d/snmpd {start|stop|status|restart|reload|force-reload}"
+    exit 1
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/snmpd.conf b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/snmpd.conf
new file mode 100644
index 0000000..728171c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/snmpd.conf
@@ -0,0 +1,422 @@
+###############################################################################
+#
+# EXAMPLE.conf:
+#   An example configuration file for configuring the ucd-snmp snmpd agent.
+#
+###############################################################################
+#
+# This file is intended to only be an example.  If, however, you want
+# to use it, it should be placed in /etc/snmp/snmpd.conf.
+# When the snmpd agent starts up, this is where it will look for it.
+#
+# You might be interested in generating your own snmpd.conf file using
+# the "snmpconf" program (perl script) instead.  It's a nice menu
+# based interface to writing well commented configuration files.  Try it!
+#
+# Note: This file is automatically generated from EXAMPLE.conf.def.
+# Do NOT read the EXAMPLE.conf.def file! Instead, after you have run
+# configure & make, and then make sure you read the EXAMPLE.conf file
+# instead, as it will tailor itself to your configuration.
+
+# All lines beginning with a '#' are comments and are intended for you
+# to read.  All other lines are configuration commands for the agent.
+
+#
+# PLEASE: read the snmpd.conf(5) manual page as well!
+#
+
+
+###############################################################################
+# Access Control
+###############################################################################
+
+# YOU SHOULD CHANGE THE "COMMUNITY" TOKEN BELOW TO A NEW KEYWORD ONLY
+# KNOWN AT YOUR SITE.  YOU *MUST* CHANGE THE NETWORK TOKEN BELOW TO
+# SOMETHING REFLECTING YOUR LOCAL NETWORK ADDRESS SPACE.
+
+# By far, the most common question I get about the agent is "why won't
+# it work?", when really it should be "how do I configure the agent to
+# allow me to access it?"
+#
+# By default, the agent responds to the "public" community for read
+# only access, if run out of the box without any configuration file in 
+# place.  The following examples show you other ways of configuring
+# the agent so that you can change the community names, and give
+# yourself write access as well.
+#
+# The following lines change the access permissions of the agent so
+# that the COMMUNITY string provides read-only access to your entire
+# NETWORK (EG: 10.10.10.0/24), and read/write access to only the
+# localhost (127.0.0.1, not its real ipaddress).
+#
+# For more information, read the FAQ as well as the snmpd.conf(5)
+# manual page.
+
+####
+# First, map the community name (COMMUNITY) into a security name
+# (local and mynetwork, depending on where the request is coming
+# from):
+
+#       sec.name  source          community
+com2sec paranoid  default         public
+#com2sec readonly  default         public
+#com2sec readwrite default         private
+
+####
+# Second, map the security names into group names:
+
+#             	sec.model  sec.name
+group MyROSystem v1        paranoid
+group MyROSystem v2c       paranoid
+group MyROSystem usm       paranoid
+group MyROGroup v1         readonly
+group MyROGroup v2c        readonly
+group MyROGroup usm        readonly
+group MyRWGroup v1         readwrite
+group MyRWGroup v2c        readwrite
+group MyRWGroup usm        readwrite
+
+####
+# Third, create a view for us to let the groups have rights to:
+
+#           incl/excl subtree                          mask
+view all    included  .1                               80
+view system included  .iso.org.dod.internet.mgmt.mib-2.system
+
+####
+# Finally, grant the 2 groups access to the 1 view with different
+# write permissions:
+
+#                context sec.model sec.level match  read   write  notif
+access MyROSystem ""     any       noauth    exact  system none   none
+access MyROGroup ""      any       noauth    exact  all    none   none
+access MyRWGroup ""      any       noauth    exact  all    all    none
+
+# -----------------------------------------------------------------------------
+
+
+###############################################################################
+# System contact information
+#
+
+# It is also possible to set the sysContact and sysLocation system
+# variables through the snmpd.conf file.  **PLEASE NOTE** that setting
+# the value of these objects here makes these objects READ-ONLY
+# (regardless of any access control settings).  Any attempt to set the
+# value of an object whose value is given here will fail with an error
+# status of notWritable.
+
+syslocation Unknown (configure /etc/snmp/snmpd.local.conf)
+syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)
+
+# Example output of snmpwalk:
+#   % snmpwalk -v 1 -c public localhost system
+#   system.sysDescr.0 = "SunOS name sun4c"
+#   system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.sunos4
+#   system.sysUpTime.0 = Timeticks: (595637548) 68 days, 22:32:55
+#   system.sysContact.0 = "Me <me@somewhere.org>"
+#   system.sysName.0 = "name"
+#   system.sysLocation.0 = "Right here, right now."
+#   system.sysServices.0 = 72
+
+
+# -----------------------------------------------------------------------------
+
+
+###############################################################################
+# Process checks.
+#
+#  The following are examples of how to use the agent to check for
+#  processes running on the host.  The syntax looks something like:
+#
+#  proc NAME [MAX=0] [MIN=0]
+#
+#  NAME:  the name of the process to check for.  It must match
+#         exactly (ie, http will not find httpd processes).
+#  MAX:   the maximum number allowed to be running.  Defaults to 0.
+#  MIN:   the minimum number to be running.  Defaults to 0.
+
+#
+#  Examples:
+#
+
+#  Make sure mountd is running
+#proc mountd
+
+#  Make sure there are no more than 4 ntalkds running, but 0 is ok too.
+#proc ntalkd 4
+
+#  Make sure at least one sendmail, but less than or equal to 10 are running.
+#proc sendmail 10 1
+
+#  A snmpwalk of the prTable would look something like this:
+# 
+# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.2
+# enterprises.ucdavis.procTable.prEntry.prIndex.1 = 1
+# enterprises.ucdavis.procTable.prEntry.prIndex.2 = 2
+# enterprises.ucdavis.procTable.prEntry.prIndex.3 = 3
+# enterprises.ucdavis.procTable.prEntry.prNames.1 = "mountd"
+# enterprises.ucdavis.procTable.prEntry.prNames.2 = "ntalkd"
+# enterprises.ucdavis.procTable.prEntry.prNames.3 = "sendmail"
+# enterprises.ucdavis.procTable.prEntry.prMin.1 = 0
+# enterprises.ucdavis.procTable.prEntry.prMin.2 = 0
+# enterprises.ucdavis.procTable.prEntry.prMin.3 = 1
+# enterprises.ucdavis.procTable.prEntry.prMax.1 = 0
+# enterprises.ucdavis.procTable.prEntry.prMax.2 = 4
+# enterprises.ucdavis.procTable.prEntry.prMax.3 = 10
+# enterprises.ucdavis.procTable.prEntry.prCount.1 = 0
+# enterprises.ucdavis.procTable.prEntry.prCount.2 = 0
+# enterprises.ucdavis.procTable.prEntry.prCount.3 = 1
+# enterprises.ucdavis.procTable.prEntry.prErrorFlag.1 = 1
+# enterprises.ucdavis.procTable.prEntry.prErrorFlag.2 = 0
+# enterprises.ucdavis.procTable.prEntry.prErrorFlag.3 = 0
+# enterprises.ucdavis.procTable.prEntry.prErrMessage.1 = "No mountd process running."
+# enterprises.ucdavis.procTable.prEntry.prErrMessage.2 = ""
+# enterprises.ucdavis.procTable.prEntry.prErrMessage.3 = ""
+# enterprises.ucdavis.procTable.prEntry.prErrFix.1 = 0
+# enterprises.ucdavis.procTable.prEntry.prErrFix.2 = 0
+# enterprises.ucdavis.procTable.prEntry.prErrFix.3 = 0
+#
+#  Note that the errorFlag for mountd is set to 1 because one is not
+#  running (in this case an rpc.mountd is, but thats not good enough),
+#  and the ErrMessage tells you what's wrong.  The configuration
+#  imposed in the snmpd.conf file is also shown.  
+# 
+#  Special Case:  When the min and max numbers are both 0, it assumes
+#  you want a max of infinity and a min of 1.
+#
+
+
+# -----------------------------------------------------------------------------
+
+
+###############################################################################
+# Executables/scripts
+#
+
+#
+#  You can also have programs run by the agent that return a single
+#  line of output and an exit code.  Here are two examples.
+#
+#  exec NAME PROGRAM [ARGS ...]
+#
+#  NAME:     A generic name.
+#  PROGRAM:  The program to run.  Include the path!
+#  ARGS:     optional arguments to be passed to the program
+
+# a simple hello world
+#exec echotest /bin/echo hello world
+
+# Run a shell script containing:
+#
+# #!/bin/sh
+# echo hello world
+# echo hi there
+# exit 35
+#
+# Note:  this has been specifically commented out to prevent
+# accidental security holes due to someone else on your system writing
+# a /tmp/shtest before you do.  Uncomment to use it.
+#
+#exec shelltest /bin/sh /tmp/shtest
+
+# Then, 
+# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.8
+# enterprises.ucdavis.extTable.extEntry.extIndex.1 = 1
+# enterprises.ucdavis.extTable.extEntry.extIndex.2 = 2
+# enterprises.ucdavis.extTable.extEntry.extNames.1 = "echotest"
+# enterprises.ucdavis.extTable.extEntry.extNames.2 = "shelltest"
+# enterprises.ucdavis.extTable.extEntry.extCommand.1 = "/bin/echo hello world"
+# enterprises.ucdavis.extTable.extEntry.extCommand.2 = "/bin/sh /tmp/shtest"
+# enterprises.ucdavis.extTable.extEntry.extResult.1 = 0
+# enterprises.ucdavis.extTable.extEntry.extResult.2 = 35
+# enterprises.ucdavis.extTable.extEntry.extOutput.1 = "hello world."
+# enterprises.ucdavis.extTable.extEntry.extOutput.2 = "hello world."
+# enterprises.ucdavis.extTable.extEntry.extErrFix.1 = 0
+# enterprises.ucdavis.extTable.extEntry.extErrFix.2 = 0
+
+# Note that the second line of the /tmp/shtest shell script is cut
+# off.  Also note that the exit status of 35 was returned.
+
+# -----------------------------------------------------------------------------
+
+
+###############################################################################
+# disk checks
+#
+
+# The agent can check the amount of available disk space, and make
+# sure it is above a set limit.  
+
+# disk PATH [MIN=DEFDISKMINIMUMSPACE]
+#
+# PATH:  mount path to the disk in question.
+# MIN:   Disks with space below this value will have the Mib's errorFlag set.
+#        Default value = DEFDISKMINIMUMSPACE.
+
+# Check the / partition and make sure it contains at least 10 megs.
+
+#disk / 10000
+
+# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.9
+# enterprises.ucdavis.diskTable.dskEntry.diskIndex.1 = 0
+# enterprises.ucdavis.diskTable.dskEntry.diskPath.1 = "/" Hex: 2F 
+# enterprises.ucdavis.diskTable.dskEntry.diskDevice.1 = "/dev/dsk/c201d6s0"
+# enterprises.ucdavis.diskTable.dskEntry.diskMinimum.1 = 10000
+# enterprises.ucdavis.diskTable.dskEntry.diskTotal.1 = 837130
+# enterprises.ucdavis.diskTable.dskEntry.diskAvail.1 = 316325
+# enterprises.ucdavis.diskTable.dskEntry.diskUsed.1 = 437092
+# enterprises.ucdavis.diskTable.dskEntry.diskPercent.1 = 58
+# enterprises.ucdavis.diskTable.dskEntry.diskErrorFlag.1 = 0
+# enterprises.ucdavis.diskTable.dskEntry.diskErrorMsg.1 = ""
+
+# -----------------------------------------------------------------------------
+
+
+###############################################################################
+# load average checks
+#
+
+# load [1MAX=DEFMAXLOADAVE] [5MAX=DEFMAXLOADAVE] [15MAX=DEFMAXLOADAVE]
+#
+# 1MAX:   If the 1 minute load average is above this limit at query
+#         time, the errorFlag will be set.
+# 5MAX:   Similar, but for 5 min average.
+# 15MAX:  Similar, but for 15 min average.
+
+# Check for loads:
+#load 12 14 14
+
+# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.10
+# enterprises.ucdavis.loadTable.laEntry.loadaveIndex.1 = 1
+# enterprises.ucdavis.loadTable.laEntry.loadaveIndex.2 = 2
+# enterprises.ucdavis.loadTable.laEntry.loadaveIndex.3 = 3
+# enterprises.ucdavis.loadTable.laEntry.loadaveNames.1 = "Load-1"
+# enterprises.ucdavis.loadTable.laEntry.loadaveNames.2 = "Load-5"
+# enterprises.ucdavis.loadTable.laEntry.loadaveNames.3 = "Load-15"
+# enterprises.ucdavis.loadTable.laEntry.loadaveLoad.1 = "0.49" Hex: 30 2E 34 39 
+# enterprises.ucdavis.loadTable.laEntry.loadaveLoad.2 = "0.31" Hex: 30 2E 33 31 
+# enterprises.ucdavis.loadTable.laEntry.loadaveLoad.3 = "0.26" Hex: 30 2E 32 36 
+# enterprises.ucdavis.loadTable.laEntry.loadaveConfig.1 = "12.00"
+# enterprises.ucdavis.loadTable.laEntry.loadaveConfig.2 = "14.00"
+# enterprises.ucdavis.loadTable.laEntry.loadaveConfig.3 = "14.00"
+# enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.1 = 0
+# enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.2 = 0
+# enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.3 = 0
+# enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.1 = ""
+# enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.2 = ""
+# enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.3 = ""
+
+# -----------------------------------------------------------------------------
+
+
+###############################################################################
+# Extensible sections.
+# 
+
+# This alleviates the multiple line output problem found in the
+# previous executable mib by placing each mib in its own mib table:
+
+# Run a shell script containing:
+#
+# #!/bin/sh
+# echo hello world
+# echo hi there
+# exit 35
+#
+# Note:  this has been specifically commented out to prevent
+# accidental security holes due to someone else on your system writing
+# a /tmp/shtest before you do.  Uncomment to use it.
+#
+# exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest
+
+# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.50
+# enterprises.ucdavis.50.1.1 = 1
+# enterprises.ucdavis.50.2.1 = "shelltest"
+# enterprises.ucdavis.50.3.1 = "/bin/sh /tmp/shtest"
+# enterprises.ucdavis.50.100.1 = 35
+# enterprises.ucdavis.50.101.1 = "hello world."
+# enterprises.ucdavis.50.101.2 = "hi there."
+# enterprises.ucdavis.50.102.1 = 0
+
+# Now the Output has grown to two lines, and we can see the 'hi
+# there.' output as the second line from our shell script.
+#
+# Note that you must alter the mib.txt file to be correct if you want
+# the .50.* outputs above to change to reasonable text descriptions.
+
+# Other ideas:
+# 
+# exec .1.3.6.1.4.1.2021.51 ps /bin/ps 
+# exec .1.3.6.1.4.1.2021.52 top /usr/local/bin/top
+# exec .1.3.6.1.4.1.2021.53 mailq /usr/bin/mailq
+
+# -----------------------------------------------------------------------------
+
+
+###############################################################################
+# Pass through control.
+# 
+
+# Usage:
+#   pass MIBOID EXEC-COMMAND
+#
+# This will pass total control of the mib underneath the MIBOID
+# portion of the mib to the EXEC-COMMAND.  
+#
+# Note:  You'll have to change the path of the passtest script to your
+# source directory or install it in the given location.
+# 
+# Example:  (see the script for details)
+#           (commented out here since it requires that you place the
+#           script in the right location. (its not installed by default))
+
+# pass .1.3.6.1.4.1.2021.255 /bin/sh /usr/local/passtest
+
+# % snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.255
+# enterprises.ucdavis.255.1 = "life the universe and everything"
+# enterprises.ucdavis.255.2.1 = 42
+# enterprises.ucdavis.255.2.2 = OID: 42.42.42
+# enterprises.ucdavis.255.3 = Timeticks: (363136200) 42 days, 0:42:42
+# enterprises.ucdavis.255.4 = IpAddress: 127.0.0.1
+# enterprises.ucdavis.255.5 = 42
+# enterprises.ucdavis.255.6 = Gauge: 42
+#
+# % snmpget -v 1 -c public localhost .1.3.6.1.4.1.2021.255.5
+# enterprises.ucdavis.255.5 = 42
+#
+# % snmpset -v 1 -c public localhost .1.3.6.1.4.1.2021.255.1 s "New string"
+# enterprises.ucdavis.255.1 = "New string"
+#
+
+# For specific usage information, see the man/snmpd.conf.5 manual page
+# as well as the local/passtest script used in the above example.
+
+###############################################################################
+# Subagent control
+#
+
+# The agent can support subagents using a number of extension mechanisms.
+# From the 4.2.1 release, AgentX support is being compiled in by default.
+# However, this is still experimental code, so should not be used on
+# critical production systems.
+#   Please see the file README.agentx for more details.
+#
+# If having read, marked, learnt and inwardly digested this information,
+# you decide that you do wish to make use of this mechanism, simply
+# uncomment the following directive.
+#
+#  master  agentx
+#
+# I repeat - this is *NOT* regarded as suitable for front-line production
+# systems, though it is probably stable enough for day-to-day use.
+# Probably.
+#
+# No refunds will be given.
+
+###############################################################################
+# Further Information
+#
+#  See the snmpd.conf manual page, and the output of "snmpd -H".
+#  MUCH more can be done with the snmpd.conf than is shown as an
+#  example here.
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/snmptrapd.conf b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/snmptrapd.conf
new file mode 100644
index 0000000..8d2e437
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/snmptrapd.conf
@@ -0,0 +1,18 @@
+###############################################################################
+#
+# EXAMPLE.conf:
+#   An example configuration file for configuring the ucd-snmp snmptrapd agent.
+#
+###############################################################################
+#
+# This file is intended to only be an example.  If, however, you want
+# to use it, it should be placed in /etc/snmp/snmptrapd.conf.
+# When the snmptrapd agent starts up, this is where it will look for it.
+#
+# All lines beginning with a '#' are comments and are intended for you
+# to read.  All other lines are configuration commands for the agent.
+
+#
+# PLEASE: read the snmptrapd.conf(5) manual page as well!
+#
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_headers-Error-Fix.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_headers-Error-Fix.patch
new file mode 100644
index 0000000..c6401fe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_headers-Error-Fix.patch
@@ -0,0 +1,37 @@
+From 261a22096c79f8e6ef7b387514a74d208e4e5945 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 21 Aug 2015 18:23:13 +0900
+Subject: [PATCH] config_os_headers: Error Fix
+
+ERROR: This autoconf log indicates errors, it looked at host include
+and/or library paths while determining system capabilities.
+cc1: warning: include location "/usr/local/include" is unsafe for cross-compilation [-Wpoison-system-directories]
+conftest.c:168:17: fatal error: pkg.h: No such file or directory
+ #include <pkg.h>
+                 ^
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ configure.d/config_os_headers | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers
+index 708aa09..0df32ca 100644
+--- a/configure.d/config_os_headers
++++ b/configure.d/config_os_headers
+@@ -482,8 +482,8 @@ then
+     unset ac_cv_header_pkg_h
+     netsnmp_save_CPPFLAGS="$CPPFLAGS"
+     netsnmp_save_LDFLAGS="$LDFLAGS"
+-    CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+-    LDFLAGS="$LDFLAGS -L/usr/local/lib"
++    CPPFLAGS="$CPPFLAGS"
++    LDFLAGS="$LDFLAGS"
+     AC_CHECK_HEADERS(pkg.h,
+         NETSNMP_SEARCH_LIBS(pkg_init, pkg,
+ 	    AC_DEFINE(HAVE_LIBPKG, 1, [define if you have BSD pkg-ng])))
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_libs2-Error-Fix.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_libs2-Error-Fix.patch
new file mode 100644
index 0000000..5866a95
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_libs2-Error-Fix.patch
@@ -0,0 +1,31 @@
+From e24fcd140f3f6dd18fd836b197c6d4bb773e50e7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C3=ABl=20Carr=C3=A9?= <funman@videolan.org>
+Date: Wed, 4 Nov 2015 16:49:30 +0100
+Subject: [PATCH] config_os_libs2: Error Fix
+
+ERROR: This autoconf log indicates errors, it looked at host include
+and/or library paths while determining system capabilities.
+---
+ configure.d/config_os_libs2 | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2
+index 47491e2..e3647f9 100644
+--- a/configure.d/config_os_libs2
++++ b/configure.d/config_os_libs2
+@@ -226,10 +226,10 @@ if test "x$with_nl" != "xno"; then
+     case $target_os in
+     linux*) # Check for libnl (linux)
+         netsnmp_save_CPPFLAGS="$CPPFLAGS"
+-        CPPFLAGS="-I/usr/include/libnl3 $CPPFLAGS"
++        CPPFLAGS="$CPPFLAGS"
+         NETSNMP_SEARCH_LIBS(nl_connect, nl-3,
+             [AC_CHECK_HEADERS(netlink/netlink.h)
+-            EXTERNAL_MIBGROUP_INCLUDES="$EXTERNAL_MIBGROUP_INCLUDES -I/usr/include/libnl3"],
++            EXTERNAL_MIBGROUP_INCLUDES="$EXTERNAL_MIBGROUP_INCLUDES"],
+             [CPPFLAGS="$netsnmp_save_CPPFLAGS"], [], [], [LMIBLIBS])
+         if test "x$ac_cv_header_netlink_netlink_h" != xyes; then
+             NETSNMP_SEARCH_LIBS(nl_connect, nl, [
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch
new file mode 100644
index 0000000..af242fa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch
@@ -0,0 +1,33 @@
+From d3027a227bc0f603a5b650d01f97ee1dec515be5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 18 Sep 2015 00:28:45 -0400
+Subject: [PATCH] snmplib/keytools.c: Don't check for return from
+ EVP_MD_CTX_init()
+
+EVP_MD_CTX_init() API returns void, it fixes errors with new compilers
+
+snmplib/keytools.c: In function 'generate_Ku': error: invalid use of void expression
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted [https://sourceforge.net/p/net-snmp/patches/1317/]
+ snmplib/keytools.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/snmplib/keytools.c b/snmplib/keytools.c
+index 0ccb3a6..880fc14 100644
+--- a/snmplib/keytools.c
++++ b/snmplib/keytools.c
+@@ -153,8 +153,7 @@ generate_Ku(const oid * hashtype, u_int hashtype_len,
+     ctx = EVP_MD_CTX_create();
+ #else
+     ctx = malloc(sizeof(*ctx));
+-    if (!EVP_MD_CTX_init(ctx))
+-        return SNMPERR_GENERR;
++    EVP_MD_CTX_init(ctx);
+ #endif
+ #ifndef NETSNMP_DISABLE_MD5
+     if (ISTRANSFORM(hashtype, HMACMD5Auth)) {
+-- 
+2.5.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/dont-return-incompletely-parsed-varbinds.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/dont-return-incompletely-parsed-varbinds.patch
new file mode 100644
index 0000000..6bd0f93
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/dont-return-incompletely-parsed-varbinds.patch
@@ -0,0 +1,131 @@
+From 6b93e686bdb6a908d00595608646a05527a5326b Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 21 Aug 2015 12:39:12 +0900
+Subject: [PATCH] the snmp_pdu_parse() function could leave incompletely parsed
+ varBind variables in the list of variables in case the parsing of the SNMP
+ PDU failed. If later processing tries to operate on the stale and
+ incompletely processed varBind (e.g. when printing the variables), this can
+ lead to e.g. crashes or, possibly, execution of arbitrary code
+
+Upstream-Status: Backport [net-snmp]
+
+Written-by: Robert Story
+---
+ snmplib/snmp_api.c | 53 ++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 28 insertions(+), 25 deletions(-)
+
+diff --git a/snmplib/snmp_api.c b/snmplib/snmp_api.c
+index 191debf..15a2d39 100644
+--- a/snmplib/snmp_api.c
++++ b/snmplib/snmp_api.c
+@@ -4350,10 +4350,9 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
+     u_char          type;
+     u_char          msg_type;
+     u_char         *var_val;
+-    int             badtype = 0;
+     size_t          len;
+     size_t          four;
+-    netsnmp_variable_list *vp = NULL;
++    netsnmp_variable_list *vp = NULL, *vplast = NULL;
+     oid             objid[MAX_OID_LEN];
+     u_char         *p;
+ 
+@@ -4493,31 +4492,17 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
+                               (ASN_SEQUENCE | ASN_CONSTRUCTOR),
+                               "varbinds");
+     if (data == NULL)
+-        return -1;
++        goto fail;
+ 
+     /*
+      * get each varBind sequence 
+      */
+     while ((int) *length > 0) {
+-        netsnmp_variable_list *vptemp;
+-        vptemp = (netsnmp_variable_list *) malloc(sizeof(*vptemp));
+-        if (NULL == vptemp) {
+-            return -1;
+-        }
+-        if (NULL == vp) {
+-            pdu->variables = vptemp;
+-        } else {
+-            vp->next_variable = vptemp;
+-        }
+-        vp = vptemp;
++        vp = SNMP_MALLOC_TYPEDEF(netsnmp_variable_list);
++        if (NULL == vp)
++            goto fail;
+ 
+-        vp->next_variable = NULL;
+-        vp->val.string = NULL;
+         vp->name_length = MAX_OID_LEN;
+-        vp->name = NULL;
+-        vp->index = 0;
+-        vp->data = NULL;
+-        vp->dataFreeHook = NULL;
+         DEBUGDUMPSECTION("recv", "VarBind");
+         data = snmp_parse_var_op(data, objid, &vp->name_length, &vp->type,
+                                  &vp->val_len, &var_val, length);
+@@ -4604,7 +4589,7 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
+                 vp->val.string = (u_char *) malloc(vp->val_len);
+             }
+             if (vp->val.string == NULL) {
+-                return -1;
++                goto fail;
+             }
+             p = asn_parse_string(var_val, &len, &vp->type, vp->val.string,
+                              &vp->val_len);
+@@ -4619,7 +4604,7 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
+             vp->val_len *= sizeof(oid);
+             vp->val.objid = (oid *) malloc(vp->val_len);
+             if (vp->val.objid == NULL) {
+-                return -1;
++                goto fail;
+             }
+             memmove(vp->val.objid, objid, vp->val_len);
+             break;
+@@ -4631,7 +4616,7 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
+         case ASN_BIT_STR:
+             vp->val.bitstring = (u_char *) malloc(vp->val_len);
+             if (vp->val.bitstring == NULL) {
+-                return -1;
++                goto fail;
+             }
+             p = asn_parse_bitstring(var_val, &len, &vp->type,
+                                 vp->val.bitstring, &vp->val_len);
+@@ -4640,12 +4625,30 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
+             break;
+         default:
+             snmp_log(LOG_ERR, "bad type returned (%x)\n", vp->type);
+-            badtype = -1;
++            goto fail;
+             break;
+         }
+         DEBUGINDENTADD(-4);
++
++        if (NULL == vplast) {
++            pdu->variables = vp;
++        } else {
++            vplast->next_variable = vp;
++        }
++        vplast = vp;
++        vp = NULL;
++
+     }
+-    return badtype;
++    return 0;
++
++  fail:
++    DEBUGMSGTL(("recv", "error while parsing VarBindList\n"));
++    /** if we were parsing a var, remove it from the pdu and free it */
++    if (vp)
++        snmp_free_var(vp);
++
++    return -1;
++
+ }
+ 
+ /*
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/fix-libtool-finish.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/fix-libtool-finish.patch
new file mode 100644
index 0000000..a360c3a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/fix-libtool-finish.patch
@@ -0,0 +1,25 @@
+LIB_LDCONFIG_CMD failed since it is using a host dir $(libdir)
+which is /usr/lib64 does not exist on host when compile 64bit
+image.
+
+In fact, configuring dynamic linker run-time bindings is meaningless
+at this step,  If it is needed, Poky would write ldconfig scripts to
+rpm-postinst for each recipe while do_package, in package.bbclass.
+
+Upstream-Status: Inappropriate [cross compile specific]
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+diff --git a/Makefile.top b/Makefile.top
+index 862fb94..ed7dcfc 100644
+--- a/Makefile.top
++++ b/Makefile.top
+@@ -86,7 +86,7 @@ LIBREVISION = 2
+ LIB_LD_CMD      = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) -o
+ LIB_EXTENSION   = la
+ LIB_VERSION     =
+-LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(INSTALL_PREFIX)$(libdir)
++LIB_LDCONFIG_CMD = echo "do not ldconfig\n"
+ LINK		= $(LIBTOOL) --mode=link $(LINKCC)
+ # RANLIB 	= @RANLIB@
+ RANLIB		= :
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-add-knob-whether-nlist.h-are-checked.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-add-knob-whether-nlist.h-are-checked.patch
new file mode 100644
index 0000000..74b0c12
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-add-knob-whether-nlist.h-are-checked.patch
@@ -0,0 +1,35 @@
+net-snmp: add knob whether nlist.h are checked
+
+Previously, it still was checked when there was no nlish.h in sysroots directory.
+Add knob to decide whether nlist.h are checked or not.
+
+Upstream-status: Pending
+
+Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
+---
+ configure.d/config_os_headers |    2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers
+index d903f58..a05d30e 100644
+--- a/configure.d/config_os_headers
++++ b/configure.d/config_os_headers
+@@ -31,6 +31,7 @@ AC_CHECK_HEADERS([getopt.h   pthread.h  regex.h      ] dnl
+                  [sys/un.h           ])
+ 
+ #  Library and Agent:
++if test "x$with_elf" != "xno"; then
+ AC_CHECK_HEADERS([nlist.h],,,[
+ AC_INCLUDES_DEFAULT
+ [
+@@ -38,6 +39,7 @@ AC_INCLUDES_DEFAULT
+ #define LIBBSD_DISABLE_DEPRECATED 1
+ #endif
+ ]])
++fi
+ 
+ #  Library:
+ AC_CHECK_HEADERS([fcntl.h    io.h       kstat.h                 ] dnl
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-testing-add-the-output-format-for-ptest.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-testing-add-the-output-format-for-ptest.patch
new file mode 100644
index 0000000..9fb19b3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-testing-add-the-output-format-for-ptest.patch
@@ -0,0 +1,37 @@
+From 4bb4024b395f19d36ab3569e2773ea80d8cc5261 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Wed, 14 Jan 2015 15:10:06 +0800
+Subject: [PATCH] testing: add the output format for ptest
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ testing/RUNTESTS |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/testing/RUNTESTS b/testing/RUNTESTS
+index e11c969..fb90f76 100755
+--- a/testing/RUNTESTS
++++ b/testing/RUNTESTS
+@@ -25,13 +25,17 @@ failed_count=0
+ rm -f failed_tests
+ for i in "${srcdir}"/testing/fulltests/default/T*$1*; do
+     echo "RUNNING $i"
++    test_name=`basename $i`
+     ${srcdir}/testing/fulltests/support/simple_run $i
+     if [ $? = 0 ]; then
++        echo "PASS: $test_name"
+         success_count=`expr $success_count + 1`
+     else
++        echo "FAIL: $test_name"
+         failed_count=`expr $failed_count + 1`
+         echo "$i" >> failed_tests
+     fi
++    echo
+ done
+ 
+ if [ -f failed_tests ]; then
+-- 
+1.7.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/run-ptest b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/run-ptest
new file mode 100755
index 0000000..2334217
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/run-ptest
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd testing
+./RUNTESTS
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/snmpd.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/snmpd.service
new file mode 100644
index 0000000..447683f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/snmpd.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Simple Network Management Protocol (SNMP) Daemon.
+After=syslog.target network.target
+
+[Service]
+Type=notify
+Environment=OPTIONS="-Ls0-6d"
+EnvironmentFile=-/etc/default/snmpd
+ExecStart=/usr/sbin/snmpd $OPTIONS -a -f
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/snmptrapd.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/snmptrapd.service
new file mode 100644
index 0000000..951f9f2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/snmptrapd.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Simple Network Management Protocol (SNMP) Trap Daemon.
+After=syslog.target network.target
+
+[Service]
+Type=notify
+Environment=OPTIONS="-Lsd"
+EnvironmentFile=-/etc/default/snmptrapd
+ExecStart=/usr/sbin/snmptrapd $OPTIONS -f
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/systemd-support.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/systemd-support.patch
new file mode 100644
index 0000000..c6af8c0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/systemd-support.patch
@@ -0,0 +1,1652 @@
+From 0cad0c6c36af2a2d589563804c9ed2b37b7085fb Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 21 Aug 2015 14:37:02 +0900
+Subject: [PATCH] ystemd support backported from the master branch as of
+ 23/04/2012 (post 5.7.1, pre 5.8).
+
+The following commits have been cherry-picked:
+
+19499c3c90bf9d7b2b9e5d08baa26cc6bba28a11
+fef6cddfdb94da1a6b1fb768af62918b80f11fd3
+0641e43c694c485cbbffef0556efc4641bd3ff50
+76530a89f1c8bbd0b63acce63e10d5d4812a1a16 (conflict resolved)
+bf108d7f1354f6276fc43c129963f2c49b9fc242
+3692875172352f72cf3afd0d35f355e83d7e421b
+74412748067c685e1d8ab6ed3bcc3ca9c2774844
+86132e3f1e6ef7b4e0b96d8fa24e37c81b71b0e0
+63557cf8986a33dba1d4429b583a901361052c4f
+
+Upstream-Status: Backport
+
+Signed-off-by: Thomas Fitzsimmons <fitzsim@cisco.com>
+---
+ README.systemd                             |  41 +++
+ agent/snmpd.c                              |  33 +-
+ apps/snmptrapd.c                           |  32 +-
+ configure.d/config_modules_lib             |   8 +
+ configure.d/config_project_with_enable     |   9 +
+ dist/snmpd.servic                          |  18 +
+ dist/snmpd.socket                          |  17 +
+ dist/snmptrapd.service                     |  16 +
+ dist/snmptrapd.socket                      |  14 +
+ include/net-snmp/library/sd-daemon.h       | 290 ++++++++++++++++
+ snmplib/sd-daemon.c                        | 532 +++++++++++++++++++++++++++++
+ snmplib/transports/snmpTCPDomain.c         |  43 ++-
+ snmplib/transports/snmpTCPIPv6Domain.c     |  46 ++-
+ snmplib/transports/snmpUDPIPv4BaseDomain.c |  33 +-
+ snmplib/transports/snmpUDPIPv6Domain.c     |  34 +-
+ snmplib/transports/snmpUnixDomain.c        |  66 ++--
+ win32/libsnmp/Makefile.in                  |   6 +
+ win32/net-snmp/net-snmp-config.h           |   2 +
+ win32/net-snmp/net-snmp-config.h.in        |   2 +
+ 19 files changed, 1176 insertions(+), 66 deletions(-)
+ create mode 100644 README.systemd
+ create mode 100644 dist/snmpd.servic
+ create mode 100644 dist/snmpd.socket
+ create mode 100644 dist/snmptrapd.service
+ create mode 100644 dist/snmptrapd.socket
+ create mode 100644 include/net-snmp/library/sd-daemon.h
+ create mode 100644 snmplib/sd-daemon.c
+
+diff --git a/README.systemd b/README.systemd
+new file mode 100644
+index 0000000..dba15d1
+--- /dev/null
++++ b/README.systemd
+@@ -0,0 +1,41 @@
++README.systemd
++--------------
++Net-SNMP provides two daemons, which support systemd system manager.
++See http://www.freedesktop.org/wiki/Software/systemd to learn how
++systemd works. Both socket activation and notification is supported by these
++daemons.
++
++To enable systemd support, the sources must be compiled with
++--with-systemd configure option.
++
++snmpd - The SNMP agent
++----------------------
++Socket activation od snmpd daemon is implemented, but it's discouraged.
++The reason is simple - snmpd not only listens and processes SNMP requests
++from network, but also gathers system statistics counters, sends traps and
++communicates with subagents. It even opens few netlink sockets.
++
++In other words, snmpd should run from system start to properly work.
++This can be done in two ways:
++1) either as snmpd service unit with 'Type=notification' and without a socket
++   unit
++2) or as snmpd service unit with 'Type=simple', appropriate socket socket unit
++   and the snmpd service enabled. This way systemd creates the snmpd listening
++   socket early during boot and passes the sockets to snmpd slightly later
++   (but still during machine boot). This way systemd can paralelize start of
++   services, which depend on snmpd. Admins must adjust the socket file manually,
++   depending if the snmpd support AgentX, IPv6, SMUX etc.
++
++snmpd should be started with '-f' command line parameter to disable forking -
++systemd does that for us automatically.
++
++
++snmptrapd - The trap processing daemon
++--------------------------------------
++snmptrapd supports full socket activation and also notification (if needed).
++Both 'Type=simple' (with appropriate socket unit) and 'Type=notify' services
++will work. Again, '-f' parameter should be provided on snmptrapd command line.
++
++If integration with SNMP agent using AgentX protocol is enabled, snmptrapd should
++start during boot and not after first SNMP trap arrives. Same rules as for snmpd
++applies then.
+diff --git a/agent/snmpd.c b/agent/snmpd.c
+index cfc7bce..116ee5c 100644
+--- a/agent/snmpd.c
++++ b/agent/snmpd.c
+@@ -164,6 +164,10 @@ typedef long    fd_mask;
+ 
+ #endif
+ 
++#ifndef NETSNMP_NO_SYSTEMD
++#include <net-snmp/library/sd-daemon.h>
++#endif
++
+ netsnmp_feature_want(logging_file)
+ netsnmp_feature_want(logging_stdio)
+ netsnmp_feature_want(logging_syslog)
+@@ -443,19 +447,29 @@ main(int argc, char *argv[])
+     int             agent_mode = -1;
+     char           *pid_file = NULL;
+     char            option_compatability[] = "-Le";
++#ifndef WIN32
++    int             prepared_sockets = 0;
++#endif
+ #if HAVE_GETPID
+     int fd;
+     FILE           *PID;
+ #endif
+ 
+ #ifndef WIN32
++#ifndef NETSNMP_NO_SYSTEMD
++    /* check if systemd has sockets for us and don't close them */
++    prepared_sockets = netsnmp_sd_listen_fds(0);
++#endif /* NETSNMP_NO_SYSTEMD */
++
+     /*
+      * close all non-standard file descriptors we may have
+      * inherited from the shell.
+      */
+-    for (i = getdtablesize() - 1; i > 2; --i) {
+-        (void) close(i);
+-    }
++    if (!prepared_sockets) {
++        for (i = getdtablesize() - 1; i > 2; --i) {
++            (void) close(i);
++        }    
++}
+ #endif /* #WIN32 */
+     
+     /*
+@@ -1107,6 +1121,19 @@ main(int argc, char *argv[])
+     netsnmp_addrcache_initialise();
+ 
+     /*
++     * Let systemd know we're up.
++     */
++#ifndef NETSNMP_NO_SYSTEMD
++    netsnmp_sd_notify(1, "READY=1\n");
++    if (prepared_sockets)
++        /*
++         * Clear the environment variable, we already processed all the sockets
++         * by now.
++         */
++        netsnmp_sd_listen_fds(1);
++#endif
++
++    /*
+      * Forever monitor the dest_port for incoming PDUs.  
+      */
+     DEBUGMSGTL(("snmpd/main", "We're up.  Starting to process data.\n"));
+diff --git a/apps/snmptrapd.c b/apps/snmptrapd.c
+index bce0d47..c6a74ec 100644
+--- a/apps/snmptrapd.c
++++ b/apps/snmptrapd.c
+@@ -125,6 +125,10 @@ SOFTWARE.
+ 
+ #include <net-snmp/net-snmp-features.h>
+ 
++#ifndef NETSNMP_NO_SYSTEMD
++#include <net-snmp/library/sd-daemon.h>
++#endif
++
+ #ifndef BSD4_3
+ #define BSD4_2
+ #endif
+@@ -657,16 +661,25 @@ main(int argc, char *argv[])
+     int             agentx_subagent = 1;
+ #endif
+     netsnmp_trapd_handler *traph;
++#ifndef WIN32
++    int             prepared_sockets = 0;
++#endif
+ 
+ 
+ #ifndef WIN32
++#ifndef NETSNMP_NO_SYSTEMD
++    /* check if systemd has sockets for us and don't close them */
++    prepared_sockets = netsnmp_sd_listen_fds(0);
++#endif
+     /*
+      * close all non-standard file descriptors we may have
+      * inherited from the shell.
+      */
+-    for (i = getdtablesize() - 1; i > 2; --i) {
+-        (void) close(i);
+-    }
++    if (!prepared_sockets) {
++        for (i = getdtablesize() - 1; i > 2; --i) {
++            (void) close(i);
++        }    
++}
+ #endif /* #WIN32 */
+     
+ #ifdef SIGTERM
+@@ -1318,6 +1331,19 @@ main(int argc, char *argv[])
+ #endif
+ #endif
+ 
++    /*
++     * Let systemd know we're up.
++     */
++#ifndef NETSNMP_NO_SYSTEMD
++    netsnmp_sd_notify(1, "READY=1\n");
++    if (prepared_sockets)
++        /*
++         * Clear the environment variable, we already processed all the sockets
++         * by now.
++         */
++        netsnmp_sd_listen_fds(1);
++#endif
++
+ #ifdef WIN32SERVICE
+     trapd_status = SNMPTRAPD_RUNNING;
+ #endif
+diff --git a/configure.d/config_modules_lib b/configure.d/config_modules_lib
+index 362ba0a..bb69daa 100644
+--- a/configure.d/config_modules_lib
++++ b/configure.d/config_modules_lib
+@@ -53,6 +53,14 @@ if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"
+   other_ftobjs_list="$other_ftobjs_list winpipe.ft"
+ fi
+ 
++# Linux systemd
++if test "x$with_systemd" == "xyes"; then
++  other_src_list="$other_src_list sd-daemon.c"
++  other_objs_list="$other_objs_list sd-daemon.o"
++  other_lobjs_list="$other_lobjs_list sd-daemon.lo"
++  other_ftobjs_list="$other_ftobjs_list sd-daemon.ft"
++fi
++
+ AC_SUBST(other_src_list)
+ AC_SUBST(other_objs_list)
+ AC_SUBST(other_lobjs_list)
+diff --git a/configure.d/config_project_with_enable b/configure.d/config_project_with_enable
+index 61ba026..d782d12 100644
+--- a/configure.d/config_project_with_enable
++++ b/configure.d/config_project_with_enable
+@@ -690,6 +690,15 @@ if test "x$with_dummy_values" != "xyes"; then
+      data for])
+ fi
+ 
++NETSNMP_ARG_WITH(systemd,
++[  --with-systemd                 Provide systemd support. See README.systemd
++                                  for details.])
++# Define unless specifically suppressed (i.e., option defaults to false).
++if test "x$with_systemd" != "xyes"; then
++  AC_DEFINE(NETSNMP_NO_SYSTEMD, 1,
++    [If you don't want to integrate with systemd.])
++fi
++
+ NETSNMP_ARG_ENABLE(set-support,
+ [  --disable-set-support           Do not allow SNMP set requests.])
+ if test "x$enable_set_support" = "xno"; then
+diff --git a/dist/snmpd.servic b/dist/snmpd.servic
+new file mode 100644
+index 0000000..31391e5
+--- /dev/null
++++ b/dist/snmpd.servic
+@@ -0,0 +1,18 @@
++#
++# SNMP agent service file for systemd
++#
++#
++# The service should be enabled, i.e. snmpd should start during machine boot.
++# Socket activation shall not be used. See README.systemd for details.
++
++[Unit]
++Description=Simple Network Management Protocol (SNMP) daemon.
++After=syslog.target network.target
++
++[Service]
++# Type=notify is also supported. It should be set when snmpd.socket is not used.
++Type=simple
++ExecStart=/usr/sbin/snmpd -f
++
++[Install]
++WantedBy=multi-user.target
+diff --git a/dist/snmpd.socket b/dist/snmpd.socket
+new file mode 100644
+index 0000000..7f3a2d9
+--- /dev/null
++++ b/dist/snmpd.socket
+@@ -0,0 +1,17 @@
++[Unit]
++Description=Socket listening for SNMP and AgentX messages
++
++[Socket]
++ListenDatagram=0.0.0.0:161
++# Uncomment other listening addresses as needed - TCP, UDP6, TCP6.
++# It must match listening addresses/ports defined in snmpd.service
++# or snmpd.conf.
++# ListenStream=0.0.0.0:161
++# ListenDatagram=[::]:161
++# ListenStream=[::]:161
++#
++# Uncomment AgentX socket if snmpd.conf enables AgentX protocol.
++# ListenStream=/var/agentx/master
++
++[Install]
++WantedBy=sockets.target
+diff --git a/dist/snmptrapd.service b/dist/snmptrapd.service
+new file mode 100644
+index 0000000..e88a5b4
+--- /dev/null
++++ b/dist/snmptrapd.service
+@@ -0,0 +1,16 @@
++#
++# SNMP trap-processing service file for systemd
++#
++
++[Unit]
++Description=Simple Network Management Protocol (SNMP) Trap daemon.
++After=syslog.target network.target
++
++[Service]
++# Type=notify is also supported. It should be set when snmptrapd.socket is not
++# used.
++Type=simple
++ExecStart=/usr/sbin/snmptrapd -f
++
++[Install]
++WantedBy=multi-user.target
+diff --git a/dist/snmptrapd.socket b/dist/snmptrapd.socket
+new file mode 100644
+index 0000000..2d24fb8
+--- /dev/null
++++ b/dist/snmptrapd.socket
+@@ -0,0 +1,14 @@
+++[Unit]
+++Description=Socket listening for SNMP trap messages
+++
+++[Socket]
+++ListenDatagram=0.0.0.0:162
+++# Uncomment other listening addresses as needed - TCP, UDP6, TCP6.
+++# It must match listening addresses/ports defined in snmptrapd.service
+++# or snmptrapd.conf.
+++# ListenStream=0.0.0.0:162
+++# ListenDatagram=[::]:162
+++# ListenStream=[::]:162
+++
+++[Install]
+++WantedBy=sockets.target
+diff --git a/include/net-snmp/library/sd-daemon.h b/include/net-snmp/library/sd-daemon.h
+new file mode 100644
+index 0000000..85274c9
+--- /dev/null
++++ b/include/net-snmp/library/sd-daemon.h
+@@ -0,0 +1,290 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++#ifndef SNMPD_SD_DAEMON_H
++#define SNMPD_SD_DAEMON_H
++
++/***
++  Copyright 2010 Lennart Poettering
++
++  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.
++***/
++
++#ifdef HAVE_SYS_TYPES_H
++#include <sys/types.h>
++#endif
++#ifdef HAVE_INTTYPES_H
++#include <inttypes.h>
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*
++  Reference implementation of a few systemd related interfaces for
++  writing daemons. These interfaces are trivial to implement. To
++  simplify porting we provide this reference implementation.
++  Applications are welcome to reimplement the algorithms described
++  here if they do not want to include these two source files.
++
++  The following functionality is provided:
++
++  - Support for logging with log levels on stderr
++  - File descriptor passing for socket-based activation
++  - Daemon startup and status notification
++  - Detection of systemd boots
++
++  You may compile this with -DDISABLE_SYSTEMD to disable systemd
++  support. This makes all those calls NOPs that are directly related to
++  systemd (i.e. only sd_is_xxx() will stay useful).
++
++  Since this is drop-in code we don't want any of our symbols to be
++  exported in any case. Hence we declare hidden visibility for all of
++  them.
++
++  You may find an up-to-date version of these source files online:
++
++  http://cgit.freedesktop.org/systemd/plain/src/sd-daemon.h
++  http://cgit.freedesktop.org/systemd/plain/src/sd-daemon.c
++
++  This should compile on non-Linux systems, too, but with the
++  exception of the sd_is_xxx() calls all functions will become NOPs.
++
++  See sd-daemon(7) for more information.
++*/
++
++#ifndef _sd_printf_attr_
++#if __GNUC__ >= 4
++#define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b)))
++#else
++#define _sd_printf_attr_(a,b)
++#endif
++#endif
++
++/*
++  Log levels for usage on stderr:
++
++          fprintf(stderr, SD_NOTICE "Hello World!\n");
++
++  This is similar to printk() usage in the kernel.
++*/
++#define SD_EMERG   "<0>"  /* system is unusable */
++#define SD_ALERT   "<1>"  /* action must be taken immediately */
++#define SD_CRIT    "<2>"  /* critical conditions */
++#define SD_ERR     "<3>"  /* error conditions */
++#define SD_WARNING "<4>"  /* warning conditions */
++#define SD_NOTICE  "<5>"  /* normal but significant condition */
++#define SD_INFO    "<6>"  /* informational */
++#define SD_DEBUG   "<7>"  /* debug-level messages */
++
++/* The first passed file descriptor is fd 3 */
++#define SD_LISTEN_FDS_START 3
++
++/*
++  Returns how many file descriptors have been passed, or a negative
++  errno code on failure. Optionally, removes the $LISTEN_FDS and
++  $LISTEN_PID file descriptors from the environment (recommended, but
++  problematic in threaded environments). If r is the return value of
++  this function you'll find the file descriptors passed as fds
++  SD_LISTEN_FDS_START to SD_LISTEN_FDS_START+r-1. Returns a negative
++  errno style error code on failure. This function call ensures that
++  the FD_CLOEXEC flag is set for the passed file descriptors, to make
++  sure they are not passed on to child processes. If FD_CLOEXEC shall
++  not be set, the caller needs to unset it after this call for all file
++  descriptors that are used.
++
++  See sd_listen_fds(3) for more information.
++*/
++int netsnmp_sd_listen_fds(int unset_environment);
++
++/*
++  Helper call for identifying a passed file descriptor. Returns 1 if
++  the file descriptor is a FIFO in the file system stored under the
++  specified path, 0 otherwise. If path is NULL a path name check will
++  not be done and the call only verifies if the file descriptor
++  refers to a FIFO. Returns a negative errno style error code on
++  failure.
++
++  See sd_is_fifo(3) for more information.
++*/
++int netsnmp_sd_is_fifo(int fd, const char *path);
++
++/*
++  Helper call for identifying a passed file descriptor. Returns 1 if
++  the file descriptor is a special character device on the file
++  system stored under the specified path, 0 otherwise.
++  If path is NULL a path name check will not be done and the call
++  only verifies if the file descriptor refers to a special character.
++  Returns a negative errno style error code on failure.
++
++  See sd_is_special(3) for more information.
++*/
++int netsnmp_sd_is_special(int fd, const char *path);
++
++/*
++  Helper call for identifying a passed file descriptor. Returns 1 if
++  the file descriptor is a socket of the specified family (AF_INET,
++  ...) and type (SOCK_DGRAM, SOCK_STREAM, ...), 0 otherwise. If
++  family is 0 a socket family check will not be done. If type is 0 a
++  socket type check will not be done and the call only verifies if
++  the file descriptor refers to a socket. If listening is > 0 it is
++  verified that the socket is in listening mode. (i.e. listen() has
++  been called) If listening is == 0 it is verified that the socket is
++  not in listening mode. If listening is < 0 no listening mode check
++  is done. Returns a negative errno style error code on failure.
++
++  See sd_is_socket(3) for more information.
++*/
++int netsnmp_sd_is_socket(int fd, int family, int type, int listening);
++
++/*
++  Helper call for identifying a passed file descriptor. Returns 1 if
++  the file descriptor is an Internet socket, of the specified family
++  (either AF_INET or AF_INET6) and the specified type (SOCK_DGRAM,
++  SOCK_STREAM, ...), 0 otherwise. If version is 0 a protocol version
++  check is not done. If type is 0 a socket type check will not be
++  done. If port is 0 a socket port check will not be done. The
++  listening flag is used the same way as in sd_is_socket(). Returns a
++  negative errno style error code on failure.
++
++  See sd_is_socket_inet(3) for more information.
++*/
++int netsnmp_sd_is_socket_inet(int fd, int family, int type, int listening, uint16_t port);
++
++/*
++  Helper call for identifying a passed file descriptor. Returns 1 if
++  the file descriptor is an AF_UNIX socket of the specified type
++  (SOCK_DGRAM, SOCK_STREAM, ...) and path, 0 otherwise. If type is 0
++  a socket type check will not be done. If path is NULL a socket path
++  check will not be done. For normal AF_UNIX sockets set length to
++  0. For abstract namespace sockets set length to the length of the
++  socket name (including the initial 0 byte), and pass the full
++  socket path in path (including the initial 0 byte). The listening
++  flag is used the same way as in sd_is_socket(). Returns a negative
++  errno style error code on failure.
++
++  See sd_is_socket_unix(3) for more information.
++*/
++int netsnmp_sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t length);
++
++/*
++  Informs systemd about changed daemon state. This takes a number of
++  newline separated environment-style variable assignments in a
++  string. The following variables are known:
++
++     READY=1      Tells systemd that daemon startup is finished (only
++                  relevant for services of Type=notify). The passed
++                  argument is a boolean "1" or "0". Since there is
++                  little value in signaling non-readiness the only
++                  value daemons should send is "READY=1".
++
++     STATUS=...   Passes a single-line status string back to systemd
++                  that describes the daemon state. This is free-from
++                  and can be used for various purposes: general state
++                  feedback, fsck-like programs could pass completion
++                  percentages and failing programs could pass a human
++                  readable error message. Example: "STATUS=Completed
++                  66% of file system check..."
++
++     ERRNO=...    If a daemon fails, the errno-style error code,
++                  formatted as string. Example: "ERRNO=2" for ENOENT.
++
++     BUSERROR=... If a daemon fails, the D-Bus error-style error
++                  code. Example: "BUSERROR=org.freedesktop.DBus.Error.TimedOut"
++
++     MAINPID=...  The main pid of a daemon, in case systemd did not
++                  fork off the process itself. Example: "MAINPID=4711"
++
++  Daemons can choose to send additional variables. However, it is
++  recommended to prefix variable names not listed above with X_.
++
++  Returns a negative errno-style error code on failure. Returns > 0
++  if systemd could be notified, 0 if it couldn't possibly because
++  systemd is not running.
++
++  Example: When a daemon finished starting up, it could issue this
++  call to notify systemd about it:
++
++     sd_notify(0, "READY=1");
++
++  See sd_notifyf() for more complete examples.
++
++  See sd_notify(3) for more information.
++*/
++int netsnmp_sd_notify(int unset_environment, const char *state);
++
++/*
++  Similar to sd_notify() but takes a format string.
++
++  Example 1: A daemon could send the following after initialization:
++
++     sd_notifyf(0, "READY=1\n"
++                   "STATUS=Processing requests...\n"
++                   "MAINPID=%lu",
++                   (unsigned long) getpid());
++
++  Example 2: A daemon could send the following shortly before
++  exiting, on failure:
++
++     sd_notifyf(0, "STATUS=Failed to start up: %s\n"
++                   "ERRNO=%i",
++                   strerror(errno),
++                   errno);
++
++  See sd_notifyf(3) for more information.
++*/
++int netsnmp_sd_notifyf(int unset_environment, const char *format, ...) _sd_printf_attr_(2,3);
++
++/*
++  Returns > 0 if the system was booted with systemd. Returns < 0 on
++  error. Returns 0 if the system was not booted with systemd. Note
++  that all of the functions above handle non-systemd boots just
++  fine. You should NOT protect them with a call to this function. Also
++  note that this function checks whether the system, not the user
++  session is controlled by systemd. However the functions above work
++  for both user and system services.
++
++  See sd_booted(3) for more information.
++*/
++int netsnmp_sd_booted(void);
++
++/**
++ * Find an socket with given parameters. See man sd_is_socket_inet for
++ * description of the arguments.
++ *
++ * Returns the file descriptor if it is found, 0 otherwise.
++ */
++int netsnmp_sd_find_inet_socket(int family, int type, int listening, int port);
++
++/**
++ * Find an unix socket with given parameters. See man sd_is_socket_unix for
++ * description of the arguments.
++ *
++ * Returns the file descriptor if it is found, 0 otherwise.
++ */
++int
++netsnmp_sd_find_unix_socket(int type, int listening, const char *path);
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* SNMPD_SD_DAEMON_H */
+diff --git a/snmplib/sd-daemon.c b/snmplib/sd-daemon.c
+new file mode 100644
+index 0000000..42dba29
+--- /dev/null
++++ b/snmplib/sd-daemon.c
+@@ -0,0 +1,532 @@
++/*
++ * Systemd integration parts.
++ *
++ * Most of this file is directly copied from systemd sources.
++ * Changes:
++ * - all functions were renamed to have netsnmp_ prefix
++ * - includes were  changed to match Net-SNMP style.
++ * - removed gcc export macros
++ * - removed POSIX message queues
++ */
++
++#include <net-snmp/net-snmp-config.h>
++#include <net-snmp/net-snmp-features.h>
++#include <net-snmp/types.h>
++#include <net-snmp/library/snmp_debug.h>
++
++#ifndef NETSNMP_NO_SYSTEMD
++
++/***
++  Copyright 2010 Lennart Poettering
++
++  Permission is hereby granted, free of charge, to any person
++  obtaining a copy of this software and associated documentation files
++  (the "Software"), to deal in the Software without restriction,
++  including without limitation the rights to use, copy, modify, merge,
++  publish, distribute, sublicense, and/or sell copies of the Software,
++  and to permit persons to whom the Software is furnished to do so,
++  subject to the following conditions:
++
++  The above copyright notice and this permission notice shall be
++  included in all copies or substantial portions of the Software.
++
++  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
++  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
++  SOFTWARE.
++***/
++
++#ifndef _GNU_SOURCE
++#define _GNU_SOURCE
++#endif
++
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++#include <sys/fcntl.h>
++#include <netinet/in.h>
++#include <stdlib.h>
++#include <errno.h>
++#include <unistd.h>
++#include <string.h>
++#include <stdarg.h>
++#include <stdio.h>
++#include <stddef.h>
++#include <limits.h>
++
++#include <net-snmp/library/sd-daemon.h>
++
++int netsnmp_sd_listen_fds(int unset_environment) {
++
++        int r, fd;
++        const char *e;
++        char *p = NULL;
++        unsigned long l;
++
++        if (!(e = getenv("LISTEN_PID"))) {
++                r = 0;
++                goto finish;
++        }
++
++        errno = 0;
++        l = strtoul(e, &p, 10);
++
++        if (errno != 0) {
++                r = -errno;
++                goto finish;
++        }
++
++        if (!p || *p || l <= 0) {
++                r = -EINVAL;
++                goto finish;
++        }
++
++        /* Is this for us? */
++        if (getpid() != (pid_t) l) {
++                r = 0;
++                goto finish;
++        }
++
++        if (!(e = getenv("LISTEN_FDS"))) {
++                r = 0;
++                goto finish;
++        }
++
++        errno = 0;
++        l = strtoul(e, &p, 10);
++
++        if (errno != 0) {
++                r = -errno;
++                goto finish;
++        }
++
++        if (!p || *p) {
++                r = -EINVAL;
++                goto finish;
++        }
++
++        for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + (int) l; fd ++) {
++                int flags;
++
++                if ((flags = fcntl(fd, F_GETFD)) < 0) {
++                        r = -errno;
++                        goto finish;
++                }
++
++                if (flags & FD_CLOEXEC)
++                        continue;
++
++                if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) < 0) {
++                        r = -errno;
++                        goto finish;
++                }
++        }
++
++        r = (int) l;
++
++finish:
++        if (unset_environment) {
++                unsetenv("LISTEN_PID");
++                unsetenv("LISTEN_FDS");
++        }
++
++        return r;
++}
++
++int netsnmp_sd_is_fifo(int fd, const char *path) {
++        struct stat st_fd;
++
++        if (fd < 0)
++                return -EINVAL;
++
++        memset(&st_fd, 0, sizeof(st_fd));
++        if (fstat(fd, &st_fd) < 0)
++                return -errno;
++
++        if (!S_ISFIFO(st_fd.st_mode))
++                return 0;
++
++        if (path) {
++                struct stat st_path;
++
++                memset(&st_path, 0, sizeof(st_path));
++                if (stat(path, &st_path) < 0) {
++
++                        if (errno == ENOENT || errno == ENOTDIR)
++                                return 0;
++
++                        return -errno;
++                }
++
++                return
++                        st_path.st_dev == st_fd.st_dev &&
++                        st_path.st_ino == st_fd.st_ino;
++        }
++
++        return 1;
++}
++
++int netsnmp_sd_is_special(int fd, const char *path) {
++        struct stat st_fd;
++
++        if (fd < 0)
++                return -EINVAL;
++
++        if (fstat(fd, &st_fd) < 0)
++                return -errno;
++
++        if (!S_ISREG(st_fd.st_mode) && !S_ISCHR(st_fd.st_mode))
++                return 0;
++
++        if (path) {
++                struct stat st_path;
++
++                if (stat(path, &st_path) < 0) {
++
++                        if (errno == ENOENT || errno == ENOTDIR)
++                                return 0;
++
++                        return -errno;
++                }
++
++                if (S_ISREG(st_fd.st_mode) && S_ISREG(st_path.st_mode))
++                        return
++                                st_path.st_dev == st_fd.st_dev &&
++                                st_path.st_ino == st_fd.st_ino;
++                else if (S_ISCHR(st_fd.st_mode) && S_ISCHR(st_path.st_mode))
++                        return st_path.st_rdev == st_fd.st_rdev;
++                else
++                        return 0;
++        }
++
++        return 1;
++}
++
++static int sd_is_socket_internal(int fd, int type, int listening) {
++        struct stat st_fd;
++
++        if (fd < 0 || type < 0)
++                return -EINVAL;
++
++        if (fstat(fd, &st_fd) < 0)
++                return -errno;
++
++        if (!S_ISSOCK(st_fd.st_mode))
++                return 0;
++
++        if (type != 0) {
++                int other_type = 0;
++                socklen_t l = sizeof(other_type);
++
++                if (getsockopt(fd, SOL_SOCKET, SO_TYPE, &other_type, &l) < 0)
++                        return -errno;
++
++                if (l != sizeof(other_type))
++                        return -EINVAL;
++
++                if (other_type != type)
++                        return 0;
++        }
++
++        if (listening >= 0) {
++                int accepting = 0;
++                socklen_t l = sizeof(accepting);
++
++                if (getsockopt(fd, SOL_SOCKET, SO_ACCEPTCONN, &accepting, &l) < 0)
++                        return -errno;
++
++                if (l != sizeof(accepting))
++                        return -EINVAL;
++
++                if (!accepting != !listening)
++                        return 0;
++        }
++
++        return 1;
++}
++
++union sockaddr_union {
++        struct sockaddr sa;
++        struct sockaddr_in in4;
++        struct sockaddr_in6 in6;
++        struct sockaddr_un un;
++        struct sockaddr_storage storage;
++};
++
++int netsnmp_sd_is_socket(int fd, int family, int type, int listening) {
++        int r;
++
++        if (family < 0)
++                return -EINVAL;
++
++        if ((r = sd_is_socket_internal(fd, type, listening)) <= 0)
++                return r;
++
++        if (family > 0) {
++                union sockaddr_union sockaddr;
++                socklen_t l;
++
++                memset(&sockaddr, 0, sizeof(sockaddr));
++                l = sizeof(sockaddr);
++
++                if (getsockname(fd, &sockaddr.sa, &l) < 0)
++                        return -errno;
++
++                if (l < sizeof(sa_family_t))
++                        return -EINVAL;
++
++                return sockaddr.sa.sa_family == family;
++        }
++
++        return 1;
++}
++
++int netsnmp_sd_is_socket_inet(int fd, int family, int type, int listening, uint16_t port) {
++        union sockaddr_union sockaddr;
++        socklen_t l;
++        int r;
++
++        if (family != 0 && family != AF_INET && family != AF_INET6)
++                return -EINVAL;
++
++        if ((r = sd_is_socket_internal(fd, type, listening)) <= 0)
++                return r;
++
++        memset(&sockaddr, 0, sizeof(sockaddr));
++        l = sizeof(sockaddr);
++
++        if (getsockname(fd, &sockaddr.sa, &l) < 0)
++                return -errno;
++
++        if (l < sizeof(sa_family_t))
++                return -EINVAL;
++
++        if (sockaddr.sa.sa_family != AF_INET &&
++            sockaddr.sa.sa_family != AF_INET6)
++                return 0;
++
++        if (family > 0)
++                if (sockaddr.sa.sa_family != family)
++                        return 0;
++
++        if (port > 0) {
++                if (sockaddr.sa.sa_family == AF_INET) {
++                        if (l < sizeof(struct sockaddr_in))
++                                return -EINVAL;
++
++                        return htons(port) == sockaddr.in4.sin_port;
++                } else {
++                        if (l < sizeof(struct sockaddr_in6))
++                                return -EINVAL;
++
++                        return htons(port) == sockaddr.in6.sin6_port;
++                }
++        }
++
++        return 1;
++}
++
++int netsnmp_sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t length) {
++        union sockaddr_union sockaddr;
++        socklen_t l;
++        int r;
++
++        if ((r = sd_is_socket_internal(fd, type, listening)) <= 0)
++                return r;
++
++        memset(&sockaddr, 0, sizeof(sockaddr));
++        l = sizeof(sockaddr);
++
++        if (getsockname(fd, &sockaddr.sa, &l) < 0)
++                return -errno;
++
++        if (l < sizeof(sa_family_t))
++                return -EINVAL;
++
++        if (sockaddr.sa.sa_family != AF_UNIX)
++                return 0;
++
++        if (path) {
++                if (length <= 0)
++                        length = strlen(path);
++
++                if (length <= 0)
++                        /* Unnamed socket */
++                        return l == offsetof(struct sockaddr_un, sun_path);
++
++                if (path[0])
++                        /* Normal path socket */
++                        return
++                                (l >= offsetof(struct sockaddr_un, sun_path) + length + 1) &&
++                                memcmp(path, sockaddr.un.sun_path, length+1) == 0;
++                else
++                        /* Abstract namespace socket */
++                        return
++                                (l == offsetof(struct sockaddr_un, sun_path) + length) &&
++                                memcmp(path, sockaddr.un.sun_path, length) == 0;
++        }
++
++        return 1;
++}
++
++int netsnmp_sd_notify(int unset_environment, const char *state) {
++        int fd = -1, r;
++        struct msghdr msghdr;
++        struct iovec iovec;
++        union sockaddr_union sockaddr;
++        const char *e;
++
++        if (!state) {
++                r = -EINVAL;
++                goto finish;
++        }
++
++        if (!(e = getenv("NOTIFY_SOCKET")))
++                return 0;
++
++        /* Must be an abstract socket, or an absolute path */
++        if ((e[0] != '@' && e[0] != '/') || e[1] == 0) {
++                r = -EINVAL;
++                goto finish;
++        }
++
++        if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) {
++                r = -errno;
++                goto finish;
++        }
++
++        memset(&sockaddr, 0, sizeof(sockaddr));
++        sockaddr.sa.sa_family = AF_UNIX;
++        strncpy(sockaddr.un.sun_path, e, sizeof(sockaddr.un.sun_path));
++
++        if (sockaddr.un.sun_path[0] == '@')
++                sockaddr.un.sun_path[0] = 0;
++
++        memset(&iovec, 0, sizeof(iovec));
++        iovec.iov_base = (char *)state;
++        iovec.iov_len = strlen(state);
++
++        memset(&msghdr, 0, sizeof(msghdr));
++        msghdr.msg_name = &sockaddr;
++        msghdr.msg_namelen = offsetof(struct sockaddr_un, sun_path) + strlen(e);
++
++        if (msghdr.msg_namelen > sizeof(struct sockaddr_un))
++                msghdr.msg_namelen = sizeof(struct sockaddr_un);
++
++        msghdr.msg_iov = &iovec;
++        msghdr.msg_iovlen = 1;
++
++        if (sendmsg(fd, &msghdr, MSG_NOSIGNAL) < 0) {
++                r = -errno;
++                goto finish;
++        }
++
++        r = 1;
++
++finish:
++        if (unset_environment)
++                unsetenv("NOTIFY_SOCKET");
++
++        if (fd >= 0)
++                close(fd);
++
++        return r;
++}
++
++int netsnmp_sd_notifyf(int unset_environment, const char *format, ...) {
++        va_list ap;
++        char *p = NULL;
++        int r;
++
++        va_start(ap, format);
++        r = vasprintf(&p, format, ap);
++        va_end(ap);
++
++        if (r < 0 || !p)
++                return -ENOMEM;
++
++        r = netsnmp_sd_notify(unset_environment, p);
++        free(p);
++
++        return r;
++}
++
++int netsnmp_sd_booted(void) {
++        struct stat a, b;
++
++        /* We simply test whether the systemd cgroup hierarchy is
++         * mounted */
++
++        if (lstat("/sys/fs/cgroup", &a) < 0)
++                return 0;
++
++        if (lstat("/sys/fs/cgroup/systemd", &b) < 0)
++                return 0;
++
++        return a.st_dev != b.st_dev;
++}
++
++/* End of original sd-daemon.c from systemd sources */
++
++int
++netsnmp_sd_find_inet_socket(int family, int type, int listening, int port)
++{
++    int count, fd;
++
++    count = netsnmp_sd_listen_fds(0);
++    if (count <= 0) {
++        DEBUGMSGTL(("systemd:find_inet_socket", "No LISTEN_FDS found.\n"));
++        return 0;
++    }
++    DEBUGMSGTL(("systemd:find_inet_socket", "LISTEN_FDS reports %d sockets.\n",
++            count));
++
++    for (fd = 3; fd < 3+count; fd++) {
++        int rc = netsnmp_sd_is_socket_inet(fd, family, type, listening, port);
++        if (rc < 0)
++            DEBUGMSGTL(("systemd:find_inet_socket",
++                    "sd_is_socket_inet error: %d\n", rc));
++        if (rc > 0) {
++            DEBUGMSGTL(("systemd:find_inet_socket",
++                    "Found the socket in LISTEN_FDS\n"));
++            return fd;
++        }
++    }
++    DEBUGMSGTL(("systemd:find_inet_socket", "Socket not found in LISTEN_FDS\n"));
++    return 0;
++}
++
++int
++netsnmp_sd_find_unix_socket(int type, int listening, const char *path)
++{
++    int count, fd;
++
++    count = netsnmp_sd_listen_fds(0);
++    if (count <= 0) {
++        DEBUGMSGTL(("systemd:find_unix_socket", "No LISTEN_FDS found.\n"));
++        return 0;
++    }
++    DEBUGMSGTL(("systemd:find_unix_socket", "LISTEN_FDS reports %d sockets.\n",
++            count));
++
++    for (fd = 3; fd < 3+count; fd++) {
++        int rc = netsnmp_sd_is_socket_unix(fd, type, listening, path, 0);
++        if (rc < 0)
++            DEBUGMSGTL(("systemd:find_unix_socket",
++                    "netsnmp_sd_is_socket_unix error: %d\n", rc));
++        if (rc > 0) {
++            DEBUGMSGTL(("systemd:find_unix_socket",
++                    "Found the socket in LISTEN_FDS\n"));
++            return fd;
++        }
++    }
++    DEBUGMSGTL(("systemd:find_unix_socket", "Socket not found in LISTEN_FDS\n"));
++    return 0;
++}
++
++#endif /* ! NETSNMP_NO_SYSTEMD */
+diff --git a/snmplib/transports/snmpTCPDomain.c b/snmplib/transports/snmpTCPDomain.c
+index 7feb028..a41b926 100644
+--- a/snmplib/transports/snmpTCPDomain.c
++++ b/snmplib/transports/snmpTCPDomain.c
+@@ -43,6 +43,10 @@
+ #include <net-snmp/library/snmpTCPBaseDomain.h>
+ #include <net-snmp/library/tools.h>
+ 
++#ifndef NETSNMP_NO_SYSTEMD
++#include <net-snmp/library/sd-daemon.h>
++#endif
++
+ /*
+  * needs to be in sync with the definitions in snmplib/snmpUDPDomain.c
+  * and perl/agent/agent.xs
+@@ -149,6 +153,7 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local)
+     netsnmp_transport *t = NULL;
+     netsnmp_udp_addr_pair *addr_pair = NULL;
+     int rc = 0;
++    int socket_initialized = 0;
+ 
+ #ifdef NETSNMP_NO_LISTEN_SUPPORT
+     if (local)
+@@ -178,7 +183,19 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local)
+     t->domain_length =
+         sizeof(netsnmp_snmpTCPDomain) / sizeof(netsnmp_snmpTCPDomain[0]);
+ 
+-    t->sock = socket(PF_INET, SOCK_STREAM, 0);
++#ifndef NETSNMP_NO_SYSTEMD
++    /*
++     * Maybe the socket was already provided by systemd...
++     */
++    if (local) {
++        t->sock = netsnmp_sd_find_inet_socket(PF_INET, SOCK_STREAM, 1,
++                ntohs(addr->sin_port));
++        if (t->sock)
++            socket_initialized = 1;
++    }
++#endif
++    if (!socket_initialized)
++        t->sock = socket(PF_INET, SOCK_STREAM, 0);
+     if (t->sock < 0) {
+         netsnmp_transport_free(t);
+         return NULL;
+@@ -215,11 +232,13 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local)
+         setsockopt(t->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt,
+ 		   sizeof(opt));
+ 
+-        rc = bind(t->sock, (struct sockaddr *)addr, sizeof(struct sockaddr));
+-        if (rc != 0) {
+-            netsnmp_socketbase_close(t);
+-            netsnmp_transport_free(t);
+-            return NULL;
++        if (!socket_initialized) {
++            rc = bind(t->sock, (struct sockaddr *)addr, sizeof(struct sockaddr));
++            if (rc != 0) {
++                netsnmp_socketbase_close(t);
++                netsnmp_transport_free(t);
++                return NULL;
++            }
+         }
+ 
+         /*
+@@ -236,11 +255,13 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local)
+          * Now sit here and wait for connections to arrive.  
+          */
+ 
+-        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
+-        if (rc != 0) {
+-            netsnmp_socketbase_close(t);
+-            netsnmp_transport_free(t);
+-            return NULL;
++        if (!socket_initialized) {
++            rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
++            if (rc != 0) {
++                netsnmp_socketbase_close(t);
++                netsnmp_transport_free(t);
++                return NULL;
++            }
+         }
+         
+         /*
+diff --git a/snmplib/transports/snmpTCPIPv6Domain.c b/snmplib/transports/snmpTCPIPv6Domain.c
+index d2e0a2d..22de6d4 100644
+--- a/snmplib/transports/snmpTCPIPv6Domain.c
++++ b/snmplib/transports/snmpTCPIPv6Domain.c
+@@ -49,6 +49,10 @@
+ #include <net-snmp/library/snmpTCPBaseDomain.h>
+ #include <net-snmp/library/tools.h>
+ 
++#ifndef NETSNMP_NO_SYSTEMD
++#include <net-snmp/library/sd-daemon.h>
++#endif
++
+ #include "inet_ntop.h"
+ 
+ oid netsnmp_TCPIPv6Domain[] = { TRANSPORT_DOMAIN_TCP_IPV6 };
+@@ -140,6 +144,8 @@ netsnmp_tcp6_transport(struct sockaddr_in6 *addr, int local)
+ {
+     netsnmp_transport *t = NULL;
+     int             rc = 0;
++    char           *str = NULL;
++    int             socket_initialized = 0;
+ 
+ #ifdef NETSNMP_NO_LISTEN_SUPPORT
+     if (local)
+@@ -174,7 +180,19 @@ netsnmp_tcp6_transport(struct sockaddr_in6 *addr, int local)
+     t->domain = netsnmp_TCPIPv6Domain;
+     t->domain_length = sizeof(netsnmp_TCPIPv6Domain) / sizeof(oid);
+ 
+-    t->sock = socket(PF_INET6, SOCK_STREAM, 0);
++#ifndef NETSNMP_NO_SYSTEMD
++    /*
++     * Maybe the socket was already provided by systemd...
++     */
++    if (local) {
++        t->sock = netsnmp_sd_find_inet_socket(PF_INET6, SOCK_STREAM, 1,
++                ntohs(addr->sin6_port));
++        if (t->sock)
++            socket_initialized = 1;
++    }
++#endif
++    if (!socket_initialized)
++        t->sock = socket(PF_INET6, SOCK_STREAM, 0);
+     if (t->sock < 0) {
+         netsnmp_transport_free(t);
+         return NULL;
+@@ -220,12 +238,14 @@ netsnmp_tcp6_transport(struct sockaddr_in6 *addr, int local)
+ 
+         setsockopt(t->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof(opt));
+ 
+-        rc = bind(t->sock, (struct sockaddr *) addr,
+-		  sizeof(struct sockaddr_in6));
+-        if (rc != 0) {
+-            netsnmp_socketbase_close(t);
+-            netsnmp_transport_free(t);
+-            return NULL;
++        if (!socket_initialized) {
++            rc = bind(t->sock, (struct sockaddr *) addr,
++                    sizeof(struct sockaddr_in6));
++            if (rc != 0) {
++                netsnmp_socketbase_close(t);
++                netsnmp_transport_free(t);
++                return NULL;
++            }
+         }
+ 
+         /*
+@@ -242,11 +262,13 @@ netsnmp_tcp6_transport(struct sockaddr_in6 *addr, int local)
+          * Now sit here and wait for connections to arrive.  
+          */
+ 
+-        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
+-        if (rc != 0) {
+-            netsnmp_socketbase_close(t);
+-            netsnmp_transport_free(t);
+-            return NULL;
++        if (!socket_initialized) {
++            rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
++            if (rc != 0) {
++                netsnmp_socketbase_close(t);
++                netsnmp_transport_free(t);
++                return NULL;
++            }
+         }
+         
+         /*
+diff --git a/snmplib/transports/snmpUDPIPv4BaseDomain.c b/snmplib/transports/snmpUDPIPv4BaseDomain.c
+index 8c0fb05..00e5bbc 100644
+--- a/snmplib/transports/snmpUDPIPv4BaseDomain.c
++++ b/snmplib/transports/snmpUDPIPv4BaseDomain.c
+@@ -40,6 +40,10 @@
+ 
+ #include <net-snmp/library/snmpSocketBaseDomain.h>
+ 
++#ifndef NETSNMP_NO_SYSTEMD
++#include <net-snmp/library/sd-daemon.h>
++#endif
++
+ #if defined(HAVE_IP_PKTINFO) || defined(HAVE_IP_RECVDSTADDR)
+ int netsnmp_udpipv4_recvfrom(int s, void *buf, int len, struct sockaddr *from,
+                              socklen_t *fromlen, struct sockaddr *dstip,
+@@ -64,6 +68,7 @@ netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local)
+     char           *client_socket = NULL;
+     netsnmp_indexed_addr_pair addr_pair;
+     socklen_t       local_addr_len;
++    int             socket_initialized = 0;
+ 
+ #ifdef NETSNMP_NO_LISTEN_SUPPORT
+     if (local)
+@@ -88,7 +93,19 @@ netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local)
+         free(str);
+     }
+ 
+-    t->sock = socket(PF_INET, SOCK_DGRAM, 0);
++#ifndef NETSNMP_NO_SYSTEMD
++    /*
++     * Maybe the socket was already provided by systemd...
++     */
++    if (local) {
++        t->sock = netsnmp_sd_find_inet_socket(PF_INET, SOCK_DGRAM, -1,
++                ntohs(addr->sin_port));
++        if (t->sock)
++            socket_initialized = 1;
++    }
++#endif
++    if (!socket_initialized)
++        t->sock = socket(PF_INET, SOCK_DGRAM, 0);
+     DEBUGMSGTL(("UDPBase", "openned socket %d as local=%d\n", t->sock, local)); 
+     if (t->sock < 0) {
+         netsnmp_transport_free(t);
+@@ -151,12 +168,14 @@ netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local)
+             }
+         }
+ #endif /* !defined(WIN32) */
+-        rc = bind(t->sock, (struct sockaddr *) addr,
+-                  sizeof(struct sockaddr));
+-        if (rc != 0) {
+-            netsnmp_socketbase_close(t);
+-            netsnmp_transport_free(t);
+-            return NULL;
++        if (!socket_initialized) {
++            rc = bind(t->sock, (struct sockaddr *) addr,
++                    sizeof(struct sockaddr));
++            if (rc != 0) {
++                netsnmp_socketbase_close(t);
++                netsnmp_transport_free(t);
++                return NULL;
++            }
+         }
+         t->data = NULL;
+         t->data_length = 0;
+diff --git a/snmplib/transports/snmpUDPIPv6Domain.c b/snmplib/transports/snmpUDPIPv6Domain.c
+index 18de876..fd2ced4 100644
+--- a/snmplib/transports/snmpUDPIPv6Domain.c
++++ b/snmplib/transports/snmpUDPIPv6Domain.c
+@@ -67,6 +67,10 @@ static const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
+ #include <net-snmp/library/snmpSocketBaseDomain.h>
+ #include <net-snmp/library/tools.h>
+ 
++#ifndef NETSNMP_NO_SYSTEMD
++#include <net-snmp/library/sd-daemon.h>
++#endif
++
+ #include "inet_ntop.h"
+ #include "inet_pton.h"
+ 
+@@ -190,6 +194,8 @@ netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local)
+ {
+     netsnmp_transport *t = NULL;
+     int             rc = 0;
++    char           *str = NULL;
++    int             socket_initialized = 0;
+ 
+ #ifdef NETSNMP_NO_LISTEN_SUPPORT
+     if (local)
+@@ -217,7 +223,19 @@ netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local)
+     t->domain_length =
+         sizeof(netsnmp_UDPIPv6Domain) / sizeof(netsnmp_UDPIPv6Domain[0]);
+ 
+-    t->sock = socket(PF_INET6, SOCK_DGRAM, 0);
++#ifndef NETSNMP_NO_SYSTEMD
++    /*
++     * Maybe the socket was already provided by systemd...
++     */
++    if (local) {
++        t->sock = netsnmp_sd_find_inet_socket(PF_INET6, SOCK_DGRAM, -1,
++                ntohs(addr->sin6_port));
++        if (t->sock)
++            socket_initialized = 1;
++    }
++#endif
++    if (!socket_initialized)
++        t->sock = socket(PF_INET6, SOCK_DGRAM, 0);
+     if (t->sock < 0) {
+         netsnmp_transport_free(t);
+         return NULL;
+@@ -243,12 +261,14 @@ netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local)
+         }
+ #endif
+ 
+-        rc = bind(t->sock, (struct sockaddr *) addr,
+-		  sizeof(struct sockaddr_in6));
+-        if (rc != 0) {
+-            netsnmp_socketbase_close(t);
+-            netsnmp_transport_free(t);
+-            return NULL;
++        if (!socket_initialized) {
++            rc = bind(t->sock, (struct sockaddr *) addr,
++                    sizeof(struct sockaddr_in6));
++            if (rc != 0) {
++                netsnmp_socketbase_close(t);
++                netsnmp_transport_free(t);
++                return NULL;
++            }
+         }
+         t->local = (unsigned char*)malloc(18);
+         if (t->local == NULL) {
+diff --git a/snmplib/transports/snmpUnixDomain.c b/snmplib/transports/snmpUnixDomain.c
+index 47dffc1..8f34c37 100644
+--- a/snmplib/transports/snmpUnixDomain.c
++++ b/snmplib/transports/snmpUnixDomain.c
+@@ -37,6 +37,10 @@
+ #include <net-snmp/library/system.h> /* mkdirhier */
+ #include <net-snmp/library/tools.h>
+ 
++#ifndef NETSNMP_NO_SYSTEMD
++#include <net-snmp/library/sd-daemon.h>
++#endif
++
+ netsnmp_feature_child_of(transport_unix_socket_all, transport_all)
+ netsnmp_feature_child_of(unix_socket_paths, transport_unix_socket_all)
+ 
+@@ -295,6 +299,8 @@ netsnmp_unix_transport(struct sockaddr_un *addr, int local)
+     netsnmp_transport *t = NULL;
+     sockaddr_un_pair *sup = NULL;
+     int             rc = 0;
++    char           *string = NULL;
++    int             socket_initialized = 0;
+ 
+ #ifdef NETSNMP_NO_LISTEN_SUPPORT
+     /* SPECIAL CIRCUMSTANCE: We still want AgentX to be able to operate,
+@@ -333,7 +339,18 @@ netsnmp_unix_transport(struct sockaddr_un *addr, int local)
+     t->data_length = sizeof(sockaddr_un_pair);
+     sup = (sockaddr_un_pair *) t->data;
+ 
+-    t->sock = socket(PF_UNIX, SOCK_STREAM, 0);
++#ifndef NETSNMP_NO_SYSTEMD
++    /*
++     * Maybe the socket was already provided by systemd...
++     */
++    if (local) {
++        t->sock = netsnmp_sd_find_unix_socket(SOCK_STREAM, 1, addr->sun_path);
++        if (t->sock)
++            socket_initialized = 1;
++    }
++#endif
++    if (!socket_initialized)
++        t->sock = socket(PF_UNIX, SOCK_STREAM, 0);
+     if (t->sock < 0) {
+         netsnmp_transport_free(t);
+         return NULL;
+@@ -357,25 +374,26 @@ netsnmp_unix_transport(struct sockaddr_un *addr, int local)
+ 
+         t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
+ 
+-        unlink(addr->sun_path);
+-        rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
+-
+-        if (rc != 0 && errno == ENOENT && create_path) {
+-            rc = mkdirhier(addr->sun_path, create_mode, 1);
++        if (!socket_initialized) {
++            unlink(addr->sun_path);
++            rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
++            if (rc != 0 && errno == ENOENT && create_path) {
++                rc = mkdirhier(addr->sun_path, create_mode, 1);
++                if (rc != 0) {
++                    netsnmp_unix_close(t);
++                    netsnmp_transport_free(t);
++                    return NULL;
++                }
++                rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
++            }
+             if (rc != 0) {
++                DEBUGMSGTL(("netsnmp_unix_transport",
++                        "couldn't bind \"%s\", errno %d (%s)\n",
++                        addr->sun_path, errno, strerror(errno)));
+                 netsnmp_unix_close(t);
+                 netsnmp_transport_free(t);
+                 return NULL;
+             }
+-            rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
+-        }
+-        if (rc != 0) {
+-            DEBUGMSGTL(("netsnmp_unix_transport",
+-                        "couldn't bind \"%s\", errno %d (%s)\n",
+-                        addr->sun_path, errno, strerror(errno)));
+-            netsnmp_unix_close(t);
+-            netsnmp_transport_free(t);
+-            return NULL;
+         }
+ 
+         /*
+@@ -391,14 +409,16 @@ netsnmp_unix_transport(struct sockaddr_un *addr, int local)
+          * Now sit here and listen for connections to arrive.
+          */
+ 
+-        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
+-        if (rc != 0) {
+-            DEBUGMSGTL(("netsnmp_unix_transport",
+-                        "couldn't listen to \"%s\", errno %d (%s)\n",
+-                        addr->sun_path, errno, strerror(errno)));
+-            netsnmp_unix_close(t);
+-            netsnmp_transport_free(t);
+-            return NULL;
++        if (!socket_initialized) {
++            rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
++            if (rc != 0) {
++                DEBUGMSGTL(("netsnmp_unix_transport",
++                            "couldn't listen to \"%s\", errno %d (%s)\n",
++                            addr->sun_path, errno, strerror(errno)));
++                netsnmp_unix_close(t);
++                netsnmp_transport_free(t);
++                return NULL;
++            }
+         }
+ 
+     } else {
+diff --git a/win32/libsnmp/Makefile.in b/win32/libsnmp/Makefile.in
+index 98d83c8..b228d20 100644
+--- a/win32/libsnmp/Makefile.in
++++ b/win32/libsnmp/Makefile.in
+@@ -42,6 +42,7 @@ LIB32_OBJS= \
+ 	"$(INTDIR)\read_config.obj" \
+ 	"$(INTDIR)\readdir.obj" \
+ 	"$(INTDIR)\scapi.obj" \
++        "$(INTDIR)\sd-daemon.obj" \
+ 	"$(INTDIR)\snmp-tc.obj" \
+ 	"$(INTDIR)\snmp.obj" \
+ 	"$(INTDIR)\snmpCallbackDomain.obj" \
+@@ -138,6 +139,11 @@ SOURCE=..\..\snmplib\asn1.c
+ "$(INTDIR)\asn1.obj" : $(SOURCE) "$(INTDIR)"
+ 	$(CPP) $(CPP_PROJ) $(SOURCE)
+ 
++SOURCE=..\..\snmplib\sd-daemon.c
++
++"$(INTDIR)\sd-daemon.obj" : $(SOURCE) "$(INTDIR)"
++       $(CPP) $(CPP_PROJ) $(SOURCE)
++
+ 
+ SOURCE=..\..\snmplib\callback.c
+ 
+diff --git a/win32/net-snmp/net-snmp-config.h b/win32/net-snmp/net-snmp-config.h
+index 1608563..7aec547 100644
+--- a/win32/net-snmp/net-snmp-config.h
++++ b/win32/net-snmp/net-snmp-config.h
+@@ -1717,6 +1717,8 @@ enum {
+ #define DMALLOC_FUNC_CHECK
+ #endif
+ 
+++#define NETSNMP_NO_SYSTEMD
+++
+ /* #undef NETSNMP_ENABLE_LOCAL_SMUX */
+ 
+ /* define if agentx transport is to use domain sockets only */
+diff --git a/win32/net-snmp/net-snmp-config.h.in b/win32/net-snmp/net-snmp-config.h.in
+index 9693730..96ec3d9 100644
+--- a/win32/net-snmp/net-snmp-config.h.in
++++ b/win32/net-snmp/net-snmp-config.h.in
+@@ -1717,6 +1717,8 @@ enum {
+ #define DMALLOC_FUNC_CHECK
+ #endif
+ 
++#define NETSNMP_NO_SYSTEMD
++
+ /* #undef NETSNMP_ENABLE_LOCAL_SMUX */
+ 
+ /* define if agentx transport is to use domain sockets only */
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.7.3.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.7.3.bb
new file mode 100644
index 0000000..ee8878f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.7.3.bb
@@ -0,0 +1,180 @@
+SUMMARY = "Various tools relating to the Simple Network Management Protocol"
+HOMEPAGE = "http://www.net-snmp.org/"
+SECTION = "net"
+LICENSE = "BSD"
+
+LIC_FILES_CHKSUM = "file://README;beginline=3;endline=8;md5=7f7f00ba639ac8e8deb5a622ea24634e"
+
+DEPENDS = "openssl libnl pciutils"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.zip \
+        file://init \
+        file://snmpd.conf \
+        file://snmptrapd.conf \
+        file://systemd-support.patch \
+        file://snmpd.service \
+        file://snmptrapd.service \
+        file://net-snmp-add-knob-whether-nlist.h-are-checked.patch \
+        file://fix-libtool-finish.patch \
+        file://net-snmp-testing-add-the-output-format-for-ptest.patch \
+        file://run-ptest \
+        file://dont-return-incompletely-parsed-varbinds.patch \
+        file://0001-config_os_headers-Error-Fix.patch \
+        file://0001-config_os_libs2-Error-Fix.patch \
+        file://0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch \
+"
+SRC_URI[md5sum] = "9f682bd70c717efdd9f15b686d07baee"
+SRC_URI[sha256sum] = "e8dfc79b6539b71a6ff335746ce63d2da2239062ad41872fff4354cafed07a3e"
+
+inherit autotools update-rc.d siteinfo systemd pkgconfig
+
+EXTRA_OEMAKE = "INSTALL_PREFIX=${D} OTHERLDFLAGS='${LDFLAGS}' HOST_CPPFLAGS='${BUILD_CPPFLAGS}'"
+
+PARALLEL_MAKE = ""
+CCACHE = ""
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[elfutils] = "--with-elf, --without-elf, elfutils"
+PACKAGECONFIG[libnl] = "--with-nl, --without-nl, libnl"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,,"
+
+EXTRA_OECONF = "--disable-embedded-perl \
+                --with-perl-modules=no \
+                --disable-manuals \
+                --with-defaults \
+                --with-install-prefix=${D} \
+                --with-persistent-directory=${localstatedir}/lib/net-snmp \
+                ${@base_conditional('SITEINFO_ENDIANNESS', 'le', '--with-endianness=little', '--with-endianness=big', d)}"
+
+# net-snmp needs to have mib-modules=smux enabled to enable quagga to support snmp
+EXTRA_OECONF += "--with-mib-modules=smux"
+
+CACHED_CONFIGUREVARS = " \
+    ac_cv_header_valgrind_valgrind_h=no \
+    ac_cv_header_valgrind_memcheck_h=no \
+    ac_cv_ETC_MNTTAB=/etc/mtab \
+    lt_cv_shlibpath_overrides_runpath=yes \
+"
+
+do_configure_prepend() {
+    export PERLPROG="${bindir}/env perl"
+    sed -i -e "s|I/usr/include|I${STAGING_INCDIR}|g" \
+        "${S}"/configure \
+        "${S}"/configure.d/config_os_libs2
+}
+
+do_install_append() {
+    install -d ${D}${sysconfdir}/snmp
+    install -d ${D}${sysconfdir}/init.d
+    install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/snmpd
+    install -m 644 ${WORKDIR}/snmpd.conf ${D}${sysconfdir}/snmp/
+    install -m 644 ${WORKDIR}/snmptrapd.conf ${D}${sysconfdir}/snmp/
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/snmpd.service ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/snmptrapd.service ${D}${systemd_unitdir}/system
+    sed    -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g" \
+        -i ${D}${bindir}/net-snmp-create-v3-user
+    sed    -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g" \
+        -i ${D}${bindir}/net-snmp-config
+}
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}
+    for i in ${S}/dist ${S}/include ${B}/include ${S}/mibs ${S}/configure \
+        ${B}/net-snmp-config ${S}/testing; do
+        if [ -e "$i" ]; then
+            cp -R --no-dereference --preserve=mode,links -v "$i" ${D}${PTEST_PATH}
+        fi
+    done
+    echo `autoconf -V|awk '/autoconf/{print $NF}'` > ${D}${PTEST_PATH}/dist/autoconf-version
+
+    rmdlist="${D}${PTEST_PATH}/dist/net-snmp-solaris-build"
+    for i in $rmdlist; do
+        if [ -d "$i" ]; then
+            rm -rf "$i"
+        fi
+    done
+}
+
+SYSROOT_PREPROCESS_FUNCS += "net_snmp_sysroot_preprocess"
+
+net_snmp_sysroot_preprocess () {
+    if [ -e ${D}${bindir}/net-snmp-config ]; then
+        install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+        install -m 755 ${D}${bindir}/net-snmp-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+        sed -e "s@-I/usr/include@-I${STAGING_INCDIR}@g" \
+            -e "s@^prefix=.*@prefix=${STAGING_DIR_HOST}${prefix}@g" \
+            -e "s@^exec_prefix=.*@exec_prefix=${STAGING_EXECPREFIXDIR}@g" \
+            -e "s@^includedir=.*@includedir=${STAGING_INCDIR}@g" \
+            -e "s@^libdir=.*@libdir=${STAGING_LIBDIR}@g" \
+            -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=${S}@g" \
+          -i  ${SYSROOT_DESTDIR}${bindir_crossscripts}/net-snmp-config
+    fi
+}
+
+PACKAGES += "${PN}-libs ${PN}-mibs ${PN}-server ${PN}-client ${PN}-server-snmpd ${PN}-server-snmptrapd"
+
+ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY_${PN}-server = "1"
+
+FILES_${PN}-libs = "${libdir}/lib*${SOLIBS}"
+FILES_${PN}-mibs = "${datadir}/snmp/mibs"
+FILES_${PN}-server-snmpd = "${sbindir}/snmpd \
+                            ${sysconfdir}/snmp/snmpd.conf \
+                            ${sysconfdir}/init.d \
+                            ${systemd_unitdir}/system/snmpd.service \
+"
+
+FILES_${PN}-server-snmptrapd = "${sbindir}/snmptrapd \
+                                ${sysconfdir}/snmp/snmptrapd.conf \
+                                ${systemd_unitdir}/system/snmptrapd.service \
+"
+
+FILES_${PN} = ""
+FILES_${PN}-client = "${bindir}/* ${datadir}/snmp/"
+FILES_${PN}-dbg += "${libdir}/.debug/ ${sbindir}/.debug/ ${bindir}/.debug/"
+FILES_${PN}-dev += "${bindir}/mib2c ${bindir}/mib2c-update"
+
+CONFFILES_${PN}-server-snmpd = "${sysconfdir}/snmp/snmpd.conf"
+CONFFILES_${PN}-server-snmptrapd = "${sysconfdir}/snmp/snmptrapd.conf"
+
+INITSCRIPT_PACKAGES = "${PN}-server"
+INITSCRIPT_NAME_${PN}-server = "snmpd"
+INITSCRIPT_PARAMS_${PN}-server = "start 90 2 3 4 5 . stop 60 0 1 6 ."
+
+EXTRA_OECONF += "${@base_contains('DISTRO_FEATURES', 'systemd', '--with-systemd', '--without-systemd', d)}"
+
+SYSTEMD_PACKAGES = "${PN}-server-snmpd \
+                    ${PN}-server-snmptrapd"
+
+SYSTEMD_SERVICE_${PN}-server-snmpd = "snmpd.service"
+SYSTEMD_SERVICE_${PN}-server-snmptrapd =  "snmptrapd.service"
+
+RDEPENDS_${PN} += "net-snmp-client"
+RDEPENDS_${PN}-server-snmpd += "net-snmp-mibs"
+RDEPENDS_${PN}-server-snmptrapd += "net-snmp-server-snmpd"
+RDEPENDS_${PN}-server += "net-snmp-server-snmpd net-snmp-server-snmptrapd"
+RDEPENDS_${PN}-client += "net-snmp-mibs"
+RDEPENDS_${PN}-ptest += "perl \
+                         perl-module-test \
+                         perl-module-file-basename \
+                         perl-module-getopt-long \
+                         perl-module-file-temp \
+                         perl-module-data-dumper \
+"
+RDEPENDS_${PN}-dev = "net-snmp-client (= ${EXTENDPKGV}) net-snmp-server (= ${EXTENDPKGV})"
+RRECOMMENDS_${PN}-dbg = "net-snmp-client (= ${EXTENDPKGV}) net-snmp-server (= ${EXTENDPKGV})"
+
+RPROVIDES_${PN}-server-snmpd += "${PN}-server-snmpd-systemd"
+RREPLACES_${PN}-server-snmpd += "${PN}-server-snmpd-systemd"
+RCONFLICTS_${PN}-server-snmpd += "${PN}-server-snmpd-systemd"
+
+RPROVIDES_${PN}-server-snmptrapd += "${PN}-server-snmptrapd-systemd"
+RREPLACES_${PN}-server-snmptrapd += "${PN}-server-snmptrapd-systemd"
+RCONFLICTS_${PN}-server-snmptrapd += "${PN}-server-snmptrapd-systemd"
+
+LEAD_SONAME = "libnetsnmp.so"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc
new file mode 100644
index 0000000..5f465ce
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc
@@ -0,0 +1,38 @@
+SUMMARY = "OpenFlow communications protocol"
+DESCRIPTION = "\
+Open standard that enables researchers to run experimental protocols in \
+contained networks.  OpenFlow is a communications interface between \
+control and forwarding planes of a software-defined networking architecture.\
+"
+HOMEPAGE = "http://www.openflow.org"
+
+SECTION = "net"
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e870c934e2c3d6ccf085fd7cf0a1e2e2"
+
+SRC_URI = "git://gitosis.stanford.edu/openflow.git;protocol=git"
+
+DEPENDS = "virtual/libc"
+
+PACKAGECONFIG ??= "openssl"
+PACKAGECONFIG[openssl] = "--enable-ssl,--disable-ssl, openssl, libssl"
+
+EXTRA_OECONF += " \
+                 KARCH=${TARGET_ARCH} \
+                 ${@base_contains('PACKAGECONFIG', 'openssl', 'SSL_LIBS="-lssl -lcrypto"', '', d)} \
+                "
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep
+
+do_configure() {
+    ./boot.sh
+    oe_runconf
+}
+
+do_install_append() {
+    # Remove /var/run as it is created on startup
+    rm -rf ${D}${localstatedir}/run
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_1.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_1.0.bb
new file mode 100644
index 0000000..a7e254d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_1.0.bb
@@ -0,0 +1,4 @@
+include ${BPN}.inc
+
+SRCREV = "5ccca75a69f99791659bcfbcf35353ab1921320a"
+PV = "1.0"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_git.bb
new file mode 100644
index 0000000..6403bfb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_git.bb
@@ -0,0 +1,4 @@
+include ${BPN}.inc
+
+SRCREV = "c84f33f09d5dbcfc9b489f64cb30475bf36f653a"
+PV = "1.0+git${SRCPV}"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp/Makefile-modify-CFLAGS-to-aviod-build-error.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp/Makefile-modify-CFLAGS-to-aviod-build-error.patch
new file mode 100644
index 0000000..96dbc75
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp/Makefile-modify-CFLAGS-to-aviod-build-error.patch
@@ -0,0 +1,106 @@
+From 152486fa3c36c3b99d17d5b553cf87ef412fae8e Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Mon, 1 Dec 2014 01:53:41 +0900
+Subject: [PATCH] Makefile:modify CFLAGS to aviod build error.
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ Makefile         | 22 +++++++++++-----------
+ plugins/Makefile |  6 +++---
+ 2 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 4aaa448..baa7882 100644
+--- a/Makefile
++++ b/Makefile
+@@ -152,10 +152,10 @@ LIBS.dmalloc=		-ldmalloc
+ export USE_DMALLOC
+ endif
+ 
+-CPPFLAGS=		$(CPPFLAGS.l2tptest) $(CPPFLAGS-y)
+-CFLAGS=			-I. -Iusl -Icli -isystem include \
+-				-MMD -Wall -Werror -Wno-strict-aliasing \
+-				$(CPPFLAGS) $(CPPFLAGS.dmalloc) \
++ADD_CPPFLAGS=		$(CPPFLAGS.l2tptest) $(CPPFLAGS-y)
++ADD_CFLAGS=			-I. -Iusl -Icli -isystem include \
++				-MMD -Wall -Wno-strict-aliasing \
++				$(ADD_CPPFLAGS) $(CPPFLAGS.dmalloc) \
+ 				-DSYS_LIBDIR=$(SYS_LIBDIR)
+ LDFLAGS.l2tpd=		-Wl,-E -L. -Lusl -lusl -ldl $(LIBS.dmalloc) -lc
+ LDFLAGS.l2tpconfig=	-Lcli -lcli -lreadline $(LIBS.dmalloc) $(READLINE_LDFLAGS) -lc
+@@ -170,10 +170,10 @@ CFLAGS.optimize=	$(OPT_CFLAGS)
+ endif
+ export CFLAGS.optimize
+ 
+-CFLAGS+=		$(CFLAGS.optimize)
++ADD_CFLAGS+=		$(CFLAGS.optimize)
+ 
+ ifeq ($(L2TP_USE_ASYNC_RPC),y)
+-CPPFLAGS+=		-DL2TP_ASYNC_RPC
++ADD_CPPFLAGS+=		-DL2TP_ASYNC_RPC
+ endif
+ 
+ ifeq ($(L2TP_FEATURE_RPC_MANAGEMENT),y)
+@@ -220,13 +220,13 @@ endif
+ 
+ # Compile without -Wall because rpcgen-generated code is full of warnings.
+ %_xdr.o:		%_xdr.c
+-			$(CC) -I. -MMD -w $(CFLAGS.optimize) -c $(CPPFLAGS) $<
++			$(CC) -I. -MMD -w $(CFLAGS.optimize) -c $(ADD_CPPFLAGS) $<
+ 
+ %_client.o:		%_client.c
+-			$(CC) -I. -MMD -w $(CFLAGS.optimize) -c $(CPPFLAGS) $<
++			$(CC) -I. -MMD -w $(CFLAGS.optimize) -c $(ADD_CPPFLAGS) $<
+ 
+ %_server.o:		%_server.c
+-			$(CC) -I. -MMD -w $(CFLAGS.optimize) -c $(CPPFLAGS) $<
++			$(CC) -I. -MMD -w $(CFLAGS.optimize) -c $(ADD_CPPFLAGS) $<
+ 
+ %_xdr.c:		%.x
+ 			-$(RM) $@
+@@ -272,7 +272,7 @@ l2tpconfig:		$(L2TPCONFIG_SRCS.o)
+ 			$(CC) -o $@ $^ $(LDFLAGS.l2tpconfig)
+ 
+ %.o:	%.c
+-			$(CC) -c $(CFLAGS) $< -o $@
++			$(CC) -c $(CFLAGS) $(ADD_CFLAGS) $< -o $@
+ 
+ l2tp_options.h:	FORCE
+ 	@rm -f $@.tmp
+@@ -325,7 +325,7 @@ install:		install-all
+ install-all:		all install-daemon install-app
+ 
+ install-daemon:
+-			@for d in $(filter-out usl,$(SUBDIRS)); do $(MAKE) -C $$d $(MFLAGS) EXTRA_CFLAGS="$(CPPFLAGS)" install; if [ $$? -ne 0 ]; then exit 1; fi; done
++			@for d in $(filter-out usl,$(SUBDIRS)); do $(MAKE) -C $$d $(MFLAGS) EXTRA_CFLAGS="$(CPPFLAGS) $(ADD_CPPFLAGS)" install; if [ $$? -ne 0 ]; then exit 1; fi; done
+ 			$(INSTALL) -d $(DESTDIR)/usr/sbin
+ 			$(INSTALL) openl2tpd $(DESTDIR)/usr/sbin
+ 
+diff --git a/plugins/Makefile b/plugins/Makefile
+index 5be996d..6810236 100644
+--- a/plugins/Makefile
++++ b/plugins/Makefile
+@@ -1,7 +1,7 @@
+-CFLAGS	:= $(CFLAGS.optimize) -MMD -Wall \
++ADD_CFLAGS	:= $(CFLAGS.optimize) -MMD -Wall \
+ 	-isystem ../include \
+ 	-I. -I.. -I../usl -fPIC $(EXTRA_CFLAGS)
+-LDFLAGS	:= -shared
++ADD_LDFLAGS	:= -shared
+ 
+ PLUGINS.c:=	ppp_unix.c ppp_null.c ipsec.c event_sock.c
+ 
+@@ -21,7 +21,7 @@ clean:
+ 		$(RM) $(PLUGINS.so) $(wildcard *.o) $(wildcard *.d) $(SRC.generated)
+ 
+ %.so: %.c
+-		$(CC) -o $@ $(LDFLAGS) $(CFLAGS) $<
++		$(CC) -o $@ $(LDFLAGS) $(ADD_LDFLAGS) $(CFLAGS) $(ADD_CFLAGS) $<
+ 
+ install:	all
+ 		$(INSTALL) -d $(DESTDIR)$(SYS_LIBDIR)/openl2tp
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp/openl2tp-simplify-gcc-warning-hack.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp/openl2tp-simplify-gcc-warning-hack.patch
new file mode 100644
index 0000000..c11a127
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp/openl2tp-simplify-gcc-warning-hack.patch
@@ -0,0 +1,41 @@
+From 460549a3de27f8dd8371b6d6fc1f69d8bffa102b Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe_macdonald@mentor.com>
+Date: Tue, 6 Jan 2015 11:23:21 -0500
+Subject: [PATCH] openl2tp: simplify gcc warning hack
+
+The hack to work around the gcc warning causes problems with some modern
+gcc configurations.  Since the redef behaviour is essentially correct
+everywhere and since the hack is still required on 32-bit builders, leave
+it in place but remove the #if guard since it is only there to ensure that
+the l2tp_private.h file is updated if the rpc source file is changed and
+the two get out of sync.
+
+Upstream-status: pending
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+---
+ l2tp_private.h | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/l2tp_private.h b/l2tp_private.h
+index f3c1af7..cca6806 100644
+--- a/l2tp_private.h
++++ b/l2tp_private.h
+@@ -89,14 +89,8 @@
+  * So we redefine the constant with UL suffix to avoid the gcc warning.
+  * Is there some C preprocessor magic that could avoid having to do this?
+  */
+-#if L2TP_API_TUNNEL_FLAG_MTU != 2147483648
+-#error Constant L2TP_API_TUNNEL_FLAG_MTU changed. Update local definition here.
+-#endif
+ #undef L2TP_API_TUNNEL_FLAG_MTU
+ #define L2TP_API_TUNNEL_FLAG_MTU 2147483648UL
+-#if L2TP_API_SESSION_FLAG_NO_PPP != 2147483648
+-#error Constant L2TP_API_SESSION_FLAG_NO_PPP changed. Update local definition here.
+-#endif
+ #undef L2TP_API_SESSION_FLAG_NO_PPP
+ #define L2TP_API_SESSION_FLAG_NO_PPP 2147483648UL
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb
new file mode 100644
index 0000000..d043b63
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb
@@ -0,0 +1,36 @@
+SUMMARY = "An L2TP client/server, designed for VPN use."
+DESCRIPTION = "OpenL2TP is an open source L2TP client / server, written \
+specifically for Linux. It has been designed for use as an enterprise \
+L2TP VPN server or in commercial, Linux-based, embedded networking \
+products and is able to support hundreds of sessions, each with \
+different configuration. It is used by several ISPs to provide \
+L2TP services and by corporations to implement L2TP VPNs."
+HOMEPAGE = "http://www.openl2tp.org/"
+SECTION = "net"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e9d9259cbbf00945adc25a470c1d3585"
+DEPENDS = "popt flex readline"
+
+SRC_URI = "http://ftp.jaist.ac.jp/pub/sourceforge/o/op/${PN}/${PN}/${PV}/${BP}.tar.gz \
+           file://Makefile-modify-CFLAGS-to-aviod-build-error.patch \
+           file://openl2tp-simplify-gcc-warning-hack.patch \
+          "
+SRC_URI[md5sum] = "e3d08dedfb9e6a9a1e24f6766f6dadd0"
+SRC_URI[sha256sum] = "1c97704d4b963a87fbc0e741668d4530933991515ae9ab0dffd11b5444f4860f"
+
+inherit autotools-brokensep pkgconfig
+
+PARALLEL_MAKE = ""
+EXTRA_OEMAKE = 'CFLAGS="${CFLAGS} -Wno-nused-but-set-variable"'
+
+do_compile_prepend() {
+    sed -i -e "s:SYS_LIBDIR=.*:SYS_LIBDIR=${libdir}:g" \
+        -e 's:$(CROSS_COMPILE)as:${AS}:g' \
+        -e 's:$(CROSS_COMPILE)ld:${LD}:g' \
+        -e 's:$(CROSS_COMPILE)gcc:${CC}:g' \
+        -e 's:$(CROSS_COMPILE)ar:${AR}:g' \
+        -e 's:$(CROSS_COMPILE)nm:${NM}:g' \
+        -e 's:$(CROSS_COMPILE)strip:${STRIP}:g' \
+        -e 's:$(CROSS_COMPILE)install:install:g' \
+        ${S}/Makefile
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/pptp-linux/pptp-linux-1.8.0/options.pptp b/import-layers/meta-openembedded/meta-networking/recipes-protocols/pptp-linux/pptp-linux-1.8.0/options.pptp
new file mode 100644
index 0000000..f446e22
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/pptp-linux/pptp-linux-1.8.0/options.pptp
@@ -0,0 +1,30 @@
+#
+# Lock the port
+#
+lock
+
+#
+# We don't need the tunnel server to authenticate itself
+#
+noauth
+
+#
+# Turn off transmission protocols we know won't be used
+#
+nobsdcomp
+nodeflate
+
+#
+# We want MPPE
+# (option naming specific to ppp 2.4.0 with unofficial patch)
+#
+#mppe-40
+mppe-128
+#mppe-stateless
+
+#
+# We want a sane mtu/mru 
+# (ppp 2.4.0 with unofficial patch)
+#
+#mtu 1000
+#mru 1000
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/pptp-linux/pptp-linux_1.8.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/pptp-linux/pptp-linux_1.8.0.bb
new file mode 100644
index 0000000..bc8b2cb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/pptp-linux/pptp-linux_1.8.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Client for Microsoft PPTP VPNs"
+DESCRIPTION = "PPTP Client is a Linux, FreeBSD, NetBSD \
+    and OpenBSD client for the proprietary Microsoft Point-to-Point \
+    Tunneling Protocol, PPTP. Allows connection to a PPTP based \
+    Virtual Private Network (VPN) as used by employers and some \
+    cable and ADSL internet service providers."
+HOMEPAGE = "http://pptpclient.sourceforge.net"
+SECTION = "net"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/sourceforge/pptpclient/pptp-${PV}.tar.gz \
+           file://options.pptp \
+"
+
+SRC_URI[md5sum] = "4efce9f263e2c3f38d79d9df222476de"
+SRC_URI[sha256sum] = "e39c42d933242a8a6dd8600a0fa7f0a5ec8f066d10c4149d8e81a5c68fe4bbda"
+
+S = "${WORKDIR}/pptp-${PV}"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_install() {
+    install -d ${D}${sbindir} ${D}${sysconfdir}/ppp ${D}${mandir}/man8
+    install -m 555 pptp ${D}${sbindir}
+    install -m 644 pptp.8 ${D}${mandir}/man8
+    install -m 644 ${WORKDIR}/options.pptp ${D}${sysconfdir}/ppp
+}
+
+RDEPENDS_${PN} = "ppp"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/0001-ospf6d-check-ospf6-before-using-it-in-ospf6_clean.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/0001-ospf6d-check-ospf6-before-using-it-in-ospf6_clean.patch
new file mode 100644
index 0000000..f08bb57
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/0001-ospf6d-check-ospf6-before-using-it-in-ospf6_clean.patch
@@ -0,0 +1,28 @@
+Upstream-Status: Pending
+
+Subject: ospf6d: check ospf6 before using it in ospf6_clean
+
+The ospf6 variable might be 'NULL' causing segment fault error.
+Check it before referencing it.
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ ospf6d/ospf6d.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/ospf6d/ospf6d.c b/ospf6d/ospf6d.c
+index 3cdd5c1..e3bf1af 100644
+--- a/ospf6d/ospf6d.c
++++ b/ospf6d/ospf6d.c
+@@ -1892,6 +1892,8 @@ ospf6_init (void)
+ void
+ ospf6_clean (void)
+ {
++  if (ospf6 == NULL)
++    return;
+   if (ospf6->route_table)
+     ospf6_route_remove_all (ospf6->route_table);
+   if (ospf6->brouter_table)
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/Zebra-sync-zebra-routing-table-with-the-kernel-one.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/Zebra-sync-zebra-routing-table-with-the-kernel-one.patch
new file mode 100644
index 0000000..35f4637
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/Zebra-sync-zebra-routing-table-with-the-kernel-one.patch
@@ -0,0 +1,48 @@
+sync zebra routing table with the kernel one when interface is down
+
+Add router to kernel main router table with "ip", then you can see 
+a router item in kernel main router table. Also can see this router
+item in zebra router table. If down the interface, this router item
+will be deleted from kernel main router table, but it will not be 
+deleted from zebra router table, just set as inactive.
+
+This patch is adopted from [1].
+[1] http://www.gossamer-threads.com/lists/quagga/dev/22609
+
+Upstream-Status: Pending
+
+Signed-of-by: Aws Ismail <aws.ismail@windriver.com>
+Signed-of-by: Roy.Li <rongqing.li@windriver.com>
+
+---
+ zebra/zebra_rib.c |    7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
+index 154e8d5..63434d0 100644
+--- a/zebra/zebra_rib.c
++++ b/zebra/zebra_rib.c
+@@ -765,6 +765,9 @@ rib_match_ipv6 (struct in6_addr *addr)
+ #define RIB_SYSTEM_ROUTE(R) \
+         ((R)->type == ZEBRA_ROUTE_KERNEL || (R)->type == ZEBRA_ROUTE_CONNECT)
+ 
++#define RIB_KERNEL_ROUTE(R) \
++	((R)->type == ZEBRA_ROUTE_KERNEL)
++
+ /* This function verifies reachability of one given nexthop, which can be
+  * numbered or unnumbered, IPv4 or IPv6. The result is unconditionally stored
+  * in nexthop->flags field. If the 4th parameter, 'set', is non-zero,
+@@ -1135,6 +1138,10 @@ rib_process (struct route_node *rn)
+       redistribute_delete (&rn->p, fib);
+       if (! RIB_SYSTEM_ROUTE (fib))
+ 	rib_uninstall_kernel (rn, fib);
++#ifdef GNU_LINUX
++      else if(RIB_KERNEL_ROUTE (fib) && !if_is_up(if_lookup_by_index(fib->nexthop->ifindex)))
++	del=fib;
++#endif
+       UNSET_FLAG (fib->flags, ZEBRA_FLAG_SELECTED);
+ 
+       /* Set real nexthop. */
+-- 
+1.7.4.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/babel-close-the-stdout-stderr-as-in-other-daemons.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/babel-close-the-stdout-stderr-as-in-other-daemons.patch
new file mode 100644
index 0000000..c2757a2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/babel-close-the-stdout-stderr-as-in-other-daemons.patch
@@ -0,0 +1,50 @@
+From ba71f768e6dbb1f2ac72ed3bd880bff75a48d345 Mon Sep 17 00:00:00 2001
+From: Roy Li <rongqing.li@windriver.com>
+Date: Wed, 19 Feb 2014 14:13:40 +0800
+Subject: [PATCH] babeld: close stdout once the background daemon is created
+
+Upstream-Status: pending
+
+Once babald becomes a background daemon, it should not output information to
+stdout, so need to close stdout.
+
+In fact, other daemons close their stdout when they run into background, like
+ospfd, isisd and bgpd, by calling daemon() which is in lib/daemon.c
+
+Closing the stdout can fix a tee hang issue { #/usr/sbin/babeld -d |tee tmp }
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ babeld/util.c |   10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/babeld/util.c b/babeld/util.c
+index 011f382..76203bc 100644
+--- a/babeld/util.c
++++ b/babeld/util.c
+@@ -425,7 +425,7 @@ uchar_to_in6addr(struct in6_addr *dest, const unsigned char *src)
+ int
+ daemonise()
+ {
+-    int rc;
++    int rc, fd;
+ 
+     fflush(stdout);
+     fflush(stderr);
+@@ -441,5 +441,13 @@ daemonise()
+     if(rc < 0)
+         return -1;
+ 
++    fd = open("/dev/null", O_RDWR, 0);
++    if (fd != -1)
++    {
++        dup2(fd, STDOUT_FILENO);
++        if (fd > 2)
++            close(fd);
++    }
++
+     return 1;
+ }
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/babeld.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/babeld.service
new file mode 100644
index 0000000..dd344b0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/babeld.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Babel routing daemon
+BindTo=zebra.service
+After=zebra.service
+ConditionPathExists=@SYSCONFDIR@/quagga/babeld.conf
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/quagga
+ExecStart=@SBINDIR@/babeld -d $babeld_options -f /etc/quagga/babeld.conf
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/bgpd.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/bgpd.service
new file mode 100644
index 0000000..76f9f61
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/bgpd.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=BGP routing daemon
+BindTo=zebra.service
+After=zebra.service
+ConditionPathExists=@SYSCONFDIR@/quagga/bgpd.conf
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/quagga
+PIDFile=@localstatedir@/run/quagga/bgpd.pid
+ExecStart=@SBINDIR@/bgpd -d $bgpd_options -f @SYSCONFDIR@/quagga/bgpd.conf
+ExecStopPost=@base_bindir@/rm -rf @localstatedir@/run/quagga/bgpd.pid
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/isisd.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/isisd.service
new file mode 100644
index 0000000..9bfe7b6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/isisd.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=IS-IS routing daemon
+BindTo=zebra.service
+After=zebra.service
+ConditionPathExists=@SYSCONFDIR@/quagga/isisd.conf
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/quagga
+ExecStart=@SBINDIR@/isisd -d $isisd_options -f /etc/quagga/isisd.conf
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ospf6d.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ospf6d.service
new file mode 100644
index 0000000..a2e493b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ospf6d.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=OSPF routing daemon for IPv6
+BindTo=zebra.service
+After=zebra.service
+ConditionPathExists=@SYSCONFDIR@/quagga/ospf6d.conf
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/quagga
+PIDFile=@localstatedir@/run/quagga/ospf6d.pid
+ExecStart=@SBINDIR@/ospf6d -d $ospf6d_options -f @SYSCONFDIR@/quagga/ospf6d.conf
+ExecStopPost=@base_bindir@/rm -rf @localstatedir@/run/quagga/ospf6d.pid
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ospfd.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ospfd.service
new file mode 100644
index 0000000..0c62cbc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ospfd.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=OSPF routing daemon
+BindTo=zebra.service
+After=zebra.service
+ConditionPathExists=@SYSCONFDIR@/quagga/ospfd.conf
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/quagga
+PIDFile=@localstatedir@/run/quagga/ospfd.pid
+ExecStart=@SBINDIR@/ospfd -d $ospfd_options -f @SYSCONFDIR@/quagga/ospfd.conf
+ExecStopPost=@base_bindir@/rm -rf @localstatedir@/run/quagga/ospfd.pid
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga-Avoid-duplicate-connected-address.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga-Avoid-duplicate-connected-address.patch
new file mode 100644
index 0000000..a07e33f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga-Avoid-duplicate-connected-address.patch
@@ -0,0 +1,54 @@
+quagga: Avoid duplicate connected address adding to the list
+
+commit 27ba970b9("quagga/ripd: Fix two bugs after received SIGHUP signal")
+introduces an regression: ifp->connected list is cleaned up when ripd is
+restarting, however, for interface addresses which are not specified in
+ripd configuration file, they are never to be added into ifp->connected
+again, this will lead to some abnormal behavior for route advertising.
+
+Instead of cleaning up the ifp->connected list to avoid duplicated
+connected address being added into this list, we can check this
+condition during interface address adding process and return early
+when an identical address has already been added.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hu Yadi <Yadi.hu@windriver.com>
+Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+Signed-off-by: Joe MacDonald <joe@deserted.net>
+---
+--- a/lib/if.c
++++ b/lib/if.c
+@@ -738,6 +738,16 @@ connected_add_by_prefix (struct interfac
+                          struct prefix *destination)
+ {
+   struct connected *ifc;
++  struct listnode *cnode;
++  struct connected *c;
++  int ret = 0;
++
++  for (ALL_LIST_ELEMENTS_RO (ifp->connected, cnode, c))
++    {
++      ret = connected_same_prefix (p, (c->address));
++      if(ret == 1)
++        return NULL;
++    }
+ 
+   /* Allocate new connected address. */
+   ifc = connected_new ();
+--- a/ripd/rip_interface.c
++++ b/ripd/rip_interface.c
+@@ -516,13 +516,6 @@ rip_interface_clean (void)
+ 	  thread_cancel (ri->t_wakeup);
+ 	  ri->t_wakeup = NULL;
+ 	}
+-
+-      for (conn_node = listhead (ifp->connected); conn_node; conn_node = next)
+-        {
+-          ifc = listgetdata (conn_node);
+-          next = conn_node->next;
+-          listnode_delete (ifp->connected, ifc);
+-        }
+     }
+ }
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga.default b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga.default
new file mode 100644
index 0000000..0c1ce6c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga.default
@@ -0,0 +1,13 @@
+# If this option is set the /etc/init.d/quagga script automatically loads
+# the config via "vtysh -b" when the servers are started.
+vtysh_enable=yes
+
+# Bind all daemons to loopback only by default
+zebra_options=" --daemon -A 127.0.0.1"
+babeld_options="--daemon -A 127.0.0.1"
+bgpd_options="  --daemon -A 127.0.0.1"
+ospfd_options=" --daemon -A 127.0.0.1"
+ospf6d_options="--daemon -A ::1"
+ripd_options="  --daemon -A 127.0.0.1"
+ripngd_options="--daemon -A ::1"
+isisd_options=" --daemon -A 127.0.0.1"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga.init b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga.init
new file mode 100644
index 0000000..60b5ab0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga.init
@@ -0,0 +1,200 @@
+#!/bin/sh
+#
+# /etc/init.d/quagga -- start/stop the Quagga routing daemons
+#
+# Based on debian version by Endre Hirling <endre@mail.elte.hu> and 
+# Christian Hammers <ch@debian.org>.
+#
+
+### BEGIN INIT INFO
+# Provides: quagga
+# Required-Start: $local_fs $network $remote_fs $syslog
+# Required-Stop: $local_fs $network $remote_fs $syslog
+# Default-Start:  2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: start and stop the Quagga routing suite
+# Description: Quagga is a routing suite for IP routing protocols like 
+#              BGP, OSPF, RIP and others. This script contols the main 
+#              daemon "quagga" as well as the individual protocol daemons.
+### END INIT INFO
+
+# NOTE: sbin must be before bin so we get the iproute2 ip and not the
+# busybox ip command. The busybox one flushes all routes instead of just
+# the dynamic routes
+PATH=/sbin:/usr/sbin:/bin:/usr/bin:/sbin
+D_PATH=/usr/sbin
+C_PATH=/etc/quagga
+
+# Keep zebra first and do not list watchquagga!
+DAEMONS="zebra bgpd ripd ripngd ospfd ospf6d isisd babeld"
+
+# Print the name of the pidfile.
+pidfile()
+{
+	echo "/var/run/quagga/$1.pid"
+}
+
+# Check if daemon is started by using the pidfile.
+started()
+{
+	[ -e `pidfile $1` ] && kill -0 `cat \`pidfile $1\`` 2> /dev/null && return 0
+	return 1
+}
+
+# Loads the config via vtysh -b if configured to do so.
+vtysh_b ()
+{
+	# Rember, that all variables have been incremented by 1 in convert_daemon_prios()
+	if [ "$vtysh_enable" = 2 -a -f $C_PATH/Quagga.conf ]; then
+		/usr/bin/vtysh -b
+	fi
+}
+
+# Check if the daemon is activated and if its executable and config files 
+# are in place.
+# params: 	daemon name
+# returns:	0=ok, 1=error
+check_daemon()
+{
+	# If the integrated config file is used the others are not checked.
+	if [ -r "$C_PATH/Quagga.conf" ]; then
+	  return 0
+	fi 
+
+	# check for config file		  
+	if [ ! -r "$C_PATH/$1.conf" ]; then
+	  return 1
+	fi
+	return 0
+}
+
+# Starts the server if it's not alrady running according to the pid file.
+# The Quagga daemons creates the pidfile when starting.
+start()
+{
+	if ! check_daemon $1; then echo -n " (!$1)"; return; fi
+	echo -n " $1"
+	start-stop-daemon \
+		--start \
+		--pidfile=`pidfile $1` \
+		--exec "$D_PATH/$1" \
+		-- \
+		`eval echo "$""$1""_options"`
+		
+}
+
+# Stop the daemon given in the parameter, printing its name to the terminal.
+stop()
+{
+    if ! started "$1" ; then
+	echo -n " (!$1)"
+	return 0
+    else
+	PIDFILE=`pidfile $1`
+	PID=`cat $PIDFILE 2>/dev/null`
+	start-stop-daemon --stop --quiet --exec "$D_PATH/$1"
+	#
+	#       Now we have to wait until $DAEMON has _really_ stopped.
+	#
+	if test -n "$PID" && kill -0 $PID 2>/dev/null; then
+	    echo -n " (waiting) ."
+	    cnt=0
+	    while kill -0 $PID 2>/dev/null; do
+		cnt=`expr $cnt + 1`
+		if [ $cnt -gt 60 ]; then
+		    # Waited 120 secs now, fail.
+		    echo -n "Failed.. "
+		    break
+		fi
+		sleep 2
+		echo -n "."
+		done
+	    fi
+	echo -n " $1"
+	rm -f `pidfile $1`
+    fi
+}
+
+stop_all() 
+{
+	local daemon_list
+	daemon_list=${1:-$DAEMONS}
+
+	echo -n "Stopping Quagga daemons:"
+	for daemon_name in $daemon_list; do
+		stop "$daemon_name"
+	done
+	echo "."
+}
+
+start_all()
+{
+	local daemon_list
+	daemon_list=${1:-$DAEMONS}
+
+	echo -n "Starting Quagga daemons:"
+	for daemon_name in $daemon_list; do
+		start "$daemon_name"
+	done
+	echo "."
+}
+
+status_all() 
+{
+	local daemon_list
+	daemon_list=${1:-$DAEMONS}
+	res=1
+
+	echo -n "quagga: "
+	for daemon_name in $daemon_list; do
+	    if started "$daemon_name" ; then
+		id=`cat \`pidfile $daemon_name\``
+		echo -n "$daemon_name (pid $id) "
+		res=0
+	    fi
+	done
+	if [ $res -eq 0 ]; then
+	    echo "is running..."
+	else
+	    echo "is stopped..."
+	fi
+	exit $res
+}
+
+#########################################################
+# 		Main program 				#
+#########################################################
+
+# Load configuration
+test -f /etc/default/quagga && . /etc/default/quagga
+
+case "$1" in
+    start)
+	cd $C_PATH/
+	start_all $2
+	vtysh_b
+    	;;
+	
+    stop)
+  	stop_all $2
+	echo "Removing all routes made by zebra."
+	ip route flush proto zebra
+   	;;
+
+    status)
+  	status_all $2
+   	;;
+
+    restart|force-reload)
+	$0 stop $2
+	sleep 1
+	$0 start $2
+	;;
+
+    *)
+    	echo "Usage: /etc/init.d/quagga {start|stop|restart|status|force-reload} [daemon]"
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga.pam b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga.pam
new file mode 100644
index 0000000..3541a97
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/quagga.pam
@@ -0,0 +1,13 @@
+#
+# The PAM configuration file for the quagga `vtysh' service
+#
+
+# This allows root to change user infomation without being
+# prompted for a password
+auth		sufficient	pam_rootok.so
+
+# The standard Unix authentication modules, used with
+# NIS (man nsswitch) as well as normal /etc/passwd and
+# /etc/shadow entries.
+auth       include      common-auth
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ripd-fix-two-bugs-after-received-SIGHUP.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ripd-fix-two-bugs-after-received-SIGHUP.patch
new file mode 100644
index 0000000..4b8c9a9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ripd-fix-two-bugs-after-received-SIGHUP.patch
@@ -0,0 +1,50 @@
+ripd: Fix two bugs after received SIGHUP signal
+
+There are two problems for ripd implementation after received
+SIGHUP signal:
+1). ripd didn't clean up ifp->connected list before reload
+    configuration file.
+2). ripd reset ri->split_horizon flag to RIP_NO_SPLIT_HORIZON
+    which lead to the unnecessary route to be advertised.
+
+Upstream-Status: Submitted [http://patchwork.diac24.net/patch/604/]
+
+Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+Signed-off-by: Joe MacDonald <joe@deserted.net>
+---
+--- a/ripd/rip_interface.c
++++ b/ripd/rip_interface.c
+@@ -500,6 +500,8 @@
+   struct listnode *node;
+   struct interface *ifp;
+   struct rip_interface *ri;
++  struct connected *ifc;
++  struct listnode *conn_node, *next;
+ 
+   for (ALL_LIST_ELEMENTS_RO (iflist, node, ifp))
+     {
+@@ -514,6 +516,13 @@
+ 	  thread_cancel (ri->t_wakeup);
+ 	  ri->t_wakeup = NULL;
+ 	}
++
++      for (conn_node = listhead (ifp->connected); conn_node; conn_node = next)
++        {
++          ifc = listgetdata (conn_node);
++          next = conn_node->next;
++          listnode_delete (ifp->connected, ifc);
++        }
+     }
+ }
+ 
+@@ -548,8 +557,8 @@
+ 	  ri->key_chain = NULL;
+ 	}
+ 
+-      ri->split_horizon = RIP_NO_SPLIT_HORIZON;
+-      ri->split_horizon_default = RIP_NO_SPLIT_HORIZON;
++      ri->split_horizon = RIP_SPLIT_HORIZON;
++      ri->split_horizon_default = RIP_SPLIT_HORIZON;
+ 
+       ri->list[RIP_FILTER_IN] = NULL;
+       ri->list[RIP_FILTER_OUT] = NULL;
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ripd.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ripd.service
new file mode 100644
index 0000000..1d20389
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ripd.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=RIP routing daemon
+BindTo=zebra.service
+After=zebra.service
+ConditionPathExists=@SYSCONFDIR@/quagga/ripd.conf
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/quagga
+PIDFile=@localstatedir@/run/quagga/ripd.pid
+ExecStart=@SBINDIR@/ripd -d $ripd_options -f @SYSCONFDIR@/quagga/ripd.conf
+ExecStopPost=@base_bindir@/rm -rf @localstatedir@/run/quagga/ripd.pid
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ripngd.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ripngd.service
new file mode 100644
index 0000000..0355ad1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/ripngd.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=RIP routing daemon for IPv6
+BindTo=zebra.service
+After=zebra.service
+ConditionPathExists=@SYSCONFDIR@/quagga/ripngd.conf
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/quagga
+PIDFile=@localstatedir@/run/quagga/ripngd.pid
+ExecStart=@SBINDIR@/ripngd -d $ripngd_options -f @SYSCONFDIR@/quagga/ripngd.conf
+ExecStopPost=@base_bindir@/rm -rf @localstatedir@/run/quagga/ripngd.pid
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/volatiles.03_quagga b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/volatiles.03_quagga
new file mode 100644
index 0000000..1f28c0b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/volatiles.03_quagga
@@ -0,0 +1,3 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d quagga quagga 0755 /var/run/quagga none
+d quagga quagga 0755 /var/log/quagga none
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/watchquagga.default b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/watchquagga.default
new file mode 100644
index 0000000..2d601ec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/watchquagga.default
@@ -0,0 +1,12 @@
+# Watchquagga configuration
+#watch_daemons="zebra bgpd ospfd ospf6d ripd ripngd"
+watch_daemons="zebra"
+
+# To enable restarts when multiple daemons are being used, uncomment this line (but first be sure to edit
+# the WATCH_DAEMONS line to reflect the daemons you are actually using):
+#watch_options="-Az -b_ -r/etc/init.d/quagga_restart_%s -s/etc/init.d/quagga_start_%s -k/etc/init.d/quagga_stop_%s"
+
+# Since we are using one quagga daemon for now, use the following line. If using
+# multiple daemons, comment the line below and uncoment the line mentioned
+# above.
+watch_options="-z -b_ -r/etc/init.d/quagga_restart_%s"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/watchquagga.init b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/watchquagga.init
new file mode 100644
index 0000000..5ddd94a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/watchquagga.init
@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: watchquagga
+# Required-Start: $local_fs $network $remote_fs $syslog
+# Required-Stop: $local_fs $network $remote_fs $syslog
+# Default-Start:  2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: start and stop the Quagga watchdog
+### END INIT INFO
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+# Load configuration
+test -f /etc/default/watchquagga && . /etc/default/watchquagga
+
+# Check that there are daemons to be monitored.
+[ -z "$watch_daemons" ] && exit 0
+
+pidfile="/var/run/quagga/watchquagga.pid"
+
+case "$1" in
+    start)
+	echo -n "Starting quagga watchdog daemon: watchquagga"
+	start-stop-daemon --start \
+		--pidfile $pidfile \
+		--exec /usr/sbin/watchquagga \
+		-- -d $watch_options $watch_daemons
+	echo "."
+    	;;
+	
+    stop)
+	echo -n "Stopping quagga watchdog daemon: watchquagga"
+	start-stop-daemon --stop --quiet \
+		--pidfile $pidfile
+	echo "."
+	;;
+
+    status)
+	echo -n "watchquagga "
+	res=1
+	[ -e $pidfile ] && kill -0 `cat $pidfile` 2> /dev/null
+	if [ $? -eq 0 ]; then
+	    echo "(pid `cat $pidfile`) is running..."
+	    res=0
+	else
+	    echo "is stopped..."
+	fi
+	exit $res
+	;;
+
+    restart|force-reload)
+	$0 stop $2
+	sleep 1
+	$0 start $2
+	;;
+
+    *)
+	echo "Usage: /etc/init.d/watchquagga {start|stop|restart|force-reload}"
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/zebra.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/zebra.service
new file mode 100644
index 0000000..e4fb6c8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/files/zebra.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=GNU Zebra routing manager
+Wants=network.target
+Before=network.target
+ConditionPathExists=@SYSCONFDIR@/quagga/zebra.conf
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/quagga
+PIDFile=@localstatedir@/run/quagga/zebra.pid
+ExecStartPre=@BASE_SBINDIR@/ip route flush proto zebra
+ExecStart=@SBINDIR@/zebra -d $zebra_options -f @SYSCONFDIR@/quagga/zebra.conf
+ExecStopPost=@base_bindir@/rm -rf @localstatedir@/run/quagga/zebra.pid
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc
new file mode 100644
index 0000000..de78e26
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc
@@ -0,0 +1,251 @@
+SUMMARY = "BGP/OSPF/RIP routing daemon"
+DESCRIPTION = "Quagga is a routing software suite, providing \
+implementations of OSPFv2, OSPFv3, RIP v1 and v2, RIPv3 and BGPv4 for \
+Unix platforms, particularly FreeBSD, Linux, Solaris and NetBSD. \
+Quagga is a fork of GNU Zebra which was developed by Kunihiro \
+Ishiguro. The Quagga tree aims to build a more involved community \
+around Quagga than the current centralised model of GNU Zebra."
+HOMEPAGE = "http://www.nongnu.org/quagga/"
+SECTION = "net"
+LICENSE = "GPL-2.0 & LGPL-2.0"
+DEPENDS = "readline ncurses perl-native"
+DEPENDS += "${@base_contains('DISTRO_FEATURES', 'snmp', 'net-snmp', '', d)}"
+SNMP_CONF="${@base_contains('DISTRO_FEATURES', 'snmp', '--enable-snmp', '', d)}"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=81bcece21748c91ba9992349a91ec11d \
+                    file://COPYING.LIB;md5=01ef24401ded36cd8e5d18bfe947240c"
+
+# the "ip" command from busybox is not sufficient (flush by protocol flushes all routes)
+RDEPENDS_${PN} += "iproute2"
+
+QUAGGASUBDIR = ""
+# ${QUAGGASUBDIR} is deal with old versions. Set to "/attic" for old
+# versions and leave it empty for recent versions.
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/quagga${QUAGGASUBDIR}/quagga-${PV}.tar.gz; \
+           file://Zebra-sync-zebra-routing-table-with-the-kernel-one.patch \
+           file://quagga.init \
+           file://quagga.default \
+           file://watchquagga.init \
+           file://watchquagga.default \
+           file://volatiles.03_quagga \
+           file://quagga.pam \
+           file://ripd-fix-two-bugs-after-received-SIGHUP.patch \
+           file://quagga-Avoid-duplicate-connected-address.patch \
+           file://babeld.service \
+           file://bgpd.service \
+           file://isisd.service \
+           file://ospf6d.service \
+           file://ospfd.service \
+           file://ripd.service \
+           file://ripngd.service \
+           file://zebra.service \
+"
+
+PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
+PACKAGECONFIG[cap] = "--enable-capabilities,--disable-capabilities,libcap"
+PACKAGECONFIG[pam] = "--with-libpam, --without-libpam, libpam"
+
+inherit autotools update-rc.d useradd systemd
+
+SYSTEMD_PACKAGES = "${PN} ${PN}-babeld ${PN}-bgpd ${PN}-isisd ${PN}-ospf6d ${PN}-ospfd ${PN}-ripd ${PN}-ripngd"
+SYSTEMD_SERVICE_${PN}-babeld = "babeld.service"
+SYSTEMD_SERVICE_${PN}-bgpd = "bgpd.service"
+SYSTEMD_SERVICE_${PN}-isisd = "isisd.service"
+SYSTEMD_SERVICE_${PN}-ospf6d = "ospf6d.service"
+SYSTEMD_SERVICE_${PN}-ospfd = "ospfd.service"
+SYSTEMD_SERVICE_${PN}-ripd = "ripd.service"
+SYSTEMD_SERVICE_${PN}-ripngd = "ripngd.service"
+SYSTEMD_SERVICE_${PN} = "zebra.service"
+
+EXTRA_OECONF = "--sysconfdir=${sysconfdir}/quagga \
+                --localstatedir=${localstatedir}/run/quagga \
+                --enable-exampledir=${docdir}/quagga/examples/ \
+                --enable-vtysh \
+                --enable-isisd \
+                ${@base_contains('DISTRO_FEATURES', 'sysvinit', '--enable-watchquagga', '--disable-watchquagga', d)} \
+                --enable-ospf-te \
+                --enable-opaque-lsa \
+                --enable-ospfclient=yes \
+                --enable-multipath=64 \
+                --enable-user=quagga \
+                --enable-group=quagga \
+                --enable-vty-group=quaggavty \
+                --enable-configfile-mask=0640 \
+                --enable-logfile-mask=0640 \
+                --enable-rtadv \
+                --enable-linux24-tcp-md5 \
+                ap_cv_cc_pie=no \
+                ${SNMP_CONF}"
+
+do_install () {
+    # Install init script and default settings
+    install -m 0755 -d ${D}${sysconfdir}/default ${D}${sysconfdir}/init.d \
+    ${D}${sysconfdir}/quagga ${D}${sysconfdir}/default/volatiles
+    install -m 0644 ${WORKDIR}/quagga.default ${D}${sysconfdir}/default/quagga
+    install -m 0644 ${WORKDIR}/watchquagga.default ${D}${sysconfdir}/default/watchquagga
+    install -m 0755 ${WORKDIR}/quagga.init ${D}${sysconfdir}/init.d/quagga
+    install -m 0755 ${WORKDIR}/watchquagga.init ${D}${sysconfdir}/init.d/watchquagga
+    install -m 0644 ${WORKDIR}/volatiles.03_quagga  ${D}${sysconfdir}/default/volatiles/volatiles.03_quagga
+
+    # Install sample configurations for the daemons
+    for f in bgpd vtysh babeld isisd ospfd ripngd zebra ripd ospf6d; do
+        install -m 0640 ${S}/$f/$f.conf.sample ${D}${sysconfdir}/quagga/$f.conf.sample
+    done
+
+    for f in bgpd vtysh babeld isisd ospfd ripngd zebra ripd ospf6d; do
+	touch ${D}${sysconfdir}/quagga/$f.conf
+    done
+    chown quagga:quaggavty ${D}${sysconfdir}/quagga
+    chown quagga:quagga ${D}${sysconfdir}/quagga/*.conf
+    chmod 750 ${D}${sysconfdir}/quagga
+    chmod 640 ${D}${sysconfdir}/quagga/*.conf
+
+    # Install quagga
+    oe_runmake install DESTDIR=${D} prefix=${prefix} \
+            sbindir=${sbindir} \
+            sysconfdir=${sysconfdir}/quagga \
+            localstatedir=${localstatedir}/run/quagga
+
+    # Fix hardcoded paths
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/*
+    sed -i 's!/usr/bin/!${bindir}/!g' ${D}${sysconfdir}/init.d/quagga
+    sed -i 's!/etc/!${sysconfdir}/!g' ${D}${sysconfdir}/init.d/* ${D}${sysconfdir}/default/watchquagga
+    sed -i 's!/var/!${localstatedir}/!g' ${D}${sysconfdir}/init.d/* ${D}${sysconfdir}/default/volatiles/volatiles.03_quagga
+    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${sbindir}:${base_bindir}:${bindir}!' ${D}${sysconfdir}/init.d/*
+
+    # Remove generated info dir file, it doesn't belong in the generated
+    # package.
+    rm -f ${D}${infodir}/dir
+
+    # For PAM
+    for feature in ${DISTRO_FEATURES}; do
+        if [ "$feature" = "pam" ]; then
+            install -D -m 644 ${WORKDIR}/quagga.pam ${D}/${sysconfdir}/pam.d/quagga
+            break
+        fi
+    done
+
+    if ${@base_contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        echo "d /var/run/quagga 0755 quagga quagga -" \
+        > ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
+    fi
+
+    # Remove sysinit script if sysvinit is not in DISTRO_FEATURES
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'false', 'true', d)}; then
+        rm -rf ${D}${sysconfdir}/init.d/
+        rm -f ${D}${sysconfdir}/default/watchquagga
+    fi
+
+    install -d ${D}${systemd_unitdir}/system
+    for i in babeld bgpd isisd ospf6d ospfd ripd ripngd zebra; do
+        install -m 0644 ${WORKDIR}/$i.service ${D}${systemd_unitdir}/system
+    done
+    sed -e 's,@BASE_SBINDIR@,${base_sbindir},g' \
+        -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+        -e 's,@SBINDIR@,${sbindir},g' \
+        -e 's,@base_bindir@,${base_bindir},g' \
+        -e 's,@localstatedir@,${localstatedir},g' \
+        -i ${D}${systemd_unitdir}/system/*.service
+}
+
+DEPENDS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-systemctl-native', '', d)}"
+pkg_postinst_${PN} () {
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd sysvinit', 'true', 'false', d)}; then
+        if [ -n "$D" ]; then
+            OPTS="--root=$D"
+        fi
+        systemctl $OPTS mask quagga.service
+    fi
+}
+
+# Split into a main package and separate per-protocol packages
+PACKAGE_BEFORE_PN = "${PN}-ospfd ${PN}-ospf6d ${PN}-babeld ${PN}-bgpd \
+                     ${PN}-ripd ${PN}-ripngd ${PN}-isisd \
+                     ${PN}-ospfclient ${@base_contains('DISTRO_FEATURES', 'sysvinit', '${PN}-watchquagga', '', d)}"
+
+RDEPENDS_${PN} += "${PN}-babeld ${PN}-bgpd ${PN}-isisd ${PN}-ospf6d ${PN}-ospfd ${PN}-ripd ${PN}-ripngd"
+
+FILES_${PN}-ospfd       = "${sbindir}/ospfd ${libdir}/libospf.so.*"
+FILES_${PN}-ospf6d      = "${sbindir}/ospf6d"
+FILES_${PN}-babeld      = "${sbindir}/babeld"
+FILES_${PN}-bgpd        = "${sbindir}/bgpd"
+FILES_${PN}-ripd        = "${sbindir}/ripd"
+FILES_${PN}-ripngd      = "${sbindir}/ripngd"
+FILES_${PN}-isisd       = "${sbindir}/isisd"
+FILES_${PN}-ospfclient  = "${sbindir}/ospfclient ${libdir}/libospfapiclient.so.*"
+FILES_${PN}-watchquagga = "${sbindir}/watchquagga ${sysconfdir}/default/watchquagga \
+                           ${sysconfdir}/init.d/watchquagga"
+
+# Indicate that the default files are configuration files
+CONFFILES_${PN} = "${sysconfdir}/default/quagga \
+                   ${sysconfdir}/quagga/bgpd.conf \
+                   ${sysconfdir}/quagga/vtysh.conf \
+                   ${sysconfdir}/quagga/babeld.conf \
+                   ${sysconfdir}/quagga/isisd.conf \
+                   ${sysconfdir}/quagga/ospfd.conf \
+                   ${sysconfdir}/quagga/ripngd.conf \
+                   ${sysconfdir}/quagga/zebra.conf \
+                   ${sysconfdir}/quagga/ripd.conf \
+                   ${sysconfdir}/quagga/ospf6d.conf \
+                  "
+CONFFILES_${PN}-watchquagga = "${sysconfdir}/default/watchquagga"
+
+# Stop the names being rewritten due to the internal shared libraries
+DEBIAN_NOAUTONAME_${PN}-ospfd = "1"
+DEBIAN_NOAUTONAME_${PN}-ospfclient = "1"
+
+# the "ip" command from busybox is not sufficient (flush by protocol flushes all routes)
+RDEPENDS_${PN}          += "iproute2"
+
+# Main init script starts all deamons
+# Seperate init script for watchquagga
+INITSCRIPT_PACKAGES                     = "${PN} ${PN}-watchquagga"
+INITSCRIPT_NAME_${PN}                   = "quagga"
+INITSCRIPT_PARAMS_${PN}                 = "defaults 15 85"
+INITSCRIPT_NAME_${PN}-watchquagga       = "watchquagga"
+INITSCRIPT_PARAMS_${PN}-watchquagga     = "defaults 90 10"
+
+# Add quagga's user and group
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "--system quagga ; --system quaggavty"
+USERADD_PARAM_${PN} = "--system --home ${localstatedir}/run/quagga/ -M -g quagga --shell /bin/false quagga"
+
+pkg_postinst_${PN} () {
+    if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
+        ${sysconfdir}/init.d/populate-volatile.sh update
+    fi
+}
+
+# Stop apps before uninstall
+pkg_prerm_${PN} () {
+    ${sysconfdir}/init.d/quagga stop
+}
+
+pkg_prerm_${PN}-ospfd () {
+    ${sysconfdir}/init.d/quagga stop ospfd
+}
+
+pkg_prerm_${PN}-ospf6d () {
+    ${sysconfdir}/init.d/quagga stop ospf6d
+}
+
+pkg_prerm_${PN}-babeld () {
+    ${sysconfdir}/init.d/quagga stop babeld
+}
+
+pkg_prerm_${PN}-bgpd () {
+    ${sysconfdir}/init.d/quagga stop bgpd
+}
+
+pkg_prerm_${PN}-ripd () {
+    ${sysconfdir}/init.d/quagga stop ripd
+}
+
+pkg_prerm_${PN}-ripngd () {
+    ${sysconfdir}/init.d/quagga stop ripngd
+}
+
+pkg_prerm_${PN}-isisd () {
+    ${sysconfdir}/init.d/quagga stop isisd
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga_0.99.24.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga_0.99.24.1.bb
new file mode 100644
index 0000000..cecf438
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga_0.99.24.1.bb
@@ -0,0 +1,10 @@
+require quagga.inc
+
+SRC_URI += "file://babel-close-the-stdout-stderr-as-in-other-daemons.patch \
+            file://0001-ospf6d-check-ospf6-before-using-it-in-ospf6_clean.patch \
+"
+
+SRC_URI[md5sum] = "7986bdc2fe6027d4c9216f7f5791e718"
+SRC_URI[sha256sum] = "84ae1a47df085119a8fcab6c43ccea9efb9bc3112388b1dece5a9f0a0262754f"
+
+QUAGGASUBDIR = ""
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/radiusclient-ng/radiusclient-ng/Modify-configure.in-and-etc-Makefile.am.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/radiusclient-ng/radiusclient-ng/Modify-configure.in-and-etc-Makefile.am.patch
new file mode 100644
index 0000000..ecc2d74
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/radiusclient-ng/radiusclient-ng/Modify-configure.in-and-etc-Makefile.am.patch
@@ -0,0 +1,84 @@
+From 45b97b474ce2d0ad56828db11edde8562bb47a43 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 2 Dec 2014 02:33:53 +0900
+Subject: [PATCH] Modify configure.in and etc/Makefile.am
+
+this patch is from Fedora to fix error:
+"conftest.c:26:9: error: unknown type name 'not'"
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ configure.in             | 6 +++++-
+ etc/Makefile.am          | 9 ++++++---
+ etc/radiusclient.conf.in | 2 +-
+ 3 files changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 812f640..3a8af99 100644
+--- a/configure.in
++++ b/configure.in
+@@ -29,6 +29,9 @@ AC_SUBST(LIBVERSION)
+ pkgsysconfdir=${sysconfdir}/$PACKAGE
+ AC_SUBST(pkgsysconfdir)
+ 
++pkgdatadir=${datadir}/$PACKAGE
++AC_SUBST(pkgdatadir)
++
+ AC_PROG_LIBTOOL
+ 
+ AC_PROG_CC
+@@ -118,7 +121,8 @@ then
+ 	],
+ 	AC_MSG_RESULT(yes)
+ 	AC_DEFINE(HAVE_STRUCT_UTSNAME_DOMAINNAME),
+-	AC_MSG_RESULT(no)
++	AC_MSG_RESULT(no),
++	AC_MSG_RESULT(assume no),
+ 	)
+ fi
+ 
+diff --git a/etc/Makefile.am b/etc/Makefile.am
+index 39b6975..a3c403f 100644
+--- a/etc/Makefile.am
++++ b/etc/Makefile.am
+@@ -14,9 +14,11 @@ CLEANFILES = *~ radiusclient.conf
+ 
+ sbindir = @sbindir@
+ pkgsysconfdir = @pkgsysconfdir@
+-pkgsysconf_DATA = issue port-id-map radiusclient.conf \
+-	dictionary dictionary.ascend dictionary.compat dictionary.merit \
+-	dictionary.sip
++pkgsysconf_DATA = issue port-id-map radiusclient.conf
++
++pkgdatadir = @pkgdatadir@
++pkgdata_DATA = dictionary dictionary.ascend dictionary.compat \
++	dictionary.merit dictionary.sip
+ 
+ EXTRA_DIST = issue port-id-map dictionary dictionary.ascend \
+ 	dictionary.compat dictionary.merit servers radiusclient.conf.in \
+@@ -25,6 +27,7 @@ EXTRA_DIST = issue port-id-map dictionary dictionary.ascend \
+ radiusclient.conf: radiusclient.conf.in
+ 	sed -e 's|@sbin''dir@|$(sbindir)|g' \
+ 	    -e 's|@pkgsysconf''dir@|$(pkgsysconfdir)|g' \
++	    -e 's|@pkgdata''dir@|$(pkgdatadir)|g' \
+ 	    <$(srcdir)/radiusclient.conf.in >radiusclient.conf
+ 
+ install-data-local: servers
+diff --git a/etc/radiusclient.conf.in b/etc/radiusclient.conf.in
+index 948bc2f..aac9973 100644
+--- a/etc/radiusclient.conf.in
++++ b/etc/radiusclient.conf.in
+@@ -47,7 +47,7 @@ servers		@pkgsysconfdir@/servers
+ 
+ # dictionary of allowed attributes and values
+ # just like in the normal RADIUS distributions
+-dictionary 	@pkgsysconfdir@/dictionary
++dictionary 	@pkgdatadir@/dictionary
+ 
+ # program to call for a RADIUS authenticated login
+ login_radius	@sbindir@/login.radius
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/radiusclient-ng/radiusclient-ng/config-site.radiusclient-ng-0.5.6 b/import-layers/meta-openembedded/meta-networking/recipes-protocols/radiusclient-ng/radiusclient-ng/config-site.radiusclient-ng-0.5.6
new file mode 100644
index 0000000..a30c144
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/radiusclient-ng/radiusclient-ng/config-site.radiusclient-ng-0.5.6
@@ -0,0 +1 @@
+ac_cv_func_uname=no
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/radiusclient-ng/radiusclient-ng_0.5.6.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/radiusclient-ng/radiusclient-ng_0.5.6.bb
new file mode 100644
index 0000000..95faa65
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/radiusclient-ng/radiusclient-ng_0.5.6.bb
@@ -0,0 +1,36 @@
+SUMMARY = "RADIUS protocol client library"
+DESCRIPTION = "Portable, easy-to-use and standard compliant library suitable \
+for developing free and commercial software that need support for a RADIUS \
+protocol (RFCs 2128 and 2139)."
+HOMEPAGE = "http://sourceforge.net/projects/radiusclient-ng.berlios/"
+SECTION = "net"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/r/${BPN}/${BPN}_${PV}.orig.tar.gz \
+   file://Modify-configure.in-and-etc-Makefile.am.patch \
+   file://config-site.radiusclient-ng-${PV}"
+
+SRC_URI[md5sum] = "6fb7d4d0aefafaee7385831ac46a8e9c"
+SRC_URI[sha256sum] = "282a9f1355f190efbb06c0d7c4e062eaa652caf342ed3ad361ac595f72f09f14"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=3e47566c9271b786693d8a08792dbf41"
+
+inherit autotools-brokensep
+
+EXTRA_OECONF += "--disable-static"
+
+do_configure_prepend () {
+    export CONFIG_SITE=./config-site.${P}
+}
+
+do_compile_prepend() {
+    for m in `find . -name "Makefile"` ; do
+        sed -i -e 's:^program_transform_name =.*:program_transform_name =:g' ${m}
+    done
+}
+
+do_install() {
+    oe_runmake DESTDIR=${D} install
+    rm -f ${D}${libdir}/*.la
+    rm -f ${D}${sbindir}/radexample
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/configure.in-Error-fix.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/configure.in-Error-fix.patch
new file mode 100644
index 0000000..2661fd3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/configure.in-Error-fix.patch
@@ -0,0 +1,59 @@
+From 71956de46feef962dc0645af4c81ae074ca3b818 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Wed, 19 Aug 2015 13:52:57 +0900
+Subject: [PATCH] configure.in: Error fix.
+
+the error is: conftest.c:9:28: fatal error: ac_nonexistent.h:
+No such file or directory #include <ac_nonexistent.h>
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ src/configure.in | 30 ------------------------------
+ 1 file changed, 30 deletions(-)
+
+diff --git a/src/configure.in b/src/configure.in
+index 0b23df5..31c7fbc 100644
+--- a/src/configure.in
++++ b/src/configure.in
+@@ -193,36 +193,6 @@ if test "$GCC" = yes; then
+ 	CFLAGS="$CFLAGS -fno-strict-aliasing -Wall -Wstrict-prototypes"
+ fi
+ 
+-dnl Figure out packing order of structures
+-AC_CACHE_CHECK([packing order of bit fields],rpppoe_cv_pack_bitfields,[
+-if test "${rpppoe_cv_pack_bitfields+set}" != set ; then
+-AC_TRY_RUN([
+-union foo {
+-    struct bar {
+-	unsigned int ver:4;
+-	unsigned int type:4;
+-    } bb;
+-    unsigned char baz;
+-};
+-
+-int
+-main(void)
+-{
+-    union foo x;
+-    x.bb.ver = 1;
+-    x.bb.type = 2;
+-    if (x.baz == 0x21) {
+-	return 1;
+-    } else if (x.baz == 0x12) {
+-	return 0;
+-    } else {
+-	return 2;
+-    }
+-}], rpppoe_cv_pack_bitfields=normal, rpppoe_cv_pack_bitfields=rev,
+-$ECHO "no defaults for cross-compiling"; exit 1)
+-fi
+-])
+-
+ if test "$rpppoe_cv_pack_bitfields" = "rev" ; then
+ 	AC_MSG_RESULT(reversed)
+ 	AC_DEFINE([PACK_BITFIELDS_REVERSED], [], [Reversed bitfields])
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/configure.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/configure.patch
new file mode 100644
index 0000000..1380ba4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/configure.patch
@@ -0,0 +1,11 @@
+Index: rp-pppoe-3.8/configure.in
+===================================================================
+--- rp-pppoe-3.8.orig/configure.in	2014-07-16 19:31:33.549991388 +0000
++++ rp-pppoe-3.8/configure.in	2014-07-17 22:01:18.116590827 +0000
+@@ -1,4 +1,4 @@
+-AC_INIT(src/pppoe.c)
+-AM_INIT_AUTOMAKE([rp-pppoe], [3.8])
++AC_INIT([rp-pppoe], [3.8])
++AM_INIT_AUTOMAKE([foreign])
+ AC_CONFIG_SUBDIRS(src)
+ AC_OUTPUT(Makefile)
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/configure_in_cross.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/configure_in_cross.patch
new file mode 100644
index 0000000..88cf7e6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/configure_in_cross.patch
@@ -0,0 +1,156 @@
+From cab02076afb808a43c6ff3d7b1c64e71f5a1b397 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Wed, 19 Aug 2015 12:17:03 +0900
+Subject: [PATCH] configure in cross
+
+Update the configure script to cross-compiling with OE.  This hard-codes
+a few target paths, reworks a few tests to be more friendly for cross
+and drops other tests.
+
+Upstream-Status: Inappropriate [build system specific changes]
+
+---
+ src/configure.in | 66 ++++++++++++++------------------------------------------
+ 1 file changed, 16 insertions(+), 50 deletions(-)
+
+diff --git a/src/configure.in b/src/configure.in
+index e194295..82d64d6 100644
+--- a/src/configure.in
++++ b/src/configure.in
+@@ -5,6 +5,13 @@ AC_INIT(pppoe.c)
+ dnl pppd directory for kernel-mode PPPoE
+ PPPD_DIR=ppp-2.4.1.pppoe2
+ 
++dnl hard code some paths
++PPPD=/usr/sbin/pppd
++ID=/usr/bin/id
++ECHO=/bin/echo
++AC_ARG_VAR(PPPD)
++AC_ARG_VAR(ID)
++
+ AC_CONFIG_HEADER(config.h)
+ 
+ AC_PREFIX_DEFAULT(/usr)
+@@ -45,7 +52,7 @@ ac_cv_struct_sockaddr_ll=no)
+ AC_MSG_RESULT($ac_cv_struct_sockaddr_ll)
+ 
+ if test "$ac_cv_struct_sockaddr_ll" = yes ; then
+-AC_DEFINE(HAVE_STRUCT_SOCKADDR_LL)
++AC_DEFINE([HAVE_STRUCT_SOCKADDR_LL], [], [Have struct SOCKADDR_LL])
+ fi
+ 
+ dnl Check for N_HDLC line discipline
+@@ -56,7 +63,7 @@ AC_TRY_COMPILE([#include <linux/termios.h>],
+ 	ac_cv_n_hdlc=no)
+ AC_MSG_RESULT($ac_cv_n_hdlc)
+ if test "$ac_cv_n_hdlc" = yes ; then
+-AC_DEFINE(HAVE_N_HDLC)
++AC_DEFINE([HAVE_N_HDLC], [], [Have N_HDLC])
+ fi
+ 
+ AC_ARG_ENABLE(plugin, [  --enable-plugin=pppd_src_path   build pppd plugin], ac_cv_pluginpath=$enableval, ac_cv_pluginpath=no)
+@@ -104,7 +111,7 @@ PPPD_INCDIR=""
+ if test "$ac_cv_header_linux_if_pppox_h" = yes ; then
+ 	if test "$ac_cv_pluginpath" != no ; then
+ 		LINUX_KERNELMODE_PLUGIN=rp-pppoe.so
+-		AC_DEFINE(HAVE_LINUX_KERNEL_PPPOE)
++		AC_DEFINE([HAVE_LINUX_KERNEL_PPPOE], [], [Have kernel PPPoE])
+ 		PPPD_INCDIR=$ac_cv_pluginpath
+ 	fi
+ fi
+@@ -114,7 +121,7 @@ if test "$PPPD_INCDIR" = "" ; then
+ fi
+ 
+ if test "$ac_cv_debugging" = "yes" ; then
+-   AC_DEFINE(DEBUGGING_ENABLED)
++   AC_DEFINE([DEBUGGING_ENABLED], [], [Debugging enabled])
+ fi
+ 
+ AC_SUBST(LINUX_KERNELMODE_PLUGIN)
+@@ -140,15 +147,8 @@ AC_CHECK_SIZEOF(unsigned short)
+ AC_CHECK_SIZEOF(unsigned int)
+ AC_CHECK_SIZEOF(unsigned long)
+ 
+-dnl Check for location of pppd
+-AC_PATH_PROG(PPPD, pppd, NOTFOUND, $PATH:/sbin:/usr/sbin:/usr/local/sbin)
+-AC_PATH_PROG(ECHO, echo, echo)
+-
+-dnl Check for setsid (probably Linux-specific)
+-AC_PATH_PROG(SETSID, setsid, "", $PATH:/sbin:/usr/sbin:/usr/local/sbin)
+-
+ dnl Check for an "id" which accepts "-u" option -- hack for Solaris.
+-AC_PATH_PROG(ID, id, "", /usr/xpg4/bin:$PATH)
++dnl AC_PATH_PROG(ID, id, "", /usr/xpg4/bin:$PATH)
+ 
+ dnl Check for Linux-specific kernel support for PPPoE
+ AC_MSG_CHECKING(for Linux 2.4.X kernel-mode PPPoE support)
+@@ -193,44 +193,8 @@ if test "$GCC" = yes; then
+ 	CFLAGS="$CFLAGS -fno-strict-aliasing -Wall -Wstrict-prototypes"
+ fi
+ 
+-dnl If we couldn't find pppd, die
+-if test "$PPPD" = "NOTFOUND"; then
+-        AC_MSG_WARN([*** Oops!  I couldn't find pppd, the PPP daemon anywhere.])
+-	AC_MSG_WARN([*** You must install pppd, version 2.3.10 or later.])
+-	AC_MSG_WARN([*** I will keep going, but it may not work.])
+-	PPPD=pppd
+-fi
+-
+-dnl Figure out pppd version.  2.3.7 to 2.3.9 -- issue warning.  Less than
+-dnl 2.3.7 -- stop
+-
+-PPPD_VERSION=`$PPPD --version 2>&1 | awk ' /version/ {print $NF}'`
+-
+-case "$PPPD_VERSION" in
+-1.*|2.0.*|2.1.*|2.2.*|2.3.0|2.3.1|2.3.2|2.3.3|2.3.4|2.3.5|2.3.6)
+-	AC_MSG_WARN([*** Oops! Your version of pppd is $PPPD_VERSION, which is too old.])
+-	AC_MSG_WARN([*** You need at least 2.3.7 (2.3.10 or newer recommended.])
+-	AC_MSG_WARN([*** I will keep going, but it may not work.])
+-	;;
+-
+-2.3.7|2.3.8|2.3.9)
+-	AC_MSG_WARN([*** Warning.  Your version of pppd is $PPPD_VERSION.  You will])
+-	AC_MSG_WARN([*** not be able to use connect-on-demand.  Upgrade to pppd])
+-	AC_MSG_WARN([*** 2.3.10 or newer if you need connect-on-demand.])
+-	;;
+-
+-2*|3*|4*|5*|6*|7*|8*|9*)
+-	;;
+-
+-*)
+-	AC_MSG_WARN([*** Oops.  I cannot figure out what version of pppd you have.])
+-	AC_MSG_WARN([*** All I got back was '$PPPD_VERSION'])
+-	AC_MSG_WARN([*** I will keep going, but it may not work.])
+-	;;
+-esac
+-
+ dnl Figure out packing order of structures
+-AC_MSG_CHECKING([packing order of bit fields])
++AC_CACHE_CHECK([packing order of bit fields],rpppoe_cv_pack_bitfields,[
+ if test "${rpppoe_cv_pack_bitfields+set}" != set ; then
+ AC_TRY_RUN([
+ union foo {
+@@ -257,10 +221,11 @@ main(void)
+ }], rpppoe_cv_pack_bitfields=normal, rpppoe_cv_pack_bitfields=rev,
+ $ECHO "no defaults for cross-compiling"; exit 0)
+ fi
++])
+ 
+ if test "$rpppoe_cv_pack_bitfields" = "rev" ; then
+ 	AC_MSG_RESULT(reversed)
+-	AC_DEFINE(PACK_BITFIELDS_REVERSED)
++	AC_DEFINE([PACK_BITFIELDS_REVERSED], [], [Reversed bitfields])
+ else
+ 	AC_MSG_RESULT(normal)
+ fi
+@@ -324,6 +289,7 @@ AC_SUBST(PPPOE_SERVER_DEPS)
+ AC_SUBST(RDYNAMIC)
+ AC_SUBST(LIBEVENT)
+ AC_SUBST(ECHO)
++AC_SUBST(HAVE_STRUCT_SOCKADDR_LL)
+ AC_SUBST(LDFLAGS)
+ 
+ datadir_evaluated=`eval echo $datadir`
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/discard-use-of-dnl-in-Makefile.am.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/discard-use-of-dnl-in-Makefile.am.patch
new file mode 100644
index 0000000..8b78864
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/discard-use-of-dnl-in-Makefile.am.patch
@@ -0,0 +1,27 @@
+From 611c9fe719c5aa264a2ad2eb920cf4522ae2ddec Mon Sep 17 00:00:00 2001
+From: Ting Liu <b28495@freescale.com>
+Date: Tue, 12 Jun 2012 14:26:16 -0400
+Subject: [PATCH] discard use of dnl in Makefile.am
+
+Since Makefile.am is not processed by m4, but by automake, 'dnl' does
+not introduce a comment.
+
+Signed-off-by: Ting Liu <b28495@freescale.com>
+---
+ Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index eff6977..3091c33 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,5 +1,5 @@
+ PACKAGE = rp-pppoe
+ VERSION = 3.8
+ 
+-dnl AM_CFLAGS = -Wall -DDEBUG
++##dnl AM_CFLAGS = -Wall -DDEBUG
+ SUBDIRS = src
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/dont-swallow-errors.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/dont-swallow-errors.patch
new file mode 100644
index 0000000..f61337f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/dont-swallow-errors.patch
@@ -0,0 +1,28 @@
+From bbdadb803b19f002e76e7bb5ce3faf770dd7c413 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Wed, 19 Aug 2015 12:33:41 +0900
+Subject: [PATCH] don't swallow errors
+
+Further fixup to the configure scripts to not swallow errors
+
+Upstream-Status: Pending
+---
+ src/configure.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/configure.in b/src/configure.in
+index 82d64d6..0b23df5 100644
+--- a/src/configure.in
++++ b/src/configure.in
+@@ -219,7 +219,7 @@ main(void)
+ 	return 2;
+     }
+ }], rpppoe_cv_pack_bitfields=normal, rpppoe_cv_pack_bitfields=rev,
+-$ECHO "no defaults for cross-compiling"; exit 0)
++$ECHO "no defaults for cross-compiling"; exit 1)
+ fi
+ ])
+ 
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-server.default b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-server.default
new file mode 100644
index 0000000..996d57f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-server.default
@@ -0,0 +1,22 @@
+# PPPoE Server options
+
+# Maximum segment size, not used for in kernel PPPoE
+#MSS=1412
+
+# Device(s) - Space seperated list of devices to listen on
+#DEVICES="eth1"
+
+# Local IP
+#LOCAL_IP=10.0.0.1
+
+# Starting remote IP
+#REMOTE_IP=10.67.15.1
+
+# Service name
+#SERVICE_NAME="acme"
+
+# Maximum number of sessions, default is 16
+#MAX_SESSIONS=64
+
+# Access concentrator name, default is the hostname
+#ACCESS_CONCENTRATOR_NAME="pppoe-rtr-1"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-server.init b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-server.init
new file mode 100755
index 0000000..21afe0b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-server.init
@@ -0,0 +1,59 @@
+#! /bin/sh
+
+test -f /usr/sbin/pppoe-server || exit 0
+test -f /etc/default/pppoe-server && . /etc/default/pppoe-server
+
+case $1 in
+  start)
+    OPTIONS=""
+    if [ -n "$MSS" ]; then
+      OPTIONS="$OPTIONS -m $MSS"
+    fi
+    if [ -n "$DEVICES" ]; then
+      for i in $DEVICES; do
+        OPTIONS="$OPTIONS -I $i"
+      done
+    fi
+    if [ -n "$LOCAL_IP" ]; then
+      OPTIONS="$OPTIONS -L $LOCAL_IP"
+    fi
+    if [ -n "$REMOTE_IP" ]; then
+      OPTIONS="$OPTIONS -R $REMOTE_IP"
+    fi
+    if [ -n "$SERVICE_NAME" ]; then
+      OPTIONS="$OPTIONS -S $SERVICE_NAME"
+    fi
+    if [ -n "$MAX_SESSIONS" ]; then
+      OPTIONS="$OPTIONS -N $MAX_SESSIONS"
+    fi
+    if [ -n "$ACCESS_CONCENTRATOR_NAME" ]; then
+      OPTIONS="$OPTIONS -C $ACCESS_CONCENTRATOR_NAME"
+    fi
+    echo -n "Starting PPPoE server: pppoe-server"
+    start-stop-daemon --start --quiet --exec /usr/sbin/pppoe-server -- $OPTIONS
+    echo "."
+    ;;
+  stop)
+    echo -n "Stopping PPPoE server: pppoe-server"
+    start-stop-daemon --stop --quiet --exec /usr/sbin/pppoe-server -- $OPTIONS
+    echo "."
+    ;;
+  status)
+    pid=$(pidof pppoe-server)    	          
+    if [ -n "$pid" ] ; then
+	    echo "Running with pid $pid"
+    else
+	    echo "Not running"
+    fi
+    ;;
+  restart|force-reload)
+    $0 stop
+    $0 start
+    ;;
+  *)
+    echo "Usage: /etc/init.d/pppoe-server {start|stop|restart|force-reload}"
+    exit 1
+    ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-server.service b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-server.service
new file mode 100644
index 0000000..41e0b9e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-server.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=PPPOE Service
+After=network.target
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/pppoe-server
+ExecStart=@SBINDIR@/pppoe-server
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-src-restrictions.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-src-restrictions.patch
new file mode 100644
index 0000000..bcf4d11
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/pppoe-src-restrictions.patch
@@ -0,0 +1,20 @@
+Relax restrictions on the PPPoE src address, as per debian bug
+293811:
+
+  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=293811
+
+Upstream-Status: Inappropriate [Backport from Debian]
+
+--- rp-pppoe-3.8.orig/src/discovery.c
++++ rp-pppoe-3.8/src/discovery.c
+@@ -376,8 +376,8 @@
+ 	if (!packetIsForMe(conn, &packet)) continue;
+ 
+ 	if (packet.code == CODE_PADO) {
+-	    if (NOT_UNICAST(packet.ethHdr.h_source)) {
+-		printErr("Ignoring PADO packet from non-unicast MAC address");
++	    if (BROADCAST(packet.ethHdr.h_source)) {
++		printErr("Ignoring broadcast PADO packet");
+ 		continue;
+ 	    }
+ 	    parsePacket(&packet, parsePADOTags, &pc);
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/top-autoconf.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/top-autoconf.patch
new file mode 100644
index 0000000..4fe73d0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/top-autoconf.patch
@@ -0,0 +1,27 @@
+The autoconf stuff is all in a subdirectory, which is rather annoying
+as OE expects patches to be applied and autoconf stuff to be done in
+S. This adds enough autoconf at the top level to allow it to be
+called there - all it does is run a sub autoconf stuff in the src
+directory.
+
+Upstream-Status: Inappropriate [build system specific change]
+
+Index: rp-pppoe-3.8/Makefile.am
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ rp-pppoe-3.8/Makefile.am	2007-06-08 15:58:16.000000000 +1000
+@@ -0,0 +1,5 @@
++PACKAGE = rp-pppoe
++VERSION = 3.8
++
++dnl AM_CFLAGS = -Wall -DDEBUG
++SUBDIRS = src
+Index: rp-pppoe-3.8/configure.in
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ rp-pppoe-3.8/configure.in	2007-06-08 15:58:16.000000000 +1000
+@@ -0,0 +1,4 @@
++AC_INIT(src/pppoe.c)
++AM_INIT_AUTOMAKE([rp-pppoe], [3.8])
++AC_CONFIG_SUBDIRS(src)
++AC_OUTPUT(Makefile)
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/update-config.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/update-config.patch
new file mode 100644
index 0000000..42a3bc6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe-3.12/update-config.patch
@@ -0,0 +1,32 @@
+Set the timeout to 0 since we don't want pppoe to try reconnecting,
+we want whatever is calling it to reconnect. Lots of odd things
+happen when you have pppoe retrying itself.
+
+The path for the plugin is wrong, it's now part of ppp and is in a
+ppp's plugin lib directory. If no path is specified then that's where
+ppp looks, so that's what we do here.
+
+Upstream-Status: Inappropriate [configuration]
+
+Index: rp-pppoe-3.8/configs/pppoe.conf
+===================================================================
+--- rp-pppoe-3.8.orig/configs/pppoe.conf	2006-04-03 00:29:41.000000000 +1000
++++ rp-pppoe-3.8/configs/pppoe.conf	2007-06-08 16:02:47.000000000 +1000
+@@ -66,7 +66,7 @@
+ # to connect forever after pppoe-start is called.  Otherwise, it will
+ # give out after CONNECT_TIMEOUT seconds and will not attempt to
+ # connect again, making it impossible to reach.
+-CONNECT_TIMEOUT=30
++CONNECT_TIMEOUT=0
+ 
+ # How often in seconds pppoe-start polls to check if link is up
+ CONNECT_POLL=2
+@@ -115,7 +115,7 @@
+ FIREWALL=NONE
+ 
+ # Linux kernel-mode plugin for pppd.  If you want to try the kernel-mode
+-# plugin, use LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
++# plugin, use LINUX_PLUGIN=rp-pppoe.so
+ LINUX_PLUGIN=
+ 
+ # Any extra arguments to pass to pppoe.  Normally, use a blank string
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.12.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.12.bb
new file mode 100644
index 0000000..e1ca17f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.12.bb
@@ -0,0 +1,74 @@
+SUMMARY = "A user-mode PPPoE client and server suite for Linux"
+HOMEPAGE = "http://www.roaringpenguin.com/products/pppoe"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=a194eaefae2be54ee3221339b10d0581"
+
+PR = "r10"
+
+SRC_URI = "http://www.roaringpenguin.com/files/download/${BP}.tar.gz \
+           file://top-autoconf.patch \
+           file://configure_in_cross.patch \
+           file://pppoe-src-restrictions.patch \
+           file://update-config.patch \
+           file://dont-swallow-errors.patch \
+           file://discard-use-of-dnl-in-Makefile.am.patch \
+           file://configure.patch \
+           file://pppoe-server.default \
+           file://pppoe-server.init \
+           file://configure.in-Error-fix.patch \
+           file://pppoe-server.service"
+
+SRC_URI[md5sum] = "216eb52b69062b92a64ee37fd71f4b66"
+SRC_URI[sha256sum] = "00794e04031546b0e9b8cf286f2a6d1ccfc4a621b2a3abb2d7ef2a7ab7cc86c2"
+
+inherit autotools-brokensep update-rc.d systemd
+
+do_install_append() {
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/pppoe-server.service ${D}${systemd_unitdir}/system
+    sed -i -e 's#@SYSCONFDIR@#${sysconfdir}#g' ${D}${systemd_unitdir}/system/pppoe-server.service
+    sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/pppoe-server.service
+    install -d ${D}${datadir}/doc/${PN}
+    if [ -f ${D}${datadir}/doc/README ]; then
+        mv ${D}${datadir}/doc/README ${D}${datadir}/doc/${PN}/
+    fi
+}
+
+do_install() {
+    # Install init script and default settings
+    install -m 0755 -d ${D}${sysconfdir}/default ${D}${sysconfdir}/init.d
+    install -m 0644 ${WORKDIR}/pppoe-server.default ${D}${sysconfdir}/default/pppoe-server
+    install -m 0755 ${WORKDIR}/pppoe-server.init ${D}${sysconfdir}/init.d/pppoe-server
+    # Install
+    oe_runmake -C ${S} DESTDIR=${D} docdir=${docdir} install
+    chmod 4755 ${D}${sbindir}/pppoe
+}
+
+SYSTEMD_PACKAGES = "${PN}-server"
+SYSTEMD_SERVICE_${PN}-server = "pppoe-server.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+# Insert server package before main package
+PACKAGES = "${PN}-dbg ${PN}-server ${PN}-relay ${PN}-sniff ${PN} ${PN}-doc"
+
+FILES_${PN}-server = "${sysconfdir}/default/pppoe-server \
+                      ${sysconfdir}/init.d/pppoe-server \
+                      ${sbindir}/pppoe-server \
+                      ${sysconfdir}/ppp/pppoe-server-options"
+FILES_${PN}-relay = "${sbindir}/pppoe-relay"
+FILES_${PN}-sniff = "${sbindir}/pppoe-sniff"
+
+CONFFILES_${PN} = "${sysconfdir}/ppp/pppoe.conf \
+                   ${sysconfdir}/ppp/firewall-standalone \
+                   ${sysconfdir}/ppp/firewall-masq"
+CONFFILES_${PN}-server = "${sysconfdir}/ppp/pppoe-server-options \
+                          ${sysconfdir}/default/pppoe-server"
+
+INITSCRIPT_PACKAGES            = "${PN}-server"
+INITSCRIPT_NAME_${PN}-server   = "pppoe-server"
+INITSCRIPT_PARAMS_${PN}-server = "defaults 92 8"
+
+RDEPENDS_${PN} = "ppp"
+RDEPENDS_${PN}-server = "${PN}"
+RRECOMMENDS_${PN} = "ppp-oe"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/tsocks/tsocks_1.8beta5.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/tsocks/tsocks_1.8beta5.bb
new file mode 100644
index 0000000..b3a9620
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/tsocks/tsocks_1.8beta5.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Libraries and wrapper for using a SOCKS proxy"
+DESCRIPTION = "The role of tsocks is to allow non SOCKS aware \
+applications (e.g telnet, ssh, ftp etc) to use SOCKS without any \
+modification. It does this by intercepting the calls that applications \
+make to establish network connections and negotating them through a \
+SOCKS server as necessary."
+HOMEPAGE = "http://sourceforge.net/projects/tsocks/"
+SECTION = "net"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760"
+
+SRC_URI = "http://downloads.sourceforge.net/tsocks/tsocks-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "51caefd77e5d440d0bbd6443db4fc0f8"
+SRC_URI[sha256sum] = "849d7ef5af80d03e76cc05ed9fb8fa2bcc2b724b51ebfd1b6be11c7863f5b347"
+
+inherit autotools-brokensep
+
+S = "${WORKDIR}/tsocks-1.8"
+
+FILES_${PN} = "${libdir}/* ${bindir}/tsocks"
+FILES_${PN}-dev = ""
+INSANE_SKIP_${PN} = "dev-so"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd.inc b/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd.inc
new file mode 100644
index 0000000..6f7f693
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd.inc
@@ -0,0 +1,44 @@
+SUMMARY = "Xelerance version of the Layer 2 Tunneling Protocol (L2TP) daemon"
+HOMEPAGE = "http://www.xelerance.com/software/xl2tpd/"
+SECTION = "net"
+DEPENDS = "ppp virtual/kernel"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+INC_PR = "r0"
+
+SRC_URI = "git://github.com/xelerance/xl2tpd.git \
+    file://fix-inline-functions-errors-with-gcc-5.x.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit update-rc.d
+
+do_compile () {
+    oe_runmake CFLAGS="${CFLAGS} -DLINUX" LDFLAGS="${LDFLAGS}" PREFIX="${prefix}" KERNELSRC=${STAGING_KERNEL_DIR} all
+}
+
+do_install () {
+    oe_runmake PREFIX="${D}${prefix}" install
+
+    install -d ${D}${sysconfdir}/init.d
+    touch ${D}${sysconfdir}/xl2tpd.conf
+    install -m 0755 debian/xl2tpd.init ${D}${sysconfdir}/init.d/xl2tpd
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/xl2tpd
+    sed -i 's!/etc/!${sysconfdir}/!g' ${D}${sysconfdir}/init.d/xl2tpd
+    sed -i 's!/var/!${localstatedir}/!g' ${D}${sysconfdir}/init.d/xl2tpd
+    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${sysconfdir}/init.d/xl2tpd
+
+    install -d ${D}${sysconfdir}/default
+    install -m 0644 debian/xl2tpd.default ${D}${sysconfdir}/default/xl2tpd
+}
+
+CONFFILES_${PN} += "${sysconfdir}/xl2tpd.conf ${sysconfdir}/default/xl2tpd"
+
+INITSCRIPT_PACKAGES = "${PN}"
+INITSCRIPT_NAME_${PN} = "xl2tpd"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd/fix-inline-functions-errors-with-gcc-5.x.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd/fix-inline-functions-errors-with-gcc-5.x.patch
new file mode 100644
index 0000000..b75c912
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd/fix-inline-functions-errors-with-gcc-5.x.patch
@@ -0,0 +1,134 @@
+Upstream-Status: Backport
+
+Backport from https://github.com/xelerance/xl2tpd/commit/9098f64950eb22cf049058d40f647bafdb822174
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+From 9098f64950eb22cf049058d40f647bafdb822174 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Wed, 23 Sep 2015 10:41:05 +0800
+Subject: [PATCH] Fix build errors caused by inline function with gcc 5
+
+GCC 5 defaults to -std=gnu11 instead of -std=gnu89. And -std=gnu89
+employs the GNU89 inline semantics, -std=gnu11 uses the C99 inline
+semantics.
+
+For 'inline' fuction, it is NOT exported by C99. So error messages such as:
+
+| control.c:1717: undefined reference to `check_control'
+
+For these functions which is not referred by other compile units, make
+them 'static inline'.
+
+For 'extern inline' function, it fails such as:
+
+| misc.h:68:20: warning: inline function 'swaps' declared but never defined
+|  extern inline void swaps (void *, int);
+|                      ^
+
+Because function swaps() is referred by other compile units, it must be
+exported. The semantics of 'extern inline' are not same between GNU89
+and C99, so remove 'inline' attribute for compatible with GNU89.
+
+Ref:
+https://gcc.gnu.org/gcc-5/porting_to.html
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ control.c | 8 ++++----
+ misc.c    | 2 +-
+ misc.h    | 2 +-
+ network.c | 4 ++--
+ 4 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/control.c b/control.c
+index b2891a9..c4a39b5 100644
+--- a/control.c
++++ b/control.c
+@@ -1140,7 +1140,7 @@ int control_finish (struct tunnel *t, struct call *c)
+     return 0;
+ }
+ 
+-inline int check_control (const struct buffer *buf, struct tunnel *t,
++static inline int check_control (const struct buffer *buf, struct tunnel *t,
+                           struct call *c)
+ {
+     /*
+@@ -1276,7 +1276,7 @@ inline int check_control (const struct buffer *buf, struct tunnel *t,
+     return 0;
+ }
+ 
+-inline int check_payload (struct buffer *buf, struct tunnel *t,
++static inline int check_payload (struct buffer *buf, struct tunnel *t,
+                           struct call *c)
+ {
+     /*
+@@ -1382,7 +1382,7 @@ inline int check_payload (struct buffer *buf, struct tunnel *t,
+ #endif
+     return 0;
+ }
+-inline int expand_payload (struct buffer *buf, struct tunnel *t,
++static inline int expand_payload (struct buffer *buf, struct tunnel *t,
+                            struct call *c)
+ {
+     /*
+@@ -1562,7 +1562,7 @@ void send_zlb (void *data)
+     toss (buf);
+ }
+ 
+-inline int write_packet (struct buffer *buf, struct tunnel *t, struct call *c,
++static inline int write_packet (struct buffer *buf, struct tunnel *t, struct call *c,
+                          int convert)
+ {
+     /*
+diff --git a/misc.c b/misc.c
+index 3092401..af90dbf 100644
+--- a/misc.c
++++ b/misc.c
+@@ -170,7 +170,7 @@ void do_packet_dump (struct buffer *buf)
+     printf ("}\n");
+ }
+ 
+-inline void swaps (void *buf_v, int len)
++void swaps (void *buf_v, int len)
+ {
+ #ifdef __alpha
+     /* Reverse byte order alpha is little endian so lest save a step.
+diff --git a/misc.h b/misc.h
+index aafdc62..caab7a1 100644
+--- a/misc.h
++++ b/misc.h
+@@ -65,7 +65,7 @@ extern void l2tp_log (int level, const char *fmt, ...);
+ extern struct buffer *new_buf (int);
+ extern void udppush_handler (int);
+ extern int addfcs (struct buffer *buf);
+-extern inline void swaps (void *, int);
++extern void swaps (void *, int);
+ extern void do_packet_dump (struct buffer *);
+ extern void status (const char *fmt, ...);
+ extern void status_handler (int signal);
+diff --git a/network.c b/network.c
+index b1268c6..d324a71 100644
+--- a/network.c
++++ b/network.c
+@@ -135,7 +135,7 @@ int init_network (void)
+     return 0;
+ }
+ 
+-inline void extract (void *buf, int *tunnel, int *call)
++static inline void extract (void *buf, int *tunnel, int *call)
+ {
+     /*
+      * Extract the tunnel and call #'s, and fix the order of the 
+@@ -155,7 +155,7 @@ inline void extract (void *buf, int *tunnel, int *call)
+     }
+ }
+ 
+-inline void fix_hdr (void *buf)
++static inline void fix_hdr (void *buf)
+ {
+     /*
+      * Fix the byte order of the header
+-- 
+2.6.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd_1.3.6.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd_1.3.6.bb
new file mode 100644
index 0000000..df2ec52
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd_1.3.6.bb
@@ -0,0 +1,7 @@
+require xl2tpd.inc
+
+# The SRCREV corresponds to v1.3.6.
+# Adding tag=v1.3.6 to the SRC_URI will force access to the upstream repo.
+#
+SRCREV = "5619e1771048e74b729804e8602f409af0f3faea"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd_git.bb
new file mode 100644
index 0000000..42bc398
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd_git.bb
@@ -0,0 +1,8 @@
+require xl2tpd.inc
+
+# This is v1.3.6 plus some commits.  There is no tag for this commit.
+#
+PV = "1.3.6+git${SRCPV}"
+
+SRCREV = "a96b345962622ea58490924130675df6db062d11"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf/compilefix.patch b/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf/compilefix.patch
new file mode 100644
index 0000000..328e574
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf/compilefix.patch
@@ -0,0 +1,19 @@
+| zeroconf.c: In function 'main':
+| zeroconf.c:145: error: 'PATH_MAX' undeclared (first use in this function)
+
+RP - 4/9/09
+
+Upstream-Status: Pending
+
+Index: zeroconf-0.9/zeroconf.c
+===================================================================
+--- zeroconf-0.9.orig/zeroconf.c	2009-09-04 10:05:25.000000000 +0100
++++ zeroconf-0.9/zeroconf.c	2009-09-04 10:05:42.000000000 +0100
+@@ -33,6 +33,7 @@
+ #include <net/if_arp.h>
+ #include <sys/time.h>
+ #include <signal.h>
++#include <limits.h>
+ 
+ #include "delay.h"
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf/debian-zeroconf b/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf/debian-zeroconf
new file mode 100644
index 0000000..0c9d15b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf/debian-zeroconf
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+if [ ! -x /usr/sbin/zeroconf ]; then
+    exit 0
+fi
+
+# IPv4 link-local addresses (zeroconf) are
+# only applicable on the 'inet' address family
+[ "X$ADDRFAM" != "Xinet" ] && exit 0
+
+# However there are some methods where it doesn't
+# make any sense to configure an IPv4LL address
+
+# not on loopback
+[ "X$METHOD" = "Xloopback" ] && exit 0
+
+# not on ppp or wvdial either
+[ "X$METHOD" = "Xppp" ] && exit 0
+[ "X$METHOD" = "Xwvdial" ] && exit 0
+
+# The administrator may have blacklisted interfaces
+# or only want zeroconf in a fallback situation
+[ -f /etc/default/zeroconf ] &&
+    . /etc/default/zeroconf
+
+[ -n "$DISABLE" ] && exit 0
+
+for BLACK in $IFBLACKLIST; do
+    case $IFACE in
+	$BLACK)
+	exit 0
+	;;
+    esac
+done
+
+# should we only allocate an address if we do not already have one?
+if [ -n "$FALLBACK" ]; then
+    /sbin/ip addr show $IFACE scope global | grep -q "inet"
+    IP=$?
+    if [ $IP -eq 0 ]; then
+        /sbin/ip route add 169.254.0.0/16 dev $IFACE
+        exit 0
+    fi
+fi
+
+# otherwise, run if we aren't already going
+if [ ! -r /var/run/zeroconf.$IFACE.pid ]; then
+	/usr/sbin/zeroconf -i $IFACE
+fi
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf/zeroconf-default b/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf/zeroconf-default
new file mode 100644
index 0000000..cc07b27
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf/zeroconf-default
@@ -0,0 +1,17 @@
+# Default for zeroconf
+
+# disable zeroconf
+# If you want to disable zeroconf completely, uncomment the following line
+# this may be useful if you are debugging zeroconf or starting it manually
+#DISABLE=yes
+
+# black-listed interfaces
+# Interfaces which you never wish to have zeroconf run on should
+# be listed here. e.g. "eth2 wlan1" in a space seperated string
+IFBLACKLIST=""
+
+# fallback only
+# If you would only like a link-local address if you were unable to
+# obtain an address via DHCP then uncomment the following line
+#FALLBACK=yes
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb b/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb
new file mode 100644
index 0000000..9307263
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb
@@ -0,0 +1,34 @@
+SUMMARY = "IPv4 link-local address allocator"
+DESCRIPTION = "Zeroconf is a program that is used to claim IPv4 \
+link-local addresses. IPv4 link-local addresses are useful when setting \
+up ad-hoc networking between devices without the involvement of a either \
+a DHCP server or network administrator. \
+These addresses are allocated from the 169.254.0.0/16 address range and \
+are normally attached to each Ethernet device in your computer. \
+Addresses are assigned randomly by each host and, in case of collision, \
+both hosts (are supposed to) renumber."
+AUTHOR = "Anand Kumria <wildfire@progsoc.uts.edu.au>"
+HOMEPAGE = "http://www.progsoc.org/~wildfire/zeroconf/"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4 \
+                    file://zeroconf.c;beginline=1;endline=13;md5=a5bada96e1e34b08eb7446b28e2630b2"
+SECTION = "net"
+
+PR = "r1"
+
+SRC_URI = "http://www.progsoc.org/~wildfire/zeroconf/download/${BPN}-${PV}.tar.gz \
+           file://compilefix.patch \
+           file://zeroconf-default \
+           file://debian-zeroconf"
+
+SRC_URI[md5sum] = "bdafb16b008ebb5633e4e581f77821d2"
+SRC_URI[sha256sum] = "a8c74df127753e2310fa1e072f3c9ca44a404bb0bbce9cfec7a84c6dff8bec7b"
+
+do_install () {
+    install -d ${D}${sbindir}
+    install -d ${D}${sysconfdir}/network/if-up.d
+    install -d ${D}${sysconfdir}/default
+    install -c -m 755 ${S}/zeroconf ${D}${sbindir}/zeroconf
+    install -c -m 755 ${WORKDIR}/debian-zeroconf ${D}${sysconfdir}/network/if-up.d/zeroconf
+    install -c ${WORKDIR}/zeroconf-default ${D}${sysconfdir}/default/zeroconf
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/aoetools/aoetools/aoe-stat-no-bashism.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/aoetools/aoetools/aoe-stat-no-bashism.patch
new file mode 100644
index 0000000..ec89b7a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/aoetools/aoetools/aoe-stat-no-bashism.patch
@@ -0,0 +1,27 @@
+From 38c97e590fde19213f6ba31e72d1c227db869427 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Sun, 31 Aug 2014 22:28:38 -0700
+Subject: [PATCH] aoe-stat.in: no bashism
+
+The checkbashisms shows there is no bashism, so use /bin/sh.
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ aoe-stat.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/aoe-stat.in b/aoe-stat.in
+index 50e6ac6..0c1d6f5 100755
+--- a/aoe-stat.in
++++ b/aoe-stat.in
+@@ -1,4 +1,4 @@
+-#! /bin/bash
++#! /bin/sh
+ # aoe-stat - collate and present information about AoE storage
+ # Copyright 2012, CORAID, Inc., and licensed under GPL v.2.
+ 
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/aoetools/aoetools_36.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/aoetools/aoetools_36.bb
new file mode 100644
index 0000000..c382a71
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/aoetools/aoetools_36.bb
@@ -0,0 +1,25 @@
+SUMMARY = "ATA over Ethernet Tools"
+DESCRIPTION = " \
+The aoetools are programs for users of the ATA over Ethernet (AoE)network \
+storage protocol, a simple protocol for using storage over anethernet LAN. \
+The vblade program (storage target) exports a blockdevice using AoE. \
+"
+HOMEPAGE = "http://sourceforge.net/projects/${BPN}"
+SECTION = "admin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+RRECOMMENDS_${PN} = "kernel-module-aoe"
+
+SRC_URI = "http://sourceforge.net/projects/${BPN}/files/${BPN}/${BPN}-${PV}.tar.gz \
+           file://aoe-stat-no-bashism.patch \
+        "
+SRC_URI[md5sum] = "bff30daa988a65f69d4448ce4726a6db"
+SRC_URI[sha256sum] = "fb5e2cd0de7644cc1ec04ee3aeb43211cf7445a0c19e13d6b3ed5a8fbdf215ff"
+
+# EXTRA_OEMAKE is typically: -e MAKEFLAGS=
+# the -e causes problems as CFLAGS is modified in the Makefile.
+EXTRA_OEMAKE = ""
+
+do_install() {
+    oe_runmake DESTDIR=${D} install
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-arpt-get-target-fix.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-arpt-get-target-fix.patch
new file mode 100644
index 0000000..0875344
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-arpt-get-target-fix.patch
@@ -0,0 +1,30 @@
+arptables: fix the redefinition of 'arpt_get_target'
+
+Upstream-Status: Pending
+
+This function is already defined as a static inline function in
+include/linux/netfilter_arp/arp_tables.h, once GCC uses -O0, the
+inline will not work, and the redefinition error will happen
+
+Signed-off-by: Aws Ismail <aws.ismail@windriver.com>
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+
+diff --git a/libarptc/libarptc_incl.c b/libarptc/libarptc_incl.c
+index 35736db..addd3f9 100644
+--- a/libarptc/libarptc_incl.c
++++ b/libarptc/libarptc_incl.c
+@@ -11,14 +11,6 @@
+ /* (C)1999 Paul ``Rusty'' Russell - Placed under the GNU GPL (See
+    COPYING for details). */
+ 
+-#ifndef __OPTIMIZE__
+-STRUCT_ENTRY_TARGET *
+-GET_TARGET(STRUCT_ENTRY *e)
+-{
+-	return (void *)e + e->target_offset;
+-}
+-#endif
+-
+ static int sockfd = -1;
+ static void *arptc_fn = NULL;
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-compile-install.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-compile-install.patch
new file mode 100644
index 0000000..80e9804
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-compile-install.patch
@@ -0,0 +1,61 @@
+Index: arptables-v0.0.3-4/Makefile
+===================================================================
+--- arptables-v0.0.3-4.orig/Makefile	2010-03-08 18:49:28.000000000 +0300
++++ arptables-v0.0.3-4/Makefile	2010-03-22 15:52:56.000000000 +0300
+@@ -6,12 +6,11 @@
+ LIBDIR:=$(PREFIX)/lib
+ BINDIR:=$(PREFIX)/sbin
+ MANDIR:=$(PREFIX)/man
+-INITDIR:=/etc/rc.d/init.d
++INITDIR:=/etc/init.d
+ SYSCONFIGDIR:=/etc/sysconfig
+ DESTDIR:=
+ 
+-COPT_FLAGS:=-O2
+-CFLAGS:=$(COPT_FLAGS) -Wall -Wunused -I$(KERNEL_DIR)/include/ -Iinclude/ -DARPTABLES_VERSION=\"$(ARPTABLES_VERSION)\" #-g -DDEBUG #-pg # -DARPTC_DEBUG
++ARPCFLAGS:=-Wall -Wunused -I$(KERNEL_DIR)/include/ -Iinclude/ -DARPTABLES_VERSION=\"$(ARPTABLES_VERSION)\"
+ 
+ ifndef ARPT_LIBDIR
+ ARPT_LIBDIR:=$(LIBDIR)/arptables
+@@ -22,16 +21,16 @@
+ all: arptables
+ 
+ arptables.o: arptables.c
+-	$(CC) $(CFLAGS) -c -o $@ $<
++	$(CC) $(CFLAGS) $(ARPCFLAGS) -c -o $@ $<
+ 
+ arptables-standalone.o: arptables-standalone.c
+-	$(CC) $(CFLAGS) -c -o $@ $<
++	$(CC) $(CFLAGS) $(ARPCFLAGS) -c -o $@ $<
+ 
+ libarptc/libarptc.o: libarptc/libarptc.c libarptc/libarptc_incl.c
+-	$(CC) $(CFLAGS) -c -o $@ $<
++	$(CC) $(CFLAGS) $(ARPCFLAGS) -c -o $@ $<
+ 
+ arptables: arptables-standalone.o arptables.o libarptc/libarptc.o $(EXT_OBJS)
+-	$(CC) $(CFLAGS) -o $@ $^
++	$(CC) $(LDFLAGS) $(CFLAGS) $(ARPCFLAGS) -o $@ $^
+ 
+ $(DESTDIR)$(MANDIR)/man8/arptables.8: arptables.8
+ 	mkdir -p $(@D)
+@@ -50,6 +49,7 @@
+ 	cat arptables-restore | sed 's/__EXEC_PATH__/$(tmp1)/g' > arptables-restore_
+ 	install -m 0755 -o root -g root arptables-restore_ $(DESTDIR)$(BINDIR)/arptables-restore
+ 	cat arptables.sysv | sed 's/__EXEC_PATH__/$(tmp1)/g' | sed 's/__SYSCONFIG__/$(tmp2)/g' > arptables.sysv_
++	install -d $(DESTDIR)$(INITDIR)
+ 	if test -d $(DESTDIR)$(INITDIR); then install -m 0755 -o root -g root arptables.sysv_ $(DESTDIR)$(INITDIR)/arptables; fi
+ 	rm -f arptables-save_ arptables-restore_ arptables.sysv_
+ 
+Index: arptables-v0.0.3-4/extensions/Makefile
+===================================================================
+--- arptables-v0.0.3-4.orig/extensions/Makefile	2010-03-08 18:49:28.000000000 +0300
++++ arptables-v0.0.3-4/extensions/Makefile	2010-03-22 15:52:38.000000000 +0300
+@@ -4,4 +4,7 @@
+ EXT_OBJS+=$(foreach T,$(EXT_FUNC), extensions/arpt_$(T).o)
+ 
+ extensions/ebt_%.o: extensions/arpt_%.c include/arptables.h include/arptables_common.h
+-	$(CC) $(CFLAGS) $(PROGSPECS) -c -o $@ $<
++	$(CC) $(CFLAGS) $(ARPCFLAGS) $(PROGSPECS) -c -o $@ $<
++
++extensions/arpt_%.o: extensions/arpt_%.c include/arptables.h include/arptables_common.h
++	$(CC) $(CFLAGS) $(ARPCFLAGS) $(PROGSPECS) -c -o $@ $<
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-init-busybox.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-init-busybox.patch
new file mode 100644
index 0000000..24956c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-init-busybox.patch
@@ -0,0 +1,77 @@
+Index: arptables-v0.0.3-4/arptables.sysv
+===================================================================
+--- arptables-v0.0.3-4.orig/arptables.sysv	2010-03-22 16:28:03.000000000 +0300
++++ arptables-v0.0.3-4/arptables.sysv	2010-03-22 16:27:51.000000000 +0300
+@@ -12,10 +12,10 @@
+ # config: __SYSCONFIG__/arptables
+ 
+ source /etc/init.d/functions
+-source /etc/sysconfig/network
++# source /etc/sysconfig/network
+ 
+ # Check that networking is up.
+-[ ${NETWORKING} = "no" ] && exit 0
++# [ ${NETWORKING} = "no" ] && exit 0
+ 
+ [ -x __EXEC_PATH__/arptables ] || exit 1
+ [ -x __EXEC_PATH__/arptables-save ] || exit 1
+@@ -28,32 +28,30 @@
+ desc="Arp filtering"
+ 
+ start() {
+-	echo -n $"Starting $desc ($prog): "
++	echo -n "Starting $desc ($prog): "
+ 	__EXEC_PATH__/arptables-restore < __SYSCONFIG__/arptables || RETVAL=1
+ 
+ 	if [ $RETVAL -eq 0 ]; then
+-		success "$prog startup"
+-		rm -f /var/lock/subsys/$prog
++		echo "$prog ok"
++		touch /var/lock/subsys/$prog
+ 	else
+-		failure "$prog startup"
++		echo "$prog failed"
+ 	fi
+ 
+-	echo
+ 	return $RETVAL
+ }
+ 
+ stop() {
+-	echo -n $"Stopping $desc ($prog): "
++	echo -n "Stopping $desc ($prog): "
+ 	__EXEC_PATH__/arptables-restore < /dev/null || RETVAL=1
+ 
+ 	if [ $RETVAL -eq 0 ]; then
+-		success "$prog shutdown"
+-		rm -f %{_localstatedir}/lock/subsys/$prog
++		echo "$prog stopped"
++		rm -f /var/lock/subsys/$prog
+ 	else
+-		failure "$prog shutdown"
++		echo "$prog failed to stop"
+ 	fi
+ 
+-	echo
+ 	return $RETVAL
+ }
+ 
+@@ -63,15 +61,14 @@
+ }
+ 
+ save() {
+-	echo -n $"Saving $desc ($prog): "
++	echo -n "Saving $desc ($prog): "
+ 	__EXEC_PATH__/arptables-save > __SYSCONFIG__/arptables || RETVAL=1
+ 
+ 	if [ $RETVAL -eq 0 ]; then
+-		success "$prog saved"
++		echo "$prog saved"
+ 	else
+-		failure "$prog saved"
++		echo "$prog is not saved"
+ 	fi
+-	echo
+ }
+ 
+ case "$1" in
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-remove-bashism.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-remove-bashism.patch
new file mode 100644
index 0000000..f332658
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables-0.0.3-4/arptables-remove-bashism.patch
@@ -0,0 +1,37 @@
+From cd312bc0e3686404428878d23b8888cba09a20e1 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Thu, 18 Sep 2014 19:46:58 -0700
+Subject: [PATCH] arptables.sysv: remove bashism
+
+Use "." to replace of "source", and change /bin/bash to /bin/sh, the
+echo $"foo" works well in busybox.
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ arptables.sysv |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arptables.sysv b/arptables.sysv
+index 7a90bd2..7710376 100644
+--- a/arptables.sysv
++++ b/arptables.sysv
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # init script for arptables
+ #
+@@ -11,7 +11,7 @@
+ #
+ # config: __SYSCONFIG__/arptables
+ 
+-source /etc/init.d/functions
++. /etc/init.d/functions
+ # source /etc/sysconfig/network
+ 
+ # Check that networking is up.
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables_0.0.3-4.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables_0.0.3-4.bb
new file mode 100644
index 0000000..be2ac66
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/arptables/arptables_0.0.3-4.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Administration tool for arp packet filtering"
+LICENSE = "GPL-2.0"
+SECTION = "net"
+
+PR = "r2"
+
+RDEPENDS_${PN} += "perl"
+
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+SRC_URI = " \
+    ${SOURCEFORGE_MIRROR}/ebtables/arptables-v${PV}.tar.gz;name=arptables \
+    file://arptables-compile-install.patch \
+    file://arptables-init-busybox.patch \
+    file://arptables-arpt-get-target-fix.patch \
+    file://arptables-remove-bashism.patch \
+"
+SRC_URI[arptables.md5sum] = "1d4ab05761f063b0751645d8f2b8f8e5"
+SRC_URI[arptables.sha256sum] = "e529fd465c67d69ad335299a043516e6b38cdcd337a5ed21718413e96073f928"
+
+S = "${WORKDIR}/arptables-v${PV}"
+
+do_compile () {
+    oe_runmake
+}
+
+# the install target is not multi-job safe, but it doesn't do much
+# so we just install serially
+#
+PARALLEL_MAKEINST = "-j1"
+
+fakeroot do_install () {
+    oe_runmake 'BINDIR=${sbindir}' 'MANDIR=${mandir}/' 'DESTDIR=${D}' install
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils.inc b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils.inc
new file mode 100644
index 0000000..0fb18d5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils.inc
@@ -0,0 +1,28 @@
+SUMMARY = "Tools for ethernet bridging"
+HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge"
+SECTION = "net"
+LICENSE = "GPLv2"
+
+DEPENDS = "sysfsutils"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/bridge/bridge-utils-${PV}.tar.gz \
+          file://bridge-utils-1.5-check-error-returns-from-write-to-sysfs.patch \
+          file://bridge-utils-1.5-fix-error-message-for-incorrect-command.patch \
+          file://bridge-utils-1.5-fix-incorrect-command-in-manual.patch \
+"
+
+inherit autotools-brokensep update-alternatives
+
+ALTERNATIVE_${PN} = "brctl"
+ALTERNATIVE_PRIORITY[brctl] = "100"
+ALTERNATIVE_LINK_NAME[brctl] = "${sbindir}/brctl"
+
+EXTRA_OECONF = "--with-linux-headers=${STAGING_INCDIR}"
+
+do_install_append () {
+    install -d ${D}/${datadir}/bridge-utils
+    install -d ${D}/${sysconfdir}/network/if-pre-up.d
+    install -d ${D}/${sysconfdir}/network/if-post-down.d
+}
+
+RRECOMMENDS_${PN} = "kernel-module-bridge"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/bridge-utils-1.5-check-error-returns-from-write-to-sysfs.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/bridge-utils-1.5-check-error-returns-from-write-to-sysfs.patch
new file mode 100644
index 0000000..d00af9c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/bridge-utils-1.5-check-error-returns-from-write-to-sysfs.patch
@@ -0,0 +1,87 @@
+Upstream-status: BackPort [http://pkgs.fedoraproject.org/cgit/bridge-utils.git/diff/bridge-utils-1.5-check-error-returns-from-write-to-sysfs.patch?id=b0d10717fd7cebf5d85eed3f941b409fa0384f08]
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+
+From bb9970a9df95837e39d680021b1f73d231e85406 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <shemminger@vyatta.com>
+Date: Tue, 3 May 2011 09:52:43 -0700
+Subject: [PATCH 3/3] Check error returns from write to sysfs
+
+Add helper function to check write to sysfs files.
+
+Signed-off-by: Petr Sabata <contyk@redhat.com>
+---
+ libbridge/libbridge_devif.c |   37 +++++++++++++++++++++++--------------
+ 1 files changed, 23 insertions(+), 14 deletions(-)
+
+diff --git a/libbridge/libbridge_devif.c b/libbridge/libbridge_devif.c
+index aa8bc36..1e83925 100644
+--- a/libbridge/libbridge_devif.c
++++ b/libbridge/libbridge_devif.c
+@@ -280,25 +280,38 @@ fallback:
+ 	return old_get_port_info(brname, port, info);
+ }
+ 
++static int set_sysfs(const char *path, unsigned long value)
++{
++	int fd, ret = 0, cc;
++	char buf[32];
++
++	fd = open(path, O_WRONLY);
++	if (fd < 0)
++		return -1;
++
++	cc = snprintf(buf, sizeof(buf), "%lu\n", value);
++	if (write(fd, buf, cc) < 0)
++		ret = -1;
++	close(fd);
++
++	return ret;
++}
++
+ 
+ static int br_set(const char *bridge, const char *name,
+ 		  unsigned long value, unsigned long oldcode)
+ {
+ 	int ret;
+ 	char path[SYSFS_PATH_MAX];
+-	FILE *f;
+ 
+-	snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/%s", bridge, name);
++	snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/bridge/%s",
++		 bridge, name);
+ 
+-	f = fopen(path, "w");
+-	if (f) {
+-		ret = fprintf(f, "%ld\n", value);
+-		fclose(f);
+-	} else {
++	if ((ret = set_sysfs(path, value)) < 0) {
+ 		/* fallback to old ioctl */
+ 		struct ifreq ifr;
+ 		unsigned long args[4] = { oldcode, value, 0, 0 };
+-		
++
+ 		strncpy(ifr.ifr_name, bridge, IFNAMSIZ);
+ 		ifr.ifr_data = (char *) &args;
+ 		ret = ioctl(br_socket_fd, SIOCDEVPRIVATE, &ifr);
+@@ -348,14 +361,10 @@ static int port_set(const char *bridge, const char *ifname,
+ {
+ 	int ret;
+ 	char path[SYSFS_PATH_MAX];
+-	FILE *f;
+ 
+ 	snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/brport/%s", ifname, name);
+-	f = fopen(path, "w");
+-	if (f) {
+-		ret = fprintf(f, "%ld\n", value);
+-		fclose(f);
+-	} else {
++
++	if ((ret = set_sysfs(path, value)) < 0) {
+ 		int index = get_portno(bridge, ifname);
+ 
+ 		if (index < 0)
+-- 
+1.7.5.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/bridge-utils-1.5-fix-error-message-for-incorrect-command.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/bridge-utils-1.5-fix-error-message-for-incorrect-command.patch
new file mode 100644
index 0000000..2d0494e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/bridge-utils-1.5-fix-error-message-for-incorrect-command.patch
@@ -0,0 +1,33 @@
+Upstream-status: BackPort [http://pkgs.fedoraproject.org/cgit/bridge-utils.git/diff/bridge-utils-1.5-fix-error-message-for-incorrect-command.patch?id=b0d10717fd7cebf5d85eed3f941b409fa0384f08]
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+
+From c7ed0996ef58b497d3d30be802ab5ae6c37099b5 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <shemminger@vyatta.com>
+Date: Tue, 3 May 2011 09:49:57 -0700
+Subject: [PATCH 2/3] Fix error message for incorrect command
+
+Debian bug 406907
+Error message was refering to incorrect command argument.
+
+Signed-off-by: Petr Sabata <contyk@redhat.com>
+---
+ brctl/brctl.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/brctl/brctl.c b/brctl/brctl.c
+index 454b8dd..46ca352 100644
+--- a/brctl/brctl.c
++++ b/brctl/brctl.c
+@@ -69,7 +69,7 @@ int main(int argc, char *const* argv)
+ 	argc -= optind;
+ 	argv += optind;
+ 	if ((cmd = command_lookup(*argv)) == NULL) {
+-		fprintf(stderr, "never heard of command [%s]\n", argv[1]);
++		fprintf(stderr, "never heard of command [%s]\n", *argv);
+ 		goto help;
+ 	}
+ 	
+-- 
+1.7.5.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/bridge-utils-1.5-fix-incorrect-command-in-manual.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/bridge-utils-1.5-fix-incorrect-command-in-manual.patch
new file mode 100644
index 0000000..6f6d6d4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/bridge-utils-1.5-fix-incorrect-command-in-manual.patch
@@ -0,0 +1,33 @@
+Upstream-status: BackPort [http://pkgs.fedoraproject.org/cgit/bridge-utils.git/diff/bridge-utils-1.5-fix-incorrect-command-in-manual.patch?id=b0d10717fd7cebf5d85eed3f941b409fa0384f08]
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+
+From 8ef7b77562b636efcbd8b759eb324d6c069200f2 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <shemminger@vyatta.com>
+Date: Tue, 3 May 2011 09:48:40 -0700
+Subject: [PATCH 1/3] Fix incorrect command in manual
+
+Command is "setageing" not "setageingtime"; fix man page.
+Debian bug report.
+
+Signed-off-by: Petr Sabata <contyk@redhat.com>
+---
+ doc/brctl.8 |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/doc/brctl.8 b/doc/brctl.8
+index d904047..771f323 100644
+--- a/doc/brctl.8
++++ b/doc/brctl.8
+@@ -89,7 +89,7 @@ data. Machines can move to other ports, network cards can be replaced
+ .B brctl showmacs <brname>
+ shows a list of learned MAC addresses for this bridge.
+ 
+-.B brctl setageingtime <brname> <time>
++.B brctl setageing <brname> <time>
+ sets the ethernet (MAC) address ageing time, in seconds. After <time>
+ seconds of not having seen a frame coming from a certain address, the
+ bridge will time out (delete) that address from the Forwarding
+-- 
+1.7.5.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/kernel-headers.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/kernel-headers.patch
new file mode 100644
index 0000000..de36f05
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils/kernel-headers.patch
@@ -0,0 +1,22 @@
+include missing kernel header
+
+Fixes errors like
+
+| /b/kraj/jlinux-next/poky/build/tmp-eglibc/sysroots/re-64b/usr/include/linux/if_bridge.h:172:20: error: field 'ip6' has incomplete type
+| In file included from ../libbridge/libbridge.h:24:0,
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+
+Index: bridge-utils-1.5/libbridge/libbridge.h
+===================================================================
+--- bridge-utils-1.5.orig/libbridge/libbridge.h	2011-03-28 17:52:54.000000000 -0700
++++ bridge-utils-1.5/libbridge/libbridge.h	2013-03-04 21:16:25.781188309 -0800
+@@ -20,6 +20,7 @@
+ #define _LIBBRIDGE_H
+ 
+ #include <sys/socket.h>
++#include <linux/in6.h>
+ #include <linux/if.h>
+ #include <linux/if_bridge.h>
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils_1.5.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils_1.5.bb
new file mode 100644
index 0000000..04f863b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils_1.5.bb
@@ -0,0 +1,11 @@
+require bridge-utils.inc
+
+SRC_URI += "file://kernel-headers.patch"
+
+PARALLEL_MAKE = ""
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=f9d20a453221a1b7e32ae84694da2c37"
+
+SRC_URI[md5sum] = "ec7b381160b340648dede58c31bb2238"
+SRC_URI[sha256sum] = "42f9e5fb8f6c52e63a98a43b81bd281c227c529f194913e1c51ec48a393b6688"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/c-ares/c-ares_1.11.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/c-ares/c-ares_1.11.0.bb
new file mode 100644
index 0000000..2f72ab4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/c-ares/c-ares_1.11.0.bb
@@ -0,0 +1,13 @@
+# Copyright (c) 2012-2014 LG Electronics, Inc.
+
+DESCRIPTION = "c-ares is a C library that resolves names asynchronously."
+HOMEPAGE = "http://daniel.haxx.se/projects/c-ares/"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://ares_init.c;beginline=1;endline=3;md5=53f5ecf4c22c37cf1ddd1ef8f8eccce0"
+
+SRC_URI = "http://c-ares.haxx.se/download/${BP}.tar.gz"
+SRC_URI[md5sum] = "d5c6d522cfc54bb6f215a0b7912d46be"
+SRC_URI[sha256sum] = "b3612e6617d9682928a1d50c1040de4db6519f977f0b25d40cf1b632900b3efd"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_git.bb
new file mode 100644
index 0000000..87306a6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_git.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "A a package of utilities for doing and managing mounts of the Linux CIFS filesystem."
+HOMEPAGE = "http://wiki.samba.org/index.php/LinuxCIFS_utils"
+SECTION = "otherosfs"
+LICENSE = "GPLv3 & LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "samba"
+PV = "6.4"
+
+SRCREV = "487f46da737291877867cbd3acb40fea087d3863"
+SRC_URI = "git://git.samba.org/cifs-utils.git"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[cap] = "--with-libcap,--without-libcap,libcap"
+# when enabled, it creates ${bindir}/cifscreds and --ignore-fail-on-non-empty in do_install_append is needed
+PACKAGECONFIG[cifscreds] = "--enable-cifscreds,--disable-cifscreds,keyutils"
+# when enabled, it creates ${sbindir}/cifs.upcall and --ignore-fail-on-non-empty in do_install_append is needed
+PACKAGECONFIG[cifsupcall] = "--enable-cifsupcall,--disable-cifsupcall,krb5 libtalloc keyutils"
+PACKAGECONFIG[cifsidmap] = "--enable-cifsidmap,--disable-cifsidmap, keyutils"
+PACKAGECONFIG[pam] = "--enable-pam --with-pamdir=${base_libdir}/security,--disable-pam,libpam keyutils"
+
+inherit autotools pkgconfig
+
+do_install_append() {
+    # Remove empty /usr/bin and /usr/sbin directories since the mount helper
+    # is installed to /sbin
+    rmdir --ignore-fail-on-non-empty ${D}${bindir} ${D}${sbindir}
+}
+
+FILES_${PN} += "${base_libdir}/security"
+FILES_${PN}-dbg += "${base_libdir}/security/.debug"
+RRECOMMENDS_${PN} = "kernel-module-cifs"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema-docs_2.40.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema-docs_2.40.0.bb
new file mode 100644
index 0000000..31875ea
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema-docs_2.40.0.bb
@@ -0,0 +1,25 @@
+require cim-schema.inc
+
+SECTION = "doc"
+
+LICENSE = "DMTF"
+
+SRC_URI = "http://dmtf.org/sites/default/files/cim/cim_schema_v2400/cim_schema_${PV}Final-Doc.zip \
+           file://LICENSE \
+          "
+SRC_URI[md5sum] = "3d01940bc1085c6c42184c25fb61f739"
+SRC_URI[sha256sum] = "3174cf0f8657b19d80dc59e184778d8e553da424728cb2966fe9d5428dd84267"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=eecc6f71a56ff3caf17f15bf7aeac7b4"
+
+do_unpack() {
+        unzip -q ${DL_DIR}/cim_schema_${PV}Final-Doc.zip -d ${S}
+        cp -f ${FILE_DIRNAME}/files/LICENSE ${WORKDIR}/
+}
+
+do_install() {
+        install -d -m 0755 ${D}${datadir}/doc/cim-schema-${PV}-docs
+        cp -R --no-dereference --preserve=mode,links -v ${S}/* ${D}${datadir}/doc/cim-schema-${PV}-docs
+}
+
+FILES_${PN} = "${datadir}/doc/*"
+FILES_${PN}-doc = ""
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema-exper_2.39.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema-exper_2.39.0.bb
new file mode 100644
index 0000000..4b07c0b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema-exper_2.39.0.bb
@@ -0,0 +1,29 @@
+require cim-schema.inc
+
+LICENSE = "DMTF"
+
+RCONFLICTS_${PN} = "cim-schema-final"
+
+SRC_URI = "http://dmtf.org/sites/default/files/cim/cim_schema_v2390/cim_schema_${PV}Experimental-MOFs.zip;subdir=${BPN}-${PV} \
+           file://LICENSE \
+          "
+SRC_URI[md5sum] = "b82b31c609c6bcc69521829409f58ccc"
+SRC_URI[sha256sum] = "ed2096ef1ea25d189a02bbc6603fed7a48297f2987f254265763a6eecb7fc870"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=eecc6f71a56ff3caf17f15bf7aeac7b4"
+
+do_install() {
+        install -d -m 0755 ${D}${datadir}/mof/cimv${PV}/
+        install -d -m 0755 ${D}${datadir}/doc/cim-schema-${PV}
+        install -m 644 ${WORKDIR}/LICENSE ${D}${datadir}/doc/cim-schema-${PV}
+
+        cp -R --no-dereference --preserve=mode,links -v ${S}/* ${D}${datadir}/mof/cimv${PV}/	
+        chown -R root:root ${D}${datadir}/mof/cimv${PV}
+        for i in `find ${D}${datadir}/mof/cimv${PV} -name "*.mof"`; do
+                sed -i -e 's/\r//g' $i
+        done
+        ln -s cimv${PV} ${D}${datadir}/mof/cim-current
+        ln -s cim_schema_${PV}.mof ${D}${datadir}/mof/cim-current/CIM_Schema.mof
+}
+
+FILES_${PN} = "${datadir}/mof/* ${datadir}/doc/*"
+FILES_${PN}-doc = ""
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema-final_2.40.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema-final_2.40.0.bb
new file mode 100644
index 0000000..5675384
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema-final_2.40.0.bb
@@ -0,0 +1,34 @@
+require cim-schema.inc
+
+LICENSE = "DMTF"
+
+RCONFLICTS_${PN} = "cim-schema-exper"
+
+SRC_URI = "http://dmtf.org/sites/default/files/cim/cim_schema_v2400/cim_schema_${PV}Final-MOFs.zip \
+           file://LICENSE \
+          "
+SRC_URI[md5sum] = "a9bdf17c7374e3b5b7adeaac4842c4ad"
+SRC_URI[sha256sum] = "dbfa3064ea427acd71a4bebbc172ca2dc44b0b09a6d83b0945b9ffa988a9058a"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=eecc6f71a56ff3caf17f15bf7aeac7b4"
+
+do_unpack() {
+        unzip -q ${DL_DIR}/cim_schema_${PV}Final-MOFs.zip -d ${S}
+        cp -f ${FILE_DIRNAME}/files/LICENSE ${WORKDIR}/
+}
+
+do_install() {
+        install -d -m 0755 ${D}${datadir}/mof/cimv${PV}/
+        install -d -m 0755 ${D}${datadir}/doc/cim-schema-${PV}
+        install -m 644 ${WORKDIR}/LICENSE ${D}${datadir}/doc/cim-schema-${PV}
+
+        cp -R --no-dereference --preserve=mode,links -v ${S}/* ${D}${datadir}/mof/cimv${PV}/	
+        chown -R root:root ${D}${datadir}/mof/cimv${PV}/
+        for i in `find ${D}${datadir}/mof/cimv${PV} -name "*.mof"`; do
+                sed -i -e 's/\r//g' $i
+        done
+        ln -s cimv${PV} ${D}${datadir}/mof/cim-current
+        ln -s cim_schema_${PV}.mof ${D}${datadir}/mof/cim-current/CIM_Schema.mof
+}
+
+FILES_${PN} = "${datadir}/mof/* ${datadir}/doc/*"
+FILES_${PN}-doc = ""
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema.inc b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema.inc
new file mode 100644
index 0000000..b9171e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Common Information Model (CIM) Schema"
+DESCRIPTION = "Common Information Model (CIM) is a model for describing overall\
+management information in a network or enterprise environment. CIM\
+consists of a specification and a schema. The specification defines the\
+details for integration with other management models. The schema\
+provides the actual model descriptions."
+
+HOMEPAGE = "http://www.dmtf.org/"
+SECTION = "libs"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema/files/LICENSE b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema/files/LICENSE
new file mode 100644
index 0000000..54a2812
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/cim-schema/files/LICENSE
@@ -0,0 +1,34 @@
+// Copyright 1998-2008 Distributed Management Task Force, Inc. (DMTF).
+// All rights reserved.
+// DMTF is a not-for-profit association of industry members dedicated
+// to promoting enterprise and systems management and interoperability.
+// DMTF specifications and documents may be reproduced by
+// members and non-members, provided that correct attribution is given.
+// As DMTF specifications may be revised from time to time,
+// the particular version and release date should always be noted.
+// 
+// Implementation of certain elements of this standard or proposed
+// standard may be subject to third party patent rights, including
+// provisional patent rights (herein "patent rights"). DMTF makes
+// no representations to users of the standard as to the existence
+// of such rights, and is not responsible to recognize, disclose, or
+// identify any or all such third party patent right, owners or
+// claimants, nor for any incomplete or inaccurate identification or
+// disclosure of such rights, owners or claimants. DMTF shall have no
+// liability to any party, in any manner or circumstance, under any
+// legal theory whatsoever, for failure to recognize, disclose, or
+// identify any such third party patent rights, or for such party's
+// reliance on the standard or incorporation thereof in its product,
+// protocols or testing procedures. DMTF shall have no liability to
+// any party implementing such standard, whether such implementation
+// is foreseeable or not, nor to any patent owner or claimant, and shall
+// have no liability or responsibility for costs or losses incurred if
+// a standard is withdrawn or modified after publication, and shall be
+// indemnified and held harmless by any party implementing the
+// standard from any and all claims of infringement by a patent owner
+// for such implementations.
+// 
+// For information about patents held by third-parties which have
+// notified the DMTF that, in their opinion, such patent may relate to
+// or impact implementations of DMTF standards, visit
+// http://www.dmtf.org/about/policies/disclosures.php.
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/files/LICENSE b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/files/LICENSE
new file mode 100644
index 0000000..54a2812
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/cim-schema/files/LICENSE
@@ -0,0 +1,34 @@
+// Copyright 1998-2008 Distributed Management Task Force, Inc. (DMTF).
+// All rights reserved.
+// DMTF is a not-for-profit association of industry members dedicated
+// to promoting enterprise and systems management and interoperability.
+// DMTF specifications and documents may be reproduced by
+// members and non-members, provided that correct attribution is given.
+// As DMTF specifications may be revised from time to time,
+// the particular version and release date should always be noted.
+// 
+// Implementation of certain elements of this standard or proposed
+// standard may be subject to third party patent rights, including
+// provisional patent rights (herein "patent rights"). DMTF makes
+// no representations to users of the standard as to the existence
+// of such rights, and is not responsible to recognize, disclose, or
+// identify any or all such third party patent right, owners or
+// claimants, nor for any incomplete or inaccurate identification or
+// disclosure of such rights, owners or claimants. DMTF shall have no
+// liability to any party, in any manner or circumstance, under any
+// legal theory whatsoever, for failure to recognize, disclose, or
+// identify any such third party patent rights, or for such party's
+// reliance on the standard or incorporation thereof in its product,
+// protocols or testing procedures. DMTF shall have no liability to
+// any party implementing such standard, whether such implementation
+// is foreseeable or not, nor to any patent owner or claimant, and shall
+// have no liability or responsibility for costs or losses incurred if
+// a standard is withdrawn or modified after publication, and shall be
+// indemnified and held harmless by any party implementing the
+// standard from any and all claims of infringement by a patent owner
+// for such implementations.
+// 
+// For information about patents held by third-parties which have
+// notified the DMTF that, in their opinion, such patent may relate to
+// or impact implementations of DMTF standards, visit
+// http://www.dmtf.org/about/policies/disclosures.php.
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb/01-support-cross-compile-for-linux-os.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb/01-support-cross-compile-for-linux-os.patch
new file mode 100644
index 0000000..c9195b4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb/01-support-cross-compile-for-linux-os.patch
@@ -0,0 +1,24 @@
+support cross-compile for linux-os.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp ctdb-2.5.1.orig/configure ctdb-2.5.1/configure
+--- ctdb-2.5.1.orig/configure	2015-05-07 16:24:28.545000238 +0900
++++ ctdb-2.5.1/configure	2015-05-07 16:28:20.894000244 +0900
+@@ -10692,10 +10692,16 @@ if test x"$libreplace_cv_HAVE_GETADDRINF
+ 	# see bug 5910, use our replacements if we detect
+ 	# a broken system.
+ 	if test "$cross_compiling" = yes; then :
++		case "$target_os" in
++		*linux*)
++			;;
++		*)
+   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ as_fn_error $? "cannot run test program while cross compiling
+ See \`config.log' for more details" "$LINENO" 5; }
++			;;
++		esac
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb/02-link-rep_snprintf-for-ltdbtool.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb/02-link-rep_snprintf-for-ltdbtool.patch
new file mode 100644
index 0000000..1dd9b93
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb/02-link-rep_snprintf-for-ltdbtool.patch
@@ -0,0 +1,16 @@
+link rep_snprintf from lib/replace/snprintf.o for ltdbtool
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp ctdb-2.5.1.orig/Makefile.in ctdb-2.5.1/Makefile.in
+--- ctdb-2.5.1.orig/Makefile.in	2015-05-07 16:43:39.276000236 +0900
++++ ctdb-2.5.1/Makefile.in	2015-05-07 16:44:09.627000237 +0900
+@@ -170,7 +170,7 @@ bin/ctdb: $(CTDB_CLIENT_OBJ) tools/ctdb.
+ 	@echo Linking $@
+ 	$(WRAPPER) $(CC) $(CFLAGS) -o $@ tools/ctdb.o tools/ctdb_vacuum.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+ 
+-bin/ltdbtool: tools/ltdbtool.o $(TDB_OBJ)
++bin/ltdbtool: tools/ltdbtool.o $(TDB_OBJ) lib/replace/snprintf.o
+ 	@echo Linking $@
+ 	$(WRAPPER) $(CC) $(CFLAGS) -o $@ $+ $(TDB_LIBS) $(LIB_FLAGS)
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb/service-ensure-the-PID-directory-is-created.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb/service-ensure-the-PID-directory-is-created.patch
new file mode 100644
index 0000000..a7e987b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb/service-ensure-the-PID-directory-is-created.patch
@@ -0,0 +1,25 @@
+From f02ff7383f1cc0c118732352ccbae476c7b3b3ba Mon Sep 17 00:00:00 2001
+From: Mark Asselstine <mark.asselstine@windriver.com>
+Date: Tue, 17 Nov 2015 16:17:00 -0500
+Subject: [PATCH] service: ensure the PID directory is created
+
+Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
+---
+ config/ctdb.service | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/config/ctdb.service b/config/ctdb.service
+index ea37c30..8537105 100644
+--- a/config/ctdb.service
++++ b/config/ctdb.service
+@@ -5,6 +5,7 @@ After=network.target
+ [Service]
+ Type=forking
+ LimitCORE=infinity
++RuntimeDirectory=/run/ctdb
+ PIDFile=/run/ctdb/ctdbd.pid
+ ExecStart=/usr/sbin/ctdbd_wrapper /run/ctdb/ctdbd.pid start
+ ExecStop=/usr/sbin/ctdbd_wrapper /run/ctdb/ctdbd.pid stop
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb_2.5.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb_2.5.1.bb
new file mode 100644
index 0000000..5d75784
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ctdb/ctdb_2.5.1.bb
@@ -0,0 +1,54 @@
+DESCRIPTION = "CTDB is a cluster implementation of the TDB database \
+used by Samba and other projects to store temporary data. If an \
+application is already using TDB for temporary data it is very easy \
+to convert that application to be cluster aware and use CTDB instead."
+HOMEPAGE = "https://ctdb.samba.org/"
+LICENSE = "GPL-2.0+ & LGPL-3.0+ & GPL-3.0+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=bfccfe952269fff2b407dd11f2f3083b \
+                    file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \
+                    "
+
+SRC_URI = "https://ftp.samba.org/pub/${PN}/${BP}.tar.gz \
+           file://01-support-cross-compile-for-linux-os.patch \
+           file://02-link-rep_snprintf-for-ltdbtool.patch \
+           file://service-ensure-the-PID-directory-is-created.patch \
+          "
+
+SRC_URI[md5sum] = "d0cd91726ff4ca2229e1b21859c94717"
+SRC_URI[sha256sum] = "d5bf3f674cae986bb6178b1db215a703ac94adc5f75fadfdcff63dcbb5e98ab5"
+
+inherit autotools-brokensep pkgconfig systemd
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[libtdb] = "--without-included-tdb,--with-included-tdb,libtdb"
+
+PARALLEL_MAKE = ""
+
+DEPENDS += "popt libtevent libtalloc libldb"
+
+# ctdbd_wrapper requires pgrep, hence procps
+RDEPENDS_${PN} += "procps"
+
+do_configure() {
+    oe_runconf
+}
+
+do_install_append() {
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${S}/config/ctdb.service ${D}${systemd_unitdir}/system
+    sed -i -e 's,/usr/sbin/,${sbindir}/,' ${D}${systemd_unitdir}/system/ctdb.service
+    sed -i -e 's,\([=\ ]\)/run/,\1${localstatedir}/run/,' ${D}${systemd_unitdir}/system/ctdb.service
+
+    rm -r ${D}/${localstatedir}/run
+}
+
+# The systemd service is disabled by default, as the service will fail to
+# start without /etc/ctdb/nodes. If the user supplies this, they can re-enable
+# the service.
+SYSTEMD_AUTO_ENABLE = "disable"
+SYSTEMD_SERVICE_${PN} = "ctdb.service"
+
+# onnode is a shell script with bashisms and bash #!
+RDEPENDS_${PN} += "bash"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/curlpp/curlpp/example21.cpp-remove-deprecated-code.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/curlpp/curlpp/example21.cpp-remove-deprecated-code.patch
new file mode 100644
index 0000000..dae583d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/curlpp/curlpp/example21.cpp-remove-deprecated-code.patch
@@ -0,0 +1,47 @@
+example21.cpp: remove deprecated code
+
+The deprecated code was no longer used, so remove it to avoid
+compiling failure with -Werror=unused-function
+...
+| example21.cpp:51:8: error: 'size_t {anonymous}::readData(char*,
+size_t, size_t)' defined but not used [-Werror=unused-function]
+|  size_t readData(char *buffer, size_t size, size_t nitems)
+...
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ examples/example21.cpp | 17 -----------------
+ 1 file changed, 17 deletions(-)
+
+diff --git a/examples/example21.cpp b/examples/example21.cpp
+--- a/examples/example21.cpp
++++ b/examples/example21.cpp
+@@ -39,23 +39,6 @@
+ #include <curlpp/Options.hpp>
+ #include <curlpp/Exception.hpp>
+  
+-/*
+-   anonymous namespace to prevent name clash in case other examples using the same global entities
+-   would be compiled in the same project
+-*/
+-namespace
+-{
+-
+-char *data = NULL;
+-
+-size_t readData(char *buffer, size_t size, size_t nitems)
+-{
+-  strncpy(buffer, data, size * nitems);
+-  return size * nitems;
+-}
+-
+-} // namespace
+-
+ int main(int argc, char *argv[])
+ {
+   if(argc != 3) {
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/curlpp/curlpp/pkgconfig_fix.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/curlpp/curlpp/pkgconfig_fix.patch
new file mode 100644
index 0000000..ad73c00
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/curlpp/curlpp/pkgconfig_fix.patch
@@ -0,0 +1,38 @@
+Upstream-Status: Inappropriate [packaging]
+
+
+Index: curl-7.20.0/libcurl.pc.in
+===================================================================
+--- curl-7.20.0.orig/libcurl.pc.in	2009-11-17 18:11:07.000000000 +0000
++++ curl-7.20.0/libcurl.pc.in	2010-03-25 12:13:26.814051066 +0000
+@@ -35,6 +35,7 @@
+ URL: http://curl.haxx.se/
+ Description: Library to transfer files with ftp, http, etc.
+ Version: @CURLVERSION@
+-Libs: -L${libdir} -lcurl @LIBS@
+-Libs.private: @LIBCURL_LIBS@ @LIBS@
++Requires.private: @GNUTLS_REQUIRED@
++Libs: -L${libdir} -lcurl
++Libs.private: -ldl -lz
+ Cflags: -I${includedir}
+Index: curl-7.20.0/configure.ac
+===================================================================
+--- curl-7.20.0.orig/configure.ac	2010-02-04 21:41:46.000000000 +0000
++++ curl-7.20.0/configure.ac	2010-03-25 12:12:18.673129001 +0000
+@@ -1668,6 +1668,7 @@
+        AC_SUBST(USE_GNUTLS, [1])
+        GNUTLS_ENABLED=1
+        USE_GNUTLS="yes"
++       GNUTLS_REQUIRED="gnutls"
+        curl_ssl_msg="enabled (GnuTLS)"
+        ],
+        [
+@@ -1696,6 +1697,8 @@
+ 
+ fi dnl OPENSSL != 1
+ 
++AC_SUBST(GNUTLS_REQUIRED)
++
+ dnl ----------------------------------------------------
+ dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
+ dnl ----------------------------------------------------
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/curlpp/curlpp_0.7.3.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/curlpp/curlpp_0.7.3.bb
new file mode 100644
index 0000000..5663f0e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/curlpp/curlpp_0.7.3.bb
@@ -0,0 +1,31 @@
+SUMMARY = "C++ library for client-side URL transfers"
+HOMEPAGE = "http://code.google.com/p/curlpp/"
+SECTION = "libdevel"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+DEPENDS = "curl boost"
+DEPENDS_class-native = "curl-native"
+
+SRC_URI = "http://curlpp.googlecode.com/files/curlpp-${PV}.tar.gz \
+           file://example21.cpp-remove-deprecated-code.patch \
+	"
+
+SRC_URI[md5sum] = "ccc3d30d4b3b5d2cdbed635898c29485"
+SRC_URI[sha256sum] = "e3f9427b27c5bddf898d383d45c0d3d5397e2056ff935d9a5cdaef6a9a653bd5"
+
+inherit autotools-brokensep pkgconfig binconfig
+
+PACKAGES =+ "libcurlpp libcurlpp-dev libcurlpp-staticdev"
+
+FILES_lib${BPN} = "${libdir}/lib*.so.* \
+		"
+
+FILES_lib${BPN}-dev = "${includedir} \
+                      ${libdir}/lib*.la \
+                      ${libdir}/pkgconfig \
+                      ${bindir}/*-config"
+
+FILES_lib${BPN}-staticdev = "${libdir}/lib*.a"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq.inc b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
new file mode 100644
index 0000000..cc7f9e3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
@@ -0,0 +1,83 @@
+SUMMARY = "Lightweight, easy to configure DNS forwarder and DHCP server"
+HOMEPAGE = "http://www.thekelleys.org.uk/dnsmasq/doc.html"
+SECTION = "net"
+# GPLv3 was added in version 2.41 as license option
+LICENSE = "GPLv2 | GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
+                    file://COPYING-v3;md5=d32239bcb673463ab874e80d47fae504"
+
+#at least versions 2.15 and prior are moved to the archive folder on the server
+SRC_URI = "http://www.thekelleys.org.uk/dnsmasq/${@['archive/', ''][float(d.getVar('PV',1).split('.')[1]) > 15]}dnsmasq-${PV}.tar.gz;name=dnsmasq-${PV} \
+           file://init \
+           file://dnsmasq.conf \
+           file://dnsmasq-resolvconf.service \
+           file://dnsmasq-noresolvconf.service \
+"
+
+inherit pkgconfig update-rc.d systemd
+
+INITSCRIPT_NAME = "dnsmasq"
+INITSCRIPT_PARAMS = "defaults"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[dbus] = ",,dbus"
+PACKAGECONFIG[idn] = ",,libidn"
+PACKAGECONFIG[conntrack] = ",,libnetfilter-conntrack"
+PACKAGECONFIG[lua] = ",,lua"
+PACKAGECONFIG[resolvconf] = ",,,resolvconf"
+EXTRA_OEMAKE = "\
+    'COPTS=${@base_contains('PACKAGECONFIG', 'dbus', '-DHAVE_DBUS', '', d)} \
+           ${@base_contains('PACKAGECONFIG', 'idn', '-DHAVE_IDN', '', d)} \
+           ${@base_contains('PACKAGECONFIG', 'conntrack', '-DHAVE_CONNTRACK', '', d)} \
+           ${@base_contains('PACKAGECONFIG', 'lua', '-DHAVE_LUASCRIPT', '', d)}' \
+    'CFLAGS=${CFLAGS}' \
+    'LDFLAGS=${LDFLAGS}' \
+"
+
+SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 'file://dnsmasq.resolvconf file://99_dnsmasq file://dnsmasq-resolvconf-helper', '', d)}"
+
+do_compile_append() {
+    # build dhcp_release
+    cd ${S}/contrib/wrt
+    oe_runmake
+}
+
+do_install () {
+    oe_runmake "PREFIX=${D}${prefix}" \
+               "BINDIR=${D}${bindir}" \
+               "MANDIR=${D}${mandir}" \
+               install
+    install -d ${D}${sysconfdir}/ ${D}${sysconfdir}/init.d ${D}${sysconfdir}/dnsmasq.d
+    install -m 644 ${WORKDIR}/dnsmasq.conf ${D}${sysconfdir}/
+    install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/dnsmasq
+
+    install -d ${D}${systemd_unitdir}/system
+
+    if [ "${@base_contains('PACKAGECONFIG', 'resolvconf', 'resolvconf', '', d)}" != "" ]; then
+        install -m 0644 ${WORKDIR}/dnsmasq-resolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service
+    else
+        install -m 0644 ${WORKDIR}/dnsmasq-noresolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service
+    fi
+
+    install -m 0755 ${S}/contrib/wrt/dhcp_release ${D}${bindir}
+
+    if [ "${@base_contains('PACKAGECONFIG', 'dbus', 'dbus', '', d)}" != "" ]; then
+        install -d ${D}${sysconfdir}/dbus-1/system.d
+        install -m 644 dbus/dnsmasq.conf ${D}${sysconfdir}/dbus-1/system.d/
+    fi
+    if [ "${@base_contains('PACKAGECONFIG', 'resolvconf', 'resolvconf', '', d)}" != "" ]; then
+        install -d ${D}${sysconfdir}/resolvconf/update.d/
+        install -m 0755 ${WORKDIR}/dnsmasq.resolvconf ${D}${sysconfdir}/resolvconf/update.d/dnsmasq
+
+        install -d ${D}${sysconfdir}/default/volatiles
+        install -m 0644 ${WORKDIR}/99_dnsmasq ${D}${sysconfdir}/default/volatiles
+        install -m 0755 ${WORKDIR}/dnsmasq-resolvconf-helper ${D}${bindir}
+    fi
+}
+
+CONFFILES_${PN} = "${sysconfdir}/dnsmasq.conf"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "dnsmasq.service"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq/lua.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq/lua.patch
new file mode 100644
index 0000000..918c0b6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq/lua.patch
@@ -0,0 +1,29 @@
+From 1e5be0a0bcf85913d63408030dec038d360a5fa6 Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe_macdonald@mentor.com>
+Date: Tue, 9 Sep 2014 10:24:58 -0400
+Subject: [PATCH] Upstream-status: Inappropriate [OE specific]
+
+Signed-off-by: Christopher Larson <chris_larson@mentor.com>
+
+---
+ Makefile |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index fc38393..a79f8bf 100644
+--- a/Makefile
++++ b/Makefile
+@@ -57,8 +57,8 @@ idn_cflags =    `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_IDN $(PKG_CONFIG) -
+ idn_libs =      `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_IDN $(PKG_CONFIG) --libs libidn` 
+ ct_cflags =     `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_CONNTRACK $(PKG_CONFIG) --cflags libnetfilter_conntrack`
+ ct_libs =       `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_CONNTRACK $(PKG_CONFIG) --libs libnetfilter_conntrack`
+-lua_cflags =    `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --cflags lua5.1` 
+-lua_libs =      `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --libs lua5.1` 
++lua_cflags =    `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --cflags lua`
++lua_libs =      `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_LUASCRIPT $(PKG_CONFIG) --libs lua`
+ nettle_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DNSSEC $(PKG_CONFIG) --cflags nettle hogweed`
+ nettle_libs =   `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DNSSEC $(PKG_CONFIG) --libs nettle hogweed`
+ gmp_libs =      `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DNSSEC $(PKG_CONFIG) --copy -lgmp`
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.75.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.75.bb
new file mode 100644
index 0000000..a11aabb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.75.bb
@@ -0,0 +1,9 @@
+require dnsmasq.inc
+
+SRC_URI += "\
+    file://lua.patch \
+"
+
+SRC_URI[dnsmasq-2.75.md5sum] = "d99ac126d4fe910c679d88430559669b"
+SRC_URI[dnsmasq-2.75.sha256sum] = "f8252c0a0ba162c2cd45f81140c7c17cc40a5fca2b869d1a420835b74acad294"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/99_dnsmasq b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/99_dnsmasq
new file mode 100644
index 0000000..f52ce4e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/99_dnsmasq
@@ -0,0 +1 @@
+d root root 0755 /run/dnsmasq none
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service
new file mode 100644
index 0000000..cde2244
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq-noresolvconf.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=DNS forwarder and DHCP server
+After=network.target
+
+[Service]
+Type=forking
+PIDFile=/run/dnsmasq.pid
+ExecStartPre=/usr/bin/dnsmasq --test
+ExecStart=/usr/bin/dnsmasq -x /run/dnsmasq.pid
+ExecStop=/bin/kill $MAINPID
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf-helper b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf-helper
new file mode 100644
index 0000000..db54d46
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf-helper
@@ -0,0 +1,62 @@
+#!/bin/bash
+#
+# Borrowing heavily from the dnsmasq initscript's version of support for
+# resolvconf, intended for use in systemd-only configurations.
+#
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/dnsmasq
+NAME=dnsmasq
+
+# Most configuration options in /etc/default/dnsmasq are deprecated
+# but still honoured.
+if [ -r /etc/default/$NAME ]; then
+   . /etc/default/$NAME
+fi
+
+start_resolvconf()
+{
+   # If interface "lo" is explicitly disabled in /etc/default/dnsmasq
+   # Then dnsmasq won't be providing local DNS, so don't add it to
+   # the resolvconf server set.
+   for interface in $DNSMASQ_EXCEPT
+   do
+      [ $interface = lo ] && return
+   done
+
+   if [ -x /sbin/resolvconf ] ; then
+      echo "nameserver 127.0.0.1" |
+      /sbin/resolvconf -a lo.$NAME
+   fi
+   return 0
+}
+
+stop_resolvconf()
+{
+   if [ -x /sbin/resolvconf ] ; then
+      /sbin/resolvconf -d lo.$NAME
+   fi
+   return 0
+}
+
+case "$1" in
+   start)
+      start_resolvconf
+      exit 0
+      ;;
+   stop)
+      stop_resolvconf
+      exit 0
+      ;;
+   restart)
+      stop_resolvconf
+      start_resolvconf
+      exit 0
+      ;;
+   *)
+      echo "Usage: /etc/init.d/$NAME {start|stop|restart}" >&2
+      exit 3
+      ;;
+esac
+
+exit 0
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf.service b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf.service
new file mode 100644
index 0000000..68b175c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq-resolvconf.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=DNS forwarder and DHCP server
+After=network.target
+
+[Service]
+Type=forking
+PIDFile=/run/dnsmasq.pid
+ExecStartPre=/usr/bin/dnsmasq --test
+ExecStart=/usr/bin/dnsmasq -x /run/dnsmasq.pid
+ExecStartPost=/usr/bin/dnsmasq-resolvconf-helper start
+ExecStopPre=/usr/bin/dnsmasq-resolvconf-helper stop
+ExecStop=/bin/kill $MAINPID
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq.conf b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq.conf
new file mode 100755
index 0000000..bd0ee00
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq.conf
@@ -0,0 +1,293 @@
+# Configuration file for dnsmasq.
+#
+# Format is one option per line, legal options are the same
+# as the long options legal on the command line. See
+# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details.
+
+# Change these lines if you want dnsmasq to serve MX records.
+# Only one of mx-host and mx-target need be set, the other defaults
+# to the name of the host  running dnsmasq.
+#mx-host=
+#mx-target=
+#selfmx
+#localmx
+
+# The following two options make you a better netizen, since they 
+# tell dnsmasq to filter out queries which the public DNS cannot
+# answer, and which load the servers (especially the root servers) 
+# uneccessarily. If you have a dial-on-demand link they also stop
+# these requests from bringing up the link uneccessarily.
+
+# Never forward plain names (with a dot or domain part)
+domain-needed
+# Never forward addresses in the non-routed address spaces.
+bogus-priv
+
+
+# Uncomment this to filter useless windows-originated DNS requests
+# which can trigger dial-on-demand links needlessly.
+# Note that (amongst other things) this blocks all SRV requests, 
+# so don't use it if you use eg Kerberos.
+#filterwin2k
+
+# Change this line if you want dns to get its upstream servers from
+# somewhere other that /etc/resolv.conf 
+#resolv-file=
+
+# By  default,  dnsmasq  will  send queries to any of the upstream
+# servers it knows about and tries to favour servers to are  known
+# to  be  up.  Uncommenting this forces dnsmasq to try each query
+# with  each  server  strictly  in  the  order  they   appear   in
+# /etc/resolv.conf
+#strict-order
+
+# If you don't want dnsmasq to read /etc/resolv.conf or any other
+# file, getting its servers for this file instead (see below), then
+# uncomment this
+#no-resolv
+
+# If you don't want dnsmasq to poll /etc/resolv.conf or other resolv
+# files for changes and re-read them then uncomment this.
+#no-poll
+
+# Add other name servers here, with domain specs if they are for 
+# non-public domains.
+#server=/localnet/192.168.0.1
+
+# Add local-only domains here, queries in these domains are answered
+# from /etc/hosts or DHCP only.
+#local=/localnet/
+
+# Add domains which you want to force to an IP address here.
+# The example below send any host in doubleclick.net to a local
+# webserver.
+#address=/doubleclick.net/127.0.0.1
+
+# You no longer (as of version 1.7) need to set these to enable 
+# dnsmasq to read /etc/ppp/resolv.conf since dnsmasq now uses the
+# "dip" group to achieve this.
+#user=
+#group=
+
+# If you want dnsmasq to listen for requests only on specified interfaces
+# (and the loopback) give the name of the interface (eg eth0) here. 
+# Repeat the line for more than one interface.
+#interface=
+# Or you can specify which interface _not_ to listen on
+#except-interface=
+# Or which to listen on by address (remember to include 127.0.0.1 if
+# you use this.)
+listen-address=127.0.0.1
+
+# On systems which support it, dnsmasq binds the wildcard address,
+# even when it is listening on only some interfaces. It then discards
+# requests that it shouldn't reply to. This has the advantage of 
+# working even when interfaces come and go and change address. If you
+# want dnsmasq to really bind only the interfaces it is listening on,
+# uncomment this option. About the only time you may need this is when 
+# running another nameserver on the same machine.
+#bind-interfaces 
+
+# If you don't want dnsmasq to read /etc/hosts, uncomment the
+# following line.
+#no-hosts
+# or if you want it to read another file, as well as /etc/hosts, use
+# this.
+#addn-hosts=/etc/banner_add_hosts
+
+# Set this (and domain: see below) if you want to have a domain
+# automatically added to simple names in a hosts-file.
+#expand-hosts
+
+# Set the domain for dnsmasq. this is optional, but if it is set, it
+# does the following things.
+# 1) Allows DHCP hosts to have fully qualified domain names, as long
+#     as the domain part matches this setting.
+# 2) Sets the "domain" DHCP option thereby potentially setting the
+#    domain of all systems configured by DHCP
+# 3) Provides the domain part for "expand-hosts"
+#domain=thekelleys.org.uk
+  
+# Uncomment this to enable the integrated DHCP server, you need
+# to supply the range of addresses available for lease and optionally 
+# a lease time. If you have more than one network, you will need to
+# repeat this for each network on which you want to supply DHCP
+# service.
+#dhcp-range=192.168.0.50,192.168.0.150,12h
+#dhcp-range=10.0.0.10,10.0.0.200,2h
+
+# This is an example of a DHCP range where the netmask is given. This
+# is needed for networks we reach the dnsmasq DHCP server via a relay 
+# agent. If you don't know what a DHCP relay agent is, you probably
+# don't need to worry about this.
+#dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h
+
+# This is an example of a DHCP range with a network-id, so that
+# some DHCP options may be set only for this network.
+#dhcp-range=red,192.168.0.50,192.168.0.150
+
+# Supply parameters for specified hosts using DHCP. There are lots
+# of valid alternatives, so we will give examples of each. Note that
+# IP addresses DO NOT have to be in the range given above, they just
+# need to be on the same network. The order of the parameters in these
+# do not matter, it's permissble to give name,adddress and MAC in any order
+
+# Always allocate the host with ethernet address 11:22:33:44:55:66 
+# The IP address 192.168.0.60
+#dhcp-host=11:22:33:44:55:66,192.168.0.60
+
+# Always set the name of the host with hardware address
+# 11:22:33:44:55:66 to be "fred"
+#dhcp-host=11:22:33:44:55:66,fred
+
+# Always give the host with ethernet address 11:22:33:44:55:66
+# the name fred and IP address 192.168.0.60 and lease time 45 minutes
+#dhcp-host=11:22:33:44:55:66,fred,192.168.0.60,45m
+
+# Give the machine which says it's name is "bert" IP address
+# 192.168.0.70 and an infinite lease
+#dhcp-host=bert,192.168.0.70,infinite
+
+# Always give the host with client identifier 01:02:02:04 
+# the IP address 192.168.0.60
+#dhcp-host=id:01:02:02:04,192.168.0.60
+
+# Always give the host with client identifier "marjorie"
+# the IP address 192.168.0.60
+#dhcp-host=id:marjorie,192.168.0.60
+
+# Enable the address given for "judge" in /etc/hosts
+# to be given to a machine presenting the name "judge" when
+# it asks for a DHCP lease.
+#dhcp-host=judge
+
+# Never offer DHCP service to a machine whose ethernet 
+# address is 11:22:33:44:55:66
+#dhcp-host=11:22:33:44:55:66,ignore
+
+# Ignore any client-id presented by the machine with ethernet
+# address 11:22:33:44:55:66. This is useful to prevent a machine 
+# being treated differently when running under different OS's or
+# between PXE boot and OS boot.
+#dhcp-host=11:22:33:44:55:66,id:*
+
+# Send extra options which are tagged as "red" to 
+# the machine with ethernet address 11:22:33:44:55:66
+#dhcp-host=11:22:33:44:55:66,net:red
+
+# Send extra options which are tagged as "red" to any machine whose
+# DHCP vendorclass string includes the substring "Linux"
+#dhcp-vendorclass=red,Linux
+
+# Send extra options which are tagged as "red" to any machine one 
+# of whose DHCP userclass strings includes the substring "accounts"
+#dhcp-userclass=red,accounts
+
+# If this line is uncommented, dnsmasq will read /etc/ethers and act
+# on the ethernet-address/IP pairs found there just as if they had
+# been given as --dhcp-host options. Useful if you keep
+# MAC-address/host mappings there for other purposes.
+#read-ethers
+
+# Send options to hosts which ask for a DHCP lease.
+# See RFC 2132 for details of available options.
+# Note that all the common settings, such as netmask and
+# broadcast address, DNS server and default route, are given
+# sane defaults by dnsmasq. You very likely will not need any
+# any dhcp-options. If you use Windows clients and Samba, there
+# are some options which are recommended, they are detailed at the
+# end of this section.
+# For reference, the common options are:
+# subnet mask - 1
+# default router - 3
+# DNS server - 6
+# broadcast address - 28
+
+# Set the NTP time server addresses to 192.168.0.4 and 10.10.0.5
+#dhcp-option=42,192.168.0.4,10.10.0.5
+
+# Set the NTP time server address to be the same machine as 
+# is running dnsmasq
+#dhcp-option=42,0.0.0.0
+
+# Set the NIS domain name to "welly"
+#dhcp-option=40,welly
+
+# Set the default time-to-live to 50
+#dhcp-option=23,50
+
+# Set the "all subnets are local" flag
+#dhcp-option=27,1
+
+# Send the etherboot magic flag and then etherboot options (a string).
+#dhcp-option=128,e4:45:74:68:00:00
+#dhcp-option=129,NIC=eepro100
+
+# Specify an option which will only be sent to the "red" network 
+# (see dhcp-range for the declaration of the "red" network)
+#dhcp-option=red,42,192.168.1.1
+
+# The following DHCP options set up dnsmasq in the same way as is specified
+# for the ISC dhcpcd in 
+# http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt
+# adapted for a typical dnsmasq installation where the host running
+# dnsmasq is also the host running samba.
+# you may want to uncomment them if you use Windows clients and Samba.
+#dhcp-option=19,0           # option ip-forwarding off 
+#dhcp-option=44,0.0.0.0     # set netbios-over-TCP/IP nameserver(s) aka WINS server(s)
+#dhcp-option=45,0.0.0.0     # netbios datagram distribution server
+#dhcp-option=46,8           # netbios node type
+#dhcp-option=47             # empty netbios scope.
+ 
+
+# Set the boot filename and tftpd server name and address
+# for BOOTP. You will only need this is you want to
+# boot machines over the network.
+#dhcp-boot=/var/ftpd/pxelinux.0,boothost,192.168.0.3
+
+# Set the limit on DHCP leases, the default is 150
+#dhcp-lease-max=150
+
+# The DHCP server needs somewhere on disk to keep its lease database.
+# This defaults to a sane location, but if you want to change it, use
+# the line below.
+#dhcp-leasefile=/var/lib/misc/dnsmasq.leases
+
+# Set the cachesize here.
+#cache-size=150
+
+# If you want to disable negative caching, uncomment this.
+#no-negcache
+
+# Normally responses which come form /etc/hosts and the DHCP lease
+# file have Time-To-Live set as zero, which conventionally means
+# do not cache further. If you are happy to trade lower load on the 
+# server for potentially stale date, you can set a time-to-live (in 
+# seconds) here.
+#local-ttl=
+
+# If you want dnsmasq to detect attempts by Verisign to send queries
+# to unregistered .com and .net hosts to its sitefinder service and
+# have dnsmasq instead return the correct NXDOMAIN response, uncomment
+# this line. You can add similar lines to do the same for other
+# registries which have implemented wildcard A records.
+#bogus-nxdomain=64.94.110.11
+
+# If you want to fix up DNS results from upstream servers, use the
+# alias option. This only works for IPv4.
+# This alias makes a result of 1.2.3.4 appear as 5.6.7.8
+#alias=1.2.3.4,5.6.7.8
+# and this maps 1.2.3.x to 5.6.7.x
+#alias=1.2.3.0,5.6.7.0,255.255.255.0
+
+# For debugging purposes, log each DNS query as it passes through
+# dnsmasq.
+#log-queries
+
+# Include a another lot of configuration options.
+#conf-file=/etc/dnsmasq.more.conf
+ 
+ 
+
+
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq.resolvconf b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq.resolvconf
new file mode 100755
index 0000000..06cd25c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/dnsmasq.resolvconf
@@ -0,0 +1,84 @@
+#!/bin/sh
+#
+# Script to update the resolver list for dnsmasq
+#
+# N.B. Resolvconf may run us even if dnsmasq is not (yet) running.
+# If dnsmasq is installed then we go ahead and update the resolver list
+# in case dnsmasq is started later.
+#
+# Assumption: On entry, PWD contains the resolv.conf-type files.
+#
+# This file is part of the dnsmasq package.
+#
+
+set -e
+
+RUN_DIR="/run/dnsmasq"
+RSLVRLIST_FILE="${RUN_DIR}/resolv.conf"
+TMP_FILE="${RSLVRLIST_FILE}_new.$$"
+MY_NAME_FOR_RESOLVCONF="dnsmasq"
+
+[ -x /usr/bin/dnsmasq ] || exit 0
+[ -x /lib/resolvconf/list-records ] || exit 1
+
+PATH=/bin:/sbin
+
+report_err() { echo "$0: Error: $*" >&2 ; }
+
+# Stores arguments (minus duplicates) in RSLT, separated by spaces
+# Doesn't work properly if an argument itself contains whitespace
+uniquify()
+{
+	RSLT=""
+	while [ "$1" ] ; do
+		for E in $RSLT ; do
+			[ "$1" = "$E" ] && { shift ; continue 2 ; }
+		done
+		RSLT="${RSLT:+$RSLT }$1"
+		shift
+	done
+}
+
+if [ ! -d "$RUN_DIR" ] && ! mkdir --parents --mode=0755 "$RUN_DIR" ; then
+	report_err "Failed trying to create directory $RUN_DIR"
+	exit 1
+fi
+
+RSLVCNFFILES=""
+for F in $(/lib/resolvconf/list-records --after "lo.$MY_NAME_FOR_RESOLVCONF") ; do
+	case "$F" in
+	    "lo.$MY_NAME_FOR_RESOLVCONF")
+		# Omit own record
+		;;
+	    lo.*)
+		# Include no more records after one for a local nameserver
+		RSLVCNFFILES="${RSLVCNFFILES:+$RSLVCNFFILES }$F"
+		break
+		;;
+	  *)
+		RSLVCNFFILES="${RSLVCNFFILES:+$RSLVCNFFILES }$F"
+		;;
+	esac
+done
+
+NMSRVRS=""
+if [ "$RSLVCNFFILES" ] ; then
+	uniquify $(sed -n -e 's/^[[:space:]]*nameserver[[:space:]]\+//p' $RSLVCNFFILES)
+	NMSRVRS="$RSLT"
+fi
+
+# Dnsmasq uses the mtime of $RSLVRLIST_FILE, with a resolution of one second,
+# to detect changes in the file. This means that if a resolvconf update occurs
+# within one second of the previous one then dnsmasq may fail to notice the
+# more recent change. To work around this problem we sleep one second here
+# if necessary in order to ensure that the new mtime is different.
+if [ -f "$RSLVRLIST_FILE" ] && [ "$(stat -c %X "$RSLVRLIST_FILE")" = "$(date +%s)" ] ; then
+	sleep 1
+fi
+
+clean_up() { rm -f "$TMP_FILE" ; }
+trap clean_up EXIT
+: >| "$TMP_FILE"
+for N in $NMSRVRS ; do echo "nameserver $N" >> "$TMP_FILE" ; done
+mv -f "$TMP_FILE" "$RSLVRLIST_FILE"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/init b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/init
new file mode 100644
index 0000000..51c95df
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnsmasq/files/init
@@ -0,0 +1,117 @@
+#!/bin/sh
+DAEMON=/usr/bin/dnsmasq
+NAME=dnsmasq
+DESC="DNS forwarder and DHCP server"
+ARGS="-7 /etc/dnsmasq.d"
+
+test -f $DAEMON || exit 0
+
+set -e
+
+if [ -r /etc/default/$NAME ]
+then
+	. /etc/default/$NAME
+fi
+
+DNSMASQ_CONF="/etc/dnsmasq.conf"
+test "/etc/dnsmasq.d/*" != '/etc/dnsmasq.d/*' && DNSMASQ_CONF="${DNSMASQ_CONF} /etc/dnsmasq.d/*"
+
+test -z "${PIDFILE}" && PIFILE="/run/dnsmasq.pid"
+
+if [ -z "$IGNORE_RESOLVCONF" ]
+then
+	egrep -h -q '^no-resolv' ${DNSMASQ_CONF} && IGNORE_RESOLVCONF="yes"
+fi
+
+# RESOLV_CONF:
+# If the resolvconf package is installed then use the resolv conf file
+# that it provides as the default.  Otherwise use /etc/resolv.conf as
+# the default.
+#
+# If IGNORE_RESOLVCONF is set in /etc/default/dnsmasq or an explicit
+# filename is set there then this inhibits the use of the resolvconf-provided
+# information.
+#
+# Note that if the resolvconf package is installed it is not possible to
+# override it just by configuration in /etc/dnsmasq.conf, it is necessary
+# to set IGNORE_RESOLVCONF=yes in /etc/default/dnsmasq.
+
+test -z "$RESOLV_CONF" -a "$IGNORE_RESOLVCONF" != "yes" -a -x /sbin/resolvconf && \
+	RESOLV_CONF=/run/dnsmasq/resolv.conf
+
+start_resolvconf()
+{
+        if [ "$IGNORE_RESOLVCONF" != "yes" -a -x /sbin/resolvconf ]
+	then
+		echo "nameserver 127.0.0.1" | /sbin/resolvconf -a lo.$NAME
+	fi
+	:
+}
+
+stop_resolvconf()
+{
+	if [ "$IGNORE_RESOLVCONF" != "yes" -a -x /sbin/resolvconf ]
+	then
+		/sbin/resolvconf -d lo.$NAME
+	fi
+	:
+}
+
+case "$1" in
+    start)
+        echo -n "starting $DESC: $NAME... "
+	test -d /var/lib/misc/ || mkdir /var/lib/misc/
+	start-stop-daemon -S -x $DAEMON -- $ARGS \
+		${RESOLV_CONF:+ -r $RESOLV_CONF} \
+		${PIDFILE:+ -x $PIDFILE}
+	test $? -eq 0 && start_resolvconf
+	echo "done."
+	;;
+    stop)
+        echo -n "stopping $DESC: $NAME... "
+	stop_resolvconf
+	start-stop-daemon -K -x $DAEMON
+	echo "done."
+	;;
+    status)
+	echo -n "dnsmasq "
+	start-stop-daemon -q -K -t -x $DAEMON
+	RET=$?
+	if [ "$RET" = "0" ]; then
+		PID=`cat ${PIDFILE}`
+		echo "($PID) is running"
+	else
+		echo "is not running"
+		exit $RET
+	fi
+	;;
+    restart)
+        echo "restarting $DESC: $NAME... "
+ 	$0 stop
+	$0 start
+	echo "done."
+	;;
+    reload)
+    	echo -n "reloading $DESC: $NAME... "
+    	killall -HUP $(basename ${DAEMON})
+	echo "done."
+	;;
+    systemd-start-resolvconf)
+	start_resolvconf
+	;;
+    systemd-stop-resolvconf)
+	stop_resolvconf
+	;;
+    systemd-exec)
+	test -d /var/lib/misc/ || mkdir /var/lib/misc/
+	exec $DAEMON --keep-in-foreground $ARGS \
+		${RESOLV_CONF:+ -r $RESOLV_CONF} \
+		${PIDFILE:+ -x $PIDFILE}
+	;;
+    *)
+	echo "Usage: $0 {start|stop|status|restart|reload}"
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dnssec-conf/dnssec-conf_2.02.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/dnssec-conf/dnssec-conf_2.02.bb
new file mode 100644
index 0000000..ca59bd2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dnssec-conf/dnssec-conf_2.02.bb
@@ -0,0 +1,35 @@
+SUMMARY = "DNSSEC and DLV configuration and priming tool"
+DESCRIPTION = "\
+DNSSEC configuration and priming tool. Keys are required until the root \
+is signed, as well as for local unpublished DNSSEC keys to be preloaded \
+into the recursive nameserver. These DNSSEC configuration files can be \
+directly included in the bind or unbound nameserver configuration files. \
+dnssec-conf includes a commandline configuration client for Bind and \
+Unbound, known DNSSEC keys, URL's to official publication pages of keys, \
+and harvested keys, as well a script to harvest DNSKEY's from DNS. \
+See also: system-config-dnssec"
+HOMEPAGE = "https://github.com/xelerance/dnssec-conf"
+SECTION = "net"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0636e73ff0215e8d672dc4c32c317bb3"
+DEPENDS += "xmlto-native docbook-xml-dtd4-native \
+            docbook-xsl-stylesheets-native libxslt-native"
+
+SRC_URI = "git://github.com/xelerance/dnssec-conf.git"
+SRCREV = "8e799683736b4a7b5e5e78f98fba0a6f48393537"
+
+S = "${WORKDIR}/git"
+
+do_install () {
+    rm -rf ${D}
+    make PREFIX=${prefix} DESTDIR=${D} ETCDIR=${D}${sysconfdir} install
+    # We no longer ship trust anchors. Most of these are in the DLV Registry now.
+    # and it prevents the problem of shipping outdated trust anchors.
+    # For DLV, we ship the ISC DLV Registry key
+    rm -rf ${D}${sysconfdir}/pki/dnssec-keys/harvest/*
+    rm -rf ${D}${sysconfdir}/pki/dnssec-keys/production/reverse/*
+    install -d -m 0755 ${D}${sysconfdir}/sysconfig
+    install -m 0644 packaging/fedora/dnssec.sysconfig ${D}${sysconfdir}/sysconfig/dnssec
+}
+
+RDEPENDS_${PN} = "python"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot/0001-configure.ac-convert-AC_TRY_RUN-to-AC_TRY_LINK-state.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot/0001-configure.ac-convert-AC_TRY_RUN-to-AC_TRY_LINK-state.patch
new file mode 100644
index 0000000..f862350
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot/0001-configure.ac-convert-AC_TRY_RUN-to-AC_TRY_LINK-state.patch
@@ -0,0 +1,66 @@
+From 07150f3a27681e034f18ab2ed2b68914c1e10af6 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Sat, 18 Jul 2015 05:03:57 +0900
+Subject: [PATCH] configure.ac: convert AC_TRY_RUN to AC_TRY_LINK statements
+
+This is not completely safe, but it's the least invasive fix.
+
+Upstream-Status: pending
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ configure.ac | 15 +++++----------
+ 1 file changed, 5 insertions(+), 10 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 3b32614..94ec002 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -519,13 +519,10 @@ have_ioloop=no
+ 
+ if test "$ioloop" = "best" || test "$ioloop" = "epoll"; then
+   AC_CACHE_CHECK([whether we can use epoll],i_cv_epoll_works,[
+-    AC_TRY_RUN([
++    AC_TRY_LINK([
+       #include <sys/epoll.h>
+-  
+-      int main()
+-      {
+-	return epoll_create(5) < 1;
+-      }
++    ], [
++      epoll_create(5) < 1;
+     ], [
+       i_cv_epoll_works=yes
+     ], [
+@@ -653,7 +650,7 @@ fi
+ dnl * Old glibcs have broken posix_fallocate(). Make sure not to use it.
+ dnl * It may also be broken in AIX.
+ AC_CACHE_CHECK([whether posix_fallocate() works],i_cv_posix_fallocate_works,[
+-  AC_TRY_RUN([
++  AC_TRY_LINK([
+     #define _XOPEN_SOURCE 600
+     #include <stdio.h>
+     #include <stdlib.h>
+@@ -662,7 +659,7 @@ AC_CACHE_CHECK([whether posix_fallocate() works],i_cv_posix_fallocate_works,[
+     #if defined(__GLIBC__) && (__GLIBC__ < 2 || __GLIBC_MINOR__ < 7)
+       possibly broken posix_fallocate
+     #endif
+-    int main() {
++    ], [
+       int fd = creat("conftest.temp", 0600);
+       int ret;
+       if (fd == -1) {
+@@ -671,8 +668,6 @@ AC_CACHE_CHECK([whether posix_fallocate() works],i_cv_posix_fallocate_works,[
+       }
+       ret = posix_fallocate(fd, 1024, 1024) < 0 ? 1 : 0;
+       unlink("conftest.temp");
+-      return ret;
+-    }
+   ], [
+     i_cv_posix_fallocate_works=yes
+   ], [
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot/dovecot.service b/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot/dovecot.service
new file mode 100644
index 0000000..ca250ea
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot/dovecot.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Dovecot IMAP/POP3 email server
+After=local-fs.target network.target
+
+[Service]
+Type=simple
+EnvironmentFile=-@SYSCONFDIR@/sysconfig/dovecot
+ExecStart=@SBINDIR@/dovecot -F
+ExecReload=/bin/kill -HUP $MAINPID
+NonBlocking=yes
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot/dovecot.socket b/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot/dovecot.socket
new file mode 100644
index 0000000..556e1a8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot/dovecot.socket
@@ -0,0 +1,14 @@
+[Unit]
+Description=Dovecot IMAP/POP3 email server activation socket
+
+[Socket]
+#dovecot expects separate IPv4 and IPv6 sockets
+BindIPv6Only=ipv6-only
+ListenStream=0.0.0.0:143
+ListenStream=[::]:143
+ListenStream=0.0.0.0:993
+ListenStream=[::]:993
+KeepAlive=true
+
+[Install]
+WantedBy=sockets.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot_2.2.21.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot_2.2.21.bb
new file mode 100644
index 0000000..d7a7cc5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot_2.2.21.bb
@@ -0,0 +1,67 @@
+SUMMARY = "Dovecot is an open source IMAP and POP3 email server"
+DESCRIPTION = "Dovecot is an open source IMAP and POP3 email server for Linux/UNIX-like systems, written with security primarily in mind. Dovecot is an excellent choice for both small and large installations. It's fast, simple to set up, requires no special administration and it uses very little memory."
+SECTION = "mail"
+LICENSE = "LGPLv2.1 & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a981379bd0f1c362f8d1d21515e5b30b"
+
+SRC_URI = "http://dovecot.org/releases/2.2/dovecot-${PV}.tar.gz \
+           file://0001-configure.ac-convert-AC_TRY_RUN-to-AC_TRY_LINK-state.patch \
+           file://dovecot.service \
+           file://dovecot.socket"
+
+SRC_URI[md5sum] = "28c39ab78a20f00701c26960d9190cf0"
+SRC_URI[sha256sum] = "7ab7139e59e1f0353bf9c24251f13c893cf1a6ef4bcc47e2d44de437108d0b20"
+
+DEPENDS = "openssl xz zlib bzip2 libcap icu"
+
+inherit autotools pkgconfig systemd useradd
+
+PACKAGECONFIG ??= " \
+                   ${@base_contains('DISTRO_FEATURES', 'ldap', 'ldap', '', d)} \
+                   ${@base_contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+                  "
+
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam,"
+PACKAGECONFIG[ldap] = "--with-ldap=plugin,--without-ldap,openldap,"
+PACKAGECONFIG[lz4] = "--with-lz4,--without-lz4,lz4,"
+
+# From native build in armv7a-hf/eglibc
+CACHED_CONFIGUREVARS += "i_cv_signed_size_t=no \
+                         i_cv_gmtime_max_time_t=32 \
+                         i_cv_signed_time_t=yes \
+                         i_cv_mmap_plays_with_write=yes \
+                         i_cv_fd_passing=yes \
+                         i_cv_c99_vsnprintf=yes \
+                         lib_cv___va_copy=yes \
+                         lib_cv_va_copy=yes \
+                         lib_cv_va_val_copy=yes \
+                        "
+
+# hardcode epoll() to avoid running unsafe tests
+# BSD needs kqueue and uclibc poll()
+EXTRA_OECONF = " --with-ioloop=epoll \
+                 --with-systemdsystemunitdir=${systemd_unitdir}/system"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "dovecot.service dovecot.socket"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+do_install_append () {
+    install -d 755 ${D}/etc/dovecot
+    touch 644 ${D}/etc/dovecot/dovecot.conf
+    install -m 0644 ${WORKDIR}/dovecot.service ${D}${systemd_unitdir}/system
+    sed -i -e 's#@SYSCONFDIR@#${sysconfdir}#g' ${D}${systemd_unitdir}/system/dovecot.service
+    sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/dovecot.service
+}
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "-r -d ${libexecdir} -M -s ${base_sbindir}/nologin -g dovecot dovecot; \
+                      -r -d ${libexecdir} -M -s ${base_sbindir}/nologin -g dovenull dovenull"
+GROUPADD_PARAM_${PN} = "-f -r dovecot;-f -r dovenull"
+
+FILES_${PN} += "${libdir}/dovecot/*plugin.so \
+                ${libdir}/dovecot/libfs_compress.so \
+                ${libdir}/dovecot/libssl_iostream_openssl.so"
+FILES_${PN}-staticdev += "${libdir}/dovecot/*/*.a"
+FILES_${PN}-dev += "${libdir}/dovecot/libdovecot*.so"
+FILES_${PN}-dbg += "${libdir}/dovecot/*/.debug"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils/0001-Makefile.in-don-t-compile-documentation.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils/0001-Makefile.in-don-t-compile-documentation.patch
new file mode 100644
index 0000000..1de4a86
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils/0001-Makefile.in-don-t-compile-documentation.patch
@@ -0,0 +1,38 @@
+From feccf89f08a455460668cf286151662e4c1557b3 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Thu, 20 Aug 2015 15:32:30 +0900
+Subject: [PATCH] Makefile.in: don't compile documentation
+
+The documentation file is not suitable for cross-compile,
+Errors will occur:
+| /bin/sh: ../../user/v9/drbdsetup: /lib/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
+| ../../user/v9/drbdsetup xml-help disk-options > drbdsetup_xml-help_disk-options.xml
+| /bin/sh: ../../user/v9/drbdsetup: /lib/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
+| /bin/sh: ../../user/v9/drbdsetup: /lib/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
+| make[1]: *** [drbdsetup_xml-help_new-resource.xml] Error 126
+
+so we do not compile it.
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 5365a2c..d5967d8 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -45,7 +45,7 @@ WITH_84_SUPPORT = @WITH_84_SUPPORT@
+ # and not in e.g. dash. I'm too lazy to fix it to be compatible.
+ SHELL=/bin/bash
+ 
+-SUBDIRS     = user/shared user/v9 user/v84 user/v83 scripts documentation/v83 documentation/v84 documentation/v9
++SUBDIRS     = user/shared user/v9 user/v84 user/v83 scripts
+ 
+ REL_VERSION := $(shell $(SED) -ne '/^AC_INIT/{s/^[^,]*, *\([^,]*\) *,.*/\1/;p;q}' configure.ac)
+ ifdef FORCE
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils/0001-Makefile.in-fix-permission-bits-for-drbd.service.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils/0001-Makefile.in-fix-permission-bits-for-drbd.service.patch
new file mode 100644
index 0000000..90dd1f8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils/0001-Makefile.in-fix-permission-bits-for-drbd.service.patch
@@ -0,0 +1,25 @@
+Upstream-Status: Pending
+
+Subject:  Makefile.in: fix permission bits for drbd.service
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ scripts/Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/Makefile.in b/scripts/Makefile.in
+index 402b93b..4a45407 100644
+--- a/scripts/Makefile.in
++++ b/scripts/Makefile.in
+@@ -65,7 +65,7 @@ endif
+ # yes, debian apparently allows installing both types from the same package
+ ifneq ($(initscripttype),sysv)		# "systemd" or "both"
+ 	install -d $(DESTDIR)$(systemdunitdir)
+-	install -m 755 drbd.service $(DESTDIR)$(systemdunitdir)/
++	install -m 644 drbd.service $(DESTDIR)$(systemdunitdir)/
+ 	install -d $(DESTDIR)/lib/drbd/
+ 	install -m 755 drbd $(DESTDIR)/lib/drbd/
+ 	install -d $(DESTDIR)$(tmpfilesdir)/
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils_8.9.3.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils_8.9.3.bb
new file mode 100644
index 0000000..44459b5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils_8.9.3.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Distributed block device driver for Linux"
+DESCRIPTION = "DRBD mirrors a block device over the network to another machine.\
+DRBD mirrors a block device over the network to another machine.\
+Think of it as networked raid 1. It is a building block for\
+setting up high availability (HA) clusters."
+HOMEPAGE = "http://www.drbd.org/"
+SECTION = "admin"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
+
+SRC_URI = "http://oss.linbit.com/drbd/${BP}.tar.gz \
+           file://0001-Makefile.in-don-t-compile-documentation.patch \
+           file://0001-Makefile.in-fix-permission-bits-for-drbd.service.patch \
+          "
+SRC_URI[md5sum] = "09c9c33c041e1f4f85dd359f9e0b0f24"
+SRC_URI[sha256sum] = "011050578c153bf4fef86e03749304ff9f333b7af3512c5c395e0e870a0445bd"
+
+SYSTEMD_SERVICE_${PN} = "drbd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+inherit autotools-brokensep systemd
+
+EXTRA_OECONF = " \
+                --with-initdir=/etc/init.d    \
+                --without-pacemaker           \
+                --without-rgmanager           \
+                --without-bashcompletion      \
+                --with-distro debian          \
+                --with-initscripttype=both    \
+                --with-systemdunitdir=${systemd_unitdir}/system \
+               "
+
+RDEPENDS_${PN} += "bash perl"
+
+# The drbd items are explicitly put under /lib when installed.
+#
+FILES_${PN} += "/run"
+FILES_${PN} += "${nonarch_base_libdir}/drbd \
+                ${nonarch_libdir}/drbd \
+                ${nonarch_libdir}/tmpfiles.d"
+FILES_${PN}-dbg += "${nonarch_base_libdir}/drbd/.debug"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/esmtp/esmtp_1.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/esmtp/esmtp_1.2.bb
new file mode 100644
index 0000000..163148c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/esmtp/esmtp_1.2.bb
@@ -0,0 +1,40 @@
+SUMMARY = "User configurable send-only Mail Transfer Agent"
+DESCRIPTION = "ESMTP is a user-configurable relay-only MTA \
+with a sendmail-compatible syntax, based on libESMTP and \
+supporting the AUTH (including the CRAM-MD5 and NTLM SASL \
+mechanisms) and StartTLS SMTP extensions."
+HOMEPAGE = "http://esmtp.sourceforge.net/"
+SECTION = "net"
+
+DEPENDS = "libesmtp"
+
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${PV}/${BPN}-${PV}.tar.bz2"
+
+# Have to set this or we get -L/lib in LDFLAGS
+EXTRA_OECONF = "--with-libesmtp=${STAGING_EXECPREFIXDIR}"
+
+inherit autotools update-alternatives
+
+ALTERNATIVE_${PN} = "sendmail"
+
+ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
+ALTERNATIVE_TARGET[sendmail] = "${bindir}/esmtp"
+ALTERNATIVE_PRIORITY = "10"
+
+SRC_URI[md5sum] = "79a9c1f9023d53f35bb82bf446150a72"
+SRC_URI[sha256sum] = "a0d26931bf731f97514da266d079d8bc7d73c65b3499ed080576ab606b21c0ce"
+
+do_install_append() {
+    # only one file /usr/lib/sendmail in ${D}${libdir}
+    rm -rf ${D}${libdir}
+}
+
+pkg_postinst_${PN}_linuxstdbase () {
+    # /usr/lib/sendmial is required by LSB core test
+    [ ! -L $D/usr/lib/sendmail ] && ln -sf ${sbindir}/sendmail $D/usr/lib/
+}
+
+FILES_${PN} += "${libdir}/"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.3.26.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.3.26.bb
new file mode 100644
index 0000000..909d7cf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.3.26.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Fetchmail retrieves mail from remote mail servers and forwards it via SMTP"
+DESCRIPTION = "Fetchmail is a full-featured, robust, well-documented remote-mail retrieval and forwarding utility intended to be used over on-demand TCP/IP links (such as SLIP or PPP connections). It supports every remote-mail protocol now in use on the Internet: POP2, POP3, RPOP, APOP, KPOP, all flavors of IMAP, ETRN, and ODMR. It can even support IPv6 and IPSEC."
+SECTION = "mail"
+LICENSE = "GPLv2 & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbb509e0303f5ded1cbfc0cc8705f28c"
+
+DEPENDS = "openssl"
+
+SRC_URI = "http://download.berlios.de/fetchmail/fetchmail-${PV}.tar.xz"
+SRC_URI[md5sum] = "61b66faad044afa26e142bb1791aa2b3"
+SRC_URI[sha256sum] = "79b4c54cdbaf02c1a9a691d9948fcb1a77a1591a813e904283a8b614b757e850"
+
+inherit autotools gettext python-dir pythonnative
+
+EXTRA_OECONF = "--with-ssl=${STAGING_DIR_HOST}${prefix}"
+
+PACKAGES =+ "fetchmail-python"
+FILES_fetchmail-python = "${libdir}/${PYTHON_DIR}/*"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/fping/fping_3.5.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/fping/fping_3.5.bb
new file mode 100644
index 0000000..b6b17b7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/fping/fping_3.5.bb
@@ -0,0 +1,25 @@
+SUMMARY = "sends ICMP ECHO_REQUEST packets to network hosts"
+DESCRIPTION = "fping is a ping like program which uses the Internet Control \
+Message Protocol (ICMP) echo request to determine if a target host is \
+responding. fping differs from ping in that you can specify any number of \
+targets on the command line, or specify a file containing the lists of \
+targets to ping.  Instead of sending to one target until it times out or \
+replies, fping will send out a ping packet and move on to the next target \
+in a round-robin fashion."
+HOMEPAGE = "http://www.fping.org/"
+SECTION = "net"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=09d77789fe32be35acde9637a5ee39b1"
+
+SRC_URI = "http://www.fping.org/dist/fping-${PV}.tar.gz"
+SRC_URI[md5sum] = "2e17cb655aa4eb59b5a4a38a89e746ed"
+SRC_URI[sha256sum] = "09b8960e235341bae6000085d38106357eae656a79e0119bd27e816c9003656a"
+
+S = "${WORKDIR}/fping-${PV}"
+
+inherit autotools
+
+EXTRA_OECONF = "--enable-ipv4"
+
+PACKAGECONFIG ?= "${@base_contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/files/run-ptest b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/files/run-ptest
new file mode 100644
index 0000000..14e9619
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/files/run-ptest
@@ -0,0 +1,11 @@
+#!/bin/sh
+pdir=`dirname $0`
+cd ${pdir}/tests
+for i in ./benchmark ./test-geoip-city ; do
+	${i} 1>/dev/null 2>&1;
+	if [ $? == 0 ]; then
+		echo PASS: $i;
+	else
+		echo FAIL: $i;
+	fi;
+done
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoip-perl/run-ptest b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoip-perl/run-ptest
new file mode 100644
index 0000000..5404c24
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoip-perl/run-ptest
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# The tests contain hard-coded relative paths and must be
+# executed from $pdir.
+#
+pdir=`dirname $0`
+cd ${pdir}
+for i in t/*.t ; do
+	perl ${i} 1>/dev/null 2>&1;
+	if [ $? == 0 ]; then
+		echo PASS: $i;
+	else
+		echo FAIL: $i;
+	fi;
+done
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoip-perl_1.45.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoip-perl_1.45.bb
new file mode 100644
index 0000000..728ad58
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoip-perl_1.45.bb
@@ -0,0 +1,40 @@
+#
+# Copyright (C) 2014, 2015 Wind River Systems, Inc.
+# Released under the MIT license (see COPYING.MIT for the terms)
+#
+SUMMARY = "GeoIP perl API library to access location database"
+DESCRIPTION = "perl library for country/city/organization to IP address or hostname mapping"
+HOMEPAGE = "http://www.maxmind.com/app/ip-location"
+SECTION = "libdevel"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;md5=b0fa745303912bd2d64430f7ae69487d"
+
+# Note that we do not want to use the upstream file name locally.
+#
+SRC_URI = "http://github.com/maxmind/geoip-api-perl/archive/v${PV}.tar.gz;downloadfilename=${BPN}-${PV}.tar.gz \
+           file://run-ptest \
+          "
+
+SRC_URI[md5sum] = "0ce57140890bf81958e0cea4fe1885b2"
+SRC_URI[sha256sum] = "c56437b1cc8887736cb1e435d0320c1c1ff3754830249516317b99137005fb23"
+
+S = "${WORKDIR}/geoip-api-perl-${PV}"
+
+DEPENDS += "geoip"
+
+inherit cpan ptest
+
+EXTRA_CPANFLAGS = "LIBS='-L${STAGING_LIBDIR}' INC='-I${STAGING_INCDIR}'"
+
+
+# perl scripts and some special small data files
+#
+do_install_ptest () {
+	install -d -m 0755 ${D}${PTEST_PATH}/t/data
+
+	install ${S}/t/*.t* ${D}${PTEST_PATH}/t
+	install ${S}/t/data/* ${D}${PTEST_PATH}/t/data
+}
+
+FILES_${PN}-dbg += "${libdir}/perl/vendor_perl/*/auto/Geo/IP/.debug"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoip_1.6.6.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoip_1.6.6.bb
new file mode 100644
index 0000000..0605154
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoip_1.6.6.bb
@@ -0,0 +1,93 @@
+SUMMARY = "C library for country/city/organization to IP address or hostname mapping"
+DESCRIPTION = "GeoIP is a C library that enables the user to find the country that any IP \
+address or hostname originates from. It uses a file based database that is \
+accurate as of March 2003. This database simply contains IP blocks as keys, and \
+countries as values. This database should be more complete and accurate than \
+using reverse DNS lookups."
+
+HOMEPAGE = "http://dev.maxmind.com/geoip/"
+SECTION = "libdevel"
+
+SRC_URI = "git://github.com/maxmind/geoip-api-c.git \
+           http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz;apply=no;name=GeoIP-dat \
+           http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz;apply=no;name=GeoIPv6-dat \
+           http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz;apply=no;name=GeoLiteCity-dat \
+           http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz;apply=no;name=GeoLiteCityv6-dat \
+           file://run-ptest \
+"
+SRCREV = "ed3f3e2b87fba05a8f2a5b9b1328e7d55be8bf30"
+
+SRC_URI[GeoIP-dat.md5sum] = "37c84ead332dda0362a5ac7b049b72d4"
+SRC_URI[GeoIP-dat.sha256sum] = "79ff1099e96c2dc1c2539c9a18aaa13a9afd085cae477df60d95f1644d42bc07"
+
+SRC_URI[GeoIPv6-dat.md5sum] = "e75b84a4044e81d6d4484e33816bc762"
+SRC_URI[GeoIPv6-dat.sha256sum] = "a009b0f21968d2868e6dd19d14f3c3b8cd60ae84a4bfc2970df34d771a04811e"
+
+SRC_URI[GeoLiteCity-dat.md5sum] = "4b6588d0bfe1af22e267ac90aa97f769"
+SRC_URI[GeoLiteCity-dat.sha256sum] = "8a6467033a528f68b1a97de24d9d0ce86c8e8e83683820e16e433ddbd3f712f7"
+
+SRC_URI[GeoLiteCityv6-dat.md5sum] = "ad0cb42518af7f752499425dca0952bb"
+SRC_URI[GeoLiteCityv6-dat.sha256sum] = "eda67f4204ba9fa5204a53cdb629167cca9394c712f5378bc723a8c29c0b440f"
+
+LICENSE = "LGPL-2.1"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad \
+                    file://LICENSE;md5=0388276749a542b0d611601fa7c1dcc8 "
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-static               \
+                --disable-dependency-tracking  "
+
+do_install() {
+    make DESTDIR=${D} install
+    install -d ${D}/${datadir}/GeoIP
+    install ${WORKDIR}/GeoIP.dat ${D}/${datadir}/GeoIP/
+    install ${WORKDIR}/GeoIPv6.dat ${D}/${datadir}/GeoIP/
+    install ${WORKDIR}/GeoLiteCity.dat ${D}/${datadir}/GeoIP/
+    install ${WORKDIR}/GeoLiteCityv6.dat ${D}/${datadir}/GeoIP/
+    ln -s GeoLiteCity.dat ${D}${datadir}/GeoIP/GeoIPCity.dat
+}
+
+PACKAGES =+ "${PN}-database"
+FILES_${PN}-database = ""
+FILES_${PN}-database += "${datadir}/GeoIP/*"
+
+# We cannot do much looking up without databases.
+#
+RDEPENDS_${PN} += "${PN}-database"
+
+inherit ptest
+
+do_configure_ptest() {
+	sed -i -e "s/noinst_PROGRAMS = /test_PROGRAMS = /g" \
+	    -e 's:SRCDIR=\\"$(top_srcdir)\\":SRCDIR=\\"$(testdir)\\":' \
+	  ${S}/test/Makefile.am
+
+	if ! grep "^testdir = " ${S}/test/Makefile.am ; then
+	  sed -e '/EXTRA_PROGRAMS = /itestdir = ${PTEST_PATH}/tests' \
+	    -i ${S}/test/Makefile.am
+	fi
+
+	sed -i -e "s:/usr/local/share:/usr/share:g" \
+	  ${S}/test/benchmark.c
+
+	sed -i -e 's:"../data/:"/usr/share/GeoIP/:g' \
+	  ${S}/test/test-geoip-city.c \
+	  ${S}/test/test-geoip-isp.c \
+	  ${S}/test/test-geoip-asnum.c \
+	  ${S}/test/test-geoip-netspeed.c \
+	  ${S}/test/test-geoip-org.c \
+	  ${S}/test/test-geoip-region.c
+}
+
+
+do_install_ptest() {
+	oe_runmake -C test DESTDIR=${D}  install-testPROGRAMS
+	install ${S}/test/*.txt ${D}${PTEST_PATH}/tests
+}
+
+
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate-2.2.1/GeoIP.conf b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate-2.2.1/GeoIP.conf
new file mode 100644
index 0000000..134cfed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate-2.2.1/GeoIP.conf
@@ -0,0 +1,11 @@
+# The following UserId and LicenseKey are required placeholders:
+UserId 999999
+LicenseKey 000000000000
+
+# Include one or more of the following ProductIds:
+# * GeoLite2-City - GeoLite 2 City
+# * GeoLite2-Country - GeoLite2 Country
+# * 506 - GeoLite Legacy Country
+# * 517 - GeoLite Legacy ASN
+# * 533 - GeoLite Legacy City
+ProductIds GeoLite2-City GeoLite2-Country 506 517 533
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate-2.2.1/geoipupdate.cron b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate-2.2.1/geoipupdate.cron
new file mode 100644
index 0000000..40597a8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate-2.2.1/geoipupdate.cron
@@ -0,0 +1,5 @@
+# top of crontab
+MAILTO=your@email.com
+
+32 11 * * 4 /usr/local/bin/geoipupdate
+# end of crontab
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate_2.2.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate_2.2.1.bb
new file mode 100644
index 0000000..7a3a002
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate_2.2.1.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Crontab entry to provide weekly updates of the GeoIP free databases."
+DESCRIPTION = "update databases for GeoIP"
+
+HOMEPAGE = "http://dev.maxmind.com/geoip/"
+SECTION = "net"
+
+DEPENDS = "zlib curl"
+
+SRC_URI = "https://github.com/maxmind/geoipupdate/releases/download/v2.2.1/geoipupdate-2.2.1.tar.gz \
+           file://GeoIP.conf \
+           file://geoipupdate.cron \
+          "
+
+SRC_URI[md5sum] = "abfd4bb9dd7fd489c103888dde5f2a57"
+SRC_URI[sha256sum] = "9547c42cc8620b2c3040fd8df95e8ee45c8b6ebcca7737d641f9526104d5f446"
+
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "\
+file://ChangeLog.md;md5=5ca3d911ed549b0756b03410ff77fa62 \
+"
+
+inherit autotools
+
+do_install_append() {
+    install -d ${D}/${sysconfdir}
+    install -d ${D}/${sysconfdir}/cron.d
+    install ${WORKDIR}/GeoIP.conf ${D}/${sysconfdir}/
+    install ${WORKDIR}/geoipupdate.cron ${D}/${sysconfdir}/cron.d/
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_1.1.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_1.1.0.bb
new file mode 100644
index 0000000..acc0864
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_1.1.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Configure network interfaces for parallel routing"
+HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding"
+SECTION = "net"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://ifenslave.c;beginline=8;endline=12;md5=a9f0bd2324cdc1b36d1f44f0e643a62a"
+
+SRC_URI = "http://ftp.debian.org/debian/pool/main/i/${BPN}-2.6/${BPN}-2.6_${PV}.orig.tar.gz"
+SRC_URI[md5sum] = "56126cd1013cefe0ce6f81613e677bdd"
+SRC_URI[sha256sum] = "7917bf34de80a2492eb225adf9168c83a4854ac8a008ed0fd5b3fd147ccd3041"
+
+do_compile() {
+    ${CC} ifenslave.c -o ifenslave
+}
+do_install() {
+    install -d "${D}${sbindir}"
+    install -m 755 "${S}/ifenslave" "${D}${sbindir}/"
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/iftop/iftop_1.0pre4.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/iftop/iftop_1.0pre4.bb
new file mode 100644
index 0000000..0c8e494
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/iftop/iftop_1.0pre4.bb
@@ -0,0 +1,14 @@
+SUMMARY = "iftop does for network usage what top(1) does for CPU usage"
+HOMEPAGE = "http://www.ex-parrot.com/pdw/iftop/"
+SECTION = "net"
+DEPENDS = "libpcap ncurses"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=76498170798db0f4f0fb685a225f702f"
+
+SRC_URI = "http://www.ex-parrot.com/pdw/iftop/download/iftop-${PV}.tar.gz"
+SRC_URI[md5sum] = "7e6decb4958e8a4890cccac335239f24"
+SRC_URI[sha256sum] = "f733eeea371a7577f8fe353d86dd88d16f5b2a2e702bd96f5ffb2c197d9b4f97"
+
+inherit autotools-brokensep
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/0001-racoon-pfkey-avoid-potential-null-pointer-dereferenc.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/0001-racoon-pfkey-avoid-potential-null-pointer-dereferenc.patch
new file mode 100644
index 0000000..d5602c0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/0001-racoon-pfkey-avoid-potential-null-pointer-dereferenc.patch
@@ -0,0 +1,33 @@
+From 738a9857be9c92ad2f70be88ccee238e3154a936 Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe.macdonald@windriver.com>
+Date: Wed, 2 Oct 2013 14:20:37 -0400
+Subject: [PATCH] racoon/pfkey: avoid potential null-pointer dereference
+
+Building with -Werror=maybe-uninitialized revealed that 'remote' from
+pk_recvmigrate() could be used with uninitialized data in
+migrate_sp_ike_addresses().  Ensure it is always at a minimum assigned
+NULL.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe MacDonald <joe.macdonald@windriver.com>
+---
+ src/racoon/pfkey.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/racoon/pfkey.c b/src/racoon/pfkey.c
+index d00b166..e0dc1db 100644
+--- a/src/racoon/pfkey.c
++++ b/src/racoon/pfkey.c
+@@ -3352,7 +3352,7 @@ pk_recvmigrate(mhp)
+ 	struct sockaddr *old_saddr, *new_saddr;
+ 	struct sockaddr *old_daddr, *new_daddr;
+ 	struct sockaddr *old_local, *old_remote;
+-	struct sockaddr *local, *remote;
++	struct sockaddr *local, *remote = NULL;
+ 	struct sadb_x_kmaddress *kmaddr;
+ 	struct sadb_x_policy *xpl;
+ 	struct sadb_x_ipsecrequest *xisr_list;
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/0002-Don-t-link-against-libfl.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/0002-Don-t-link-against-libfl.patch
new file mode 100644
index 0000000..13e9d73
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/0002-Don-t-link-against-libfl.patch
@@ -0,0 +1,87 @@
+From e48b9097dce7bc2bfbb9e9c542124d3b5cebab39 Mon Sep 17 00:00:00 2001
+From: Paul Barker <paul@paulbarker.me.uk>
+Date: Wed, 5 Mar 2014 13:39:14 +0000
+Subject: [PATCH] Don't link against libfl
+
+We can remove all references to yywrap by adding "%option noyywrap" statements
+to each flex source file that doesn't override yywrap. After this, we no longer
+need to link against libfl and so no longer get errors about undefined
+references to yylex.
+
+Signed-off-by: Paul Barker <paul@paulbarker.me.uk>
+Upstream-status: Submitted 2014-03-11
+    see http://sourceforge.net/p/ipsec-tools/mailman/ipsec-tools-devel/thread/CANyK_8ewmxGA3vBVJW6s1APXPmxPR%2BDFWZ61EL8pCt288aKQ6w%40mail.gmail.com/#msg32088797
+---
+ src/libipsec/Makefile.am | 1 -
+ src/racoon/Makefile.am   | 2 +-
+ src/racoon/cftoken.l     | 2 ++
+ src/setkey/Makefile.am   | 1 -
+ src/setkey/token.l       | 2 ++
+ 5 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/libipsec/Makefile.am b/src/libipsec/Makefile.am
+index 6a4e3b3..df1e106 100644
+--- a/src/libipsec/Makefile.am
++++ b/src/libipsec/Makefile.am
+@@ -26,7 +26,6 @@ libipsec_la_SOURCES = \
+ # version is current:revision:age.
+ # See: http://www.gnu.org/manual/libtool-1.4.2/html_chapter/libtool_6.html#SEC32
+ libipsec_la_LDFLAGS = -version-info 0:1:0
+-libipsec_la_LIBADD = $(LEXLIB)
+ 
+ noinst_HEADERS = ipsec_strerror.h
+ 
+diff --git a/src/racoon/Makefile.am b/src/racoon/Makefile.am
+index dbaded9..0662957 100644
+--- a/src/racoon/Makefile.am
++++ b/src/racoon/Makefile.am
+@@ -38,7 +38,7 @@ racoon_SOURCES = \
+ 	cftoken.l cfparse.y prsa_tok.l prsa_par.y 
+ EXTRA_racoon_SOURCES = isakmp_xauth.c isakmp_cfg.c isakmp_unity.c throttle.c \
+ 	isakmp_frag.c nattraversal.c security.c $(MISSING_ALGOS)
+-racoon_LDADD = $(CRYPTOBJS) $(HYBRID_OBJS) $(NATT_OBJS) $(FRAG_OBJS) $(LEXLIB) \
++racoon_LDADD = $(CRYPTOBJS) $(HYBRID_OBJS) $(NATT_OBJS) $(FRAG_OBJS) \
+ 	 $(SECCTX_OBJS) vmbuf.o sockmisc.o misc.o ../libipsec/libipsec.la
+ racoon_DEPENDENCIES = \
+ 	$(CRYPTOBJS) $(HYBRID_OBJS) $(NATT_OBJS) $(FRAG_OBJS) $(SECCTX_OBJS) \
+diff --git a/src/racoon/cftoken.l b/src/racoon/cftoken.l
+index 490242c..1701922 100644
+--- a/src/racoon/cftoken.l
++++ b/src/racoon/cftoken.l
+@@ -106,6 +106,8 @@ static int incstackp = 0;
+ static int yy_first_time = 1;
+ %}
+ 
++%option noyywrap
++
+ /* common seciton */
+ nl		\n
+ ws		[ \t]+
+diff --git a/src/setkey/Makefile.am b/src/setkey/Makefile.am
+index 746c1f1..389e6cf 100644
+--- a/src/setkey/Makefile.am
++++ b/src/setkey/Makefile.am
+@@ -13,7 +13,6 @@ setkey_SOURCES = \
+ 
+ setkey_LDFLAGS = ../libipsec/libipsec.la
+ setkey_DEPENDENCIES = ../libipsec/libipsec.la
+-setkey_LDADD = $(LEXLIB)
+ 
+ noinst_HEADERS = vchar.h extern.h
+ man8_MANS = setkey.8
+diff --git a/src/setkey/token.l b/src/setkey/token.l
+index ad3d843..eb23b76 100644
+--- a/src/setkey/token.l
++++ b/src/setkey/token.l
+@@ -88,6 +88,8 @@
+ #endif
+ %}
+ 
++%option noyywrap
++
+ /* common section */
+ nl		\n
+ ws		[ \t]+
+-- 
+1.9.0
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/configure.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/configure.patch
new file mode 100644
index 0000000..8d270a6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/configure.patch
@@ -0,0 +1,13 @@
+Index: ipsec-tools-0.8.1/configure.ac
+===================================================================
+--- ipsec-tools-0.8.1.orig/configure.ac	2013-01-08 12:43:29.000000000 +0000
++++ ipsec-tools-0.8.1/configure.ac	2014-07-18 07:51:30.045555880 +0000
+@@ -6,7 +6,7 @@
+ AC_CONFIG_SRCDIR([configure.ac])
+ AC_CONFIG_HEADERS(config.h)
+ 
+-AM_INIT_AUTOMAKE(dist-bzip2)
++AM_INIT_AUTOMAKE([foreign dist-bzip2])
+ 
+ AC_ENABLE_SHARED(no)
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2015-4047.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2015-4047.patch
new file mode 100644
index 0000000..5286376
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2015-4047.patch
@@ -0,0 +1,36 @@
+[PATCH] fix CVE-2015-4047
+
+Upstream-Status: Backport
+
+http://www.openwall.com/lists/oss-security/2015/05/20/1
+
+racoon/gssapi.c in IPsec-Tools 0.8.2 allows remote attackers to cause
+a denial of service (NULL pointer dereference and IKE daemon crash) via
+a series of crafted UDP requests.
+
+https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-4047
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ src/racoon/gssapi.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/racoon/gssapi.c b/src/racoon/gssapi.c
+index e64b201..1ad3b42 100644
+--- a/src/racoon/gssapi.c
++++ b/src/racoon/gssapi.c
+@@ -192,6 +192,11 @@ gssapi_init(struct ph1handle *iph1)
+ 	gss_name_t princ, canon_princ;
+ 	OM_uint32 maj_stat, min_stat;
+ 
++	if (iph1->rmconf == NULL) {
++	        plog(LLV_ERROR, LOCATION, NULL, "no remote config\n");
++	        return -1;
++	}
++
+ 	gps = racoon_calloc(1, sizeof (struct gssapi_ph1_state));
+ 	if (gps == NULL) {
+ 		plog(LLV_ERROR, LOCATION, NULL, "racoon_calloc failed\n");
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/glibc-2.20.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/glibc-2.20.patch
new file mode 100644
index 0000000..36efc49
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/glibc-2.20.patch
@@ -0,0 +1,23 @@
+squahes below warning
+  warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
+
+Seen with glibc 2.20
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+Index: ipsec-tools-0.8.2/src/include-glibc/glibc-bugs.h
+===================================================================
+--- ipsec-tools-0.8.2.orig/src/include-glibc/glibc-bugs.h	2006-09-09 09:22:08.000000000 -0700
++++ ipsec-tools-0.8.2/src/include-glibc/glibc-bugs.h	2014-09-03 22:27:22.551563888 -0700
+@@ -4,7 +4,11 @@
+ #define __GLIBC_BUGS_H__ 1
+ 
+ #define _XOPEN_SOURCE 500
++/* Legacy feature macro.*/
+ #define _BSD_SOURCE
++/* New feature macro that provides everything _BSD_SOURCE and
++ * _SVID_SOURCE provided and possibly more.  */
++#define _DEFAULT_SOURCE
+ 
+ #include <features.h>
+ #include <sys/types.h>
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon-Resend-UPDATE-message-when-received-EINTR-message.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon-Resend-UPDATE-message-when-received-EINTR-message.patch
new file mode 100644
index 0000000..e82db08
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon-Resend-UPDATE-message-when-received-EINTR-message.patch
@@ -0,0 +1,220 @@
+racoon: Resend UPDATE message when received EINTR message
+
+Upstream-Status: Pending
+
+While kernel is processing the UPDATE message which is sent from racoon,
+it maybe interrupted by system signal and if this case happens,
+kernel responds with an EINTR message to racoon and kernel fails to
+establish the corresponding SA.
+Fix this problem by resend the UPDATE message when EINTR(Interrupted
+system call) error happens.
+
+Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+---
+--- a/src/libipsec/libpfkey.h
++++ b/src/libipsec/libpfkey.h
+@@ -92,6 +92,12 @@
+ 	u_int16_t ctxstrlen;		/* length of security context string */
+ };
+ 
++struct update_msg_info {
++        struct sadb_msg *update_msg;
++        int so;
++        int len;
++};
++
+ /* The options built into libipsec */
+ extern int libipsec_opt;
+ #define LIBIPSEC_OPT_NATT		0x01
+--- a/src/libipsec/pfkey.c
++++ b/src/libipsec/pfkey.c
+@@ -1219,7 +1219,8 @@
+ }
+ #endif
+ 
+-
++struct update_msg_info update_msg_send = {NULL, 0, 0};
++
+ /* sending SADB_ADD or SADB_UPDATE message to the kernel */
+ static int
+ pfkey_send_x1(struct pfkey_send_sa_args *sa_parms)
+@@ -1483,10 +1484,24 @@
+ 
+ 	/* send message */
+ 	len = pfkey_send(sa_parms->so, newmsg, len);
+-	free(newmsg);
+ 
+-	if (len < 0)
+-		return -1;
++	if (newmsg->sadb_msg_type == SADB_UPDATE) {
++		if (update_msg_send.update_msg)
++			free(update_msg_send.update_msg);
++		update_msg_send.update_msg = newmsg;
++		update_msg_send.so = sa_parms->so;
++		update_msg_send.len = len;
++
++		if (len < 0) {
++			free(update_msg_send.update_msg);
++			update_msg_send.update_msg = NULL;
++			return -1;
++		}
++	} else {
++		free(newmsg);
++		if (len < 0)
++			return -1;
++	}
+ 
+ 	__ipsec_errcode = EIPSEC_NO_ERROR;
+ 	return len;
+--- a/src/racoon/session.c
++++ b/src/racoon/session.c
+@@ -100,6 +100,8 @@
+ 
+ #include "sainfo.h"
+ 
++extern struct update_msg_info update_msg_send;
++
+ struct fd_monitor {
+ 	int (*callback)(void *ctx, int fd);
+ 	void *ctx;
+@@ -348,6 +350,11 @@
+ 	close_sockets();
+ 	backupsa_clean();
+ 
++	if (update_msg_send.update_msg) {
++		free(update_msg_send.update_msg);
++		update_msg_send.update_msg = NULL;
++	}
++
+ 	plog(LLV_INFO, LOCATION, NULL, "racoon process %d shutdown\n", getpid());
+ 
+ 	exit(0);
+--- a/src/racoon/pfkey.c
++++ b/src/racoon/pfkey.c
+@@ -103,10 +103,12 @@
+ #include "crypto_openssl.h"
+ #include "grabmyaddr.h"
++#include "../libipsec/libpfkey.h"
+ 
+ #if defined(SADB_X_EALG_RIJNDAELCBC) && !defined(SADB_X_EALG_AESCBC)
+ #define SADB_X_EALG_AESCBC  SADB_X_EALG_RIJNDAELCBC
+ #endif
+ 
++extern struct update_msg_info update_msg_send;
+ /* prototype */
+ static u_int ipsecdoi2pfkey_aalg __P((u_int));
+ static u_int ipsecdoi2pfkey_ealg __P((u_int));
+@@ -253,6 +255,13 @@
+ 			s_pfkey_type(msg->sadb_msg_type),
+ 			strerror(msg->sadb_msg_errno));
+ 
++		if (msg->sadb_msg_errno == EINTR &&
++			update_msg_send.update_msg) {
++			plog(LLV_DEBUG, LOCATION, NULL,
++			"pfkey update resend\n");
++			send(update_msg_send.so, (void *)update_msg_send.update_msg, (socklen_t)update_msg_send.len, 0);
++		}
++
+ 		goto end;
+ 	}
+ 
+@@ -498,6 +507,11 @@
+ {
+ 	flushsp();
+ 
++	if (update_msg_send.update_msg) {
++		free(update_msg_send.update_msg);
++		update_msg_send.update_msg = NULL;
++	}
++
+ 	if (pfkey_send_spddump(lcconf->sock_pfkey) < 0) {
+ 		plog(LLV_ERROR, LOCATION, NULL,
+ 			"libipsec sending spddump failed: %s\n",
+@@ -1295,6 +1309,8 @@
+ 	return 0;
+ }
+ 
++int update_received = 0;
++
+ static int
+ pk_recvupdate(mhp)
+ 	caddr_t *mhp;
+@@ -1307,6 +1323,13 @@
+ 	int incomplete = 0;
+ 	struct saproto *pr;
+ 
++	update_received = 1;
++
++	if (update_msg_send.update_msg) {
++                free(update_msg_send.update_msg);
++                update_msg_send.update_msg = NULL;
++        }
++
+ 	/* ignore this message because of local test mode. */
+ 	if (f_local)
+ 		return 0;
+@@ -4163,3 +4186,8 @@
+ 
+ 	return buf;
+ }
++
++int receive_from_isakmp()
++{
++	return pfkey_handler(NULL, lcconf->sock_pfkey);
++}
+--- a/src/racoon/pfkey.h
++++ b/src/racoon/pfkey.h
+@@ -71,5 +71,6 @@
+ extern u_int32_t pk_getseq __P((void));
+ extern const char *sadbsecas2str
+ 	__P((struct sockaddr *, struct sockaddr *, int, u_int32_t, int));
++extern int receive_from_isakmp __P((void));
+ 
+ #endif /* _PFKEY_H */
+--- a/src/racoon/isakmp_quick.c
++++ b/src/racoon/isakmp_quick.c
+@@ -774,6 +774,8 @@
+ 	return error;
+ }
+ 
++extern int update_received;
++
+ /*
+  * send to responder
+  * 	HDR*, HASH(3)
+@@ -892,6 +894,11 @@
+ 	}
+ 	plog(LLV_DEBUG, LOCATION, NULL, "pfkey update sent.\n");
+ 
++	while (!update_received)
++		receive_from_isakmp();
++
++	update_received = 0;
++
+ 	/* Do ADD for responder */
+ 	if (pk_sendadd(iph2) < 0) {
+ 		plog(LLV_ERROR, LOCATION, NULL, "pfkey add failed.\n");
+@@ -1035,6 +1042,11 @@
+ 	}
+ 	plog(LLV_DEBUG, LOCATION, NULL, "pfkey update sent.\n");
+ 
++	while (!update_received)
++		receive_from_isakmp();
++
++	update_received = 0;
++
+ 	/* Do ADD for responder */
+ 	if (pk_sendadd(iph2) < 0) {
+ 		plog(LLV_ERROR, LOCATION, NULL, "pfkey add failed.\n");
+@@ -1989,6 +2001,11 @@
+ 	}
+ 	plog(LLV_DEBUG, LOCATION, NULL, "pfkey update sent.\n");
+ 
++	while (!update_received)
++		receive_from_isakmp();
++
++	update_received = 0;
++
+ 	/* Do ADD for responder */
+ 	if (pk_sendadd(iph2) < 0) {
+ 		plog(LLV_ERROR, LOCATION, NULL, "pfkey add failed.\n");
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon-check-invalid-ivm.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon-check-invalid-ivm.patch
new file mode 100644
index 0000000..e272bc2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon-check-invalid-ivm.patch
@@ -0,0 +1,26 @@
+Subject: [PATCH] ipsec-tools: racoon: check several invalid ivm
+
+Upstream-Status: Pending
+
+Add checking for invalid ivm, or it will crash racoon.
+
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
+---
+ isakmp_cfg.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff -urpN a/src/racoon/isakmp_cfg.c b/src/racoon/isakmp_cfg.c
+--- a/src/racoon/isakmp_cfg.c
++++ b/src/racoon/isakmp_cfg.c
+@@ -171,6 +171,11 @@ isakmp_cfg_r(iph1, msg)
+ 	    iph1->mode_cfg->last_msgid != packet->msgid )
+ 		iph1->mode_cfg->ivm = 
+ 		    isakmp_cfg_newiv(iph1, packet->msgid);
++	if(iph1->mode_cfg->ivm == NULL) {
++		plog(LLV_ERROR, LOCATION, NULL, 
++		    "failed to create new IV\n");
++		return;
++	}
+ 	ivm = iph1->mode_cfg->ivm;
+ 
+ 	dmsg = oakley_do_decrypt(iph1, msg, ivm->iv, ivm->ive);
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon-check-invalid-pointers.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon-check-invalid-pointers.patch
new file mode 100644
index 0000000..de1bdb4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon-check-invalid-pointers.patch
@@ -0,0 +1,61 @@
+Subject: [PATCH] ipsec-tools: racoon: check several invalid pointers
+
+Upstream-Status: Pending
+
+Add checking for invalid pointers, or it will crash racoon.
+
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
+---
+ ipsec_doi.c    |    5 +++--
+ isakmp_cfg.c   |    7 +++++++
+ isakmp_quick.c |    6 ++++--
+ 3 files changed, 14 insertions(+), 4 deletions(-)
+
+diff -urpN a/src/racoon/ipsec_doi.c b/src/racoon/ipsec_doi.c
+--- a/src/racoon/ipsec_doi.c
++++ b/src/racoon/ipsec_doi.c
+@@ -3374,8 +3374,9 @@ ipsecdoi_chkcmpids( idt, ids, exact )
+ 
+ 	/* handle wildcard IDs */
+ 
+-	if (idt == NULL || ids == NULL)
+-	{
++	if (idt == NULL || ids == NULL ||
++	    idt->v == NULL || idt->l == 0 ||
++	    ids->v == NULL || ids->l == 0) {
+ 		if( !exact )
+ 		{
+ 			plog(LLV_DEBUG, LOCATION, NULL,
+diff -urpN a/src/racoon/isakmp_cfg.c b/src/racoon/isakmp_cfg.c
+--- a/src/racoon/isakmp_cfg.c
++++ b/src/racoon/isakmp_cfg.c
+@@ -1138,6 +1138,13 @@ isakmp_cfg_newiv(iph1, msgid)
+ 		return NULL;
+ 	}
+ 
++	if (iph1->ivm == NULL || iph1->ivm->iv == NULL ||
++	    iph1->ivm->iv->v == NULL || iph1->ivm->iv->l == 0) {
++		plog(LLV_ERROR, LOCATION, NULL,
++		    "isakmp_cfg_newiv called with invalid IV management\n");
++		return NULL;
++	}
++
+ 	if (ics->ivm != NULL)
+ 		oakley_delivm(ics->ivm);
+ 
+diff -urpN a/src/racoon/isakmp_quick.c b/src/racoon/isakmp_quick.c
+--- a/src/racoon/isakmp_quick.c
++++ b/src/racoon/isakmp_quick.c
+@@ -2243,8 +2243,10 @@ get_proposal_r(iph2)
+ 	int error = ISAKMP_INTERNAL_ERROR;
+ 
+ 	/* check the existence of ID payload */
+-	if ((iph2->id_p != NULL && iph2->id == NULL)
+-	 || (iph2->id_p == NULL && iph2->id != NULL)) {
++	if ((iph2->id_p != NULL &&
++	    (iph2->id == NULL || iph2->id->v == NULL || iph2->id->l == 0)) ||
++	    (iph2->id != NULL &&
++	    (iph2->id_p == NULL || iph2->id_p->v == NULL || iph2->id_p->l == 0))) {
+ 		plog(LLV_ERROR, LOCATION, NULL,
+ 			"Both IDs wasn't found in payload.\n");
+ 		return ISAKMP_NTYPE_INVALID_ID_INFORMATION;
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon.conf b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon.conf
new file mode 100644
index 0000000..6b50750
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon.conf
@@ -0,0 +1,8 @@
+# Defaults for racoon service
+# sourced by racoon.service
+# installed at /etc/default/racoon by the maintainer scripts
+#
+# This is a POSIX shell fragment
+#
+# Arguments to pass to racoon
+RACOON_ARGS=""
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon.conf.sample b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon.conf.sample
new file mode 100644
index 0000000..2948a4a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon.conf.sample
@@ -0,0 +1,40 @@
+#
+# NOTE: This file will not be used if you use racoon-tool(8) to manage your
+# IPsec connections. racoon-tool will process racoon-tool.conf(5) and
+# generate a configuration (/var/lib/racoon/racoon.conf) and use it, instead
+# of this file.
+#
+# Simple racoon.conf
+# 
+#
+# Please look in /usr/share/doc/racoon/examples for
+# examples that come with the source.
+#
+# Please read racoon.conf(5) for details, and alsoread setkey(8).
+#
+#
+# Also read the Linux IPSEC Howto up at 
+# http://www.ipsec-howto.org/t1.html 
+#
+log notify;
+path pre_shared_key "/etc/racoon/psk.txt";
+path certificate "/etc/racoon/certs";
+
+#remote 172.31.1.1 {
+#        exchange_mode main,aggressive;
+#        proposal {
+#                encryption_algorithm 3des;
+#                hash_algorithm sha1;
+#                authentication_method pre_shared_key;
+#                dh_group modp1024;
+#        }
+#        generate_policy off;
+#}
+# 
+#sainfo address 192.168.203.10[any] any address 192.168.22.0/24[any] any {
+#        pfs_group modp768;
+#        encryption_algorithm 3des;
+#        authentication_algorithm hmac_md5;
+#        compression_algorithm deflate;
+#}
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon.service b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon.service
new file mode 100644
index 0000000..a10e770
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/racoon.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Racoon IKEv1 key management daemon for IPSEC
+After=syslog.target network.target
+
+[Service]
+Type=forking
+EnvironmentFile=-@SYSCONFDIR@/default/racoon
+ExecStart=@SBINDIR@/racoon $RACOON_ARGS
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools_0.8.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools_0.8.2.bb
new file mode 100644
index 0000000..d9f1212
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools_0.8.2.bb
@@ -0,0 +1,92 @@
+DESCRIPTION = "IPsec-Tools is a port of KAME's IPsec utilities to the \
+Linux-2.6 IPsec implementation."
+HOMEPAGE = "http://ipsec-tools.sourceforge.net/"
+SECTION = "net"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://src/libipsec/pfkey.c;beginline=6;endline=31;md5=bc9b7ff40beff19fe6bc6aef26bd2b24"
+
+DEPENDS = "virtual/kernel openssl readline flex-native bison-native"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+SRC_URI = "ftp://ftp.netbsd.org/pub/NetBSD/misc/ipsec-tools/0.8/ipsec-tools-${PV}.tar.bz2 \
+           file://0002-Don-t-link-against-libfl.patch \
+           file://configure.patch \
+           file://0001-racoon-pfkey-avoid-potential-null-pointer-dereferenc.patch \
+           file://racoon-check-invalid-pointers.patch \
+           file://racoon-check-invalid-ivm.patch \
+           file://glibc-2.20.patch \
+           file://racoon-Resend-UPDATE-message-when-received-EINTR-message.patch \
+           file://racoon.conf.sample \
+           file://racoon.conf \
+           file://racoon.service \
+           file://fix-CVE-2015-4047.patch \
+          "
+SRC_URI[md5sum] = "d53ec14a0a3ece64e09e5e34b3350b41"
+SRC_URI[sha256sum] = "8eb6b38716e2f3a8a72f1f549c9444c2bc28d52c9536792690564c74fe722f2d"
+
+inherit autotools systemd
+
+# Options:
+#  --enable-adminport      enable admin port
+#  --enable-rc5            enable RC5 encryption (patented)
+#  --enable-idea enable IDEA encryption (patented)
+#  --enable-gssapi         enable GSS-API authentication
+#  --enable-hybrid         enable hybrid, both mode-cfg and xauth support
+#  --enable-frag           enable IKE fragmentation payload support
+#  --enable-stats          enable statistics logging function
+#  --enable-dpd            enable dead peer detection
+#  --enable-samode-unspec  enable to use unspecified a mode of SA
+#  --disable-ipv6          disable ipv6 support
+#  --enable-natt           enable NAT-Traversal (yes/no/kernel)
+#  --enable-natt-versions=list    list of supported NAT-T versions delimited by coma.
+#  --with-kernel-headers=/lib/modules/<uname>/build/include
+#                          where your Linux Kernel headers are installed
+#  --with-readline         support readline input (yes by default)
+#  --with-flex             use directiory (default: no)
+#  --with-flexlib=<LIB>    specify flex library.
+#  --with-openssl=DIR      specify OpenSSL directory
+#  --with-libradius=DIR    specify libradius path (like/usr/pkg)
+#  --with-libpam=DIR       specify libpam path (like/usr/pkg)
+#
+# Note: if you give it the actual kernel headers it won't build, it actually
+# needs to point at the linux-libc-headers version of the kernel headers.
+#
+EXTRA_OECONF = "--with-kernel-headers=${STAGING_INCDIR} \
+                --with-readline \
+                --with-openssl=${STAGING_LIBDIR}/.. \
+                --without-libradius \
+                --disable-security-context \
+                --enable-shared \
+                --enable-dpd \
+                --enable-natt=yes \
+                --sysconfdir=${sysconfdir}/racoon \
+                ${@base_contains('DISTRO_FEATURES', 'ipv6', '--enable-ipv6=yes', '', d)}"
+
+# See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=530527
+CFLAGS += "-fno-strict-aliasing"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[pam] = "--with-libpam,--without-libpam,libpam,"
+PACKAGECONFIG[selinux] = "--enable-security-context,--disable-security-context,libselinux,"
+
+SYSTEMD_SERVICE_${PN} = "racoon.service"
+
+do_install_append() {
+    install -d ${D}${sysconfdir}/racoon
+    install -m 0644 ${WORKDIR}/racoon.conf.sample ${D}${sysconfdir}/racoon/racoon.conf
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/racoon.service ${D}${systemd_unitdir}/system
+
+        sed -i -e 's#@SYSCONFDIR@#${sysconfdir}#g' ${D}${systemd_unitdir}/system/racoon.service
+        sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/racoon.service
+
+        install -d ${D}${sysconfdir}/default/
+        install -m 0644 ${WORKDIR}/racoon.conf ${D}${sysconfdir}/default/racoon
+    fi
+}
+
+FILES_${PN} += "${sysconfdir}/racoon/racoon.conf \
+                ${sysconfdir}/default/racoon"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm/0001-Modify-the-Makefile-for-cross-compile.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm/0001-Modify-the-Makefile-for-cross-compile.patch
new file mode 100644
index 0000000..7c3dfe4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm/0001-Modify-the-Makefile-for-cross-compile.patch
@@ -0,0 +1,97 @@
+From 58292175115bae7a4c3600d3022e59ea57213025 Mon Sep 17 00:00:00 2001
+From: Jianchuan Wang <jianchuan.wang@windriver.com>
+Date: Mon, 12 Jan 2015 15:53:23 +0800
+Subject: [PATCH] Modify the Makefile for cross compile.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
+---
+ Makefile         | 23 ++++++-----------------
+ libipvs/Makefile |  3 +--
+ 2 files changed, 7 insertions(+), 19 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index e4e03cc..461c021 100644
+--- a/Makefile
++++ b/Makefile
+@@ -35,10 +35,9 @@ ARCH		= $(shell uname -m)
+ RPMSOURCEDIR	= $(shell rpm --eval '%_sourcedir')
+ RPMSPECDIR	= $(shell rpm --eval '%_specdir')
+ 
+-CC		= gcc
+ INCLUDE		=
+ SBIN		= $(BUILD_ROOT)/sbin
+-MANDIR		= usr/man
++MANDIR		= usr/share/man
+ MAN		= $(BUILD_ROOT)/$(MANDIR)/man8
+ INIT		= $(BUILD_ROOT)/etc/rc.d/init.d
+ MKDIR		= mkdir
+@@ -62,17 +61,7 @@ RPMBUILD = $(shell				\
+ 		echo "/bin/rpm";		\
+ 	fi )
+ 
+-ifeq (,$(FORCE_GETOPT))
+-LIB_SEARCH = /lib64 /usr/lib64 /usr/local/lib64 /lib /usr/lib /usr/local/lib
+-POPT_LIB = $(shell for i in $(LIB_SEARCH); do \
+-  if [ -f $$i/libpopt.a ]; then \
+-    if nm $$i/libpopt.a | fgrep -q poptGetContext; then \
+-	echo "-lpopt"; \
+-	break; \
+-    fi; \
+-  fi; \
+-done)
+-endif
++POPT_LIB = -lpopt
+ 
+ ifneq (,$(POPT_LIB))
+ POPT_DEFINE = -DHAVE_POPT
+@@ -81,7 +70,7 @@ endif
+ OBJS		= ipvsadm.o config_stream.o dynamic_array.o
+ LIBS		= $(POPT_LIB)
+ ifneq (0,$(HAVE_NL))
+-LIBS		+= -lnl
++LIBS		+= -lnl-3 -lnl-genl-3
+ endif
+ DEFINES		= -DVERSION=\"$(VERSION)\" -DSCHEDULERS=\"$(SCHEDULERS)\" \
+ 		  -DPE_LIST=\"$(PE_LIST)\" $(POPT_DEFINE)
+@@ -91,13 +80,13 @@ DEFINES		+= $(shell if [ ! -f ../ip_vs.h ]; then	\
+ 
+ .PHONY	= all clean install dist distclean rpm rpms
+ 
+-all:            libs ipvsadm
++all: ipvsadm
+ 
+ libs:
+ 		make -C libipvs
+ 
+-ipvsadm:	$(OBJS) $(STATIC_LIBS)
+-		$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
++ipvsadm:	$(OBJS) libs
++		$(CC) $(CFLAGS) -o $@ $(OBJS) $(STATIC_LIBS) $(LIBS)
+ 
+ install:        all
+ 		if [ ! -d $(SBIN) ]; then $(MKDIR) -p $(SBIN); fi
+diff --git a/libipvs/Makefile b/libipvs/Makefile
+index a527a7f..b7300ec 100644
+--- a/libipvs/Makefile
++++ b/libipvs/Makefile
+@@ -1,6 +1,5 @@
+ # Makefile for libipvs
+ 
+-CC		= gcc
+ CFLAGS		= -Wall -Wunused -Wstrict-prototypes -g -fPIC
+ ifneq (0,$(HAVE_NL))
+ CFLAGS		+= -DLIBIPVS_USE_NL
+@@ -18,7 +17,7 @@ SHARED_LIB	= libipvs.so
+ all:		$(STATIC_LIB) $(SHARED_LIB)
+ 
+ $(STATIC_LIB):	libipvs.o ip_vs_nl_policy.o
+-		ar rv $@ $^
++		$(AR) rv $@ $^
+ 
+ $(SHARED_LIB):	libipvs.o ip_vs_nl_policy.o
+ 		$(CC) -shared -Wl,-soname,$@ -o $@ $^
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm/0002-Replace-nl_handle-to-nl_sock.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm/0002-Replace-nl_handle-to-nl_sock.patch
new file mode 100644
index 0000000..7896d6d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm/0002-Replace-nl_handle-to-nl_sock.patch
@@ -0,0 +1,63 @@
+From 2686213259b15df9cf1d969c5a14d62f14cfbaae Mon Sep 17 00:00:00 2001
+From: Jianchuan Wang <jianchuan.wang@windriver.com>
+Date: Thu, 8 Jan 2015 17:37:11 +0800
+Subject: [PATCH 2/2] Replace nl_handle to nl_sock.
+
+The nl_handle was replace with nl_sock in the libnl-3.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
+---
+ libipvs/libipvs.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/libipvs/libipvs.c b/libipvs/libipvs.c
+index a157e18..21a9bfa 100644
+--- a/libipvs/libipvs.c
++++ b/libipvs/libipvs.c
+@@ -32,7 +32,7 @@ static void* ipvs_func = NULL;
+ struct ip_vs_getinfo ipvs_info;
+ 
+ #ifdef LIBIPVS_USE_NL
+-static struct nl_handle *sock = NULL;
++static struct nl_sock *sock = NULL;
+ static int family, try_nl = 1;
+ #endif
+ 
+@@ -73,7 +73,7 @@ int ipvs_nl_send_message(struct nl_msg *msg, nl_recvmsg_msg_cb_t func, void *arg
+ {
+ 	int err = EINVAL;
+ 
+-	sock = nl_handle_alloc();
++	sock = nl_socket_alloc();
+ 	if (!sock) {
+ 		nlmsg_free(msg);
+ 		return -1;
+@@ -88,7 +88,7 @@ int ipvs_nl_send_message(struct nl_msg *msg, nl_recvmsg_msg_cb_t func, void *arg
+ 
+ 	/* To test connections and set the family */
+ 	if (msg == NULL) {
+-		nl_handle_destroy(sock);
++		nl_socket_free(sock);
+ 		sock = NULL;
+ 		return 0;
+ 	}
+@@ -104,12 +104,12 @@ int ipvs_nl_send_message(struct nl_msg *msg, nl_recvmsg_msg_cb_t func, void *arg
+ 
+ 	nlmsg_free(msg);
+ 
+-	nl_handle_destroy(sock);
++	nl_socket_free(sock);
+ 
+ 	return 0;
+ 
+ fail_genl:
+-	nl_handle_destroy(sock);
++	nl_socket_free(sock);
+ 	sock = NULL;
+ 	nlmsg_free(msg);
+ 	errno = err;
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm/0003-ipvsadm-remove-dependency-on-bash.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm/0003-ipvsadm-remove-dependency-on-bash.patch
new file mode 100644
index 0000000..800114f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm/0003-ipvsadm-remove-dependency-on-bash.patch
@@ -0,0 +1,39 @@
+From 2f4cdf70cf92d3a9503d8ff045ba277db40bb4e7 Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe_macdonald@mentor.com>
+Date: Monday, 13 Apr 2015 14:12:37 -0400
+Subject: [PATCH] ipvsadm: remove dependency on bash
+
+The save/restore scripts are very simple and don't depend on any BASH
+features at all, so switch the interpreter to /bin/sh.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+---
+ ipvsadm-restore | 2 +-
+ ipvsadm-save    | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/ipvsadm-restore b/ipvsadm-restore
+index f24e1b3..a9fa8bc 100644
+--- a/ipvsadm-restore
++++ b/ipvsadm-restore
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #      ipvsadm-restore - Restore IPVS rules
+ #
+ #      A very simple wrapper to restore IPVS rules
+diff --git a/ipvsadm-save b/ipvsadm-save
+index f4d399e..af51638 100644
+--- a/ipvsadm-save
++++ b/ipvsadm-save
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #      ipvsadm-save - Save IPVS rules
+ #
+ #      A very simple wrapper to save IPVS rules
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.26.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.26.bb
new file mode 100644
index 0000000..7302e9d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.26.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Linux Virtual Server administration Utility"
+DESCRIPTION = "Ipvsadm  is  used  to set up, maintain or inspect the virtual server \
+table in the Linux kernel. The Linux Virtual  Server  can  be  used  to \
+build  scalable  network  services  based  on  a cluster of two or more nodes. \
+The active node of the cluster redirects service requests  to  a \
+collection  of  server  hosts  that will actually perform the services. \
+Supported features include two protocols (TCP and UDP),  three  packet-forwarding \
+methods (NAT, tunneling, and direct routing), and eight load balancing algorithms \
+(round robin, weighted round robin,  least-connec-tion, weighted least-connection, \
+locality-based  least-connection, locality-based least-connection with replication, \
+destination-hashing, and source-hashing)."
+SECTION = "net"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://README;beginline=40;endline=56;md5=a54cba37b64924aa5008881607942892"
+
+DEPENDS += "libnl popt"
+
+SRC_URI = "http://www.linuxvirtualserver.org/software/kernel-2.6/${BP}.tar.gz \
+        file://0001-Modify-the-Makefile-for-cross-compile.patch \
+        file://0002-Replace-nl_handle-to-nl_sock.patch \
+        file://0003-ipvsadm-remove-dependency-on-bash.patch \
+"
+
+SRC_URI[md5sum] = "eac3ba3f62cd4dea2da353aeddd353a8"
+SRC_URI[sha256sum] = "6d6c46fecb1c532a892616b4445c73b71730e8790d5630f60269fd9cbee0eb2d"
+
+do_compile() {
+    oe_runmake \
+    CC="${CC} -I${STAGING_INCDIR} -I${STAGING_INCDIR}/libnl3 -L${STAGING_LIBDIR}" \
+    all
+}
+
+do_install() {
+    oe_runmake 'BUILD_ROOT=${D}' install
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp/include-topdir.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp/include-topdir.patch
new file mode 100644
index 0000000..90c4ce7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp/include-topdir.patch
@@ -0,0 +1,48 @@
+diff -Nurp libesmtp-1.0.6.org/crammd5/Makefile.am libesmtp-1.0.6/crammd5/Makefile.am
+--- libesmtp-1.0.6.org/crammd5/Makefile.am	2010-08-08 23:45:57.000000000 +0800
++++ libesmtp-1.0.6/crammd5/Makefile.am	2014-11-17 11:17:21.663624295 +0800
+@@ -2,7 +2,7 @@
+ 
+ libdir = @plugindir@
+ 
+-INCLUDES = -I@srcdir@
++INCLUDES = -I@srcdir@ -I@srcdir@/../
+ AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
+ 
+ lib_LTLIBRARIES = sasl-cram-md5.la
+diff -Nurp libesmtp-1.0.6.org/login/Makefile.am libesmtp-1.0.6/login/Makefile.am
+--- libesmtp-1.0.6.org/login/Makefile.am	2010-08-08 23:45:56.000000000 +0800
++++ libesmtp-1.0.6/login/Makefile.am	2014-11-17 11:17:54.339623018 +0800
+@@ -2,7 +2,7 @@
+ 
+ libdir = @plugindir@
+ 
+-INCLUDES = -I@srcdir@
++INCLUDES = -I@srcdir@ -I@srcdir@/../
+ 
+ lib_LTLIBRARIES = sasl-login.la
+ AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
+diff -Nurp libesmtp-1.0.6.org/ntlm/Makefile.am libesmtp-1.0.6/ntlm/Makefile.am
+--- libesmtp-1.0.6.org/ntlm/Makefile.am	2010-08-08 23:45:56.000000000 +0800
++++ libesmtp-1.0.6/ntlm/Makefile.am	2014-11-17 11:18:10.551622385 +0800
+@@ -2,7 +2,7 @@
+ 
+ libdir = @plugindir@
+ 
+-INCLUDES = -I@srcdir@
++INCLUDES = -I@srcdir@ -I@srcdir@/../
+ AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
+ 
+ lib_LTLIBRARIES = sasl-ntlm.la
+diff -Nurp libesmtp-1.0.6.org/plain/Makefile.am libesmtp-1.0.6/plain/Makefile.am
+--- libesmtp-1.0.6.org/plain/Makefile.am	2010-08-08 23:45:54.000000000 +0800
++++ libesmtp-1.0.6/plain/Makefile.am	2014-11-17 11:18:33.355621494 +0800
+@@ -2,7 +2,7 @@
+ 
+ libdir = @plugindir@
+ 
+-INCLUDES = -I@srcdir@
++INCLUDES = -I@srcdir@ -I@srcdir@/../
+ AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
+ 
+ lib_LTLIBRARIES = sasl-plain.la
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp_1.0.6.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp_1.0.6.bb
new file mode 100644
index 0000000..7ddf591
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp_1.0.6.bb
@@ -0,0 +1,36 @@
+SUMMARY = "SMTP client library"
+DESCRIPTION = "LibESMTP is a library to manage posting \
+(or submission of) electronic mail using SMTP to a \
+preconfigured Mail Transport Agent (MTA) such as Exim or PostFix."
+HOMEPAGE = "http://www.stafford.uklinux.net/libesmtp/"
+LICENSE = "LGPLv2+"
+SECTION = "libs"
+
+DEPENDS = "openssl"
+
+SRC_URI = "http://www.stafford.uklinux.net/libesmtp/libesmtp-${PV}.tar.bz2 \
+           file://include-topdir.patch"
+SRC_URI[md5sum] = "bf3915e627fd8f35524a8fdfeed979c8"
+SRC_URI[sha256sum] = "d0a61a5c52d99fa7ce7d00ed0a07e341dbda67101dbed1ab0cdae3f37db4eb0b"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = " \
+    --with-auth-plugin-dir=${libdir}/esmtp-plugins \
+    --enable-pthreads                              \
+    --enable-debug                                 \
+    --enable-etrn                                  \
+    --disable-isoc                                 \
+    --disable-more-warnings                        \
+    --disable-static                               \
+"
+
+FILES_${PN} = "${libdir}/lib*${SOLIBS} \
+               ${libdir}/esmtp-plugins/*${SOLIBSDEV}"
+
+FILES_${PN}-dev  += "${libdir}/esmtp-plugins/*.la"
+FILES_${PN}-static += "${libdir}/esmtp-plugins/*.a"
+FILES_${PN}-dbg += "${libdir}/esmtp-plugins/.debug/"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libldb/libldb/avoid-openldap-unless-wanted.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/libldb/libldb/avoid-openldap-unless-wanted.patch
new file mode 100644
index 0000000..8ab094f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libldb/libldb/avoid-openldap-unless-wanted.patch
@@ -0,0 +1,13 @@
+--- a/wscript	2015-11-18 12:43:33.000000000 +0100
++++ b/wscript	2015-11-18 12:46:25.000000000 +0100
+@@ -58,9 +58,7 @@
+     if conf.env.standalone_ldb:
+         conf.CHECK_XSLTPROC_MANPAGES()
+ 
+-        # we need this for the ldap backend
+-        if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'):
+-            conf.env.ENABLE_LDAP_BACKEND = True
++        conf.env.ENABLE_LDAP_BACKEND = False
+ 
+         # we don't want any libraries or modules to rely on runtime
+         # resolution of symbols
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libldb/libldb/do-not-import-target-module-while-cross-compile.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/libldb/libldb/do-not-import-target-module-while-cross-compile.patch
new file mode 100755
index 0000000..fdd312c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libldb/libldb/do-not-import-target-module-while-cross-compile.patch
@@ -0,0 +1,58 @@
+Some modules such as dynamic library maybe cann't be imported while cross compile,
+we just check whether does the module exist.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+Index: ldb-1.1.26/buildtools/wafsamba/samba_bundled.py
+===================================================================
+--- ldb-1.1.26.orig/buildtools/wafsamba/samba_bundled.py
++++ ldb-1.1.26/buildtools/wafsamba/samba_bundled.py
+@@ -2,6 +2,7 @@
+ 
+ import sys
+ import Build, Options, Logs
++import imp, os
+ from Configure import conf
+ from samba_utils import TO_LIST
+ 
+@@ -230,17 +231,32 @@ def CHECK_BUNDLED_SYSTEM_PYTHON(conf, li
+     # versions
+     minversion = minimum_library_version(conf, libname, minversion)
+ 
+-    try:
+-        m = __import__(modulename)
+-    except ImportError:
+-        found = False
+-    else:
++    # Find module in PYTHONPATH
++    stuff = imp.find_module(modulename, [os.environ["PYTHONPATH"]])
++    if stuff:
+         try:
+-            version = m.__version__
+-        except AttributeError:
++            m = imp.load_module(modulename, stuff[0], stuff[1], stuff[2])
++        except ImportError:
+             found = False
++
++            if conf.env.CROSS_COMPILE:
++                # Some modules such as dynamic library maybe cann't be imported
++                # while cross compile, we just check whether the module exist
++                Logs.warn('Cross module[%s] has been found, but can not be loaded.' % (stuff[1]))
++                found = True
+         else:
+-            found = tuplize_version(version) >= tuplize_version(minversion)
++            try:
++                version = m.__version__
++            except AttributeError:
++                found = False
++            else:
++                found = tuplize_version(version) >= tuplize_version(minversion)
++        finally:
++            if stuff[0]:
++                stuff[0].close()
++    else:
++        found = False
++
+     if not found and not conf.LIB_MAY_BE_BUNDLED(libname):
+         Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion))
+         sys.exit(1)
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libldb/libldb_1.1.26.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/libldb/libldb_1.1.26.bb
new file mode 100644
index 0000000..5458d47
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libldb/libldb_1.1.26.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Hierarchical, reference counted memory pool system with destructors"
+HOMEPAGE = "http://ldb.samba.org"
+SECTION = "libs"
+LICENSE = "LGPL-3.0+ & LGPL-2.1+ & GPL-3.0+"
+
+DEPENDS += "libbsd libtdb libtalloc libtevent popt"
+RDEPENDS_pyldb += "python"
+
+SRC_URI = "http://samba.org/ftp/ldb/ldb-${PV}.tar.gz \
+           file://do-not-import-target-module-while-cross-compile.patch \
+          "
+
+PACKAGECONFIG[ldap] = ",,openldap"
+SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'ldap', '', 'file://avoid-openldap-unless-wanted.patch', d)}"
+
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=bfccfe952269fff2b407dd11f2f3083b \
+                    file://${COREBASE}/meta/files/common-licenses/LGPL-2.1;md5=1a6d268fd218675ffea8be556788b780 \
+                    file://${COREBASE}/meta/files/common-licenses/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891"
+
+SRC_URI[md5sum] = "31780b702b638ad32aa5d9853d257839"
+SRC_URI[sha256sum] = "8843c7a72b980d9413ba6c494c039bccd10c524b37fda2917afb147745d8b2e6"
+
+inherit waf-samba
+
+S = "${WORKDIR}/ldb-${PV}"
+
+EXTRA_OECONF += "--disable-rpath \
+                 --disable-rpath-install \
+                 --bundled-libraries=NONE \
+                 --builtin-libraries=replace \
+                 --with-modulesdir=${libdir}/ldb/modules \
+                 --with-privatelibdir=${libdir}/ldb \
+                 --with-libiconv=${STAGING_DIR_HOST}${prefix}\
+                "
+DISABLE_STATIC = ""
+
+PACKAGES += "pyldb pyldb-dbg pyldb-dev"
+
+FILES_${PN} += "${libdir}/ldb/*"
+FILES_${PN}-dbg += "${libdir}/ldb/.debug/* \
+                    ${libdir}/ldb/modules/ldb/.debug/*"
+
+FILES_pyldb = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/* \
+               ${libdir}/libpyldb-util.so.1 \
+               ${libdir}/libpyldb-util.so.1.1.17 \
+              "
+FILES_pyldb-dbg = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/.debug \
+                   ${libdir}/.debug/libpyldb-util.so.1.1.17"
+FILES_pyldb-dev = "${libdir}/libpyldb-util.so"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/files/crosscompile.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/files/crosscompile.patch
new file mode 100644
index 0000000..63511bf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/files/crosscompile.patch
@@ -0,0 +1,30 @@
+ libmemcached/backtrace.cc |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- libmemcached-1.0.15.orig/libmemcached/backtrace.cc
++++ libmemcached-1.0.15/libmemcached/backtrace.cc
+@@ -75,10 +75,11 @@ void custom_backtrace(void)
+     {
+       for (int x= 0; x < stack_frames; x++) 
+       {
+         bool was_demangled= false;
+ 
++#if USE_DEMANGLE == 1
+         if (USE_DEMANGLE)
+         {
+ #ifdef HAVE_DLFCN_H
+           Dl_info dlinfo;
+           if (dladdr(backtrace_buffer[x], &dlinfo))
+@@ -107,11 +108,11 @@ void custom_backtrace(void)
+                       dlinfo.dli_fname);
+             }
+           }
+ #endif
+         }
+-
++#endif
+         if (was_demangled == false)
+         {
+           fprintf(stderr, "?%d  %p in %s\n", x, backtrace_buffer[x], symbollist[x]);
+         }
+       }
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/libmemcached.inc b/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/libmemcached.inc
new file mode 100644
index 0000000..172443a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/libmemcached.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "open source C/C++ client library and tools for the memcached server"
+DEPENDS = "libevent util-linux"
+SECTION = "libdevel"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=865490941c91ba790f0ea78dec93bd60"
+
+SRC_URI = "http://launchpad.net/libmemcached/1.0/${PV}/+download/libmemcached-${PV}.tar.gz"
+
+TARGET_LDFLAGS += "-luuid"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[sasl] = "--enable-sasl,--disable-sasl,cyrus-sasl"
+
+inherit autotools gettext pkgconfig
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/libmemcached_1.0.15.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/libmemcached_1.0.15.bb
new file mode 100644
index 0000000..18232b4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/libmemcached_1.0.15.bb
@@ -0,0 +1,6 @@
+require libmemcached.inc
+
+SRC_URI += "file://crosscompile.patch"
+
+SRC_URI[md5sum] = "616297a1aedefc52b3f6922eda5d559a"
+SRC_URI[sha256sum] = "dd7e9560029835bddf761a5b4c2339d9e5c7374558659b6c11b2c95e7d3a4325"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/libmemcached_1.0.7.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/libmemcached_1.0.7.bb
new file mode 100644
index 0000000..cdf8415
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libmemcached/libmemcached_1.0.7.bb
@@ -0,0 +1,4 @@
+require libmemcached.inc
+
+SRC_URI[md5sum] = "d59a462a92d296f76bff2d9bc72b2516"
+SRC_URI[sha256sum] = "3efa86c9733eaad55d7119cb16769424e2aa6c22b3392e8f973946fce6678d81"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc/avoid-attr-unless-wanted.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc/avoid-attr-unless-wanted.patch
new file mode 100644
index 0000000..a3ee9cc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc/avoid-attr-unless-wanted.patch
@@ -0,0 +1,20 @@
+--- a/lib/replace/wscript	2015-11-13 16:04:04.000000000 +0100
++++ b/lib/replace/wscript	2015-11-13 16:23:20.000000000 +0100
+@@ -636,8 +636,6 @@
+     if not bld.CONFIG_SET('HAVE_INET_ATON'):     REPLACE_SOURCE += ' inet_aton.c'
+     if not bld.CONFIG_SET('HAVE_INET_NTOP'):     REPLACE_SOURCE += ' inet_ntop.c'
+     if not bld.CONFIG_SET('HAVE_INET_PTON'):     REPLACE_SOURCE += ' inet_pton.c'
+-    if not bld.CONFIG_SET('HAVE_GETXATTR') or bld.CONFIG_SET('XATTR_ADDITIONAL_OPTIONS'):
+-                                                 REPLACE_SOURCE += ' xattr.c'
+ 
+     bld.SAMBA_LIBRARY('replace',
+                       source=REPLACE_SOURCE,
+@@ -648,7 +646,7 @@
+                       # at the moment:
+                       # hide_symbols=bld.BUILTIN_LIBRARY('replace'),
+                       private_library=True,
+-                      deps='crypt dl nsl socket rt attr' + extra_libs)
++                      deps='crypt dl nsl socket rt ' + extra_libs)
+ 
+     bld.SAMBA_SUBSYSTEM('replace-test',
+                       source='''test/testsuite.c test/strptime.c
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.1.6.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.1.6.bb
new file mode 100644
index 0000000..8937311
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.1.6.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Hierarchical, reference counted memory pool system with destructors"
+HOMEPAGE = "http://talloc.samba.org"
+SECTION = "libs"
+LICENSE = "LGPL-3.0+ & GPL-3.0+"
+
+DEPENDS += "libbsd"
+
+SRC_URI = "http://samba.org/ftp/talloc/talloc-${PV}.tar.gz"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=bfccfe952269fff2b407dd11f2f3083b \
+                    file://${COREBASE}/meta/files/common-licenses/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891"
+
+SRC_URI[md5sum] = "707010c6ede5821fd34397f5d9ec6ab8"
+SRC_URI[sha256sum] = "3b8e1a50bacb359d99942e0dd9941cef779ae4b5eb20f138873bd8270cb1d47b"
+
+
+inherit waf-samba
+
+PACKAGECONFIG[attr] = ",,attr"
+
+SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'attr', '', 'file://avoid-attr-unless-wanted.patch', d)}"
+
+S = "${WORKDIR}/talloc-${PV}"
+
+EXTRA_OECONF += "--disable-rpath \
+                 --disable-rpath-install \
+                 --bundled-libraries=NONE \
+                 --builtin-libraries=replace \
+                 --disable-silent-rules \
+                 --with-libiconv=${STAGING_DIR_HOST}${prefix}\
+                "
+DISABLE_STATIC = ""
+
+PACKAGES += "pytalloc pytalloc-dbg pytalloc-dev"
+
+FILES_pytalloc = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/* \
+                  ${libdir}/libpytalloc-util.so.2 \
+                  ${libdir}/libpytalloc-util.so.2.1.1 \
+                 "
+FILES_pytalloc-dbg = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/.debug \
+                      ${libdir}/.debug/libpytalloc-util.so.2.1.1"
+FILES_pytalloc-dev = "${libdir}/libpytalloc-util.so"
+RDEPENDS_pytalloc = "python"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb/do-not-check-xsltproc-manpages.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb/do-not-check-xsltproc-manpages.patch
new file mode 100644
index 0000000..bcc45c9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb/do-not-check-xsltproc-manpages.patch
@@ -0,0 +1,15 @@
+Don't check manpages for xsltproc.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+--- tdb-1.3.0.orig/wscript	2015-04-22 09:52:32.366000222 +0900
++++ tdb-1.3.0/wscript	2015-04-22 09:51:57.720000205 +0900
+@@ -90,7 +90,7 @@ def configure(conf):
+         not conf.env.disable_tdb_mutex_locking):
+         conf.define('USE_TDB_MUTEX_LOCKING', 1)
+ 
+-    conf.CHECK_XSLTPROC_MANPAGES()
++    conf.find_program('xsltproc', var='XSLTPROC')
+ 
+     if not conf.env.disable_python:
+         # also disable if we don't have the python libs installed
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.3.8.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.3.8.bb
new file mode 100644
index 0000000..bf6698a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.3.8.bb
@@ -0,0 +1,31 @@
+SUMMARY = "The tdb library"
+SECTION = "libs"
+LICENSE = "LGPL-3.0+ & GPL-3.0+"
+
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=bfccfe952269fff2b407dd11f2f3083b \
+                    file://${COREBASE}/meta/files/common-licenses/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891"
+
+SRC_URI = "http://samba.org/ftp/tdb/tdb-${PV}.tar.gz \
+           file://do-not-check-xsltproc-manpages.patch"
+
+SRC_URI[md5sum] = "fa4c9e2f59fcf41441285bca5f5ab481"
+SRC_URI[sha256sum] = "0605ac0427eac9c23bf61ebfd8206a07d5ece198498eab1769cd0cfb6e7de6b1"
+
+S = "${WORKDIR}/tdb-${PV}"
+
+inherit waf-samba
+
+EXTRA_OECONF += "--disable-rpath \
+                 --bundled-libraries=NONE \
+                 --builtin-libraries=replace \
+                 --with-libiconv=${STAGING_DIR_HOST}${prefix}\
+                "
+DISABLE_STATIC = ""
+
+PACKAGES += "tdb-tools python-tdb python-tdb-dbg"
+
+FILES_${PN} = "${libdir}/*.so.*"
+FILES_tdb-tools = "${bindir}/*"
+FILES_python-tdb = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/*"
+FILES_python-tdb-dbg = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/.debug/*"
+RDEPENDS_python-tdb = "python"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent/avoid-attr-unless-wanted.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent/avoid-attr-unless-wanted.patch
new file mode 100644
index 0000000..2fc5523
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent/avoid-attr-unless-wanted.patch
@@ -0,0 +1,20 @@
+--- a/lib/replace/wscript	2015-11-18 15:40:19.000000000 +0100
++++ b/lib/replace/wscript	2015-11-18 15:48:09.000000000 +0100
+@@ -618,8 +618,6 @@
+     if not bld.CONFIG_SET('HAVE_INET_ATON'):     REPLACE_SOURCE += ' inet_aton.c'
+     if not bld.CONFIG_SET('HAVE_INET_NTOP'):     REPLACE_SOURCE += ' inet_ntop.c'
+     if not bld.CONFIG_SET('HAVE_INET_PTON'):     REPLACE_SOURCE += ' inet_pton.c'
+-    if not bld.CONFIG_SET('HAVE_GETXATTR') or bld.CONFIG_SET('XATTR_ADDITIONAL_OPTIONS'):
+-                                                 REPLACE_SOURCE += ' xattr.c'
+ 
+     bld.SAMBA_LIBRARY('replace',
+                       source=REPLACE_SOURCE,
+@@ -630,7 +628,7 @@
+                       # at the moment:
+                       # hide_symbols=bld.BUILTIN_LIBRARY('replace'),
+                       private_library=True,
+-                      deps='crypt dl nsl socket rt attr' + extra_libs)
++                      deps='crypt dl nsl socket rt ' + extra_libs)
+ 
+     bld.SAMBA_SUBSYSTEM('replace-test',
+                       source='''test/testsuite.c test/strptime.c
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent/do-not-check-xsltproc-manpages.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent/do-not-check-xsltproc-manpages.patch
new file mode 100644
index 0000000..1ce4dda
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent/do-not-check-xsltproc-manpages.patch
@@ -0,0 +1,16 @@
+Don't check manpages for xsltproc.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp tevent-0.9.21.orig/lib/talloc/wscript tevent-0.9.21/lib/talloc/wscript
+--- tevent-0.9.21.orig/lib/talloc/wscript	2013-09-08 21:24:14.000000000 +0900
++++ tevent-0.9.21/lib/talloc/wscript	2015-04-24 16:28:04.085000230 +0900
+@@ -55,7 +55,7 @@ def configure(conf):
+     if conf.env.standalone_talloc:
+         conf.env.TALLOC_COMPAT1 = Options.options.TALLOC_COMPAT1
+ 
+-    conf.CHECK_XSLTPROC_MANPAGES()
++    conf.find_program('xsltproc', var='XSLTPROC')
+ 
+     if not conf.env.disable_python:
+         # also disable if we don't have the python libs installed
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent_0.9.28.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent_0.9.28.bb
new file mode 100644
index 0000000..d0ad748
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent_0.9.28.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Hierarchical, reference counted memory pool system with destructors"
+HOMEPAGE = "http://tevent.samba.org"
+SECTION = "libs"
+LICENSE = "LGPLv3+"
+
+DEPENDS += "libbsd libtalloc"
+RDEPENDS_python-tevent = "python"
+
+SRC_URI = "http://samba.org/ftp/tevent/tevent-${PV}.tar.gz"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=bfccfe952269fff2b407dd11f2f3083b"
+
+SRC_URI[md5sum] = "945845817918f5cfbe0202d80a7db118"
+SRC_URI[sha256sum] = "04d953379025b1560af5c4ffcce58a3ee84db7aaa09c9f1e3eff5b2945a13529"
+
+inherit waf-samba
+
+PACKAGECONFIG[attr] = ",,attr"
+
+SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'attr', '', 'file://avoid-attr-unless-wanted.patch', d)}"
+
+S = "${WORKDIR}/tevent-${PV}"
+
+EXTRA_OECONF += "--disable-rpath \
+                 --bundled-libraries=NONE \
+                 --builtin-libraries=replace \
+                 --with-libiconv=${STAGING_DIR_HOST}${prefix}\
+                 --without-gettext \
+                "
+DISABLE_STATIC = ""
+
+PACKAGES += "python-tevent python-tevent-dbg"
+
+FILES_python-tevent = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/*"
+FILES_python-tevent-dbg = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/.debug"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm/install-from-buildir.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm/install-from-buildir.patch
new file mode 100644
index 0000000..d1380eb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm/install-from-buildir.patch
@@ -0,0 +1,19 @@
+install binaries from builddir not srcdir.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+--- linux-atm-2.5.2.orig/src/extra/Makefile.am	2010-12-21 05:07:22.000000000 +0800
++++ linux-atm-2.5.2/src/extra/Makefile.am	2014-12-22 10:56:04.458563269 +0800
+@@ -9,9 +9,9 @@ CLEANFILES = pca200e.bin pca200e_ecd.bin
+ 
+ install-exec-hook:
+ 	$(MKDIR_P) $(DESTDIR)/lib/firmware
+-	$(INSTALL_DATA) $(srcdir)/pca200e.bin $(DESTDIR)/lib/firmware
+-	$(INSTALL_DATA) $(srcdir)/pca200e_ecd.bin2 $(DESTDIR)/lib/firmware
+-	$(INSTALL_DATA) $(srcdir)/sba200e_ecd.bin2 $(DESTDIR)/lib/firmware
++	$(INSTALL_DATA) $(builddir)/pca200e.bin $(DESTDIR)/lib/firmware
++	$(INSTALL_DATA) $(builddir)/pca200e_ecd.bin2 $(DESTDIR)/lib/firmware
++	$(INSTALL_DATA) $(builddir)/sba200e_ecd.bin2 $(DESTDIR)/lib/firmware
+ 
+ %.bin %.bin2: %.data
+ 	objcopy -Iihex $< -Obinary $@.gz
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm/link-with-ldflags.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm/link-with-ldflags.patch
new file mode 100644
index 0000000..62fad2a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm/link-with-ldflags.patch
@@ -0,0 +1,38 @@
+LDFLAGS_FOR_BUILD should be required when doing link for qgen.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp linux-atm-2.5.2.orig/configure.in linux-atm-2.5.2/configure.in
+--- linux-atm-2.5.2.orig/configure.in	2010-12-28 23:36:07.000000000 +0800
++++ linux-atm-2.5.2/configure.in	2014-12-22 10:25:23.830510932 +0800
+@@ -66,6 +66,7 @@ else
+ fi
+ AC_SUBST(CC_FOR_BUILD)
+ AC_SUBST(CFLAGS_FOR_BUILD)
++AC_SUBST(LDFLAGS_FOR_BUILD)
+ dnl Add -d flag to bison/yacc to create intermediate .h files
+ YACC="$YACC -d"
+ 
+diff -Nurp linux-atm-2.5.2.orig/src/qgen/Makefile.am linux-atm-2.5.2/src/qgen/Makefile.am
+--- linux-atm-2.5.2.orig/src/qgen/Makefile.am	2010-12-28 22:29:31.000000000 +0800
++++ linux-atm-2.5.2/src/qgen/Makefile.am	2014-12-22 10:23:51.914508318 +0800
+@@ -5,7 +5,7 @@ qgen_SOURCES = common.c common.h file.c
+ qgen_LDADD = -lfl
+ 
+ COMPILE = @CC_FOR_BUILD@ @CFLAGS_FOR_BUILD@
+-LINK = @CC_FOR_BUILD@ @CFLAGS_FOR_BUILD@ -o $@
++LINK = @CC_FOR_BUILD@ @CFLAGS_FOR_BUILD@ @LDFLAGS_FOR_BUILD@ -o $@
+ 
+ #TESTS = $(check_PROGRAMS)
+ 
+diff -Nurp linux-atm-2.5.2.orig/src/qgen/Makefile.in linux-atm-2.5.2/src/qgen/Makefile.in
+--- linux-atm-2.5.2.orig/src/qgen/Makefile.in	2010-12-29 00:06:11.000000000 +0800
++++ linux-atm-2.5.2/src/qgen/Makefile.in	2014-12-22 10:23:51.914508318 +0800
+@@ -106,6 +106,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ LD = @LD@
+ LDFLAGS = @LDFLAGS@
++LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+ LEX = @LEX@
+ LEXLIB = @LEXLIB@
+ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb
new file mode 100644
index 0000000..edfb045
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Drivers and tools to support ATM networking under Linux"
+HOMEPAGE = "http://linux-atm.sourceforge.net/"
+SECTION = "libs"
+LICENSE = "GPL-2.0 & LGPL-2.0"
+
+DEPENDS = "virtual/kernel flex flex-native"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+SRC_URI = "http://nchc.dl.sourceforge.net/project/${BPN}/${BPN}/${PV}/${BPN}-${PV}.tar.gz \
+           file://link-with-ldflags.patch \
+           file://install-from-buildir.patch"
+
+SRC_URI[md5sum] = "d49499368c3cf15f73a05d9bce8824a8"
+SRC_URI[sha256sum] = "9645481a2b16476b59220aa2d6bc5bc41043f291326c9b37581018fbd16dd53a"
+
+LIC_FILES_CHKSUM = "\
+file://COPYING;md5=d928de9537d846935a98af3bbc6e6ee1 \
+file://COPYING.GPL;md5=ac2db169b9309e240555bc77be4f1a33 \
+file://COPYING.LGPL;md5=6e29c688d912da12b66b73e32b03d812"
+
+inherit autotools pkgconfig
+
+# The firmware is explicitly put under /lib when installed.
+#
+
+FILES_${PN} += "/lib/firmware"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools/run-ptest b/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools/run-ptest
new file mode 100644
index 0000000..e67f18e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools/run-ptest
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+sh v4test.sh
+sh v6test.sh
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools/v4test.sh b/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools/v4test.sh
new file mode 100644
index 0000000..5130856
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools/v4test.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+echo "v4test starting:"
+for t in $(find -maxdepth 1 -type f \! -name test\*_v6 -name test\*); do
+  echo "$t";
+  if $t; then
+    echo "PASS: $t"; echo "";
+  else
+    echo "FAIL: $t"; echo "";
+  fi
+  sleep 1;
+done
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools/v6test.sh b/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools/v6test.sh
new file mode 100644
index 0000000..3a667df
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools/v6test.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+echo "v6test starting:"
+for t in $(find -maxdepth 1 -name test\*_v6); do
+  echo "$t";
+  if $t; then
+    echo "PASS: $t"; echo "";
+  else
+    echo "FAIL: $t"; echo "";
+  fi
+  sleep 1;
+done
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.16.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.16.bb
new file mode 100644
index 0000000..d3e6a5d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.16.bb
@@ -0,0 +1,65 @@
+SUMMARY = "The Linux Kernel Stream Control Transmission Protocol (lksctp) project"
+HOMEPAGE = "http://lksctp.org"
+SECTION = "net"
+LICENSE = "LGPLv2.1 & GPLv2"
+
+LIC_FILES_CHKSUM = " \
+    file://COPYING.lib;md5=0a1b79af951c42a9c8573533fbba9a92 \
+    file://COPYING;md5=0c56db0143f4f80c369ee3af7425af6e \
+"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/lksctp/${BP}.tar.gz \
+           file://run-ptest \
+           file://v4test.sh \
+           file://v6test.sh \
+          "
+
+SRC_URI[md5sum] = "708bb0b5a6806ad6e8d13c55b067518e"
+SRC_URI[sha256sum] = "0903dd526b7f30a89d5031aa2c82757612becc38ed7bc6e4f972f8deae351f26"
+
+#| arm-oe-linux-gnueabi-libtool: link: arm-oe-linux-gnueabi-gcc  -march=armv5te -marm -mthumb-interwork --sysroot=/home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/qemuarm -shared  -fPIC -DPIC  .libs/bindx.o .libs/connectx.o .libs/peeloff.o .libs/opt_info.o .libs/addrs.o .libs/sendmsg.o .libs/recvmsg.o    -march=armv5te -marm -mthumb-interwork --sysroot=/home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/qemuarm -O2 -Wl,--version-script=/home/jenkins/oe/world/shr-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/lksctp-tools/1.0.16-r0/lksctp-tools-1.0.16/src/lib/Versions.map -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed   -Wl,-soname -Wl,libsctp.so.1 -o .libs/libsctp.so.1.0.16
+#| /home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.0/ld: error: symbol sctp_connectx has undefined version
+#| collect2: error: ld returned 1 exit status
+#| make[4]: *** [libsctp.la] Error 1
+PNBLACKLIST[lksctp-tools] ?= "${@base_contains('DISTRO_FEATURES', 'ld-is-gold', "BROKEN: fails to link against sctp_connectx symbol", '', d)}"
+
+S = "${WORKDIR}/${BP}"
+
+BBCLASSEXTEND = "native"
+
+inherit autotools pkgconfig binconfig ptest
+
+do_install_ptest () {
+	install -m 0755 ${WORKDIR}/v4test.sh ${D}${PTEST_PATH}
+	install -m 0755 ${WORKDIR}/v6test.sh ${D}${PTEST_PATH}
+	for testcase in `find ${B}/src/apps/.libs ${B}/src/func_tests/.libs -maxdepth 1 -type f -executable`; do
+		install $testcase ${D}${PTEST_PATH}
+	done
+}
+
+SOLIBVERSION="${PV}"
+SOLIBMAJORVERSION="1"
+
+PACKAGES =+ "${PN}-withsctp ${PN}-utils"
+
+FILES_${PN} = " \
+    ${libdir}/libsctp.so.${SOLIBVERSION} \
+    ${libdir}/libsctp.so.${SOLIBMAJORVERSION} \
+"
+
+FILES_${PN}-withsctp = " \
+    ${libdir}/lksctp-tools/libwithsctp.so.${SOLIBVERSION} \
+    ${libdir}/lksctp-tools/libwithsctp.so.${SOLIBMAJORVERSION} \
+"
+
+FILES_${PN}-dev += " \
+    ${libdir}/libsctp.so \
+    ${libdir}/lksctp-tools/libwithsctp.so \
+    ${datadir}/lksctp-tools/*.c \
+    ${datadir}/lksctp-tools/*.h \
+"
+
+FILES_${PN}-utils = "${bindir}/*"
+
+RRECOMMENDS_${PN}-utils += "kernel-module-sctp"
+RRECOMMENDS_${PN}-ptest += "kernel-module-sctp"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/lowpan-tools/lowpan-tools/no-help2man.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/lowpan-tools/lowpan-tools/no-help2man.patch
new file mode 100644
index 0000000..9ecd707
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/lowpan-tools/lowpan-tools/no-help2man.patch
@@ -0,0 +1,41 @@
+Disable building manpages so that make install doesn't fail due to lack of help2man
+
+Upstream-Status: Inappropriate [config]
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 46c4017..d6ed312 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -9,11 +9,6 @@ izcoordinator_DESC = "simple coordinator for IEEE 802.15.4 network"
+ iz_DESC = "configure an IEEE 802.15.4 interface"
+ izchat_DESC = "simple chat program using IEEE 802.15.4"
+ 
+-if MANPAGES
+-dist_man_MANS = $(manpages)
+-endif
+-EXTRA_DIST = $(manpages)
+-
+ izattach_SOURCES = serial.c
+ 
+ iz_SOURCES = iz.c iz-common.c iz-mac.c iz-phy.c
+@@ -27,18 +22,6 @@ izcoordinator_LDADD = ../addrdb/libaddrdb.la $(LDADD) $(NL_LIBS) $(LEXLIB)
+ iz_CFLAGS = $(AM_CFLAGS) $(NL_CFLAGS) -D_GNU_SOURCE
+ iz_LDADD = $(LDADD) $(NL_LIBS)
+ 
+-izattach.8: $(izattach_SOURCES) $(top_srcdir)/configure.ac
+-	-$(HELP2MAN) -o $@ -s 8 -N -n $(izattach_DESC) $(builddir)/izattach
+-
+-izcoordinator.8: $(izcoordinator_SOURCES) $(top_srcdir)/configure.ac
+-	-$(HELP2MAN) -o $@ -s 8 -N -n $(izcoordinator_DESC) $(builddir)/izcoordinator
+-
+-iz.8: $(iz_SOURCES) $(top_srcdir)/configure.ac
+-	-$(HELP2MAN) -o $@ -s 8 -N -n $(iz_DESC) $(builddir)/iz
+-
+-izchat.1: $(izchat_SOURCES) $(top_srcdir)/configure.ac
+-	-$(HELP2MAN) -o $@ -s 1 -N -n $(izchat_DESC) $(builddir)/izchat
+-
+ install-data-hook:
+ 	$(mkinstalldirs) $(DESTDIR)`dirname $(leasefile)`
+ 	$(mkinstalldirs) $(DESTDIR)`dirname $(pidfile)`
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/lowpan-tools/lowpan-tools_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/lowpan-tools/lowpan-tools_git.bb
new file mode 100644
index 0000000..b1bd926
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/lowpan-tools/lowpan-tools_git.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Utilities for managing the Linux LoWPAN stack"
+DESCRIPTION = "This is a set of utils to manage the Linux LoWPAN stack. \
+The LoWPAN stack aims for IEEE 802.15.4-2003 (and for lesser extent IEEE 802.15.4-2006) compatibility."
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "flex-native bison-native libnl python"
+
+PV = "0.3.1+git${SRCPV}"
+SRC_URI = "git://git.code.sf.net/p/linux-zigbee/linux-zigbee \
+           file://no-help2man.patch"
+SRCREV = "38f42dbfce9e13629263db3bd3b81f14c69bb733"
+
+S = "${WORKDIR}/git"
+
+inherit autotools python-dir pkgconfig
+
+CACHED_CONFIGUREVARS += "am_cv_python_pythondir=${PYTHON_SITEPACKAGES_DIR}/lowpan-tools"
+
+do_install_append() {
+	rmdir ${D}${localstatedir}/run
+}
+
+FILES_${PN}-dbg += "${libexecdir}/lowpan-tools/.debug/"
+
+PACKAGES =+ "${PN}-python"
+FILES_${PN}-python = "${libdir}/python*"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/macchanger/macchanger_1.5.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/macchanger/macchanger_1.5.0.bb
new file mode 100644
index 0000000..a90177f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/macchanger/macchanger_1.5.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Tool to view/change network interface MAC addresses"
+DESCRIPTION = "A GNU/Linux utility for viewing/manipulating the MAC address of network interfaces."
+HOMEPAGE = "http://www.alobbs.com/macchanger"
+LICENSE  = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+SECTION = "net"
+
+SRC_URI  = "${GNU_MIRROR}/macchanger/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "79b7cdaeca3d8ebafa764c4b0dd03ab7"
+SRC_URI[sha256sum] = "d44bfa27cb29c5a718627cb3ef3aa42eb5130426545eb2031120826cd73fa8fe"
+
+FILES_${PN} = " \
+    ${bindir}/${BPN} \
+    ${datadir}/${BPN}/wireless.list \
+    ${datadir}/${BPN}/OUI.list \
+"
+
+FILES_${PN}-doc = " \
+    ${datadir}/info \
+    ${datadir}/man \
+"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/memcached/memcached/configure.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/memcached/memcached/configure.patch
new file mode 100644
index 0000000..7001a0e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/memcached/memcached/configure.patch
@@ -0,0 +1,13 @@
+Index: memcached-1.4.17/configure.ac
+===================================================================
+--- memcached-1.4.17.orig/configure.ac	2013-12-20 21:44:49.000000000 +0000
++++ memcached-1.4.17/configure.ac	2014-07-18 07:17:00.593499483 +0000
+@@ -4,7 +4,7 @@
+ AC_INIT(memcached, VERSION_NUMBER, memcached@googlegroups.com)
+ AC_CANONICAL_SYSTEM
+ AC_CONFIG_SRCDIR(memcached.c)
+-AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
++AM_INIT_AUTOMAKE([foreign])
+ AM_CONFIG_HEADER(config.h)
+ 
+ AC_PROG_CC
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/memcached/memcached/memcached-add-hugetlbfs-check.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/memcached/memcached/memcached-add-hugetlbfs-check.patch
new file mode 100644
index 0000000..544b840
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/memcached/memcached/memcached-add-hugetlbfs-check.patch
@@ -0,0 +1,32 @@
+memcached: add knob to detect whether hugetlbfs are checked
+
+Add knob to detect whether hugetlbfs are checked or not.
+
+Upstream-Status: Pending
+
+Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
+---
+ configure.ac | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 7f22f21..21691b9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -314,7 +314,12 @@ fi
+ dnl ----------------------------------------------------------------------------
+ 
+ AC_SEARCH_LIBS(umem_cache_create, umem)
+-AC_SEARCH_LIBS(gethugepagesizes, hugetlbfs)
++AC_ARG_ENABLE(hugetlbfs,
++  [AS_HELP_STRING([--enable-hugetlbfs],[Enable hugetlbfs])])
++
++if test "x$enable_hugetlbfs" = "xyes"; then
++  AC_SEARCH_LIBS(gethugepagesizes, hugetlbfs)
++fi
+ 
+ AC_HEADER_STDBOOL
+ AH_BOTTOM([#if HAVE_STDBOOL_H
+-- 
+1.8.3.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.4.17.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.4.17.bb
new file mode 100644
index 0000000..293f8d4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.4.17.bb
@@ -0,0 +1,53 @@
+SUMMARY = "A high-performance memory object caching system"
+DESCRIPTION = "\
+ memcached optimizes specific high-load serving applications that are designed \
+ to take advantage of its versatile no-locking memory access system. Clients \
+ are available in several different programming languages, to suit the needs \
+ of the specific application. Traditionally this has been used in mod_perl \
+ apps to avoid storing large chunks of data in Apache memory, and to share \
+ this burden across several machines."
+SECTION = "web"
+HOMEPAGE = "http://memcached.org/"
+LICENSE = "BSD-3-Clause"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=7e5ded7363d335e1bb18013ca08046ff"
+
+inherit autotools
+
+DEPENDS += "libevent"
+RDEPENDS_${PN} += "perl perl-module-posix perl-module-autoloader \
+    perl-module-tie-hash bash \
+    "
+
+SRC_URI = "http://www.memcached.org/files/${BP}.tar.gz \
+           file://configure.patch \
+           file://memcached-add-hugetlbfs-check.patch"
+
+# set the same COMPATIBLE_HOST as libhugetlbfs
+COMPATIBLE_HOST = '(i.86|x86_64|powerpc|powerpc64|arm).*-linux'
+
+SRC_URI[md5sum] = "46402dfbd7faadf6182283dbbd18b1a6"
+SRC_URI[sha256sum] = "d9173ef6d99ba798c982ea4566cb4f0e64eb23859fdbf9926a89999d8cdc0458"
+
+python __anonymous () {
+    endianness = d.getVar('SITEINFO_ENDIANNESS', True)
+    if endianness == 'le':
+        d.appendVar('EXTRA_OECONF', " ac_cv_c_endian=little")
+    else:
+        d.appendVar('EXTRA_OECONF', " ac_cv_c_endian=big")
+}
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[hugetlbfs] = "--enable-hugetlbfs, --disable-hugetlbfs, libhugetlbfs"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "memcached"
+INITSCRIPT_PARAMS = "defaults"
+
+do_install_append() {
+    install -D -m 755 ${S}/scripts/memcached-init ${D}${sysconfdir}/init.d/memcached
+    mkdir -p ${D}/usr/share/memcached/scripts
+    install -m 755 ${S}/scripts/memcached-tool ${D}/usr/share/memcached/scripts
+    install -m 755 ${S}/scripts/start-memcached ${D}/usr/share/memcached/scripts
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/mtr/mtr_0.86.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/mtr/mtr_0.86.bb
new file mode 100644
index 0000000..7b73791
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/mtr/mtr_0.86.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Combined traceroute and ping utility"
+DESCRIPTION = "mtr combines the functionality of the 'traceroute' and 'ping' programs in a single network diagnostic tool."
+HOMEPAGE = "http://www.bitwizard.nl/mtr/"
+SECTION = "net"
+DEPENDS = "ncurses"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
+                    file://mtr.c;beginline=5;endline=16;md5=af1fafbbfa1bfd48af839f4bb3221106"
+
+SRC_URI = "ftp://ftp.bitwizard.nl/mtr/mtr-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "8d63592c9d4579ef20cf491b41843eb2"
+SRC_URI[sha256sum] = "c5d948920b641cc35f8b380fc356ddfe07cce6a9c6474afe242fc58113f28c06"
+
+inherit autotools
+
+EXTRA_OECONF = "--without-gtk"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nbd/nbd_3.11.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/nbd/nbd_3.11.bb
new file mode 100644
index 0000000..2ad75bd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nbd/nbd_3.11.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Network Block Device"
+HOMEPAGE = "http://nbd.sourceforge.net"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "glib-2.0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "73d11644a28b9f335292cdb3bdc4b74b"
+SRC_URI[sha256sum] = "14420f74cb16dc609a9302ed1efd653064bed7a8357e9d73daabc33608e3f2a0"
+
+inherit autotools pkgconfig
+
+PACKAGES = "${PN}-client ${PN}-server ${PN}-dbg ${PN}-trdump ${PN}-doc"
+
+FILES_${PN}-client = "${sbindir}/${BPN}-client"
+FILES_${PN}-server = "${bindir}/${BPN}-server"
+FILES_${PN}-trdump = "${bindir}/${BPN}-trdump"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_1.0.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_1.0.2.bb
new file mode 100644
index 0000000..bea5e13
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_1.0.2.bb
@@ -0,0 +1,58 @@
+DESCRIPTION = "This package includes some useful diagnostics tools for \
+IPv6 networks, including ndisc6, rdisc6, tcptraceroute6 and traceroute6."
+SECTION = "net"
+HOMEPAGE = "http://www.remlab.net/ndisc6/"
+LICENSE = "GPL-2.0"
+
+# The tcptraceroute6 and tracert6 commands depend on rltraceroute6 to
+# perform the actual trace operation.
+RDEPENDS_${PN}-tcptraceroute6 = "${PN}-rltraceroute6"
+RDEPENDS_${PN}-tracert6 = "${PN}-rltraceroute6"
+RDEPENDS_${PN}-misc += "perl"
+
+SRC_URI = "http://www.remlab.net/files/ndisc6/ndisc6-${PV}.tar.bz2 \
+"
+SRC_URI[md5sum] = "50cb4c19606cf6ff2b7388e71832f579"
+SRC_URI[sha256sum] = "6acec8a0cb9efa3ac98456f46c3016aeec0598b0c7557c95242b5228ad62ca7a"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+inherit autotools gettext
+
+ALLOW_EMPTY_${PN} = "1"
+
+# Split into seperate packages since we normal don't want them all
+# The main package is left empty and therefore not created.
+PACKAGES += "${PN}-ndisc6 ${PN}-tcpspray6 ${PN}-rdisc6 \
+    ${PN}-tcptraceroute6 ${PN}-rltraceroute6 \
+    ${PN}-tracert6 ${PN}-rdnssd ${PN}-misc"
+FILES_${PN}            = ""
+FILES_${PN}-ndisc6        = "${bindir}/ndisc6"
+FILES_${PN}-tcpspray6         = "${bindir}/tcpspray6"
+FILES_${PN}-rdisc6        = "${bindir}/rdisc6"
+FILES_${PN}-tcptraceroute6    = "${bindir}/tcptraceroute6"
+FILES_${PN}-rltraceroute6    = "${bindir}/rltraceroute6"
+FILES_${PN}-tracert6        = "${bindir}/tracert6"
+FILES_${PN}-rdnssd        = "${sbindir}/rdnssd ${sysconfdir}/rdnssd"
+FILES_${PN}-misc                = "${bindir}/dnssort ${bindir}/name2addr ${bindir}/tcpspray ${bindir}/addr2name"
+
+DESCRIPTION_${PN}-ndisc6    = "ICMPv6 Neighbor Discovery tool. \
+Performs IPv6 neighbor discovery in userland. Replaces arping from the \
+IPv4 world."
+DESCRIPTION_${PN}-rdisc6    = "ICMPv6 Router Discovery tool. \
+Queries IPv6 routers on the network for advertised prefixes. Can be used \
+to detect rogue IPv6 routers, monitor legitimate IPv6 routers."
+DESCRITPION_${PN}-tcpspray6    = "Performs bandwidth measurements of TCP \
+sessions between the local system and a remote echo server in either IPv6 \
+or IPv4."
+
+DESCRITPION_${PN}-rdnssd       = "Daemon to autoconfigure the list of DNS \
+servers through slateless IPv6 autoconfiguration."
+
+do_install_append () {
+    rm -rf ${D}${localstatedir}
+    # Enable SUID bit for applications that need it
+    chmod 4555 ${D}${bindir}/rltraceroute6
+    chmod 4555 ${D}${bindir}/ndisc6
+    chmod 4555 ${D}${bindir}/rdisc6
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat-openbsd_1.105.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat-openbsd_1.105.bb
new file mode 100644
index 0000000..89a646f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat-openbsd_1.105.bb
@@ -0,0 +1,42 @@
+require netcat.inc
+SUMMARY = "OpenBSD Netcat"
+HOMEPAGE = "http://ftp.debian.org"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://../debian/copyright;md5=ee6bbaacb5db5f2973818f0902c3ae6f"
+
+DEPENDS += "glib-2.0 libbsd"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/n/netcat-openbsd/netcat-openbsd_${PV}.orig.tar.gz;name=netcat \
+           ${DEBIAN_MIRROR}/main/n/netcat-openbsd/netcat-openbsd_${PV}-7.debian.tar.gz;name=netcat-patch"
+
+SRC_URI[netcat.md5sum] = "7e67b22f1ad41a1b7effbb59ff28fca1"
+SRC_URI[netcat.sha256sum] = "40653fe66c1516876b61b07e093d826e2a5463c5d994f1b7e6ce328f3edb211e"
+SRC_URI[netcat-patch.md5sum] = "e914f8eb7eda5c75c679dd77787ac76b"
+SRC_URI[netcat-patch.sha256sum] = "eee759327ffea293e81d0dde67921b7fcfcad279ffd7a2c9d037bbc8f882b363"
+
+S = "${WORKDIR}/${BPN}-${PV}"
+
+do_configure[noexec] = "1"
+
+netcat_do_patch() {
+    cd ${S}
+    quilt pop -a || true
+    QUILT_PATCHES=${WORKDIR}/debian/patches QUILT_SERIES=${WORKDIR}/debian/patches/series quilt push -a
+}
+
+python do_patch() {
+    bb.build.exec_func('netcat_do_patch', d)
+    bb.build.exec_func('patch_do_patch', d)
+}
+
+do_compile() {
+    cd ${S}
+    pkgrel=4
+    oe_runmake CFLAGS="$CFLAGS -DDEBIAN_VERSION=\"\\\"${pkgrel}\\\"\""
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 755 ${S}/nc ${D}${bindir}/nc.${BPN}
+}
+ALTERNATIVE_PRIORITY = "50"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat.inc b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat.inc
new file mode 100644
index 0000000..91a24a1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat.inc
@@ -0,0 +1,15 @@
+SUMMARY = "GNU Netcat"
+HOMEPAGE = "http://netcat.sourceforge.net"
+DESCRIPTION = "A simple Unix utility which reads and writes data across network \
+connections using TCP or UDP protocol.  It is designed to be a reliable \
+'back-end' tool that can be used directly or easily driven by other \
+programs and scripts. At the same time it is a feature-rich network \
+debugging and exploration tool, since it can create almost any kind of \
+connection you would need and has several interesting built-in \
+capabilities."
+
+SECTION = "net"
+inherit update-alternatives gettext
+
+ALTERNATIVE_${PN} = "nc"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat/make-netcat_flag_count_work.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat/make-netcat_flag_count_work.patch
new file mode 100644
index 0000000..dd1938a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat/make-netcat_flag_count_work.patch
@@ -0,0 +1,34 @@
+Make netcat_flag_count() return positive value
+
+C language has 3 distinct char types:
+         char
+         unsigned char
+         signed char
+A char has the same range of values as signed char on X86,
+but same as unsigned char on PPC which made netcat_flag_count
+return a negative value, now we force variable c as signed char
+to make netcat_flag_count return positive value.
+
+Upstream-Status: Pending
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ src/flagset.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/flagset.c b/src/flagset.c
+index 442b634..54ac898 100644
+--- a/src/flagset.c
++++ b/src/flagset.c
+@@ -134,7 +134,7 @@ unsigned short netcat_flag_next(unsigned short port)
+ 
+ int netcat_flag_count(void)
+ {
+-  register char c;
++  register signed char c;
+   register int i;
+   int ret = 0;
+ 
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat/netcat-locale_h.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat/netcat-locale_h.patch
new file mode 100644
index 0000000..5cbcb08
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat/netcat-locale_h.patch
@@ -0,0 +1,25 @@
+Apparently somewhere along the line HAVE_LOCALE_H was changed to
+HAVE_LC_MESSAGES.  Adjust netcat to match.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: netcat-0.7.1/src/intl.h
+===================================================================
+--- netcat-0.7.1.orig/src/intl.h
++++ netcat-0.7.1/src/intl.h
+@@ -25,11 +25,11 @@
+ #ifdef ENABLE_NLS
+ #include <libintl.h>
+ 
+-#ifdef HAVE_LOCALE_H
++#if defined(HAVE_LC_MESSAGES) || defined(HAVE_LOCALE_H)
+ #include <locale.h>
+ #else
+ #error You must have locale.h in your system
+-#endif	/* HAVE_LOCALE_H */
++#endif	/* HAVE_LC_MESSAGES || HAVE_LOCALE_H */
+ 
+ /* Our dear (and very common) gettext macros */
+ #define _(String) gettext(String)
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat/obsolete_autoconf_macros.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat/obsolete_autoconf_macros.patch
new file mode 100644
index 0000000..9b0ed58
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat/obsolete_autoconf_macros.patch
@@ -0,0 +1,32 @@
+Replace obsoleted AM_CONFIG_HEADER flagged by autoconf 2.69
+locale.h check was picked from old gettext macros but with new aclocal
+it picks the right 0.18 gettext.m4 and does not get the check
+therefore we explicitly add it to configure.ac
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: netcat-0.7.1/configure.ac
+===================================================================
+--- netcat-0.7.1.orig/configure.ac	2013-01-18 01:30:01.928069739 -0800
++++ netcat-0.7.1/configure.ac	2013-01-18 01:32:50.568073009 -0800
+@@ -26,8 +26,7 @@
+ AC_PREREQ(2.53)
+ 
+ dnl without this order in this file, automake will be confused!
+-AM_CONFIG_HEADER(config.h)
+-
++AC_CONFIG_HEADERS(config.h)
+ dnl check for programs.  first the c compiler.
+ AC_PROG_CC
+ AC_PROG_CPP
+@@ -56,7 +55,7 @@
+ AC_LBL_LIBRARY_NET
+ 
+ dnl Fortunately we have Solaris...
+-AC_CHECK_HEADERS(sys/sockio.h)
++AC_CHECK_HEADERS(sys/sockio.h locale.h)
+ 
+ AC_CHECK_FUNCS(srandom random)
+ if test $ac_cv_func_srandom = no; then
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
new file mode 100644
index 0000000..d961af5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
@@ -0,0 +1,22 @@
+require netcat.inc
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+PR = "r3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/netcat/netcat-${PV}.tar.bz2 \
+           file://obsolete_autoconf_macros.patch \
+           file://netcat-locale_h.patch \
+           file://make-netcat_flag_count_work.patch \
+"
+
+SRC_URI[md5sum] = "0a29eff1736ddb5effd0b1ec1f6fe0ef"
+SRC_URI[sha256sum] = "b55af0bbdf5acc02d1eb6ab18da2acd77a400bafd074489003f3df09676332bb"
+
+inherit autotools
+
+do_install_append() {
+    install -d ${D}${bindir}
+    mv ${D}${bindir}/nc ${D}${bindir}/nc.${BPN}
+}
+ALTERNATIVE_PRIORITY = "100"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netcf/netcf_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/netcf/netcf_git.bb
new file mode 100644
index 0000000..8fb69bb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netcf/netcf_git.bb
@@ -0,0 +1,66 @@
+SUMMARY = "netcf"
+DESCRIPTION = "netcf is a cross-platform network configuration library."
+HOMEPAGE = "https://fedorahosted.org/netcf/"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=bbb461211a33b134d42ed5ee802b37ff"
+
+SRCREV = "9158278ad35b46ce9a49b2e887483c6d8c287994"
+PV = "0.2.8+git${SRCPV}"
+
+SRC_URI = "git://git.fedorahosted.org/netcf.git;protocol=git \
+"
+
+DEPENDS += "augeas libnl libxslt libxml2 gnulib"
+
+S = "${WORKDIR}/git"
+
+inherit gettext autotools pkgconfig systemd
+
+EXTRA_OECONF_append_class-target = " --with-driver=redhat"
+
+PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd", "", d)}"
+PACKAGECONFIG[systemd] = "--with-sysinit=systemd,--with-sysinit=initscripts,"
+
+do_configure_prepend() {
+    currdir=`pwd`
+    cd ${S}
+
+    # avoid bootstrap cloning gnulib on every configure
+    # the rmdir acts as a sentinel to let us know if the pkg ever changes
+    # the path for GNUlib or populates the dir making it non-empty.
+    rmdir ${S}/.gnulib
+    cp -rf ${STAGING_DATADIR}/gnulib ${S}/.gnulib
+
+    # --force to avoid errors on reconfigure e.g if recipes changed we depend on
+    # | bootstrap: running: libtoolize --quiet
+    # | libtoolize:   error: 'libltdl/COPYING.LIB' exists: use '--force' to overwrite
+    # | ...
+    ./bootstrap --force --no-git --gnulib-srcdir=.gnulib
+
+    cd $currdir
+}
+
+do_install_append() {
+    if ${@base_contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+       install -d ${D}${systemd_unitdir}/system
+       if [ -d "${D}${libdir}/systemd/system" ]; then
+           mv ${D}${libdir}/systemd/system/* ${D}${systemd_unitdir}/system/
+           rm -rf ${D}${libdir}/systemd/
+       else
+           mv ${D}${nonarch_libdir}/systemd/system/* ${D}${systemd_unitdir}/system/
+           rm -rf ${D}${nonarch_libdir}/systemd/
+       fi
+    else
+       mv ${D}${sysconfdir}/rc.d/init.d/ ${D}${sysconfdir}
+       rm -rf ${D}${sysconfdir}/rc.d/
+    fi
+}
+
+FILES_${PN} += " \
+        ${libdir} \
+        ${nonarch_libdir} \
+        "
+
+SYSTEMD_SERVICE_${PN} = "netcf-transaction.service"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/files/cpu_set.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/files/cpu_set.patch
new file mode 100644
index 0000000..434b790
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/files/cpu_set.patch
@@ -0,0 +1,30 @@
+Subject: [PATCH] netperf: fix CPU_SETSIZE to build with eglibc
+
+Upstream-Status: Pending
+
+Signed-off-by: Xin Ouyang <Xin.Ouyang@windriver.com>
+---
+ src/netlib.c |    7 ++++++-
+ 1 files changed, 6 insertions(+), 1 deletions(-)
+
+diff --git a/src/netlib.c b/src/netlib.c
+index 206e002..e33aae6 100644
+--- a/src/netlib.c
++++ b/src/netlib.c
+@@ -2265,7 +2265,12 @@ bind_to_specific_processor(int processor_affinity, int use_cpu_map)
+      fall-back on what we had before, which is to use just the size of
+      an unsigned long. raj 2006-09-14 */
+ 
+-#if defined(__CPU_SETSIZE)
++#if defined(CPU_SETSIZE)
++#define NETPERF_CPU_SETSIZE CPU_SETSIZE
++#define NETPERF_CPU_SET(cpu, cpusetp)  CPU_SET(cpu, cpusetp)
++#define NETPERF_CPU_ZERO(cpusetp)      CPU_ZERO (cpusetp)
++  typedef cpu_set_t netperf_cpu_set_t;
++#elif defined(__CPU_SETSIZE)
+ #define NETPERF_CPU_SETSIZE __CPU_SETSIZE
+ #if defined(__CPU_SET_S)
+ #define NETPERF_CPU_SET(cpu, cpusetp)  __CPU_SET_S(cpu, sizeof (cpu_set_t), cpusetp)
+-- 
+1.7.1.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/files/init b/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/files/init
new file mode 100644
index 0000000..8ba2a63
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/files/init
@@ -0,0 +1,62 @@
+#!/bin/sh
+#
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian GNU/Linux by Ian Murdock <imurdock@gnu.org>.
+# Modified for Debian by Christoph Lameter <clameter@debian.org>
+# Modified for openembedded by Bruno Randolf <bruno.randolf@4g-systems.biz>
+
+### BEGIN INIT INFO
+# Provides:             netperf
+# Required-Start:       $remote_fs $local_fs $time
+# Required-Stop:        $remote_fs $local_fs $time
+# Should-Start:         $network $named
+# Should-Stop:          $network $named
+# Default-Start:        2 3 4 5
+# Default-Stop:         0 1 6
+# Short-Description:    network benchmark
+### END INIT INFO
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+DAEMON=/usr/sbin/netserver
+
+test -f $DAEMON || exit 0
+
+case "$1" in
+  start)
+    echo -n "Starting network benchmark server: netserver"
+    start-stop-daemon -S -x $DAEMON > /dev/null 2>&1 
+    echo "."
+    ;;
+  stop)
+    echo -n "Stopping network benchmark server: netserver"
+    start-stop-daemon -K -x $DAEMON
+    echo "."
+    ;;
+  #reload)
+    #
+    # If the daemon can reload its config files on the fly
+    # for example by sending it SIGHUP, do it here.
+    #
+    # If the daemon responds to changes in its config file
+    # directly anyway, make this a do-nothing entry.
+    #
+    # start-stop-daemon --stop --signal 1 --verbose --exec $DAEMON
+    # ;;
+  restart|force-reload)
+    #
+    # If the "reload" option is implemented, move the "force-reload"
+    # option to the "reload" entry above. If not, "force-reload" is
+    # just the same as "restart".
+    #
+    start-stop-daemon -K -x $DAEMON
+    sleep 1
+    start-stop-daemon -S -x $DAEMON
+    ;;
+  *)
+    echo "Usage: /etc/init.d/netperf {start|stop|restart|force-reload}"
+    exit 1
+    ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/files/vfork.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/files/vfork.patch
new file mode 100644
index 0000000..eff98bf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/files/vfork.patch
@@ -0,0 +1,58 @@
+Subject: [PATCH] netperf: fix vfork/fork
+
+Upstream-Status: Pending
+
+Signed-off-by: Xin Ouyang <Xin.Ouyang@windriver.com>
+---
+ src/netserver.c |   12 ++++++++++--
+ 1 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/netserver.c b/src/netserver.c
+index 379a106..f6a8b09 100644
+--- a/src/netserver.c
++++ b/src/netserver.c
+@@ -1020,7 +1020,7 @@ process_requests()
+ void
+ spawn_child() {
+ 
+-#if defined(HAVE_FORK)
++#if defined(HAVE_FORK) || defined(HAVE_VFORK)
+ 
+   if (debug) {
+     fprintf(where,
+@@ -1038,7 +1038,11 @@ spawn_child() {
+ 
+   signal(SIGCLD,SIG_IGN);
+ 
++#if defined(HAVE_FORK)
+   switch (fork()) {
++#else
++  switch (vfork()) {
++#endif
+   case -1:
+     fprintf(where,
+ 	    "%s: fork() error %s (errno %d)\n",
+@@ -1405,7 +1409,7 @@ scan_netserver_args(int argc, char *argv[]) {
+ 
+ void
+ daemonize() {
+-#if defined(HAVE_FORK)
++#if defined(HAVE_FORK) || defined(HAVE_VFORK)
+ 
+   if (debug) {
+     fprintf(where,
+@@ -1419,7 +1423,11 @@ daemonize() {
+   fflush(stdout);
+   fflush(stderr);
+ 
++#if defined(HAVE_FORK)
+   switch (fork()) {
++#else
++  switch (vfork()) {
++#endif
+   case -1:
+     fprintf(stderr,
+ 	    "%s: fork() error %s (errno %d)\n",
+-- 
+1.7.1.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/netperf_2.6.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/netperf_2.6.0.bb
new file mode 100644
index 0000000..760bab0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/netperf/netperf_2.6.0.bb
@@ -0,0 +1,66 @@
+SUMMARY = "A networking benchmarking tool"
+DESCRIPTION = "Network performance benchmark including tests for TCP, UDP, sockets, ATM and more."
+SECTION = "net"
+HOMEPAGE = "http://www.netperf.org/"
+LICENSE = "netperf"
+LICENSE_FLAGS = "non-commercial"
+
+
+SRC_URI="ftp://ftp.netperf.org/netperf/archive/netperf-${PV}.tar.bz2 \
+         file://cpu_set.patch \
+         file://vfork.patch \
+         file://init"
+SRC_URI[md5sum] = "9654ffdfd4c4f2c93ce3733cd9ed9236"
+SRC_URI[sha256sum] = "cd8dac710d4273d29f70e8dbd09353a6362ac58a11926e0822233c0cb230323a"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a0ab17253e7a3f318da85382c7d5d5d6"
+
+inherit update-rc.d autotools
+
+S = "${WORKDIR}/netperf-${PV}"
+
+# cpu_set.patch plus _GNU_SOURCE makes src/netlib.c compile with CPU_ macros
+CFLAGS_append = " -DDO_UNIX -DDO_IPV6 -D_GNU_SOURCE"
+
+# set the "_FILE_OFFSET_BITS" preprocessor symbol to 64 to support files
+# larger than 2GB
+CFLAGS_append = "${@base_contains('DISTRO_FEATURES', 'largefile', \
+    ' -D_FILE_OFFSET_BITS=64', '', d)}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[sctp] = "--enable-sctp,--disable-sctp,lksctp-tools,"
+
+# autotools.bbclass attends to include m4 files with path depth <= 2 by
+# "find ${S} -maxdepth 2 -name \*.m4", so move m4 files from m4/m4.
+do_configure_prepend() {
+    test -d ${S}/m4/m4 && mv -f ${S}/m4/m4 ${S}/m4-files
+}
+
+do_install() {
+    sed -e 's#/usr/sbin/#${sbindir}/#g' -i ${WORKDIR}/init
+
+    install -d ${D}${sbindir} ${D}${bindir} ${D}${sysconfdir}/init.d
+    install -m 4755 src/netperf ${D}${bindir}
+    install -m 4755 src/netserver ${D}${sbindir}
+    install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/netperf
+
+    # man
+    install -d ${D}${mandir}/man1/
+    install -m 0644 ${S}/doc/netserver.man ${D}${mandir}/man1/netserver.1
+    install -m 0644 ${S}/doc/netperf.man ${D}${mandir}/man1/netperf.1
+
+    # move scripts to examples directory
+    install -d ${D}${docdir}/netperf/examples
+    install -m 0644 ${S}/doc/examples/*_script ${D}${docdir}/netperf/examples/
+
+    # docs ..
+    install -m 0644 ${S}/COPYING ${D}${docdir}/netperf
+    install -m 0644 ${S}/Release_Notes ${D}${docdir}/netperf
+    install -m 0644 ${S}/README ${D}${docdir}/netperf
+    install -m 0644 ${S}/doc/netperf_old.ps ${D}${docdir}/netperf
+}
+
+RRECOMMENDS_${PN} += "${@base_contains('PACKAGECONFIG', 'sctp', 'kernel-module-sctp', '', d)}"
+
+INITSCRIPT_NAME="netperf"
+INITSCRIPT_PARAMS="defaults"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nis/files/ypbind.init b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/files/ypbind.init
new file mode 100644
index 0000000..669c19c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/files/ypbind.init
@@ -0,0 +1,107 @@
+#! /bin/sh
+# Copyright (c) 2004 Author: Thorsten Kukuk <kukuk@suse.de>
+#
+# /etc/init.d/ypbind
+#
+#   and symbolic its link
+#
+# /usr/sbin/rcypbind
+#
+# System startup script for the ypbind daemon
+#
+### BEGIN INIT INFO
+# Provides: ypbind
+# Required-Start: $remote_fs $portmap
+# Should-Start: ypserv slpd
+# Required-Stop: portmap
+# Default-Start: 3 5
+# Default-Stop: 0 1 2 6
+# Short-Description: Start ypbind (necessary for a NIS client)
+# Description: ypbind finds the server for NIS domains and maintains
+#	the NIS binding information.
+### END INIT INFO
+
+# Need to use status function
+. /etc/init.d/functions
+
+YPBIND_BIN=/usr/sbin/ypbind
+pidfile=/var/run/ypbind.pid
+YPDOMAINNAME_bin=/usr/bin/ypdomainname
+
+[ -f /etc/default/ypbind ] && . /etc/default/ypbind
+
+case "$1" in
+    start)
+	echo -n "Starting ypbind"
+	## If the domainname is not set, skip starting of ypbind
+	## and return with "program not configured"
+        $YPDOMAINNAME_bin >/dev/null 2>&1
+        if [ $? -ne 0 -o -z "`$YPDOMAINNAME_bin 2>/dev/null`" ]; then
+           if [ -f /etc/defaultdomain ]; then
+             XDOMAINNAME=`cat /etc/defaultdomain`
+             $YPDOMAINNAME_bin "$XDOMAINNAME"
+	   fi
+           $YPDOMAINNAME_bin >/dev/null 2>&1
+           if [ $? -ne 0 -o -z "`$YPDOMAINNAME_bin 2>/dev/null`" ]; then
+	     # Tell the user this has skipped
+	     echo -n " . . . . . . . . . . No domainname set"
+             # service is not configured
+	     exit 1
+           fi
+        fi
+
+	## If we don't have a /etc/yp.conf file, skip starting of
+        ## ypbind and return with "program not configured"
+        ## if you add the -broadcast Option later, comment this out.
+	if [ ! -f /etc/yp.conf -a "$YPBIND_BROADCAST" != "yes" ] ; then
+	  # Tell the user this has skipped
+	  echo -n " . . . . . . . . . . ${attn}/etc/yp.conf not found${norm}"
+          # service is not configured
+	  exit 1
+        fi
+
+	# evaluate the OPTIONS for ypbind-mt
+	OPTIONS=""
+	test "$YPBIND_LOCAL_ONLY" = "yes" && OPTIONS="-local-only $OPTIONS"
+	test "$YPBIND_BROADCAST" = "yes" && OPTIONS="-broadcast $OPTIONS"
+	test "$YPBIND_BROKEN_SERVER" = "yes" && OPTIONS="-broken-server $OPTIONS"
+
+	start-stop-daemon --start --quiet --pidfile $pidfile --exec $YPBIND_BIN -- $YPBIND_OPTIONS $OPTIONS
+        if [ $? -eq 0 ]; then
+            notfound=1
+            for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
+                ypwhich >/dev/null 2>&1 && { notfound=0 ; break; };
+                echo -n " ."
+                sleep 1;
+            done
+            if [ $notfound -eq 1 ]; then
+                echo -n " ${warn}No NIS server found${norm}";
+	    fi
+        else
+            exit 1
+        fi
+	;;
+    stop)
+	echo -n "Shutting down ypbind"
+	start-stop-daemon --stop --quiet --pidfile $pidfile
+	# Remove static data, else glibc will continue to use NIS
+        rm -f /var/yp/binding/* /var/run/ypbind.pid
+	;;
+    restart)
+	$0 stop
+	sleep 1
+	$0 start
+	;;
+    reload | force-reload)
+	echo -n "Reload service ypbind"
+	start-stop-daemon --stop --quiet --signal 1 --pidfile $pidfile
+	;;
+    status)
+	echo -n "Checking for ypbind: "
+	status $YPBIND_BIN
+	;;
+    *)
+	echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
+	exit 1
+	;;
+esac
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nis/nis.inc b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/nis.inc
new file mode 100644
index 0000000..c4aa10e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/nis.inc
@@ -0,0 +1,31 @@
+# This include file contains global definitions for the
+# various NIS packages.
+#
+# These packages will only function correctly with glibc -
+# the rpcsvc functionality is not present in uclibc
+DESCRIPTION = "NIS Server and Tools"
+HOMEPAGE = "http://www.linux-nis.org/nis/"
+SECTION = "net"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+inherit autotools gettext pkgconfig
+
+# install is broken because src/Makefile heroically adds '-s'
+# to the install flags - passing -s to the build /usr/bin/install!
+# install-strip gets it right but installs ypbind -m <default>,
+# not -m 555.  In an OE build this is not, so far as I can see,
+# a security problem (and this fix to the build problem is *much*
+# easier and more maintainable.)
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install-strip
+}
+
+# An attempt to build on uclibc will fail, causing annoyance,
+# so force the package to be skipped here (this will cause a
+# 'nothing provides' error)
+python () {
+    os = bb.data.getVar("TARGET_OS", d, 1)
+    if os == "linux-uclibc":
+        raise bb.parse.SkipPackage("NIS functionality requires rpcsvc/yp.h, uClibC does not provide this")
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools/domainname.service b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools/domainname.service
new file mode 100644
index 0000000..21aa92c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools/domainname.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=NIS Domainname
+
+[Service]
+Type=oneshot
+EnvironmentFile=/etc/nisdomainname
+ExecStart=/usr/bin/domainname $NISDOMAINNAME
+RemainAfterExit=true
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools/yp-tools-ipv4-ipv6-Provide-an-in-place-version-of-mapv4v6addr.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools/yp-tools-ipv4-ipv6-Provide-an-in-place-version-of-mapv4v6addr.patch
new file mode 100644
index 0000000..9ef569f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools/yp-tools-ipv4-ipv6-Provide-an-in-place-version-of-mapv4v6addr.patch
@@ -0,0 +1,110 @@
+From a1ef10d63b0ea34c788d5432e94c72b00ae55e04 Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe_macdonald@mentor.com>
+Date: Fri, 27 Feb 2015 12:04:10 -0500
+Subject: [PATCH] ipv4/ipv6: Provide an in-place version of mapv4v6addr.h
+
+mapv4v6addr.h isn't always available, depending on your build, but
+nis-hosts.c only needs it for a single, inline function.  So drop a copy
+here rather than playing games with the include path that would
+potentially lead to cross-compilation issues.
+
+Upstream-status: Inappropriate [embedded specific]
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+---
+ nss_nis6/mapv4v6addr.h | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ nss_nis6/nis-hosts.c   |  2 +-
+ 2 files changed, 70 insertions(+), 1 deletion(-)
+ create mode 100644 nss_nis6/mapv4v6addr.h
+
+diff --git a/nss_nis6/mapv4v6addr.h b/nss_nis6/mapv4v6addr.h
+new file mode 100644
+index 0000000..7f85f7d
+--- /dev/null
++++ b/nss_nis6/mapv4v6addr.h
+@@ -0,0 +1,69 @@
++/*
++ * ++Copyright++ 1985, 1988, 1993
++ * -
++ * Copyright (c) 1985, 1988, 1993
++ *    The Regents of the University of California.  All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ *    notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ *    notice, this list of conditions and the following disclaimer in the
++ *    documentation and/or other materials provided with the distribution.
++ * 4. Neither the name of the University nor the names of its contributors
++ *    may be used to endorse or promote products derived from this software
++ *    without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ * -
++ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
++ *
++ * Permission to use, copy, modify, and distribute this software for any
++ * purpose with or without fee is hereby granted, provided that the above
++ * copyright notice and this permission notice appear in all copies, and that
++ * the name of Digital Equipment Corporation not be used in advertising or
++ * publicity pertaining to distribution of the document or software without
++ * specific, written prior permission.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
++ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
++ * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
++ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
++ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
++ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
++ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
++ * SOFTWARE.
++ * -
++ * --Copyright--
++ */
++
++#include <string.h>
++#include <arpa/nameser.h>
++
++static void
++map_v4v6_address (const char *src, char *dst)
++{
++  u_char *p = (u_char *) dst;
++  int i;
++
++  /* Move the IPv4 part to the right position.  */
++  memcpy (dst + 12, src, INADDRSZ);
++
++  /* Mark this ipv6 addr as a mapped ipv4. */
++  for (i = 0; i < 10; i++)
++    *p++ = 0x00;
++  *p++ = 0xff;
++  *p = 0xff;
++}
+diff --git a/nss_nis6/nis-hosts.c b/nss_nis6/nis-hosts.c
+index af99c74..96d8fa1 100644
+--- a/nss_nis6/nis-hosts.c
++++ b/nss_nis6/nis-hosts.c
+@@ -36,7 +36,7 @@
+ #include "nss-nis6.h"
+ 
+ /* Get implementation for some internal functions. */
+-#include <resolv/mapv4v6addr.h>
++#include "mapv4v6addr.h"
+ 
+ #define ENTNAME         hostent
+ #define DATABASE        "hosts"
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools_2.14.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools_2.14.bb
new file mode 100644
index 0000000..8c6837b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools_2.14.bb
@@ -0,0 +1,34 @@
+# This package builds tools to manage NIS
+# The source package is utils/net/NIS/yp-tools
+#
+require nis.inc
+
+SUMMARY = "NIS client programs"
+DESCRIPTION = " \
+Network Information Service tools.  \
+This package contains ypcat, ypmatch, ypset, \
+ypwhich, yppasswd, domainname, nisdomainname \
+and ypdomainname. \
+\
+This is the final IPv4-only version of yp-tools. \
+"
+
+SRC_URI = "http://www.linux-nis.org/download/yp-tools/${BP}.tar.bz2 \
+           file://domainname.service \
+"
+SRC_URI[md5sum] = "ba1f121c17e3ad65368be173b977cd13"
+SRC_URI[sha256sum] = "d01f70fadc643a55107a0edc47c6be99d0306bcc4f66df56f65e74238b0124c9"
+
+inherit systemd
+SYSTEMD_SERVICE_${PN} = "domainname.service"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+
+CACHED_CONFIGUREVARS += "ac_cv_prog_STRIP=/bin/true"
+
+do_install_append() {
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/domainname.service ${D}${systemd_unitdir}/system
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools_3.3.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools_3.3.bb
new file mode 100644
index 0000000..b89f0b8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/yp-tools_3.3.bb
@@ -0,0 +1,48 @@
+# This package builds tools to manage NIS
+# The source package is utils/net/NIS/yp-tools
+#
+require nis.inc
+
+SUMMARY = "NIS client programs"
+DESCRIPTION = " \
+Network Information Service tools.  \
+This package contains ypcat, ypmatch, ypset, \
+ypwhich, yppasswd, domainname, nisdomainname \
+and ypdomainname. \
+"
+
+PNBLACKLIST[yp-tools] ?= "BROKEN: fails to build for qemuarm."
+
+SRC_URI = "http://www.linux-nis.org/download/yp-tools/${BP}.tar.bz2 \
+           file://domainname.service \
+           file://yp-tools-ipv4-ipv6-Provide-an-in-place-version-of-mapv4v6addr.patch \
+"
+SRC_URI[md5sum] = "acebeecc11a73fb8097503670344834c"
+SRC_URI[sha256sum] = "812be817df3d4c25813552be336c6c6ad5aedaf65611b81af3ad9f98fb3c2e50"
+
+DEPENDS = "libtirpc"
+
+inherit autotools systemd
+SYSTEMD_SERVICE_${PN} = "domainname.service"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+
+CACHED_CONFIGUREVARS += "ac_cv_prog_STRIP=/bin/true"
+
+EXTRA_OECONF = " \
+                --disable-rpath \
+                --libdir=${libdir}/yp-nis/ \
+                --includedir=${includedir}/yp-nis/ \
+               "
+
+FILES_${PN} += " ${libdir}/yp-nis/*.so.*.* ${libdir}/yp-nis/pkgconfig/"
+FILES_${PN}-dbg += " ${libdir}/yp-nis/.debug"
+FILES_${PN}-dev += " ${libdir}/yp-nis/*.so ${libdir}/yp-nis/*.so.[12] ${libdir}/yp-nis/*.la"
+FILES_${PN}-staticdev += " ${libdir}/yp-nis/*.a"
+
+do_install_append() {
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/domainname.service ${D}${systemd_unitdir}/system
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nis/ypbind-mt/ypbind.service b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/ypbind-mt/ypbind.service
new file mode 100644
index 0000000..1f8df42
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/ypbind-mt/ypbind.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=YP Bind
+Requires=domainname.service
+After=domainname.service network.target
+Before=systemd-user-sessions.service
+
+[Service]
+Type=forking
+PIDFile=/var/run/ypbind.pid
+ExecStart=/usr/sbin/ypbind
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nis/ypbind-mt_1.38.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/ypbind-mt_1.38.bb
new file mode 100644
index 0000000..d113b82
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/ypbind-mt_1.38.bb
@@ -0,0 +1,58 @@
+# This package builds the NIS ypbind daemon
+# The source package is utils/net/NIS/ypbind-mt
+#
+require nis.inc
+
+DESCRIPTION = " \
+Multithreaded NIS bind service (ypbind-mt).  \
+ypbind-mt is a complete new implementation of a NIS \
+binding daemon for Linux. It has the following \
+features.  Supports ypbind protocol V1 and V2.  \
+Uses threads for better response.  Supports multiple \
+domain bindings.  Supports /var/yp/binding/* file \
+for Linux libc 4/5 and glibc 2.x.  Supports a list \
+of known secure NIS server (/etc/yp.conf) Binds to \
+the server which answered as first. \
+\
+This is the final IPv4-only version of ypbind-mt. \
+"
+HOMEPAGE = "http://www.linux-nis.org/nis/ypbind-mt/index.html"
+DEPENDS = " \
+           yp-tools \
+           ${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
+          "
+RDEPENDS_${PN} += "yp-tools"
+
+# ypbind-mt now provides all the functionality of ypbind
+# and is used in place of it.
+PROVIDES += "ypbind"
+
+SRC_URI = "http://www.linux-nis.org/download/ypbind-mt/${BP}.tar.bz2 \
+           file://ypbind.init \
+           file://ypbind.service \
+"
+SRC_URI[md5sum] = "094088c0e282fa7f3b3dd6cc51d0a4e1"
+SRC_URI[sha256sum] = "1930ce19f6ccfe10400f3497b31867f71690d2bcd3f5b575199fa915559b7746"
+
+inherit systemd update-rc.d
+
+SYSTEMD_SERVICE_${PN} = "ypbind.service"
+INITSCRIPT_NAME = "ypbind"
+INITSCRIPT_PARAMS = "start 44 3 5 . stop 70 0 1 2 6 ."
+
+CACHED_CONFIGUREVARS = "ac_cv_prog_STRIP=/bin/true"
+
+do_install_append () {
+    install -d ${D}${sysconfdir}/init.d
+    install -d ${D}${sysconfdir}/rcS.d
+
+    install -m 0755 ${WORKDIR}/ypbind.init ${D}${sysconfdir}/init.d/ypbind
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/ypbind.service ${D}${systemd_unitdir}/system
+}
+
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nis/ypbind-mt_2.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/ypbind-mt_2.2.bb
new file mode 100644
index 0000000..cee5880
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nis/ypbind-mt_2.2.bb
@@ -0,0 +1,53 @@
+# This package builds the NIS ypbind daemon
+# The source package is utils/net/NIS/ypbind-mt
+#
+require nis.inc
+
+DESCRIPTION = " \
+Multithreaded NIS bind service (ypbind-mt).  \
+ypbind-mt is a complete new implementation of a NIS \
+binding daemon for Linux. It has the following \
+features.  Supports ypbind protocol V1 and V2.  \
+Uses threads for better response.  Supports multiple \
+domain bindings.  Supports /var/yp/binding/* file \
+for Linux libc 4/5 and glibc 2.x.  Supports a list \
+of known secure NIS server (/etc/yp.conf) Binds to \
+the server which answered as first. \
+"
+HOMEPAGE = "http://www.linux-nis.org/nis/ypbind-mt/index.html"
+DEPENDS = "yp-tools ${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+PROVIDES += "ypbind"
+
+PNBLACKLIST[ypbind-mt] ?= "BROKEN: Depends on broken yp-tools"
+
+SRC_URI = "http://www.linux-nis.org/download/ypbind-mt/${BP}.tar.bz2 \
+           file://ypbind.init \
+           file://ypbind.service \
+"
+SRC_URI[md5sum] = "54e2040d8266ae7d302d081ca310c8a8"
+SRC_URI[sha256sum] = "dc2f7d97c94dcab0acfdcd115cd8b464eb8c427e4bb0fe68404ae7465f517cd3"
+
+inherit systemd update-rc.d
+
+SYSTEMD_SERVICE_${PN} = "ypbind.service"
+INITSCRIPT_NAME = "ypbind"
+INITSCRIPT_PARAMS = "start 44 3 5 . stop 70 0 1 2 6 ."
+
+CACHED_CONFIGUREVARS = "ac_cv_prog_STRIP=/bin/true"
+
+EXTRA_OECONF = "PKG_CONFIG_PATH='${STAGING_LIBDIR}/yp-nis/pkgconfig/'"
+
+do_install_append () {
+    install -d ${D}${sysconfdir}/init.d
+    install -d ${D}${sysconfdir}/rcS.d
+
+    install -m 0755 ${WORKDIR}/ypbind.init ${D}${sysconfdir}/init.d/ypbind
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/ypbind.service ${D}${systemd_unitdir}/system
+}
+
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntimed/ntimed/use-ldflags.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ntimed/ntimed/use-ldflags.patch
new file mode 100644
index 0000000..87a7778
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntimed/ntimed/use-ldflags.patch
@@ -0,0 +1,16 @@
+Obey LDFLAGS.
+
+Signed-off-by: Christopher Larson <kergoth@gmail.com>
+Upstream-Status: Pending
+
+--- Ntimed.orig/configure	2015-05-30 11:57:59.927796993 -0700
++++ Ntimed/configure	2015-05-30 11:58:26.143948894 -0700
+@@ -142,7 +142,7 @@
+ 
+ 	echo
+ 	echo "ntimed-client:	${l}"
+-	echo "	\${CC} \${CFLAGS} -o ntimed-client ${l} -lm"
++	echo "	\${CC} \${CFLAGS} -o ntimed-client ${l} \${LDFLAGS} -lm"
+ 	echo
+ 	echo "clean:"
+ 	echo "	rm -f ${l} ntimed-client"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntimed/ntimed_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/ntimed/ntimed_git.bb
new file mode 100644
index 0000000..dac5617
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntimed/ntimed_git.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Network time synchronization software, NTPD replacement"
+DESCRIPTION = "This is a preview/early-access/alpha/buzzword-of-the-times \
+release of a new FOSS project written to gradually take over the world of \
+networked timekeeping."
+HOMEPAGE = "https://github.com/bsdphk/Ntimed"
+SECTION = "net"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://main.c;startline=2;endline=24;md5=eda11d21005319bb76cbb6f911f0f66d"
+
+SRC_URI = "git://github.com/bsdphk/Ntimed \
+           file://use-ldflags.patch"
+
+PV = "0.0+git${SRCPV}"
+SRCREV = "db0abbb4c80f2ecef6bc5d9639bca5bea28532a2"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "\
+    'CC=${CC}' \
+    'CFLAGS=${CFLAGS}' \
+    'LDFLAGS=${LDFLAGS}' \
+"
+
+do_configure () {
+    sh ./configure
+}
+
+do_compile () {
+    oe_runmake
+}
+
+do_install () {
+    install -D -m 0755 ntimed-client ${D}${sbindir}/ntimed-client
+}
+
+ALLOW_EMPTY_${PN} = "1"
+RDEPENDS_${PN} += "ntimed-client"
+
+PACKAGE_BEFORE_PN += "ntimed-client"
+FILES_ntimed-client = "${sbindir}/ntimed-client"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntp-4.2.4_p6-nano.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntp-4.2.4_p6-nano.patch
new file mode 100644
index 0000000..cb1e2f7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntp-4.2.4_p6-nano.patch
@@ -0,0 +1,17 @@
+--- a/include/ntp_syscall.h.orig	2009-05-19 16:44:55.048156467 -0400
++++ b/include/ntp_syscall.h	2009-05-19 16:46:19.293323686 -0400
+@@ -14,6 +14,14 @@
+ # include <sys/timex.h>
+ #endif
+ 
++#if defined(ADJ_NANO) && !defined(MOD_NANO)
++#define MOD_NANO ADJ_NANO
++#endif
++
++#if defined(ADJ_TAI) && !defined(MOD_TAI)
++#define MOD_TAI ADJ_TAI
++#endif
++
+ #ifndef NTP_SYSCALLS_LIBC
+ #ifdef NTP_SYSCALLS_STD
+ # define ntp_adjtime(t)		syscall(SYS_ntp_adjtime, (t))
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntp.conf b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntp.conf
new file mode 100644
index 0000000..676e186
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntp.conf
@@ -0,0 +1,17 @@
+# This is the most basic ntp configuration file
+# The driftfile must remain in a place specific to this
+# machine - it records the machine specific clock error
+driftfile /var/lib/ntp/drift
+# This should be a server that is close (in IP terms)
+# to the machine.  Add other servers as required.
+# Unless you un-comment the line below ntpd will sync
+# only against the local system clock.
+#
+# server time.server.example.com
+#
+# Using local hardware clock as fallback
+# Disable this when using ntpd -q -g -x as ntpdate or it will sync to itself
+server 127.127.1.0
+fudge 127.127.1.0 stratum 14
+# Defining a default security setting
+restrict default
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpd b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpd
new file mode 100755
index 0000000..d1b9c49
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpd
@@ -0,0 +1,84 @@
+#! /bin/sh
+
+### BEGIN INIT INFO
+# Provides:        ntp
+# Required-Start:  $network $remote_fs $syslog
+# Required-Stop:   $network $remote_fs $syslog
+# Default-Start:   2 3 4 5
+# Default-Stop:
+# Short-Description: Start NTP daemon
+### END INIT INFO
+
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+DAEMON=/usr/sbin/ntpd
+PIDFILE=/var/run/ntpd.pid
+
+# ntpd	init.d script for ntpdc from ntp.isc.org
+test -x $DAEMON -a -r /etc/ntp.conf || exit 0
+
+# rcS contains TICKADJ
+test -r /etc/default/rcS && . /etc/default/rcS
+
+# Source function library.
+. /etc/init.d/functions
+
+# Functions to do individual actions
+settick(){
+  	# If TICKADJ is set we *must* adjust it before we start, because the
+	# driftfile relies on the correct setting
+	test -n "$TICKADJ" -a -x /usr/sbin/tickadj && {
+		echo -n "Setting tick to $TICKADJ: "
+		/usr/sbin/tickadj "$TICKADJ"
+		echo "done"
+	}
+}
+startdaemon(){
+	# The -g option allows ntpd to step the time to correct it just
+	# once.  The daemon will exit if the clock drifts too much after
+	# this.  If ntpd seems to disappear after a while assume TICKADJ
+	# above is set to a totally incorrect value.
+	echo -n "Starting ntpd: "
+	start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- -u ntp:ntp -p $PIDFILE "$@"
+	echo "done"
+}
+stopdaemon(){
+	echo -n "Stopping ntpd: "
+	start-stop-daemon --stop --quiet --oknodo -p $PIDFILE
+	echo "done"
+}
+
+case "$1" in
+  start)
+  	settick
+	startdaemon -g
+	;;
+  stop)
+  	stopdaemon
+	;;
+  force-reload)
+  	stopdaemon
+  	settick
+	startdaemon -g
+	;;
+  restart)
+  	# Don't reset the tick here
+	stopdaemon
+	startdaemon -g
+	;;
+  reload)
+  	# Must do this by hand, but don't do -g
+	stopdaemon
+	startdaemon
+	;;
+  status)
+	status /usr/sbin/ntpd;
+	exit $?
+	;;
+  *)
+	echo "Usage: ntpd { start | stop | status | restart | reload }" >&2
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpd.list b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpd.list
new file mode 100644
index 0000000..d1fe6b7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpd.list
@@ -0,0 +1 @@
+ntpd.service
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpd.service b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpd.service
new file mode 100644
index 0000000..0e3d7cd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Network Time Service
+After=network.target
+
+[Service]
+Type=forking
+PIDFile=/run/ntpd.pid
+ExecStart=/usr/sbin/ntpd -u ntp:ntp -p /run/ntpd.pid -g
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate
new file mode 100755
index 0000000..17b64d1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+test -x /usr/sbin/ntpdate || exit 0
+
+if test -f /etc/default/ntpdate ; then
+. /etc/default/ntpdate
+fi
+
+if [ "$NTPSERVERS" = "" ] ; then
+	if [ "$METHOD" = "" -a "$1" != "silent" ] ; then
+		echo "Please set NTPSERVERS in /etc/default/ntpdate"
+		exit 1
+	else
+		exit 0
+	fi
+fi
+
+# This is a heuristic:  The idea is that if a static interface is brought
+# up, that is a major event, and we can put in some extra effort to fix
+# the system time.  Feel free to change this, especially if you regularly
+# bring up new network interfaces.
+if [ "$METHOD" = static ]; then
+	OPTS="-b"
+fi
+
+if [ "$METHOD" = loopback ]; then
+	exit 0
+fi
+
+(
+
+LOCKFILE=/var/lock/ntpdate
+
+# Avoid running more than one at a time
+if [ -x /usr/bin/lockfile-create ]; then
+	lockfile-create $LOCKFILE
+	lockfile-touch $LOCKFILE &
+	LOCKTOUCHPID="$!"
+fi
+
+if /usr/sbin/ntpdate -s $OPTS $NTPSERVERS 2>/dev/null; then
+	if [ "$UPDATE_HWCLOCK" = "yes" ]; then
+		hwclock --systohc || :
+	fi
+fi
+
+if [ -x /usr/bin/lockfile-create ] ; then
+	kill $LOCKTOUCHPID
+	lockfile-remove $LOCKFILE
+fi
+
+) &
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate.default b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate.default
new file mode 100644
index 0000000..486b6e0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate.default
@@ -0,0 +1,7 @@
+# Configuration script used by ntpdate-sync script
+
+NTPSERVERS=""
+
+# Set to "yes" to write time to hardware clock on success
+UPDATE_HWCLOCK="no"
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate.service b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate.service
new file mode 100644
index 0000000..10cbd70
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Network Time Service (one-shot ntpdate mode)
+Before=ntpd.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/ntpdate-sync silent
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/sntp b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/sntp
new file mode 100644
index 0000000..f8c5895
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/sntp
@@ -0,0 +1 @@
+NTPSERVER="ntpserver.example.org"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/sntp.service b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/sntp.service
new file mode 100644
index 0000000..4898b8a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp/sntp.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Simple Network Time Service Client
+After=network.target
+
+[Service]
+Type=oneshot
+EnvironmentFile=-/etc/default/sntp
+ExecStart=/usr/sbin/sntp -s $NTPSERVER
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p7.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p7.bb
new file mode 100644
index 0000000..ff4ba64
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p7.bb
@@ -0,0 +1,160 @@
+SUMMARY = "Network Time Protocol daemon and utilities"
+DESCRIPTION = "The Network Time Protocol (NTP) is used to \
+synchronize the time of a computer client or server to \
+another server or reference time source, such as a radio \
+or satellite receiver or modem."
+HOMEPAGE = "http://support.ntp.org"
+SECTION = "net"
+LICENSE = "NTP"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=f41fedb22dffefcbfafecc85b0f79cfa"
+
+DEPENDS = "libevent"
+
+SRC_URI = "http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-${PV}.tar.gz \
+           file://ntp-4.2.4_p6-nano.patch \
+           file://ntpd \
+           file://ntp.conf \
+           file://ntpdate \
+           file://ntpdate.default \
+           file://ntpdate.service \
+           file://ntpd.service \
+           file://sntp.service \
+           file://sntp \
+           file://ntpd.list \
+"
+
+SRC_URI[md5sum] = "46dfba933c3e4bc924d8e55068797578"
+SRC_URI[sha256sum] = "81d20c06a0b01abe3b84fac092185bf014252d38fe5e7b2758f604680a0220dc"
+
+inherit autotools update-rc.d useradd systemd pkgconfig
+
+# The ac_cv_header_readline_history is to stop ntpdc depending on either
+# readline or curses
+EXTRA_OECONF += "--with-net-snmp-config=no \
+                 --without-ntpsnmpd \
+                 ac_cv_header_readline_history_h=no \
+                 --with-yielding_select=yes \
+                 --with-locfile=redhat \
+                 --without-rpath \
+                 "
+CFLAGS_append = " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
+
+USERADD_PACKAGES = "${PN}"
+NTP_USER_HOME ?= "/var/lib/ntp"
+USERADD_PARAM_${PN} = "--system --home-dir ${NTP_USER_HOME} \
+                       --no-create-home \
+                       --shell /bin/false --user-group ntp"
+
+# NB: debug is default-enabled by NTP; keep it default-enabled here.
+PACKAGECONFIG ??= "cap debug refclocks"
+PACKAGECONFIG[openssl] = "--with-openssl-libdir=${STAGING_LIBDIR} \
+                          --with-openssl-incdir=${STAGING_INCDIR} \
+                          --with-crypto, \
+                          --without-openssl --without-crypto, \
+                          openssl"
+PACKAGECONFIG[cap] = "--enable-linuxcaps,--disable-linuxcaps,libcap"
+PACKAGECONFIG[readline] = "--with-lineeditlibs,--without-lineeditlibs,readline"
+PACKAGECONFIG[refclocks] = "--enable-all-clocks,--disable-all-clocks,pps-tools"
+PACKAGECONFIG[debug] = "--enable-debugging,--disable-debugging"
+
+do_install_append() {
+    install -d ${D}${sysconfdir}/init.d
+    install -m 644 ${WORKDIR}/ntp.conf ${D}${sysconfdir}
+    install -m 755 ${WORKDIR}/ntpd ${D}${sysconfdir}/init.d
+    install -d ${D}${bindir}
+    install -m 755 ${WORKDIR}/ntpdate ${D}${bindir}/ntpdate-sync
+
+    install -m 755 -d ${D}${NTP_USER_HOME}
+    chown ntp:ntp ${D}${NTP_USER_HOME}
+
+    # Fix hardcoded paths in scripts
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/ntpd ${D}${bindir}/ntpdate-sync
+    sed -i 's!/usr/bin/!${bindir}/!g' ${D}${sysconfdir}/init.d/ntpd ${D}${bindir}/ntpdate-sync
+    sed -i 's!/etc/!${sysconfdir}/!g' ${D}${sysconfdir}/init.d/ntpd ${D}${bindir}/ntpdate-sync
+    sed -i 's!/var/!${localstatedir}/!g' ${D}${sysconfdir}/init.d/ntpd ${D}${bindir}/ntpdate-sync
+    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${bindir}/ntpdate-sync
+    sed -i '1s,#!.*perl -w,#! ${bindir}/env perl,' ${D}${sbindir}/ntptrace
+    sed -i '/use/i use warnings;' ${D}${sbindir}/ntptrace
+    sed -i '1s,#!.*perl,#! ${bindir}/env perl,' ${D}${sbindir}/ntp-wait
+    sed -i '/use/i use warnings;' ${D}${sbindir}/ntp-wait
+    sed -i '1s,#!.*perl -w,#! ${bindir}/env perl,' ${D}${sbindir}/calc_tickadj
+    sed -i '/use/i use warnings;' ${D}${sbindir}/calc_tickadj
+
+    install -d ${D}/${sysconfdir}/default
+    install -m 644 ${WORKDIR}/ntpdate.default ${D}${sysconfdir}/default/ntpdate
+    install -m 0644 ${WORKDIR}/sntp ${D}${sysconfdir}/default/
+
+    install -d ${D}/${sysconfdir}/network/if-up.d
+    ln -s ${bindir}/ntpdate-sync ${D}/${sysconfdir}/network/if-up.d
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/ntpdate.service ${D}${systemd_unitdir}/system/
+    install -m 0644 ${WORKDIR}/ntpd.service ${D}${systemd_unitdir}/system/
+    install -m 0644 ${WORKDIR}/sntp.service ${D}${systemd_unitdir}/system/
+
+    install -d ${D}${systemd_unitdir}/ntp-units.d
+    install -m 0644 ${WORKDIR}/ntpd.list ${D}${systemd_unitdir}/ntp-units.d/60-ntpd.list
+
+    # Remove an empty libexecdir.
+    rmdir --ignore-fail-on-non-empty ${D}${libexecdir}
+}
+
+PACKAGES += "ntpdate sntp ${PN}-tickadj ${PN}-utils"
+# NOTE: you don't need ntpdate, use "ntpd -q -g -x"
+
+# ntp originally includes tickadj. It's split off for inclusion in small firmware images on platforms
+# with wonky clocks (e.g. OpenSlug)
+RDEPENDS_${PN} = "${PN}-tickadj"
+# Handle move from bin to utils package
+RPROVIDES_${PN}-utils = "${PN}-bin"
+RREPLACES_${PN}-utils = "${PN}-bin"
+RCONFLICTS_${PN}-utils = "${PN}-bin"
+
+SYSTEMD_PACKAGES = "${PN} ntpdate sntp"
+SYSTEMD_SERVICE_${PN} = "ntpd.service"
+SYSTEMD_SERVICE_ntpdate = "ntpdate.service"
+SYSTEMD_SERVICE_sntp = "sntp.service"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+
+RPROVIDES_ntpdate += "ntpdate-systemd"
+RREPLACES_ntpdate += "ntpdate-systemd"
+RCONFLICTS_ntpdate += "ntpdate-systemd"
+
+RSUGGESTS_${PN} = "iana-etc"
+
+FILES_${PN} = "${sbindir}/ntpd ${sysconfdir}/ntp.conf ${sysconfdir}/init.d/ntpd ${libdir} \
+    ${NTP_USER_HOME} \
+    ${systemd_unitdir}/ntp-units.d/60-ntpd.list ${libexecdir}\
+"
+FILES_${PN}-tickadj = "${sbindir}/tickadj"
+FILES_${PN}-utils = "${sbindir} ${datadir}/ntp/lib"
+RDEPENDS_${PN}-utils += "perl"
+FILES_ntpdate = "${sbindir}/ntpdate \
+    ${sysconfdir}/network/if-up.d/ntpdate-sync \
+    ${bindir}/ntpdate-sync \
+    ${sysconfdir}/default/ntpdate \
+    ${systemd_unitdir}/system/ntpdate.service \
+"
+FILES_sntp = "${sbindir}/sntp \
+              ${sysconfdir}/default/sntp \
+              ${systemd_unitdir}/system/sntp.service \
+             "
+
+CONFFILES_${PN} = "${sysconfdir}/ntp.conf"
+CONFFILES_ntpdate = "${sysconfdir}/default/ntpdate"
+
+INITSCRIPT_NAME = "ntpd"
+# No dependencies, so just go in at the standard level (20)
+INITSCRIPT_PARAMS = "defaults"
+
+pkg_postinst_ntpdate() {
+    if ! grep -q -s ntpdate $D/var/spool/cron/root; then
+        echo "adding crontab"
+        test -d $D/var/spool/cron || mkdir -p $D/var/spool/cron
+        echo "30 * * * *    ${bindir}/ntpdate-sync silent" >> $D/var/spool/cron/root
+    fi
+}
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_7.2.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_7.2.1.bb
new file mode 100644
index 0000000..a275238
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_7.2.1.bb
@@ -0,0 +1,29 @@
+# Copyright (C) 2013 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "network performance measurement tool"
+DESCRIPTION = "nuttcp is a network performance measurement tool intended for use by network \
+and system managers. Its most basic usage is to determine the raw TCP (or UDP) \
+network layer throughput by transferring memory buffers from a source system \
+across an interconnecting network to a destination system, either transferring \
+data for a specified time interval, or alternatively transferring a specified \
+number of bytes."
+HOMEPAGE = "http://www.nuttcp.net/Welcome%20Page.html"
+LICENSE = "GPL-2.0"
+SECTION = "net"
+LIC_FILES_CHKSUM = "file://${BP}.c;beginline=4;endline=30;md5=ae7045c3c3616092e07d87f04ba0d960"
+
+SRC_URI = "http://nuttcp.net/${BPN}/beta/${BP}.c"
+SRC_URI[md5sum] = "1ebf4a08bad2a295a8155f02995e8754"
+SRC_URI[sha256sum] = "c6e33810ccce67260f8d5d627f60e429d44f532365c58ed5673d035e2a59c4db"
+
+S = "${WORKDIR}"
+
+do_compile () {
+	${CC} ${CFLAGS} -o nuttcp nuttcp-${PV}.c
+}
+
+do_install () {
+	install -d ${D}${bindir}
+	install -m 0755 nuttcp ${D}${bindir}
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn/openvpn b/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn/openvpn
new file mode 100755
index 0000000..a3cd6a2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn/openvpn
@@ -0,0 +1,104 @@
+#!/bin/sh -e
+#
+# Original version by Robert Leslie
+# <rob@mars.org>, edited by iwj and cs
+# Modified for openvpn by Alberto Gonzalez Iniesta <agi@agi.as>
+# Modified for restarting / starting / stopping single tunnels by Richard Mueller <mueller@teamix.net>
+
+test $DEBIAN_SCRIPT_DEBUG && set -v -x
+
+DAEMON=/usr/sbin/openvpn
+CONFIG_DIR=/etc/openvpn
+test -x $DAEMON || exit 0
+test -d $CONFIG_DIR || exit 0
+
+start_vpn () {
+    modprobe tun >/dev/null 2>&1 || true
+    $DAEMON --daemon --writepid /var/run/openvpn.$NAME.pid \
+            --config $CONFIG_DIR/$NAME.conf --cd $CONFIG_DIR || echo -n " FAILED->"
+    echo -n " $NAME"
+}
+stop_vpn () {
+   kill `cat $PIDFILE` || true
+  rm $PIDFILE
+}
+
+case "$1" in
+start)
+  echo -n "Starting openvpn:"
+
+  if test -z $2 ; then
+    for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do
+      NAME=${CONFIG%%.conf}
+      start_vpn
+    done
+  else
+    if test -e $CONFIG_DIR/$2.conf ; then
+      NAME=$2
+      start_vpn
+    else
+      echo -n " No such VPN: $2"
+    fi
+  fi
+  echo "."
+
+  ;;
+stop)
+  echo -n "Stopping openvpn:"
+
+  if test -z $2 ; then
+    for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do
+      NAME=`echo $PIDFILE | cut -c18-`
+      NAME=${NAME%%.pid}
+      stop_vpn
+      echo -n " $NAME"
+    done
+  else
+    if test -e /var/run/openvpn.$2.pid ; then
+      PIDFILE=`ls /var/run/openvpn.$2.pid 2> /dev/null`
+      NAME=`echo $PIDFILE | cut -c18-`
+      NAME=${NAME%%.pid}
+      stop_vpn
+      echo -n " $NAME"
+    else
+      echo -n " No such VPN: $2"
+    fi
+  fi
+  echo "."
+  ;;
+# We only 'reload' for running VPNs. New ones will only start with 'start' or 'restart'.
+reload|force-reload)
+  echo -n "Reloading openvpn:"
+  for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do
+    NAME=`echo $PIDFILE | cut -c18-`
+    NAME=${NAME%%.pid}
+# If openvpn if running under a different user than root we'll need to restart
+    if egrep '^( |\t)*user' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then
+      stop_vpn
+      sleep 1
+      start_vpn
+      echo -n "(restarted)"
+    else
+      kill -HUP `cat $PIDFILE` || true
+#    start-stop-daemon --stop --signal HUP --quiet --oknodo \
+#      --exec $DAEMON --pidfile $PIDFILE
+    echo -n " $NAME"
+    fi
+  done
+  echo "."
+  ;;
+
+restart)
+  $0 stop $2
+  sleep 1
+  $0 start $2
+  ;;
+*)
+  echo "Usage: $0 {start|stop|reload|restart|force-reload}" >&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# vim:set ai et sts=2 sw=2 tw=0:
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn/openvpn-volatile.conf b/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn/openvpn-volatile.conf
new file mode 100644
index 0000000..4a3dc4a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn/openvpn-volatile.conf
@@ -0,0 +1 @@
+d /var/run/openvpn 0755 root root -
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn/openvpn@.service b/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn/openvpn@.service
new file mode 100644
index 0000000..358dcb7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn/openvpn@.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
+After=syslog.target network.target
+
+[Service]
+PrivateTmp=true
+Type=forking
+PIDFile=/var/run/openvpn/%i.pid
+ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.3.8.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.3.8.bb
new file mode 100644
index 0000000..f010906
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.3.8.bb
@@ -0,0 +1,67 @@
+SUMMARY = "A full-featured SSL VPN solution via tun device."
+HOMEPAGE = "http://openvpn.sourceforge.net"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5aac200199fde47501876cba7263cb0c"
+DEPENDS = "lzo openssl iproute2 ${@base_contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+inherit autotools systemd
+
+SRC_URI = "http://swupdate.openvpn.org/community/releases/openvpn-${PV}.tar.gz \
+           file://openvpn \
+           file://openvpn@.service \
+           file://openvpn-volatile.conf"
+
+SRC_URI[md5sum] = "51d996f1f1fc30f501ae251a254effeb"
+SRC_URI[sha256sum] = "532435eff61c14b44a583f27b72f93e7864e96c95fe51134ec0ad4b1b1107c51"
+
+SYSTEMD_SERVICE_${PN} += "openvpn@loopback-server.service openvpn@loopback-client.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+CFLAGS += "-fno-inline"
+
+# I want openvpn to be able to read password from file (hrw)
+EXTRA_OECONF += "--enable-password-save --enable-iproute2"
+EXTRA_OECONF += "${@base_contains('DISTRO_FEATURES', 'pam', '', '--disable-plugin-auth-pam', d)}"
+
+# Explicitly specify IPROUTE to bypass the configure-time check for /sbin/ip on the host.
+EXTRA_OECONF += "IPROUTE=/sbin/ip"
+
+do_install_append() {
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 755 ${WORKDIR}/openvpn ${D}/${sysconfdir}/init.d
+
+    install -d ${D}/${sysconfdir}/openvpn
+    install -d ${D}/${sysconfdir}/openvpn/sample
+    install -m 755 ${S}/sample/sample-config-files/loopback-server  ${D}${sysconfdir}/openvpn/sample/loopback-server.conf
+    install -m 755 ${S}/sample/sample-config-files/loopback-client  ${D}${sysconfdir}/openvpn/sample/loopback-client.conf
+    install -dm 755 ${D}${sysconfdir}/openvpn/sample/sample-keys
+    install -m 644 ${S}/sample/sample-keys/* ${D}${sysconfdir}/openvpn/sample/sample-keys
+
+    if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}/${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/openvpn@.service ${D}/${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/openvpn@.service ${D}/${systemd_unitdir}/system/openvpn@loopback-server.service
+        install -m 644 ${WORKDIR}/openvpn@.service ${D}/${systemd_unitdir}/system/openvpn@loopback-client.service
+
+        install -d ${D}/${localstatedir}
+        install -d ${D}/${localstatedir}/lib
+        install -d -m 710 ${D}/${localstatedir}/lib/openvpn
+        install -d -m 755 ${D}/${localstatedir}/run/
+        install -d -m 755 ${D}/${localstatedir}/run/openvpn
+
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        install -m 0644 ${WORKDIR}/openvpn-volatile.conf ${D}${sysconfdir}/tmpfiles.d/openvpn.conf
+    fi
+}
+
+PACKAGES =+ " ${PN}-sample "
+
+RRECOMMENDS_${PN} = "kernel-module-tun"
+
+FILES_${PN}-dbg += "${libdir}/openvpn/plugins/.debug"
+FILES_${PN} += "${systemd_unitdir}/system/openvpn@.service \
+                /run"
+FILES_${PN}-sample += "${systemd_unitdir}/system/openvpn@loopback-server.service \
+                       ${systemd_unitdir}/system/openvpn@loopback-client.service \
+                       ${sysconfdir}/openvpn/sample/"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/pimd/pimd_2.1.8.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/pimd/pimd_2.1.8.bb
new file mode 100644
index 0000000..3469043
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/pimd/pimd_2.1.8.bb
@@ -0,0 +1,19 @@
+SUMMARY = "pimd is a lightweight stand-alone PIM-SM v2 multicast routing daemon."
+HOMEPAGE = "http://troglobit.com/pimd.html"
+SECTION = "net"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=94f108f91fab720d62425770b70dd790"
+
+SRC_URI = "ftp://troglobit.com/pimd/${BP}.tar.bz2"
+SRC_URI[md5sum] = "a12448bc7c9bfcebf51a13ebf1ffa962"
+SRC_URI[sha256sum] = "01016940543a0a6131d4e6c91b595d47e187012c59a298eec14c3dbc38564b3a"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+CFLAGS += "-I ${S}/include "
+
+do_install() {
+	unset datadir
+	unset mandir
+	oe_runmake 'DESTDIR=${D}' install
+}
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/smcroute/smcroute_2.0.0.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/smcroute/smcroute_2.0.0.bb
new file mode 100644
index 0000000..9b6fc2f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/smcroute/smcroute_2.0.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Static Multicast Routing Daemon"
+DESCRIPTION = "SMCRoute is a daemon and command line tool to manipulate the multicast routing table in the UNIX kernel."
+HOMEPAGE = "http://troglobit.github.io/smcroute.html"
+SECTION = "net"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
+
+SRCREV = "d6280e64b27d5a4bd7f37dac36b455f4ae5f9ab3"
+SRC_URI = "git://github.com/troglobit/smcroute.git;branch=master;protocol=git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ssmping/files/0001-Makefile-tweak-install-dir.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/ssmping/files/0001-Makefile-tweak-install-dir.patch
new file mode 100644
index 0000000..0cb981c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ssmping/files/0001-Makefile-tweak-install-dir.patch
@@ -0,0 +1,35 @@
+From 693cfce5431e191a3955fd56fa822927d92c9e43 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 7 Nov 2014 14:27:00 +0800
+Subject: [PATCH] Makefile: tweak install dir
+
+For oe-core, the man doc should be installed to /usr/share/man
+rather than /usr/locale/man.
+
+Upstream-Status: inappropriate (oe specific)
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ Makefile | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index b5d12f8..9b2663c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -14,9 +14,9 @@ install: ssmping asmping ssmpingd mcfirst
+ 	install -D asmping $(DESTDIR)$(PREFIX)/bin/asmping
+ 	install -D ssmpingd $(DESTDIR)$(PREFIX)/bin/ssmpingd
+ 	install -D mcfirst $(DESTDIR)$(PREFIX)/bin/mcfirst
+-	install -D ssmping.1 $(DESTDIR)$(PREFIX)/man/man1/ssmping.1
+-	install -D asmping.1 $(DESTDIR)$(PREFIX)/man/man1/asmping.1
+-	install -D mcfirst.1 $(DESTDIR)$(PREFIX)/man/man1/mcfirst.1
++	install -D ssmping.1 $(DESTDIR)$(PREFIX)/share/man/man1/ssmping.1
++	install -D asmping.1 $(DESTDIR)$(PREFIX)/share/man/man1/asmping.1
++	install -D mcfirst.1 $(DESTDIR)$(PREFIX)/share/man/man1/mcfirst.1
+ 
+ clean:
+ 	rm -f $(OBJ) joinch.o joingrp.o ssmping asmping ssmpingd mcfirst
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/ssmping/ssmping_0.9.1.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/ssmping/ssmping_0.9.1.bb
new file mode 100644
index 0000000..32caec6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/ssmping/ssmping_0.9.1.bb
@@ -0,0 +1,17 @@
+SUMMARY = "ssmping is a tool for checking whether one can receive SSM from a given host"
+HOMEPAGE = "http://www.venaas.no/multicast/ssmping/"
+SECTION = "net"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://asmping.c;beginline=2;endline=11;md5=1ca8d1a1ca931e5cfe604ebf20a78b71"
+
+SRC_URI = "http://www.venaas.no/multicast/ssmping/${BP}.tar.gz \
+           file://0001-Makefile-tweak-install-dir.patch \
+"
+SRC_URI[md5sum] = "ad8e3d13f6d72918f73be7e7975d7fad"
+SRC_URI[sha256sum] = "22103a37eaa28489169a0927bc01e0596c3485fc4d29fc8456c07fd2c70fca6d"
+
+CFLAGS += "-D_GNU_SOURCE "
+
+do_install() {
+	oe_runmake 'DESTDIR=${D}' 'PREFIX=${prefix}' install
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/files/fix-funtion-parameter.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/files/fix-funtion-parameter.patch
new file mode 100644
index 0000000..da96983
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/files/fix-funtion-parameter.patch
@@ -0,0 +1,98 @@
+fix the function parameter
+
+Upstream-Status: pending
+
+Original openssl_diffie_hellman_create has three parameters, but
+it is reassigned a function pointer which has one parameter, and
+is called with one parameter, which will lead to segment fault
+on PPC, Now we simply correct the number of parameters.
+
+    #0  0x484d4aa0 in __GI_raise (sig=6)
+         at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
+    #1  0x484d9930 in __GI_abort () at abort.c:91
+    #2  0x10002064 in segv_handler (signal=11) at charon.c:224
+    #3  <signal handler called>
+    #4  0x48d89630 in openssl_diffie_hellman_create (group=MODP_1024_BIT, g=...,
+         p=<error reading variable: Cannot access memory at address 0x0>)
+         at openssl_diffie_hellman.c:143
+    #5  0x482c54f8 in create_dh (this=0x11ac6e68, group=MODP_1024_BIT)
+         at crypto/crypto_factory.c:358
+    #6  0x48375884 in create_dh (this=<optimized out>, group=<optimized out>)
+         at sa/keymat.c:132
+    #7  0x483843b8 in process_payloads (this=0x51400a78, message=<optimized
+    out>)
+         at sa/tasks/ike_init.c:200
+    #8  0x483844d0 in process_r (this=0x51400a78, message=0x51500778)
+         at sa/tasks/ike_init.c:319
+    #9  0x48374c9c in process_request (message=0x51500778, this=0x51400d20)
+         at sa/task_manager.c:870
+    #10 process_message (this=0x51400d20, msg=0x51500778) at
+    sa/task_manager.c:925
+    #11 0x4836c378 in process_message (this=0x514005f0, message=0x51500778)
+         at sa/ike_sa.c:1317
+    #12 0x48362270 in execute (this=0x515008d0)
+         at processing/jobs/process_message_job.c:74 
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ src/libstrongswan/plugins/openssl/openssl_diffie_hellman.c | 8 +++++++-
+ src/libstrongswan/plugins/openssl/openssl_diffie_hellman.h | 4 +++-
+ src/libstrongswan/plugins/openssl/openssl_plugin.c         | 1 +
+ 3 files changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.c b/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.c
+index ff33824..bd21446 100644
+--- a/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.c
++++ b/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.c
+@@ -142,7 +142,7 @@ METHOD(diffie_hellman_t, destroy, void,
+ /*
+  * Described in header.
+  */
+-openssl_diffie_hellman_t *openssl_diffie_hellman_create(
++openssl_diffie_hellman_t *openssl_diffie_hellman_create_custom(
+ 							diffie_hellman_group_t group, chunk_t g, chunk_t p)
+ {
+ 	private_openssl_diffie_hellman_t *this;
+@@ -197,5 +197,11 @@ openssl_diffie_hellman_t *openssl_diffie_hellman_create(
+ 
+ 	return &this->public;
+ }
++openssl_diffie_hellman_t *openssl_diffie_hellman_create( diffie_hellman_group_t group)
++{
++	chunk_t g;
++	chunk_t p;
++	openssl_diffie_hellman_create_custom(group, g, p);
++}
+ 
+ #endif /* OPENSSL_NO_DH */
+diff --git a/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.h b/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.h
+index 53dc59c..eb69eaa 100644
+--- a/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.h
++++ b/src/libstrongswan/plugins/openssl/openssl_diffie_hellman.h
+@@ -44,8 +44,10 @@ struct openssl_diffie_hellman_t {
+  * @param p				custom prime, if MODP_CUSTOM
+  * @return				openssl_diffie_hellman_t object, NULL if not supported
+  */
+-openssl_diffie_hellman_t *openssl_diffie_hellman_create(
++openssl_diffie_hellman_t *openssl_diffie_hellman_create_custom(
+ 							diffie_hellman_group_t group, chunk_t g, chunk_t p);
++openssl_diffie_hellman_t *openssl_diffie_hellman_create(
++							diffie_hellman_group_t group);
+ 
+ #endif /** OPENSSL_DIFFIE_HELLMAN_H_ @}*/
+ 
+diff --git a/src/libstrongswan/plugins/openssl/openssl_plugin.c b/src/libstrongswan/plugins/openssl/openssl_plugin.c
+index ff25086..c76873d 100644
+--- a/src/libstrongswan/plugins/openssl/openssl_plugin.c
++++ b/src/libstrongswan/plugins/openssl/openssl_plugin.c
+@@ -388,6 +388,7 @@ METHOD(plugin_t, get_features, int,
+ 			PLUGIN_PROVIDE(DH, MODP_1024_BIT),
+ 			PLUGIN_PROVIDE(DH, MODP_1024_160),
+ 			PLUGIN_PROVIDE(DH, MODP_768_BIT),
++		PLUGIN_REGISTER(DH, openssl_diffie_hellman_create_custom),
+ 			PLUGIN_PROVIDE(DH, MODP_CUSTOM),
+ #endif
+ #ifndef OPENSSL_NO_RSA
+-- 
+1.8.3
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/files/install-strongswan-swanctl-service.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/files/install-strongswan-swanctl-service.patch
new file mode 100644
index 0000000..86baccf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/files/install-strongswan-swanctl-service.patch
@@ -0,0 +1,22 @@
+commit 44cbabd8a42bc2a436562ed33fb8c89fa6b75b6e
+Author: Chris Patterson <pattersonc@ainfosec.com>
+Date:   Fri Dec 18 08:31:48 2015 -0500
+
+    strongswan-swanctl.service.in: match install used by strongswan.service
+    
+    Signed-off-by: Chris Patterson <pattersonc@ainfosec.com>
+
+Upstream-Status: Submitted
+https://github.com/strongswan/strongswan/pull/25
+
+diff --git a/init/systemd-swanctl/strongswan-swanctl.service.in b/init/systemd-swanctl/strongswan-swanctl.service.in
+index 818d352..944101f 100644
+--- a/init/systemd-swanctl/strongswan-swanctl.service.in
++++ b/init/systemd-swanctl/strongswan-swanctl.service.in
+@@ -7,3 +7,6 @@ Type=notify
+ ExecStart=@SBINDIR@/charon-systemd
+ ExecStartPost=@SBINDIR@/swanctl --load-all --noprompt
+ ExecReload=@SBINDIR@/swanctl --reload
++
++[Install]
++WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/files/support-newer-systemd.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/files/support-newer-systemd.patch
new file mode 100644
index 0000000..550cf67
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/files/support-newer-systemd.patch
@@ -0,0 +1,69 @@
+commit 82498129e0a91dfc3ed2c4ec3b2252f44655b83c
+Author: Chris Patterson <pattersonc@ainfosec.com>
+Date:   Fri Dec 18 08:27:57 2015 -0500
+
+    configure: support systemd >= 209
+    
+    libsystemd-journal and libsystemd-daemon are now just
+    part of libsystemd.
+    
+    Keep original systemd checks as a fallback.
+    
+    Updates charon-systemd/Makefile.am accordingly.
+    
+    Tested on:
+    - debian wheezy (systemd v44)
+    - ubuntu 15.10 (systemd v255).
+    
+    Signed-off-by: Chris Patterson <pattersonc@ainfosec.com>
+
+Upstream-Status: Submitted
+https://github.com/strongswan/strongswan/pull/24
+
+diff --git a/configure.ac b/configure.ac
+index 3d71ce0..f6c0426 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -941,13 +941,17 @@ if test x$systemd = xtrue; then
+ 		AC_MSG_ERROR([not found (try --with-systemdsystemunitdir)])
+ 	fi
+ 
+-	PKG_CHECK_MODULES(systemd_daemon, [libsystemd-daemon])
+-	AC_SUBST(systemd_daemon_CFLAGS)
+-	AC_SUBST(systemd_daemon_LIBS)
+-
+-	PKG_CHECK_MODULES(systemd_journal, [libsystemd-journal])
+-	AC_SUBST(systemd_journal_CFLAGS)
+-	AC_SUBST(systemd_journal_LIBS)
++	PKG_CHECK_MODULES(systemd, [libsystemd >= 209],
++		[AC_SUBST(systemd_CFLAGS)
++		AC_SUBST(systemd_LIBS)],
++		[PKG_CHECK_MODULES(systemd_daemon, [libsystemd-daemon])
++		AC_SUBST(systemd_daemon_CFLAGS)
++		AC_SUBST(systemd_daemon_LIBS)
++
++		PKG_CHECK_MODULES(systemd_journal, [libsystemd-journal])
++		AC_SUBST(systemd_journal_CFLAGS)
++		AC_SUBST(systemd_journal_LIBS)
++		])
+ fi
+ 
+ if test x$tss = xtrousers; then
+diff --git a/src/charon-systemd/Makefile.am b/src/charon-systemd/Makefile.am
+index 1b9ac15..ee85d43 100644
+--- a/src/charon-systemd/Makefile.am
++++ b/src/charon-systemd/Makefile.am
+@@ -9,11 +9,11 @@ charon_systemd_CPPFLAGS = \
+ 	-I$(top_srcdir)/src/libstrongswan \
+ 	-I$(top_srcdir)/src/libhydra \
+ 	-I$(top_srcdir)/src/libcharon \
+-	$(systemd_daemon_CFLAGS) $(systemd_journal_CFLAGS) \
++	$(systemd_CFLAGS) $(systemd_daemon_CFLAGS) $(systemd_journal_CFLAGS) \
+ 	-DPLUGINS=\""${charon_plugins}\""
+ 
+ charon_systemd_LDADD = \
+ 	$(top_builddir)/src/libstrongswan/libstrongswan.la \
+ 	$(top_builddir)/src/libhydra/libhydra.la \
+ 	$(top_builddir)/src/libcharon/libcharon.la \
+-	$(systemd_daemon_LIBS) $(systemd_journal_LIBS) -lm $(PTHREADLIB) $(DLLIB)
++	$(systemd_LIBS) $(systemd_daemon_LIBS) $(systemd_journal_LIBS) -lm $(PTHREADLIB) $(DLLIB)
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.3.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.3.2.bb
new file mode 100644
index 0000000..7ec1a8e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.3.2.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "strongSwan is an OpenSource IPsec implementation for the \
+Linux operating system."
+SUMMARY = "strongSwan is an OpenSource IPsec implementation"
+HOMEPAGE = "http://www.strongswan.org"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "gmp openssl flex-native flex bison-native"
+
+SRC_URI = "http://download.strongswan.org/strongswan-${PV}.tar.bz2 \
+        file://fix-funtion-parameter.patch \
+        file://support-newer-systemd.patch \
+        file://install-strongswan-swanctl-service.patch \
+"
+
+SRC_URI[md5sum] = "fab014be1477ef4ebf9a765e10f8802c"
+SRC_URI[sha256sum] = "a4a9bc8c4e42bdc4366a87a05a02bf9f425169a7ab0c6f4482d347e44acbf225"
+
+EXTRA_OECONF = " \
+        --without-lib-prefix \
+"
+
+EXTRA_OECONF += "${@base_contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--without-systemdsystemunitdir', d)}"
+
+
+PACKAGECONFIG ??= "charon curl gmp openssl stroke sqlite3 \
+        ${@base_contains('DISTRO_FEATURES', 'ldap', 'ldap', '', d)} \
+"
+PACKAGECONFIG[aesni] = "--enable-aesni,--disable-aesni,"
+PACKAGECONFIG[charon] = "--enable-charon,--disable-charon,"
+PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl,"
+PACKAGECONFIG[gmp] = "--enable-gmp,--disable-gmp,gmp,"
+PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,openldap,"
+PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5,"
+PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl,"
+PACKAGECONFIG[scep] = "--enable-scepclient,--disable-scepclient,"
+PACKAGECONFIG[soup] = "--enable-soup,--disable-soup,libsoup-2.4,"
+PACKAGECONFIG[sqlite3] = "--enable-sqlite,--disable-sqlite,sqlite3,"
+PACKAGECONFIG[stroke] = "--enable-stroke,--disable-stroke,"
+PACKAGECONFIG[swanctl] = "--enable-swanctl,--disable-swanctl,,libgcc"
+
+# requires swanctl
+PACKAGECONFIG[systemd-charon] = "--enable-systemd,--disable-systemd,systemd,"
+
+inherit autotools systemd pkgconfig
+
+RRECOMMENDS_${PN} = "kernel-module-ipsec"
+
+FILES_${PN} += "${libdir}/ipsec/lib*${SOLIBS} ${libdir}/ipsec/plugins/*.so"
+FILES_${PN}-dbg += "${libdir}/ipsec/.debug ${libdir}/ipsec/plugins/.debug ${libexecdir}/ipsec/.debug"
+FILES_${PN}-dev += "${libdir}/ipsec/lib*${SOLIBSDEV} ${libdir}/ipsec/*.la ${libdir}/ipsec/plugins/*.la"
+FILES_${PN}-staticdev += "${libdir}/ipsec/*.a ${libdir}/ipsec/plugins/*.a"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'swanctl', '${BPN}-swanctl.service', '${BPN}.service', d)}"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.28.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.28.bb
new file mode 100644
index 0000000..0a8bcd8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.28.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Program for providing universal TLS/SSL tunneling service"
+DESCRIPTION = "SSL encryption wrapper between remote client and local (inetd-startable) or remote server."
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=866cdc7459d91e092b174388fab8d283"
+DEPENDS = "openssl zlib tcp-wrappers"
+
+RDEPENDS_${PN} += "perl"
+
+SRC_URI = "ftp://ftp.stunnel.org/stunnel/archive/5.x/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "2c39ae0be771f91bf5b0205beafddca6"
+SRC_URI[sha256sum] = "9a25b87b1ef0c08fa3d796edce07b4408e6a8acece23de2eb7ee9285b78852b5"
+
+inherit autotools
+
+EXTRA_OECONF += "--with-ssl='${STAGING_EXECPREFIXDIR}' --disable-fips"
+
+PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES','systemd','systemd','',d)}"
+PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/add-ptest.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/add-ptest.patch
new file mode 100644
index 0000000..358f605
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/add-ptest.patch
@@ -0,0 +1,38 @@
+From 7b259580800e259d232229dc89f97058b56e2fe8 Mon Sep 17 00:00:00 2001
+From: "Hongjun.Yang" <hongjun.yang@windriver.com>
+Date: Wed, 22 Oct 2014 10:02:48 +0800
+Subject: [PATCH] Add ptest for tcpdump
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongjun.Yang <hongjun.yang@windriver.com>
+---
+ Makefile.in | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 8c35a45..4fb8ae6 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -428,9 +428,17 @@ distclean:
+ 	    tests/failure-outputs.txt
+ 	rm -rf autom4te.cache tests/DIFF tests/NEW
+ 
+-check: tcpdump
++buildtest-TESTS: tcpdump
++
++runtest-PTEST:
+ 	(cd tests && ./TESTrun.sh)
+ 
++install-ptest:
++	cp -r tests			$(DESTDIR) 
++	cp -r config.h			$(DESTDIR)
++	install -m 0755 Makefile 	$(DESTDIR)
++	ln -sf /usr/sbin/tcpdump	$(DESTDIR)/tcpdump
++
+ tags: $(TAGFILES)
+ 	ctags -wtd $(TAGFILES)
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/run-ptest b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/run-ptest
new file mode 100755
index 0000000..c03a8b8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/run-ptest
@@ -0,0 +1,5 @@
+#!/bin/sh
+make -k runtest-PTEST | sed -e '/: passed/ s/^/PASS: /g' \
+			-e '/: failed/ s/^/FAIL: /g' \
+			-e 's/: passed//g' \
+			-e 's/: failed//g'
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/tcpdump-configure-dlpi.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/tcpdump-configure-dlpi.patch
new file mode 100644
index 0000000..50e2d54
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/tcpdump-configure-dlpi.patch
@@ -0,0 +1,31 @@
+[PATCH] tcpdump: cross-compiling not check dlpi.
+
+For cross-compiling on Linux platforms, we do not need to check libdlpi 
+since it is only placed on Solaris.
+Also, checking libdlpi in native /lib would cause do_qa_configure fail.
+
+Upstream-Status: Pending.
+
+Signed-off-by: Xin Ouyang <Xin.Ouyang@windriver.com>
+---
+ configure.in |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 7f9591c..ca277c0 100644
+--- a/configure.in
++++ b/configure.in
+@@ -716,7 +716,9 @@ don't.])
+ fi
+ 
+ # libdlpi is needed for Solaris 11 and later.
+-AC_CHECK_LIB(dlpi, dlpi_walk, LIBS="$LIBS -ldlpi" LDFLAGS="-L/lib $LDFLAGS", ,-L/lib)
++if test "$cross_compiling" != yes; then
++	AC_CHECK_LIB(dlpi, dlpi_walk, LIBS="$LIBS -ldlpi" LDFLAGS="-L/lib $LDFLAGS", ,-L/lib)
++fi
+ 
+ dnl portability macros for getaddrinfo/getnameinfo
+ dnl
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/unnecessary-to-check-libpcap.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/unnecessary-to-check-libpcap.patch
new file mode 100644
index 0000000..d7a3ac2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump/unnecessary-to-check-libpcap.patch
@@ -0,0 +1,33 @@
+unnecessary to check libpcap
+
+Upstream-Status: Pending
+
+since the check of libpcap did not consider the cross-compile, lead to the
+below error:
+	This autoconf log indicates errors, it looked at host include and/or
+	library paths while determining system capabilities.
+
+In fact, the libpcap has been added into the tcpdump's DEPENDS, not need to
+check if libpcap existed.
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ configure.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.in b/configure.in
+index 06fade1..9125de7 100644
+--- a/configure.in
++++ b/configure.in
+@@ -567,7 +567,7 @@ AC_SEARCH_LIBS(getrpcbynumber, nsl,
+ dnl AC_CHECK_LIB(z, uncompress)
+ dnl AC_CHECK_HEADERS(zlib.h)
+ 
+-AC_LBL_LIBPCAP(V_PCAPDEP, V_INCLS)
++#AC_LBL_LIBPCAP(V_PCAPDEP, V_INCLS)
+ 
+ #
+ # Check for these after AC_LBL_LIBPCAP, so we link with the appropriate
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump_4.7.4.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump_4.7.4.bb
new file mode 100644
index 0000000..150e55f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpdump_4.7.4.bb
@@ -0,0 +1,51 @@
+SUMMARY = "A sophisticated network protocol analyzer"
+HOMEPAGE = "http://www.tcpdump.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1d4b0366557951c84a94fabe3529f867"
+SECTION = "net"
+DEPENDS = "libpcap"
+
+SRC_URI = " \
+    http://www.tcpdump.org/release/${BP}.tar.gz \
+    file://unnecessary-to-check-libpcap.patch \
+    file://tcpdump-configure-dlpi.patch \
+    file://add-ptest.patch \
+    file://run-ptest \
+"
+SRC_URI[md5sum] = "58af728de36f499341918fc4b8e827c3"
+SRC_URI[sha256sum] = "6be520269a89036f99c0b2126713a60965953eab921002b07608ccfc0c47d9af"
+export LIBS=" -lpcap"
+
+inherit autotools-brokensep ptest
+CACHED_CONFIGUREVARS = "ac_cv_linux_vers=${ac_cv_linux_vers=2}"
+
+PACKAGECONFIG ??= "openssl ipv6"
+PACKAGECONFIG[openssl] = "--with-crypto=yes, --without-openssl --without-crypto, openssl"
+PACKAGECONFIG[ipv6] = "--enable-ipv6, --disable-ipv6,"
+PACKAGECONFIG[smi] = "--with-smi, --without-smi,libsmi"
+PACKAGECONFIG[libcap-ng] = "--with-cap-ng=yes,--with-cap-ng=no,libcap-ng"
+
+EXTRA_AUTORECONF += " -I m4"
+
+do_configure_prepend() {
+    mkdir -p ${S}/m4
+    if [ -f aclocal.m4 ]; then
+        mv aclocal.m4 ${S}/m4
+    fi
+    # AC_CHECK_LIB(dlpi.. was looking to host /lib
+    sed -i 's:-L/lib::g' ./configure.in
+}
+do_configure_append() {
+    sed -i 's:-L/usr/lib::' ./Makefile
+    sed -i 's:-Wl,-rpath,${STAGING_LIBDIR}::' ./Makefile
+    sed -i 's:-I/usr/include::' ./Makefile
+}
+
+do_install_append() {
+    # tcpdump 4.0.0 installs a copy to /usr/sbin/tcpdump.4.0.0
+    rm -f ${D}${sbindir}/tcpdump.${PV}
+}
+
+do_compile_ptest() {
+	oe_runmake buildtest-TESTS
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpslice/tcpslice-1.2a3-time.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpslice/tcpslice-1.2a3-time.patch
new file mode 100644
index 0000000..386b7f8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpslice/tcpslice-1.2a3-time.patch
@@ -0,0 +1,75 @@
+Upstream-Status: Pending [from tcpdump-4.1.1-1.fc14.src.rpm]
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+
+--- tcpslice-1.2a3.orig/search.c	2000-09-10 10:52:40.000000000 +0200
++++ tcpslice-1.2a3/search.c	2006-07-28 14:56:55.000000000 +0200
+@@ -53,7 +53,7 @@
+ /* Size of a packet header in bytes; easier than typing the sizeof() all
+  * the time ...
+  */
+-#define PACKET_HDR_LEN (sizeof( struct pcap_pkthdr ))
++#define PACKET_HDR_LEN (sizeof( struct pcap_sf_pkthdr ))
+ 
+ extern int snaplen;
+ 
+@@ -111,16 +111,24 @@
+ static void
+ extract_header( pcap_t *p, u_char *buf, struct pcap_pkthdr *hdr )
+ 	{
+-	memcpy((char *) hdr, (char *) buf, sizeof(struct pcap_pkthdr));
++	struct pcap_sf_pkthdr hdri;
++
++	memcpy((char *) &hdri, (char *) buf, sizeof(struct pcap_sf_pkthdr));
+ 
+ 	if ( pcap_is_swapped( p ) )
+ 		{
+-		hdr->ts.tv_sec = SWAPLONG(hdr->ts.tv_sec);
+-		hdr->ts.tv_usec = SWAPLONG(hdr->ts.tv_usec);
+-		hdr->len = SWAPLONG(hdr->len);
+-		hdr->caplen = SWAPLONG(hdr->caplen);
++		hdr->ts.tv_sec = SWAPLONG(hdri.ts.tv_sec);
++		hdr->ts.tv_usec = SWAPLONG(hdri.ts.tv_usec);
++		hdr->len = SWAPLONG(hdri.len);
++		hdr->caplen = SWAPLONG(hdri.caplen);
++		}
++	else
++		{
++		hdr->ts.tv_sec = hdri.ts.tv_sec;
++		hdr->ts.tv_usec = hdri.ts.tv_usec;
++		hdr->len = hdri.len;
++		hdr->caplen = hdri.caplen;
+ 		}
+-
+ 	/*
+ 	 * From bpf/libpcap/savefile.c:
+ 	 *
+--- tcpslice-1.2a3.orig/tcpslice.h	1995-11-02 00:40:53.000000000 +0100
++++ tcpslice-1.2a3/tcpslice.h	2006-07-28 14:56:55.000000000 +0200
+@@ -20,6 +20,26 @@
+  */
+ 
+ 
++#include <time.h>
++/* #include <net/bpf.h> */
++
++/*
++ * This is a timeval as stored in disk in a dumpfile.
++ * It has to use the same types everywhere, independent of the actual
++ * `struct timeval'
++ */
++
++struct pcap_timeval {
++    bpf_int32 tv_sec;           /* seconds */
++    bpf_int32 tv_usec;          /* microseconds */
++};
++
++struct pcap_sf_pkthdr {
++    struct pcap_timeval ts;     /* time stamp */
++    bpf_u_int32 caplen;         /* length of portion present */
++    bpf_u_int32 len;            /* length this packet (off wire) */
++};
++
+ time_t	gwtm2secs( struct tm *tm );
+ 
+ int	sf_find_end( struct pcap *p, struct timeval *first_timestamp,
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpslice/tcpslice-CVS.20010207-bpf.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpslice/tcpslice-CVS.20010207-bpf.patch
new file mode 100644
index 0000000..0a73593
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpslice/tcpslice-CVS.20010207-bpf.patch
@@ -0,0 +1,15 @@
+Upstream-Status: Pending [from tcpdump-4.1.1-1.fc14.src.rpm]
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+diff -ur tcpdump-3.8.1/tcpslice/tcpslice.c tcpdump-3.8.1.new/tcpslice/tcpslice.c
+--- tcpslice/tcpslice.c	2004-01-15 17:35:53.000000000 +0100
++++ tcpslice/tcpslice.c	2004-01-15 16:12:57.000000000 +0100
+@@ -35,7 +35,7 @@
+ #include <sys/file.h>
+ #include <sys/stat.h>
+ 
+-#include <net/bpf.h>
++/* #include <net/bpf.h> */
+ 
+ #include <ctype.h>
+ #ifdef HAVE_FCNTL_H
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpslice_1.2a3.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpslice_1.2a3.bb
new file mode 100644
index 0000000..293760f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpdump/tcpslice_1.2a3.bb
@@ -0,0 +1,36 @@
+SUMMARY = "tcpslice"
+DESCRIPTION = "A tool for extracting parts of a tcpdump packet trace."
+HOMEPAGE = "http://www.tcpdump.org/related.html"
+SECTION = "net"
+
+LICENSE = "BSD-4-Clause"
+LIC_FILES_CHKSUM = "file://tcpslice.c;endline=20;md5=99519e2e5234d1662a4ce16baa62c64e"
+
+SRC_URI = "ftp://ftp.ee.lbl.gov/${BP}.tar.gz \
+           file://tcpslice-1.2a3-time.patch \
+           file://tcpslice-CVS.20010207-bpf.patch \
+           "
+SRC_URI[md5sum] = "e329cbeb7e589f132d92c3447c477190"
+SRC_URI[sha256sum] = "4096e8debc898cfaa16b5306f1c42f8d18b19e30e60da8d4deb781c8f684c840"
+
+inherit autotools-brokensep
+
+DEPENDS += "libpcap"
+
+# We do not want to autoreconf.  We must specify srcdir as ".".
+# We have to set the ac_cv_* cache variables as well as pass the normal
+# cross-compilation options to configure!
+#
+do_configure () {
+	oe_runconf \
+            --srcdir="." \
+            ac_cv_build=${BUILD_SYS} \
+            ac_cv_host=${HOST_SYS} \
+            ac_cv_target=${HOST_SYS}
+}
+
+do_install () {
+	mkdir -p ${D}/usr/sbin
+	install -c -m 555 tcpslice ${D}/usr/sbin
+}
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-cross-compile.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-cross-compile.patch
new file mode 100755
index 0000000..a856b18
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-cross-compile.patch
@@ -0,0 +1,92 @@
+Uptream-Status: Pending
+
+Signed-off-by: Zongchun Yu <Zongchun.Yu@freescale.com>
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -402,7 +402,6 @@
+ 
+ dnl 0.9.6 (which is still thinks it is 0.9.5 due to a bug) introduces an important
+ dnl fix for OSX.  See: http://tcpreplay.synfin.net/trac/ticket/167
+-libpcap_version_096=no
+ AC_RUN_IFELSE(AC_LANG_PROGRAM([[
+ #include <string.h>
+ #include <stdlib.h>
+@@ -419,11 +418,12 @@
+             exit(0);
+ 
+     exit(1);
+-]]), [
+-    libpcap_version_096=yes
+-])
++]]),
++ [libpcap_version_096=yes],
++ [libpcap_version_096=no],
++ [libpcap_version_096=yes]
++)
+ 
+-libpcap_ver8=no
+ AC_RUN_IFELSE(AC_LANG_PROGRAM([[
+ #include <string.h>
+ #include <stdlib.h>
+@@ -444,13 +444,12 @@
+         exit(0);
+ 
+     exit(1);
+-]]), [
+-    libpcap_ver8=yes
+-], [
+-    libpcap_ver8=no
+-])
++]]),
++ [libpcap_ver8=yes],
++ [libpcap_ver8=no],
++ [libpcap_ver8=yes]
++)
+ 
+-libpcap_ver7=no
+ AC_RUN_IFELSE(AC_LANG_PROGRAM([[
+ #include <string.h>
+ #include <stdlib.h>
+@@ -469,11 +468,11 @@
+             exit(0);
+ 
+     exit(1);
+-]]), [
+-    libpcap_ver7=yes
+-], [
+-    libpcap_ver7=no
+-])
++]]),
++ [libpcap_ver7=yes],
++ [libpcap_ver7=no],
++ [libpcap_ver7=yes]
++)
+ 
+ if test x$libpcap_ver8 = xyes ; then
+     AC_MSG_RESULT(>= 0.8.0)
+@@ -761,8 +760,8 @@
+ 
+ have_bpf=no
+ dnl Check for BSD's BPF
+-AC_MSG_CHECKING(for BPF device sending support)
+-AC_TRY_RUN([
++AC_CACHE_CHECK([for BPF device sending support], ac_cv_have_bpf,
++[AC_TRY_RUN([
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <sys/types.h>
+@@ -796,8 +795,11 @@
+             [Do we have BPF device support?])
+     AC_MSG_RESULT(yes)
+     have_bpf=yes
+-],[
+-    AC_MSG_RESULT(no)
++],
++[AC_MSG_RESULT(no)],
++[AC_MSG_ERROR([cross-compiling,
++  presetting ac_cv_have_bpf=(yes|no) will help])]
++)
+ ])
+ 
+ 
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-fix-unable-to-link-libpcap-issue.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-fix-unable-to-link-libpcap-issue.patch
new file mode 100644
index 0000000..5f36c68
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-fix-unable-to-link-libpcap-issue.patch
@@ -0,0 +1,17 @@
+Uptream-Status: Pending
+
+Signed-off-by: Zongchun Yu <Zongchun.Yu@freescale.com>
+
+Index: tcpreplay-3.4.4/configure.ac
+===================================================================
+--- tcpreplay-3.4.4.orig/configure.ac
++++ tcpreplay-3.4.4/configure.ac
+@@ -389,7 +389,7 @@ CFLAGS="$CFLAGS -I$LPCAPINCDIR"
+ AC_SEARCH_LIBS([pcap_close], [pcap],
+     LPCAPLIB="$LIBS",
+     AC_ERROR([Unable to link libpcap in ${foundpcap}]),
+-    -lnl)
++    -lnl-3)
+ 
+ AC_SUBST(LPCAPINC)
+ AC_SUBST(LPCAPLIB)
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-improve-search-for-libpcap.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-improve-search-for-libpcap.patch
new file mode 100644
index 0000000..50f024c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-improve-search-for-libpcap.patch
@@ -0,0 +1,33 @@
+tcpreplay: improve search for libpcap
+
+Add a test which will find libpcap if $testdir/.. is a sysroot.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -350,14 +350,20 @@ for testdir in $trypcapdir /usr/local /o
+     if test -f "${testdir}/include/pcap.h" -a $foundpcap = no ; then
+         LPCAPINC="${testdir}/include/pcap.h"
+         LPCAPINCDIR="${testdir}/include"
++        # If testdir/.. is a sysroot, then sDir should point to where the libraries are.
++        sDir=$(readlink -m ${testdir}/../${libdir})
+         if test $dynamic_link = yes; then
+-            if test -f "${testdir}/lib64/libpcap${shrext_cmds}" ; then
++            if test -f "${sDir}/libpcap${shrext_cmds}" ; then
++                LPCAPLIB="-L${sDir} -lpcap"
++            elif test -f "${testdir}/lib64/libpcap${shrext_cmds}" ; then
+                 LPCAPLIB="-L${testdir}/lib64 -lpcap"
+             elif test -f "${testdir}/lib/libpcap${shrext_cmds}" ; then
+                 LPCAPLIB="-L${testdir}/lib -lpcap"
+             else
+                 AC_ERROR([Unable to find libpcap in ${testdir}])
+             fi
++        elif test -f "${sDir}/libpcap.${libext}" ; then
++            LPCAPLIB="${sDir}/libpcap.${libext}"
+         elif test -f "${testdir}/lib64/libpcap.${libext}" ; then
+             LPCAPLIB="${testdir}/lib64/libpcap.${libext}"
+         elif test -f "${testdir}/lib/libpcap.${libext}" ; then
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-no-bfp-support.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-no-bfp-support.patch
new file mode 100644
index 0000000..3c11c92
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/files/tcpreplay-3.4.4-no-bfp-support.patch
@@ -0,0 +1,15 @@
+Uptream-Status: Pending
+
+Signed-off-by: Zongchun Yu <Zongchun.Yu@freescale.com>
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -758,6 +758,8 @@
+     AC_MSG_RESULT(no)
+ ])
+ 
++ac_cv_have_bpf=no
++
+ have_bpf=no
+ dnl Check for BSD's BPF
+ AC_CACHE_CHECK([for BPF device sending support], ac_cv_have_bpf,
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_3.4.4.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_3.4.4.bb
new file mode 100644
index 0000000..ccbab9f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_3.4.4.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Use previously captured traffic to test network devices"
+
+HOMEPAGE = "http://tcpreplay.synfin.net/"
+SECTION = "net"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://docs/LICENSE;md5=c33cccf72cc1603e8a72a84811ae3ac8"
+
+SRC_URI = "http://prdownloads.sourceforge.net/tcpreplay/${PV}/tcpreplay-${PV}.tar.gz \
+           file://tcpreplay-3.4.4-cross-compile.patch \
+           file://tcpreplay-3.4.4-no-bfp-support.patch \
+           file://tcpreplay-3.4.4-fix-unable-to-link-libpcap-issue.patch \
+           file://tcpreplay-3.4.4-improve-search-for-libpcap.patch \
+           "
+SRC_URI[md5sum] = "22725feb9b2590809f9350308ec65180"
+SRC_URI[sha256sum] = "7a809c58ddec86407fd6e5597ac883d7874a19bea81d716bb2b1c6e3b0e7b58f"
+
+DEPENDS = "libpcap"
+
+EXTRA_OECONF += "--with-libpcap=${STAGING_DIR_HOST}/usr"
+
+inherit siteinfo autotools-brokensep
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tnftp/tnftp/tnftp-autotools.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/tnftp/tnftp/tnftp-autotools.patch
new file mode 100644
index 0000000..1bda576
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tnftp/tnftp/tnftp-autotools.patch
@@ -0,0 +1,42 @@
+[PATCH] Update configure.ac and Makefile.am to resolve warnings/errors
+
+Upstream-Status: Pending
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ configure.ac          |    2 ++
+ libnetbsd/Makefile.am |    2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index a96d2ab..b3b3069 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -71,9 +71,11 @@ AH_TEMPLATE([WITH_SSL],
+ #
+ # Checks for programs.
+ #
++AM_PROG_AR()
+ AC_PROG_CC()
+ AC_PROG_AWK()
+ AC_PROG_LIBTOOL()
++AM_PROG_CC_C_O()
+ 
+ #
+ # Checks for tool features.
+diff --git a/libnetbsd/Makefile.am b/libnetbsd/Makefile.am
+index 3e5c3ce..39bb12d 100644
+--- a/libnetbsd/Makefile.am
++++ b/libnetbsd/Makefile.am
+@@ -5,7 +5,7 @@ noinst_LTLIBRARIES = libnetbsd.la
+ libnetbsd_la_SOURCES =
+ 
+ 
+-CPPFLAGS = \
++AM_CPPFLAGS = \
+ 	-I$(srcdir) \
+ 	-I$(top_srcdir) \
+ 	-I$(top_builddir)
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tnftp/tnftp_20130505.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/tnftp/tnftp_20130505.bb
new file mode 100644
index 0000000..7d1c515
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tnftp/tnftp_20130505.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Enhanced NetBSD ftp client"
+DESCRIPTION = "tnftp (formerly known as lukemftp) is a port of the NetBSD FTP client \
+to other systems. It offers many enhancements over the traditional \
+BSD FTP client, including command-line editing, command-line fetches \
+of FTP and HTTP URLs (including via proxies), command-line uploads of \
+FTP URLs, context-sensitive word completion, dynamic progress bar, \
+IPv6 support, modification time preservation, paging of local and \
+remote files, passive mode support (with fallback to active mode), \
+SOCKS support, TIS FWTK gate-ftp server support, and transfer rate \
+throttling."
+
+SECTION = "net"
+LICENSE = "BSD-4-Clause"
+
+DEPENDS = "ncurses"
+
+SRC_URI = "ftp://ftp.netbsd.org/pub/NetBSD/misc/tnftp/${BPN}-${PV}.tar.gz \
+	   file://tnftp-autotools.patch \
+	  "
+
+inherit autotools update-alternatives pkgconfig
+
+ALTERNATIVE_PRIORITY = "100"
+
+ALTERNATIVE_${PN} = "ftp"
+ALTERNATIVE_LINK_NAME_${PN} = "${bindir}/ftp"
+ALTERNATIVE_TARGET_${PN}  = "${bindir}/tnftp"
+
+FILES_${PN} = "${bindir}/tnftp"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6d6796cb166a9bb050958241dad9479e"
+SRC_URI[md5sum] = "66e218d02ec7d9fc39ab70ba2900305a"
+SRC_URI[sha256sum] = "6f650e25f6fd51538f677b789b49379f367ae9f1dee74c94cfe24d92abc2cffb"
+
+PACKAGECONFIG ?= "openssl"
+PACKAGECONFIG[openssl] = "--enable-ssl, --disable-ssl --with-ssl=no, openssl"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/traceroute/traceroute/filter-out-the-patches-from-subdirs.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/traceroute/traceroute/filter-out-the-patches-from-subdirs.patch
new file mode 100644
index 0000000..2c030b5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/traceroute/traceroute/filter-out-the-patches-from-subdirs.patch
@@ -0,0 +1,47 @@
+From e273e0ebc753645555909bcc4874c72458b17891 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Fri, 17 Jan 2014 03:17:44 -0500
+Subject: [PATCH] Make.rules: filter-out the patches from subdirs
+
+The $(subdirs) contains all the dirs under the ${B}, and this one:
+
+do_unpack[cleandirs] = "${S}/patches"
+
+will create a "patches" dir, then there will be compile errors, filter
+out the patches will fix the problem.
+
+Note: poky doesn't have this problem since it separates the ${S} and
+${B}
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ Make.rules |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Make.rules b/Make.rules
+index b077cd5..0bfce2d 100644
+--- a/Make.rules
++++ b/Make.rules
+@@ -97,7 +97,7 @@ endif
+ subdirs := $(filter-out $(SKIPDIRS), $(subdirs))
+ endif
+ 
+-install install-%: subdirs := $(filter-out $(SKIPINSTALL), $(subdirs))
++install install-%: subdirs := $(filter-out $(SKIPINSTALL) patches, $(subdirs))
+ 
+ 
+ override MAKE += srcdir=$(srcdir) subdirs="$(subdirs)" shared=$(shared)
+@@ -106,7 +106,7 @@ override MAKE += srcdir=$(srcdir) subdirs="$(subdirs)" shared=$(shared)
+ INCLUDEDIRS := $(filter $(INCLUDEDIRS), $(subdirs))
+ LIBDIRS := $(filter $(LIBDIRS), $(subdirs))
+ MODDIRS := $(filter $(MODDIRS), $(subdirs))
+-EXEDIRS := $(filter-out $(INCLUDEDIRS) $(LIBDIRS) $(MODDIRS), $(subdirs))
++EXEDIRS := $(filter-out $(INCLUDEDIRS) $(LIBDIRS) $(MODDIRS) patches, $(subdirs))
+ MODUSERS := $(filter $(MODUSERS), $(subdirs))
+ SBINUSERS := $(filter $(SBINUSERS), $(subdirs))
+ 
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/traceroute/traceroute_2.0.21.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/traceroute/traceroute_2.0.21.bb
new file mode 100644
index 0000000..09da1ef
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/traceroute/traceroute_2.0.21.bb
@@ -0,0 +1,45 @@
+SUMMARY = "A new modern implementation of traceroute(8) utility for Linux systems"
+DESCRIPTION = "The traceroute utility displays the route used by IP packets on \
+their way to a specified network (or Internet) host.  Traceroute displays \
+the IP number and host name (if possible) of the machines along the \
+route taken by the packets.  Traceroute is used as a network debugging \
+tool.  If you're having network connectivity problems, traceroute will \
+show you where the trouble is coming from along the route."
+SECTION = "net"
+HOMEPAGE = "http://traceroute.sourceforge.net/"
+LICENSE = "GPL-2.0+ & LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
+
+inherit update-alternatives
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/traceroute/traceroute/${BP}/${BP}.tar.gz \
+           file://filter-out-the-patches-from-subdirs.patch \
+"
+
+SRC_URI[md5sum] = "79289adabd6f3ebf9160fc0815ab3150"
+SRC_URI[sha256sum] = "f7ac93ef30b13a587292b8d6a7e2538a65bc978a3a576eab238c392b884e96e0"
+
+EXTRA_OEMAKE = "VPATH=${STAGING_LIBDIR}"
+
+do_compile() {
+    export LDFLAGS="${TARGET_LDFLAGS} -L${S}/libsupp"
+    oe_runmake "env=yes"
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m755 ${BPN}/${BPN} ${D}${bindir}
+
+    install -m755 wrappers/tcptraceroute ${D}${bindir}
+
+    install -d ${D}${mandir}
+    install -p -m644 ${BPN}/${BPN}.8 ${D}${mandir}
+    ln -s ${BPN}.8 ${D}${mandir}/${BPN}6.8
+    ln -s ${BPN}.8 ${D}${mandir}/tcptraceroute.8
+
+}
+
+ALTERNATIVE_PRIORITY = "60"
+ALTERNATIVE_${PN} = "traceroute"
+ALTERNATIVE_LINK_NAME[traceroute] = "${bindir}/traceroute"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tunctl/tunctl.inc b/import-layers/meta-openembedded/meta-networking/recipes-support/tunctl/tunctl.inc
new file mode 100644
index 0000000..e95cfa5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tunctl/tunctl.inc
@@ -0,0 +1,15 @@
+SUMMARY = "Tool for controlling the Linux TUN/TAP driver"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://tunctl.c;beginline=1;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/tunctl/tunctl-${PV}.tar.gz"
+
+do_compile() {
+    oe_runmake tunctl
+}
+
+do_install() {
+    install -d ${D}/${sbindir}
+    install -m 755 tunctl ${D}/${sbindir}
+}
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/tunctl/tunctl_1.5.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/tunctl/tunctl_1.5.bb
new file mode 100644
index 0000000..dd26561
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/tunctl/tunctl_1.5.bb
@@ -0,0 +1,4 @@
+require tunctl.inc
+
+SRC_URI[md5sum] = "fdbedc263b3e85bb0e087cd567414607"
+SRC_URI[sha256sum] = "aa2a6c4cc6bfacb11e0d9f62334a6638a0d435475c61230116f00b6af8b14fff"
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/wireshark/README b/import-layers/meta-openembedded/meta-networking/recipes-support/wireshark/README
new file mode 100644
index 0000000..63b5b72
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/wireshark/README
@@ -0,0 +1,45 @@
+#
+Wireshark - Notes
+
+URL: http://www.wireshark.org/
+User Guide: http://www.wireshark.org/docs/wsug_html_chunked/
+Secruity advisories: http://www.wireshark.org/security/
+
+Wireshark is slowly moving away from gtk and towards QT as their graphical stack.
+Currently gtk is supported with this release and I plan on integrating QT. 
+
+
+
+Adding the wireshark to your build
+========================================
+
+via local.conf
+IMAGE_INSTALL_append = " wireshark"
+
+Adding the wireshark to your graphical build
+========================================
+via local.conf
+IMAGE_INSTALL_append = " wireshark"
+
+and one of:
+
+EXTRA_IMAGE_FEATURES += "x11-base"
+
+or use the "core-image-x11"
+
+
+Maintenance
+-----------
+
+Send patches, comments or questions to openembedded-devel@lists.openembedded.org
+
+When sending single patches, please use something like:
+
+   git send-email -1 -M \
+       --to openembedded-devel@lists.openembedded.org \
+       --cc akuster@mvista.com \
+       --subject-prefix=meta-networking][PATCH
+
+Maintainer:    Armin Kuster <akuster@mvista.com>
+
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/wireshark/files/Do-not-set-CC_FOR_BUILD-flags.patch b/import-layers/meta-openembedded/meta-networking/recipes-support/wireshark/files/Do-not-set-CC_FOR_BUILD-flags.patch
new file mode 100644
index 0000000..64a08ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/wireshark/files/Do-not-set-CC_FOR_BUILD-flags.patch
@@ -0,0 +1,46 @@
+[PATCH] Do not set CC_FOR_BUILD flags
+
+Upstream-status: Pending
+
+AC_WIRESHARK_COMPILER_FLAGS_CHECK() is checking which options CC is supported,
+and put the supported options into CFLAGS, but it should not put them into 
+CFLAGS_FOR_BUILD. since CC and BUILD_CC can be different, CFLAGS_FOR_BUILD is
+used by BUILD_CC 
+
+BUILD_CC is used to generated host tools, do not use the gcc's optimised options,
+do not effect the running of host tools. so do not set CC_FOR_BUILD flags.
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ acinclude.m4 | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 136fc27..8d3d360 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -1755,10 +1755,6 @@ if test "x$ac_supports_gcc_flags" = "xyes" ; then
+               # just the new option.
+               #
+               CFLAGS="$CFLAGS_saved $GCC_OPTION"
+-              #
+-              # Add it to the flags we use when building build tools.
+-              #
+-              CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD $GCC_OPTION"
+             ],
+             [
+               AC_MSG_RESULT(yes)
+@@ -1771,10 +1767,6 @@ if test "x$ac_supports_gcc_flags" = "xyes" ; then
+           # just the new option.
+           #
+           CFLAGS="$CFLAGS_saved $GCC_OPTION"
+-          #
+-          # Add it to the flags we use when building build tools.
+-          #
+-          CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD $GCC_OPTION"
+         fi
+       ],
+       [
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_2.0.2.bb b/import-layers/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_2.0.2.bb
new file mode 100644
index 0000000..f306172
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_2.0.2.bb
@@ -0,0 +1,60 @@
+DESCRIPTION = "wireshark - a popular network protocol analyzer"
+HOMEPAGE = "http://www.wireshark.org"
+SECTION = "net"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://README.linux;md5=631e077455b7972172eb149195e065b0"
+
+DEPENDS = "perl-native pcre expat glib-2.0 sbc"
+
+SRC_URI = "https://2.na.dl.wireshark.org/src/all-versions/${BP}.tar.bz2"
+
+SRC_URI[md5sum] = "204d053e0796c7da09292e0b54bc8503"
+SRC_URI[sha256sum] = "e921fb072085a5654d899949bb561d0687f4819f7b63ba35777bb949a9b6b9c1"
+
+PE = "1"
+
+inherit autotools pkgconfig
+
+ARM_INSTRUCTION_SET = "arm"
+
+# Works with either gtk+ or gtk3.
+WHICH_GTK = "gtk+"
+
+PACKAGECONFIG ?= "libpcap gnutls libnl libcap"
+PACKAGECONFIG += " ${@bb.utils.contains("DISTRO_FEATURES", "x11", "gtk2 graphics", "", d)}"
+PACKAGECONFIG += " ${@bb.utils.contains("DISTRO_FEATURES", "ipv6", "ipv6", "", d)}"
+#PACKAGECONFIG += " ${@bb.utils.contains("DISTRO_FEATURES", "opengl", "gtk3", "", d)}"
+
+PACKAGECONFIG[libcap] = "--with-libcap=${STAGING_LIBDIR}, --with-libcap=no --enable-pcap-ng-default , libcap"
+PACKAGECONFIG[libpcap] = "--with-pcap=${STAGING_LIBDIR} --with-pcap-remote, --with-pcap=no --enable-pcap-ng-default  , libpcap"
+PACKAGECONFIG[libsmi] = "--with-libsmi=yes, --with-libsmi=no, libsmi"
+PACKAGECONFIG[libnl] = "--with-libnl=yes, --with-libnl=no, libnl"
+PACKAGECONFIG[portaudio] = "--with-portaudio=yes, --with-portaudio=no, portaudio-v19"
+PACKAGECONFIG[gtk2] = "--with-gtk2=yes, --with-gtk2=no, gtk+"
+PACKAGECONFIG[gtk3] = "--with-gtk3=yes, --with-gtk3=no, gtk+3"
+PACKAGECONFIG[graphics] = "--enable-wireshark, --disable-wireshark,"
+PACKAGECONFIG[ipv6] = "--enable-ipv6, --disable-ipv6,"
+PACKAGECONFIG[gnutls] = "--with-gnutls=yes, --with-gnutls=no, gnutls"
+PACKAGECONFIG[gcrypt] = "--with-gcrypt=yes, --with-gcrypt=no, libgcrypt"
+PACKAGECONFIG[ssl] = "--with-ssl=yes, --with-ssl=no, openssl"
+PACKAGECONFIG[krb5] = "--with-krb5=yes, --with-krb5=no, krb5"
+PACKAGECONFIG[lua] = "--with-lua=yes, --with-lua=no, lua"
+PACKAGECONFIG[zlib] = "--with-zlib=yes, --with-zlib=no, zlib"
+PACKAGECONFIG[geoip] = "--with-geoip=yes, --with-geoip=no, geoip"
+PACKAGECONFIG[plugins] = "--with-plugins=yes, --with-plugins=no"
+
+# these next two options require addional layers
+PACKAGECONFIG[adns] = "--with-adns=yes, --with-adns=no, adns"
+PACKAGECONFIG[c-ares] = "--with-c-ares=yes, --with-c-ares=no, c-ares"
+
+EXTRA_OECONF += "--with-qt=no --enable-usr-local=no --enable-tshark --enable-rawshark"
+
+do_configure_prepend() {
+    # force to use fallback 
+    sed -i -e '/^glib_prefix/s/=.*$/=""/' ${S}/aclocal-flags
+}
+
+ALLOW_EMPTY_${PN} = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+
+FILES_${PN} += "${datadir}*"
diff --git a/import-layers/meta-openembedded/meta-oe/COPYING.MIT b/import-layers/meta-openembedded/meta-oe/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-oe/README b/import-layers/meta-openembedded/meta-oe/README
new file mode 100644
index 0000000..a564c29
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/README
@@ -0,0 +1,15 @@
+This layer depends on:
+
+URI: git://github.com/openembedded/oe-core.git
+branch: krogoth
+revision: HEAD
+
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-oe][krogoth]' in the subject'
+
+When sending single patches, please use something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-oe][krogoth][PATCH'
+
+You are encouraged to fork the mirror on github https://github.com/openembedded/meta-oe/ to share your patches, this is preferred for patch sets consisting of more than one patch. Other services like gitorious, repo.or.cz or self hosted setups are of course accepted as well, 'git fetch <remote>' works the same on all of them. We recommend github because it is free, easy to use, has been proven to be reliable and has a really good web GUI.
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
diff --git a/import-layers/meta-openembedded/meta-oe/classes/breakpad.bbclass b/import-layers/meta-openembedded/meta-oe/classes/breakpad.bbclass
new file mode 100644
index 0000000..b3abf27
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/classes/breakpad.bbclass
@@ -0,0 +1,33 @@
+# Class to inherit when you want to build against Breakpad.
+# Apart from inheriting this class, you need to set BREAKPAD_BIN in
+# your recipe, and make sure that you link against libbreakpad_client.a.
+
+DEPENDS += "breakpad breakpad-native"
+
+CFLAGS += "-I${STAGING_DIR_TARGET}${includedir}/breakpad "
+CXXFLAGS += "-I${STAGING_DIR_TARGET}${includedir}/breakpad "
+
+BREAKPAD_BIN ?= ""
+
+python () {
+    breakpad_bin = d.getVar("BREAKPAD_BIN", True)
+
+    if not breakpad_bin:
+       PN = d.getVar("PN", True)
+       FILE = os.path.basename(d.getVar("FILE", True))
+       bb.error("To build %s, see breakpad.bbclass for instructions on \
+                 setting up your Breakpad configuration" % PN)
+       raise ValueError('BREAKPAD_BIN not defined in %s' % PN)
+}
+
+# Add creation of symbols here
+PACKAGE_PREPROCESS_FUNCS += "breakpad_package_preprocess"
+breakpad_package_preprocess () {
+    mkdir -p ${PKGD}/usr/share/breakpad-syms
+    find ${D} -name ${BREAKPAD_BIN} -exec sh -c "dump_syms {} > ${PKGD}/usr/share/breakpad-syms/${BREAKPAD_BIN}.sym" \;
+}
+
+PACKAGES =+ "${PN}-breakpad"
+
+FILES_${PN}-breakpad = "/usr/share/breakpad-syms"
+
diff --git a/import-layers/meta-openembedded/meta-oe/classes/gitpkgv.bbclass b/import-layers/meta-openembedded/meta-oe/classes/gitpkgv.bbclass
new file mode 100644
index 0000000..1cba00c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/classes/gitpkgv.bbclass
@@ -0,0 +1,113 @@
+# gitpkgv.bbclass provides a GITPKGV and GITPKGVTAG variables to be
+# used in PKGV, as described bellow:
+#
+# - GITPKGV which is a sortable version with the format NN+GITHASH, to
+#   be used in PKGV, where
+#
+#   NN equals the total number of revs up to SRCREV
+#   GITHASH is SRCREV's (full) hash
+#
+# - GITPKGVTAG which is the output of 'git describe' allowing for
+#   automatic versioning
+#
+# gitpkgv.bbclass assumes the git repository has been cloned, and
+# contains SRCREV. So ${GITPKGV} and ${GITPKGVTAG} should never be
+# used in PV, only in PKGV.  It can handle SRCREV = ${AUTOREV}, as
+# well as SRCREV = "<some fixed git hash>".
+#
+# WARNING: if upstream repository is always using consistent and
+# sortable tag name scheme you can get sortable version including tag
+# name with ${GITPKGVTAG}, but be aware that ie tag sequence "v1.0,
+# v1.2, xtest, v2.0" will force you to increment PE to get upgradeable
+# path to v2.0 revisions
+#
+# use example:
+#
+# inherit gitpkgv
+#
+# PV = "1.0+gitr${SRCPV}"      # expands to something like 1.0+gitr3+4c1c21d7dbbf93b0df336994524313dfe0d4963b
+# PKGV = "1.0+gitr${GITPKGV}"  # expands also to something like 1.0+gitr31337+4c1c21d7d
+#
+# or
+#
+# inherit gitpkgv
+#
+# PV = "1.0+gitr${SRCPV}" # expands to something like 1.0+gitr3+4c1c21d7dbbf93b0df336994524313dfe0d4963b
+# PKGV = "${GITPKGVTAG}"  # expands to something like 1.0-31337+g4c1c21d
+#                           if there is tag v1.0 before this revision or
+#                           ver1.0-31337+g4c1c21d if there is tag ver1.0
+
+GITPKGV = "${@get_git_pkgv(d, False)}"
+GITPKGVTAG = "${@get_git_pkgv(d, True)}"
+
+def gitpkgv_drop_tag_prefix(version):
+    import re
+    if re.match("v\d", version):
+        return version[1:]
+    else:
+        return version
+
+def get_git_pkgv(d, use_tags):
+    import os
+    import bb
+    from pipes import quote
+
+    src_uri = d.getVar('SRC_URI', 1).split()
+    fetcher = bb.fetch2.Fetch(src_uri, d)
+    ud = fetcher.ud
+
+    #
+    # If SRCREV_FORMAT is set respect it for tags
+    #
+    format = d.getVar('SRCREV_FORMAT', True)
+    if not format:
+        format = 'default'
+
+    found = False
+    for url in ud.values():
+        if url.type == 'git' or url.type == 'gitsm':
+            for name, rev in url.revisions.items():
+                if not os.path.exists(url.localpath):
+                    return None
+
+                found = True
+
+                vars = { 'repodir' : quote(url.localpath),
+                         'rev' : quote(rev) }
+
+                rev = bb.fetch2.get_srcrev(d).split('+')[1]
+                rev_file = os.path.join(url.localpath, "oe-gitpkgv_" + rev)
+
+                if not os.path.exists(rev_file) or os.path.getsize(rev_file)==0:
+                    commits = bb.fetch2.runfetchcmd(
+                        "cd %(repodir)s && "
+                        "git rev-list %(rev)s -- 2> /dev/null "
+                        "| wc -l" % vars,
+                        d, quiet=True).strip().lstrip('0')
+
+                    if commits != "":
+                        oe.path.remove(rev_file, recurse=False)
+                        open(rev_file, "w").write("%d\n" % int(commits))
+                    else:
+                        commits = "0"
+                else:
+                    commits = open(rev_file, "r").readline(128).strip()
+
+                if use_tags:
+                    try:
+                        output = bb.fetch2.runfetchcmd(
+                            "cd %(repodir)s && "
+                            "git describe %(rev)s 2>/dev/null" % vars,
+                            d, quiet=True).strip()
+                        ver = gitpkgv_drop_tag_prefix(output)
+                    except Exception:
+                        ver = "0.0-%s-g%s" % (commits, rev[:7])
+                else:
+                    ver = "%s+%s" % (commits, rev[:7])
+
+                format = format.replace(name, ver)
+
+    if found:
+        return format
+
+    return '0+0'
diff --git a/import-layers/meta-openembedded/meta-oe/classes/gitver.bbclass b/import-layers/meta-openembedded/meta-oe/classes/gitver.bbclass
new file mode 100644
index 0000000..e7b5155
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/classes/gitver.bbclass
@@ -0,0 +1,75 @@
+# Copyright (C) 2009 Chris Larson <clarson@kergoth.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+#
+# gitver.bbclass provides a GITVER variable which is a (fairly) sane version,
+# for use in ${PV}, extracted from the ${S} git checkout, assuming it is one.
+# This is most useful in concert with srctree.bbclass.
+
+def git_drop_tag_prefix(version):
+    import re
+    if re.match("v\d", version):
+        return version[1:]
+    else:
+        return version
+
+GIT_TAGADJUST = "git_drop_tag_prefix(version)"
+GITVER = "${@get_git_pv('${S}', d, tagadjust=lambda version:${GIT_TAGADJUST})}"
+GITSHA = "${@get_git_hash('${S}', d)}"
+
+def gitrev_run(cmd, path):
+    (output, error) = bb.process.run(cmd, cwd=path)
+    return output.rstrip()
+
+def get_git_pv(path, d, tagadjust=None):
+    import os
+    import bb.process
+
+    gitdir = os.path.abspath(os.path.join(d.getVar("S", True), ".git"))
+    try:
+        ver = gitrev_run("git describe --tags", gitdir)
+    except Exception, exc:
+        bb.fatal(str(exc))
+
+    if not ver:
+        try:
+            ver = gitrev_run("git rev-parse --short HEAD", gitdir)
+        except Exception, exc:
+            bb.fatal(str(exc))
+
+        if ver:
+            return "0.0+%s" % ver
+        else:
+            return "0.0"
+    else:
+        if tagadjust:
+            ver = tagadjust(ver)
+        return ver
+
+def mark_recipe_dependencies(path, d):
+    from bb.parse import mark_dependency
+
+    gitdir = os.path.join(path, ".git")
+
+    # Force the recipe to be reparsed so the version gets bumped
+    # if the active branch is switched, or if the branch changes.
+    mark_dependency(d, os.path.join(gitdir, "HEAD"))
+
+    # Force a reparse if anything in the index changes.
+    mark_dependency(d, os.path.join(gitdir, "index"))
+
+    try:
+        ref = gitrev_run("git symbolic-ref -q HEAD", gitdir)
+    except bb.process.CmdError:
+        pass
+    else:
+        if ref:
+            mark_dependency(d, os.path.join(gitdir, ref))
+
+    # Catch new tags.
+    tagdir = os.path.join(gitdir, "refs", "tags")
+    if os.path.exists(tagdir):
+        mark_dependency(d, tagdir)
+
+python () {
+    mark_recipe_dependencies(d.getVar("S", True), d)
+}
diff --git a/import-layers/meta-openembedded/meta-oe/classes/gpe.bbclass b/import-layers/meta-openembedded/meta-oe/classes/gpe.bbclass
new file mode 100644
index 0000000..9fc1365
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/classes/gpe.bbclass
@@ -0,0 +1,17 @@
+DEPENDS_prepend = "virtual/libintl intltool-native "
+GPE_TARBALL_SUFFIX ?= "gz"
+SRC_URI = "${GPE_MIRROR}/${BP}.tar.${GPE_TARBALL_SUFFIX}"
+FILES_${PN} += "${datadir}/gpe ${datadir}/application-registry"
+SECTION ?= "gpe"
+
+inherit gettext
+
+gpe_do_compile() {
+    oe_runmake PREFIX=${prefix}
+}
+
+gpe_do_install() {
+    oe_runmake PREFIX=${prefix} DESTDIR=${D} install
+}
+
+EXPORT_FUNCTIONS do_compile do_install
diff --git a/import-layers/meta-openembedded/meta-oe/classes/machine_kernel_pr.bbclass b/import-layers/meta-openembedded/meta-oe/classes/machine_kernel_pr.bbclass
new file mode 100644
index 0000000..463b64d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/classes/machine_kernel_pr.bbclass
@@ -0,0 +1,8 @@
+python __anonymous () {
+
+    machine_kernel_pr = d.getVar('MACHINE_KERNEL_PR', True)
+
+    if machine_kernel_pr:
+        d.setVar('PR', machine_kernel_pr)
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/classes/socorro-syms.bbclass b/import-layers/meta-openembedded/meta-oe/classes/socorro-syms.bbclass
new file mode 100644
index 0000000..3f6ae63
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/classes/socorro-syms.bbclass
@@ -0,0 +1,231 @@
+# Inherit this class when you want to allow Mozilla Socorro to link Breakpad's
+# stack trace information to the correct source code revision.
+# This class creates a new version of the symbol file (.sym) created by
+# Breakpad. The absolute file paths in the symbol file will be replaced by VCS,
+# branch, file and revision of the source file. That information facilitates the
+# lookup of a particular source code line in the stack trace.
+#
+# Use example:
+#
+# BREAKPAD_BIN = "YourBinary"
+# inherit socorro-syms
+#
+
+# We depend on Breakpad creating the original symbol file.
+inherit breakpad
+
+PACKAGE_PREPROCESS_FUNCS += "symbol_file_preprocess"
+PACKAGES =+ "${PN}-socorro-syms"
+FILES_${PN}-socorro-syms = "/usr/share/socorro-syms"
+
+
+python symbol_file_preprocess() {
+
+    package_dir = d.getVar("PKGD", True)
+    breakpad_bin = d.getVar("BREAKPAD_BIN", True)
+    if not breakpad_bin:
+        package_name = d.getVar("PN", True)
+        bb.error("Package %s depends on Breakpad via socorro-syms. See "
+            "breakpad.bbclass for instructions on setting up the Breakpad "
+            "configuration." % package_name)
+        raise ValueError("BREAKPAD_BIN not defined in %s." % package_name)
+
+    sym_file_name = breakpad_bin + ".sym"
+
+    breakpad_syms_dir = os.path.join(
+        package_dir, "usr", "share", "breakpad-syms")
+    socorro_syms_dir = os.path.join(
+        package_dir, "usr", "share", "socorro-syms")
+    if not os.path.exists(socorro_syms_dir):
+        os.makedirs(socorro_syms_dir)
+
+    breakpad_sym_file_path = os.path.join(breakpad_syms_dir, sym_file_name)
+    socorro_sym_file_path = os.path.join(socorro_syms_dir, sym_file_name)
+
+    create_socorro_sym_file(d, breakpad_sym_file_path, socorro_sym_file_path)
+
+    arrange_socorro_sym_file(socorro_sym_file_path, socorro_syms_dir)
+
+    return
+}
+
+
+def run_command(command, directory):
+
+    (output, error) = bb.process.run(command, cwd=directory)
+    if error:
+        raise bb.process.ExecutionError(command, error)
+
+    return output.rstrip()
+
+
+def create_socorro_sym_file(d, breakpad_sym_file_path, socorro_sym_file_path):
+
+    # In the symbol file, all source files are referenced like the following.
+    # FILE 123 /path/to/some/File.cpp
+    # Go through all references and replace the file paths with repository
+    # paths.
+    with open(breakpad_sym_file_path, 'r') as breakpad_sym_file, \
+            open(socorro_sym_file_path, 'w') as socorro_sym_file:
+
+        for line in breakpad_sym_file:
+            if line.startswith("FILE "):
+                socorro_sym_file.write(socorro_file_reference(d, line))
+            else:
+                socorro_sym_file.write(line)
+
+    return
+
+
+def socorro_file_reference(d, line):
+
+    # The 3rd position is the file path. See example above.
+    source_file_path = line.split()[2]
+    source_file_repo_path = repository_path(
+        d, os.path.normpath(source_file_path))
+
+    # If the file could be found in any repository then replace it with the
+    # repository's path.
+    if source_file_repo_path:
+        return line.replace(source_file_path, source_file_repo_path)
+
+    return line
+
+
+def repository_path(d, source_file_path):
+
+    if not os.path.isfile(source_file_path):
+        return None
+
+    # Check which VCS is used and use that to extract repository information.
+    (output, error) = bb.process.run("git status",
+        cwd=os.path.dirname(source_file_path))
+    if not error:
+        # Make sure the git repository we just found wasn't the yocto repository
+        # itself, i.e. the root of the repository we're looking for must be a
+        # child of the build directory TOPDIR.
+        git_root_dir = run_command(
+            "git rev-parse --show-toplevel", os.path.dirname(source_file_path))
+        if not git_root_dir.startswith(d.getVar("TOPDIR", True)):
+            return None
+
+        return git_repository_path(source_file_path)
+
+    # Here we can add support for other VCSs like hg, svn, cvs, etc.
+
+    # The source file isn't under any VCS so we leave it be.
+    return None
+
+
+def is_local_url(url):
+
+    return \
+        url.startswith("file:") or url.startswith("/") or url.startswith("./")
+
+
+def git_repository_path(source_file_path):
+
+    import re
+
+    # We need to extract the following.
+    # (1): VCS URL, (2): branch, (3): repo root directory name, (4): repo file,
+    # (5): revision.
+
+    source_file_dir = os.path.dirname(source_file_path)
+
+    # (1) Get the VCS URL and extract the server part, i.e. change the URL from
+    # gitolite@git.someserver.com:SomeRepo.git to just git.someserver.com.
+    source_long_url = run_command(
+        "git config --get remote.origin.url", source_file_dir)
+
+    # The URL could be a local download directory. If so, get the URL again
+    # using the local directory's config file.
+    if is_local_url(source_long_url):
+        git_config_file = os.path.join(source_long_url, "config")
+        source_long_url = run_command(
+            "git config --file %s --get remote.origin.url" % git_config_file,
+            source_file_dir)
+
+        # If also the download directory redirects to a local git directory,
+        # then we're probably using source code from a local debug branch which
+        # won't be accessible by Socorro.
+        if is_local_url(source_long_url):
+            return None
+
+    # The URL can have several formats. A full list can be found using
+    # git help clone. Extract the server part with a regex.
+    url_match = re.search(".*(://|@)([^:/]*).*", source_long_url)
+    source_server = url_match.group(2)
+
+    # (2) Get the branch for this file.
+    source_branch_list = run_command("git show-branch --list", source_file_dir)
+    source_branch_match = re.search(".*?\[(.*?)\].*", source_branch_list)
+    source_branch = source_branch_match.group(1)
+
+    # (3) Since the repo root directory name can be changed without affecting
+    # git, we need to extract the name from something more reliable.
+    # The git URL has a repo name that we could use. We just need to strip off
+    # everything around it - from gitolite@git.someserver.com:SomeRepo.git/ to
+    # SomeRepo.
+    source_repo_dir = re.sub("/$", "", source_long_url)
+    source_repo_dir = re.sub("\.git$", "", source_repo_dir)
+    source_repo_dir = re.sub(".*[:/]", "", source_repo_dir)
+
+    # (4) We know the file but want to remove all of the build system dependent
+    # path up to and including the repository's root directory, e.g. remove
+    # /home/someuser/dev/repo/projectx/
+    source_toplevel = run_command(
+        "git rev-parse --show-toplevel", source_file_dir)
+    source_toplevel = source_toplevel + os.path.sep
+    source_file = source_file_path.replace(source_toplevel, "")
+
+    # (5) Get the source revision this file is part of.
+    source_revision = run_command("git rev-parse HEAD", source_file_dir)
+
+    # Assemble the repository path according to the Socorro format.
+    socorro_reference = "git:%s/%s:%s/%s:%s" % \
+        (source_server, source_branch,
+        source_repo_dir, source_file,
+        source_revision)
+
+    return socorro_reference
+
+
+def arrange_socorro_sym_file(socorro_sym_file_path, socorro_syms_dir):
+
+    import re
+
+    # Breakpad's minidump_stackwalk needs a certain directory structure in order
+    # to find correct symbols when extracting a stack trace out of a minidump.
+    # The directory structure must look like the following.
+    # YourBinary/<hash>/YourBinary.sym
+    # YourLibrary.so/<hash>/YourLibrary.so.sym
+    # To be able to create such structure we need to extract the hash value that
+    # is found in each symbol file. The header of the symbol file looks
+    # something like this:
+    # MODULE Linux x86 A079E473106CE51C74C1C25AF536CCD30 YourBinary
+    # See
+    # http://code.google.com/p/google-breakpad/wiki/LinuxStarterGuide
+
+    # Create the directory with the same name as the binary.
+    binary_dir = re.sub("\.sym$", "", socorro_sym_file_path)
+    if not os.path.exists(binary_dir):
+        os.makedirs(binary_dir)
+
+    # Get the hash from the header of the symbol file.
+    with open(socorro_sym_file_path, 'r') as socorro_sym_file:
+
+        # The hash is the 4th argument of the first line.
+        sym_file_hash = socorro_sym_file.readline().split()[3]
+
+    # Create the hash directory.
+    hash_dir = os.path.join(binary_dir, sym_file_hash)
+    if not os.path.exists(hash_dir):
+        os.makedirs(hash_dir)
+
+    # Move the symbol file to the hash directory.
+    sym_file_name = os.path.basename(socorro_sym_file_path)
+    os.rename(socorro_sym_file_path, os.path.join(hash_dir, sym_file_name))
+
+    return
+
diff --git a/import-layers/meta-openembedded/meta-oe/conf/distro/include/meta_oe_security_flags.inc b/import-layers/meta-openembedded/meta-oe/conf/distro/include/meta_oe_security_flags.inc
new file mode 100644
index 0000000..2565e32
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/conf/distro/include/meta_oe_security_flags.inc
@@ -0,0 +1,7 @@
+# Build errors with the pie options enabled
+SECURITY_CFLAGS_pn-lvm2 = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS_pn-rrdtool = "${SECURITY_NO_PIE_CFLAGS}"
+
+# This has text reloc errors with the pie options enabled
+SECURITY_CFLAGS_pn-mozjs = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS_pn-openldap = "${SECURITY_NO_PIE_CFLAGS}"
diff --git a/import-layers/meta-openembedded/meta-oe/conf/layer.conf b/import-layers/meta-openembedded/meta-oe/conf/layer.conf
new file mode 100644
index 0000000..a67cc1a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/conf/layer.conf
@@ -0,0 +1,75 @@
+# It really depends on order of the layers appearing in BBLAYERS
+# variable in toplevel bblayers.conf file, where bitbake will search
+# for .inc files and others where bitbake uses BBPATH since it will
+# search the directories from first to last as specified in BBPATH
+# Therefore if you want a given layer to be considered high priority
+# for the .inc and .conf etc. then consider it adding at the beginning
+# of BBPATH. For bblayers bitbake will use BBFILES_PRIORITY to resolve
+# the recipe contention so the order of directories in BBFILES does 
+# not matter.
+
+# 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 += "openembedded-layer"
+BBFILE_PATTERN_openembedded-layer := "^${LAYERDIR}/"
+
+# Define the priority for recipes (.bb files) from this layer,
+# choosing carefully how this layer interacts with all of the
+# other layers.
+
+BBFILE_PRIORITY_openembedded-layer = "6"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_openembedded-layer = "1"
+
+LAYERDEPENDS_openembedded-layer = "core"
+
+LICENSE_PATH += "${LAYERDIR}/licenses"
+
+SIGGEN_EXCLUDERECIPES_ABISAFE += " \
+  mplayer-common \
+  fbset-modes \
+  gpsd-machine-conf \
+  distro-feed-configs \
+  ca-certificates \
+"
+
+SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
+  usb-modeswitch-data->usb-modeswitch \
+  lmsensors->lmsensors-config \
+  phoronix-test-suite->bash \
+  phoronix-test-suite->python \
+  phoronix-test-suite->php \
+"
+
+# ttf.inc inherits fontcache which adds fontconfig-utils to RDEPENDS
+SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
+  terminus-font->fontconfig \
+  ttf-arphic-uming->fontconfig \
+  ttf-dejavu->fontconfig \
+  ttf-droid->fontconfig \
+  ttf-gentium->fontconfig \
+  ttf-hunkyfonts->fontconfig \
+  ttf-inconsolata->fontconfig \
+  ttf-liberation->fontconfig \
+  ttf-pt-sans->fontconfig \
+  ttf-mplus->fontconfig \
+  ttf-sazanami->fontconfig \
+  ttf-tlwg->fontconfig \
+  ttf-ubuntu-font-family->fontconfig \
+  ttf-wqy-zenhei->fontconfig \
+  source-han-sans-cn-fonts->fontconfig \
+  source-han-sans-jp-fonts->fontconfig \
+  source-han-sans-kr-fonts->fontconfig \
+  source-han-sans-tw-fonts->fontconfig \
+"
+
+FREESMARTPHONE_GIT = "git://git.freesmartphone.org"
+
+# Override security flags
+require conf/distro/include/meta_oe_security_flags.inc
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/GD b/import-layers/meta-openembedded/meta-oe/licenses/GD
new file mode 100644
index 0000000..5e17d03
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/GD
@@ -0,0 +1,53 @@
+ 
+     Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+     2002 by Cold Spring Harbor Laboratory. Funded under Grant
+     P41-RR02188 by the National Institutes of Health. 
+
+     Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 by
+     Boutell.Com, Inc. 
+
+     Portions relating to GD2 format copyright 1999, 2000, 2001, 2002
+     Philip Warner.
+     
+     Portions relating to PNG copyright 1999, 2000, 2001, 2002 Greg
+     Roelofs. 
+
+     Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002 John  
+     Ellson (ellson@lucent.com).
+   
+     Portions relating to gdft.c copyright 2001, 2002 John Ellson  
+     (ellson@lucent.com).  
+
+     Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+		 Pierre-Alain Joye (pierre@libgd.org).  
+
+     Portions relating to JPEG and to color quantization copyright 2000,
+     2001, 2002, Doug Becker and copyright (C) 1994, 1995, 1996, 1997,
+     1998, 1999, 2000, 2001, 2002, Thomas G. Lane. This software is
+     based in part on the work of the Independent JPEG Group. See the
+     file README-JPEG.TXT for more information.
+
+     Portions relating to WBMP copyright 2000, 2001, 2002 Maurice
+     Szmurlo and Johan Van den Brande.
+
+     Permission has been granted to copy, distribute and modify gd in
+     any context without fee, including a commercial application,
+     provided that this notice is present in user-accessible supporting
+     documentation.
+
+     This does not affect your ownership of the derived work itself, and 
+     the intent is to assure proper credit for the authors of gd, not to
+     interfere with your productive use of gd. If you have questions,
+     ask. "Derived works" includes all programs that utilize the   
+     library. Credit must be given in user-accessible documentation.
+
+     This software is provided "AS IS." The copyright holders disclaim  
+     all warranties, either express or implied, including but not
+     limited to implied warranties of merchantability and fitness for a
+     particular purpose, with respect to this code and accompanying  
+     documentation.
+
+     Although their code does not appear in gd, the authors wish to thank
+     David Koblas, David Rowley, and Hutchison Avenue Software Corporation
+     for their prior contributions.
+
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/GPL-2.0-with-lmbench-restriction b/import-layers/meta-openembedded/meta-oe/licenses/GPL-2.0-with-lmbench-restriction
new file mode 100644
index 0000000..3e1f7cc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/GPL-2.0-with-lmbench-restriction
@@ -0,0 +1,108 @@
+%M% %I% %E%
+
+The set of programs and documentation known as "lmbench" are distributed
+under the Free Software Foundation's General Public License with the
+following additional restrictions (which override any conflicting
+restrictions in the GPL):
+
+1. You may not distribute results in any public forum, in any publication,
+   or in any other way if you have modified the benchmarks.  
+
+2. You may not distribute the results for a fee of any kind.  This includes
+   web sites which generate revenue from advertising.
+
+If you have modifications or enhancements that you wish included in
+future versions, please mail those to me, Larry McVoy, at lm@bitmover.com.
+
+=========================================================================
+
+Rationale for the publication restrictions:
+
+In summary:
+
+    a) LMbench is designed to measure enough of an OS that if you do well in
+       all catagories, you've covered latency and bandwidth in networking,
+       disks, file systems, VM systems, and memory systems.
+    b) Multiple times in the past people have wanted to report partial results.
+       Without exception, they were doing so to show a skewed view of whatever
+       it was they were measuring (for example, one OS fit small processes into
+       segments and used the segment register to switch them, getting good 
+       results, but did not want to report large process context switches 
+       because those didn't look as good).
+    c) We insist that if you formally report LMbench results, you have to
+       report all of them and make the raw results file easily available.
+       Reporting all of them means in that same publication, a pointer
+       does not count.  Formally, in this context, means in a paper,
+       on a web site, etc., but does not mean the exchange of results
+       between OS developers who are tuning a particular subsystem.
+
+We have a lot of history with benchmarking and feel strongly that there
+is little to be gained and a lot to be lost if we allowed the results
+to be published in isolation, without the complete story being told.
+
+There has been a lot of discussion about this, with people not liking this
+restriction, more or less on the freedom principle as far as I can tell.
+We're not swayed by that, our position is that we are doing the right
+thing for the OS community and will stick to our guns on this one.
+
+It would be a different matter if there were 3 other competing
+benchmarking systems out there that did what LMbench does and didn't have
+the same reporting rules.  There aren't and as long as that is the case,
+I see no reason to change my mind and lots of reasons not to do so.  I'm
+sorry if I'm a pain in the ass on this topic, but I'm doing the right
+thing for you and the sooner people realize that the sooner we can get on
+to real work.
+
+Operating system design is a largely an art of balancing tradeoffs.
+In many cases improving one part of the system has negative effects
+on other parts of the system.  The art is choosing which parts to
+optimize and which to not optimize.  Just like in computer architecture,
+you can optimize the common instructions (RISC) or the uncommon
+instructions (CISC), but in either case there is usually a cost to
+pay (in RISC uncommon instructions are more expensive than common
+instructions, and in CISC common instructions are more expensive
+than required).  The art lies in knowing which operations are 
+important and optmizing those while minimizing the impact on the
+rest of the system.  
+
+Since lmbench gives a good overview of many important system features,
+users may see the performance of the system as a whole, and can
+see where tradeoffs may have been made.  This is the driving force
+behind the publication restriction: any idiot can optimize certain
+subsystems while completely destroying overall system performance.
+If said idiot publishes *only* the numbers relating to the optimized
+subsystem, then the costs of the optimization are hidden and readers
+will mistakenly believe that the optimization is a good idea.  By
+including the publication restriction readers would be able to
+detect that the optimization improved the subsystem performance
+while damaging the rest of the system performance and would be able
+to make an informed decision as to the merits of the optimization.
+
+Note that these restrictions only apply to *publications*.  We
+intend and encourage lmbench's use during design, development,
+and tweaking of systems and applications.  If you are tuning the
+linux or BSD TCP stack, then by all means, use the networking
+benchmarks to evaluate the performance effects of various 
+modifications; Swap results with other developers; use the
+networking numbers in isolation.  The restrictions only kick
+in when you go to *publish* the results.  If you sped up the
+TCP stack by a factor of 2 and want to publish a paper with the
+various tweaks or algorithms used to accomplish this goal, then
+you can publish the networking numbers to show the improvement.
+However, the paper *must* also include the rest of the standard
+lmbench numbers to show how your tweaks may (or may not) have
+impacted the rest of the system.  The full set of numbers may
+be included in an appendix, but they *must* be included in the
+paper.
+
+This helps protect the community from adopting flawed technologies
+based on incomplete data.  It also helps protect the community from
+misleading marketing which tries to sell systems based on partial
+(skewed) lmbench performance results.  
+
+We have seen many cases in the past where partial or misleading
+benchmark results have caused great harm to the community, and
+we want to ensure that our benchmark is not used to perpetrate
+further harm and support false or misleading claims.
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/ImageMagick b/import-layers/meta-openembedded/meta-oe/licenses/ImageMagick
new file mode 100644
index 0000000..9141668
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/ImageMagick
@@ -0,0 +1,103 @@
+Before we get to the text of the license, lets just review what the license says in simple terms:
+
+It allows you to:
+
+  * freely download and use ImageMagick software, in whole or in part, for personal, company internal, or commercial purposes;
+  * use ImageMagick software in packages or distributions that you create;
+  * link against a library under a different license;
+  * link code under a different license against a library under this license;
+  * merge code into a work under a different license;
+  * extend patent grants to any code using code under this license;
+  * and extend patent protection.
+
+It forbids you to:
+
+  * redistribute any piece of ImageMagick-originated software without proper attribution;
+  * use any marks owned by ImageMagick Studio LLC in any way that might state or imply that ImageMagick Studio LLC endorses your distribution;
+  * use any marks owned by ImageMagick Studio LLC in any way that might state or imply that you created the ImageMagick software in question.
+
+It requires you to:
+
+  * include a copy of the license in any redistribution you may make that includes ImageMagick software;
+  * provide clear attribution to ImageMagick Studio LLC for any distributions that include ImageMagick software.
+
+It does not require you to:
+
+  * include the source of the ImageMagick software itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it;
+  * submit changes that you make to the software back to the ImageMagick Studio LLC (though such feedback is encouraged).
+
+A few other clarifications include:
+
+  * ImageMagick is freely available without charge;
+  * you may include ImageMagick on a DVD as long as you comply with the terms of the license;
+  * you can give modified code away for free or sell it under the terms of the ImageMagick license or distribute the result under a different license, but you need to acknowledge the use of the ImageMagick software;
+  * the license is compatible with the GPL V3.
+  * when exporting the ImageMagick software, review its export classification.
+
+Terms and Conditions for Use, Reproduction, and Distribution
+
+The legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick follow:
+
+Copyright 1999-2014 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available.
+
+1. Definitions.
+
+License shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+Legal Entity shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, control means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+You (or Your) shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+Source form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+Object form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+Work shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+Derivative Works shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+Contribution shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as Not a Contribution.
+
+Contributor shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+  * You must give any other recipients of the Work or Derivative Works a copy of this License; and
+  * You must cause any modified files to carry prominent notices stating that You changed the files; and
+  * You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+  * If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+How to Apply the License to your Work
+
+To apply the ImageMagick License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information (don't include the brackets). The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the ImageMagick License (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.imagemagick.org/script/license.php
+
+   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.
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/Intel b/import-layers/meta-openembedded/meta-oe/licenses/Intel
new file mode 100644
index 0000000..eb81dd7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/Intel
@@ -0,0 +1,21 @@
+License for Contributions to ACPICA
+
+Copyright (c) 2000 – 2015 Intel Corp.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINES
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/Kilgard b/import-layers/meta-openembedded/meta-oe/licenses/Kilgard
new file mode 100644
index 0000000..8836db1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/Kilgard
@@ -0,0 +1,5 @@
+Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998.
+
+This program is freely distributable without licensing fees  and is
+provided without guarantee or warrantee expressed or  implied. This
+program is -not- in the public domain.
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/ManishSingh b/import-layers/meta-openembedded/meta-oe/licenses/ManishSingh
new file mode 100644
index 0000000..0243ddf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/ManishSingh
@@ -0,0 +1,19 @@
+Copyright (C) 2002 Manish Singh
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Manish Singh not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Manish Singh makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+MANISH SINGH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL MANISH SINGH BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/OGPL b/import-layers/meta-openembedded/meta-oe/licenses/OGPL
new file mode 100644
index 0000000..bce3b71
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/OGPL
@@ -0,0 +1,104 @@
+$TOG: COPYRIGHT.MOTIF /main/5 2000/04/10 12:00:00 $
+
+                            MOTIF 2.1.30
+                             Source Code
+                        MASTER COPYRIGHT NOTICE
+
+(c) Copyright 1989 - 1994, 1996 - 1999 The Open Group
+(c) Copyright 1987 - 1999 Hewlett-Packard Company
+(c) Copyright 1987 - 1999 Digital Equipment Corporation, Maynard, Mass.
+(c) Copyright 1988 Massachusetts Institute of Technology
+(c) Copyright 1988 Microsoft Corporation
+(c) Copyright 1990 Motorola Inc.
+(c) Copyright 1989 - 1994 Groupe Bull
+(c) Copyright 1991 Joseph Friedman
+(c) Copyright 1995 - 1999 International Business Machines Corp.
+(c) Copyright 1995 - 1999 Sun Microsystems, Inc.
+(c) Copyright 1995 - 1999 Santa Cruz Organization, Inc.
+(c) Copyright 1995, 1996 Fujitsu Limited
+(c) Copyright 1995, 1996 Hitachi, Ltd.
+
+
+ALL RIGHTS RESERVED
+
+This software is furnished under a license and may be used
+and copied only in accordance with the terms of such license and
+with the inclusion of this copyright notice. No title to and ownership
+of the software is hereby transferred.
+
+This software is subject to an open license. It may only be
+used on, with or for operating systems which are themselves open
+source systems. You must contact The Open Group for a license allowing
+distribution and sublicensing of this software on, with, or for
+operating systems which are not Open Source programs.
+
+See http://www.opengroup.org/openmotif/license for full
+details of the license agreement. Any use, reproduction, or
+distribution of the program constitutes recipient's acceptance of
+this agreement.
+
+THE OPEN GROUP AND ITS THIRD PARTY SUPPLIERS, ASSUME NO RESPONSIBILITY
+FOR THE USE OR INABILITY TO USE ANY OF ITS SOFTWARE.
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
+WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE.
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+The information in this software is subject to change without
+notice and should not be construed as a commitment by The Open Group
+or its third party suppliers.
+
+Notice: Notwithstanding any other lease or license that may pertain to,
+or accompany the delivery of, this computer software, the rights of the
+Government regarding its use, reproduction and disclosure are as set
+forth in Section 52.227-19 of the FARS Computer Software-Restricted
+Rights clause.
+
+(c) Copyright 1990, 1991, 1992, 1993, 1994, 1996 Open Software
+Foundation, Inc.
+(c) Copyright 1996, 1997, 1998, 1999, 2000 The Open Group.
+Unpublished - all rights reserved under the Copyright laws of the United
+States.
+
+RESTRICTED RIGHTS NOTICE: Use, duplication, or disclosure by the
+Government is subject to the restrictions as set forth in subparagraph
+(c)(1)(ii) of the Rights in Technical Data and Computer Software clause
+at DFARS 52.227-7013.
+
+The Open Group LLC
+Apex Plaza, Forbury Road
+Reading, Berkshire,
+RG1 1AX, UK.
+
+RESTRICTED RIGHTS LEGEND: This computer software is submitted with
+"restricted rights." Use, duplication or disclosure is subject to the
+restrictions as set forth in NASA FAR SUP 18-52.227-79 (April 1985)
+"Commercial Computer Software- Restricted Rights (April 1985)." The
+Open Group, Apex Plaza, Forbury Road, Reading, Berkshire, RG1 1AX, UK.
+If the contract contains the Clause at 18-52.227-74 "Rights in Data
+General" then the "Alternate III" clause applies.
+
+(c) Copyright 1990, 1991, 1992, 1993, 1994, 1996 Open Software
+Foundation,Inc. ALL RIGHTS RESERVED
+(c) Copyright 1996, 1997, 1998, 1999, 2000 The Open Group. ALL RIGHTS
+RESERVED
+
+The Open Group, Open Software Foundation, OSF, OSF/Motif, and Motif are
+Trademarks of The Open Group
+DEC and DIGITAL are registered trademarks of Digital Equipment
+Corporation
+HP is a trademark of Hewlett-Packard Company
+X Window System is a trademark of the Massachusetts Institute of
+Technology
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/OpenLDAP b/import-layers/meta-openembedded/meta-oe/licenses/OpenLDAP
new file mode 100644
index 0000000..05ad757
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/OpenLDAP
@@ -0,0 +1,47 @@
+The OpenLDAP Public License
+  Version 2.8, 17 August 2003
+
+Redistribution and use of this software and associated documentation
+("Software"), with or without modification, are permitted provided
+that the following conditions are met:
+
+1. Redistributions in source form must retain copyright statements
+   and notices,
+
+2. Redistributions in binary form must reproduce applicable copyright
+   statements and notices, this list of conditions, and the following
+   disclaimer in the documentation and/or other materials provided
+   with the distribution, and
+
+3. Redistributions must contain a verbatim copy of this document.
+
+The OpenLDAP Foundation may revise this license from time to time.
+Each revision is distinguished by a version number.  You may use
+this Software under terms of this license revision or under the
+terms of any subsequent revision of the license.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND ITS
+CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT
+SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S)
+OR OWNER(S) OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+The names of the authors and copyright holders must not be used in
+advertising or otherwise to promote the sale, use or other dealing
+in this Software without specific, written prior permission.  Title
+to copyright in this Software shall at all times remain with copyright
+holders.
+
+OpenLDAP is a registered trademark of the OpenLDAP Foundation.
+
+Copyright 1999-2003 The OpenLDAP Foundation, Redwood City,
+California, USA.  All Rights Reserved.  Permission to copy and
+distribute verbatim copies of this document is granted.
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/QWTv1.0 b/import-layers/meta-openembedded/meta-oe/licenses/QWTv1.0
new file mode 100644
index 0000000..9c01f7e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/QWTv1.0
@@ -0,0 +1,543 @@
+                             Qwt License
+                           Version 1.0, January 1, 2003
+
+The Qwt library and included programs are provided under the terms
+of the GNU LESSER GENERAL PUBLIC LICENSE (LGPL) with the following
+exceptions:
+
+    1. Widgets that are subclassed from Qwt widgets do not
+       constitute a derivative work.
+
+    2. Static linking of applications and widgets to the
+       Qwt library does not constitute a derivative work
+       and does not require the author to provide source
+       code for the application or widget, use the shared
+       Qwt libraries, or link their applications or
+       widgets against a user-supplied version of Qwt.
+
+       If you link the application or widget to a modified
+       version of Qwt, then the changes to Qwt must be 
+       provided under the terms of the LGPL in sections
+       1, 2, and 4.
+
+    3. You do not have to provide a copy of the Qwt license
+       with programs that are linked to the Qwt library, nor
+       do you have to identify the Qwt license in your
+       program or documentation as required by section 6
+       of the LGPL.
+
+
+       However, programs must still identify their use of Qwt.
+       The following example statement can be included in user
+       documentation to satisfy this requirement:
+
+           [program/widget] is based in part on the work of
+           the Qwt project (http://qwt.sf.net).
+
+----------------------------------------------------------------------
+
+
+          GNU LESSER GENERAL PUBLIC LICENSE
+               Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+          GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+             END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/TLWG b/import-layers/meta-openembedded/meta-oe/licenses/TLWG
new file mode 100644
index 0000000..a124184
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/TLWG
@@ -0,0 +1,150 @@
+This package collects Thai scalable fonts available in free licenses, and
+maintains and distributes them under GNU General Public License with
+original authors' permissions.
+
+Some fonts cannot be GPL, because they are based on fonts with different
+licenses. See the list of such fonts at the end of this file.
+
+Copyright:
+
+	- Kinnari:
+
+	Copyright (C) 1999 Db Type. All Rights Reserved.
+	Copyright (C) 2007 National Electronics and Computer Technology Center.
+	All Rights Reserved.
+
+	- Garuda:
+
+	Generated by NECTEC for Public Domain.
+	Modified under GNU General Public License by TLWG.
+
+	- Norasi:
+
+	Copyright (C) 1999, The National Font Project (v.beta). 
+	Yannis Haralambous, Virach Sornlertlamvanich and Anutara Tantraporn.
+	All rights reserved.
+	Modified under GNU General Public License, with creators' permission,
+	by Thai Linux Working Group (TLWG).
+
+	- Loma:
+
+	Copyright (C) 2003, NECTEC. All rights reserved.
+
+	- TlwgMono:
+
+	Copyright (C) 2003 Poonlap Veerathanabutr <poonlap@linux.thai.net>
+
+	- Tlwg Typewriter:
+
+	Copyright (C) 2003, 2004 Poonlap Veerathanabutr <poonlap@linux.thai.net>
+
+	- Tlwg Typist:
+
+	Tlwg Typist, based on Poonlap Veerathanabutr's Tlwg Typewriter.
+
+	Copyright (C) 2005-2006 Theppitak Karoonboonyanan. Tlwg Typewriter,
+	Free Thai Pseudo Monospace outline font.
+
+	Copyright (C) 2003, 2004 Poonlap Veerathanabutr <poonlap@linux.thai.net>
+
+	- Purisa:
+
+	Copyright (C) 2003, 2004 Poonlap Veerathanabutr 
+	<poonlap@linux.thai.net>, GPL license
+
+	- Sawasdee:
+
+	Copyright (C) 2007 Pol Udomwittayanukul <webnaipol@gmail.com>.
+	All rights reserved.
+
+	- Umpush:
+
+	Copyright (C) 2003 NECTEC. All rights reserved.
+	Copyright (c) 2007 Widhaya Trisarnwadhana <widhaya3@gmail.com>.
+	All rights reserved.
+
+License:
+
+	This font is free software; you can redistribute it and/or modify it
+	under the terms of the GNU General Public License as published by the
+	Free Software Foundation; either version 2 of the License, or (at your
+	option) any later version.
+
+	This font is distributed in the hope that it will be useful, but
+	WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+	General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this font; if not, write to the Free Software Foundation,
+	Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+	As a special exception, if you create a document which uses this font,
+	and embed this font or unaltered portions of this font into the
+	document, this font does not by itself cause the resulting document
+	to be covered by the GNU General Public License. This exception does
+	not however invalidate any other reasons why the document might be
+	covered by the GNU General Public License. If you modify this font,
+	you may extend this exception to your version of the font, but you
+	are not obligated to do so. If you do not wish to do so, delete this
+	exception statement from your version.
+
+See included GPL file for the GNU General Public License (GPL) terms.
+
+
+* Non-GPL Fonts:
+
+- Waree:
+
+Copyright:
+
+	Copyright (C) 2003 by Bitstream, Inc. All Rights Reserved.
+	TLWG changes are in public domain.
+
+	Bitstream Vera is a trademark of Bitstream, Inc.
+
+License:
+
+	Permission is hereby granted, free of charge, to any person obtaining
+	a copy of the fonts accompanying this license ("Fonts") and associated
+	documentation files (the "Font Software"), to reproduce and distribute
+	the Font Software, including without limitation the rights to use,
+	copy, merge, publish, distribute, and/or sell copies of the Font
+	Software, and to permit persons to whom the Font Software is furnished
+	to do so, subject to the following conditions:
+
+	The above copyright and trademark notices and this permission notice
+	shall be included in all copies of one or more of the Font Software
+	typefaces.
+
+	The Font Software may be modified, altered, or added to, and in
+	particular the designs of glyphs or characters in the Fonts may be
+	modified and additional glyphs or characters may be added to the
+	Fonts, only if the fonts are renamed to names not containing either
+	the words "Bitstream" or the word "Vera".
+
+	This License becomes null and void to the extent applicable to Fonts
+	or Font Software that has been modified and is distributed under the
+	"Bitstream Vera" names.
+
+	The Font Software may be sold as part of a larger software package
+	but no copy of one or more of the Font Software typefaces may be sold
+	by itself.
+
+	THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+	EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+	MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+	OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
+	BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR
+	OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL,
+	OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+	OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT
+	SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
+
+	Except as contained in this notice, the names of Gnome, the Gnome
+	Foundation, and Bitstream Inc., shall not be used in advertising or
+	otherwise to promote the sale, use or other dealings in this Font
+	Software without prior written authorization from the Gnome Foundation
+	or Bitstream Inc., respectively. For further information, contact:
+	fonts at gnome dot org. 
+
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/flite b/import-layers/meta-openembedded/meta-oe/licenses/flite
new file mode 100644
index 0000000..51e67fd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/flite
@@ -0,0 +1,32 @@
+/*************************************************************************/
+/*                                                                       */
+/*                  Language Technologies Institute                      */
+/*                     Carnegie Mellon University                        */
+/*                      Copyright (c) 1999-2009                          */
+/*                        All Rights Reserved.                           */
+/*                                                                       */
+/*  Permission is hereby granted, free of charge, to use and distribute  */
+/*  this software and its documentation without restriction, including   */
+/*  without limitation the rights to use, copy, modify, merge, publish,  */
+/*  distribute, sublicense, and/or sell copies of this work, and to      */
+/*  permit persons to whom this work is furnished to do so, subject to   */
+/*  the following conditions:                                            */
+/*   1. The code must retain the above copyright notice, this list of    */
+/*      conditions and the following disclaimer.                         */
+/*   2. Any modifications must be clearly marked as such.                */
+/*   3. Original authors' names are not deleted.                         */
+/*   4. The authors' names are not used to endorse or promote products   */
+/*      derived from this software without specific prior written        */
+/*      permission.                                                      */
+/*                                                                       */
+/*  CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK         */
+/*  DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING      */
+/*  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT   */
+/*  SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE      */
+/*  FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    */
+/*  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN   */
+/*  AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,          */
+/*  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF       */
+/*  THIS SOFTWARE.                                                       */
+/*                                                                       */
+/*************************************************************************/
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/gnuplot b/import-layers/meta-openembedded/meta-oe/licenses/gnuplot
new file mode 100644
index 0000000..ff6fe23
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/gnuplot
@@ -0,0 +1,29 @@
+/*[
+ * Copyright 1986 - 1993, 1998, 2004   Thomas Williams, Colin Kelley
+ *
+ * Permission to use, copy, and distribute this software and its
+ * documentation for any purpose with or without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.
+ *
+ * Permission to modify the software is granted, but not the right to
+ * distribute the complete modified source code.  Modifications are to
+ * be distributed as patches to the released version.  Permission to
+ * distribute binaries produced by compiling modified sources is granted,
+ * provided you
+ *   1. distribute the corresponding source modifications from the
+ *    released version in the form of a patch file along with the binaries,
+ *   2. add special version identification to distinguish your version
+ *    in addition to the base release version number,
+ *   3. provide your name and address as the primary contact for the
+ *    support of your modified version, and
+ *   4. retain our contact information in regard to use of the base
+ *    software.
+ * Permission to distribute the released version of the source code along
+ * with corresponding source modifications in the form of a patch file is
+ * granted with same provisions 2 through 4 for binary distributions.
+ *
+ * This software is provided "as is" without express or implied warranty
+ * to the extent permitted by applicable law.
+]*/
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/iozone3 b/import-layers/meta-openembedded/meta-oe/licenses/iozone3
new file mode 100644
index 0000000..3468fa9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/iozone3
@@ -0,0 +1,62 @@
+LICENSE:
+
+ Copyright 1991, 1992, 1994, 1998, 1999, 2002   William D. Norcott
+
+ License to freely use and distribute this software is hereby granted 
+ by the author, subject to the condition that this copyright notice 
+ remains intact.  The author retains the exclusive right to publish 
+ derivative works based on this work, including, but not limited to
+ revised versions of this work.
+
+
+
+Below is author reply to question about distributing iozone3 in
+OpenEmbedded:
+
+========================================================================
+
+Marcin,
+
+        Re-distribution is permitted as long as the copyright is
+    maintained and the source code is not changed. I do not
+    see a problem with your mods to enable fileop for Linux-arm,
+    as these mods have been returned to the Iozone folks,
+    and they have been accepted for inclusion in the next
+    release :-)
+
+Thank you for your contribution,
+Don Capps
+
+----- Original Message ----- 
+From: "Marcin Juszkiewicz" <firma@hrw.one.pl>
+To: "Don Capps" <don.capps2@verizon.net>; "William D. Norcott" 
+<wnorcott@us.oracle.com>
+Sent: Sunday, October 29, 2006 4:55 PM
+Subject: iozone3 263 patch for arm and License question
+
+
+> Morning
+>
+> I want to include iozone3 in OpenEmbedded [1] metadata to give it for
+> other developers. Currently OE is used to build few distributions for
+> misc platforms: ARM, SH3, SH4, x86, PowerPC and different types of
+> machines (PDA, settopbox, devboards, desktops, thin clients, routers).
+>
+> According to your distribution of derivations is forbidden. Packaging
+> iozone3 in OpenEmbedded will not involve any source code changes. But
+> when I was building it for ARM I discovered that fileop binary was not
+> built - so I created patch for it (attached). Not yet tested it on target
+> device.
+>
+> Thus, I seek your written permission via e-mail to distribute a package of
+> the unmodified source code and also a package of the pre-compiled binary.
+> Your copyright statement will be included in the package.
+>
+>
+> 1. http://www.openembedded.org/
+>
+> Regards
+> -- 
+> JID: hrw-jabber.org
+> OpenEmbedded developer/consultant
+
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/nbench-byte b/import-layers/meta-openembedded/meta-oe/licenses/nbench-byte
new file mode 100644
index 0000000..7e47ba6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/nbench-byte
@@ -0,0 +1,10 @@
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/unRAR b/import-layers/meta-openembedded/meta-oe/licenses/unRAR
new file mode 100644
index 0000000..5f78b72
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/unRAR
@@ -0,0 +1,41 @@
+ ******    *****   ******   unRAR - free utility for RAR archives
+ **   **  **   **  **   **  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ******   *******  ******    License for use and distribution of
+ **   **  **   **  **   **   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ **   **  **   **  **   **         FREE portable version
+                                   ~~~~~~~~~~~~~~~~~~~~~
+
+      The source code of unRAR utility is freeware. This means:
+
+   1. All copyrights to RAR and the utility unRAR are exclusively
+      owned by the author - Alexander Roshal.
+
+   2. The unRAR sources may be used in any software to handle RAR
+      archives without limitations free of charge, but cannot be used
+      to re-create the RAR compression algorithm, which is proprietary.
+      Distribution of modified unRAR sources in separate form or as a
+      part of other software is permitted, provided that it is clearly
+      stated in the documentation and source comments that the code may
+      not be used to develop a RAR (WinRAR) compatible archiver.
+
+   3. The unRAR utility may be freely distributed. No person or company 
+      may charge a fee for the distribution of unRAR without written
+      permission from the copyright holder.
+
+   4. THE RAR ARCHIVER AND THE UNRAR UTILITY ARE DISTRIBUTED "AS IS".
+      NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED.  YOU USE AT 
+      YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS, 
+      DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING
+      OR MISUSING THIS SOFTWARE.
+
+   5. Installing and using the unRAR utility signifies acceptance of
+      these terms and conditions of the license.
+
+   6. If you don't agree with terms of the license you must remove
+      unRAR files from your storage devices and cease to use the
+      utility.
+
+      Thank you for your interest in RAR and unRAR.
+
+
+                                            Alexander L. Roshal
\ No newline at end of file
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/vim b/import-layers/meta-openembedded/meta-oe/licenses/vim
new file mode 100644
index 0000000..4aa818e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/vim
@@ -0,0 +1,81 @@
+VIM LICENSE
+
+I)  There are no restrictions on distributing unmodified copies of Vim except
+    that they must include this license text.  You can also distribute
+    unmodified parts of Vim, likewise unrestricted except that they must
+    include this license text.  You are also allowed to include executables
+    that you made from the unmodified Vim sources, plus your own usage
+    examples and Vim scripts.
+
+II) It is allowed to distribute a modified (or extended) version of Vim,
+    including executables and/or source code, when the following four
+    conditions are met:
+    1) This license text must be included unmodified.
+    2) The modified Vim must be distributed in one of the following five ways:
+       a) If you make changes to Vim yourself, you must clearly describe in
+	  the distribution how to contact you.  When the maintainer asks you
+	  (in any way) for a copy of the modified Vim you distributed, you
+	  must make your changes, including source code, available to the
+	  maintainer without fee.  The maintainer reserves the right to
+	  include your changes in the official version of Vim.  What the
+	  maintainer will do with your changes and under what license they
+	  will be distributed is negotiable.  If there has been no negotiation
+	  then this license, or a later version, also applies to your changes.
+	  The current maintainer is Bram Moolenaar <Bram@vim.org>.  If this
+	  changes it will be announced in appropriate places (most likely
+	  vim.sf.net, www.vim.org and/or comp.editors).  When it is completely
+	  impossible to contact the maintainer, the obligation to send him
+	  your changes ceases.  Once the maintainer has confirmed that he has
+	  received your changes they will not have to be sent again.
+       b) If you have received a modified Vim that was distributed as
+	  mentioned under a) you are allowed to further distribute it
+	  unmodified, as mentioned at I).  If you make additional changes the
+	  text under a) applies to those changes.
+       c) Provide all the changes, including source code, with every copy of
+	  the modified Vim you distribute.  This may be done in the form of a
+	  context diff.  You can choose what license to use for new code you
+	  add.  The changes and their license must not restrict others from
+	  making their own changes to the official version of Vim.
+       d) When you have a modified Vim which includes changes as mentioned
+	  under c), you can distribute it without the source code for the
+	  changes if the following three conditions are met:
+	  - The license that applies to the changes permits you to distribute
+	    the changes to the Vim maintainer without fee or restriction, and
+	    permits the Vim maintainer to include the changes in the official
+	    version of Vim without fee or restriction.
+	  - You keep the changes for at least three years after last
+	    distributing the corresponding modified Vim.  When the maintainer
+	    or someone who you distributed the modified Vim to asks you (in
+	    any way) for the changes within this period, you must make them
+	    available to him.
+	  - You clearly describe in the distribution how to contact you.  This
+	    contact information must remain valid for at least three years
+	    after last distributing the corresponding modified Vim, or as long
+	    as possible.
+       e) When the GNU General Public License (GPL) applies to the changes,
+	  you can distribute the modified Vim under the GNU GPL version 2 or
+	  any later version.
+    3) A message must be added, at least in the output of the ":version"
+       command and in the intro screen, such that the user of the modified Vim
+       is able to see that it was modified.  When distributing as mentioned
+       under 2)e) adding the message is only required for as far as this does
+       not conflict with the license used for the changes.
+    4) The contact information as required under 2)a) and 2)d) must not be
+       removed or changed, except that the person himself can make
+       corrections.
+
+III) If you distribute a modified version of Vim, you are encouraged to use
+     the Vim license for your changes and make them available to the
+     maintainer, including the source code.  The preferred way to do this is
+     by e-mail or by uploading the files to a server and e-mailing the URL.
+     If the number of changes is small (e.g., a modified Makefile) e-mailing a
+     context diff will do.  The e-mail address to be used is
+     <maintainer@vim.org>
+
+IV)  It is not allowed to remove this license from the distribution of the Vim
+     sources, parts of it or from a modified version.  You may use this
+     license for previous Vim releases instead of the license that they came
+     with, at your option.
+
+===
+Read more about this license at http://vimdoc.sourceforge.net/htmldoc/uganda.html#license
diff --git a/import-layers/meta-openembedded/meta-oe/licenses/zsh b/import-layers/meta-openembedded/meta-oe/licenses/zsh
new file mode 100644
index 0000000..1fb1fc4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/licenses/zsh
@@ -0,0 +1,37 @@
+Unless otherwise noted in the header of specific files, files in this
+distribution have the licence shown below.
+
+However, note that certain shell functions are licensed under versions
+of the GNU General Public Licence.  Anyone distributing the shell as a
+binary including those files needs to take account of this.  Search
+shell functions for "Copyright" for specific copyright information.
+None of the core functions are affected by this, so those files may
+simply be omitted.
+
+--
+
+The Z Shell is copyright (c) 1992-2009 Paul Falstad, Richard Coleman,
+Zoltán Hidvégi, Andrew Main, Peter Stephenson, Sven Wischnowsky, and
+others.  All rights reserved.  Individual authors, whether or not
+specifically named, retain copyright in all changes; in what follows, they
+are referred to as `the Zsh Development Group'.  This is for convenience
+only and this body has no legal status.  The Z shell is distributed under
+the following licence; any provisions made in individual files take
+precedence.
+
+Permission is hereby granted, without written agreement and without
+licence or royalty fees, to use, copy, modify, and distribute this
+software and to distribute modified versions of this software for any
+purpose, provided that the above copyright notice and the following
+two paragraphs appear in all copies of this software.
+
+In no event shall the Zsh Development Group be liable to any party for
+direct, indirect, special, incidental, or consequential damages arising out
+of the use of this software and its documentation, even if the Zsh
+Development Group have been advised of the possibility of such damage.
+
+The Zsh Development Group specifically disclaim any warranties, including,
+but not limited to, the implied warranties of merchantability and fitness
+for a particular purpose.  The software provided hereunder is on an "as is"
+basis, and the Zsh Development Group have no obligation to provide
+maintenance, support, updates, enhancements, or modifications.
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/analyze-suspend/analyze-suspend_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/analyze-suspend/analyze-suspend_git.bb
new file mode 100644
index 0000000..d97ff0a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/analyze-suspend/analyze-suspend_git.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Analyze Suspend"
+DESCRIPTION = "analyze-suspend is a tool for system developers to visualize \
+the activity between suspend and resume, allowing them to identify \
+inefficiencies and bottlenecks."
+HOMEPAGE = "https://01.org/suspendresume"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
+
+# Apart from the listed RDEPENDS, analyze-suspend depends on some features
+# provided by the kernel. These options are:
+#   - CONFIG_PM_DEBUG=y
+#   - CONFIG_PM_SLEEP_DEBUG=y
+#   - CONFIG_FTRACE=y
+#   - CONFIG_FUNCTION_TRACER=y
+#   - CONFIG_FUNCTION_GRAPH_TRACER=y
+
+RDEPENDS_${PN} += "python-core python-datetime python-stringold"
+
+PV = "3.2+gitr${SRCPV}"
+SRCREV = "bce3cbec43bc2ce7a8c79b210314dd9d9ac1010b"
+SRC_URI = "git://github.com/01org/suspendresume.git;protocol=https"
+S = "${WORKDIR}/git"
+
+do_install() {
+	install -Dm 0755 analyze_suspend.py ${D}${bindir}/analyze_suspend.py
+	install -Dm 0644 README ${D}${docdir}/analyze-suspend/README
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.03e.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.03e.bb
new file mode 100644
index 0000000..2c1217e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.03e.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Tests large file IO and creation/deletion of small files"
+HOMEPAGE = "http://www.coker.com.au/bonnie++/"
+SECTION = "benchmark/tests"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://copyright.txt;md5=cd4dde95a6b9d122f0a9150ae9cc3ee0"
+
+SRC_URI = "http://www.coker.com.au/bonnie++/${BPN}-${PV}.tgz \
+           file://gcc-4.3-fixes.patch \
+"
+SRC_URI[md5sum] = "750aa5b5051263a99c6c195888c74968"
+SRC_URI[sha256sum] = "cb3866116634bf65760b6806be4afa7e24a1cad6f145c876df8721f01ba2e2cb"
+
+inherit autotools-brokensep
+
+SCRIPTS = "bon_csv2html bon_csv2txt"
+EXES = "bonnie++ zcav"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_install () {
+    install -d ${D}/${bindir}
+    install -d ${D}/${sbindir}
+    install -m 0755 ${EXES} ${D}/${sbindir}
+    install -m 0755 ${SCRIPTS} ${D}/${bindir}
+}
+
+PACKAGES =+ "bonnie-scripts"
+
+FILES_${PN} = "${sbindir}"
+FILES_bonnie-scripts = "${bindir}"
+
+RDEPENDS_bonnie-scripts += "perl"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/bonnie/files/gcc-4.3-fixes.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/bonnie/files/gcc-4.3-fixes.patch
new file mode 100644
index 0000000..67f1b74
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/bonnie/files/gcc-4.3-fixes.patch
@@ -0,0 +1,19 @@
+Includes string.h to one of the source file.
+
+Upstream-Status: Inappropriate [not author.]
+---
+ zcav.cpp |    1 +
+ 1 file changed, 1 insertion(+)
+
+Index: bonnie++-1.03a/zcav.cpp
+===================================================================
+--- bonnie++-1.03a.orig/zcav.cpp
++++ bonnie++-1.03a/zcav.cpp
+@@ -15,6 +15,7 @@ using namespace std;
+ #else
+ #include <vector.h>
+ #endif
++#include <string.h>
+ 
+ // Read the specified number of megabytes of data from the fd and return the
+ // amount of time elapsed in seconds.
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-neon_20140626.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-neon_20140626.bb
new file mode 100644
index 0000000..14e3fc4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-neon_20140626.bb
@@ -0,0 +1,30 @@
+SUMMARY = "CPU burn app that loads the NEON coprocessor fully"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://burn.S;md5=823abc72c2cd448e87df9bc5355a4456"
+
+DL_DIR_append = "/${PN}-${PV}"
+
+# Ensure to make this available for machine which has neon
+COMPATIBLE_MACHINE = "(${@bb.utils.contains("TUNE_FEATURES", "neon", "${MACHINE}", "Invalid!", d)})"
+
+SRC_URI = "http://hardwarebug.org/files/burn.S;name=mru \
+           https://raw.githubusercontent.com/ssvb/cpuburn-arm/dd5c5ba58d2b0b23cfab4a286f9d3f5510000f20/cpuburn-a8.S;name=ssvb"
+
+SRC_URI[mru.md5sum] = "823abc72c2cd448e87df9bc5355a4456"
+SRC_URI[mru.sha256sum] = "01d9fc04f83740c513c25401dcc89c11b2a5a6013e70bfca42b7b02129f88cd2"
+SRC_URI[ssvb.md5sum] = "ba0ef2939a3b3b487523448c67544e94"
+SRC_URI[ssvb.sha256sum] = "ce42ebdc71c876a33d9f7534355ef76cefa0d00ddb19ad69cf05a266c861d08d"
+
+S = "${WORKDIR}"
+
+do_compile() {
+    ${CC} ${CFLAGS} ${LDFLAGS} burn.S -o burn
+    ${CC} ${CFLAGS} ${LDFLAGS} cpuburn-a8.S -o burn-neona8
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 ${S}/burn ${D}${bindir}/burn-neon
+    install -m 0755 ${S}/burn-neona8 ${D}${bindir}/
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb
new file mode 100644
index 0000000..1915e4c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "The dbench (disk) and tbench (TCP) benchmarks"
+SUMMARY_dbench = "Filesystem load benchmark"
+SUMMARY_tbench = "TCP load benchmark"
+HOMEPAGE = "http://samba.org/ftp/tridge/dbench/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "popt"
+
+SRC_URI = "\
+    http://samba.org/ftp/tridge/dbench/dbench-${PV}.tar.gz \
+    file://destdir.patch \
+    file://makefile.patch"
+
+inherit autotools
+
+PACKAGES =+ "tbench tbench-dbg"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+FILES_tbench = "${bindir}/tbench* ${prefix}/share/client.txt"
+FILES_tbench-dbg += "${bindir}/.debug/tbench*"
+
+SRC_URI[md5sum] = "1fe56ff71b9a416f8889d7150ac54da4"
+SRC_URI[sha256sum] = "6001893f34e68a3cfeb5d424e1f2bfef005df96a22d86f35dc770c5bccf3aa8a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/dbench/files/destdir.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/dbench/files/destdir.patch
new file mode 100644
index 0000000..4cd2a35
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/dbench/files/destdir.patch
@@ -0,0 +1,28 @@
+Append $(DESTDIR) to all $(bindir), $(datadir) and $(mandir). Got 
+this patch from OE commit id 709c4d66e0b107ca606941b988bad717c0b45d9b
+
+Upstream-Status: Inappropriate [not author]
+
+Index: dbench-3.04/Makefile.in
+===================================================================
+--- dbench-3.04.orig/Makefile.in	2006-09-17 20:21:07.000000000 +0200
++++ dbench-3.04/Makefile.in	2006-09-17 20:21:36.000000000 +0200
+@@ -32,12 +32,12 @@
+ 
+ # Careful here: don't install client.txt over itself.
+ install: all
+-	${INSTALLCMD} -d $(bindir) $(datadir) $(mandir)
+-	${INSTALLCMD} dbench tbench tbench_srv $(bindir)
+-	${INSTALLCMD} client.txt $(datadir)
+-	${INSTALLCMD} -m644 dbench.1 $(mandir)
+-	ln -sf dbench.1 $(mandir)/tbench.1
+-	ln -sf dbench.1 $(mandir)/tbench_srv.1
++	${INSTALLCMD} -d $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) $(DESTDIR)$(mandir)
++	${INSTALLCMD} dbench tbench tbench_srv $(DESTDIR)$(bindir)
++	${INSTALLCMD} @top_srcdir@/client.txt $(DESTDIR)$(datadir)
++	${INSTALLCMD} -m644 @top_srcdir@/dbench.1 $(DESTDIR)$(mandir)
++	ln -sf dbench.1 $(DESTDIR)$(mandir)/tbench.1
++	ln -sf dbench.1 $(DESTDIR)$(mandir)/tbench_srv.1
+ 
+ clean:
+ 	rm -f *.o *~ dbench tbench tbench_srv
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/dbench/files/makefile.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/dbench/files/makefile.patch
new file mode 100644
index 0000000..11fb4ff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/dbench/files/makefile.patch
@@ -0,0 +1,18 @@
+Add space between install -m option and its argument. Got this patch from 
+OE 709c4d66e0b107ca606941b988bad717c0b45d9b
+
+Upstream-Status: Inappropriate [not author]
+
+Index: dbench-4.0/Makefile.in
+===================================================================
+--- dbench-4.0.orig/Makefile.in
++++ dbench-4.0/Makefile.in
+@@ -35,7 +35,7 @@ install: all
+ 	${INSTALLCMD} -d $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) $(DESTDIR)$(mandir)
+ 	${INSTALLCMD} dbench tbench tbench_srv $(DESTDIR)$(bindir)
+ 	${INSTALLCMD} @top_srcdir@/client.txt $(DESTDIR)$(datadir)
+-	${INSTALLCMD} -m644 @top_srcdir@/dbench.1 $(DESTDIR)$(mandir)
++	${INSTALLCMD} -m 644 @top_srcdir@/dbench.1 $(DESTDIR)$(mandir)
+ 	ln -sf dbench.1 $(DESTDIR)$(mandir)/tbench.1
+ 	ln -sf dbench.1 $(DESTDIR)$(mandir)/tbench_srv.1
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_2.2.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_2.2.6.bb
new file mode 100644
index 0000000..db67173
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_2.2.6.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Filesystem and hardware benchmark and stress tool"
+DESCRIPTION = "fio is an I/O tool meant to be used both for benchmark and \
+stress/hardware verification. It has support for a number of I/O engines, \
+I/O priorities (for newer Linux kernels), rate I/O, forked or threaded jobs, \
+and much more. It can work on block devices as well as files. fio accepts \
+job descriptions in a simple-to-understand text format. Several example job \
+files are included. fio displays all sorts of I/O performance information."
+HOMEPAGE = "http://freecode.com/projects/fio"
+SECTION = "console/tests"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
+
+DEPENDS = "libaio zlib"
+
+PACKAGECONFIG_NUMA = "numa"
+# ARM does not currently support NUMA
+PACKAGECONFIG_NUMA_arm = ""
+
+PACKAGECONFIG ??= "${PACKAGECONFIG_NUMA}"
+PACKAGECONFIG[numa] = ",--disable-numa,numactl"
+
+# rev for v2.2.6
+SRCREV = "f52c9691bc8c285f3445235c69acdfd6de7f9b82"
+SRC_URI = "git://git.kernel.dk/fio.git"
+
+S = "${WORKDIR}/git"
+
+# avoids build breaks when using no-static-libs.inc
+DISABLE_STATIC = ""
+
+EXTRA_OEMAKE = "CC='${CC}' LDFLAGS='${LDFLAGS}'"
+
+do_configure() {
+    ./configure ${EXTRA_OECONF}
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D} prefix=${prefix} mandir=${mandir}
+    install -d ${D}/${docdir}/${PN}
+    cp -R --no-dereference --preserve=mode,links -v ${S}/examples ${D}/${docdir}/${PN}/
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/0001-Fix-wl_surface-should-be-destoryed-after-the-wl_wind.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/0001-Fix-wl_surface-should-be-destoryed-after-the-wl_wind.patch
new file mode 100644
index 0000000..4395081
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/0001-Fix-wl_surface-should-be-destoryed-after-the-wl_wind.patch
@@ -0,0 +1,34 @@
+From 9c74ec83e2929b1d5ab65d5137b6ba42edeb332d Mon Sep 17 00:00:00 2001
+From: Yong Gan <b45748@freescale.com>
+Date: Tue, 27 Oct 2015 18:15:20 +0800
+Subject: [PATCH] Fix: wl_surface should be destoryed after the wl_window
+ destroyed.
+
+Upstream-Status: Submitted [https://github.com/glmark2/glmark2/issues/12]
+
+Signed-off-by: Yong Gan <b45748@freescale.com>
+
+---
+ src/native-state-wayland.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/native-state-wayland.cpp b/src/native-state-wayland.cpp
+index 41fc743..cdcdf34 100644
+--- a/src/native-state-wayland.cpp
++++ b/src/native-state-wayland.cpp
+@@ -56,10 +56,10 @@ NativeStateWayland::~NativeStateWayland()
+             wl_shell_surface_destroy(window_->shell_surface);
+         if (window_->opaque_reqion)
+             wl_region_destroy(window_->opaque_reqion);
+-        if (window_->surface)
+-            wl_surface_destroy(window_->surface);
+         if (window_->native)
+             wl_egl_window_destroy(window_->native);
++        if (window_->surface)
++            wl_surface_destroy(window_->surface);
+         delete window_;
+     }
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/build-Check-packages-to-be-used-by-the-enabled-flavo.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/build-Check-packages-to-be-used-by-the-enabled-flavo.patch
new file mode 100644
index 0000000..ff13329
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/build-Check-packages-to-be-used-by-the-enabled-flavo.patch
@@ -0,0 +1,43 @@
+From: Otavio Salvador <otavio@ossystems.com.br>
+Subject: [PATCH] build: Check packages to be used by the enabled flavors
+Organization: O.S. Systems Software LTDA.
+
+The packages shouldn't be dynamically detected otherwise the build
+predictability is lost. We now have all packages as mandatory but
+dependent of the flavors which use them.
+
+Upstream-Status: Submitted [https://github.com/glmark2/glmark2/pull/8]
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ wscript | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/wscript b/wscript
+index cab62a3..e7eaed0 100644
+--- a/wscript
++++ b/wscript
+@@ -121,13 +121,17 @@ def configure(ctx):
+                 ('mirclient','mirclient', '0.13', list_contains(Options.options.flavors, 'mir')),
+                 ('wayland-client','wayland-client', None, list_contains(Options.options.flavors, 'wayland')),
+                 ('wayland-egl','wayland-egl', None, list_contains(Options.options.flavors, 'wayland'))]
+-    for (pkg, uselib, atleast, mandatory) in opt_pkgs:
++    for (pkg, uselib, atleast, check) in opt_pkgs:
++        # Check packages required by the flavors
++        if not check:
++            continue
++
+         if atleast is None:
+             ctx.check_cfg(package = pkg, uselib_store = uselib,
+-                          args = '--cflags --libs', mandatory = mandatory)
++                          args = '--cflags --libs', mandatory = True)
+         else:
+             ctx.check_cfg(package = pkg, uselib_store = uselib, atleast_version=atleast,
+-                          args = '--cflags --libs', mandatory = mandatory)
++                          args = '--cflags --libs', mandatory = True)
+ 
+ 
+     # Prepend CXX flags so that they can be overriden by the
+-- 
+2.4.6
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
new file mode 100644
index 0000000..e29921b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
@@ -0,0 +1,52 @@
+SUMMARY = "OpenGL (ES) 2.0 benchmark"
+DESCRIPTION = "glmark2 is a benchmark for OpenGL (ES) 2.0. \
+It uses only the subset of the OpenGL 2.0 API that is compatible with OpenGL ES 2.0."
+HOMEPAGE = "https://launchpad.net/glmark2"
+BUGTRACKER = "https://bugs.launchpad.net/glmark2"
+
+LICENSE = "GPLv3+ & SGIv1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://COPYING.SGI;beginline=5;md5=269cdab4af6748677acce51d9aa13552"
+
+DEPENDS = "libpng12 jpeg"
+
+PV = "2014.03+${SRCPV}"
+
+SRC_URI = "git://github.com/glmark2/glmark2.git;protocol=https \
+           file://build-Check-packages-to-be-used-by-the-enabled-flavo.patch \
+           file://0001-Fix-wl_surface-should-be-destoryed-after-the-wl_wind.patch"
+SRCREV = "fa71af2dfab711fac87b9504b6fc9862f44bf72a"
+
+S = "${WORKDIR}/git"
+
+inherit waf pkgconfig
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11-gl x11-gles2', '', d)} \
+                  ${@bb.utils.contains('DISTRO_FEATURES', 'wayland opengl', 'wayland-gl wayland-gles2', '', d)} \
+                  drm-gl drm-gles2"
+
+PACKAGECONFIG[x11-gl] = ",,virtual/libgl virtual/libx11"
+PACKAGECONFIG[x11-gles2] = ",,virtual/libgles2 virtual/libx11"
+PACKAGECONFIG[drm-gl] = ",,virtual/libgl libdrm"
+PACKAGECONFIG[drm-gles2] = ",,virtual/libgles2 libdrm"
+PACKAGECONFIG[wayland-gl] = ",,virtual/libgl wayland"
+PACKAGECONFIG[wayland-gles2] = ",,virtual/libgles2 wayland"
+
+python __anonymous() {
+    packageconfig = (d.getVar("PACKAGECONFIG", True) or "").split()
+    flavors = []
+    if "x11-gles2" in packageconfig:
+        flavors.append("x11-glesv2")
+    if "x11-gl" in packageconfig:
+        flavors.append("x11-gl")
+    if "wayland-gles2" in packageconfig:
+        flavors.append("wayland-glesv2")
+    if "wayland-gl" in packageconfig:
+        flavors.append("wayland-gl")
+    if "drm-gles2" in packageconfig:
+        flavors.append("drm-glesv2")
+    if "drm-gl" in packageconfig:
+        flavors.append("drm-gl")
+    if flavors:
+        d.appendVar("EXTRA_OECONF", " --with-flavors=%s" % ",".join(flavors))
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/copyright.txt b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/copyright.txt
new file mode 100644
index 0000000..3468fa9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/copyright.txt
@@ -0,0 +1,62 @@
+LICENSE:
+
+ Copyright 1991, 1992, 1994, 1998, 1999, 2002   William D. Norcott
+
+ License to freely use and distribute this software is hereby granted 
+ by the author, subject to the condition that this copyright notice 
+ remains intact.  The author retains the exclusive right to publish 
+ derivative works based on this work, including, but not limited to
+ revised versions of this work.
+
+
+
+Below is author reply to question about distributing iozone3 in
+OpenEmbedded:
+
+========================================================================
+
+Marcin,
+
+        Re-distribution is permitted as long as the copyright is
+    maintained and the source code is not changed. I do not
+    see a problem with your mods to enable fileop for Linux-arm,
+    as these mods have been returned to the Iozone folks,
+    and they have been accepted for inclusion in the next
+    release :-)
+
+Thank you for your contribution,
+Don Capps
+
+----- Original Message ----- 
+From: "Marcin Juszkiewicz" <firma@hrw.one.pl>
+To: "Don Capps" <don.capps2@verizon.net>; "William D. Norcott" 
+<wnorcott@us.oracle.com>
+Sent: Sunday, October 29, 2006 4:55 PM
+Subject: iozone3 263 patch for arm and License question
+
+
+> Morning
+>
+> I want to include iozone3 in OpenEmbedded [1] metadata to give it for
+> other developers. Currently OE is used to build few distributions for
+> misc platforms: ARM, SH3, SH4, x86, PowerPC and different types of
+> machines (PDA, settopbox, devboards, desktops, thin clients, routers).
+>
+> According to your distribution of derivations is forbidden. Packaging
+> iozone3 in OpenEmbedded will not involve any source code changes. But
+> when I was building it for ARM I discovered that fileop binary was not
+> built - so I created patch for it (attached). Not yet tested it on target
+> device.
+>
+> Thus, I seek your written permission via e-mail to distribute a package of
+> the unmodified source code and also a package of the pre-compiled binary.
+> Your copyright statement will be included in the package.
+>
+>
+> 1. http://www.openembedded.org/
+>
+> Regards
+> -- 
+> JID: hrw-jabber.org
+> OpenEmbedded developer/consultant
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_414.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_414.bb
new file mode 100644
index 0000000..14373b9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_414.bb
@@ -0,0 +1,114 @@
+SUMMARY = "Filesystem and Disk Benchmarking Tool"
+HOMEPAGE = "http://www.iozone.org/"
+AUTHOR = "Don Capps <don.capps2@verizon.net>, William D. Norcott <wnorcott@us.oracle.com>"
+SECTION = "console/tests"
+LICENSE = "iozone3"
+LIC_FILES_CHKSUM = "file://iozone.c;beginline=266;endline=270;md5=ab42a6185fd0443978871f11a007ac0b"
+
+SRC_URI = "http://www.iozone.org/src/current/${BPN}_${PV}.tar \
+    file://copyright.txt \
+"
+SRC_URI[md5sum] = "a40dcda593f5841d0aaffe9f21172020"
+SRC_URI[sha256sum] = "9f60e854d7bc5bc3de15355cf5621e15098bd744a26845d11730b3060f4a5fff"
+
+S = "${WORKDIR}/${BPN}_${PV}/src/current/"
+
+#
+# All other arches can use the default OEMAKE except those
+# explicitly listed below. Another, the iozone3 Makefile
+# needs to be told about the cross-compiler explicitly here.
+#
+EXTRA_OEMAKE_powerpc = "linux-powerpc CC='${CC}' GCC='${CC}'"
+EXTRA_OEMAKE_powerpc64 = "linux-powerpc64 CC='${CC}' GCC='${CC}'"
+EXTRA_OEMAKE_arm = "linux-arm CC='${CC}' GCC='${CC}'"
+EXTRA_OEMAKE = "linux CC='${CC}' GCC='${CC}'"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_install() {
+    install -d ${D}${bindir} \
+               ${D}${mandir}/man1 \
+               ${D}${datadir}/doc/${BPN}/examples
+
+    install -m 0755 ${S}/iozone ${D}${bindir}
+    install -m 0755 ${S}/fileop ${D}${bindir}
+    install -m 0644 ${WORKDIR}/${BPN}_${PV}/docs/iozone.1 ${D}${mandir}/man1/
+    install -m 0644 ${WORKDIR}/copyright.txt ${D}${datadir}/doc/${BPN}/
+
+    install -m 0644 ${S}/*.dem ${D}${datadir}/doc/${BPN}/examples
+    install -m 0644 ${S}/client_list ${D}${datadir}/doc/${BPN}/examples
+    install -m 0644 ${S}/Gnuplot.txt ${D}${datadir}/doc/${BPN}/examples
+
+    install -m 0755 ${S}/Generate_Graphs ${D}${datadir}/doc/${BPN}/examples
+    install -m 0755 ${S}/gengnuplot.sh ${D}${datadir}/doc/${BPN}/examples
+    install -m 0755 ${S}/report.pl ${D}${datadir}/doc/${BPN}/examples
+
+    install -m 0644 ${WORKDIR}/${BPN}_${PV}/docs/Iozone_ps.gz ${D}${datadir}/doc/${BPN}/
+    install -m 0644 ${WORKDIR}/${BPN}_${PV}/docs/IOzone_msword_98.pdf ${D}${datadir}/doc/${BPN}/
+    install -m 0644 ${WORKDIR}/${BPN}_${PV}/docs/Run_rules.doc ${D}${datadir}/doc/${BPN}/
+}
+
+FILES_${PN} += "${datadir}/doc/${PN}/copyright.txt"
+
+# LICENSE:
+#
+#  Copyright 1991, 1992, 1994, 1998, 1999, 2002   William D. Norcott
+#
+#  License to freely use and distribute this software is hereby granted
+#  by the author, subject to the condition that this copyright notice
+#  remains intact.  The author retains the exclusive right to publish
+#  derivative works based on this work, including, but not limited to
+#  revised versions of this work.
+#
+
+#
+# Below is author reply to question about distributing iozone3 in
+# OpenEmbedded:
+#
+# ========================================================================
+#
+# Marcin,
+#
+#     Re-distribution is permitted as long as the copyright is
+#     maintained and the source code is not changed. I do not
+#     see a problem with your mods to enable fileop for Linux-arm,
+#     as these mods have been returned to the Iozone folks,
+#     and they have been accepted for inclusion in the next
+#     release :-)
+#
+# Thank you for your contribution,
+# Don Capps
+#
+# ----- Original Message -----
+# From: "Marcin Juszkiewicz" <firma@hrw.one.pl>
+# To: "Don Capps" <don.capps2@verizon.net>; "William D. Norcott"
+# <wnorcott@us.oracle.com>
+# Sent: Sunday, October 29, 2006 4:55 PM
+# Subject: iozone3 263 patch for arm and License question
+#
+#
+# > Morning
+# >
+# > I want to include iozone3 in OpenEmbedded [1] metadata to give it for
+# > other developers. Currently OE is used to build few distributions for
+# > misc platforms: ARM, SH3, SH4, x86, PowerPC and different types of
+# > machines (PDA, settopbox, devboards, desktops, thin clients, routers).
+# >
+# > According to your distribution of derivations is forbidden. Packaging
+# > iozone3 in OpenEmbedded will not involve any source code changes. But
+# > when I was building it for ARM I discovered that fileop binary was not
+# > built - so I created patch for it (attached). Not yet tested it on target
+# > device.
+# >
+# > Thus, I seek your written permission via e-mail to distribute a package of
+# > the unmodified source code and also a package of the pre-compiled binary.
+# > Your copyright statement will be included in the package.
+# >
+# >
+# > 1. http://www.openembedded.org/
+# >
+# > Regards
+# > --
+# > JID: hrw-jabber.org
+# > OpenEmbedded developer/consultant
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf/iperf-2.0.5/0001-fix-out-of-tree-config.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf/iperf-2.0.5/0001-fix-out-of-tree-config.patch
new file mode 100644
index 0000000..e8a0297
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf/iperf-2.0.5/0001-fix-out-of-tree-config.patch
@@ -0,0 +1,52 @@
+iperf: fix out of tree configuration
+
+The configure step uses a package header to check for support of types/declares,
+this package header encapsulates all the required system header for providing
+the needed resources. When configured from an out of tree directory the package
+header is not found due to the hard path.
+We now make the path for package header relative to our 'srcdir' so it is
+found appropriately.
+
+Signed-off-by: Awais Belal <awais_belal@mentor.com>
+---
+diff --git a/configure.ac b/configure.ac
+index 2b3fd20..d420f9e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -176,8 +176,8 @@ dnl Check for system services
+ 
+ dnl check for multicast
+ if test "$ac_cv_multicast" != no; then
+-  AC_CHECK_TYPES(struct ip_mreq,,,[#include "compat/headers_slim.h"])
+-  AC_CHECK_DECLS(IP_ADD_MEMBERSHIP,,,[#include "compat/headers_slim.h"])
++  AC_CHECK_TYPES(struct ip_mreq,,,[#include "${srcdir}/compat/headers_slim.h"])
++  AC_CHECK_DECLS(IP_ADD_MEMBERSHIP,,,[#include "${srcdir}/compat/headers_slim.h"])
+   AC_MSG_CHECKING(for multicast support)
+   ac_cv_multicast=no
+   if test "$ac_cv_have_decl_IP_ADD_MEMBERSHIP" = yes; then
+@@ -193,9 +193,9 @@ fi
+ 
+ dnl check for IPv6
+ if test "$ac_cv_have_ipv6" != no; then
+-  AC_CHECK_TYPES(struct sockaddr_storage,,,[#include "compat/headers_slim.h"])
+-  AC_CHECK_TYPES(struct sockaddr_in6,,,[#include "compat/headers_slim.h"])
+-  AC_CHECK_DECLS(AF_INET6,,,[#include "compat/headers_slim.h"])
++  AC_CHECK_TYPES(struct sockaddr_storage,,,[#include "${srcdir}/compat/headers_slim.h"])
++  AC_CHECK_TYPES(struct sockaddr_in6,,,[#include "${srcdir}/compat/headers_slim.h"])
++  AC_CHECK_DECLS(AF_INET6,,,[#include "${srcdir}/compat/headers_slim.h"])
+   AC_MSG_CHECKING(for IPv6 headers and structures)
+   ac_cv_have_ipv6=no
+   if test "$ac_cv_type_struct_sockaddr_storage" = yes; then
+@@ -211,9 +211,9 @@ fi
+ 
+ if test "$ac_cv_have_ipv6" = yes; then
+   if test "$ac_cv_multicast" = yes; then
+-    AC_CHECK_TYPES(struct ipv6_mreq,,,[#include "compat/headers_slim.h"])
+-    AC_CHECK_DECLS(IPV6_ADD_MEMBERSHIP,,,[#include "compat/headers_slim.h"])
+-    AC_CHECK_DECLS(IPV6_MULTICAST_HOPS,,,[#include "compat/headers_slim.h"])
++    AC_CHECK_TYPES(struct ipv6_mreq,,,[#include "${srcdir}/compat/headers_slim.h"])
++    AC_CHECK_DECLS(IPV6_ADD_MEMBERSHIP,,,[#include "${srcdir}/compat/headers_slim.h"])
++    AC_CHECK_DECLS(IPV6_MULTICAST_HOPS,,,[#include "${srcdir}/compat/headers_slim.h"])
+     AC_MSG_CHECKING(for IPv6 multicast support)
+     ac_cv_have_ipv6_multicast=no
+     if test "$ac_cv_type_struct_ipv6_mreq" = yes; then
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf/iperf-2.0.5/iperf-2.0.5_ManPage.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf/iperf-2.0.5/iperf-2.0.5_ManPage.patch
new file mode 100755
index 0000000..12e8f46
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf/iperf-2.0.5/iperf-2.0.5_ManPage.patch
@@ -0,0 +1,8 @@
+diff --git iperf-2.0.5/man/Makefile.am iperf-2.0.5/man/Makefile.am
+ index ed97bc6..728873f 100644
+--- iperf-2.0.5/man/Makefile.am
++++ iperf-2.0.5/man/Makefile.am
+@@ -1,2 +1 @@
+-man_MANS = iperf.1
+-dist_man_MANS = $(man_MANS)
++dist_man_MANS = iperf.1
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf/iperf_2.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf/iperf_2.0.5.bb
new file mode 100644
index 0000000..4e66792
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf/iperf_2.0.5.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Iperf is a tool to measure maximum TCP bandwidth, allowing the tuning of various parameters and UDP characteristics"
+HOMEPAGE = "http://dast.nlanr.net/Projects/Iperf/"
+SECTION = "console/network"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e8478eae9f479e39bc34975193360298"
+
+SRC_URI = " ${SOURCEFORGE_MIRROR}/iperf/${BP}.tar.gz \
+            file://iperf-2.0.5_ManPage.patch \
+            file://0001-fix-out-of-tree-config.patch \
+          "
+
+SRC_URI[md5sum] = "44b5536b67719f4250faed632a3cd016"
+SRC_URI[sha256sum] = "636b4eff0431cea80667ea85a67ce4c68698760a9837e1e9d13096d20362265b"
+
+S = "${WORKDIR}/${BP}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--exec-prefix=${STAGING_DIR_HOST}${layout_exec_prefix}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/automake-foreign.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/automake-foreign.patch
new file mode 100644
index 0000000..06c394e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/automake-foreign.patch
@@ -0,0 +1,17 @@
+Pass the 'foreign' option to automake to enable iperf3 to build.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Chunrong Guo <b40290@freescale.com>
+
+--- a/configure.ac	2015-10-19 02:49:30.471867352 -0500
++++ b/configure.ac	2015-10-19 02:46:36.207873572 -0500
+@@ -33,7 +33,7 @@
+ 
+ 
+ # Initialize the automake system
+-AM_INIT_AUTOMAKE
++AM_INIT_AUTOMAKE([foreign])
+ AM_MAINTAINER_MODE
+ AM_CONFIG_HEADER(src/iperf_config.h)
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_git.bb
new file mode 100644
index 0000000..4a0f28e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_git.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Network benchmark tool"
+DESCRIPTION = "\
+iperf is a tool for active measurements of the maximum achievable bandwidth \
+on IP networks. It supports tuning of various parameters related to timing, \
+protocols, and buffers. For each test it reports the bandwidth, loss, and \
+other parameters."
+HOMEPAGE = "http://software.es.net/iperf/"
+SECTION = "console/network"
+BUGTRACKER = "https://github.com/esnet/iperf/issues"
+AUTHOR = "ESNET <info@es.net>, Lawrence Berkeley National Laboratory <websupport@lbl.gov>"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=062ab1bc33fae1926387ac1274cb0873"
+
+SRC_URI = "\
+    git://github.com/esnet/iperf.git \
+    file://automake-foreign.patch \
+"
+
+PV = "3.1+gitr${SRCPV}"
+SRCREV = "e396134952a01199326665d1df7c51ae9e62e945"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+PACKAGECONFIG[lksctp] = "ac_cv_header_netinet_sctp_h=yes,ac_cv_header_netinet_sctp_h=no,lksctp-tools"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-install-perl-lib-to-directory-perl-instead-of-perl5.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-install-perl-lib-to-directory-perl-instead-of-perl5.patch
new file mode 100644
index 0000000..0b8d0e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-install-perl-lib-to-directory-perl-instead-of-perl5.patch
@@ -0,0 +1,39 @@
+Upstream-Status: Inappropriate [oe-core specific]
+
+libhugetlbfs depends on perl, and perl installs a directory 'perl'
+and make a symlink 'perl5' to it. So just install perl libs in
+libhugetlbfs to directory 'perl' instead of 'perl5'. This can avoid
+the following error:
+| CalledProcessError: Command 'tar -cf - -C .../perl/5.14.3-r1/sysroot-destdir
+| -ps . | tar -xf - -C .../tmp/sysroots/t4240qds'
+| returned non-zero exit status 2 with output
+| tar: ./usr/lib/perl5: Cannot create symlink to `perl': File exists
+| tar: Exiting with failure status due to previous errors
+
+
+Signed-off-by: Ting Liu <b28495@freescale.com>
+
+--- a/Makefileold	2013-10-11 23:07:31.759421318 -0500
++++ b/Makefile	2013-10-11 23:08:01.935571122 -0500
+@@ -173,17 +173,17 @@
+ DOCDIR = $(PREFIX)/share/doc/libhugetlbfs
+ 
+ ifdef CC32
+-PMDIR = $(PREFIX)/lib/perl5/TLBC
++PMDIR = $(PREFIX)/lib/perl/TLBC
+ endif
+ 
+ ifdef CC64
+ ifeq ($(ARCH),x86_64)
+-PMDIR = $(PREFIX)/lib/perl5/TLBC
++PMDIR = $(PREFIX)/lib/perl/TLBC
+ else
+ ifeq ($(ARCH),aarch64)
+-PMDIR = $(PREFIX)/lib/perl5/TLBC
++PMDIR = $(PREFIX)/lib/perl/TLBC
+ else
+-PMDIR = $(PREFIX)/lib64/perl5/TLBC
++PMDIR = $(PREFIX)/lib64/perl/TLBC
+ endif
+ endif
+ endif
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
new file mode 100644
index 0000000..3082d7e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
@@ -0,0 +1,43 @@
+From a85fc43243f8bfad12d306a4a0e230fb8b3e828a Mon Sep 17 00:00:00 2001
+From: Ting Liu <b28495@freescale.com>
+Date: Wed, 21 Aug 2013 15:44:57 +0800
+Subject: [PATCH] run_test.py: not use hard coded path ../obj/hugeadm
+
+Hard coded path makes the script impossible to run out of source tree.
+After 'make install', we can use hugeadm utility under DESTDIR.
+
+Upstream-Status: Submitted
+
+Signed-off-by: Ting Liu <b28495@freescale.com>
+---
+ tests/run_tests.py |   12 +++++++++++-
+ 1 files changed, 11 insertions(+), 1 deletions(-)
+
+diff --git a/tests/run_tests.py b/tests/run_tests.py
+index d9a6b35..a9bab8f 100755
+--- a/tests/run_tests.py
++++ b/tests/run_tests.py
+@@ -232,9 +232,19 @@ def get_pagesizes():
+     Use libhugetlbfs' hugeadm utility to get a list of page sizes that have
+     active mount points and at least one huge page allocated to the pool.
+     """
++    local_env = os.environ.copy()
++    local_env["PATH"] = "../obj:%s" % local_env.get("PATH", "")
+     sizes = set()
+     out = ""
+-    (rc, out) = bash("../obj/hugeadm --page-sizes")
++    try:
++        p = subprocess.Popen("hugeadm --page-sizes", shell=True, env=local_env, stdout=subprocess.PIPE)
++        rc = p.wait()
++    except KeyboardInterrupt:
++        return sizes
++    except OSError:
++        return sizes
++    out = p.stdout.read().strip()
++
+     if rc != 0 or out == "": return sizes
+ 
+     for size in out.split("\n"): sizes.add(int(size))
+-- 
+1.7.3.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/fix-lib64-can-not-be-shiped-in-64bit-target.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/fix-lib64-can-not-be-shiped-in-64bit-target.patch
new file mode 100644
index 0000000..676fa8a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/fix-lib64-can-not-be-shiped-in-64bit-target.patch
@@ -0,0 +1,75 @@
+Upstream-Status: Inappropriate [oe-core specific]
+
+
+fix the below error:
+  ERROR: QA Issue: libhugetlbfs: Files/directories were installed but not shipped
+  /usr/lib64
+  /usr/lib64/libhugetlbfs.so
+  /usr/lib64/libhugetlbfs.a
+  /usr/lib64/libhugetlbfs_privutils.so
+  /usr/lib64/perl5
+  /usr/lib64/perl5/TLBC
+  /usr/lib64/perl5/TLBC/PerfCollect.pm
+  /usr/lib64/perl5/TLBC/Report.pm
+  /usr/lib64/perl5/TLBC/DataCollect.pm
+  /usr/lib64/perl5/TLBC/OpCollect.pm
+$<50>ERROR: QA run found fatal errors. Please consider fixing them.
+
+
+Signed-off-by: Guo Chunrong <B40290@freescale.com>
+
+--- a/Makefile	2013-09-23 02:28:57.340566998 -0500
++++ b/Makefile	2013-09-23 02:31:05.344569896 -0500
+@@ -33,7 +33,6 @@
+ CPPFLAGS += -D__LIBHUGETLBFS__ -DPPC_NO_SEGMENTS
+ 
+ ARCH = $(shell uname -m | sed -e s/i.86/i386/)
+-CC = gcc
+ 
+ CUSTOM_LDSCRIPTS = yes
+ 
+@@ -59,9 +58,9 @@
+ CUSTOM_LDSCRIPTS = no
+ else
+ ifeq ($(ARCH),aarch64)
+-CC64 = gcc
++CC64 = $(CC)
+ ELF64 = aarch64elf
+-TMPLIB64 = lib64
++TMPLIB64 = lib
+ CUSTOM_LDSCRIPTS = no
+ else
+ ifeq ($(ARCH),i386)
+@@ -72,7 +71,7 @@
+ ifeq ($(ARCH),x86_64)
+ CC64 = $(CC) -m64
+ ELF64 = elf_x86_64
+-TMPLIB64 = lib64
++TMPLIB64 = lib
+ TMPLIB32 = lib
+ ifneq ($(BUILDTYPE),NATIVEONLY)
+ CC32 = $(CC) -m32
+@@ -172,11 +171,23 @@
+ BINDIR = $(PREFIX)/share/libhugetlbfs
+ EXEDIR = $(PREFIX)/bin
+ DOCDIR = $(PREFIX)/share/doc/libhugetlbfs
++
+ ifdef CC32
+ PMDIR = $(PREFIX)/lib/perl5/TLBC
++endif
++
++ifdef CC64
++ifeq ($(ARCH),x86_64)
++PMDIR = $(PREFIX)/lib/perl5/TLBC
++else
++ifeq ($(ARCH),aarch64)
++PMDIR = $(PREFIX)/lib/perl5/TLBC
+ else
+ PMDIR = $(PREFIX)/lib64/perl5/TLBC
+ endif
++endif
++endif
++
+ MANDIR1 = $(PREFIX)/share/man/man1
+ MANDIR3 = $(PREFIX)/share/man/man3
+ MANDIR7 = $(PREFIX)/share/man/man7
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-avoid-search-host-library-path-for-cros.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-avoid-search-host-library-path-for-cros.patch
new file mode 100644
index 0000000..b3fd843
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-avoid-search-host-library-path-for-cros.patch
@@ -0,0 +1,99 @@
+From 0a2877400a086e9d6ddd32a80462b7a931921dc2 Mon Sep 17 00:00:00 2001
+From: Chunrong Guo <B40290@freescale.com>
+Date: Sun, 8 Sep 2013 23:21:49 -0500
+Subject: [PATCH] libhugetlbfs: avoid search host library path for cross 
+ compilation
+
+Upstream-Status: Inappropriate [oe-core specific]
+
+Signed-off-by: Chunrong Guo <B40290@freescale.com>
+---
+ ldscripts/elf32ppclinux.xB   |    2 +-
+ ldscripts/elf32ppclinux.xBDT |    2 +-
+ ldscripts/elf64ppc.xB        |    2 +-
+ ldscripts/elf64ppc.xBDT      |    2 +-
+ ldscripts/elf_x86_64.xB      |    2 +-
+ ldscripts/elf_x86_64.xBDT    |    2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/ldscripts/elf32ppclinux.xB b/ldscripts/elf32ppclinux.xB
+index 28ad88d..33d482d 100644
+--- a/ldscripts/elf32ppclinux.xB
++++ b/ldscripts/elf32ppclinux.xB
+@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
+ 	      "elf32-powerpc")
+ OUTPUT_ARCH(powerpc:common)
+ ENTRY(_start)
+-SEARCH_DIR("/usr/powerpc-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
++/*SEARCH_DIR("/usr/powerpc-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");*/
+ INPUT(-lhugetlbfs);
+ PHDRS
+ {
+diff --git a/ldscripts/elf32ppclinux.xBDT b/ldscripts/elf32ppclinux.xBDT
+index 497882b..823475e 100644
+--- a/ldscripts/elf32ppclinux.xBDT
++++ b/ldscripts/elf32ppclinux.xBDT
+@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
+ 	      "elf32-powerpc")
+ OUTPUT_ARCH(powerpc:common)
+ ENTRY(_start)
+-SEARCH_DIR("/usr/powerpc-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
++/*SEARCH_DIR("/usr/powerpc-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");*/
+ INPUT(-lhugetlbfs);
+ PHDRS
+ {
+diff --git a/ldscripts/elf64ppc.xB b/ldscripts/elf64ppc.xB
+index 1a9c1ab..8cc557d 100644
+--- a/ldscripts/elf64ppc.xB
++++ b/ldscripts/elf64ppc.xB
+@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc",
+ 	      "elf64-powerpc")
+ OUTPUT_ARCH(powerpc:common64)
+ ENTRY(_start)
+-SEARCH_DIR("/usr/powerpc64-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/powerpc64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
++/*SEARCH_DIR("/usr/powerpc64-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/powerpc64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");*/
+ INPUT(-lhugetlbfs);
+ PHDRS
+ {
+diff --git a/ldscripts/elf64ppc.xBDT b/ldscripts/elf64ppc.xBDT
+index 5477294..53e0749 100644
+--- a/ldscripts/elf64ppc.xBDT
++++ b/ldscripts/elf64ppc.xBDT
+@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc",
+ 	      "elf64-powerpc")
+ OUTPUT_ARCH(powerpc:common64)
+ ENTRY(_start)
+-SEARCH_DIR("/usr/powerpc64-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/powerpc64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
++/*SEARCH_DIR("/usr/powerpc64-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/powerpc64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");*/
+ INPUT( -lhugetlbfs );
+ PHDRS
+ {
+diff --git a/ldscripts/elf_x86_64.xB b/ldscripts/elf_x86_64.xB
+index ed21a2c..ba50e9f 100644
+--- a/ldscripts/elf_x86_64.xB
++++ b/ldscripts/elf_x86_64.xB
+@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
+ 	      "elf64-x86-64")
+ OUTPUT_ARCH(i386:x86-64)
+ ENTRY(_start)
+-SEARCH_DIR("/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
++/*SEARCH_DIR("/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");*/
+ INPUT(-lhugetlbfs);
+ /* Do we need any of these for elf?
+    __DYNAMIC = 0;    */
+diff --git a/ldscripts/elf_x86_64.xBDT b/ldscripts/elf_x86_64.xBDT
+index 1855202..c62d245 100644
+--- a/ldscripts/elf_x86_64.xBDT
++++ b/ldscripts/elf_x86_64.xBDT
+@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
+ 	      "elf64-x86-64")
+ OUTPUT_ARCH(i386:x86-64)
+ ENTRY(_start)
+-SEARCH_DIR("/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
++/*SEARCH_DIR("/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");*/
+ INPUT(-lhugetlbfs);
+ /* Do we need any of these for elf?
+    __DYNAMIC = 0;    */
+-- 
+1.7.9.7
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-avoid-using-restrict-as-var-name.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-avoid-using-restrict-as-var-name.patch
new file mode 100644
index 0000000..b77cfe1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-avoid-using-restrict-as-var-name.patch
@@ -0,0 +1,34 @@
+Avoid using keyword restrict as variable name which causes error with gcc 5.x:
+
+| hugeutils.c: In function '__lh_hugetlbfs_setup_env':
+| hugeutils.c:304:40: error: expected identifier or '(' before 'restrict'
+|    char *p, *tok, *exe, buf[MAX_EXE+1], restrict[MAX_EXE];
+|                                         ^
+
+Upstream-Status: Pending
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/hugeutils.c b/hugeutils.c
+index 53a7fbd..b9d7001 100644
+--- a/hugeutils.c
++++ b/hugeutils.c
+@@ -301,14 +301,14 @@ void hugetlbfs_setup_env()
+ 
+ 	env = getenv("HUGETLB_RESTRICT_EXE");
+ 	if (env) {
+-		char *p, *tok, *exe, buf[MAX_EXE+1], restrict[MAX_EXE];
++		char *p, *tok, *exe, buf[MAX_EXE+1], restricted[MAX_EXE];
+ 		int found = 0;
+ 
+ 		exe = get_exe_name(buf, sizeof buf);
+ 		DEBUG("Found HUGETLB_RESTRICT_EXE, this exe is \"%s\"\n", exe);
+-		strncpy(restrict, env, sizeof restrict);
+-		restrict[sizeof(restrict)-1] = 0;
+-		for (p = restrict; (tok = strtok(p, ":")) != NULL; p = NULL) {
++		strncpy(restricted, env, sizeof restricted);
++		restricted[sizeof(restricted)-1] = 0;
++		for (p = restricted; (tok = strtok(p, ":")) != NULL; p = NULL) {
+ 			DEBUG("  ...check exe match for \"%s\"\n",  tok);
+ 			if (strcmp(tok, exe) == 0) {
+ 				found = 1;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-elf_i386-avoid-search-host-library-path.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-elf_i386-avoid-search-host-library-path.patch
new file mode 100644
index 0000000..1566488
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-elf_i386-avoid-search-host-library-path.patch
@@ -0,0 +1,40 @@
+From 889e52753d30179ba4ac940023cb4ed561436ab8 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Tue, 4 Nov 2014 00:49:11 -0800
+Subject: [PATCH] libhugetlbfs/elf_i386: avoid search host library path for cross compilation
+
+Upstream-Status: Inappropriate [cross compile specific]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ ldscripts/elf_i386.xB   |    1 -
+ ldscripts/elf_i386.xBDT |    1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/ldscripts/elf_i386.xB b/ldscripts/elf_i386.xB
+index 43fe51c..eae0fa8 100644
+--- a/ldscripts/elf_i386.xB
++++ b/ldscripts/elf_i386.xB
+@@ -3,7 +3,6 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386",
+ 	      "elf32-i386")
+ OUTPUT_ARCH(i386)
+ ENTRY(_start)
+-SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+ INPUT(-lhugetlbfs);
+ /* Do we need any of these for elf?
+    __DYNAMIC = 0;    */
+diff --git a/ldscripts/elf_i386.xBDT b/ldscripts/elf_i386.xBDT
+index d72aebe..3bac1b1 100644
+--- a/ldscripts/elf_i386.xBDT
++++ b/ldscripts/elf_i386.xBDT
+@@ -3,7 +3,6 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386",
+ 	      "elf32-i386")
+ OUTPUT_ARCH(i386)
+ ENTRY(_start)
+-SEARCH_DIR("/usr/i486-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+ INPUT(-lhugetlbfs);
+ /* Do we need any of these for elf?
+    __DYNAMIC = 0;    */
+--
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch
new file mode 100644
index 0000000..07a9971
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch
@@ -0,0 +1,23 @@
+From 355c014573de7f95202cc7c819f81f0f230e4a1a Mon Sep 17 00:00:00 2001
+From: Ting Liu <b28495@freescale.com>
+Date: Mon, 18 Jun 2012 16:37:05 +0800
+Subject: [PATCH] skip checking LIB32 and LIB64 if they point to the same place
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Ting Liu <b28495@freescale.com>
+---
+
+diff --git a/Makefile b/Makefile
+index 91502e1..bfb3414 100644
+--- a/Makefile
++++ b/Makefile
+@@ -167,7 +167,6 @@ REALLIB32 = $(realpath $(PREFIX)/$(LIB32))
+ REALLIB64 = $(realpath $(PREFIX)/$(LIB64))
+ ifneq ($(realpath $(PREFIX)),)
+ ifeq ($(REALLIB32),$(REALLIB64))
+-$(error LIB32 ($(PREFIX)/$(LIB32) to $(REALLIB32)) and LIB64 ($(PREFIX)/$(LIB64) to $(REALLIB64)) are resolving to the same place. Manually specify LIB32 and LIB64. e.g. make PREFIX=$(PREFIX) LIB32=lib32 LIB64=lib64)
+ endif
+ endif
+ 
+-- 
+1.9.2
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/tests-Makefile-install-static-4G-edge-testcases.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/tests-Makefile-install-static-4G-edge-testcases.patch
new file mode 100644
index 0000000..249f6e1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/tests-Makefile-install-static-4G-edge-testcases.patch
@@ -0,0 +1,17 @@
+Upstream-Status: Submitted
+
+TESTS_64 is empty, install will fail due to missing file operand
+
+Signed-off-by: Ting Liu <b28495@freescale.com>
+
+--- a/tests/Makefileold	2013-10-12 02:32:55.262391998 -0500
++++ b/tests/Makefile	2013-10-12 02:33:45.929394722 -0500
+@@ -292,7 +292,7 @@
+ 	$(INSTALL) -m 755 wrapper-utils.sh $(DESTDIR)$(INST_TESTSDIR64)/obj64
+ 	$(INSTALL) -m 755 $(HELPERS:%=obj64/%) $(DESTDIR)$(INST_TESTSDIR64)/obj64
+ 	$(INSTALL) -m 755 $(HELPER_LIBS:%=obj64/%) $(DESTDIR)$(INST_TESTSDIR64)/obj64
+-	$(INSTALL) -m 755 $(TESTS_64:%=obj64/%) $(DESTDIR)$(INST_TESTSDIR64)/obj64
++	$(INSTALL) -m 755 $(TESTS_64_STATIC:%=obj64/%_static) $(DESTDIR)$(INST_TESTSDIR64)/obj64
+ 	$(INSTALL) -m 755 run_tests.py $(DESTDIR)$(INST_TESTSDIR64)
+ 
+ install: $(OBJDIRS:%=%/install)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
new file mode 100644
index 0000000..015d446
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
@@ -0,0 +1,66 @@
+SUMMARY = "A library which provides easy access to huge pages of memory"
+HOMEPAGE = "https://github.com/libhugetlbfs/libhugetlbfs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LGPL-2.1;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+DEPENDS = "sysfsutils perl"
+RDEPENDS_${PN} += "bash perl python python-io python-lang python-subprocess python-resource"
+RDEPENDS_${PN}-tests += "bash"
+
+PV = "2.19"
+PE = "1"
+
+SRCREV = "426c22d65415fcb8927f68fbc5887e075a8dc40a"
+SRC_URI = " \
+    git://github.com/libhugetlbfs/libhugetlbfs.git;protocol=https \
+    file://skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch \
+    file://libhugetlbfs-avoid-search-host-library-path-for-cros.patch \
+    file://tests-Makefile-install-static-4G-edge-testcases.patch \
+    file://0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch \
+    file://libhugetlbfs-elf_i386-avoid-search-host-library-path.patch \
+    file://libhugetlbfs-avoid-using-restrict-as-var-name.patch \
+"
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_HOST = "(x86_64|powerpc|powerpc64|aarch64|arm).*-linux*"
+
+LIBARGS = "LIB32=${baselib} LIB64=${baselib}"
+LIBHUGETLBFS_ARCH = "${TARGET_ARCH}"
+LIBHUGETLBFS_ARCH_powerpc = "ppc"
+LIBHUGETLBFS_ARCH_powerpc64 = "ppc64"
+EXTRA_OEMAKE = "'ARCH=${LIBHUGETLBFS_ARCH}' 'OPT=${CFLAGS}' 'CC=${CC}' ${LIBARGS} BUILDTYPE=NATIVEONLY V=2"
+PARALLEL_MAKE = ""
+CFLAGS += "-fexpensive-optimizations -frename-registers -fomit-frame-pointer -g0"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+#The CUSTOM_LDSCRIPTS doesn't work with the gold linker
+do_configure() {
+    if [ "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'ld-is-gold', '', d)}" = "ld-is-gold" ] ; then
+      sed -i 's/CUSTOM_LDSCRIPTS = yes/CUSTOM_LDSCRIPTS = no/'  Makefile
+    fi
+
+    # fixup perl module directory hardcoded to perl5
+    sed -i 's/perl5/perl/g'  Makefile
+}
+
+do_install() {
+        oe_runmake PREFIX=${prefix} DESTDIR=${D}  \
+          INST_TESTSDIR32=${libdir}/libhugetlbfs/tests \
+          INST_TESTSDIR64=${libdir}/libhugetlbfs/tests \
+          install-tests
+}
+
+
+PACKAGES =+ "${PN}-perl ${PN}-tests "
+FILES_${PN} += "${libdir}/*.so"
+FILES_${PN}-dev = "${includedir}"
+FILES_${PN}-dbg += "${libdir}/libhugetlbfs/tests/obj32/.debug ${libdir}/libhugetlbfs/tests/obj64/.debug"
+FILES_${PN}-perl = "${libdir}/perl"
+FILES_${PN}-tests += "${libdir}/libhugetlbfs/tests"
+
+INSANE_SKIP_${PN} = "dev-so"
+
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/fix-lmbench-memory-check-failure.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/fix-lmbench-memory-check-failure.patch
new file mode 100644
index 0000000..549a114
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/fix-lmbench-memory-check-failure.patch
@@ -0,0 +1,206 @@
+lmbench: Can't proceed on some targets
+
+lmbench can't proceed on some targets.  The memory check fails because the
+memory latency of each page is longer then 10us, which is a time limit set
+in the original memsize.c.
+
+The memory latency is very different on different targets due to the
+hardware and current system load.  The targets with slower memory
+chips or heavy system load need much longer time to read or write
+the memory.
+
+This fix changes the fixed time limit of 10us to a specific value calculated
+from the runtime target.
+
+Also set an upper limit of memory size used for lmbench testing.  The memory
+check sometimes fails if the target has a large amount of memory, for
+example more than 4G.
+
+Signed-off-by: Qingming Su <qingming.su@windriver.com>
+Signed-off-by: Fupan Li <fupan.li@windriver.com>
+
+Add and reword above comments
+
+Upstream-status: inappropriate [ configuration ]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+diff --git a/scripts/config-run b/scripts/config-run
+index e1f7b6d..31b9256 100755
+--- a/scripts/config-run
++++ b/scripts/config-run
+@@ -214,6 +214,12 @@ The bigger the range, the more accurate the results, but larger sizes
+ take somewhat longer to run the benchmark.
+
+ EOF
++
++# By default, use 512M memory as the upper limit for lmbench test
++if [ $MB -gt 512 ];then
++MB=512
++fi
++
+ echo $ECHON "MB [default $MB]: $ECHOC"
+ #read TMP
+ TMP=""
+@@ -718,10 +724,10 @@ case $MAIL in
+		;;
+ esac
+
+-INFO=`../scripts/info`
++INFO=`../scripts/hostinfo`
+ if [ $MAIL = yes ]
+ then	if [ ! -f $INFO ]
+-	then	cp ../scripts/info-template $INFO
++	then	cp ../scripts/hostinfo-template $INFO
+ 		chmod +w $INFO
+ 		REUSE=no
+ 	else
+@@ -765,7 +771,7 @@ EOF
+ 		then	EDITOR=$TMP
+ 		fi
+ 		if [ X$EDITOR != "none" ]
+-		then	$EDITOR `../scripts/info`
++		then	$EDITOR `../scripts/hostinfo`
+ 		fi
+ 	fi
+ fi
+diff --git a/src/Makefile b/src/Makefile
+index d1f0dc6..5098998 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -49,7 +49,7 @@ TARGET=`../scripts/target`
+ BINDIR=../bin/$(OS)
+ CONFIG=../bin/$(OS)/`../scripts/config`
+ UTILS=../scripts/target ../scripts/os ../scripts/gnu-os ../scripts/compiler \
+-	../scripts/info ../scripts/info-template ../scripts/version \
++	../scripts/hostinfo ../scripts/hostinfo-template ../scripts/version \
+ 	../scripts/config ../scripts/config-run ../scripts/results \
+ 	../scripts/lmbench ../scripts/make ../scripts/build
+ INSTALL=cp
+@@ -240,7 +240,7 @@ $O/getopt.o : getopt.c $(INCS)
+ 	$(COMPILE) -c getopt.c -o $O/getopt.o
+
+ $(UTILS) :
+-	-cd ../scripts; make get
++	-cd ../scripts; cp info hostinfo; cp info-template hostinfo-template
+
+ # Do not remove the next line, $(MAKE) depend needs it
+ # MAKEDEPEND follows
+diff --git a/src/memsize.c b/src/memsize.c
+index eb25a09..cf9fe0c 100644
+--- a/src/memsize.c
++++ b/src/memsize.c
+@@ -14,9 +14,12 @@ char	*id = "$Id$\n";
+
+ #define	CHK(x)	if ((x) == -1) { perror("x"); exit(1); }
+
+-#ifndef	TOO_LONG
+-#define	TOO_LONG	10	/* usecs */
+-#endif
++//#ifndef	TOO_LONG
++//#define	TOO_LONG	10	/* usecs */
++//#endif
++
++#define	MEMORY_SIZE_1MB (1024 * 1024)
++#define	MEMORY_SIZE_8MB (8 * 1024 * 1024)
+
+ int	alarm_triggered = 0;
+
+@@ -35,10 +38,10 @@ main(int ac, char **av)
+ 	size_t	delta;
+
+ 	if (ac == 2) {
+-		max = size = bytes(av[1]) * 1024 * 1024;
++		max = size = bytes(av[1]) * MEMORY_SIZE_1MB;
+ 	}
+-	if (max < 1024 * 1024) {
+-		max = size = 1024 * 1024 * 1024;
++	if (max < MEMORY_SIZE_1MB) {
++		max = size = 1024 * MEMORY_SIZE_1MB;
+ 	}
+ 	/*
+ 	 * Binary search down and then binary search up
+@@ -48,7 +51,7 @@ main(int ac, char **av)
+ 	}
+ 	/* delta = size / (2 * 1024 * 1024) */
+ 	for (delta = (size >> 21); delta > 0; delta >>= 1) {
+-		uint64 sz = (uint64)size + (uint64)delta * 1024 * 1024;
++		uint64 sz = (uint64)size + (uint64)delta * MEMORY_SIZE_1MB;
+ 		size_t check = sz;
+ 		if (max < sz) continue;
+ 		if (check < sz || !test_malloc(sz)) break;
+@@ -66,41 +69,58 @@ timeit(char *where, size_t size)
+ {
+ 	int	sum = 0;
+ 	size_t	n;
+-	size_t	s_prev;
++	size_t	s_prev = MEMORY_SIZE_8MB;
+ 	size_t	range;
+-	size_t	incr = 1024 * 1024;
++	size_t	incr = MEMORY_SIZE_1MB;
+ 	size_t	pagesize = getpagesize();
+-	unsigned long long	s;
+-
+-	if (size < 1024*1024 - 16*1024) {
+-		fprintf(stderr, "Bad size\n");
+-		return;
+-	}
++	size_t	time_each_page = 0;
++	size_t	too_long = 0;
++	unsigned long long      s;
++
++	if (pagesize < MEMORY_SIZE_1MB)
++		range = MEMORY_SIZE_1MB;
++	else
++		range = MEMORY_SIZE_8MB;
++
++	incr = MEMORY_SIZE_1MB;
++	
++	if (size < range) {
++              fprintf(stderr, "Bad size\n");
++              return;
++	    }
++
++	//Touch range of memory, get the average time (usec) of operating each memory page on this system
++        start(0);
++        touchRange(where, range, pagesize);
++        sum = stop(0, 0);
++
++        if ((time_each_page = sum * pagesize / range) < 1)
++		time_each_page = 1;
++	//Set the uper limit of time spending on one page
++        too_long = 10 * time_each_page;
+
+-	range = 1024 * 1024;
+-	incr = 1024 * 1024;
+-	touchRange(where, range, pagesize);
+ 	for (range += incr; range <= size; range += incr) {
+ 		n = range / pagesize;
+-		set_alarm(n * TOO_LONG);
++		set_alarm(n * too_long);
+ 		touchRange(where + range - incr, incr, pagesize);
+ 		clear_alarm();
+-		set_alarm(n * TOO_LONG);
++		set_alarm(n * too_long);
+ 		start(0);
+ 		touchRange(where, range, pagesize);
+ 		sum = stop(0, 0);
+ 		clear_alarm();
+-		if ((sum / n) > TOO_LONG || alarm_triggered) {
++		if ((sum / n) > too_long || alarm_triggered) {
+ 			size = range - incr;
++			fprintf(stderr, "Error! Memory testing timeout! Touch one page of memory needs more than %d (usecs)\n ", too_long);
+ 			break;
+ 		}
+-		for (s = 8 * 1024 * 1024; s <= range; s_prev = s, s *= 2)
++		for (s = s_prev; s <= range; s_prev = s, s *= 2)
+ 			if (s < s_prev) break;
+ 		incr = s / 8;
+ 		if (range < size && size < range + incr) {
+ 			incr = size - range;
+ 		}
+-		fprintf(stderr, "%dMB OK\r", (int)(range/(1024*1024)));
++		fprintf(stderr, "%dMB OK\r", (int)(range/MEMORY_SIZE_1MB));
+ 	}
+ 	fprintf(stderr, "\n");
+ 	printf("%d\n", (int)(size>>20));
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/lmbench_result_html_report.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/lmbench_result_html_report.patch
new file mode 100644
index 0000000..cda2f0c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/lmbench_result_html_report.patch
@@ -0,0 +1,61 @@
+lmbench: Fix "make html" graph failure
+
+The html-list perl script cannot parse the first line of the result
+files about the lmbench version.
+
+Additional fixes are to make the result's html pages easier to understand.
+
+Signed-off-by: Lin Yu <lin.yu@windriver.com>
+Signed-off-by: Fupan Li <fupan.li@windriver.com>
+
+Reworded patch description.
+
+Upstream-status: inappropriate [ configuration ]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+diff --git a/results/Makefile b/results/Makefile
+index 0935376..1ef9a15 100644
+--- a/results/Makefile
++++ b/results/Makefile
+@@ -186,6 +186,7 @@ paper:
+ # scratch makes you want a Ghz machine.
+ html: dirs
+ 	-make clean
++	make ps
+ 	#$(SCRIPTS)bghtml $(BG)
+ 	$(SCRIPTS)html-list $(LIST)
+ 	$(MK) LIST="$(LIST)" summary > HTML/summary.out 2> HTML/summary.errs
+diff --git a/scripts/html-list b/scripts/html-list
+index 9850461..6383115 100755
+--- a/scripts/html-list
++++ b/scripts/html-list
+@@ -14,7 +14,7 @@ open(H, ">HTML/specific.html");
+ print H <<EOF;
+ <title>LMBENCH System Results</title>
+ <h1>LMBENCH System Results</h1>
+-<h2><a href=summary>Summary of results</a></h2>
++<h2><a href=summary.out>Summary of results</a></h2>
+ <hr>
+ EOF
+
+@@ -47,7 +47,7 @@ foreach $os (@os) {
+ 		open(F, $file);
+ 		$_ = <F>;
+ 		close(F);
+-		next unless /lmbench1.[01]/;
++		next unless /lmbench[0-9]+.[01]/;
+ 		chop;
+ 		$title = $_;
+ 		#s/.lmbench1.? results for //;
+@@ -103,10 +103,7 @@ EOF
+ 				    if $i < $#os;
+ 				print S<<EOF;
+ <h4>$title</h4>
+-<a href=../$doc{$what}>Information on this benchmark</a> (Not up to date)
+ <p><IMG SRC="${what}${scale}$N.gif">\n<p>
+-<a href=../lmbench.html>
+-<img align=middle src="../gifs/arrows/b_arrow.gif">LMBENCH table of contents</a>
+ <a href=specific.html>
+ <img align=middle src=\"../gifs/graph.gif\">System results table of contents</a>
+ <p>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/obey-ranlib.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/obey-ranlib.patch
new file mode 100644
index 0000000..41a3b32
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/obey-ranlib.patch
@@ -0,0 +1,30 @@
+In some cases the host may have too old of a ranlib to work.  Since it's
+not exactly a great idea to not be using the cross ranlib anyhow, fix the
+Makefile so we can override ranlib and then override it
+
+Upstream-Status: Inappropriate [build system specific change]
+---
+ src/Makefile |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Index: lmbench-3.0-a9/src/Makefile
+===================================================================
+--- lmbench-3.0-a9.orig/src/Makefile
++++ lmbench-3.0-a9/src/Makefile
+@@ -38,6 +38,7 @@ CC=`../scripts/compiler`
+ MAKE=`../scripts/make`
+ AR=ar
+ ARCREATE=cr
++RANLIB=ranlib
+ 
+ # base of installation location
+ BASE=/usr/local
+@@ -217,7 +218,7 @@ $O/lmbench : ../scripts/lmbench version.
+ $O/lmbench.a: $(LIBOBJS)
+ 	/bin/rm -f $O/lmbench.a
+ 	$(AR) $(ARCREATE) $O/lmbench.a $(LIBOBJS)
+-	-ranlib $O/lmbench.a
++	-$(RANLIB) $O/lmbench.a
+ 
+ $O/lib_timing.o : lib_timing.c $(INCS)
+ 	$(COMPILE) -c lib_timing.c -o $O/lib_timing.o
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/update-config-script.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/update-config-script.patch
new file mode 100644
index 0000000..b46e09a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/update-config-script.patch
@@ -0,0 +1,12 @@
+Upstream-Status: Pending
+Index: lmbench-3.0-a9/scripts/config
+===================================================================
+--- lmbench-3.0-a9/scripts/config	2000-01-31 18:29:31.000000000 -0600
++++ lmbench-3.0-a9/scripts/config	2013-03-01 00:19:41.032984315 -0600
+@@ -3,5 +3,5 @@
+ UNAME=`uname -n 2>/dev/null`
+ if [ X$UNAME = X ]
+ then	echo CONFIG
+-else	echo CONFIG.$UNAME
++else	echo ../scripts/CONFIG.$UNAME
+ fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/update-results-script.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/update-results-script.patch
new file mode 100644
index 0000000..894f146
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/update-results-script.patch
@@ -0,0 +1,160 @@
+Now that we have our binaries in /usr/bin rather than the normal
+lmbench hierarchy we need to update the scripts as well to behave well here.
+
+Upstream-Status: Inappropriate [This is related to the OE-specific behavior
+of installing into /usr/bin, etc, rather than dumping everything into 
+/usr/share/lmbench or similar]
+
+Index: lmbench-3.0-a9/scripts/results
+===================================================================
+--- lmbench-3.0-a9.orig/scripts/results
++++ lmbench-3.0-a9/scripts/results
+@@ -8,11 +8,11 @@ RESULTS=results/$OS
+ BASE=../$RESULTS/`uname -n`
+ EXT=0
+ 
+-if [ ! -f "../bin/$OS/$CONFIG" ]
++if [ ! -f "$CONFIG" ]
+ then	echo "No config file?"
+ 	exit 1
+ fi
+-. ../bin/$OS/$CONFIG
++. $CONFIG
+ 
+ if [ ! -d ../$RESULTS ]
+ then	mkdir -p ../$RESULTS
+@@ -23,11 +23,9 @@ do      EXT=`expr $EXT + 1`
+ 	RESULTS=$BASE.$EXT
+ done
+ 
+-cd ../bin/$OS 
+-PATH=.:${PATH}; export PATH
+ export SYNC_MAX
+ export OUTPUT
+-lmbench $CONFIG 2>../${RESULTS}
++lmbench $CONFIG 2>${RESULTS}
+ 
+ if [ X$MAIL = Xyes ]
+ then	echo Mailing results
+Index: lmbench-3.0-a9/scripts/config-run
+===================================================================
+--- lmbench-3.0-a9.orig/scripts/config-run
++++ lmbench-3.0-a9/scripts/config-run
+@@ -132,20 +132,20 @@ export LMBENCH_SCHED
+ ############################################################################
+ echo $L; echo "";
+ echo "Hang on, we are calculating your timing granularity."
+-../bin/$OS/msleep 250
+-ENOUGH=`../bin/$OS/enough`
++msleep 250
++ENOUGH=`enough`
+ export ENOUGH 
+ echo "OK, it looks like you can time stuff down to $ENOUGH usec resolution."
+ echo ""
+ echo "Hang on, we are calculating your timing overhead."
+-../bin/$OS/msleep 250
+-TIMING_O=`../bin/$OS/timing_o`
++msleep 250
++TIMING_O=`timing_o`
+ export TIMING_O
+ echo "OK, it looks like your gettimeofday() costs $TIMING_O usecs."
+ echo ""
+ echo "Hang on, we are calculating your loop overhead."
+-../bin/$OS/msleep 250
+-LOOP_O=`../bin/$OS/loop_o`
++msleep 250
++LOOP_O=`loop_o`
+ export LOOP_O
+ echo "OK, it looks like your benchmark loop costs $LOOP_O usecs."
+ echo ""
+@@ -177,7 +177,7 @@ then
+ fi
+ if [ X$MB = X ]
+ then	$ECHON "Probing system for available memory: $ECHOC"
+-	MB=`../bin/$OS/memsize 4096`
++	MB=`memsize 4096`
+ fi
+ TOTAL_MEM=$MB
+ MB=`echo \( $MB \* 7 \) / 10 | bc 2>/dev/null`
+@@ -205,9 +205,9 @@ fi
+ # Certain machines tend to barf when you try and bcopy 8MB.
+ # Figure out how much we can use.
+ echo "Checking to see if you have $MB MB; please wait for a moment..."
+-MB=`../bin/$OS/memsize $MB`
+-MB=`../bin/$OS/memsize $MB`
+-MB=`../bin/$OS/memsize $MB`
++MB=`memsize $MB`
++MB=`memsize $MB`
++MB=`memsize $MB`
+ if [ `expr $SYNC_MAX \* $MB` -gt `expr $TOTAL_MEM` ]
+ then
+ 	MB=`expr $TOTAL_MEM / $SYNC_MAX`
+@@ -223,8 +223,8 @@ then	echo Warning: you have only ${MB}MB
+ fi
+ 
+ echo "Hang on, we are calculating your cache line size."
+-../bin/$OS/msleep 250
+-LINE_SIZE=`../bin/$OS/lm_line -M ${MB}M`
++msleep 250
++LINE_SIZE=`lm_line -M ${MB}M`
+ export LINE_SIZE
+ echo "OK, it looks like your cache line is $LINE_SIZE bytes."
+ echo ""
+@@ -479,7 +479,7 @@ EOF
+ 	then	
+ 		for i in $disks
+ 		do	if [ -r $i ]
+-			then	../bin/$OS/flushdisk $i
++			then	flushdisk $i
+ 				if [ $? -eq 1 ]
+ 				then	echo "Must be root to run disk benchmarks."
+ 					echo "Root is needed to flush the buffer cache"
+@@ -584,7 +584,7 @@ fi
+ echo $L
+ echo ""
+ echo "Calculating mhz, please wait for a moment..."
+-MHZ=`../bin/$OS/mhz`
++MHZ=`mhz`
+ cat<<EOF
+ I think your CPU mhz is 
+ 
+@@ -689,9 +689,9 @@ esac
+ 
+ INFO=`../scripts/info`
+ if [ $MAIL = yes ]
+-then	if [ ! -f ../bin/$OS/$INFO ]
+-	then	cp ../scripts/info-template ../bin/$OS/$INFO
+-		chmod +w ../bin/$OS/$INFO
++then	if [ ! -f $INFO ]
++	then	cp ../scripts/info-template $INFO
++		chmod +w $INFO
+ 		REUSE=no
+ 	else	
+ 		REUSE=view
+@@ -705,7 +705,7 @@ then	if [ ! -f ../bin/$OS/$INFO ]
+ 				;;
+ 			[Vv]*)	REUSE=view
+ 				echo $L
+-				more ../bin/$OS/$INFO
++				more $INFO
+ 				echo $L
+ 				;;
+ 	    		*)	REUSE=yes
+@@ -733,7 +733,7 @@ EOF
+ 		then	EDITOR=$TMP
+ 		fi
+ 		if [ X$EDITOR != "none" ]
+-		then	$EDITOR ../bin/$OS/`../scripts/info`
++		then	$EDITOR `../scripts/info`
+ 		fi
+ 	fi
+ fi
+@@ -750,7 +750,7 @@ EOF
+ 
+ VERSION=`../scripts/version`
+ 
+-C=../bin/$OS/`../scripts/config`
++C=`../scripts/config`
+ echo DISKS=\"$DISKS\" > $C
+ echo DISK_DESC=\"$DISK_DESC\" >> $C
+ echo OUTPUT=$OUTPUT >> $C
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/use-base_libdir-instead-of-hardcoded-lib.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/use-base_libdir-instead-of-hardcoded-lib.patch
new file mode 100644
index 0000000..3351ce8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/use-base_libdir-instead-of-hardcoded-lib.patch
@@ -0,0 +1,32 @@
+From 0d09e31970616e09beb7f238c2b59bfc541148fb Mon Sep 17 00:00:00 2001
+From: Ting Liu <b28495@freescale.com>
+Date: Fri, 22 Nov 2013 15:20:08 +0800
+Subject: [PATCH] use base_libdir instead of hardcoded /lib
+
+Upsteam Status: Inappropriate [configuration]
+
+Signed-off-by: Ting Liu <b28495@freescale.com>
+---
+ src/Makefile |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index c7a8c79..c7e4e3c 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -143,10 +143,10 @@ install-target:
+ 	if [ ! -d $(BASE) ]; then mkdir $(BASE); fi
+ 	if [ ! -d $(BASE)/bin ]; then mkdir $(BASE)/bin; fi
+ 	if [ ! -d $(BASE)/include ]; then mkdir $(BASE)/include; fi
+-	if [ ! -d $(BASE)/lib ]; then mkdir $(BASE)/lib; fi
++	if [ ! -d $(BASE)$(base_libdir) ]; then mkdir $(BASE)$(base_libdir); fi
+ 	cp $(EXES) $(BASE)/bin
+ 	cp $(INCS) $(BASE)/include
+-	cp $O/lmbench.a $(BASE)/lib/libmbench.a
++	cp $O/lmbench.a $(BASE)$(base_libdir)
+ 	cd ../doc; env MAKEFLAGS="$(MAKEFLAGS)" make CC="${CC}" OS="${OS}" BASE="$(BASE)" install
+ 
+ 
+-- 
+1.7.5.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/0001-avoid-gcc-optimize-away-the-loops.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/0001-avoid-gcc-optimize-away-the-loops.patch
new file mode 100644
index 0000000..2d8a246
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/0001-avoid-gcc-optimize-away-the-loops.patch
@@ -0,0 +1,79 @@
+[PATCH] avoid gcc optimize-away the loops
+
+Upstream-Status: pending
+
+Change expression used in do_integer_mul and do_uint64_mul
+benchmarks so GCC doesn't optimize-away the loops, other
+things are same:
+-               TEN(r *= s;); r -= t;
++               i = 0;
++               while ( i++ < 10)
++                       r *= s;
++               r -= t;
+
+and TEN is macro:
+	#define TEN(a) a a a a a a a a a a
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ src/lat_ops.c | 30 +++++++++++++++++++++++++-----
+ 1 file changed, 25 insertions(+), 5 deletions(-)
+
+diff --git a/src/lat_ops.c b/src/lat_ops.c
+index d343ff3..457072b 100644
+--- a/src/lat_ops.c
++++ b/src/lat_ops.c
+@@ -126,11 +126,23 @@ do_integer_mul(iter_t iterations, void* cookie)
+ 	struct _state *pState = (struct _state*)cookie;
+ 	register int r = pState->N + 37431;
+ 	register int s = pState->N + 4;
+-	register int t = r * s * s * s * s * s * s * s * s * s * s - r;
++	register int t = r;
++	int i = 0;
++
++	while ( i++ < 10)
++		t *= s;
++	t -= r;
+ 
+ 	while (iterations-- > 0) {
+-		TEN(r *= s;); r -= t;
+-		TEN(r *= s;); r -= t;
++		i = 0;
++		while ( i++ < 10)
++			r *= s;
++		r -= t;
++
++		i = 0;
++		while ( i++ < 10)
++			r *= s;
++		r -= t;
+ 	}
+ 	use_int(r);
+ }
+@@ -207,13 +219,21 @@ do_int64_mul(iter_t iterations, void* cookie)
+ 	register int64 r = (int64)pState->N + 37420;
+ 	register int64 s = (int64)pState->N + 4;
+ 	register int64 t;
++	int i = 0;
+ 
+ 	r += (int64)(pState->N + 6)<<32;
+ 	t = r * s * s * s * s * s * s * s * s * s * s - r;
+ 
+ 	while (iterations-- > 0) {
+-		TEN(r *= s;); r -= t;
+-		TEN(r *= s;); r -= t;
++		i = 0;
++		while ( i++ < 10)
++			r *= s;
++		r -= t;
++
++		i = 0;
++		while ( i++ < 10)
++			r *= s;
++		r -= t;
+ 	}
+ 	use_int((int)r);
+ }
+-- 
+2.8.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/lmbench-run b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/lmbench-run
new file mode 100644
index 0000000..e904c75
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/lmbench-run
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Wrapper script for lmbench written for the 
+# Debian GNU/Linux distribution by 
+# Javier Fernandez-Sanguino.
+# Distributed under the GPL
+SHAREDIR=/usr/share/lmbench/
+BINDIR=/usr/lib/lmbench/
+SCRIPTSDIR=$SHAREDIR/scripts
+RESULTSDIR=$SHAREDIR/results
+CONFIG=/var/lib/lmbench/config/`$SCRIPTSDIR/config`
+runuid=`id -u`
+
+[ $runuid -gt 0 ] && {
+	echo "You must run this as the root user"
+	exit 0
+}
+cd $SCRIPTSDIR 
+[ ! -f $CONFIG ] && ./config-run
+./results
+
+echo "Benchmark run finished...."
+echo "Remember you can find the results of the benchmark "
+echo "under $RESULTSDIR"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/rename-line-binary.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/rename-line-binary.patch
new file mode 100644
index 0000000..9a40521
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/rename-line-binary.patch
@@ -0,0 +1,19 @@
+Both lmbench and util-linux-ng packages provide own /usr/bin/line binaries.
+Even though the binaries name is the same, their functionality is different.
+This patch renames lmbench's line binary as lm_line to avoid conflicts with
+util-linux-ng.  script/config-run is also modified (patch) to call lm_line
+instead of line.
+
+Upstream-Status: Inappropriate [build system specific change]
+
+--- patches/scripts/config-run	2006-11-26 15:11:04.000000000 -0500
++++ patches/scripts/config-run	2011-04-01 09:35:50.000000000 -0400
+@@ -224,7 +224,7 @@ fi
+ 
+ echo "Hang on, we are calculating your cache line size."
+ ../bin/$OS/msleep 250
+-LINE_SIZE=`../bin/$OS/line -M ${MB}M`
++LINE_SIZE=`../bin/$OS/lm_line -M ${MB}M`
+ export LINE_SIZE
+ echo "OK, it looks like your cache line is $LINE_SIZE bytes."
+ echo ""
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
new file mode 100644
index 0000000..a62389d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
@@ -0,0 +1,79 @@
+SUMMARY = "Tools for performance analysis"
+HOMEPAGE = "http://lmbench.sourceforge.net/"
+SECTION = "console/utils"
+LICENSE = "GPLv2 & GPL-2.0-with-lmbench-restriction"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
+                    file://COPYING-2;md5=8e9aee2ccc75d61d107e43794a25cdf9"
+
+inherit autotools-brokensep
+
+PR = "r2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/lmbench/lmbench-${PV}.tgz \
+           file://lmbench-run \
+           file://rename-line-binary.patch \
+           file://update-results-script.patch \
+           file://obey-ranlib.patch \
+           file://update-config-script.patch \
+           file://use-base_libdir-instead-of-hardcoded-lib.patch \
+           file://lmbench_result_html_report.patch \
+           file://fix-lmbench-memory-check-failure.patch \
+           file://0001-avoid-gcc-optimize-away-the-loops.patch \
+"
+SRC_URI[md5sum] = "b3351a3294db66a72e2864a199d37cbf"
+SRC_URI[sha256sum] = "cbd5777d15f44eab7666dcac418054c3c09df99826961a397d9acf43d8a2a551"
+
+EXTRA_OEMAKE = 'CC="${CC}" AR="${AR}" RANLIB="${RANLIB}" CFLAGS="${CFLAGS}" \
+                LDFLAGS="${LDFLAGS}" LD="${LD}" OS="${TARGET_SYS}" \
+                TARGET="${TARGET_OS}" BASE="${prefix}" MANDIR="${mandir}"'
+
+do_configure() {
+    :
+}
+
+do_compile () {
+    . ${CONFIG_SITE}
+    if [ X"$ac_cv_uint" = X"yes" ]; then
+        CFLAGS="${CFLAGS} -DHAVE_uint"
+    fi
+    install -d ${S}/bin/${TARGET_SYS}
+    oe_runmake -C src
+}
+
+do_install () {
+    install -d ${D}${sysconfdir}/default/volatiles \
+           ${D}${bindir} ${D}${mandir} ${D}${libdir}/lmbench \
+           ${D}${datadir}/lmbench/scripts
+
+    echo "d root root 0755 ${localstatedir}/run/${BPN} none" \
+           > ${D}${sysconfdir}/default/volatiles/99_lmbench
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        echo "d /run/${BPN} - - - -" \
+              > ${D}${sysconfdir}/tmpfiles.d/lmbench.conf
+    fi
+
+    oe_runmake BASE="${D}${prefix}" MANDIR="${D}${mandir}" \
+            -C src install
+    mv ${D}${bindir}/line ${D}${bindir}/lm_line
+    install -m 0755 ${WORKDIR}/lmbench-run ${D}${bindir}/
+    sed -i -e 's,^SHAREDIR=.*$,SHAREDIR=${datadir}/${BPN},;' \
+           -e 's,^BINDIR=.*$,BINDIR=${libdir}/${BPN},;' \
+           -e 's,^CONFIG=.*$,CONFIG=`$SCRIPTSDIR/config`,;' \
+           ${D}${bindir}/lmbench-run
+    install -m 0755 ${S}/scripts/lmbench ${D}${bindir}
+    install -m 0755 ${S}/scripts/* ${D}${datadir}/lmbench/scripts
+}
+
+pkg_postinst_${PN} () {
+    if [ -z "$D" ]; then
+        if command -v systemd-tmpfiles >/dev/null; then
+            systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/lmbench.conf
+        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+            ${sysconfdir}/init.d/populate-volatile.sh update
+        fi
+    fi
+}
+
+RDEPENDS_${PN} = "perl"
+FILES_${PN} += "${datadir}/lmbench ${libdir}/lmbench"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/memtester/files/Makefile.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/memtester/files/Makefile.patch
new file mode 100644
index 0000000..971e52a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/memtester/files/Makefile.patch
@@ -0,0 +1,28 @@
+From 9a950b14b9f7767d83e5faac2e1e8203c500e2c2 Mon Sep 17 00:00:00 2001
+From: Rod Whitby <rod@whitby.id.au>
+Date: Tue, 25 Oct 2011 18:43:50 -0500
+Subject: [PATCH] memtester: Added patch to Makefile to change no-longer-supported 'head -1' syntax to 'head -n 1'.
+
+Signed-off-by: Joel A Fernandes <joelagnel@ti.com>
+---
+ Makefile |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index a271bf5..6bccff3 100644
+--- a/Makefile
++++ b/Makefile
+@@ -32,8 +32,8 @@ install: all
+ auto-ccld.sh: \
+ conf-cc conf-ld warn-auto.sh
+ 	( cat warn-auto.sh; \
+-	echo CC=\'`head -1 conf-cc`\'; \
+-	echo LD=\'`head -1 conf-ld`\' \
++	echo CC=\'`head -n 1 conf-cc`\'; \
++	echo LD=\'`head -n 1 conf-ld`\' \
+ 	) > auto-ccld.sh
+ 
+ compile: \
+-- 
+1.7.0.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.3.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.3.0.bb
new file mode 100644
index 0000000..0964c04
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.3.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Utility to test for faulty memory subsystem"
+HOMEPAGE = "http://pyropus.ca/software/memtester/"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+SRC_URI = "http://pyropus.ca/software/memtester/old-versions/${BP}.tar.gz"
+SRC_URI += "file://Makefile.patch"
+
+SRC_URI[md5sum] = "598f41b7308e1f736164bca3ab84ddbe"
+SRC_URI[sha256sum] = "f9dfe2fd737c38fad6535bbab327da9a21f7ce4ea6f18c7b3339adef6bf5fd88"
+
+do_compile () {
+    echo '${CC} ${CFLAGS} -DPOSIX -c' > conf-cc
+    echo '${CC} ${LDFLAGS}' > conf-ld
+    oe_runmake
+}
+
+do_install () {
+    install -d ${D}${bindir}
+    install -d ${D}${mandir}/man8
+    install -m 0755 memtester ${D}${bindir}/
+    install -m 0755 memtester.8 ${D}${mandir}/man8/
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte/Makefile-add-more-dependencies-to-pointer.h.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte/Makefile-add-more-dependencies-to-pointer.h.patch
new file mode 100644
index 0000000..abdb434
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte/Makefile-add-more-dependencies-to-pointer.h.patch
@@ -0,0 +1,23 @@
+Makefile: add more dependencies to pointer.h
+
+Upstream-Status: Inappropriate [no upstream]
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 915866d..edd9ea2 100644
+--- a/Makefile
++++ b/Makefile
+@@ -122,7 +122,7 @@ emfloat.o: emfloat.h emfloat.c nmglobal.h pointer.h Makefile
+ pointer.h: Makefile
+ 	touch pointer.h ;
+ 
+-misc.o: misc.h misc.c Makefile
++misc.o: misc.h misc.c nmglobal.h pointer.h Makefile
+ 	$(CC) $(MACHINE) $(DEFINES) $(CFLAGS)\
+ 		-c misc.c
+ 
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte/nbench_32bits.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte/nbench_32bits.patch
new file mode 100644
index 0000000..1b8a4dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte/nbench_32bits.patch
@@ -0,0 +1,46 @@
+From 81f4043a6787060029ef20eed21cdcf3e50337df Mon Sep 17 00:00:00 2001
+From: Chase Maupin <Chase.Maupin@ti.com>
+Date: Tue, 28 Feb 2012 14:58:35 -0600
+Subject: [PATCH] nbench: modify Makefile for 32bit
+
+* Patch taken from OE classic git repository as of commit id
+  ad42bf9065928b2902d7d9534709d3ccea7ec956 and was added by:
+    * Marcin Juszkiewicz <marcin@juszkiewicz.com.pl>
+* Notes from original patch were:
+
+BYTE Magazine's native benchmarks (also called BYTEmark) designed to
+expose the capabilities of a system's CPU, FPU and memory system.
+
+http://www.tux.org/~mayer/linux/
+
+Recipe from old Atmel overlay.
+
+Upstream-Status: Inappropriate [no upstream]
+
+Signed-off-by: Chase Maupin <chase.maupin@ti.com>
+---
+ Makefile |    8 ++------
+ 1 files changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 5045c77..915866d 100644
+--- a/Makefile
++++ b/Makefile
+@@ -119,12 +119,8 @@ emfloat.o: emfloat.h emfloat.c nmglobal.h pointer.h Makefile
+ 	$(CC) $(MACHINE) $(DEFINES) $(CFLAGS)\
+ 		-c emfloat.c
+ 
+-pointer.h: pointer Makefile
+-	$(CC) $(MACHINE) $(DEFINES) $(CFLAGS)\
+-		-o pointer pointer.c
+-	rm -f pointer.h
+-	if [ "4" = `./pointer` ] ; then touch pointer.h ;\
+-	else echo "#define LONG64" >pointer.h ; fi
++pointer.h: Makefile
++	touch pointer.h ;
+ 
+ misc.o: misc.h misc.c Makefile
+ 	$(CC) $(MACHINE) $(DEFINES) $(CFLAGS)\
+-- 
+1.7.0.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb
new file mode 100644
index 0000000..56272d9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "BYTE Magazine's native benchmarks (also called BYTEmark) \
+designed to expose the capabilities of a system's CPU, FPU, \
+and memory system."
+HOMEPAGE = "http://www.tux.org/~mayer/linux/"
+LICENSE = "nbench-byte"
+LIC_FILES_CHKSUM = "file://README;beginline=57;endline=66;md5=020ef579f8fa5746b7e307a54707834f"
+SECTION = "console/utils"
+
+SRC_URI = "http://www.tux.org/~mayer/linux/${BP}.tar.gz \
+           file://nbench_32bits.patch \
+           file://Makefile-add-more-dependencies-to-pointer.h.patch"
+
+SRC_URI[md5sum] = "285dfab361080759d477ea1fe7d3093a"
+SRC_URI[sha256sum] = "723dd073f80e9969639eb577d2af4b540fc29716b6eafdac488d8f5aed9101ac"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+TARGET_CC_ARCH += "${CFLAGS} ${LDFLAGS}"
+do_compile() {
+    oe_runmake
+}
+
+do_install () {
+    install -d ${D}${bindir}
+    install -m 0644 NNET.DAT ${D}${bindir}/
+    install -m 0755 nbench ${D}${bindir}/
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_6.0.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_6.0.1.bb
new file mode 100644
index 0000000..5acfbf1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_6.0.1.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Phoronix Test Suite"
+DESCRIPTION = "The Phoronix Test Suite is designed to carry out both qualitative \
+and quantitative benchmarks in a clean, reproducible, and easy-to-use manner."
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+SECTION = "console/tests"
+
+SRC_URI = "http://www.phoronix-test-suite.com/releases/${BP}.tar.gz"
+SRC_URI[md5sum] = "c3b26fcc57a3a253e558f759fdc1089f"
+SRC_URI[sha256sum] = "27add54f4ecb464549de580cece84b4a4945b99df3ef7ff7034eb7f23ffb3b39"
+S = "${WORKDIR}/phoronix-test-suite"
+
+inherit systemd allarch
+
+do_install() {
+	DESTDIR=${D} ./install-sh ${exec_prefix}
+
+	if [ "${systemd_unitdir}" != "/usr/lib/systemd" ]; then
+		install -d ${D}/${systemd_unitdir}/system/
+		mv ${D}/usr/lib/systemd/system/* ${D}/${systemd_unitdir}/system/
+		rm -rf ${D}/usr/lib/
+	fi
+}
+
+SYSTEMD_SERVICE_${PN} = "phoromatic-client.service phoromatic-server.service"
+RDEPENDS_${PN} += "bash python php-cli"
+
+FILES_${PN} += " \
+	${datadir}/phoronix-test-suite \
+	${datadir}/appdata/phoronix-test-suite.appdata.xml \
+	${datadir}/icons/hicolor/48x48/apps/phoronix-test-suite.png \
+	${datadir}/icons/hicolor/64x64/mimetypes/application-x-openbenchmarking.png \
+	${datadir}/mime/packages/openbenchmarking-mime.xml \
+	${systemd_unitdir}/* \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench_git.bb
new file mode 100644
index 0000000..9898a70
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench_git.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "A simple memory benchmark program, which tries to measure the \
+peak bandwidth of sequential memory accesses and the latency of random memory \
+accesses. Bandwidth is measured by running different assembly code for the \
+aligned memory blocks and attempting different prefetch strategies"
+HOMEPAGE = "https://github.com/ssvb/tinymembench/wiki"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://main.c;endline=22;md5=879b9bbb60851454885b5fa47eb6b345"
+
+PV = "0.3.9+git${SRCPV}"
+
+SRCREV = "95e68477588d41187b2d2e52ecf6be0e7eb06b8d"
+SRC_URI = "git://github.com/ssvb/tinymembench.git"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m755 tinymembench ${D}${bindir}/
+}
+
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:66: Error: instruction not supported in Thumb16 mode -- `subs r1,r1,#16'
+#| {standard input}:69: Error: instruction not supported in Thumb16 mode -- `subs r1,r1,#16'
+#| {standard input}:82: Error: selected processor does not support Thumb mode `mla r3,r4,r3,r5'
+#| {standard input}:82: Error: unshifted register required -- `and r8,r7,r3,lsr#16'
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench-0.3.3/0001-Drop-inline-of-crc32-function-to-fix-build-using-GCC.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench-0.3.3/0001-Drop-inline-of-crc32-function-to-fix-build-using-GCC.patch
new file mode 100644
index 0000000..5aebb95
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench-0.3.3/0001-Drop-inline-of-crc32-function-to-fix-build-using-GCC.patch
@@ -0,0 +1,30 @@
+From 5429ab90eb33eb243fa7b9cd247e0490d72b9da5 Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Wed, 9 Sep 2015 15:04:45 +0000
+Subject: [PATCH] Drop 'inline' of crc32 function to fix build using GCC 5.2
+Organization: O.S. Systems Software LTDA.
+
+Upstream-Status: Pending
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ crc32.h |   1 -
+ crc32.o | Bin 748 -> 2056 bytes
+ 2 files changed, 1 deletion(-)
+
+diff --git a/crc32.h b/crc32.h
+index 62b3433..8fc62b6 100644
+--- a/crc32.h
++++ b/crc32.h
+@@ -18,7 +18,6 @@
+ #ifndef CRC32_H
+ #define CRC32_H
+ 
+-inline 
+ unsigned long crc32( const void* const buffer, 
+ 		      unsigned long length, 
+ 		      unsigned long crc);
+
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench-0.3.3/avoid-glibc-clashes.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench-0.3.3/avoid-glibc-clashes.patch
new file mode 100644
index 0000000..321d299
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench-0.3.3/avoid-glibc-clashes.patch
@@ -0,0 +1,57 @@
+From: Otavio Salvador <otavio@ossystems.com.br>
+Subject: [PATCH] Avoid aligned allocation function name clashes
+
+glibc added new methods for aligned allocation and it clashes with the
+local version used by 'tiobench'. To fix it, we prefix the methods
+with '_'.
+
+Upstream-Status: Pending
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ tiotest.c |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/tiotest.c b/tiotest.c
+index 38f54e7..6b3d0c3 100644
+--- a/tiotest.c
++++ b/tiotest.c
+@@ -31,7 +31,7 @@ static const char* versionStr = "tiotest v0.3.3 (C) 1999-2000 Mika Kuoppala <mik
+ */
+ ArgumentOptions args;
+ 
+-static void * aligned_alloc(ssize_t size)
++static void * _aligned_alloc(ssize_t size)
+ {
+ 	caddr_t a;
+ 	a = mmap((caddr_t )0, size, 
+@@ -41,7 +41,7 @@ static void * aligned_alloc(ssize_t size)
+ 	return a;
+ }
+ 
+-static int aligned_free(caddr_t a, ssize_t size)
++static int _aligned_free(caddr_t a, ssize_t size)
+ {
+ 	return munmap(a, size);
+ }
+@@ -281,7 +281,7 @@ void initialize_test( ThreadTest *d )
+ 		pthread_attr_setscope(&(d->threads[i].thread_attr),
+ 				      PTHREAD_SCOPE_SYSTEM);
+ 
+-		d->threads[i].buffer = aligned_alloc( d->threads[i].blockSize );
++		d->threads[i].buffer = _aligned_alloc( d->threads[i].blockSize );
+ 		if( d->threads[i].buffer == NULL )
+ 		{
+ 			perror("Error allocating memory");
+@@ -383,7 +383,7 @@ void cleanup_test( ThreadTest *d )
+ 	{
+ 		if (!args.rawDrives)
+ 		unlink(d->threads[i].fileName);
+-		aligned_free( d->threads[i].buffer, d->threads[i].blockSize );
++		_aligned_free( d->threads[i].buffer, d->threads[i].blockSize );
+ 		d->threads[i].buffer = 0;
+ 	
+ 		pthread_attr_destroy( &(d->threads[i].thread_attr) );
+-- 
+1.7.7
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench-0.3.3/tiobench-makefile.patch b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench-0.3.3/tiobench-makefile.patch
new file mode 100644
index 0000000..f820c7e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench-0.3.3/tiobench-makefile.patch
@@ -0,0 +1,49 @@
+Adapt tiobench to OE
+Author: Ludovic Desroches <ludovic.desroches@atmel.com>
+
+Upstream-Status: Inappropriate [not author]
+
+Index: Makefile
+===================================================================
+--- a/Makefile	2011-05-26 07:48:46.341400974 +0200
++++ b/Makefile	2011-05-30 06:32:38.091401358 +0200
+@@ -1,8 +1,9 @@
+ # Makefile for tiotest
+ 
+-CC=gcc
++CC?=gcc
+ #CFLAGS=-O3 -fomit-frame-pointer -Wall
+ CFLAGS=-O2 -Wall
++LDFLAGS?=
+ 
+ #DEFINES=-DUSE_MMAP 
+ #-DUSE_MADVISE
+@@ -14,16 +15,16 @@
+ 
+ #DEFINES=
+ 
+-LINK=gcc
++LINK?=$(CC)
+ EXE=tiotest
+ PROJECT=tiobench
+ # do it once instead of each time referenced
+ VERSION=$(shell egrep "tiotest v[0-9]+.[0-9]+" tiotest.c | cut -d " " -f 7 | sed "s/v//g")
+ DISTNAME=$(PROJECT)-$(VERSION)
+ INSTALL=install
+-PREFIX=/usr/local
++PREFIX?=/usr/local
+ BINDIR=$(PREFIX)/bin
+-DOCDIR=/usr/local/doc/$(DISTNAME)
++DOCDIR=$(PREFIX)/share/doc/$(DISTNAME)
+ 
+ all: $(EXE)
+ 
+@@ -34,7 +35,7 @@
+ 	$(CC) -c $(CFLAGS) $(DEFINES) tiotest.c -o tiotest.o
+ 
+ $(EXE): tiotest.o crc32.o
+-	$(LINK) -o $(EXE) tiotest.o crc32.o -lpthread
++	$(LINK) -o $(EXE) tiotest.o crc32.o -lpthread $(LDFLAGS)
+ 	@echo
+ 	@echo "./tiobench.pl --help for usage options"
+ 	@echo
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb
new file mode 100644
index 0000000..35af35f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Threaded I/O tester"
+HOMEPAGE = "http://sourceforge.net/projects/tiobench/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
+
+PR = "r1"
+
+SRC_URI = "\
+    http://sourceforge.net/projects/tiobench/files/tiobench/${PV}/${BP}.tar.gz \
+    file://tiobench-makefile.patch \
+    file://avoid-glibc-clashes.patch \
+    file://0001-Drop-inline-of-crc32-function-to-fix-build-using-GCC.patch \
+"
+SRC_URI[md5sum] = "bf485bf820e693c79e6bd2a38702a128"
+SRC_URI[sha256sum] = "8ad011059a35ac70cdb5e3d3999ceee44a8e8e9078926844b0685b7ea9db2bcc"
+
+EXTRA_OEMAKE = "PREFIX=${D}/usr"
+
+do_install() {
+    oe_runmake install
+}
+
+RDEPENDS_${PN} = "\
+    perl \
+    perl-module-exporter-heavy \
+    perl-module-getopt-long \
+    perl-module-overload \
+    perl-module-strict \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez-hcidump-2.5/obsolete_automake_macros.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez-hcidump-2.5/obsolete_automake_macros.patch
new file mode 100644
index 0000000..0c77f1a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez-hcidump-2.5/obsolete_automake_macros.patch
@@ -0,0 +1,14 @@
+Upstream-Status: Pending [package obsolete/not maintained by upstream]
+
+Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
+diff -Nurd bluez-hcidump-2.5/configure.ac bluez-hcidump-2.5/configure.ac
+--- bluez-hcidump-2.5/configure.ac	2012-11-30 10:29:41.000000000 +0200
++++ bluez-hcidump-2.5/configure.ac	2013-01-12 10:02:10.609511463 +0200
+@@ -2,7 +2,7 @@
+ AC_INIT(bluez-hcidump, 2.5)
+
+ AM_INIT_AUTOMAKE([foreign subdir-objects])
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADERS(config.h)
+
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez-hcidump_2.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez-hcidump_2.5.bb
new file mode 100644
index 0000000..3a15d64
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez-hcidump_2.5.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Linux Bluetooth Stack HCI Debugger Tool"
+DESCRIPTION = "The hcidump tool reads raw HCI data coming from and going to a Bluetooth device \
+and displays the commands, events and data in a human-readable form."
+
+SECTION = "console"
+# hcidump was integrated into bluez5
+DEPENDS = "bluez4"
+RCONFLICTS_${PN} = "bluez5"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
+                    file://src/hcidump.c;beginline=1;endline=23;md5=3bee3a162dff43a5be7470710b99fbcf"
+PR = "r1"
+
+PNBLACKLIST[bluez-hcidump] ?= "${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez5 conflicts with bluez4 and bluez5 is selected in DISTRO_FEATURES', '', d)}"
+
+SRC_URI = "http://www.kernel.org/pub/linux/bluetooth/bluez-hcidump-${PV}.tar.gz \
+           file://obsolete_automake_macros.patch \
+"
+
+SRC_URI[md5sum] = "2eab54bbd2b59a2ed4274ebb9390cf18"
+SRC_URI[sha256sum] = "9b7c52b375081883738cf049ecabc103b97d094b19c6544fb241267905d88881"
+S = "${WORKDIR}/bluez-hcidump-${PV}"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/bluetooth.conf b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/bluetooth.conf
new file mode 100644
index 0000000..ca5e9e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/bluetooth.conf
@@ -0,0 +1,16 @@
+<!-- This configuration file specifies the required security policies
+     for Bluetooth core daemon to work. -->
+
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+  <!-- ../system.conf have denied everything, so we just punch some holes -->
+
+  <policy context="default">
+    <allow own="org.bluez"/>
+    <allow send_destination="org.bluez"/>
+    <allow send_interface="org.bluez.Agent"/>
+  </policy>
+
+</busconfig>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/fix-udev-paths.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/fix-udev-paths.patch
new file mode 100644
index 0000000..8089914
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/fix-udev-paths.patch
@@ -0,0 +1,37 @@
+Add udevdir/udevrulesdir options
+
+Upstream-Status: Inappropriate [configuration]
+Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
+
+Index: bluez-4.101/Makefile.am
+===================================================================
+--- bluez-4.101.orig/Makefile.am
++++ bluez-4.101/Makefile.am
+@@ -395,7 +395,7 @@ EXTRA_DIST += audio/bluetooth.conf
+ include Makefile.tools
+ 
+ if DATAFILES
+-rulesdir = @UDEV_DIR@/rules.d
++rulesdir = @UDEV_RULES_DIR@
+ 
+ udev_files =
+ 
+Index: bluez-4.101/configure.ac
+===================================================================
+--- bluez-4.101.orig/configure.ac
++++ bluez-4.101/configure.ac
+@@ -61,4 +61,14 @@ if (test -n "${path_systemdunit}"); then
+ fi
+ AM_CONDITIONAL(SYSTEMD, test -n "${path_systemdunit}")
+ 
++AC_ARG_WITH([udevdir],
++    AS_HELP_STRING([--with-udevdir=DIR], [udev directory]),
++    [], [with_udevdir=/lib/udev/])
++AC_SUBST([UDEV_DIR], [$with_udevdir])
++
++AC_ARG_WITH([udevrulesdir],
++    AS_HELP_STRING([--with-udevrulesdir=DIR], [udev rules directory]),
++    [], [with_udevrulesdir=/lib/udev/rules.d])
++AC_SUBST([UDEV_RULES_DIR], [$with_udevrulesdir])
++
+ AC_OUTPUT(Makefile doc/version.xml src/bluetoothd.8 src/bluetooth.service bluez.pc)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/fix_encrypt_collision.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/fix_encrypt_collision.patch
new file mode 100644
index 0000000..1bc390f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/fix_encrypt_collision.patch
@@ -0,0 +1,110 @@
+Avoid namepspace collision with encrypt function from libc
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Index: bluez-4.101/test/l2test.c
+===================================================================
+--- bluez-4.101.orig/test/l2test.c
++++ bluez-4.101/test/l2test.c
+@@ -107,7 +107,7 @@ static char *filename = NULL;
+ static int rfcmode = 0;
+ static int master = 0;
+ static int auth = 0;
+-static int encrypt = 0;
++static int encryption_request = 0;
+ static int secure = 0;
+ static int socktype = SOCK_SEQPACKET;
+ static int linger = 0;
+@@ -340,7 +340,7 @@ static int do_connect(char *svr)
+ 		opt |= L2CAP_LM_MASTER;
+ 	if (auth)
+ 		opt |= L2CAP_LM_AUTH;
+-	if (encrypt)
++	if (encryption_request)
+ 		opt |= L2CAP_LM_ENCRYPT;
+ 	if (secure)
+ 		opt |= L2CAP_LM_SECURE;
+@@ -475,7 +475,7 @@ static void do_listen(void (*handler)(in
+ 		opt |= L2CAP_LM_MASTER;
+ 	if (auth)
+ 		opt |= L2CAP_LM_AUTH;
+-	if (encrypt)
++	if (encryption_request)
+ 		opt |= L2CAP_LM_ENCRYPT;
+ 	if (secure)
+ 		opt |= L2CAP_LM_SECURE;
+@@ -1407,7 +1407,7 @@ int main(int argc, char *argv[])
+ 			break;
+ 
+ 		case 'E':
+-			encrypt = 1;
++			encryption_request = 1;
+ 			break;
+ 
+ 		case 'S':
+Index: bluez-4.101/test/rctest.c
+===================================================================
+--- bluez-4.101.orig/test/rctest.c
++++ bluez-4.101/test/rctest.c
+@@ -79,7 +79,7 @@ static char *filename = NULL;
+ 
+ static int master = 0;
+ static int auth = 0;
+-static int encrypt = 0;
++static int encryption_request = 0;
+ static int secure = 0;
+ static int socktype = SOCK_STREAM;
+ static int linger = 0;
+@@ -200,7 +200,7 @@ static int do_connect(const char *svr)
+ 		opt |= RFCOMM_LM_MASTER;
+ 	if (auth)
+ 		opt |= RFCOMM_LM_AUTH;
+-	if (encrypt)
++	if (encryption_request)
+ 		opt |= RFCOMM_LM_ENCRYPT;
+ 	if (secure)
+ 		opt |= RFCOMM_LM_SECURE;
+@@ -291,7 +291,7 @@ static void do_listen(void (*handler)(in
+ 		opt |= RFCOMM_LM_MASTER;
+ 	if (auth)
+ 		opt |= RFCOMM_LM_AUTH;
+-	if (encrypt)
++	if (encryption_request)
+ 		opt |= RFCOMM_LM_ENCRYPT;
+ 	if (secure)
+ 		opt |= RFCOMM_LM_SECURE;
+@@ -701,7 +701,7 @@ int main(int argc, char *argv[])
+ 			break;
+ 
+ 		case 'E':
+-			encrypt = 1;
++			encryption_request = 1;
+ 			break;
+ 
+ 		case 'S':
+Index: bluez-4.101/src/textfile.h
+===================================================================
+--- bluez-4.101.orig/src/textfile.h
++++ bluez-4.101/src/textfile.h
+@@ -24,6 +24,8 @@
+ #ifndef __TEXTFILE_H
+ #define __TEXTFILE_H
+ 
++#include <sys/types.h>
++
+ int create_dirs(const char *filename, const mode_t mode);
+ int create_file(const char *filename, const mode_t mode);
+ int create_name(char *buf, size_t size, const char *path,
+Index: bluez-4.101/test/attest.c
+===================================================================
+--- bluez-4.101.orig/test/attest.c
++++ bluez-4.101/test/attest.c
+@@ -34,6 +34,7 @@
+ #include <termios.h>
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
++#include <sys/select.h>
+ 
+ #include <bluetooth/bluetooth.h>
+ #include <bluetooth/rfcomm.h>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/install-test-script.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/install-test-script.patch
new file mode 100644
index 0000000..23f7d99
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/install-test-script.patch
@@ -0,0 +1,26 @@
+Upstream-Status: Inappropriate
+
+Install the bluez's test scripts
+
+Signed-off-by: Zhong Hongbo <hongbo.zhong@windriver.com>
+diff -Nurd bluez-4.101.orig/Makefile.tools bluez-4.101/Makefile.tools
+--- bluez-4.101.orig/Makefile.tools	2013-11-19 15:49:07.688838000 +0800
++++ bluez-4.101/Makefile.tools	2013-11-19 15:50:09.256837848 +0800
+@@ -227,6 +227,17 @@
+ 		test/service-spp.xml test/service-opp.xml test/service-ftp.xml \
+ 		test/simple-player test/test-nap
+ 
++bluez4_testdir = $(libdir)/bluez4/test/
++dist_bluez4_test_SCRIPTS = test/sap-client test/hsplay test/hsmicro \
++		test/monitor-bluetooth test/list-devices \
++		test/test-discovery test/test-manager test/test-adapter \
++		test/test-device test/test-service test/test-serial \
++		test/test-telephony test/test-network test/simple-agent \
++		test/simple-service test/simple-endpoint test/test-audio \
++		test/test-input test/test-sap-server test/test-oob \
++		test/test-attrib test/test-proximity test/test-thermometer \
++		test/test-serial-proxy test/test-health test/test-health-sink \
++		test/simple-player test/test-nap
+ if HIDD
+ bin_PROGRAMS += compat/hidd
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/network-fix-network-Connect-method-parameters.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/network-fix-network-Connect-method-parameters.patch
new file mode 100644
index 0000000..37f9199
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/network-fix-network-Connect-method-parameters.patch
@@ -0,0 +1,30 @@
+Upstream-Status: Backport
+Signed-off-by: Peter A. Bigot <pab@pabigot.com>
+
+From 57170b311f1468330f4a9961dc0b3ac45f97bc13 Mon Sep 17 00:00:00 2001
+From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
+Date: Sat, 30 Jun 2012 00:39:05 -0300
+Subject: [PATCH] network: fix network Connect() method parameters
+
+---
+ network/connection.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/network/connection.c b/network/connection.c
+index 544ec3a..59423a9 100644
+--- a/network/connection.c
++++ b/network/connection.c
+@@ -554,7 +554,9 @@ static void path_unregister(void *data)
+ 
+ static const GDBusMethodTable connection_methods[] = {
+ 	{ GDBUS_ASYNC_METHOD("Connect",
+-			NULL, NULL, connection_connect) },
++				GDBUS_ARGS({"uuid", "s"}),
++				GDBUS_ARGS({"interface", "s"}),
++				connection_connect) },
+ 	{ GDBUS_METHOD("Disconnect",
+ 			NULL, NULL, connection_disconnect) },
+ 	{ GDBUS_METHOD("GetProperties",
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/obsolete_automake_macros.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/obsolete_automake_macros.patch
new file mode 100644
index 0000000..1068f24
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/obsolete_automake_macros.patch
@@ -0,0 +1,14 @@
+Upstream-Status: Backport
+
+Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
+diff -Nurd bluez-4.101/configure.ac bluez-4.101/configure.ac
+--- bluez-4.101/configure.ac	2012-06-22 19:36:49.000000000 +0300
++++ bluez-4.101/configure.ac	2013-01-07 06:13:18.385888966 +0200
+@@ -2,7 +2,7 @@
+ AC_INIT(bluez, 4.101)
+
+ AM_INIT_AUTOMAKE([foreign subdir-objects color-tests])
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADERS(config.h)
+
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/sbc_mmx.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/sbc_mmx.patch
new file mode 100644
index 0000000..98fab45
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4-4.101/sbc_mmx.patch
@@ -0,0 +1,24 @@
+on x86 and x86_64 gcc 4.7 complains
+
+sbc/sbc_primitives_mmx.c: In function 'sbc_calc_scalefactors_mmx':
+sbc/sbc_primitives_mmx.c:294:4: warning: asm operand 2 probably doesn't match constraints [enabled by default]
+sbc/sbc_primitives_mmx.c:294:4: error: impossible constraint in 'asm'
+
+This patch is taken from https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/911871
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+Index: bluez-4.98/sbc/sbc_primitives_mmx.c
+===================================================================
+--- bluez-4.98.orig/sbc/sbc_primitives_mmx.c	2011-12-21 14:53:54.000000000 -0800
++++ bluez-4.98/sbc/sbc_primitives_mmx.c	2012-02-24 10:07:03.422073800 -0800
+@@ -318,7 +318,7 @@
+ 				"movl          %k0, 4(%3)\n"
+ 			: "+r" (blk)
+ 			: "r" (&sb_sample_f[0][ch][sb]),
+-				"i" ((char *) &sb_sample_f[1][0][0] -
++				"r" ((char *) &sb_sample_f[1][0][0] -
+ 					(char *) &sb_sample_f[0][0][0]),
+ 				"r" (&scale_factor[ch][sb]),
+ 				"r" (&consts),
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4.inc b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4.inc
new file mode 100644
index 0000000..59c35e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4.inc
@@ -0,0 +1,51 @@
+SUMMARY = "Linux Bluetooth Stack Userland V4"
+DESCRIPTION = "Linux Bluetooth stack V4 userland components.  These include a system configurations, daemons, tools and system libraries."
+HOMEPAGE = "http://www.bluez.org"
+SECTION = "libs"
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
+                    file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09 \
+                    file://src/main.c;beginline=1;endline=24;md5=9bc54b93cd7e17bf03f52513f39f926e \
+                    file://sbc/sbc.c;beginline=1;endline=25;md5=1a40781ed30d50d8639323a184aeb191"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+
+DEPENDS = "udev libusb dbus-glib glib-2.0 libcheck readline libsndfile1"
+RDEPENDS_${PN}-dev = "bluez-hcidump"
+
+PACKAGECONFIG ??= "\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)}\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'pie', 'pie', '', d)}\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd','systemd', '', d)} \
+"
+PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
+PACKAGECONFIG[pie] = "--enable-pie,--disable-pie,"
+PACKAGECONFIG[systemd] = "--with-systemdunitdir=${systemd_unitdir}/system/,--with-systemdunitdir="
+
+ASNEEDED = ""
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.gz"
+S = "${WORKDIR}/bluez-${PV}"
+
+inherit autotools-brokensep pkgconfig systemd
+
+EXTRA_OECONF = "\
+    --disable-gstreamer \
+    --enable-usb \
+    --enable-tools \
+    --enable-bccmd \
+    --enable-hid2hci \
+    --enable-dfutool \
+    --disable-hidd \
+    --disable-pand \
+    --disable-dund \
+    --disable-cups \
+    --enable-test \
+    --enable-datafiles \
+    --with-udevdir=`pkg-config --variable=udevdir udev` \
+    --with-udevrulesdir=`pkg-config --variable=udevdir udev`/rules.d \
+"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4_4.101.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4_4.101.bb
new file mode 100644
index 0000000..d6d16c0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/bluez4_4.101.bb
@@ -0,0 +1,50 @@
+require bluez4.inc
+
+PNBLACKLIST[bluez4] ?= "${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez5 conflicts with bluez4 and bluez5 is selected in DISTRO_FEATURES', '', d)}"
+
+PR = "r11"
+
+SRC_URI += "file://bluetooth.conf \
+            file://sbc_mmx.patch \
+            file://fix-udev-paths.patch \
+            file://obsolete_automake_macros.patch \
+            file://network-fix-network-Connect-method-parameters.patch \
+            file://install-test-script.patch \
+            file://fix_encrypt_collision.patch \
+"
+
+SRC_URI[md5sum] = "fb42cb7038c380eb0e2fa208987c96ad"
+SRC_URI[sha256sum] = "59738410ade9f0e61a13c0f77d9aaffaafe49ba9418107e4ad75fe52846f7487"
+
+RCONFLICTS_${PN} = "bluez5"
+
+do_install_append() {
+    install -m 0644 ${S}/audio/audio.conf ${D}/${sysconfdir}/bluetooth/
+    install -m 0644 ${S}/network/network.conf ${D}/${sysconfdir}/bluetooth/
+    install -m 0644 ${S}/input/input.conf ${D}/${sysconfdir}/bluetooth/
+    # at_console doesn't really work with the current state of OE, so punch some more holes so people can actually use BT
+    install -m 0644 ${WORKDIR}/bluetooth.conf ${D}/${sysconfdir}/dbus-1/system.d/
+}
+
+RDEPENDS_${PN}-dev = "bluez-hcidump"
+RDEPENDS_${PN}-testtools += "python python-dbus python-pygobject"
+
+ALLOW_EMPTY_libasound-module-bluez = "1"
+PACKAGES =+ "libasound-module-bluez ${PN}-testtools"
+
+FILES_libasound-module-bluez = "${libdir}/alsa-lib/lib*.so ${datadir}/alsa"
+FILES_${PN} += "${libdir}/bluetooth/plugins ${libdir}/bluetooth/plugins/*.so ${base_libdir}/udev/ ${nonarch_base_libdir}/udev/ ${systemd_unitdir}/ ${datadir}/dbus-1"
+FILES_${PN}-dev += "\
+    ${libdir}/bluetooth/plugins/*.la \
+    ${libdir}/alsa-lib/*.la \
+"
+
+FILES_${PN}-testtools = "${libdir}/bluez4/test/*"
+
+FILES_${PN}-dbg += "\
+    ${libdir}/bluetooth/plugins/.debug \
+    ${libdir}/*/.debug \
+    */udev/.debug \
+"
+
+SYSTEMD_SERVICE_${PN} = "bluetooth.service"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/gst-plugin-bluetooth_4.101.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/gst-plugin-bluetooth_4.101.bb
new file mode 100644
index 0000000..822aec4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/bluez/gst-plugin-bluetooth_4.101.bb
@@ -0,0 +1,41 @@
+require bluez4.inc
+require recipes-multimedia/gstreamer/gst-plugins-package.inc
+
+PNBLACKLIST[gst-plugin-bluetooth] ?= "${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez5 conflicts with bluez4 and bluez5 is selected in DISTRO_FEATURES', '', d)}"
+
+PR = "r1"
+
+SRC_URI[md5sum] = "fb42cb7038c380eb0e2fa208987c96ad"
+SRC_URI[sha256sum] = "59738410ade9f0e61a13c0f77d9aaffaafe49ba9418107e4ad75fe52846f7487"
+
+DEPENDS = "bluez4 gst-plugins-base"
+
+EXTRA_OECONF = "\
+    --enable-gstreamer \
+"
+
+# clean unwanted files
+do_install_append() {
+    rm -rf ${D}${bindir}
+    rm -rf ${D}${sbindir}
+    rm -f  ${D}${libdir}/lib*
+    rm -rf ${D}${libdir}/pkgconfig
+    rm -rf ${D}${sysconfdir}
+    rm -rf ${D}${base_libdir}
+    rm -rf ${D}${libdir}/bluetooth
+    rm -rf ${D}${localstatedir}
+    rm -rf ${D}${libdir}/alsa-lib
+    rm -rf ${D}${datadir}
+    rm -rf ${D}${includedir}
+    rm -rf ${D}${nonarch_base_libdir}
+}
+
+FILES_${PN} = "${libdir}/gstreamer-0.10/lib*.so"
+FILES_${PN}-dev += "\
+    ${libdir}/gstreamer-0.10/*.la \
+"
+
+FILES_${PN}-dbg += "\
+    ${libdir}/*/.debug \
+"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu/gammu-smsdrc b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu/gammu-smsdrc
new file mode 100644
index 0000000..da413c2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu/gammu-smsdrc
@@ -0,0 +1,80 @@
+# This is a sample Gammu SMSD configuration file. It's required for gammu-smsd,
+# see gammu-smsdrc(5) for documentation.
+
+# Gammu configuration, this section is like section "gammu" in "gammurc" file,
+# see gammurc(5) for documentation.
+[gammu]
+device = /dev/ttyUSB0
+model = at115200
+#connection = dlr3
+#synchronizetime = yes
+#logfile = gammulog # this is not used at all in SMSD mode
+#logformat = textall
+#use_locking = yes
+#gammuloc = gammu.us
+#startinfo = yes
+
+# When uncomment this section and insert numbers here, smsd will process
+# incoming sms only from numbers written here (incoming sms from all other
+# numbers will be deleted)
+#[include_numbers]
+#number1 = 1234
+
+# When uncomment this section and insert numbers here, smsd will process
+# incoming sms from all numbers not written here (incoming sms from numbers
+# written here will be deleted). This is "black" list.
+# Note: after using "include_numbers" section this one will be ignored
+#[exclude_numbers]
+#number1 = 1234
+
+# General SMSD settings, see gammu-smsdrc(5) for detailed description.
+[smsd]
+# SMSD service to use, one of FILES, MYSQL, PGSQL, DBI
+service = files
+# PIN for SIM card
+PIN = 0000
+# File (or stderr, syslog, eventlog) where information will be logged
+logfile = smsdlog
+# Amount of information being logged, each bit mean one level
+debuglevel = 0
+# Configuration for using more phones on same database
+#phoneid = MyPhone1
+# Script to be executed when new message has been received
+#runonreceive = /some/script
+# Commication frequency settings
+commtimeout = 30
+sendtimeout = 30
+#receivefrequency = 0
+
+# Phone communication settings
+#checksecurity = 1
+#resetfrequency = 0
+
+# Delivery report configuration
+#deliveryreport = no
+#deliveryreportdelay = 10
+
+# Ignoring broken SMSC
+#skipsmscnumber = +48602123456
+
+# Database backends congfiguration
+user = gammu
+password = gammupassword
+pc = localhost
+# pc can also contain port or socket path after colon (eg. localhost:/path/to/socket)
+database = sms
+
+# DBI configuration
+driver = sqlite
+# driverspath = /usr/lib/dbd/
+# Database directory for sqlite
+# dbdir = /var/lib/smsd
+
+# Files backend configuration
+inboxpath = /var/spool/sms/inbox/
+outboxpath = /var/spool/sms/outbox/
+sentsmspath = /var/spool/sms/sent/
+errorsmspath = /var/spool/sms/error/
+inboxformat = detail
+transmitformat = auto
+outboxformat = detail
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu/gammurc b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu/gammurc
new file mode 100644
index 0000000..b55d739
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu/gammurc
@@ -0,0 +1,173 @@
+; This is a sample ~/.gammurc file.
+; In Unix/Linux  copy it into your home directory and name it .gammurc
+;                or into /etc and name it gammurc
+; In Win32       copy it into directory with Gammu.exe and name gammurc
+; More about parameters later
+; Anything behind ; or # is comment.
+; -----------------------------------------------------------------------------
+
+[gammu]
+
+device = /dev/ttyUSB0
+connection = at115200
+; Do not use model configuration unless you really need it
+;model = 6110
+;synchronizetime = yes
+;logfile = gammulog
+;logformat = textall
+;use_locking = yes
+;gammuloc = locfile
+;startinfo = yes
+;gammucoding = utf8
+;usephonedb = yes
+
+;[gammu1]
+
+;device = com8:
+;model = 6110
+;connection = fbusblue
+;synchronizetime = yes
+;logfile = gammulog
+;logformat = textall
+;use_locking = yes
+;gammuloc = locfile
+;startinfo = yes
+;gammucoding = utf8
+
+; Step 1. Please find required Connection parameter and look into assigned 
+; with it device type. With some Connection you must set concrete model
+
+; ================================================================ cables =====
+; New Nokia protocol for FBUS/DAU9P
+;    Connection "fbus", device type serial
+; New Nokia protocol for DLR3/DLR3P
+;    Connection "fbusdlr3"/"dlr3", device type serial 
+; New Nokia protocol for DKU2 (and phone with USB converter on phone mainboard
+;                              like 6230)
+;    Connection "dku2phonet"/"dku2", device type dku2 on Windows
+;    Connection "fbususb" on Linux
+; New Nokia protocol for DKU5 (and phone without USB converter on phone
+;                              mainboard like 5100)
+;    Connection "dku5fbus"/"dku5", device type dku5
+; New Nokia protocol for PL2303 USB cable (and phone without USB converter
+;                                          on phone mainboard like 5100)
+;    Connection "fbuspl2303", device type usb
+; Old Nokia protocol for MBUS/DAU9P
+;    Connection "mbus", device type serial
+; Variants: 
+; You can modify a bit behaviour of connection using additional flags
+; specified just after connection name like connection-variant.
+; If you're using ARK3116 cable (or any other which does not like dtr 
+; handling), you might need -nodtr variant of connection, eg. dlr3-nodtr.
+; If cable you use is not powered over DTR/RTS, try using -nopower variant of 
+; connection, eg. fbus-nopower.
+; -----------------------------------------------------------------------------
+; AT commands for DLR3, DKU5 or other AT compatible cable (8 bits, None
+; parity, no flow control, 1 stop bit). Used with Nokia, Alcatel, Siemens, etc.
+;    Connection "at19200"/"at115200"/.., device type serial
+; AT commands for DKU2 cable
+;    Connection "dku2at", device type dku2
+; ============================================================== infrared =====
+; Nokia protocol for infrared with Nokia 6110/6130/6150
+;    Connection "fbusirda"/"infrared", device type serial
+; Nokia protocol for infrared with other Nokia models
+;    Connection "irdaphonet"/"irda", device type irda
+; -----------------------------------------------------------------------------
+; AT commands for infrared. Used with Nokia, Alcatel, Siemens, etc.
+;    Connection "irdaat", device type irda
+; -----------------------------------------------------------------------------
+; OBEX for infrared
+;    Connection "irdaobex", device type irda.
+; ============================================================= Bluetooth =====
+; Nokia protocol with serial device set in BT stack (WidComm, other) from
+; adequate service and Nokia 6210
+;    Connection "fbusblue", device type serial
+; Nokia protocol with serial device set in BT stack (WidComm, other) from
+; adequate service and other Nokia models
+;    Connection "phonetblue", device type serial
+; -----------------------------------------------------------------------------
+; Nokia protocol for Bluetooth stack with Nokia 6210
+;    Connection "bluerffbus", device type BT
+; Nokia protocol for Bluetooth stack with DCT4 Nokia models, which don't inform
+; about services correctly (6310, 6310i with firmware lower than 5.50, 8910,..)
+;    Connection "bluerfphonet", device type BT
+; Nokia protocol for Bluetooth stack with other DCT4 Nokia models
+;    Connection "bluephonet", device type BT
+; -----------------------------------------------------------------------------
+; AT commands for Bluetooth stack and 6210 / DCT4 Nokia models, which don't
+; inform about BT services correctly (6310, 6310i with firmware lower 
+; than 5.50, 8910,..)
+;    Connection "bluerfat", device type BT
+; AT commands for Bluetooth stack with other phones (Siemens, other Nokia,etc.)
+;    Connection "blueat", device type BT
+; -----------------------------------------------------------------------------
+; OBEX for Bluetooth stack with DCT4 Nokia models, which don't inform about
+; BT services correctly (6310, 6310i with firmware lower than 5.50, 8910,...)
+;    Connection "bluerfobex", device type BT
+; OBEX for Bluetooth stack with other phones (Siemens, other Nokia, etc.)
+;    Connection "blueobex", device type BT.
+; -----------------------------------------------------------------------------
+;    Connection "bluerfgnapbus", device type BT, model "gnap"
+;    Connection "irdagnapbus", device type irda, model "gnap"
+
+; Step2. According to device type from Step1 and used OS set Port parameter
+
+; -----------------------------------------------------------------------------
+; Port type | "Port" parameter in Windows/DOS | "Port" parameter in Linux/Unix
+; ----------|---------------------------------|--------------------------------
+; serial    | "com*:"                         | "/dev/ttyS*"
+;           | (example "com1:")               | (example "/dev/ttyS1")
+;           |                                 | or "/dev/tts/**" (with DevFS)
+;           |                                 | virtual serial ports like
+;           |                                 | "/dev/ircomm*" or "/dev/rfcomm*"
+; ----------|---------------------------------|--------------------------------
+; irda      | ignored (can be empty)          | ignored (can be empty)
+; ----------|---------------------------------|--------------------------------
+; BT        | Bluetooth device address (example "00:11:22:33:44:55").
+;           | Optionally you can also include channel after slash
+;           | (example "00:11:22:33:44:55/12"). Can be also empty.
+; ----------|---------------------------------|--------------------------------
+; dku2      | ignored (can be empty)          | /dev/ttyUSB* or /dev/ttyACM*
+; ----------|---------------------------------|--------------------------------
+; dku5      | ignored (can be empty)          | connection with it not possible
+; ----------|---------------------------------|--------------------------------
+; usb       | connection with it not possible | "/dev/ttyUSB*"
+
+; Step3. Set other config parameters
+
+; -----------------------------------------------------------------------------
+; Parameter name  | Description
+; ----------------|------------------------------------------------------------
+; Model           | Should not be used unless you have a good reason to do so.
+;                 | If Gammu doesn't recognize your phone model, put it here. 
+;                 | Example values: "6110", "6150", "6210", "8210"
+; SynchronizeTime | if you want to set time from computer to phone during
+;                 | starting connection. Do not rather use this option when
+;                 | when to reset phone during connection (in some phones need
+;                 | to set time again after restart)
+; GammuLoc        | name of localisation file
+; StartInfo       | this option allow to set, that you want (setting "yes")
+;                 | to see message on the phone screen or phone should enable
+;                 | light for a moment during starting connection. Phone
+;                 | WON'T beep during starting connection with this option.
+; GammuCoding     | forces using specified codepage (in win32 - for example
+;                 | "1250" will force CP1250) or UTF8 (in Linux - "utf8")
+; ----------------|------------------------------------------------------------
+; Logfile         | Use, when want to have logfile from communication.
+; Logformat       | What debug info and format should be used:
+;                 |   "nothing" - no debug level (default)
+;                 |   "text"    - transmission dump in text format
+;                 |   "textall" - all possible info in text format
+;                 |   "errors"  - errors in text format
+;                 |   "binary"  - transmission dump in binary format
+; ----------------|------------------------------------------------------------
+; Features        | Custom features for phone. This can be used as override
+;                 | when values coded in common/gsmphones.c are bad or
+;                 | missing. Consult include/gammu-info.h for possible values
+;                 | (all Feature values without leading F_ prefix).
+;                 | Please report correct values to Gammu authors.
+; ----------------|------------------------------------------------------------
+; Use_Locking     | under Unix/Linux use "yes", if want to lock used device
+;                 | to prevent using it by other applications. In win32 ignored
+
+; vim: et ts=4 sw=4 sts=4 tw=78 spell spelllang=en_us
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb
new file mode 100644
index 0000000..f33b435
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb
@@ -0,0 +1,68 @@
+SUMMARY = "GNU All Mobile Managment Utilities"
+SECTION = "console/network"
+DEPENDS = "cmake-native virtual/libiconv libdbi mysql5 glib-2.0 udev libgudev"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a17cb0a873d252440acfdf9b3d0e7fbf"
+HOMEPAGE = "http://www.gammu.org/"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}/${PV}/${BP}.tar.bz2 \
+    file://gammurc \
+    file://gammu-smsdrc \
+"
+
+SRC_URI[md5sum] = "8ea16c6b3cc48097a8e62311fe0e25b9"
+SRC_URI[sha256sum] = "de67caa102aa4c8fbed5300e5a0262e40411c4cc79f4379a8d34eed797968fc3"
+
+inherit distutils cmake gettext
+
+do_install_append() {
+    # these files seem to only be used by symbian and trigger QA warnings
+    rm -rf ${D}/usr/share/gammu
+    #install default configuration files
+    install -d ${D}${sysconfdir}
+    install -m 0644 ${WORKDIR}/gammurc ${D}${sysconfdir}/gammurc
+    install -m 0644 ${WORKDIR}/gammu-smsdrc ${D}${sysconfdir}/gammu-smsdrc
+}
+
+EXTRA_OECONF = " \
+    --enable-shared \
+    --enable-backup \
+    --enable-protection \
+"
+
+EXTRA_OECMAKE = " \
+    -DWITH_CURL=OFF \
+    -DWITH_BLUETOOTH=OFF \
+    -DWITH_NOKIA_SUPPORT=OFF \
+    -DWITH_IRDA=OFF \
+    -DWITH_PYTHON=OFF \
+    -DWITH_MySQL=ON \
+    -DWITH_Postgres=OFF \
+"
+
+PACKAGES =+ "${PN}-smsd libgammu libgsmsd python-${PN}"
+
+FILES_${PN} = "${bindir}/gammu ${bindir}/jadmaker ${sysconfdir}/bash_completion.d/gammu \
+    ${bindir}/gammu-detect ${sysconfdir}/gammurc"
+CONFFILES_${PN} = "${sysconfdir}/gammurc"
+FILES_${PN}-smsd = "${bindir}/gammu-smsd* ${sysconfdir}/gammu-smsdrc"
+CONFFILES_${PN}-smsd = "${sysconfdir}/gammu-smsdrc"
+FILES_${PN}-dev += "${bindir}/gammu-config ${libdir}/*.so"
+FILES_${PN}-dbg += "${bindir}/.debug ${libdir}/.debug ${PYTHON_SITEPACKAGES_DIR}/gammu/.debug"
+FILES_libgammu = "${libdir}/libGammu.so.*"
+FILES_libgsmsd = "${libdir}/libgsmsd.so.*"
+FILES_python-${PN} = "${PYTHON_SITEPACKAGES_DIR}/gammu/*.??"
+
+RDEPENDS_${PN} += "bash"
+RDEPENDS_${PN}-dev += "bash"
+
+# Fails to build with thumb-1 (qemuarm)
+# gammu-1.32.0/libgammu/service/sms/gsmems.c:542:1: internal compiler error: in patch_jump_insn, at cfgrtl.c:1275
+# |  }
+# |  ^
+# | Please submit a full bug report,
+# | with preprocessed source if appropriate.
+# | See <http://gcc.gnu.org/bugs.html> for instructions.
+# | make[2]: *** [libgammu/CMakeFiles/libGammu.dir/service/sms/gsmems.o] Error 1
+# | make[2]: *** Waiting for unfinished jobs....
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gnokii/gnokii_0.6.31.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gnokii/gnokii_0.6.31.bb
new file mode 100644
index 0000000..cfd794d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gnokii/gnokii_0.6.31.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Cellphone tools and driver software"
+SECTION = "console/network"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+SRC_URI = "http://www.gnokii.org/download/gnokii/gnokii-${PV}.tar.bz2"
+
+DEPENDS = "glib-2.0"
+X11DEPENDS = " libxpm gtk+"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG[bluez4] = "--enable-bluetooth,--disable-bluetooth,bluez4"
+PACKAGECONFIG[libical] = "--enable-libical,--disable-libical,libical"
+PACKAGECONFIG[pcsc-lite] = "--enable-libpcsclite,--disable-libpcsclite,pcsc-lite"
+PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
+PACKAGECONFIG[usb] = "--enable-libusb,--disable-libusb,virtual/libusb0"
+PACKAGECONFIG[x11] = ",--without-x,${X11DEPENDS}"
+
+inherit autotools pkgconfig
+
+PACKAGES += "libgnokii libgnokii-dev"
+
+EXTRA_OECONF = "--disable-smsd"
+
+FILES_${PN} = "${bindir} ${sbindir}"
+FILES_libgnokii-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
+                ${libdir}/*.a ${libdir}/*.o ${libdir}/pkgconfig \
+	        /lib/*.a /lib/*.o ${datadir}/aclocal"
+FILES_${PN}-dev = ""
+FILES_libgnokii = "${libdir}/libgnokii.so.*"
+
+SRC_URI[md5sum] = "d9627f4a1152d3ea7806df4532850d5f"
+SRC_URI[sha256sum] = "8f5a083b05c1a66a3402ca5cd80084e14c2c0632c991bb53b03c78e9adb02501"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gnuradio/gnuradio/0001-buildsys-don-t-add-usr-include-and-usr-lib-to-config.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gnuradio/gnuradio/0001-buildsys-don-t-add-usr-include-and-usr-lib-to-config.patch
new file mode 100644
index 0000000..7caaf51
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/gnuradio/gnuradio/0001-buildsys-don-t-add-usr-include-and-usr-lib-to-config.patch
@@ -0,0 +1,58 @@
+From a130153ae84d8bb5914879cef94df09f06825c10 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Sat, 18 Jun 2011 11:25:36 +0200
+Subject: [PATCH] buildsys: don't add /usr/include and /usr/lib to configure tests for libusb
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ config/usrp_libusb.m4 |   13 -------------
+ 1 files changed, 0 insertions(+), 13 deletions(-)
+
+diff --git a/config/usrp_libusb.m4 b/config/usrp_libusb.m4
+index cc3410f..b421820 100644
+--- a/config/usrp_libusb.m4
++++ b/config/usrp_libusb.m4
+@@ -117,10 +117,6 @@ AC_DEFUN([USRP_LIBUSB], [
+       dnl configured to find this header.
+       AC_LANG_PUSH(C)
+       save_CPPFLAGS="$CPPFLAGS"
+-      if test x$USB_INCLUDEDIR != x; then
+-        USB_INCLUDES="-I$USB_INCLUDEDIR"
+-        CPPFLAGS="$USB_INCLUDES"
+-      fi
+       AC_MSG_CHECKING([$libusb_name for header $usb_header])
+       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+         #include "$usb_header"
+@@ -172,9 +168,6 @@ AC_DEFUN([USRP_LIBUSB], [
+             *)
+               AC_LANG_PUSH(C)
+               save_CPPFLAGS="$CPPFLAGS"
+-              if test x$USB_INCLUDEDIR != x; then
+-                CPPFLAGS="$USB_INCLUDES"
+-              fi
+               save_LIBS="$LIBS"
+               LIBS="$USB_LIBS"
+               AC_MSG_CHECKING([$libusb_name for symbol usb_debug in library $usb_lib_name])
+@@ -217,9 +210,6 @@ AC_DEFUN([USRP_LIBUSB], [
+     dnl final error checking, mostly to create #define's
+     AC_LANG_PUSH(C)
+     save_CPPFLAGS="$CPPFLAGS"
+-    if test x$USB_INCLUDEDIR != x; then
+-      CPPFLAGS="$USB_INCLUDES"
+-    fi
+     dnl Check for the header.
+     AC_CHECK_HEADERS([$usb_header], [], [libusbok=no])
+     CPPFLAGS="$save_CPPFLAGS"
+@@ -231,9 +221,6 @@ AC_DEFUN([USRP_LIBUSB], [
+       dnl check for the library (again)
+       AC_LANG_PUSH(C)
+       save_CPPFLAGS="$CPPFLAGS"
+-      if test x$USB_INCLUDEDIR != x; then
+-        CPPFLAGS="$USB_INCLUDES"
+-      fi
+       save_LIBS="$LIBS"
+       LIBS="$USB_LIBS"
+       AC_CHECK_LIB([$usb_lib_name], [$usb_lib_func], [], [
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig
new file mode 100644
index 0000000..2789640
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig
@@ -0,0 +1,145 @@
+# Example hostapd build time configuration
+#
+# This file lists the configuration options that are used when building the
+# hostapd binary. All lines starting with # are ignored. Configuration option
+# lines must be commented out complete, if they are not to be included, i.e.,
+# just setting VARIABLE=n is not disabling that variable.
+#
+# This file is included in Makefile, so variables like CFLAGS and LIBS can also
+# be modified from here. In most cass, these lines should use += in order not
+# to override previous values of the variables.
+
+# Driver interface for Host AP driver
+CONFIG_DRIVER_HOSTAP=y
+
+# Driver interface for wired authenticator
+CONFIG_DRIVER_WIRED=y
+
+# Driver interface for madwifi driver
+#CONFIG_DRIVER_MADWIFI=y
+#CFLAGS += -I../../madwifi # change to the madwifi source directory
+
+# Driver interface for Prism54 driver
+CONFIG_DRIVER_PRISM54=y
+
+# Driver interface for drivers using the nl80211 kernel interface
+CONFIG_DRIVER_NL80211=y
+CONFIG_LIBNL32=y
+# driver_nl80211.c requires a rather new libnl (version 1.1) which may not be
+# shipped with your distribution yet. If that is the case, you need to build
+# newer libnl version and point the hostapd build to use it.
+#LIBNL=/usr/src/libnl
+#CFLAGS += -I$(LIBNL)/include
+#LIBS += -L$(LIBNL)/lib
+
+# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
+#CONFIG_DRIVER_BSD=y
+#CFLAGS += -I/usr/local/include
+#LIBS += -L/usr/local/lib
+
+# Driver interface for no driver (e.g., RADIUS server only)
+#CONFIG_DRIVER_NONE=y
+
+# IEEE 802.11F/IAPP
+CONFIG_IAPP=y
+
+# WPA2/IEEE 802.11i RSN pre-authentication
+CONFIG_RSN_PREAUTH=y
+
+# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
+CONFIG_PEERKEY=y
+
+# IEEE 802.11w (management frame protection)
+# This version is an experimental implementation based on IEEE 802.11w/D1.0
+# draft and is subject to change since the standard has not yet been finalized.
+# Driver support is also needed for IEEE 802.11w.
+#CONFIG_IEEE80211W=y
+
+# Integrated EAP server
+CONFIG_EAP=y
+
+# EAP-MD5 for the integrated EAP server
+CONFIG_EAP_MD5=y
+
+# EAP-TLS for the integrated EAP server
+CONFIG_EAP_TLS=y
+
+# EAP-MSCHAPv2 for the integrated EAP server
+CONFIG_EAP_MSCHAPV2=y
+
+# EAP-PEAP for the integrated EAP server
+CONFIG_EAP_PEAP=y
+
+# EAP-GTC for the integrated EAP server
+CONFIG_EAP_GTC=y
+
+# EAP-TTLS for the integrated EAP server
+CONFIG_EAP_TTLS=y
+
+# EAP-SIM for the integrated EAP server
+#CONFIG_EAP_SIM=y
+
+# EAP-AKA for the integrated EAP server
+#CONFIG_EAP_AKA=y
+
+# EAP-AKA' for the integrated EAP server
+# This requires CONFIG_EAP_AKA to be enabled, too.
+#CONFIG_EAP_AKA_PRIME=y
+
+# EAP-PAX for the integrated EAP server
+#CONFIG_EAP_PAX=y
+
+# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK)
+#CONFIG_EAP_PSK=y
+
+# EAP-SAKE for the integrated EAP server
+#CONFIG_EAP_SAKE=y
+
+# EAP-GPSK for the integrated EAP server
+#CONFIG_EAP_GPSK=y
+# Include support for optional SHA256 cipher suite in EAP-GPSK
+#CONFIG_EAP_GPSK_SHA256=y
+
+# EAP-FAST for the integrated EAP server
+# Note: Default OpenSSL package does not include support for all the
+# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL,
+# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch)
+# to add the needed functions.
+#CONFIG_EAP_FAST=y
+
+# Wi-Fi Protected Setup (WPS)
+CONFIG_WPS=y
+# Enable UPnP support for external WPS Registrars
+#CONFIG_WPS_UPNP=y
+
+# EAP-IKEv2
+#CONFIG_EAP_IKEV2=y
+
+# Trusted Network Connect (EAP-TNC)
+#CONFIG_EAP_TNC=y
+
+# PKCS#12 (PFX) support (used to read private key and certificate file from
+# a file that usually has extension .p12 or .pfx)
+CONFIG_PKCS12=y
+
+# RADIUS authentication server. This provides access to the integrated EAP
+# server from external hosts using RADIUS.
+CONFIG_RADIUS_SERVER=y
+
+# Build IPv6 support for RADIUS operations
+CONFIG_IPV6=y
+
+# IEEE Std 802.11r-2008 (Fast BSS Transition)
+#CONFIG_IEEE80211R=y
+
+# Use the hostapd's IEEE 802.11 authentication (ACL), but without
+# the IEEE 802.11 Management capability (e.g., madwifi or FreeBSD/net80211)
+CONFIG_DRIVER_RADIUS_ACL=y
+
+# IEEE 802.11n (High Throughput) support
+CONFIG_IEEE80211N=y
+
+# Remove debugging code that is printing out debug messages to stdout.
+# This can be used to reduce the size of the hostapd considerably if debugging
+# code is not needed.
+#CONFIG_NO_STDOUT_DEBUG=y
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd.service b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd.service
new file mode 100644
index 0000000..151c050
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
+After=network.target
+
+[Service]
+Type=forking
+PIDFile=/run/hostapd.pid
+ExecStart=@SBINDIR@/hostapd @SYSCONFDIR@/hostapd.conf -P /run/hostapd.pid -B
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/init b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/init
new file mode 100644
index 0000000..8ba4e07
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/init
@@ -0,0 +1,58 @@
+#!/bin/sh
+DAEMON=/usr/sbin/hostapd
+NAME=hostapd
+DESC="HOSTAP Daemon"
+ARGS="/etc/hostapd.conf -B"
+
+test -f $DAEMON || exit 0
+
+set -e
+
+# source function library
+. /etc/init.d/functions
+
+delay_stop() {
+	count=0
+	while [ $count -lt 9 ] ; do
+	        if pidof $DAEMON >/dev/null; then
+	                sleep 1
+	        else
+	                return 0
+	        fi
+		count=`expr $count + 1`
+	done
+	echo "Failed to stop $DESC."
+	return 1
+}
+
+case "$1" in
+    start)
+	echo -n "Starting $DESC: "
+	start-stop-daemon -S -x $DAEMON -- $ARGS
+	echo "$NAME."
+	;;
+    stop)
+	echo -n "Stopping $DESC: "
+	start-stop-daemon -K --oknodo -x $DAEMON
+	echo "$NAME."
+	;;
+    restart)
+	$0 stop
+	delay_stop && $0 start
+	;;
+    reload)
+	echo -n "Reloading $DESC: "
+	killall -HUP $(basename ${DAEMON})
+	echo "$NAME."
+	;;
+    status)
+	status $DAEMON
+	exit $?
+	;;
+    *)
+	echo "Usage: $0 {start|stop|restart|reload|status}"
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.5.bb
new file mode 100644
index 0000000..c38e20a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.5.bb
@@ -0,0 +1,46 @@
+HOMEPAGE = "http://w1.fi/hostapd/"
+SECTION = "kernel/userland"
+LICENSE = "GPLv2 | BSD"
+LIC_FILES_CHKSUM = "file://${B}/README;md5=4d53178f44d4b38418a4fa8de365e11c"
+DEPENDS = "libnl openssl"
+SUMMARY = "User space daemon for extended IEEE 802.11 management"
+
+inherit update-rc.d systemd
+INITSCRIPT_NAME = "hostapd"
+
+SYSTEMD_SERVICE_${PN} = "hostapd.service"
+SYSTEMD_AUTO_ENABLE_${PN} = "disable"
+
+SRC_URI = " \
+    http://w1.fi/releases/hostapd-${PV}.tar.gz \
+    file://defconfig \
+    file://init \
+    file://hostapd.service \
+"
+
+S = "${WORKDIR}/hostapd-${PV}"
+B = "${WORKDIR}/hostapd-${PV}/hostapd"
+
+do_configure() {
+    install -m 0644 ${WORKDIR}/defconfig ${B}/.config
+}
+
+do_compile() {
+    export CFLAGS="-MMD -O2 -Wall -g -I${STAGING_INCDIR}/libnl3"
+    make
+}
+
+do_install() {
+    install -d ${D}${sbindir} ${D}${sysconfdir}/init.d ${D}${systemd_unitdir}/system/
+    install -m 0644 ${B}/hostapd.conf ${D}${sysconfdir}
+    install -m 0755 ${B}/hostapd ${D}${sbindir}
+    install -m 0755 ${B}/hostapd_cli ${D}${sbindir}
+    install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/hostapd
+    install -m 0644 ${WORKDIR}/hostapd.service ${D}${systemd_unitdir}/system/
+    sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/hostapd.service
+}
+
+CONFFILES_${PN} += "${sysconfdir}/hostapd.conf"
+
+SRC_URI[md5sum] = "69f9cec3f76d74f402864a43e4f8624f"
+SRC_URI[sha256sum] = "8e272d954dc0d7026c264b79b15389ec2b2c555b32970de39f506b9f463ec74a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_0.8.16-rc1.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_0.8.16-rc1.bb
new file mode 100644
index 0000000..54d881d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_0.8.16-rc1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "ncurses IRC client"
+DESCRIPTION = "Irssi is an ncurses IRC client"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=55fdc1113306167d6ea2561404ce02f8"
+
+DEPENDS = "glib-2.0 ncurses openssl"
+
+REALPV = "0.8.16-rc1"
+PV = "0.8.15+${REALPV}"
+
+SRC_URI = "http://irssi.org/files/irssi-${REALPV}.tar.gz"
+
+SRC_URI[md5sum] = "769fec4df8e633c583c411ccd2cd563a"
+SRC_URI[sha256sum] = "bb6c0125db30b697f80837941c17372b7484c64d57a6920b8bfa7ee3def92de3"
+
+S = "${WORKDIR}/irssi-${REALPV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-ssl \
+    --with-ncurses=${STAGING_EXECPREFIXDIR} \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/0001-aclocal-Add-parameter-to-disable-keyutils-detection.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/0001-aclocal-Add-parameter-to-disable-keyutils-detection.patch
new file mode 100644
index 0000000..f0c310c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/0001-aclocal-Add-parameter-to-disable-keyutils-detection.patch
@@ -0,0 +1,33 @@
+From ecb62f3467f493cc0d679323f05367eebbf0fb67 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 1 Oct 2013 22:22:57 +0200
+Subject: [PATCH] aclocal: Add parameter to disable keyutils detection
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ aclocal.m4 | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/aclocal.m4 b/aclocal.m4
+index 210c473..83b1f02 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -1650,11 +1650,15 @@ fi
+ dnl
+ dnl If libkeyutils exists (on Linux) include it and use keyring ccache
+ AC_DEFUN(KRB5_AC_KEYRING_CCACHE,[
++AC_ARG_ENABLE([keyutils],
++AC_HELP_STRING([--disable-keyutils],don't enable using keyutils for keyring ccache @<:@enabled@:>@), , enable_keyutils=yes)
++if test "$enable_keyutils" = yes; then
+   AC_CHECK_HEADERS([keyutils.h],
+     AC_CHECK_LIB(keyutils, add_key, 
+       [dnl Pre-reqs were found
+        AC_DEFINE(USE_KEYRING_CCACHE, 1, [Define if the keyring ccache should be enabled])
+        LIBS="-lkeyutils $LIBS"
+       ]))
++fi
+ ])dnl
+ dnl
+-- 
+1.8.3.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-IAKERB-context-aliasing-bugs-CVE-2015-2696.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-IAKERB-context-aliasing-bugs-CVE-2015-2696.patch
new file mode 100644
index 0000000..b771b41
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-IAKERB-context-aliasing-bugs-CVE-2015-2696.patch
@@ -0,0 +1,739 @@
+From f6e57c402688f4bc386d1a39512657a30f0bafd3 Mon Sep 17 00:00:00 2001
+From: Nicolas Williams <nico@twosigma.com>
+Date: Mon, 14 Sep 2015 12:28:36 -0400
+Subject: [PATCH 2/4] Fix IAKERB context aliasing bugs [CVE-2015-2696]
+
+The IAKERB mechanism currently replaces its context handle with the
+krb5 mechanism handle upon establishment, under the assumption that
+most GSS functions are only called after context establishment.  This
+assumption is incorrect, and can lead to aliasing violations for some
+programs.  Maintain the IAKERB context structure after context
+establishment and add new IAKERB entry points to refer to it with that
+type.  Add initiate and established flags to the IAKERB context
+structure for use in gss_inquire_context() prior to context
+establishment.
+
+CVE-2015-2696:
+
+In MIT krb5 1.9 and later, applications which call
+gss_inquire_context() on a partially-established IAKERB context can
+cause the GSS-API library to read from a pointer using the wrong type,
+generally causing a process crash.  Java server applications using the
+native JGSS provider are vulnerable to this bug.  A carefully crafted
+IAKERB packet might allow the gss_inquire_context() call to succeed
+with attacker-determined results, but applications should not make
+access control decisions based on gss_inquire_context() results prior
+to context establishment.
+
+    CVSSv2 Vector: AV:N/AC:M/Au:N/C:N/I:N/A:C/E:POC/RL:OF/RC:C
+
+[ghudson@mit.edu: several bugfixes, style changes, and edge-case
+behavior changes; commit message and CVE description]
+
+ticket: 8244
+target_version: 1.14
+tags: pullup
+
+Backport upstream commit:
+https://github.com/krb5/krb5/commit/e04f0283516e80d2f93366e0d479d13c9b5c8c2a
+
+Upstream-Status: Backport
+---
+ src/lib/gssapi/krb5/gssapiP_krb5.h | 114 ++++++++++++
+ src/lib/gssapi/krb5/gssapi_krb5.c  | 105 +++++++++--
+ src/lib/gssapi/krb5/iakerb.c       | 351 +++++++++++++++++++++++++++++++++----
+ 3 files changed, 529 insertions(+), 41 deletions(-)
+
+diff --git a/src/lib/gssapi/krb5/gssapiP_krb5.h b/src/lib/gssapi/krb5/gssapiP_krb5.h
+index a0e8625..05dc321 100644
+--- a/src/lib/gssapi/krb5/gssapiP_krb5.h
++++ b/src/lib/gssapi/krb5/gssapiP_krb5.h
+@@ -620,6 +620,21 @@ OM_uint32 KRB5_CALLCONV krb5_gss_accept_sec_context_ext
+ );
+ #endif /* LEAN_CLIENT */
+ 
++OM_uint32 KRB5_CALLCONV krb5_gss_inquire_sec_context_by_oid
++(OM_uint32*,       /* minor_status */
++ const gss_ctx_id_t,
++ /* context_handle */
++ const gss_OID,    /* desired_object */
++ gss_buffer_set_t* /* data_set */
++);
++
++OM_uint32 KRB5_CALLCONV krb5_gss_set_sec_context_option
++(OM_uint32*,       /* minor_status */
++ gss_ctx_id_t*,    /* context_handle */
++ const gss_OID,    /* desired_object */
++ const gss_buffer_t/* value */
++);
++
+ OM_uint32 KRB5_CALLCONV krb5_gss_process_context_token
+ (OM_uint32*,       /* minor_status */
+  gss_ctx_id_t,     /* context_handle */
+@@ -1301,6 +1316,105 @@ OM_uint32 KRB5_CALLCONV
+ krb5_gss_import_cred(OM_uint32 *minor_status, gss_buffer_t token,
+                      gss_cred_id_t *cred_handle);
+ 
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_process_context_token(OM_uint32 *minor_status,
++                                 const gss_ctx_id_t context_handle,
++                                 const gss_buffer_t token_buffer);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_context_time(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                        OM_uint32 *time_rec);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_inquire_context(OM_uint32 *minor_status,
++                           gss_ctx_id_t context_handle, gss_name_t *src_name,
++                           gss_name_t *targ_name, OM_uint32 *lifetime_rec,
++                           gss_OID *mech_type, OM_uint32 *ctx_flags,
++                           int *locally_initiated, int *opened);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_get_mic(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                   gss_qop_t qop_req, gss_buffer_t message_buffer,
++                   gss_buffer_t message_token);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_get_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                       gss_qop_t qop_req, gss_iov_buffer_desc *iov,
++                       int iov_count);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_get_mic_iov_length(OM_uint32 *minor_status,
++                              gss_ctx_id_t context_handle, gss_qop_t qop_req,
++                              gss_iov_buffer_desc *iov, int iov_count);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_verify_mic(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                      gss_buffer_t msg_buffer, gss_buffer_t token_buffer,
++                      gss_qop_t *qop_state);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_verify_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                          gss_qop_t *qop_state, gss_iov_buffer_desc *iov,
++                          int iov_count);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_wrap(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                int conf_req_flag, gss_qop_t qop_req,
++                gss_buffer_t input_message_buffer, int *conf_state,
++                gss_buffer_t output_message_buffer);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_wrap_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                    int conf_req_flag, gss_qop_t qop_req, int *conf_state,
++                    gss_iov_buffer_desc *iov, int iov_count);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_wrap_iov_length(OM_uint32 *minor_status,
++                           gss_ctx_id_t context_handle, int conf_req_flag,
++                           gss_qop_t qop_req, int *conf_state,
++                           gss_iov_buffer_desc *iov, int iov_count);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_unwrap(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                  gss_buffer_t input_message_buffer,
++                  gss_buffer_t output_message_buffer, int *conf_state,
++                  gss_qop_t *qop_state);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_unwrap_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                      int *conf_state, gss_qop_t *qop_state,
++                      gss_iov_buffer_desc *iov, int iov_count);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_wrap_size_limit(OM_uint32 *minor_status,
++                           gss_ctx_id_t context_handle, int conf_req_flag,
++                           gss_qop_t qop_req, OM_uint32 req_output_size,
++                           OM_uint32 *max_input_size);
++
++#ifndef LEAN_CLIENT
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_export_sec_context(OM_uint32 *minor_status,
++                              gss_ctx_id_t *context_handle,
++                              gss_buffer_t interprocess_token);
++#endif /* LEAN_CLIENT */
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_inquire_sec_context_by_oid(OM_uint32 *minor_status,
++                                      const gss_ctx_id_t context_handle,
++                                      const gss_OID desired_object,
++                                      gss_buffer_set_t *data_set);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_set_sec_context_option(OM_uint32 *minor_status,
++                                  gss_ctx_id_t *context_handle,
++                                  const gss_OID desired_object,
++                                  const gss_buffer_t value);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_pseudo_random(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                         int prf_key, const gss_buffer_t prf_in,
++                         ssize_t desired_output_len, gss_buffer_t prf_out);
++
+ /* Magic string to identify exported krb5 GSS credentials.  Increment this if
+  * the format changes. */
+ #define CRED_EXPORT_MAGIC "K5C1"
+diff --git a/src/lib/gssapi/krb5/gssapi_krb5.c b/src/lib/gssapi/krb5/gssapi_krb5.c
+index 77b7fff..9a23656 100644
+--- a/src/lib/gssapi/krb5/gssapi_krb5.c
++++ b/src/lib/gssapi/krb5/gssapi_krb5.c
+@@ -345,7 +345,7 @@ static struct {
+     }
+ };
+ 
+-static OM_uint32 KRB5_CALLCONV
++OM_uint32 KRB5_CALLCONV
+ krb5_gss_inquire_sec_context_by_oid (OM_uint32 *minor_status,
+                                      const gss_ctx_id_t context_handle,
+                                      const gss_OID desired_object,
+@@ -459,7 +459,7 @@ static struct {
+ };
+ #endif
+ 
+-static OM_uint32 KRB5_CALLCONV
++OM_uint32 KRB5_CALLCONV
+ krb5_gss_set_sec_context_option (OM_uint32 *minor_status,
+                                  gss_ctx_id_t *context_handle,
+                                  const gss_OID desired_object,
+@@ -904,20 +904,103 @@ static struct gss_config krb5_mechanism = {
+     krb5_gss_get_mic_iov_length,
+ };
+ 
++/* Functions which use security contexts or acquire creds are IAKERB-specific;
++ * other functions can borrow from the krb5 mech. */
++static struct gss_config iakerb_mechanism = {
++    { GSS_MECH_KRB5_OID_LENGTH, GSS_MECH_KRB5_OID },
++    NULL,
++    iakerb_gss_acquire_cred,
++    krb5_gss_release_cred,
++    iakerb_gss_init_sec_context,
++#ifdef LEAN_CLIENT
++    NULL,
++#else
++    iakerb_gss_accept_sec_context,
++#endif
++    iakerb_gss_process_context_token,
++    iakerb_gss_delete_sec_context,
++    iakerb_gss_context_time,
++    iakerb_gss_get_mic,
++    iakerb_gss_verify_mic,
++#if defined(IOV_SHIM_EXERCISE_WRAP) || defined(IOV_SHIM_EXERCISE)
++    NULL,
++#else
++    iakerb_gss_wrap,
++#endif
++#if defined(IOV_SHIM_EXERCISE_UNWRAP) || defined(IOV_SHIM_EXERCISE)
++    NULL,
++#else
++    iakerb_gss_unwrap,
++#endif
++    krb5_gss_display_status,
++    krb5_gss_indicate_mechs,
++    krb5_gss_compare_name,
++    krb5_gss_display_name,
++    krb5_gss_import_name,
++    krb5_gss_release_name,
++    krb5_gss_inquire_cred,
++    NULL,                /* add_cred */
++#ifdef LEAN_CLIENT
++    NULL,
++    NULL,
++#else
++    iakerb_gss_export_sec_context,
++    NULL,
++#endif
++    krb5_gss_inquire_cred_by_mech,
++    krb5_gss_inquire_names_for_mech,
++    iakerb_gss_inquire_context,
++    krb5_gss_internal_release_oid,
++    iakerb_gss_wrap_size_limit,
++    krb5_gss_localname,
++    krb5_gss_authorize_localname,
++    krb5_gss_export_name,
++    krb5_gss_duplicate_name,
++    krb5_gss_store_cred,
++    iakerb_gss_inquire_sec_context_by_oid,
++    krb5_gss_inquire_cred_by_oid,
++    iakerb_gss_set_sec_context_option,
++    krb5_gssspi_set_cred_option,
++    krb5_gssspi_mech_invoke,
++    NULL,                /* wrap_aead */
++    NULL,                /* unwrap_aead */
++    iakerb_gss_wrap_iov,
++    iakerb_gss_unwrap_iov,
++    iakerb_gss_wrap_iov_length,
++    NULL,               /* complete_auth_token */
++    NULL,               /* acquire_cred_impersonate_name */
++    NULL,               /* add_cred_impersonate_name */
++    NULL,               /* display_name_ext */
++    krb5_gss_inquire_name,
++    krb5_gss_get_name_attribute,
++    krb5_gss_set_name_attribute,
++    krb5_gss_delete_name_attribute,
++    krb5_gss_export_name_composite,
++    krb5_gss_map_name_to_any,
++    krb5_gss_release_any_name_mapping,
++    iakerb_gss_pseudo_random,
++    NULL,               /* set_neg_mechs */
++    krb5_gss_inquire_saslname_for_mech,
++    krb5_gss_inquire_mech_for_saslname,
++    krb5_gss_inquire_attrs_for_mech,
++    krb5_gss_acquire_cred_from,
++    krb5_gss_store_cred_into,
++    iakerb_gss_acquire_cred_with_password,
++    krb5_gss_export_cred,
++    krb5_gss_import_cred,
++    NULL,               /* import_sec_context_by_mech */
++    NULL,               /* import_name_by_mech */
++    NULL,               /* import_cred_by_mech */
++    iakerb_gss_get_mic_iov,
++    iakerb_gss_verify_mic_iov,
++    iakerb_gss_get_mic_iov_length,
++};
++
+ #ifdef _GSS_STATIC_LINK
+ #include "mglueP.h"
+ static int gss_iakerbmechglue_init(void)
+ {
+     struct gss_mech_config mech_iakerb;
+-    struct gss_config iakerb_mechanism = krb5_mechanism;
+-
+-    /* IAKERB mechanism mirrors krb5, but with different context SPIs */
+-    iakerb_mechanism.gss_accept_sec_context = iakerb_gss_accept_sec_context;
+-    iakerb_mechanism.gss_init_sec_context   = iakerb_gss_init_sec_context;
+-    iakerb_mechanism.gss_delete_sec_context = iakerb_gss_delete_sec_context;
+-    iakerb_mechanism.gss_acquire_cred       = iakerb_gss_acquire_cred;
+-    iakerb_mechanism.gssspi_acquire_cred_with_password
+-                                    = iakerb_gss_acquire_cred_with_password;
+ 
+     memset(&mech_iakerb, 0, sizeof(mech_iakerb));
+     mech_iakerb.mech = &iakerb_mechanism;
+diff --git a/src/lib/gssapi/krb5/iakerb.c b/src/lib/gssapi/krb5/iakerb.c
+index f30de32..4662bd9 100644
+--- a/src/lib/gssapi/krb5/iakerb.c
++++ b/src/lib/gssapi/krb5/iakerb.c
+@@ -47,6 +47,8 @@ struct _iakerb_ctx_id_rec {
+     gss_ctx_id_t gssc;
+     krb5_data conv;                     /* conversation for checksumming */
+     unsigned int count;                 /* number of round trips */
++    int initiate;
++    int established;
+     krb5_get_init_creds_opt *gic_opts;
+ };
+ 
+@@ -695,7 +697,7 @@ cleanup:
+  * Allocate and initialise an IAKERB context
+  */
+ static krb5_error_code
+-iakerb_alloc_context(iakerb_ctx_id_t *pctx)
++iakerb_alloc_context(iakerb_ctx_id_t *pctx, int initiate)
+ {
+     iakerb_ctx_id_t ctx;
+     krb5_error_code code;
+@@ -709,6 +711,8 @@ iakerb_alloc_context(iakerb_ctx_id_t *pctx)
+     ctx->magic = KG_IAKERB_CONTEXT;
+     ctx->state = IAKERB_AS_REQ;
+     ctx->count = 0;
++    ctx->initiate = initiate;
++    ctx->established = 0;
+ 
+     code = krb5_gss_init_context(&ctx->k5c);
+     if (code != 0)
+@@ -732,7 +736,7 @@ iakerb_gss_delete_sec_context(OM_uint32 *minor_status,
+                               gss_ctx_id_t *context_handle,
+                               gss_buffer_t output_token)
+ {
+-    OM_uint32 major_status = GSS_S_COMPLETE;
++    iakerb_ctx_id_t iakerb_ctx = (iakerb_ctx_id_t)*context_handle;
+ 
+     if (output_token != GSS_C_NO_BUFFER) {
+         output_token->length = 0;
+@@ -740,23 +744,10 @@ iakerb_gss_delete_sec_context(OM_uint32 *minor_status,
+     }
+ 
+     *minor_status = 0;
++    *context_handle = GSS_C_NO_CONTEXT;
++    iakerb_release_context(iakerb_ctx);
+ 
+-    if (*context_handle != GSS_C_NO_CONTEXT) {
+-        iakerb_ctx_id_t iakerb_ctx = (iakerb_ctx_id_t)*context_handle;
+-
+-        if (iakerb_ctx->magic == KG_IAKERB_CONTEXT) {
+-            iakerb_release_context(iakerb_ctx);
+-            *context_handle = GSS_C_NO_CONTEXT;
+-        } else {
+-            assert(iakerb_ctx->magic == KG_CONTEXT);
+-
+-            major_status = krb5_gss_delete_sec_context(minor_status,
+-                                                       context_handle,
+-                                                       output_token);
+-        }
+-    }
+-
+-    return major_status;
++    return GSS_S_COMPLETE;
+ }
+ 
+ static krb5_boolean
+@@ -802,7 +793,7 @@ iakerb_gss_accept_sec_context(OM_uint32 *minor_status,
+     int initialContextToken = (*context_handle == GSS_C_NO_CONTEXT);
+ 
+     if (initialContextToken) {
+-        code = iakerb_alloc_context(&ctx);
++        code = iakerb_alloc_context(&ctx, 0);
+         if (code != 0)
+             goto cleanup;
+ 
+@@ -854,11 +845,8 @@ iakerb_gss_accept_sec_context(OM_uint32 *minor_status,
+                                                        time_rec,
+                                                        delegated_cred_handle,
+                                                        &exts);
+-        if (major_status == GSS_S_COMPLETE) {
+-            *context_handle = ctx->gssc;
+-            ctx->gssc = NULL;
+-            iakerb_release_context(ctx);
+-        }
++        if (major_status == GSS_S_COMPLETE)
++            ctx->established = 1;
+         if (mech_type != NULL)
+             *mech_type = (gss_OID)gss_mech_krb5;
+     }
+@@ -897,7 +885,7 @@ iakerb_gss_init_sec_context(OM_uint32 *minor_status,
+     int initialContextToken = (*context_handle == GSS_C_NO_CONTEXT);
+ 
+     if (initialContextToken) {
+-        code = iakerb_alloc_context(&ctx);
++        code = iakerb_alloc_context(&ctx, 1);
+         if (code != 0) {
+             *minor_status = code;
+             goto cleanup;
+@@ -983,11 +971,8 @@ iakerb_gss_init_sec_context(OM_uint32 *minor_status,
+                                                      ret_flags,
+                                                      time_rec,
+                                                      &exts);
+-        if (major_status == GSS_S_COMPLETE) {
+-            *context_handle = ctx->gssc;
+-            ctx->gssc = GSS_C_NO_CONTEXT;
+-            iakerb_release_context(ctx);
+-        }
++        if (major_status == GSS_S_COMPLETE)
++            ctx->established = 1;
+         if (actual_mech_type != NULL)
+             *actual_mech_type = (gss_OID)gss_mech_krb5;
+     } else {
+@@ -1010,3 +995,309 @@ cleanup:
+ 
+     return major_status;
+ }
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_unwrap(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                  gss_buffer_t input_message_buffer,
++                  gss_buffer_t output_message_buffer, int *conf_state,
++                  gss_qop_t *qop_state)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_unwrap(minor_status, ctx->gssc, input_message_buffer,
++                           output_message_buffer, conf_state, qop_state);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_wrap(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                int conf_req_flag, gss_qop_t qop_req,
++                gss_buffer_t input_message_buffer, int *conf_state,
++                gss_buffer_t output_message_buffer)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_wrap(minor_status, ctx->gssc, conf_req_flag, qop_req,
++                         input_message_buffer, conf_state,
++                         output_message_buffer);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_process_context_token(OM_uint32 *minor_status,
++                                 const gss_ctx_id_t context_handle,
++                                 const gss_buffer_t token_buffer)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_DEFECTIVE_TOKEN;
++
++    return krb5_gss_process_context_token(minor_status, ctx->gssc,
++                                          token_buffer);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_context_time(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                        OM_uint32 *time_rec)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_context_time(minor_status, ctx->gssc, time_rec);
++}
++
++#ifndef LEAN_CLIENT
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_export_sec_context(OM_uint32 *minor_status,
++                              gss_ctx_id_t *context_handle,
++                              gss_buffer_t interprocess_token)
++{
++    OM_uint32 maj;
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    /* We don't currently support exporting partially established contexts. */
++    if (!ctx->established)
++        return GSS_S_UNAVAILABLE;
++
++    maj = krb5_gss_export_sec_context(minor_status, &ctx->gssc,
++                                      interprocess_token);
++    if (ctx->gssc == GSS_C_NO_CONTEXT) {
++        iakerb_release_context(ctx);
++        *context_handle = GSS_C_NO_CONTEXT;
++    }
++    return maj;
++}
++
++/*
++ * Until we implement partial context exports, there are no SPNEGO exported
++ * context tokens, only tokens for the underlying krb5 context.  So we do not
++ * need to implement an iakerb_gss_import_sec_context() yet; it would be
++ * unreachable except via a manually constructed token.
++ */
++
++#endif /* LEAN_CLIENT */
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_inquire_context(OM_uint32 *minor_status,
++                           gss_ctx_id_t context_handle, gss_name_t *src_name,
++                           gss_name_t *targ_name, OM_uint32 *lifetime_rec,
++                           gss_OID *mech_type, OM_uint32 *ctx_flags,
++                           int *initiate, int *opened)
++{
++    OM_uint32 ret;
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (src_name != NULL)
++        *src_name = GSS_C_NO_NAME;
++    if (targ_name != NULL)
++        *targ_name = GSS_C_NO_NAME;
++    if (lifetime_rec != NULL)
++        *lifetime_rec = 0;
++    if (mech_type != NULL)
++        *mech_type = (gss_OID)gss_mech_iakerb;
++    if (ctx_flags != NULL)
++        *ctx_flags = 0;
++    if (initiate != NULL)
++        *initiate = ctx->initiate;
++    if (opened != NULL)
++        *opened = ctx->established;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_COMPLETE;
++
++    ret = krb5_gss_inquire_context(minor_status, ctx->gssc, src_name,
++                                   targ_name, lifetime_rec, mech_type,
++                                   ctx_flags, initiate, opened);
++
++    if (!ctx->established) {
++        /* Report IAKERB as the mech OID until the context is established. */
++        if (mech_type != NULL)
++            *mech_type = (gss_OID)gss_mech_iakerb;
++
++        /* We don't support exporting partially-established contexts. */
++        if (ctx_flags != NULL)
++            *ctx_flags &= ~GSS_C_TRANS_FLAG;
++    }
++
++    return ret;
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_wrap_size_limit(OM_uint32 *minor_status,
++                           gss_ctx_id_t context_handle, int conf_req_flag,
++                           gss_qop_t qop_req, OM_uint32 req_output_size,
++                           OM_uint32 *max_input_size)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_wrap_size_limit(minor_status, ctx->gssc, conf_req_flag,
++                                    qop_req, req_output_size, max_input_size);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_get_mic(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                   gss_qop_t qop_req, gss_buffer_t message_buffer,
++                   gss_buffer_t message_token)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_get_mic(minor_status, ctx->gssc, qop_req, message_buffer,
++                            message_token);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_verify_mic(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                      gss_buffer_t msg_buffer, gss_buffer_t token_buffer,
++                      gss_qop_t *qop_state)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_verify_mic(minor_status, ctx->gssc, msg_buffer,
++                               token_buffer, qop_state);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_inquire_sec_context_by_oid(OM_uint32 *minor_status,
++                                      const gss_ctx_id_t context_handle,
++                                      const gss_OID desired_object,
++                                      gss_buffer_set_t *data_set)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_UNAVAILABLE;
++
++    return krb5_gss_inquire_sec_context_by_oid(minor_status, ctx->gssc,
++                                               desired_object, data_set);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_set_sec_context_option(OM_uint32 *minor_status,
++                                  gss_ctx_id_t *context_handle,
++                                  const gss_OID desired_object,
++                                  const gss_buffer_t value)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)*context_handle;
++
++    if (ctx == NULL || ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_UNAVAILABLE;
++
++    return krb5_gss_set_sec_context_option(minor_status, &ctx->gssc,
++                                           desired_object, value);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_wrap_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                    int conf_req_flag, gss_qop_t qop_req, int *conf_state,
++                    gss_iov_buffer_desc *iov, int iov_count)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_wrap_iov(minor_status, ctx->gssc, conf_req_flag, qop_req,
++                             conf_state, iov, iov_count);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_unwrap_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                      int *conf_state, gss_qop_t *qop_state,
++                      gss_iov_buffer_desc *iov, int iov_count)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_unwrap_iov(minor_status, ctx->gssc, conf_state, qop_state,
++                               iov, iov_count);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_wrap_iov_length(OM_uint32 *minor_status,
++                           gss_ctx_id_t context_handle, int conf_req_flag,
++                           gss_qop_t qop_req, int *conf_state,
++                           gss_iov_buffer_desc *iov, int iov_count)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_wrap_iov_length(minor_status, ctx->gssc, conf_req_flag,
++                                    qop_req, conf_state, iov, iov_count);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_pseudo_random(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                         int prf_key, const gss_buffer_t prf_in,
++                         ssize_t desired_output_len, gss_buffer_t prf_out)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_pseudo_random(minor_status, ctx->gssc, prf_key, prf_in,
++                                  desired_output_len, prf_out);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_get_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                       gss_qop_t qop_req, gss_iov_buffer_desc *iov,
++                       int iov_count)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_get_mic_iov(minor_status, ctx->gssc, qop_req, iov,
++                                iov_count);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_verify_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
++                          gss_qop_t *qop_state, gss_iov_buffer_desc *iov,
++                          int iov_count)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_verify_mic_iov(minor_status, ctx->gssc, qop_state, iov,
++                                   iov_count);
++}
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_get_mic_iov_length(OM_uint32 *minor_status,
++                              gss_ctx_id_t context_handle, gss_qop_t qop_req,
++                              gss_iov_buffer_desc *iov, int iov_count)
++{
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++
++    if (ctx->gssc == GSS_C_NO_CONTEXT)
++        return GSS_S_NO_CONTEXT;
++
++    return krb5_gss_get_mic_iov_length(minor_status, ctx->gssc, qop_req, iov,
++                                       iov_count);
++}
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-IAKERB-context-export-import-CVE-2015-2698.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-IAKERB-context-export-import-CVE-2015-2698.patch
new file mode 100644
index 0000000..2f45d30
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-IAKERB-context-export-import-CVE-2015-2698.patch
@@ -0,0 +1,134 @@
+From aa769c8c6905d1abfac66d4d1b0fc73740ccbe7d Mon Sep 17 00:00:00 2001
+From: Greg Hudson <ghudson@mit.edu>
+Date: Sat, 14 Nov 2015 02:47:04 -0500
+Subject: [PATCH 4/4] Fix IAKERB context export/import [CVE-2015-2698]
+
+The patches for CVE-2015-2696 contained a regression in the newly
+added IAKERB iakerb_gss_export_sec_context() function, which could
+cause it to corrupt memory.  Fix the regression by properly
+dereferencing the context_handle pointer before casting it.
+
+Also, the patches did not implement an IAKERB gss_import_sec_context()
+function, under the erroneous belief that an exported IAKERB context
+would be tagged as a krb5 context.  Implement it now to allow IAKERB
+contexts to be successfully exported and imported after establishment.
+
+CVE-2015-2698:
+
+In any MIT krb5 release with the patches for CVE-2015-2696 applied, an
+application which calls gss_export_sec_context() may experience memory
+corruption if the context was established using the IAKERB mechanism.
+Historically, some vulnerabilities of this nature can be translated
+into remote code execution, though the necessary exploits must be
+tailored to the individual application and are usually quite
+complicated.
+
+    CVSSv2 Vector: AV:N/AC:H/Au:S/C:C/I:C/A:C/E:POC/RL:OF/RC:C
+
+ticket: 8273 (new)
+target_version: 1.14
+tags: pullup
+
+Backport upstream commit:
+https://github.com/krb5/krb5/commit/3db8dfec1ef50ddd78d6ba9503185995876a39fd
+
+Upstream-Status: Backport
+---
+ src/lib/gssapi/krb5/gssapiP_krb5.h |  5 +++++
+ src/lib/gssapi/krb5/gssapi_krb5.c  |  2 +-
+ src/lib/gssapi/krb5/iakerb.c       | 42 +++++++++++++++++++++++++++++++-------
+ 3 files changed, 41 insertions(+), 8 deletions(-)
+
+diff --git a/src/lib/gssapi/krb5/gssapiP_krb5.h b/src/lib/gssapi/krb5/gssapiP_krb5.h
+index 05dc321..ac53662 100644
+--- a/src/lib/gssapi/krb5/gssapiP_krb5.h
++++ b/src/lib/gssapi/krb5/gssapiP_krb5.h
+@@ -1396,6 +1396,11 @@ OM_uint32 KRB5_CALLCONV
+ iakerb_gss_export_sec_context(OM_uint32 *minor_status,
+                               gss_ctx_id_t *context_handle,
+                               gss_buffer_t interprocess_token);
++
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_import_sec_context(OM_uint32 *minor_status,
++                              const gss_buffer_t interprocess_token,
++                              gss_ctx_id_t *context_handle);
+ #endif /* LEAN_CLIENT */
+ 
+ OM_uint32 KRB5_CALLCONV
+diff --git a/src/lib/gssapi/krb5/gssapi_krb5.c b/src/lib/gssapi/krb5/gssapi_krb5.c
+index 9a23656..d7ba279 100644
+--- a/src/lib/gssapi/krb5/gssapi_krb5.c
++++ b/src/lib/gssapi/krb5/gssapi_krb5.c
+@@ -945,7 +945,7 @@ static struct gss_config iakerb_mechanism = {
+     NULL,
+ #else
+     iakerb_gss_export_sec_context,
+-    NULL,
++    iakerb_gss_import_sec_context,
+ #endif
+     krb5_gss_inquire_cred_by_mech,
+     krb5_gss_inquire_names_for_mech,
+diff --git a/src/lib/gssapi/krb5/iakerb.c b/src/lib/gssapi/krb5/iakerb.c
+index 4662bd9..48beaee 100644
+--- a/src/lib/gssapi/krb5/iakerb.c
++++ b/src/lib/gssapi/krb5/iakerb.c
+@@ -1061,7 +1061,7 @@ iakerb_gss_export_sec_context(OM_uint32 *minor_status,
+                               gss_buffer_t interprocess_token)
+ {
+     OM_uint32 maj;
+-    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle;
++    iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)*context_handle;
+ 
+     /* We don't currently support exporting partially established contexts. */
+     if (!ctx->established)
+@@ -1076,13 +1076,41 @@ iakerb_gss_export_sec_context(OM_uint32 *minor_status,
+     return maj;
+ }
+ 
+-/*
+- * Until we implement partial context exports, there are no SPNEGO exported
+- * context tokens, only tokens for the underlying krb5 context.  So we do not
+- * need to implement an iakerb_gss_import_sec_context() yet; it would be
+- * unreachable except via a manually constructed token.
+- */
++OM_uint32 KRB5_CALLCONV
++iakerb_gss_import_sec_context(OM_uint32 *minor_status,
++                              gss_buffer_t interprocess_token,
++                              gss_ctx_id_t *context_handle)
++{
++    OM_uint32 maj, tmpmin;
++    krb5_error_code code;
++    gss_ctx_id_t gssc;
++    krb5_gss_ctx_id_t kctx;
++    iakerb_ctx_id_t ctx;
++
++    maj = krb5_gss_import_sec_context(minor_status, interprocess_token, &gssc);
++    if (maj != GSS_S_COMPLETE)
++        return maj;
++    kctx = (krb5_gss_ctx_id_t)gssc;
++
++    if (!kctx->established) {
++        /* We don't currently support importing partially established
++         * contexts. */
++        krb5_gss_delete_sec_context(&tmpmin, &gssc, GSS_C_NO_BUFFER);
++        return GSS_S_FAILURE;
++    }
+ 
++    code = iakerb_alloc_context(&ctx, kctx->initiate);
++    if (code != 0) {
++        krb5_gss_delete_sec_context(&tmpmin, &gssc, GSS_C_NO_BUFFER);
++        *minor_status = code;
++        return GSS_S_FAILURE;
++    }
++
++    ctx->gssc = gssc;
++    ctx->established = 1;
++    *context_handle = (gss_ctx_id_t)ctx;
++    return GSS_S_COMPLETE;
++}
+ #endif /* LEAN_CLIENT */
+ 
+ OM_uint32 KRB5_CALLCONV
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-SPNEGO-context-aliasing-bugs-CVE-2015-2695.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-SPNEGO-context-aliasing-bugs-CVE-2015-2695.patch
new file mode 100644
index 0000000..227e6c6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-SPNEGO-context-aliasing-bugs-CVE-2015-2695.patch
@@ -0,0 +1,572 @@
+From 884913e807414a1e06245918dea71243c5fdd0e6 Mon Sep 17 00:00:00 2001
+From: Nicolas Williams <nico@twosigma.com>
+Date: Mon, 14 Sep 2015 12:27:52 -0400
+Subject: [PATCH 1/4] Fix SPNEGO context aliasing bugs [CVE-2015-2695]
+
+The SPNEGO mechanism currently replaces its context handle with the
+mechanism context handle upon establishment, under the assumption that
+most GSS functions are only called after context establishment.  This
+assumption is incorrect, and can lead to aliasing violations for some
+programs.  Maintain the SPNEGO context structure after context
+establishment and refer to it in all GSS methods.  Add initiate and
+opened flags to the SPNEGO context structure for use in
+gss_inquire_context() prior to context establishment.
+
+CVE-2015-2695:
+
+In MIT krb5 1.5 and later, applications which call
+gss_inquire_context() on a partially-established SPNEGO context can
+cause the GSS-API library to read from a pointer using the wrong type,
+generally causing a process crash.  This bug may go unnoticed, because
+the most common SPNEGO authentication scenario establishes the context
+after just one call to gss_accept_sec_context().  Java server
+applications using the native JGSS provider are vulnerable to this
+bug.  A carefully crafted SPNEGO packet might allow the
+gss_inquire_context() call to succeed with attacker-determined
+results, but applications should not make access control decisions
+based on gss_inquire_context() results prior to context establishment.
+
+    CVSSv2 Vector: AV:N/AC:M/Au:N/C:N/I:N/A:C/E:POC/RL:OF/RC:C
+
+[ghudson@mit.edu: several bugfixes, style changes, and edge-case
+behavior changes; commit message and CVE description]
+
+ticket: 8244
+target_version: 1.14
+tags: pullup
+
+Backport upstream commit:
+https://github.com/krb5/krb5/commit/b51b33f2bc5d1497ddf5bd107f791c101695000d
+
+Upstream-Status: Backport
+---
+ src/lib/gssapi/spnego/gssapiP_spnego.h |   2 +
+ src/lib/gssapi/spnego/spnego_mech.c    | 254 ++++++++++++++++++++++++---------
+ 2 files changed, 192 insertions(+), 64 deletions(-)
+
+diff --git a/src/lib/gssapi/spnego/gssapiP_spnego.h b/src/lib/gssapi/spnego/gssapiP_spnego.h
+index bc23f56..8e05736 100644
+--- a/src/lib/gssapi/spnego/gssapiP_spnego.h
++++ b/src/lib/gssapi/spnego/gssapiP_spnego.h
+@@ -102,6 +102,8 @@ typedef struct {
+ 	int firstpass;
+ 	int mech_complete;
+ 	int nego_done;
++	int initiate;
++	int opened;
+ 	OM_uint32 ctx_flags;
+ 	gss_name_t internal_name;
+ 	gss_OID actual_mech;
+diff --git a/src/lib/gssapi/spnego/spnego_mech.c b/src/lib/gssapi/spnego/spnego_mech.c
+index f9248ab..3423f22 100644
+--- a/src/lib/gssapi/spnego/spnego_mech.c
++++ b/src/lib/gssapi/spnego/spnego_mech.c
+@@ -101,7 +101,7 @@ static OM_uint32 get_negotiable_mechs(OM_uint32 *, spnego_gss_cred_id_t,
+ 				      gss_cred_usage_t, gss_OID_set *);
+ static void release_spnego_ctx(spnego_gss_ctx_id_t *);
+ static void check_spnego_options(spnego_gss_ctx_id_t);
+-static spnego_gss_ctx_id_t create_spnego_ctx(void);
++static spnego_gss_ctx_id_t create_spnego_ctx(int);
+ static int put_mech_set(gss_OID_set mechSet, gss_buffer_t buf);
+ static int put_input_token(unsigned char **, gss_buffer_t, unsigned int);
+ static int put_mech_oid(unsigned char **, gss_OID_const, unsigned int);
+@@ -439,7 +439,7 @@ check_spnego_options(spnego_gss_ctx_id_t spnego_ctx)
+ }
+ 
+ static spnego_gss_ctx_id_t
+-create_spnego_ctx(void)
++create_spnego_ctx(int initiate)
+ {
+ 	spnego_gss_ctx_id_t spnego_ctx = NULL;
+ 	spnego_ctx = (spnego_gss_ctx_id_t)
+@@ -462,6 +462,8 @@ create_spnego_ctx(void)
+ 	spnego_ctx->mic_rcvd = 0;
+ 	spnego_ctx->mech_complete = 0;
+ 	spnego_ctx->nego_done = 0;
++	spnego_ctx->opened = 0;
++	spnego_ctx->initiate = initiate;
+ 	spnego_ctx->internal_name = GSS_C_NO_NAME;
+ 	spnego_ctx->actual_mech = GSS_C_NO_OID;
+ 
+@@ -627,7 +629,7 @@ init_ctx_new(OM_uint32 *minor_status,
+ 	OM_uint32 ret;
+ 	spnego_gss_ctx_id_t sc = NULL;
+ 
+-	sc = create_spnego_ctx();
++	sc = create_spnego_ctx(1);
+ 	if (sc == NULL)
+ 		return GSS_S_FAILURE;
+ 
+@@ -644,10 +646,7 @@ init_ctx_new(OM_uint32 *minor_status,
+ 		ret = GSS_S_FAILURE;
+ 		goto cleanup;
+ 	}
+-	/*
+-	 * The actual context is not yet determined, set the output
+-	 * context handle to refer to the spnego context itself.
+-	 */
++
+ 	sc->ctx_handle = GSS_C_NO_CONTEXT;
+ 	*ctx = (gss_ctx_id_t)sc;
+ 	sc = NULL;
+@@ -1088,16 +1087,11 @@ cleanup:
+ 	}
+ 	gss_release_buffer(&tmpmin, &mechtok_out);
+ 	if (ret == GSS_S_COMPLETE) {
+-		/*
+-		 * Now, switch the output context to refer to the
+-		 * negotiated mechanism's context.
+-		 */
+-		*context_handle = (gss_ctx_id_t)spnego_ctx->ctx_handle;
++		spnego_ctx->opened = 1;
+ 		if (actual_mech != NULL)
+ 			*actual_mech = spnego_ctx->actual_mech;
+ 		if (ret_flags != NULL)
+ 			*ret_flags = spnego_ctx->ctx_flags;
+-		release_spnego_ctx(&spnego_ctx);
+ 	} else if (ret != GSS_S_CONTINUE_NEEDED) {
+ 		if (spnego_ctx != NULL) {
+ 			gss_delete_sec_context(&tmpmin,
+@@ -1341,7 +1335,7 @@ acc_ctx_hints(OM_uint32 *minor_status,
+ 	if (ret != GSS_S_COMPLETE)
+ 		goto cleanup;
+ 
+-	sc = create_spnego_ctx();
++	sc = create_spnego_ctx(0);
+ 	if (sc == NULL) {
+ 		ret = GSS_S_FAILURE;
+ 		goto cleanup;
+@@ -1423,7 +1417,7 @@ acc_ctx_new(OM_uint32 *minor_status,
+ 		gss_release_buffer(&tmpmin, &sc->DER_mechTypes);
+ 		assert(mech_wanted != GSS_C_NO_OID);
+ 	} else
+-		sc = create_spnego_ctx();
++		sc = create_spnego_ctx(0);
+ 	if (sc == NULL) {
+ 		ret = GSS_S_FAILURE;
+ 		*return_token = NO_TOKEN_SEND;
+@@ -1806,13 +1800,12 @@ cleanup:
+ 			ret = GSS_S_FAILURE;
+ 	}
+ 	if (ret == GSS_S_COMPLETE) {
+-		*context_handle = (gss_ctx_id_t)sc->ctx_handle;
++		sc->opened = 1;
+ 		if (sc->internal_name != GSS_C_NO_NAME &&
+ 		    src_name != NULL) {
+ 			*src_name = sc->internal_name;
+ 			sc->internal_name = GSS_C_NO_NAME;
+ 		}
+-		release_spnego_ctx(&sc);
+ 	} else if (ret != GSS_S_CONTINUE_NEEDED) {
+ 		if (sc != NULL) {
+ 			gss_delete_sec_context(&tmpmin, &sc->ctx_handle,
+@@ -2125,8 +2118,13 @@ spnego_gss_unwrap(
+ 		gss_qop_t *qop_state)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_unwrap(minor_status,
+-			context_handle,
++			sc->ctx_handle,
+ 			input_message_buffer,
+ 			output_message_buffer,
+ 			conf_state,
+@@ -2146,8 +2144,13 @@ spnego_gss_wrap(
+ 		gss_buffer_t output_message_buffer)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_wrap(minor_status,
+-		    context_handle,
++		    sc->ctx_handle,
+ 		    conf_req_flag,
+ 		    qop_req,
+ 		    input_message_buffer,
+@@ -2164,8 +2167,14 @@ spnego_gss_process_context_token(
+ 				const gss_buffer_t token_buffer)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	/* SPNEGO doesn't have its own context tokens. */
++	if (!sc->opened)
++		return (GSS_S_DEFECTIVE_TOKEN);
++
+ 	ret = gss_process_context_token(minor_status,
+-					context_handle,
++					sc->ctx_handle,
+ 					token_buffer);
+ 
+ 	return (ret);
+@@ -2189,19 +2198,9 @@ spnego_gss_delete_sec_context(
+ 	if (*ctx == NULL)
+ 		return (GSS_S_COMPLETE);
+ 
+-	/*
+-	 * If this is still an SPNEGO mech, release it locally.
+-	 */
+-	if ((*ctx)->magic_num == SPNEGO_MAGIC_ID) {
+-		(void) gss_delete_sec_context(minor_status,
+-				    &(*ctx)->ctx_handle,
+-				    output_token);
+-		(void) release_spnego_ctx(ctx);
+-	} else {
+-		ret = gss_delete_sec_context(minor_status,
+-				    context_handle,
+-				    output_token);
+-	}
++	(void) gss_delete_sec_context(minor_status, &(*ctx)->ctx_handle,
++				      output_token);
++	(void) release_spnego_ctx(ctx);
+ 
+ 	return (ret);
+ }
+@@ -2213,8 +2212,13 @@ spnego_gss_context_time(
+ 			OM_uint32	*time_rec)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_context_time(minor_status,
+-			    context_handle,
++			    sc->ctx_handle,
+ 			    time_rec);
+ 	return (ret);
+ }
+@@ -2226,9 +2230,20 @@ spnego_gss_export_sec_context(
+ 			    gss_buffer_t interprocess_token)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = *(spnego_gss_ctx_id_t *)context_handle;
++
++	/* We don't currently support exporting partially established
++	 * contexts. */
++	if (!sc->opened)
++		return GSS_S_UNAVAILABLE;
++
+ 	ret = gss_export_sec_context(minor_status,
+-				    context_handle,
++				    &sc->ctx_handle,
+ 				    interprocess_token);
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT) {
++		release_spnego_ctx(&sc);
++		*context_handle = GSS_C_NO_CONTEXT;
++	}
+ 	return (ret);
+ }
+ 
+@@ -2238,11 +2253,12 @@ spnego_gss_import_sec_context(
+ 	const gss_buffer_t	interprocess_token,
+ 	gss_ctx_id_t		*context_handle)
+ {
+-	OM_uint32 ret;
+-	ret = gss_import_sec_context(minor_status,
+-				    interprocess_token,
+-				    context_handle);
+-	return (ret);
++	/*
++	 * Until we implement partial context exports, there are no SPNEGO
++	 * exported context tokens, only tokens for underlying mechs.  So just
++	 * return an error for now.
++	 */
++	return GSS_S_UNAVAILABLE;
+ }
+ #endif /* LEAN_CLIENT */
+ 
+@@ -2259,16 +2275,48 @@ spnego_gss_inquire_context(
+ 			int		*opened)
+ {
+ 	OM_uint32 ret = GSS_S_COMPLETE;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (src_name != NULL)
++		*src_name = GSS_C_NO_NAME;
++	if (targ_name != NULL)
++		*targ_name = GSS_C_NO_NAME;
++	if (lifetime_rec != NULL)
++		*lifetime_rec = 0;
++	if (mech_type != NULL)
++		*mech_type = (gss_OID)gss_mech_spnego;
++	if (ctx_flags != NULL)
++		*ctx_flags = 0;
++	if (locally_initiated != NULL)
++		*locally_initiated = sc->initiate;
++	if (opened != NULL)
++		*opened = sc->opened;
++
++	if (sc->ctx_handle != GSS_C_NO_CONTEXT) {
++		ret = gss_inquire_context(minor_status, sc->ctx_handle,
++					  src_name, targ_name, lifetime_rec,
++					  mech_type, ctx_flags, NULL, NULL);
++	}
+ 
+-	ret = gss_inquire_context(minor_status,
+-				context_handle,
+-				src_name,
+-				targ_name,
+-				lifetime_rec,
+-				mech_type,
+-				ctx_flags,
+-				locally_initiated,
+-				opened);
++	if (!sc->opened) {
++		/*
++		 * We are still doing SPNEGO negotiation, so report SPNEGO as
++		 * the OID.  After negotiation is complete we will report the
++		 * underlying mechanism OID.
++		 */
++		if (mech_type != NULL)
++			*mech_type = (gss_OID)gss_mech_spnego;
++
++		/*
++		 * Remove flags we don't support with partially-established
++		 * contexts.  (Change this to keep GSS_C_TRANS_FLAG if we add
++		 * support for exporting partial SPNEGO contexts.)
++		 */
++		if (ctx_flags != NULL) {
++			*ctx_flags &= ~GSS_C_PROT_READY_FLAG;
++			*ctx_flags &= ~GSS_C_TRANS_FLAG;
++		}
++	}
+ 
+ 	return (ret);
+ }
+@@ -2283,8 +2331,13 @@ spnego_gss_wrap_size_limit(
+ 	OM_uint32	*max_input_size)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_wrap_size_limit(minor_status,
+-				context_handle,
++				sc->ctx_handle,
+ 				conf_req_flag,
+ 				qop_req,
+ 				req_output_size,
+@@ -2301,8 +2354,13 @@ spnego_gss_get_mic(
+ 		gss_buffer_t message_token)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_get_mic(minor_status,
+-		    context_handle,
++		    sc->ctx_handle,
+ 		    qop_req,
+ 		    message_buffer,
+ 		    message_token);
+@@ -2318,8 +2376,13 @@ spnego_gss_verify_mic(
+ 		gss_qop_t *qop_state)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_verify_mic(minor_status,
+-			    context_handle,
++			    sc->ctx_handle,
+ 			    msg_buffer,
+ 			    token_buffer,
+ 			    qop_state);
+@@ -2334,8 +2397,14 @@ spnego_gss_inquire_sec_context_by_oid(
+ 		gss_buffer_set_t *data_set)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	/* There are no SPNEGO-specific OIDs for this function. */
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_UNAVAILABLE);
++
+ 	ret = gss_inquire_sec_context_by_oid(minor_status,
+-			    context_handle,
++			    sc->ctx_handle,
+ 			    desired_object,
+ 			    data_set);
+ 	return (ret);
+@@ -2404,8 +2473,15 @@ spnego_gss_set_sec_context_option(
+ 		const gss_buffer_t value)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)*context_handle;
++
++	/* There are no SPNEGO-specific OIDs for this function, and we cannot
++	 * construct an empty SPNEGO context with it. */
++	if (sc == NULL || sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_UNAVAILABLE);
++
+ 	ret = gss_set_sec_context_option(minor_status,
+-			    context_handle,
++			    &sc->ctx_handle,
+ 			    desired_object,
+ 			    value);
+ 	return (ret);
+@@ -2422,8 +2498,13 @@ spnego_gss_wrap_aead(OM_uint32 *minor_status,
+ 		     gss_buffer_t output_message_buffer)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_wrap_aead(minor_status,
+-			    context_handle,
++			    sc->ctx_handle,
+ 			    conf_req_flag,
+ 			    qop_req,
+ 			    input_assoc_buffer,
+@@ -2444,8 +2525,13 @@ spnego_gss_unwrap_aead(OM_uint32 *minor_status,
+ 		       gss_qop_t *qop_state)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_unwrap_aead(minor_status,
+-			      context_handle,
++			      sc->ctx_handle,
+ 			      input_message_buffer,
+ 			      input_assoc_buffer,
+ 			      output_payload_buffer,
+@@ -2464,8 +2550,13 @@ spnego_gss_wrap_iov(OM_uint32 *minor_status,
+ 		    int iov_count)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_wrap_iov(minor_status,
+-			   context_handle,
++			   sc->ctx_handle,
+ 			   conf_req_flag,
+ 			   qop_req,
+ 			   conf_state,
+@@ -2483,8 +2574,13 @@ spnego_gss_unwrap_iov(OM_uint32 *minor_status,
+ 		      int iov_count)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_unwrap_iov(minor_status,
+-			     context_handle,
++			     sc->ctx_handle,
+ 			     conf_state,
+ 			     qop_state,
+ 			     iov,
+@@ -2502,8 +2598,13 @@ spnego_gss_wrap_iov_length(OM_uint32 *minor_status,
+ 			   int iov_count)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_wrap_iov_length(minor_status,
+-				  context_handle,
++				  sc->ctx_handle,
+ 				  conf_req_flag,
+ 				  qop_req,
+ 				  conf_state,
+@@ -2520,8 +2621,13 @@ spnego_gss_complete_auth_token(
+ 		gss_buffer_t input_message_buffer)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_UNAVAILABLE);
++
+ 	ret = gss_complete_auth_token(minor_status,
+-				      context_handle,
++				      sc->ctx_handle,
+ 				      input_message_buffer);
+ 	return (ret);
+ }
+@@ -2773,8 +2879,13 @@ spnego_gss_pseudo_random(OM_uint32 *minor_status,
+ 			 gss_buffer_t prf_out)
+ {
+ 	OM_uint32 ret;
++	spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context;
++
++	if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++		return (GSS_S_NO_CONTEXT);
++
+ 	ret = gss_pseudo_random(minor_status,
+-				context,
++				sc->ctx_handle,
+ 				prf_key,
+ 				prf_in,
+ 				desired_output_len,
+@@ -2915,7 +3026,12 @@ spnego_gss_get_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
+ 		       gss_qop_t qop_req, gss_iov_buffer_desc *iov,
+ 		       int iov_count)
+ {
+-    return gss_get_mic_iov(minor_status, context_handle, qop_req, iov,
++    spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++    if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++	    return (GSS_S_NO_CONTEXT);
++
++    return gss_get_mic_iov(minor_status, sc->ctx_handle, qop_req, iov,
+ 			   iov_count);
+ }
+ 
+@@ -2924,7 +3040,12 @@ spnego_gss_verify_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
+ 			  gss_qop_t *qop_state, gss_iov_buffer_desc *iov,
+ 			  int iov_count)
+ {
+-    return gss_verify_mic_iov(minor_status, context_handle, qop_state, iov,
++    spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++    if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++	    return (GSS_S_NO_CONTEXT);
++
++    return gss_verify_mic_iov(minor_status, sc->ctx_handle, qop_state, iov,
+ 			      iov_count);
+ }
+ 
+@@ -2933,7 +3054,12 @@ spnego_gss_get_mic_iov_length(OM_uint32 *minor_status,
+ 			      gss_ctx_id_t context_handle, gss_qop_t qop_req,
+ 			      gss_iov_buffer_desc *iov, int iov_count)
+ {
+-    return gss_get_mic_iov_length(minor_status, context_handle, qop_req, iov,
++    spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle;
++
++    if (sc->ctx_handle == GSS_C_NO_CONTEXT)
++	    return (GSS_S_NO_CONTEXT);
++
++    return gss_get_mic_iov_length(minor_status, sc->ctx_handle, qop_req, iov,
+ 				  iov_count);
+ }
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-build_principal-memory-bug-CVE-2015-2697.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-build_principal-memory-bug-CVE-2015-2697.patch
new file mode 100644
index 0000000..9b0c18b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/Fix-build_principal-memory-bug-CVE-2015-2697.patch
@@ -0,0 +1,58 @@
+From 9cb63711e63042f22da914ba039c4537b22e8fb0 Mon Sep 17 00:00:00 2001
+From: Greg Hudson <ghudson@mit.edu>
+Date: Fri, 25 Sep 2015 12:51:47 -0400
+Subject: [PATCH 3/4] Fix build_principal memory bug [CVE-2015-2697]
+
+In build_principal_va(), use k5memdup0() instead of strdup() to make a
+copy of the realm, to ensure that we allocate the correct number of
+bytes and do not read past the end of the input string.  This bug
+affects krb5_build_principal(), krb5_build_principal_va(), and
+krb5_build_principal_alloc_va().  krb5_build_principal_ext() is not
+affected.
+
+CVE-2015-2697:
+
+In MIT krb5 1.7 and later, an authenticated attacker may be able to
+cause a KDC to crash using a TGS request with a large realm field
+beginning with a null byte.  If the KDC attempts to find a referral to
+answer the request, it constructs a principal name for lookup using
+krb5_build_principal() with the requested realm.  Due to a bug in this
+function, the null byte causes only one byte be allocated for the
+realm field of the constructed principal, far less than its length.
+Subsequent operations on the lookup principal may cause a read beyond
+the end of the mapped memory region, causing the KDC process to crash.
+
+CVSSv2: AV:N/AC:L/Au:S/C:N/I:N/A:C/E:POC/RL:OF/RC:C
+
+ticket: 8252 (new)
+target_version: 1.14
+tags: pullup
+
+Backport upstream commit:
+https://github.com/krb5/krb5/commit/f0c094a1b745d91ef2f9a4eae2149aac026a5789
+
+Upstream-Status: Backport
+---
+ src/lib/krb5/krb/bld_princ.c | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/src/lib/krb5/krb/bld_princ.c b/src/lib/krb5/krb/bld_princ.c
+index ab6fed8..8604268 100644
+--- a/src/lib/krb5/krb/bld_princ.c
++++ b/src/lib/krb5/krb/bld_princ.c
+@@ -40,10 +40,8 @@ build_principal_va(krb5_context context, krb5_principal princ,
+     data = malloc(size * sizeof(krb5_data));
+     if (!data) { retval = ENOMEM; }
+ 
+-    if (!retval) {
+-        r = strdup(realm);
+-        if (!r) { retval = ENOMEM; }
+-    }
++    if (!retval)
++        r = k5memdup0(realm, rlen, &retval);
+ 
+     while (!retval && (component = va_arg(ap, char *))) {
+         if (count == size) {
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/crosscompile_nm.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/crosscompile_nm.patch
new file mode 100644
index 0000000..d3e6937
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/crosscompile_nm.patch
@@ -0,0 +1,29 @@
+Modifies export-check.pl to use look for $ENV{'NM'} before
+defaulting to using 'nm'
+
+Upstream-Status: Pending
+
+Signed-off-by: Amy Fong <amy.fong@windriver.com>
+---
+
+ export-check.pl |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+Index: src/util/export-check.pl
+===================================================================
+--- src.orig/util/export-check.pl
++++ src/util/export-check.pl
+@@ -38,7 +38,12 @@
+ my($exfile, $libfile) = @ARGV;
+ 
+ @missing = ();
+-open NM, "nm -Dg --defined-only $libfile |" || die "can't run nm on $libfile: $!";
++if (defined($ENV{'NM'})) {
++	$nm = $ENV{'NM'};
++} else {
++	$nm = "nm";
++}
++open NM, "$nm -Dg --defined-only $libfile |" || die "can't run nm on $libfile: $!";
+ open EXPORT, "< $exfile" || die "can't read $exfile: $!";
+ 
+ @export = <EXPORT>;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/debian-suppress-usr-lib-in-krb5-config.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/debian-suppress-usr-lib-in-krb5-config.patch
new file mode 100644
index 0000000..f0182ee
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/debian-suppress-usr-lib-in-krb5-config.patch
@@ -0,0 +1,48 @@
+Subject: [PATCH] debian: suppress /usr/lib in krb5-config
+
+Upstream-Status: Pending
+
+Handel multi-arch suppressions
+
+The patch is from debian.
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ src/build-tools/krb5-config.in |   14 +++++++++-----
+ 1 files changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/src/build-tools/krb5-config.in b/src/build-tools/krb5-config.in
+index f6184da..637bad7 100755
+--- a/src/build-tools/krb5-config.in
++++ b/src/build-tools/krb5-config.in
+@@ -138,6 +138,7 @@ if test -n "$do_help"; then
+     echo "        [--defktname]     Show built-in default keytab name"
+     echo "        [--defcktname]    Show built-in default client keytab name"
+     echo "        [--cflags]        Compile time CFLAGS"
++    echo "        [--deps]          Include dependent libraries"
+     echo "        [--libs]          List libraries required to link [LIBRARIES]"
+     echo "Libraries:"
+     echo "        krb5              Kerberos 5 application"
+@@ -209,11 +210,14 @@ fi
+ 
+ if test -n "$do_libs"; then
+     # Assumes /usr/lib is the standard library directory everywhere...
+-    if test "$libdir" = /usr/lib; then
+-	libdirarg=
+-    else
+-	libdirarg="-L$libdir"
+-    fi
++    case $libdir in
++	/usr/lib*)
++	    libdirarg=
++	    ;;
++	*)
++	    libdirarg="-L$libdir"
++	    ;;
++    esac
+     # Ugly gross hack for our build tree
+     lib_flags=`echo $CC_LINK | sed -e 's/\$(CC)//' \
+ 	    -e 's/\$(PURE)//' \
+-- 
+1.7.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-admin-server b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-admin-server
new file mode 100644
index 0000000..2835929
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-admin-server
@@ -0,0 +1,6 @@
+# Automatically generated.  If you change anything in this file other than the
+# values of RUN_KADMIND or DAEMON_ARGS, first run dpkg-reconfigure
+# krb5-admin-server and disable managing the kadmin configuration with
+# debconf.  Otherwise, changes will be overwritten.
+
+RUN_KADMIND=true
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-kdc b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-kdc
new file mode 100644
index 0000000..310bfcf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-kdc
@@ -0,0 +1,5 @@
+# Automatically generated.  Only the value of DAEMON_ARGS will be preserved.
+# If you change anything in this file other than DAEMON_ARGS, first run
+# dpkg-reconfigure krb5-kdc and disable managing the KDC configuration with
+# debconf.  Otherwise, changes will be overwritten.
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/init.d/krb5-admin-server b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/init.d/krb5-admin-server
new file mode 100755
index 0000000..79238d4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/init.d/krb5-admin-server
@@ -0,0 +1,140 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:             krb5-admin-server
+# Required-Start:       $local_fs $remote_fs $network $syslog
+# Required-Stop:        $local_fs $remote_fs $network $syslog
+# Should-Start:         krb5-kdc
+# Should-Stop:          krb5-kdc
+# Default-Start:        2 3 4 5
+# Default-Stop:         0 1 6
+# Short-Description:    MIT Kerberos KDC administrative daemon
+# Description:          Starts, stops, or restarts the MIT Kerberos KDC
+#                       administrative daemon (kadmind).  This daemon answers
+#                       requests from kadmin clients and allows administrators
+#                       to create, delete, and modify principals in the KDC
+#                       database.
+### END INIT INFO
+
+# Author: Sam Hartman <hartmans@mit.edu>
+# Author: Russ Allbery <rra@debian.org>
+#
+# Based on the /etc/init.d/skeleton template as found in initscripts version
+# 2.86.ds1-15.
+
+# June, 2012: Adopted for yocto <amy.fong@windriver.com>
+
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Kerberos administrative servers"
+NAME=kadmind
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS=""
+SCRIPTNAME=/etc/init.d/krb5-admin-server
+DEFAULT=/etc/default/krb5-admin-server
+
+# Exit if the package is not installed.
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration if it is present.
+[ -r "$DEFAULT" ] && . "$DEFAULT"
+
+# Get the setting of VERBOSE and other rcS variables.
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+. /etc/init.d/functions
+
+ADMIN_SERVER_LOG=/var/log/kadmind.log
+[ -f $ADMIN_SERVER_LOG ] && (test ! -x /sbin/restorecon \
+    || /sbin/restorecon -F $ADMIN_SERVER_LOG)
+
+# Return
+#   0 if daemon has been started
+#   1 if daemon was already running
+#   2 if daemon could not be started
+do_start()
+{
+    start-stop-daemon --start --quiet --startas $DAEMON --name $NAME --test \
+        > /dev/null || return 1
+    start-stop-daemon --start --quiet --startas $DAEMON --name $NAME \
+        -- $DAEMON_ARGS || return 2
+}
+
+# Return
+#   0 if daemon has been stopped
+#   1 if daemon was already stopped
+#   2 if daemon could not be stopped
+#   other if a failure occurred
+do_stop()
+{
+    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME
+    RETVAL="$?"
+    [ "$RETVAL" = 2 ] && return 2
+    return "$RETVAL"
+}
+
+
+case "$1" in
+  start)
+    if [ "$RUN_KADMIND" = false ] ; then
+        if [ "$VERBOSE" != no ] ; then
+            echo "Not starting $DESC per configuration"
+        fi
+        exit 0
+    fi
+    [ "$VERBOSE" != no ] && echo "Starting $DESC" "$NAME"
+    do_start
+    case "$?" in
+      0|1) [ "$VERBOSE" != no ] && echo 0 ;;
+      2)   [ "$VERBOSE" != no ] && echo 1 ;;
+    esac
+    ;;
+
+  stop)
+    [ "$VERBOSE" != no ] && echo "Stopping $DESC" "$NAME"
+    do_stop
+    case "$?" in
+      0|1) [ "$VERBOSE" != no ] && echo 0 ;;
+      2)   [ "$VERBOSE" != no ] && echo 1 ;;
+    esac
+    ;;
+
+  restart|force-reload)
+    if [ "$RUN_KADMIND" = false ] ; then
+        if [ "$VERBOSE" != no ] ; then
+            echo "Not restarting $DESC per configuration"
+        fi
+        exit 0
+    fi
+    echo "Restarting $DESC" "$NAME"
+    do_stop
+    case "$?" in
+      0|1)
+        do_start
+        case "$?" in
+          0) [ "$VERBOSE" != no ] && echo 0 ;;
+          *) [ "$VERBOSE" != no ] && echo 1 ;;
+        esac
+        ;;
+      *)
+        echo 1
+        ;;
+    esac
+    ;;
+
+  status)
+    pidofproc "$DAEMON" >/dev/null
+    status=$?
+    if [ $status -eq 0 ]; then
+        echo "$NAME is running."
+    else
+        echo "$NAME is not running."
+    fi
+    exit $status
+    ;;
+
+  *)
+    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
+    exit 3
+    ;;
+esac
+
+:
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/init.d/krb5-kdc b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/init.d/krb5-kdc
new file mode 100755
index 0000000..865d1b9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/etc/init.d/krb5-kdc
@@ -0,0 +1,133 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:             krb5-kdc
+# Required-Start:       $local_fs $remote_fs $network $syslog
+# Required-Stop:        $local_fs $remote_fs $network $syslog
+# X-Start-Before: $x-display-manager
+# Default-Start:        2 3 4 5
+# Default-Stop:         0 1 6
+# Short-Description:    MIT Kerberos KDC
+# Description:          Starts, stops, or restarts the MIT Kerberos KDC.  This
+#                       daemon responds to ticket requests from Kerberos
+#                       clients.
+### END INIT INFO
+
+# Author: Sam Hartman <hartmans@mit.edu>
+# Author: Russ Allbery <rra@debian.org>
+#
+# Based on the /etc/init.d/skeleton template as found in initscripts version
+# 2.86.ds1-15.
+
+# June, 2012: Adopted for yocto <amy.fong@windriver.com>
+
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+DESC="Kerberos KDC"
+NAME=krb5kdc
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS=""
+SCRIPTNAME=/etc/init.d/krb5-kdc
+
+# Exit if the package is not installed.
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration if it is present.
+[ -r /etc/default/krb5-kdc ] && . /etc/default/krb5-kdc
+
+# Get the setting of VERBOSE and other rcS variables.
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+. /etc/init.d/functions
+
+# Return
+#   0 if daemon has been started
+#   1 if daemon was already running
+#   2 if daemon could not be started
+do_start_kdc()
+{
+    start-stop-daemon --start --quiet --startas $DAEMON --name $NAME --test \
+        > /dev/null || return 1
+    start-stop-daemon --start --quiet --startas $DAEMON --name $NAME \
+        -- $DAEMON_ARGS || return 2
+}
+
+
+# Return
+#   0 if daemon has been stopped
+#   1 if daemon was already stopped
+#   2 if daemon could not be stopped
+#   other if a failure occurred
+do_stop_kdc()
+{
+    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME
+    RETVAL="$?"
+    [ "$RETVAL" = 2 ] && return 2
+    return "$RETVAL"
+}
+
+
+case "$1" in
+  start)
+    [ "$VERBOSE" != no ] && echo "Starting $DESC" "$NAME"
+    do_start_kdc
+    case "$?" in
+      0|1)
+            [ "$VERBOSE" != no ] && echo 0
+        ;;
+      2)
+        [ "$VERBOSE" != no ] && echo 1
+        ;;
+    esac
+    ;;
+
+  stop)
+    [ "$VERBOSE" != no ] && echo "Stopping $DESC" "$NAME"
+    do_stop_kdc
+    case "$?" in
+      0|1)
+        [ "$VERBOSE" != no ] && echo "krb524d"
+        ;;
+      2)
+        [ "$VERBOSE" != no ] && echo 1
+        ;;
+    esac
+    ;;
+
+  restart|force-reload)
+    echo "Restarting $DESC" "$NAME"
+    do_stop_kdc
+    case "$?" in
+      0|1)
+        do_start_kdc
+        case "$?" in
+          0)
+	  echo 0
+	  ;;
+          1|2)
+            echo 1
+            ;;
+        esac
+        ;;
+      *)
+        echo 1
+        ;;
+    esac
+    ;;
+
+  status)
+    pidofproc "$DAEMON" >/dev/null
+    status=$?
+    if [ $status -eq 0 ]; then
+        echo "$NAME is running."
+    else
+        echo "$NAME is not running."
+    fi
+    exit $status
+    ;;
+
+  *)
+    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
+    exit 3
+    ;;
+esac
+
+:
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/krb5-CVE-2016-3119.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/krb5-CVE-2016-3119.patch
new file mode 100644
index 0000000..67fefed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/krb5-CVE-2016-3119.patch
@@ -0,0 +1,36 @@
+Subject: kerb: Fix LDAP null deref on empty arg [CVE-2016-3119]
+From: Greg Hudson
+
+In the LDAP KDB module's process_db_args(), strtok_r() may return NULL
+if there is an empty string in the db_args array.  Check for this case
+and avoid dereferencing a null pointer.
+
+CVE-2016-3119:
+
+In MIT krb5 1.6 and later, an authenticated attacker with permission
+to modify a principal entry can cause kadmind to dereference a null
+pointer by supplying an empty DB argument to the modify_principal
+command, if kadmind is configured to use the LDAP KDB module.
+
+    CVSSv2 Vector: AV:N/AC:H/Au:S/C:N/I:N/A:C/E:H/RL:OF/RC:ND
+
+ticket: 8383 (new)
+target_version: 1.14-next
+target_version: 1.13-next
+tags: pullup
+
+Upstream-Status: Backport
+
+Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
+Index: krb5-1.13.2/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
+===================================================================
+--- krb5-1.13.2.orig/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c	2015-05-09 07:27:02.000000000 +0800
++++ krb5-1.13.2/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c	2016-04-11 15:17:12.874140518 +0800
+@@ -267,6 +267,7 @@
+     if (db_args) {
+         for (i=0; db_args[i]; ++i) {
+             arg = strtok_r(db_args[i], "=", &arg_val);
++            arg = (arg != NULL) ? arg : "";
+             if (strcmp(arg, TKTPOLICY_ARG) == 0) {
+                 dptr = &xargs->tktpolicydn;
+             } else {
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.13.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.13.2.bb
new file mode 100644
index 0000000..713b76c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.13.2.bb
@@ -0,0 +1,107 @@
+SUMMARY = "A network authentication protocol"
+DESCRIPTION = "Kerberos is a system for authenticating users and services on a network. \
+ Kerberos is a trusted third-party service.  That means that there is a \
+ third party (the Kerberos server) that is trusted by all the entities on \
+ the network (users and services, usually called "principals"). \
+ . \
+ This is the MIT reference implementation of Kerberos V5. \
+ . \
+ This package contains the Kerberos key server (KDC).  The KDC manages all \
+ authentication credentials for a Kerberos realm, holds the master keys \
+ for the realm, and responds to authentication requests.  This package \
+ should be installed on both master and slave KDCs."
+
+HOMEPAGE = "http://web.mit.edu/Kerberos/"
+SECTION = "console/network"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${S}/../NOTICE;md5=f64248328d2d9928e1f04158b5243e7f"
+DEPENDS = "ncurses util-linux e2fsprogs e2fsprogs-native"
+
+inherit autotools-brokensep binconfig perlnative
+
+SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+SRC_URI = "http://web.mit.edu/kerberos/dist/${BPN}/${SHRT_VER}/${BP}-signed.tar \
+           file://0001-aclocal-Add-parameter-to-disable-keyutils-detection.patch \
+           file://debian-suppress-usr-lib-in-krb5-config.patch;striplevel=2 \
+           file://Fix-SPNEGO-context-aliasing-bugs-CVE-2015-2695.patch;striplevel=2 \
+           file://Fix-IAKERB-context-aliasing-bugs-CVE-2015-2696.patch;striplevel=2 \
+           file://Fix-build_principal-memory-bug-CVE-2015-2697.patch;striplevel=2 \
+           file://Fix-IAKERB-context-export-import-CVE-2015-2698.patch;striplevel=2 \
+           file://crosscompile_nm.patch \
+           file://etc/init.d/krb5-kdc \
+           file://etc/init.d/krb5-admin-server \
+           file://etc/default/krb5-kdc \
+           file://etc/default/krb5-admin-server \
+           file://krb5-CVE-2016-3119.patch;striplevel=2 \
+"
+SRC_URI[md5sum] = "f7ebfa6c99c10b16979ebf9a98343189"
+SRC_URI[sha256sum] = "e528c30b0209c741f6f320cb83122ded92f291802b6a1a1dc1a01dcdb3ff6de1"
+
+S = "${WORKDIR}/${BP}/src"
+
+PACKAGECONFIG ??= "openssl"
+PACKAGECONFIG[libedit] = "--with-libedit,--without-libedit,libedit"
+PACKAGECONFIG[openssl] = "--with-pkinit-crypto-impl=openssl,,openssl"
+PACKAGECONFIG[keyutils] = "--enable-keyutils,--disable-keyutils,keyutils"
+PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap"
+PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
+
+EXTRA_OECONF += " --without-tcl --with-system-et --disable-rpath"
+CACHED_CONFIGUREVARS += "krb5_cv_attr_constructor_destructor=yes ac_cv_func_regcomp=yes \
+                  ac_cv_printf_positional=yes ac_cv_file__etc_environment=yes \
+                  ac_cv_file__etc_TIMEZONE=no"
+
+CFLAGS_append += "-DDESTRUCTOR_ATTR_WORKS=1 -I${STAGING_INCDIR}/et"
+LDFLAGS_append += "-lpthread"
+
+FILES_${PN} += "${datadir}/gnats"
+FILES_${PN}-doc += "${datadir}/examples"
+FILES_${PN}-dbg += "${libdir}/krb5/plugins/*/.debug"
+
+# As this recipe doesn't inherit update-rc.d, we need to add this dependency here
+RDEPENDS_${PN}_class-target += "initscripts-functions"
+
+krb5_do_unpack() {
+    # ${P}-signed.tar contains ${P}.tar.gz.asc and ${P}.tar.gz
+    tar xzf ${WORKDIR}/${BP}.tar.gz -C ${WORKDIR}/
+}
+
+python do_unpack() {
+    bb.build.exec_func('base_do_unpack', d)
+    bb.build.exec_func('krb5_do_unpack', d)
+}
+
+do_configure() {
+    gnu-configize --force
+    autoreconf
+    oe_runconf
+}
+
+do_install_append() {
+    mkdir -p ${D}/${sysconfdir}/init.d ${D}/${sysconfdir}/default
+    install -m 0755 ${WORKDIR}/etc/init.d/* ${D}/${sysconfdir}/init.d
+    install -m 0644 ${WORKDIR}/etc/default/* ${D}/${sysconfdir}/default
+
+    rm -rf ${D}/${localstatedir}/run
+    mkdir -p ${D}/${sysconfdir}/default/volatiles
+    echo "d root root 0755 ${localstatedir}/run/krb5kdc none" \
+           > ${D}${sysconfdir}/default/volatiles/87_krb5
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        echo "d /run/krb5kdc - - - -" \
+              > ${D}${sysconfdir}/tmpfiles.d/krb5.conf
+    fi
+
+}
+
+pkg_postinst_${PN} () {
+    if [ -z "$D" ]; then
+        if command -v systemd-tmpfiles >/dev/null; then
+            systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/krb5.conf
+        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+            ${sysconfdir}/init.d/populate-volatile.sh update
+        fi
+    fi
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/configure-fix-largefile.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/configure-fix-largefile.patch
new file mode 100644
index 0000000..679a8b5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/configure-fix-largefile.patch
@@ -0,0 +1,38 @@
+Fix configure error in large file checks on 64-bit architectures
+
+ configure:17888: checking for native large file support
+ configure:17891: error: in `/home/jenkins/oe/shr-core-branches/shr-core/tmp-eglibc/work/core2-64-oe-linux/libimobiledevice/1.1.4-r0/libimobiledevice-1.1.4':
+ configure:17893: error: cannot run test program while cross compiling
+
+configure.ac was using AC_SYS_LARGEFILE macro as is typical, but then
+there was an extra runtime check added beyond that:
+check if off_t is 8 bytes (64 bits) long.
+If that runtime check passed, _FILE_OFFSET_BITS was defined as 64.
+
+Runtime checks need to go away for cross compiling, and luckily this extra
+check was not serving any useful purpose. Note that off_t was *already*
+64 bits, *without* setting _FILE_OFFSET_BITS, which makes _FILE_OFFSET_BITS
+unneeded for large file support. 
+
+If AC_SYS_LARGEFILE macro sets ac_cv_sys_file_offset_bits=no,
+just leave _FILE_OFFSET_BITS undefined!
+
+--- libimobiledevice-1.1.4/configure.ac.old	2015-07-15 01:38:50.900143927 -0700
++++ libimobiledevice-1.1.4/configure.ac	2015-07-15 01:39:13.300144430 -0700
+@@ -174,16 +174,6 @@
+ if test "$enable_largefile" != no; then
+     if test "$ac_cv_sys_file_offset_bits" != 'no'; then
+ 	LFS_CFLAGS="$LFS_CFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
+-    else
+-	AC_MSG_CHECKING(for native large file support)
+-	AC_RUN_IFELSE([AC_LANG_SOURCE([#include <unistd.h>
+-	  int main (int argc, char **argv)
+-	  {
+-	      exit(!(sizeof(off_t) == 8));
+-	  }])],
+-	[ac_cv_sys_file_offset_bits=64; AC_DEFINE(_FILE_OFFSET_BITS,64)
+-	 AC_MSG_RESULT(yes)],
+-	[AC_MSG_RESULT(no)])
+     fi
+     if test "$ac_cv_sys_large_files" != 'no'; then
+ 	LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES=1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch
new file mode 100644
index 0000000..9a7895f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch
@@ -0,0 +1,31 @@
+Fix link error with gcc 5 toolchains
+
+ afc.c:258: error: undefined reference to 'debug_buffer'
+ collect2: error: ld returned 1 exit status
+
+debug.h header was declaring things inline without providing a definition.
+Files that included this header then failed to link against the corresponding
+external symbol in debug.c, because the linker took the 'inline' keyword
+seriously rather than ignoring it.
+
+--- libimobiledevice-1.1.4/src/debug.h.orig	2015-10-03 16:24:08.758740386 -0700
++++ libimobiledevice-1.1.4/src/debug.h	2015-10-03 16:24:22.706740355 -0700
+@@ -44,14 +44,14 @@
+ #define debug_plist(a)
+ #endif
+ 
+-LIBIMOBILEDEVICE_INTERNAL inline void debug_info_real(const char *func,
++LIBIMOBILEDEVICE_INTERNAL void debug_info_real(const char *func,
+ 											const char *file,
+ 											int	line,
+ 											const char *format, ...);
+ 
+-LIBIMOBILEDEVICE_INTERNAL inline void debug_buffer(const char *data, const int length);
+-LIBIMOBILEDEVICE_INTERNAL inline void debug_buffer_to_file(const char *file, const char *data, const int length);
+-LIBIMOBILEDEVICE_INTERNAL inline void debug_plist_real(const char *func,
++LIBIMOBILEDEVICE_INTERNAL void debug_buffer(const char *data, const int length);
++LIBIMOBILEDEVICE_INTERNAL void debug_buffer_to_file(const char *file, const char *data, const int length);
++LIBIMOBILEDEVICE_INTERNAL void debug_plist_real(const char *func,
+ 											const char *file,
+ 											int	line,
+ 											plist_t plist);
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb
new file mode 100644
index 0000000..32aca96
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb
@@ -0,0 +1,23 @@
+SUMMARY = "A protocol library to access an iPhone or iPod Touch in Linux"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "\
+    file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07 \
+    file://COPYING.LESSER;md5=6ab17b41640564434dda85c06b7124f7 \
+"
+
+HOMEPAGE ="http://www.libimobiledevice.org/"
+
+DEPENDS = "libplist usbmuxd libtasn1 gnutls libgcrypt"
+
+SRC_URI = " \
+    http://www.libimobiledevice.org/downloads/libimobiledevice-${PV}.tar.bz2 \
+    file://configure-fix-largefile.patch \
+    file://inline-without-definition.patch \
+"
+
+SRC_URI[md5sum] = "3f28cbc6a2e30d34685049c0abde5183"
+SRC_URI[sha256sum] = "67499cfaa6172f566ee6b0783605acffe484fb7ddc3b09881ab7ac58667ee5b8"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --without-cython "
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.12.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.12.2.bb
new file mode 100644
index 0000000..f1ecce5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.12.2.bb
@@ -0,0 +1,16 @@
+SUMMARY = "libmbim is library for talking to WWAN devices by MBIM protocol"
+DESCRIPTION = "libmbim is a glib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libmbim/"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+"
+
+DEPENDS = "glib-2.0 libgudev"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "921fb5ab3f13f1e00833e009d8f3b4f6"
+SRC_URI[sha256sum] = "949351d3e3d69b81e40a49f1d187944c26149e0647a415f0227ccdc112047b29"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/69-libmtp.rules b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/69-libmtp.rules
new file mode 100644
index 0000000..4cd27c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/69-libmtp.rules
@@ -0,0 +1,999 @@
+# UDEV-style hotplug map for libmtp
+# Put this file in /etc/udev/rules.d
+
+ACTION!="add", GOTO="libmtp_rules_end"
+ENV{MAJOR}!="?*", GOTO="libmtp_rules_end"
+SUBSYSTEM=="usb", GOTO="libmtp_usb_rules"
+GOTO="libmtp_rules_end"
+
+LABEL="libmtp_usb_rules"
+
+# Some sensitive devices we surely don't wanna probe
+# Color instruments
+ATTR{idVendor}=="0670", GOTO="libmtp_rules_end"
+ATTR{idVendor}=="0765", GOTO="libmtp_rules_end"
+ATTR{idVendor}=="085c", GOTO="libmtp_rules_end"
+ATTR{idVendor}=="0971", GOTO="libmtp_rules_end"
+# Canon scanners that look like MTP devices (PID 0x22nn)
+ATTR{idVendor}=="04a9", ATTR{idProduct}=="22*", GOTO="libmtp_rules_end"
+# Canon digital camera (EOS 3D) that looks like MTP device (PID 0x3113)
+ATTR{idVendor}=="04a9", ATTR{idProduct}=="3113", GOTO="libmtp_rules_end"
+# Sensitive Atheros devices that look like MTP devices
+ATTR{idVendor}=="0cf3", GOTO="libmtp_rules_end"
+# Sensitive Atmel JTAG programmers
+ATTR{idVendor}=="03eb", GOTO="libmtp_rules_end"
+# Creative ZEN Vision
+ATTR{idVendor}=="041e", ATTR{idProduct}=="411f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative Portable Media Center
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4123", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN Xtra (MTP mode)
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4128", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Dell DJ (2nd generation)
+ATTR{idVendor}=="041e", ATTR{idProduct}=="412f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN Micro (MTP mode)
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4130", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN Touch (MTP mode)
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4131", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Dell Dell Pocket DJ (MTP mode)
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4132", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN MicroPhoto (alternate version)
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4133", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN Sleek (MTP mode)
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4137", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN MicroPhoto
+ATTR{idVendor}=="041e", ATTR{idProduct}=="413c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN Sleek Photo
+ATTR{idVendor}=="041e", ATTR{idProduct}=="413d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN Vision:M
+ATTR{idVendor}=="041e", ATTR{idProduct}=="413e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN V
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4150", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN Vision:M (DVP-HD0004)
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4151", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN V Plus
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4152", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN Vision W
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4153", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4157", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN V 2GB
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4158", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN Mozaic
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4161", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN X-Fi
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4162", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Creative ZEN X-Fi 3
+ATTR{idVendor}=="041e", ATTR{idProduct}=="4169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# ZiiLABS Zii EGG
+ATTR{idVendor}=="041e", ATTR{idProduct}=="6000", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-900
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="0409", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung I550W Phone
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="04a4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung Jet S8000
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="4f1f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YH-920 (501d)
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="501d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YH-920 (5022)
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5022", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YH-925GS
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5024", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YH-820
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="502e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YH-925(-GS)
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="502f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YH-J70J
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5033", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-Z5
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="503c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-T7J
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5047", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-U2J (YP-U2JXB/XAA)
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5054", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-F2J
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5057", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-K5
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="505a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-U3
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="507d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-T9
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="507f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-K3
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5081", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-P2
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5083", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-T10
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="508a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-S5
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="508b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-S3
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5091", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-U4
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5093", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-R1
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="510f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-Q1
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5115", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-M1
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5118", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-P3
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="511a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-Q2
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="511d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-U5
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5121", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-R0
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5125", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-Q3
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5130", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YP-Z3
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5137", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung YH-999 Portable Media Center/SGH-A707/SGH-L760V/SGH-U900/Verizon Intensity/Fascinate
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="5a0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung M7600 Beat/GT-S8300T/SGH-F490/S8300
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="6642", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung X830 Mobile Phone
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="6702", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung U600 Mobile Phone
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="6709", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung F250 Mobile Phone
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="6727", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung Juke (SCH-U470)
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="6734", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung GT-B2700
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="6752", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung SAMSUNG Trance
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="6763", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung GT-S8500
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="6819", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung Galaxy models (MTP+ADB)
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="685c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung Galaxy Y
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="685e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung Galaxy models (MTP)
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung Galaxy models Kies mode
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="6877", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung Vibrant SGH-T959/Captivate/Media player mode
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="68a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung GT-B2710/Xcover 271
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="68af", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Samsung GT-S5230
+ATTR{idVendor}=="04e8", ATTR{idProduct}=="e20c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Microsoft/Intel Bandon Portable Media Center
+ATTR{idVendor}=="045e", ATTR{idProduct}=="00c9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Microsoft Windows Phone
+ATTR{idVendor}=="045e", ATTR{idProduct}=="04ec", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Microsoft Windows MTP Simulator
+ATTR{idVendor}=="045e", ATTR{idProduct}=="0622", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Microsoft Zune HD
+ATTR{idVendor}=="045e", ATTR{idProduct}=="063e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Microsoft Kin 1
+ATTR{idVendor}=="045e", ATTR{idProduct}=="0640", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Microsoft/Sharp/nVidia Kin TwoM
+ATTR{idVendor}=="045e", ATTR{idProduct}=="0641", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Microsoft Zune
+ATTR{idVendor}=="045e", ATTR{idProduct}=="0710", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# JVC Alneo XA-HD500
+ATTR{idVendor}=="04f1", ATTR{idProduct}=="6105", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips HDD6320/00 or HDD6330/17
+ATTR{idVendor}=="0471", ATTR{idProduct}=="014b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips HDD14XX,HDD1620 or HDD1630/17
+ATTR{idVendor}=="0471", ATTR{idProduct}=="014c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips HDD085/00 or HDD082/17
+ATTR{idVendor}=="0471", ATTR{idProduct}=="014d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear SA9200
+ATTR{idVendor}=="0471", ATTR{idProduct}=="014f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips SA1115/55
+ATTR{idVendor}=="0471", ATTR{idProduct}=="0164", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear Audio
+ATTR{idVendor}=="0471", ATTR{idProduct}=="0165", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips Shoqbox
+ATTR{idVendor}=="0471", ATTR{idProduct}=="0172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips PSA610
+ATTR{idVendor}=="0471", ATTR{idProduct}=="0181", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips HDD6320
+ATTR{idVendor}=="0471", ATTR{idProduct}=="01eb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear SA6014/SA6015/SA6024/SA6025/SA6044/SA6045
+ATTR{idVendor}=="0471", ATTR{idProduct}=="084e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear SA5145
+ATTR{idVendor}=="0471", ATTR{idProduct}=="0857", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear SA6125/SA6145/SA6185
+ATTR{idVendor}=="0471", ATTR{idProduct}=="2002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear SA3345
+ATTR{idVendor}=="0471", ATTR{idProduct}=="2004", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips SA5285
+ATTR{idVendor}=="0471", ATTR{idProduct}=="2022", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear ViBE SA1VBE04
+ATTR{idVendor}=="0471", ATTR{idProduct}=="2075", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear Muse
+ATTR{idVendor}=="0471", ATTR{idProduct}=="2077", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear ViBE SA1VBE04/08
+ATTR{idVendor}=="0471", ATTR{idProduct}=="207b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear Aria
+ATTR{idVendor}=="0471", ATTR{idProduct}=="207c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear SA1VBE08KX/78
+ATTR{idVendor}=="0471", ATTR{idProduct}=="208e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear VIBE SA2VBE[08|16]K/02
+ATTR{idVendor}=="0471", ATTR{idProduct}=="20b7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear Ariaz
+ATTR{idVendor}=="0471", ATTR{idProduct}=="20b9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips GoGear Vibe/02
+ATTR{idVendor}=="0471", ATTR{idProduct}=="20e5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Philips PSA235
+ATTR{idVendor}=="0471", ATTR{idProduct}=="7e01", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Acer Iconia TAB A500 (ID1)
+ATTR{idVendor}=="0502", ATTR{idProduct}=="3325", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Acer Iconia TAB A500 (ID2)
+ATTR{idVendor}=="0502", ATTR{idProduct}=="3341", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Acer Iconia TAB A501
+ATTR{idVendor}=="0502", ATTR{idProduct}=="3344", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Acer Iconia TAB A100 (ID1)
+ATTR{idVendor}=="0502", ATTR{idProduct}=="3348", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Acer Iconia TAB A100 (ID2)
+ATTR{idVendor}=="0502", ATTR{idProduct}=="3349", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Acer Iconia TAB A700
+ATTR{idVendor}=="0502", ATTR{idProduct}=="3378", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Acer Iconia TAB A200 (ID1)
+ATTR{idVendor}=="0502", ATTR{idProduct}=="337c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Acer Iconia TAB A200 (ID2)
+ATTR{idVendor}=="0502", ATTR{idProduct}=="337d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Acer Iconia TAB A510
+ATTR{idVendor}=="0502", ATTR{idProduct}=="338a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Acer E350 Liquid Gallant Duo
+ATTR{idVendor}=="0502", ATTR{idProduct}=="33c3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa m230/m240
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7400", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa m200-tcc (MTP mode)
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7401", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa c150
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7410", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa e200/e250/e260/e270/e280
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7420", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa e260/e280 v2
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7422", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa m240/m250
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7430", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa Clip
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7432", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa Clip v2
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7434", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa c240/c250
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7450", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa c250 v2
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7452", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa Express
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7460", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa Connect
+ATTR{idVendor}=="0781", ATTR{idProduct}=="7480", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa View
+ATTR{idVendor}=="0781", ATTR{idProduct}=="74b0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa Fuze
+ATTR{idVendor}=="0781", ATTR{idProduct}=="74c0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa Fuze v2
+ATTR{idVendor}=="0781", ATTR{idProduct}=="74c2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa Clip+
+ATTR{idVendor}=="0781", ATTR{idProduct}=="74d0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa Fuze+
+ATTR{idVendor}=="0781", ATTR{idProduct}=="74e0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SanDisk Sansa Clip Zip
+ATTR{idVendor}=="0781", ATTR{idProduct}=="74e4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver H300 Series MTP
+ATTR{idVendor}=="1006", ATTR{idProduct}=="3004", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver Portable Media Center
+ATTR{idVendor}=="1006", ATTR{idProduct}=="4002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver Portable Media Center
+ATTR{idVendor}=="1006", ATTR{idProduct}=="4003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver T7 Volcano
+ATTR{idVendor}=="1042", ATTR{idProduct}=="1143", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver iFP-880
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver T10
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1113", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver T20 FM
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1114", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver T20
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1115", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver U10
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1116", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver T10a
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1117", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver T20
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1118", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver T30
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1119", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver T10 2GB
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1120", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver N12
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1122", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver Clix2
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1126", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver Clix
+ATTR{idVendor}=="4102", ATTR{idProduct}=="112a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver X20
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1132", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver T60
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1134", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver E100
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1141", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver E100 v2/Lplayer
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1142", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver Spinn
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1147", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver E50
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1151", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver T5
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1153", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver E30
+ATTR{idVendor}=="4102", ATTR{idProduct}=="1167", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver H10 20GB
+ATTR{idVendor}=="4102", ATTR{idProduct}=="2101", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver H10 5GB
+ATTR{idVendor}=="4102", ATTR{idProduct}=="2102", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# iRiver H10 5.6GB
+ATTR{idVendor}=="4102", ATTR{idProduct}=="2105", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Dell, Inc DJ Itty
+ATTR{idVendor}=="413c", ATTR{idProduct}=="4500", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Dell, Inc Dell Streak 7
+ATTR{idVendor}=="413c", ATTR{idProduct}=="b10b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat MEGF-40
+ATTR{idVendor}=="0930", ATTR{idProduct}=="0009", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat
+ATTR{idVendor}=="0930", ATTR{idProduct}=="000c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat P20
+ATTR{idVendor}=="0930", ATTR{idProduct}=="000f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat S
+ATTR{idVendor}=="0930", ATTR{idProduct}=="0010", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat P10
+ATTR{idVendor}=="0930", ATTR{idProduct}=="0011", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat V30
+ATTR{idVendor}=="0930", ATTR{idProduct}=="0014", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat U
+ATTR{idVendor}=="0930", ATTR{idProduct}=="0016", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat MEU202
+ATTR{idVendor}=="0930", ATTR{idProduct}=="0018", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat T
+ATTR{idVendor}=="0930", ATTR{idProduct}=="0019", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat MEU201
+ATTR{idVendor}=="0930", ATTR{idProduct}=="001a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Gigabeat MET401
+ATTR{idVendor}=="0930", ATTR{idProduct}=="001d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Excite AT300
+ATTR{idVendor}=="0930", ATTR{idProduct}=="0963", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Toshiba Thrive AT100/AT105
+ATTR{idVendor}=="0930", ATTR{idProduct}=="7100", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos Gmini XS100
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1207", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos XS202 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1208", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 104 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="120a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 204 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="120c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 404 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1301", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 404CAM (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1303", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 504 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1307", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 604 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1309", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 604WIFI (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="130b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 704 mobile dvr
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="130d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 704TV (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="130f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 405 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1311", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 605 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1313", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 605F (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1315", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 705 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1319", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos TV+ (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="131b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 105 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="131d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 405HDD (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1321", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 5 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1331", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 5 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1333", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 7 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1335", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos SPOD (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1341", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 5S IT (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1351", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 5H IT (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1357", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos Arnova Childpad
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1458", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 8o G9 (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1508", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 8o G9 Turbo (MTP mode)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1509", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 80G9
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1518", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 101 G9
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1528", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 101 G9 (v2)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1529", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 101 G9 Turbo 250 HD
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1538", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 101 G9 Turbo
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1539", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 70it2 (mode 1)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1568", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Archos 70it2 (mode 2)
+ATTR{idVendor}=="0e79", ATTR{idProduct}=="1569", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Dunlop MP3 player 1GB / EGOMAN MD223AFD
+ATTR{idVendor}=="10d6", ATTR{idProduct}=="2200", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Memorex or iRiver MMP 8585/8586 or iRiver E200
+ATTR{idVendor}=="10d6", ATTR{idProduct}=="2300", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sirius Stiletto
+ATTR{idVendor}=="18f6", ATTR{idProduct}=="0102", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sirius Stiletto 2
+ATTR{idVendor}=="18f6", ATTR{idProduct}=="0110", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Canon Ixus Digital 700 (PTP/MTP mode)
+ATTR{idVendor}=="04a9", ATTR{idProduct}=="30f2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Canon PowerShot A640 (PTP/MTP mode)
+ATTR{idVendor}=="04a9", ATTR{idProduct}=="3139", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Canon PowerShot SX20IS (PTP/MTP mode)
+ATTR{idVendor}=="04a9", ATTR{idProduct}=="31e4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N81 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="000a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 6120c Classic Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="002e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N96 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0039", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 6500c Classic Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="003c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 3110c Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="005f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 3109c Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0065", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5310 XpressMusic
+ATTR{idVendor}=="0421", ATTR{idProduct}=="006c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N95 Mobile Phone 8GB
+ATTR{idVendor}=="0421", ATTR{idProduct}=="006e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N82 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0074", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N78 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0079", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 6220 Classic
+ATTR{idVendor}=="0421", ATTR{idProduct}=="008d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N85 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0092", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 6210 Navigator
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0098", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia E71
+ATTR{idVendor}=="0421", ATTR{idProduct}=="00e4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia E66
+ATTR{idVendor}=="0421", ATTR{idProduct}=="00e5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5320 XpressMusic
+ATTR{idVendor}=="0421", ATTR{idProduct}=="00ea", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5800 XpressMusic
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0154", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5800 XpressMusic v2
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0155", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5800 XpressMusic v3
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0159", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia E63
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0179", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N79
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0186", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia E71x
+ATTR{idVendor}=="0421", ATTR{idProduct}=="01a1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia E52
+ATTR{idVendor}=="0421", ATTR{idProduct}=="01cf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 3710
+ATTR{idVendor}=="0421", ATTR{idProduct}=="01ee", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N97-1
+ATTR{idVendor}=="0421", ATTR{idProduct}=="01f4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N97
+ATTR{idVendor}=="0421", ATTR{idProduct}=="01f5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5130 XpressMusic
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0209", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia E72
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0221", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5530
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0229", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N97 mini
+ATTR{idVendor}=="0421", ATTR{idProduct}=="026b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia X6
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0274", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 6600i
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0297", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 2710
+ATTR{idVendor}=="0421", ATTR{idProduct}=="02c1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5230
+ATTR{idVendor}=="0421", ATTR{idProduct}=="02e2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N8
+ATTR{idVendor}=="0421", ATTR{idProduct}=="02fe", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N8 (Ovi mode)
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0302", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia E7
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0334", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia E7 (Ovi mode)
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0335", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia C7
+ATTR{idVendor}=="0421", ATTR{idProduct}=="03c1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia C7 (ID2)
+ATTR{idVendor}=="0421", ATTR{idProduct}=="03cd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N950
+ATTR{idVendor}=="0421", ATTR{idProduct}=="03d2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 3250 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0462", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N93 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0478", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5500 Sport Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="047e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N91 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="0485", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5700 XpressMusic Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="04b4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5300 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="04ba", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5200 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="04be", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N73 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="04d1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N75 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="04e1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N93i Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="04e5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N95 Mobile Phone
+ATTR{idVendor}=="0421", ATTR{idProduct}=="04ef", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N80 Internet Edition (Media Player)
+ATTR{idVendor}=="0421", ATTR{idProduct}=="04f1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia N9
+ATTR{idVendor}=="0421", ATTR{idProduct}=="051a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia 5530 Xpressmusic
+ATTR{idVendor}=="05c6", ATTR{idProduct}=="0229", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nokia/Verizon 6205 Balboa/Verizon Music Phone
+ATTR{idVendor}=="05c6", ATTR{idProduct}=="3196", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Logik LOG DAX MP3 and DAB Player
+ATTR{idVendor}=="13d1", ATTR{idProduct}=="7002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Technika MP-709
+ATTR{idVendor}=="13d1", ATTR{idProduct}=="7017", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Thomson EM28 Series
+ATTR{idVendor}=="069b", ATTR{idProduct}=="0774", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Thomson / RCA Opal / Lyra MC4002
+ATTR{idVendor}=="069b", ATTR{idProduct}=="0777", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Thomson Lyra MC5104B (M51 Series)
+ATTR{idVendor}=="069b", ATTR{idProduct}=="077c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Thomson RCA H106
+ATTR{idVendor}=="069b", ATTR{idProduct}=="301a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Thomson scenium E308
+ATTR{idVendor}=="069b", ATTR{idProduct}=="3028", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Thomson / RCA Lyra HC308A
+ATTR{idVendor}=="069b", ATTR{idProduct}=="3035", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# FOMA F903iX HIGH-SPEED
+ATTR{idVendor}=="04c5", ATTR{idProduct}=="1140", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# NormSoft, Inc. Pocket Tunes
+ATTR{idVendor}=="1703", ATTR{idProduct}=="0001", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# NormSoft, Inc. Pocket Tunes 4
+ATTR{idVendor}=="1703", ATTR{idProduct}=="0002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# TrekStor Vibez 8/12GB
+ATTR{idVendor}=="066f", ATTR{idProduct}=="842a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Medion MD8333
+ATTR{idVendor}=="066f", ATTR{idProduct}=="8550", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Medion MD8333
+ATTR{idVendor}=="066f", ATTR{idProduct}=="8588", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Medion MD99000 (P9514)/Olivetti Olipad 110
+ATTR{idVendor}=="0408", ATTR{idProduct}=="b009", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Medion Lifetab P9514
+ATTR{idVendor}=="0408", ATTR{idProduct}=="b00a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Maxfield G-Flash NG 1GB
+ATTR{idVendor}=="066f", ATTR{idProduct}=="846c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SigmaTel Inc. MTPMSCN Audio Player
+ATTR{idVendor}=="066f", ATTR{idProduct}=="a010", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# TrekStor i.Beat Sweez FM
+ATTR{idVendor}=="0402", ATTR{idProduct}=="0611", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# TrekStor i.Beat Organix 2.0
+ATTR{idVendor}=="1e68", ATTR{idProduct}=="0002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Disney MixMax
+ATTR{idVendor}=="0aa6", ATTR{idProduct}=="6021", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Tevion MD 81488
+ATTR{idVendor}=="0aa6", ATTR{idProduct}=="3011", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# MyMusix PD-6070
+ATTR{idVendor}=="0aa6", ATTR{idProduct}=="9601", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio U3 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0701", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio 6 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0711", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio 7 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0751", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio U5 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0761", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio D2 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0801", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio D2+ FW 2.x (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0861", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio D2+ DAB FW 4.x (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0871", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio D2+ FW 3.x (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0881", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio D2+ DMB FW 1.x (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0891", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio S9 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0901", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio 9 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0911", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio J3 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0921", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio X7 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0931", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio C2 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0941", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Cowon iAudio 10 (MTP mode)
+ATTR{idVendor}=="0e21", ATTR{idProduct}=="0952", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Insignia NS-DV45
+ATTR{idVendor}=="19ff", ATTR{idProduct}=="0303", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Insignia Sport Player
+ATTR{idVendor}=="19ff", ATTR{idProduct}=="0307", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Insignia Pilot 4GB
+ATTR{idVendor}=="19ff", ATTR{idProduct}=="0309", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# LG Electronics Inc. T54
+ATTR{idVendor}=="043e", ATTR{idProduct}=="7040", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# LG Electronics Inc. UP3
+ATTR{idVendor}=="043e", ATTR{idProduct}=="70b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# LG Electronics Inc. VX8550 V CAST Mobile Phone
+ATTR{idVendor}=="1004", ATTR{idProduct}=="6010", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# LG Electronics Inc. KC910 Renoir Mobile Phone
+ATTR{idVendor}=="1004", ATTR{idProduct}=="608f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# LG Electronics Inc. GR-500 Music Player
+ATTR{idVendor}=="1004", ATTR{idProduct}=="611b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# LG Electronics Inc. KM900
+ATTR{idVendor}=="1004", ATTR{idProduct}=="6132", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# LG Electronics Inc. LG8575
+ATTR{idVendor}=="1004", ATTR{idProduct}=="619a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# LG Electronics Inc. V909 G-Slate
+ATTR{idVendor}=="1004", ATTR{idProduct}=="61f9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# LG Electronics Inc. LG-E617G/P700
+ATTR{idVendor}=="1004", ATTR{idProduct}=="631c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-A815/NWZ-A818
+ATTR{idVendor}=="054c", ATTR{idProduct}=="0325", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-S516
+ATTR{idVendor}=="054c", ATTR{idProduct}=="0326", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-S615F/NWZ-S616F/NWZ-S618F
+ATTR{idVendor}=="054c", ATTR{idProduct}=="0327", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-S716F
+ATTR{idVendor}=="054c", ATTR{idProduct}=="035a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-A826/NWZ-A828/NWZ-A829
+ATTR{idVendor}=="054c", ATTR{idProduct}=="035b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-A726/NWZ-A728/NWZ-A768
+ATTR{idVendor}=="054c", ATTR{idProduct}=="035c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-B135
+ATTR{idVendor}=="054c", ATTR{idProduct}=="036e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-E436F
+ATTR{idVendor}=="054c", ATTR{idProduct}=="0385", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-W202
+ATTR{idVendor}=="054c", ATTR{idProduct}=="0388", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-S739F
+ATTR{idVendor}=="054c", ATTR{idProduct}=="038c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-S638F
+ATTR{idVendor}=="054c", ATTR{idProduct}=="038e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-X1050B/NWZ-X1060B
+ATTR{idVendor}=="054c", ATTR{idProduct}=="0397", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-X1051/NWZ-X1061
+ATTR{idVendor}=="054c", ATTR{idProduct}=="0398", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-B142F
+ATTR{idVendor}=="054c", ATTR{idProduct}=="03d8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-E344
+ATTR{idVendor}=="054c", ATTR{idProduct}=="03fc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-E445
+ATTR{idVendor}=="054c", ATTR{idProduct}=="03fd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-S545
+ATTR{idVendor}=="054c", ATTR{idProduct}=="03fe", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-A845
+ATTR{idVendor}=="054c", ATTR{idProduct}=="0404", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-W252B
+ATTR{idVendor}=="054c", ATTR{idProduct}=="04bb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-B153F
+ATTR{idVendor}=="054c", ATTR{idProduct}=="04be", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-E354
+ATTR{idVendor}=="054c", ATTR{idProduct}=="04cb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-S754
+ATTR{idVendor}=="054c", ATTR{idProduct}=="04cc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony NWZ-B163F
+ATTR{idVendor}=="054c", ATTR{idProduct}=="059a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Walkman NWZ-E464
+ATTR{idVendor}=="054c", ATTR{idProduct}=="05a6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony NWZ-S765
+ATTR{idVendor}=="054c", ATTR{idProduct}=="05a8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Sony Tablet S
+ATTR{idVendor}=="054c", ATTR{idProduct}=="05b3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony Sony Tablet S1
+ATTR{idVendor}=="054c", ATTR{idProduct}=="05b4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Sony DCR-SR75
+ATTR{idVendor}=="054c", ATTR{idProduct}=="1294", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson K850i
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0075", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson W910
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0076", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson W890i
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="00b3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson W760i
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="00c6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson C902
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="00d4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson C702
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="00d9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson W980
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="00da", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson C905
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="00ef", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson W595
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="00f3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson W902
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="00f5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson T700
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="00fb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson W705/W715
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0105", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson W995
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0112", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson U5
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0133", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson U8i
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="013a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson j10i2 (Elm)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0144", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson j108i (Cedar)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="014e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson W302
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="10c8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson j10i (Elm)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="d144", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson K550i
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="e000", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson LT15i (Xperia arc S)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="014f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson MT11i Xperia Neo
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0156", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson MK16i Xperia
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="015a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson ST18a Xperia Ray
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0161", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson SK17i Xperia Mini Pro
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0166", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson ST15i Xperia Mini
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0167", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson ST17i Xperia Active
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0168", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY LT26i Xperia S
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY WT19i Live Walkman
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="016d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY ST21i Xperia Tipo
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0170", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY ST15i Xperia U
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0171", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY LT22i Xperia P
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY LT26w Xperia Acro S
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="0176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson ST17i Xperia Active (MTP+UMS mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="4168", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY LT26i Xperia S (MTP+UMS mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="4169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY ST21i Xperia Tipo (MTP+UMS mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="4170", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY ST25i Xperia U (MTP+UMS mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="4171", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY LT22i Xperia P (MTP+UMS mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="4172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY LT26w Xperia Acro S (MTP+UMS mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="4176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson LT15i Xperia Arc (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="514f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson MT11i Xperia Neo (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="5156", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson ST17i Xperia Active (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="5168", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY LT26i Xperia S (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="5169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson MK16i Xperia (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="515a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson ST18i Xperia Ray (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="5161", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson SK17i Xperia Mini Pro (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="5166", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson ST15i Xperia Mini (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="5167", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SonyEricsson SK17i Xperia Mini Pro (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="516d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY ST21i Xperia Tipo (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="5170", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY ST25i Xperia U (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="5171", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY LT22i Xperia P (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="5172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY LT26w Xperia Acro S (MTP+ADB mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="5176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY MT27i Xperia Sola (MTP+UMS+? mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="a173", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# SONY ST27i Xperia Go (MTP+UMS+? mode)
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="a17e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola V3m/V750 verizon
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="2a65", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola Xoom 2 Media Edition (ID2)
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="41cf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola Droid X/MB525 (Defy)
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="41d6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola Milestone / Verizon Droid
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="41dc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola DROID2
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="42a7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola Xoom 2 Media Edition
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="4311", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola XT912/XT928
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="4362", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola DROID4
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="437f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola IdeaPad K1
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="4811", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola A1200
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="60ca", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola MTP Test Command Interface
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="6413", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola RAZR2 V8/U9/Z6
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="6415", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola Xoom (Factory test)
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola Xoom (MTP)
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola Xoom (MTP+ADB)
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Motorola Milestone X2
+ATTR{idVendor}=="22b8", ATTR{idProduct}=="70ca", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for Sony) S1
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="05b3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for Barnes & Noble) Nook Color
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="2d02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for Asus) TF101 Transformer
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for Samsung) Nexus S
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e21", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for Asus) Nexus 7 (MTP)
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e41", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for Asus) Nexus 7 (MTP+ADB)
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for Motorola) Xoom (MZ604)
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="70a8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for Toshiba) Thrive 7/AT105
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="7102", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for Lenovo) Ideapad K1
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="740a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for Medion) MD99000 (P9514)
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="b00a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for LG Electronics) P990/Optimus (Cyanogen)
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="d109", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Google Inc (for LG Electronics) P990/Optimus
+ATTR{idVendor}=="18d1", ATTR{idProduct}=="d10a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Kenwood Media Keg HD10GB7 Sport Player
+ATTR{idVendor}=="0b28", ATTR{idProduct}=="100c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Micro-Star International P610/Model MS-5557
+ATTR{idVendor}=="0db0", ATTR{idProduct}=="5572", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# FOMA D905i
+ATTR{idVendor}=="06d3", ATTR{idProduct}=="21ba", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Haier Ibiza Rhapsody
+ATTR{idVendor}=="1302", ATTR{idProduct}=="1016", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Haier Ibiza Rhapsody
+ATTR{idVendor}=="1302", ATTR{idProduct}=="1017", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Panasonic P905i
+ATTR{idVendor}=="04da", ATTR{idProduct}=="2145", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Panasonic P906i
+ATTR{idVendor}=="04da", ATTR{idProduct}=="2158", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Polaroid Freescape/MPU-433158
+ATTR{idVendor}=="0546", ATTR{idProduct}=="2035", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Pioneer XMP3
+ATTR{idVendor}=="08e4", ATTR{idProduct}=="0148", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Slacker Inc. Slacker Portable Media Player
+ATTR{idVendor}=="1bdc", ATTR{idProduct}=="fabf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Conceptronic CMTD2
+ATTR{idVendor}=="1e53", ATTR{idProduct}=="0005", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# O2 Sistemas ZoltarTV
+ATTR{idVendor}=="1e53", ATTR{idProduct}=="0006", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Wyplay Wyplayer
+ATTR{idVendor}=="1e53", ATTR{idProduct}=="0007", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Perception Digital, Ltd Gigaware GX400
+ATTR{idVendor}=="0aa6", ATTR{idProduct}=="9702", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# RIM BlackBerry Storm/9650
+ATTR{idVendor}=="0fca", ATTR{idProduct}=="8007", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Nextar MA715A-8R
+ATTR{idVendor}=="0402", ATTR{idProduct}=="5668", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Coby COBY MP705
+ATTR{idVendor}=="1e74", ATTR{idProduct}=="6512", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Apple iPhone
+ATTR{idVendor}=="05ac", ATTR{idProduct}=="1290", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Apple iPod Touch 1st Gen
+ATTR{idVendor}=="05ac", ATTR{idProduct}=="1291", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Apple iPhone 3G
+ATTR{idVendor}=="05ac", ATTR{idProduct}=="1292", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Apple iPod Touch 2nd Gen
+ATTR{idVendor}=="05ac", ATTR{idProduct}=="1293", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Apple iPhone 3GS
+ATTR{idVendor}=="05ac", ATTR{idProduct}=="1294", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Apple 0x1296
+ATTR{idVendor}=="05ac", ATTR{idProduct}=="1296", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Apple 0x1297
+ATTR{idVendor}=="05ac", ATTR{idProduct}=="1297", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Apple 0x1298
+ATTR{idVendor}=="05ac", ATTR{idProduct}=="1298", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Apple iPod Touch 3rd Gen
+ATTR{idVendor}=="05ac", ATTR{idProduct}=="1299", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Apple iPad
+ATTR{idVendor}=="05ac", ATTR{idProduct}=="129a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Curitel Communications, Inc. Verizon Wireless Device
+ATTR{idVendor}=="106c", ATTR{idProduct}=="3215", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Pantech Crux
+ATTR{idVendor}=="106c", ATTR{idProduct}=="f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Asus TF300 Transformer
+ATTR{idVendor}=="0b05", ATTR{idProduct}=="4c80", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Asus TF300 Transformer (USB debug mode)
+ATTR{idVendor}=="0b05", ATTR{idProduct}=="4c81", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Asus TF700 Transformer
+ATTR{idVendor}=="0b05", ATTR{idProduct}=="4c90", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Asus TF201 Transformer Prime (keyboard dock)
+ATTR{idVendor}=="0b05", ATTR{idProduct}=="4d00", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Asus TF201 Transformer Prime (tablet only)
+ATTR{idVendor}=="0b05", ATTR{idProduct}=="4d01", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Asus TFXXX Transformer Prime (unknown version)
+ATTR{idVendor}=="0b05", ATTR{idProduct}=="4d04", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Asus TF101 Eeepad Slider
+ATTR{idVendor}=="0b05", ATTR{idProduct}=="4e01", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Asus TF101 Eeepad Transformer
+ATTR{idVendor}=="0b05", ATTR{idProduct}=="4e0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Asus TF101 Eeepad Transformer (debug mode)
+ATTR{idVendor}=="0b05", ATTR{idProduct}=="4e1f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Lenovo K1
+ATTR{idVendor}=="17ef", ATTR{idProduct}=="740a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Lenovo ThinkPad Tablet
+ATTR{idVendor}=="17ef", ATTR{idProduct}=="741c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Lenovo P700
+ATTR{idVendor}=="17ef", ATTR{idProduct}=="7497", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Lenovo Lifetab S9512
+ATTR{idVendor}=="17ef", ATTR{idProduct}=="74cc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Huawei Honor U8860
+ATTR{idVendor}=="12d1", ATTR{idProduct}=="1051", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Huawei Mediapad (mode 0)
+ATTR{idVendor}=="12d1", ATTR{idProduct}=="360f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Huawei Mediapad (mode 1)
+ATTR{idVendor}=="12d1", ATTR{idProduct}=="361f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# ZTE V55 ID 1
+ATTR{idVendor}=="19d2", ATTR{idProduct}=="0244", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# ZTE V55 ID 2
+ATTR{idVendor}=="19d2", ATTR{idProduct}=="0245", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# HTC Zopo ZP100 (ID1)
+ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# HTC EVO 4G LTE
+ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c93", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# HTC EVO 4G LTE (second ID)
+ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0ca8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Hewlett-Packard HP Touchpad
+ATTR{idVendor}=="0bb4", ATTR{idProduct}=="685c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Hewlett-Packard HP Touchpad (debug mode)
+ATTR{idVendor}=="0bb4", ATTR{idProduct}=="6860", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# HTC Zopo ZP100 (ID2)
+ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# NEC FOMA N01A
+ATTR{idVendor}=="0409", ATTR{idProduct}=="0242", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# nVidia CM9-Adam
+ATTR{idVendor}=="0955", ATTR{idProduct}=="70a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Vizio VTAB1008
+ATTR{idVendor}=="0489", ATTR{idProduct}=="e040", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Various Viewpia DR/bq Kepler
+ATTR{idVendor}=="2207", ATTR{idProduct}=="0001", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+# Isabella Her Prototype
+ATTR{idVendor}=="0b20", ATTR{idProduct}=="ddee", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+
+# Autoprobe vendor-specific, communication and PTP devices
+ENV{ID_MTP_DEVICE}!="1", ENV{MTP_NO_PROBE}!="1", ENV{COLOR_MEASUREMENT_DEVICE}!="1", ENV{libsane_matched}!="yes", ATTR{bDeviceClass}=="00|02|06|ef|ff", PROGRAM="mtp-probe /sys$env{DEVPATH} $attr{busnum} $attr{devnum}", RESULT=="1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
+
+LABEL="libmtp_rules_end"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/glibc-2.20.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/glibc-2.20.patch
new file mode 100644
index 0000000..38b45c2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/glibc-2.20.patch
@@ -0,0 +1,36 @@
+
+Include config.h so we get the defines available for subsequent
+include files
+
+Fixes errors like
+
+| In file included from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/beaglebone/usr/include/string.h:634:0,
+|                  from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/cortexa8t2hf-vfp-neon-oe-linux-gnueabi/libmtp/1.1.5-r0/libmtp-1.1.5/src/util.c:36:
+| /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/cortexa8t2hf-vfp-neon-oe-linux-gnueabi/libmtp/1.1.5-r0/libmtp-1.1.5/src/util.h:29:7: error: expected identifier or '(' before '__extension
+__'
+|  char *strndup (const char *s, size_t n);
+|        ^
+| /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/cortexa8t2hf-vfp-neon-oe-linux-gnueabi/libmtp/1.1.5-r0/libmtp-1.1.5/src/util.c:111:7: error: expected identifier or '(' before '__extensio
+n__'
+|  char *strndup (const char *s, size_t n)
+|        ^
+| make[2]: *** [libmtp_la-util.lo] Error 1
+
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+
+Index: libmtp-1.1.5/src/util.c
+===================================================================
+--- libmtp-1.1.5.orig/src/util.c	2011-01-10 05:37:21.000000000 -0800
++++ libmtp-1.1.5/src/util.c	2014-09-03 23:50:44.703563888 -0700
+@@ -22,6 +22,8 @@
+  * Boston, MA 02111-1307, USA.
+  */
+ 
++#include "config.h"
++
+ /* MSVC does not have these */
+ #ifndef _MSC_VER
+ #include <sys/time.h>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.5.bb
new file mode 100644
index 0000000..b5df8e0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.5.bb
@@ -0,0 +1,61 @@
+# TODO: include debian's mtp-tools man page (needs xsltproc-native and
+# docbook-xsl-native, or we pregenerate it), add support for doxygen
+# generation fully with -natives
+DESCRIPTION = "libmtp is an Initiator implementation of the Media Transfer \
+Protocol (MTP) in the form of a library suitable primarily for POSIX \
+compliant operating systems"
+SUMMARY = "libmtp is an Initiator implementation of the Media Transfer Protocol (MTP)"
+HOMEPAGE = "http://libmtp.sourceforge.net/"
+LICENSE = "LGPL-2.1+"
+LIC_FILES_CHKSUM = "\
+    file://COPYING;md5=0448d3676bc0de00406af227d341a4d1 \
+    file://src/ptp.c;beginline=3;endline=22;md5=dafe6cfd1782f56471bb94ab06624c1f \
+    file://examples/albums.c;beginline=5;endline=21;md5=84f4e55dfec49e898b7f68a828c15620 \
+"
+
+DEPENDS += "libusb1 gettext-native"
+
+SCM_URI = "git://git.code.sf.net/p/libmtp/code"
+SRC_URI = "\
+    ${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
+    file://69-libmtp.rules \
+    file://glibc-2.20.patch \
+"
+SRC_URI[md5sum] = "f80e45c0e6e5798c434bb1c26a7b602d"
+SRC_URI[sha256sum] = "787679171baf8b3cf2fcc03196c705ab4d7cbc969bd71f9d3696be1ce7f1c63a"
+
+# Currently we use a pregenerated rules file produced by mtp-hotplug, rather
+# than having to depend upon libmtp-native or run mtp-hotplug in a postinst.
+do_unpack[vardeps] += "skip_udev_rules_generation"
+do_unpack[postfuncs] += "skip_udev_rules_generation"
+
+skip_udev_rules_generation () {
+    sed -i -e '/^noinst_DATA=/,/util\/mtp-hotplug -H/d' ${S}/Makefile.am
+    cp ${WORKDIR}/69-libmtp.rules ${S}/
+}
+
+inherit autotools pkgconfig lib_package
+
+EXTRA_OECONF += "--disable-rpath"
+
+PACKAGECONFIG ?= "\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'largefile$', 'largefile', '', d)} \
+"
+PACKAGECONFIG[doxygen] = "--enable-doxygen,--disable-doxygen"
+PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile"
+PACKAGECONFIG[mtpz] = "--enable-mtpz,--disable-mtpz,libgcrypt"
+
+PACKAGES =+ "libmtp-common libmtp-runtime mtp-tools"
+
+RDEPENDS_${PN} += "libmtp-common"
+RRECOMMENDS_${PN} += "libmtp-runtime mtp-tools"
+FILES_${PN}-dbg += "${nonarch_base_libdir}/udev/.debug/*"
+PKG_${PN}-bin = "mtp-tools"
+SUMMARY_${PN}-bin = "Tools for communicating with MTP devices"
+DESCRIPTION_${PN}-bin = "${DESCRIPTION}\nThis package contains tools for communicating with MTP devices."
+FILES_libmtp-common = "${nonarch_base_libdir}/udev/rules.d/*"
+SUMMARY_libmtp-common = "The udev rules file for MTP devices"
+FILES_libmtp-runtime = "${nonarch_base_libdir}/udev/mtp-probe"
+DEPENDS_libmtp-runtime = "libmtp-common"
+SUMMARY_libmtp-runtime = "mtp-probe, used for the MTP udev rules"
+DESCRIPTION_libmtp-runtime = "This package provides mtp-probe, a program to probe newly connected device interfaces from userspace to determine if they are MTP devices, used for udev rules."
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.5.bb
new file mode 100644
index 0000000..8f1d1ff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.5.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Library for IPv6 Neighbor Discovery Protocol"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "http://libndp.org/files/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "beb82e8d75d8382d1b7c0bb0f68be429"
+SRC_URI[sha256sum] = "faf116ab70ce9514ec4e8573556025debea08f606e7f38b616de1f26e120c795"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
new file mode 100644
index 0000000..a558e80
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
@@ -0,0 +1,19 @@
+SUMMARY = "A packet dissection and creation library"
+# libnet at packetfactory.net is dead
+HOMEPAGE = "https://github.com/sam-github/libnet"
+SECTION = "libs"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://doc/COPYING;md5=3ec839e00408b484d33b472a86b7c266"
+DEPENDS = "libpcap"
+# There are major API changes beween libnet v1.0 and libnet v1.1
+PROVIDES = "libnet-1.2rc2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libnet-dev/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "f051e6e5bdecddb90f77c701c2ca1804"
+SRC_URI[sha256sum] = "72c380785ad44183005e654b47cc12485ee0228d7fa6b0a87109ff7614be4a63"
+
+S = "${WORKDIR}/${BPN}-${PV}"
+
+inherit autotools binconfig
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.12.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.12.6.bb
new file mode 100644
index 0000000..7a15527
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.12.6.bb
@@ -0,0 +1,16 @@
+SUMMARY = "libqmi is a library for talking to WWAN devices by QMI protocol"
+DESCRIPTION = "libqmi is a glib-based library for talking to WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libqmi"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+"
+
+DEPENDS = "glib-2.0"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "24c9eb300662ba6cff0152de89bd9ec0"
+SRC_URI[sha256sum] = "0857bffece4e8ddfa7f721dd9ca63b4c78de345ac9ae2faebf04062cacba3780"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch
new file mode 100644
index 0000000..79d4f29
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch
@@ -0,0 +1,94 @@
+Using AC_RUN_IFELSE prevent people from configuring package for
+cross-compiling. Don't run code while configuring package.
+
+Upstream-Status: Pending
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+
+Index: libtorrent-0.13.3/scripts/checks.m4
+===================================================================
+--- libtorrent-0.13.3.orig/scripts/checks.m4	2012-05-14 14:17:04.000000000 +0300
++++ libtorrent-0.13.3/scripts/checks.m4	2013-02-10 15:28:37.414445524 +0200
+@@ -95,40 +95,6 @@
+
+ AC_DEFUN([TORRENT_CHECK_KQUEUE_SOCKET_ONLY], [
+   AC_MSG_CHECKING(whether kqueue supports pipes and ptys)
+-
+-  AC_RUN_IFELSE([AC_LANG_SOURCE([
+-      #include <fcntl.h>
+-      #include <stdlib.h>
+-      #include <unistd.h>
+-      #include <sys/event.h>
+-      #include <sys/time.h>
+-      int main() {
+-        struct kevent ev@<:@2@:>@, ev_out@<:@2@:>@;
+-        struct timespec ts = { 0, 0 };
+-        int pfd@<:@2@:>@, pty@<:@2@:>@, kfd, n;
+-        char buffer@<:@9001@:>@;
+-        if (pipe(pfd) == -1) return 1;
+-        if (fcntl(pfd@<:@1@:>@, F_SETFL, O_NONBLOCK) == -1) return 2;
+-        while ((n = write(pfd@<:@1@:>@, buffer, sizeof(buffer))) == sizeof(buffer));
+-        if ((pty@<:@0@:>@=posix_openpt(O_RDWR | O_NOCTTY)) == -1) return 3;
+-        if ((pty@<:@1@:>@=grantpt(pty@<:@0@:>@)) == -1) return 4;
+-        EV_SET(ev+0, pfd@<:@1@:>@, EVFILT_WRITE, EV_ADD | EV_ENABLE, 0, 0, NULL);
+-        EV_SET(ev+1, pty@<:@1@:>@, EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, NULL);
+-        if ((kfd = kqueue()) == -1) return 5;
+-        if ((n = kevent(kfd, ev, 2, NULL, 0, NULL)) == -1) return 6;
+-        if (ev_out@<:@0@:>@.flags & EV_ERROR) return 7;
+-        if (ev_out@<:@1@:>@.flags & EV_ERROR) return 8;
+-        read(pfd@<:@0@:>@, buffer, sizeof(buffer));
+-        if ((n = kevent(kfd, NULL, 0, ev_out, 2, &ts)) < 1) return 9;
+-        return 0;
+-      }
+-      ])],
+-    [
+-      AC_MSG_RESULT(yes)
+-    ], [
+-      AC_DEFINE(KQUEUE_SOCKET_ONLY, 1, kqueue only supports sockets.)
+-      AC_MSG_RESULT(no)
+-    ])
+ ])
+
+ AC_DEFUN([TORRENT_WITH_KQUEUE], [
+Index: libtorrent-0.13.3/scripts/common.m4
+===================================================================
+--- libtorrent-0.13.3.orig/scripts/common.m4	2012-05-14 14:17:04.000000000 +0300
++++ libtorrent-0.13.3/scripts/common.m4	2013-02-10 15:27:55.874446741 +0200
+@@ -222,38 +222,10 @@
+
+ AC_DEFUN([TORRENT_CHECK_EXECINFO], [
+   AC_MSG_CHECKING(for execinfo.h)
+-
+-  AC_RUN_IFELSE([AC_LANG_SOURCE([
+-      #include <execinfo.h>
+-      int main() { backtrace((void**)0, 0); backtrace_symbols((char**)0, 0); return 0;}
+-      ])],
+-    [
+-      AC_MSG_RESULT(yes)
+-      AC_DEFINE(USE_EXECINFO, 1, Use execinfo.h)
+-    ], [
+-      AC_MSG_RESULT(no)
+-  ])
+ ])
+
+ AC_DEFUN([TORRENT_CHECK_ALIGNED], [
+   AC_MSG_CHECKING(the byte alignment)
+-
+-  AC_RUN_IFELSE([AC_LANG_SOURCE([
+-      #include <inttypes.h>
+-      int main() {
+-        char buf@<:@8@:>@ = { 0, 0, 0, 0, 1, 0, 0, 0 };
+-	int i;
+-        for (i = 1; i < 4; ++i)
+-	  if (*(uint32_t*)(buf + i) == 0) return -1;
+-	return 0;
+-	}
+-      ])],
+-    [
+-      AC_MSG_RESULT(none needed)
+-    ], [
+-      AC_DEFINE(USE_ALIGNED, 1, Require byte alignment)
+-      AC_MSG_RESULT(required)
+-  ])
+ ])
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_0.13.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_0.13.3.bb
new file mode 100644
index 0000000..4af3a6a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_0.13.3.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "libTorrent is a BitTorrent library written in C++ for *nix, \
+with a focus on high performance and good code."
+HOMEPAGE = "http://libtorrent.rakshasa.no/"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
+
+DEPENDS = "libsigc++-2.0 openssl cppunit"
+
+SRC_URI = "http://libtorrent.rakshasa.no/downloads/${BP}.tar.gz \
+    file://don-t-run-code-while-configuring-package.patch \
+"
+
+SRC_URI[md5sum] = "e94f6c590bb02aaf4d58618f738a85f2"
+SRC_URI[sha256sum] = "34317d6783b7f8d0805274c9467475b5432a246c0de8e28fc16e3b0b43f35677"
+
+inherit autotools pkgconfig
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/build-Allow-CC-and-prefix-to-be-overriden.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/build-Allow-CC-and-prefix-to-be-overriden.patch
new file mode 100644
index 0000000..b1d96ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/build-Allow-CC-and-prefix-to-be-overriden.patch
@@ -0,0 +1,37 @@
+From af485c638c61fa883212ea424e676fbf90bee594 Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Tue, 1 Jul 2014 17:37:31 -0300
+Subject: [PATCH] build: Allow CC and prefix to be overriden
+
+Upstream-Status: Pending
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ makefile |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/makefile b/makefile
+index 22e7d0d..809cc8f 100644
+--- a/makefile
++++ b/makefile
+@@ -18,7 +18,7 @@
+ KBUILD_OUTPUT =
+ 
+ DEBUG	=
+-CC	= $(CROSS_COMPILE)gcc
++CC	?= $(CROSS_COMPILE)gcc
+ VER     = -DVER=$(version)
+ CFLAGS	= -Wall $(VER) $(incdefs) $(DEBUG) $(EXTRA_CFLAGS)
+ LDLIBS	= -lm -lrt $(EXTRA_LDFLAGS)
+@@ -35,7 +35,7 @@ incdefs := $(shell $(srcdir)/incdefs.sh)
+ version := $(shell $(srcdir)/version.sh $(srcdir))
+ VPATH	= $(srcdir)
+ 
+-prefix	= /usr/local
++prefix	?= /usr/local
+ sbindir	= $(prefix)/sbin
+ mandir	= $(prefix)/man
+ man8dir	= $(mandir)/man8
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.6.bb
new file mode 100644
index 0000000..254b855
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.6.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Precision Time Protocol (PTP) according to IEEE standard 1588 for Linux"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "http://sourceforge.net/projects/linuxptp/files/v${PV}/linuxptp-${PV}.tgz \
+           file://build-Allow-CC-and-prefix-to-be-overriden.patch"
+
+SRC_URI[md5sum] = "6aa15d83f5a35f1fd076ba9adc4e7285"
+SRC_URI[sha256sum] = "e7fd16a9f235b059be527bd512e86f0c1d9f2e7c36736e6d6d9727a4427ac14c"
+
+EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} \
+		EXTRA_CFLAGS='-D_GNU_SOURCE -DHAVE_CLOCK_ADJTIME -DHAVE_ONESTEP_SYNC ${CFLAGS}'"
+
+do_install () {
+    install -d ${D}/${bindir}
+    install -p ${S}/ptp4l  ${D}/${bindir}
+    install -p ${S}/pmc  ${D}/${bindir}
+    install -p ${S}/phc2sys  ${D}/${bindir}
+    install -p ${S}/hwstamp_ctl  ${D}/${bindir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc.inc b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc.inc
new file mode 100644
index 0000000..6ff8e01
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc.inc
@@ -0,0 +1,13 @@
+DESCRIPTION = "LIRC is a package that allows you to decode and send infra-red signals of many commonly used remote controls."
+DESCRIPTION_append_lirc = " This package contains the lirc daemon, libraries and tools."
+DESCRIPTION_append_lirc-exec = " This package contains a daemon that runs programs on IR signals."
+DESCRIPTION_append_lirc-remotes = " This package contains some config files for remotes."
+DESCRIPTION_append_lirc-nslu2example = " This package contains a working config for RC5 remotes and a modified NSLU2."
+HOMEPAGE = "http://www.lirc.org"
+SECTION = "console/network"
+LICENSE = "GPLv2"
+DEPENDS = "alsa-lib libftdi libusb1 libusb-compat jack portaudio-v19"
+
+SRC_URI = "http://prdownloads.sourceforge.net/lirc/lirc-${PV}.tar.bz2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc.tmpfiles b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc.tmpfiles
new file mode 100644
index 0000000..0b80e2e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc.tmpfiles
@@ -0,0 +1 @@
+d /run/lirc 0755 root root -
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc_options.conf b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc_options.conf
new file mode 100644
index 0000000..d8ddedd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc_options.conf
@@ -0,0 +1,24 @@
+# These are the default options to lircd, if installed as
+# /etc/lirc/lirc_options.conf. See the lircd(8) and lircmd(8)
+# manpages for info on the different options.
+
+[lircd]
+nodaemon        = False
+permission      = 666
+driver          = default
+device          = /dev/lirc0
+output          = /var/run/lirc/lircd
+pidfile         = /var/run/lirc/lircd.pid
+plugindir       = /usr/lib/lirc/plugins
+allow-simulate  = No
+repeat-max      = 600
+#listen         = [address:]port
+#connect        = host[:port]
+#debug          = 5
+#uinput         = ...
+#release        = ...
+#logfile        = ...
+
+[lircmd]
+uinput          = False
+nodeamon        = False
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.conf b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.conf
new file mode 100644
index 0000000..29b03c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.conf
@@ -0,0 +1,315 @@
+# contributed by angelo castello
+#
+# note: this config file has been deduced starting from the
+#       raw codes provided to run mode2 utility.
+#
+# brand: futarque
+
+begin remote
+  name  futarque
+  bits  8
+  flags SPACE_ENC|CONST_LENGTH
+  eps   30
+  aeps  100
+
+  header       8048  3898
+  one           555  1436
+  zero          555   439
+  gap		113123
+  ptrail        555
+  pre_data_bits   8
+  pre_data     0x54
+  pre		570  3890
+
+      begin codes
+          MUTE                     0x70
+          EXIT                     0xA8
+          POWER                    0xF0
+          CHANNEL_UP               0x50
+          CHANNEL_DOWN             0xD0
+          VOLUME_UP                0x30
+          VOLUME_DOWN              0xB0
+          OK                       0x98
+          FAVORITES                0x04
+          TEXT                     0x68
+          EPG                      0xC8
+          BACK                     0x48
+          MENU                     0x88
+          1                        0x00
+          2                        0x80
+          3                        0x40
+          4                        0xC0
+          5                        0x20
+          6                        0xA0
+          7                        0x60
+          8                        0xE0
+          9                        0x10
+          0                        0x90
+          PAUSE                    0x84
+          INFO                     0x38
+          RED                      0xE8
+          GREEN                    0x08
+          YELLOW                   0x28
+          BLUE                     0x78
+          UP                       0xD8
+          DOWN                     0xB8
+          REWIND                   0x44
+          FASTFORWARD              0x24
+          PLAYPAUSE                0xC4
+          STOP                     0x64
+          RECORD                   0xA4
+          AUDIO                    0xE4
+          TAPE                     0x14
+          DVD                      0x94
+          CAPITAL_A                0xF8
+          CAPITAL_B                0x54
+      end codes
+
+end remote
+
+# brand: STM PVR-1
+
+begin remote
+  name	stm_pvr_1
+  bits	16
+  flags SPACE_ENC|CONST_LENGTH
+  eps	30
+  aeps	150
+
+  header	9000  4500
+  one		 572  1700
+  zero		 572   572
+  ptrail	 572
+  repeat	9000  2200
+  pre_data_bits	  16
+  pre_data	0xFE
+  gap		100000
+
+      begin codes
+          POWER			0x00ff
+          FAVORITES		0x7887
+          MUTE			0x28d7
+          0			0x708F
+          1			0xc03f
+          2			0x40bf
+          3			0x807f
+          4			0xe01f
+          5			0x609f
+          6			0xa05f
+          7			0xd02f
+          8			0x50af
+          9			0x906f
+          INFO			0x38c7
+          SUBTITLE		0xe817
+          MENU			0x9867
+          EXIT			0x20df
+          EPG			0xa857
+          BACK			0x48b7
+          CURSOR_UP		0x58a7
+          CURSOR_DOWN		0xd827
+          CURSOR_LEFT		0x8877
+          CURSOR_RIGHT		0xb04f
+          OK			0x10ef
+          VOLUME_UP		0x22dd
+          VOLUME_DOWN		0x8a75
+          CHANNEL_UP		0x12ed
+          CHANNEL_DOWN		0x4ab5
+          TEXT			0xf00f
+          RADIO			0x926d
+          ZOOM			0x6897
+          AUDIO			0x08f7
+          RED			0x42bd
+          GREEN			0xa25d
+          YELLOW		0x827d
+          BLUE			0x02fd
+          CUSTOM0		0x52ad
+          CUSTOM1		0x30cf
+          PLAY			0x629d
+          PAUSE			0xb24d
+          PREVIOUS		0xc837
+          NEXT			0xf807
+          REWIND		0x32cd
+          FASTFORWARD		0x0af5
+          AUX			0x7a85
+          CUSTOM3		0xb847
+          PIP			0x3ac5
+          SWAP			0xba45
+      end codes
+
+end remote
+
+# brand: STM DTV-2
+
+begin remote
+
+  name		stm_dtv_2
+  flags	SHIFT_ENC|CONST_LENGTH
+  bits		13
+  aeps	150
+
+  one		850 850
+  zero		850 850
+  plead		850
+  gap		67800
+  toggle_bit	2
+
+  begin codes
+	POWER			0x100C
+	FAVORITES		0x1015
+	AUX			0x1038
+	1			0x1001
+	2			0x1002
+	3			0x1003
+	4			0x1004
+	5			0x1005
+	6			0x1006
+	7			0x1007
+	8			0x1008
+	9			0x1009
+	PERIOD			0x1024
+	0			0x103E
+	BACK			0x1023
+	MENU			0x1016
+	INFO			0x100F
+	EPG			0x101E
+	EXIT			0x1018
+	CURSOR_UP		0x1017
+	CURSOR_DOWN		0x101D
+	CURSOR_LEFT		0x1019
+	CURSOR_RIGHT		0x101B
+	OK			0x101A
+	VOLUME_UP		0x1010
+	VOLUME_DOWN		0x1011
+	CHANNEL_UP		0x1020
+	CHANNEL_DOWN		0x1021
+	TEXT			0x102E
+	SUBTITLE		0x103C
+	FREEZE			0x1014
+	ZOOM			0x102B
+	RED			0x1028
+	GREEN			0x102A
+	YELLOW			0x102F
+	BLUE			0x1030
+	CUSTOM10		0x1022
+	INTERNET		0x1027
+	CUSTOM11		0x102C
+	AUDIO			0x1025
+	RECORD			0x102D
+	PLAYPAUSE		0x1029
+	STOP			0x1026
+	CUSTOM1			0x101C
+	MUTE			0x100d
+	CUSTOM12		0x101F
+	PIP			0x100B
+	SWAP			0x100E
+  end codes
+
+end remote
+
+# brand:  Comcast
+# model no. of remote control: XR2
+# 32 bits for the pre-date (should be value 0x170F443E)
+# width between pre_bits and data: 12900 microseconds
+#
+# 24 bits for the data (key code)
+# To get key REPEAT, XOR 0x088 with KEY value
+# There are 8 post bits (both should be zero)
+#
+# Gap between keys: 8100 microseconds
+begin remote
+
+  name Xfinity-XR2
+  bits 24
+  flags XMP
+  eps            20
+  aeps          300
+
+  one             0   137
+  zero          250   710
+  ptrail        250
+  pre_data_bits   32
+  pre_data       0x170F443E
+  post_data_bits  8
+  post_data      0x0
+  pre           250 12921
+  gap          81698
+  toggle_bit_mask 0x0
+
+      begin codes
+          1                      0x1E0001
+          1_repeat               0x168001
+          2                      0x1D0002
+          2_repeat               0x158002
+          3                      0x1C0003
+          3_repeat               0x148003
+          4                      0x1B0004
+          4_repeat               0x138004
+          5                      0x1A0005
+          5_repeat               0x128005
+          6                      0x190006
+          6_repeat               0x118006
+          7                      0x180007
+          7_repeat               0x108007
+          8                      0x170008
+          8_repeat               0x1F8008
+          9                      0x160009
+          9_repeat               0x1E8009
+          0                      0x1F0000
+          0_repeat               0x178000
+          OK                     0x180025
+          OK_repeat              0x108025
+          POWER                  0x10000F
+          POWER_repeat           0x18800F
+          UP                     0x1C0021
+          UP_repeat              0x148021
+          DOWN                   0x1B0022
+          DOWN_repeat            0x138022
+          LEFT                   0x1A0023
+          LEFT_repeat            0x128023
+          RIGHT                  0x190024
+          RIGHT_repeat           0x118024
+          REWIND                 0x190033
+          REWIND_repeat          0x118033
+          PLAY                   0x1C0030
+          PLAY_repeat            0x148030
+          FASTFORWARD            0x180034
+          FASTFORWARD_repeat     0x108034
+          RECORD                 0x170035
+          RECORD_repeat          0x1F8035
+          REPLAY                 0x170053
+          REPLAY_repeat          0x1F8053
+          A                      0x190060
+          A_repeat               0x118060
+          B                      0x180061
+          B_repeat               0x108061
+          C                      0x170062
+          C_repeat               0x1F8062
+          D                      0x160063
+          D_repeat               0x1E8063
+          PAGE_UP                0x150028
+          PAGE_UP_repeat         0x1D8028
+          PAGE_DOWN              0x140029
+          PAGE_DOWN_repeat       0x1C8029
+          GUIDE                  0x160027
+          GUIDE_repeat           0x1E8027
+          MENU                   0x1D0020
+          MENU_repeat            0x158020
+          EXIT                   0x13002A
+          EXIT_repeat            0x1B802A
+          INFO                   0x170026
+          INFO_repeat            0x1F8026
+          LAST                   0x190051
+          LAST_repeat            0x118051
+          VOLUME_UP              0x15000A
+          VOLUME_UP_repeat       0x1D800A
+          CHANNEL_UP             0x12000D
+          CHANNEL_UP_repeat      0x1A800D
+          VOLUME_DOWN            0x14000B
+          VOLUME_DOWN_repeat     0x1C800B
+          CHANNEL_DOWN           0x11000E
+          CHANNEL_DOWN_repeat    0x19800E
+          MUTE                   0x13000C
+          MUTE_repeat            0x1B800D
+      end codes
+
+end remote
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.init b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.init
new file mode 100644
index 0000000..8b124af
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.init
@@ -0,0 +1,40 @@
+#! /bin/sh
+#
+# This is an init script for Familiar
+# Copy it to /etc/init.d/lircd and type
+# > update-rc.d lircd defaults 20
+#
+
+
+test -f /usr/sbin/lircd || exit 0
+test -f /etc/lircd.conf || exit 0
+
+case "$1" in
+  start)
+    echo -n "Starting lirc daemon: lircd"
+    start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- --device=/dev/lirc0
+    echo "."
+    ;;
+  stop)
+    echo -n "Stopping lirc daemon: lircd"
+    start-stop-daemon --stop --quiet --exec /usr/sbin/lircd
+    echo "."
+    ;;
+  reload|force-reload)
+    start-stop-daemon --stop --quiet --signal 1 --exec /usr/sbin/lircd
+    ;;
+  restart)
+    echo -n "Stopping lirc daemon: lircd"
+    start-stop-daemon --stop --quiet --exec /usr/sbin/lircd
+    sleep 1
+    echo -n "Starting lirc daemon: lircd"
+    start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- --device=/dev/lirc0
+    echo "."
+    ;;
+  *)
+    echo "Usage: /etc/init.d/lircd {start|stop|reload|restart|force-reload}"
+    exit 1
+esac
+
+exit 0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.service b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.service
new file mode 100644
index 0000000..c866136
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.service
@@ -0,0 +1,20 @@
+[Unit]
+Description=LIRC Infrared Signal Decoder
+After=network.target
+
+[Service]
+Type=forking
+EnvironmentFile=/etc/lirc/lircd.conf
+PIDFile=/run/lirc/lircd.pid
+ExecStartPre=/bin/mkdir -p /run/lirc
+ExecStartPre=/bin/rm -f /dev/lircd
+ExecStartPre=/bin/rm -f /run/lirc/lircd
+ExecStartPre=/bin/ln -s /run/lirc/lircd /dev/lircd
+
+ExecStart=/usr/sbin/lircd --pidfile=/run/lirc/lircd.pid --device=/dev/lirc0
+
+ExecStopPost=/bin/rm -f /dev/lircd
+ExecStopPost=/bin/rm -fR /run/lirc
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircexec.init b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircexec.init
new file mode 100644
index 0000000..3a8c1a3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircexec.init
@@ -0,0 +1,37 @@
+#! /bin/sh
+#
+# This is an init script for Familiar
+# Copy it to /etc/init.d/lircexecd and type
+# > update-rc.d lircexecd defaults 20
+# It must be started after lircd (and it does alphabetically :-)
+# irexec reads /etc/lircrc by default
+
+
+test -f /usr/bin/irexec || exit 0
+test -f /etc/lircrc || exit 0
+
+case "$1" in
+  start)
+    echo -n "Starting lircexec daemon: irexec"
+    start-stop-daemon --start --quiet --exec /usr/bin/irexec -- --daemon
+    echo "."
+    ;;
+  stop)
+    echo -n "Stopping lircexec daemon: irexec"
+    start-stop-daemon --stop --quiet --exec /usr/bin/irexec
+    echo "."
+    ;;
+  restart|force-restart)
+    echo -n "Stopping lircexec daemon: irexec"
+    start-stop-daemon --stop --quiet --exec /usr/bin/irexec
+    sleep 1
+    echo -n "Starting lircexec daemon: irexec"
+    start-stop-daemon --start --quiet --exec /usr/bin/irexec -- --daemon
+    echo "."
+    ;;
+  *)
+    echo "Usage: /etc/init.d/lircexec {start|stop|reload|restart|force-restart}"
+    exit 1
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc_0.9.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc_0.9.2.bb
new file mode 100644
index 0000000..900b68d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc_0.9.2.bb
@@ -0,0 +1,71 @@
+require lirc.inc
+
+SRC_URI += " \
+    file://lircd.service \
+    file://lircd.init \
+    file://lircexec.init \
+    file://lircd.conf \
+    file://lirc_options.conf \
+    file://lirc.tmpfiles \
+"
+#file://0001-Adaptation-for-STM-configuration.patch \
+#
+SRC_URI[md5sum] = "3afc84e79c0839823cc20e7a710dd06d"
+SRC_URI[sha256sum] = "4e3f948fcdee6dce009171143f0cb7cd7be48593dd58138db4101a41f651a1dd"
+
+SYSTEMD_PACKAGES = "lirc"
+SYSTEMD_SERVICE_${PN} = "lircd.service lircmd.service"
+SYSTEMD_AUTO_ENABLE_lirc = "enable"
+
+inherit autotools pkgconfig systemd pythonnative
+
+PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd"
+PACKAGECONFIG[x11] = "--with-x,--with-x=no,libx11,"
+
+PACKAGECONFIG ?= " \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' systemd', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', ' x11', '', d)} \
+"
+
+#EXTRA_OEMAKE = 'SUBDIRS="lib daemons tools"'
+do_install_append() {
+    install -m 0755 -d ${D}${sysconfdir}
+    install -m 0755 -d ${D}${sysconfdir}/lirc
+    install -m 0755 -d ${D}${systemd_unitdir}/system
+    install -m 0755 -d ${D}${libdir}/tmpfiles.d
+    install -m 0644 ${WORKDIR}/lircd.conf ${D}${sysconfdir}/lirc/
+    install -m 0644 ${WORKDIR}/lirc_options.conf ${D}${sysconfdir}/lirc/
+    install -m 0644 ${WORKDIR}/lircd.service ${D}${systemd_unitdir}/system/
+    install -m 0755 ${WORKDIR}/lircexec.init ${D}${systemd_unitdir}/system/
+    install -m 0644 ${WORKDIR}/lirc.tmpfiles ${D}${libdir}/tmpfiles.d/lirc.conf
+    rm -rf ${D}${libdir}/lirc/plugins/*.la
+    rmdir ${D}/var/run/lirc ${D}/var/run
+}
+
+PACKAGES =+ "${PN}-contrib ${PN}-exec ${PN}-plugins ${PN}-python"
+
+RDEPENDS_${PN} = "bash"
+RDEPENDS_${PN}-exec = "${PN}"
+RDEPENDS_${PN}-python = "python"
+
+RRECOMMENDS_lirc = "${PN}-exec ${PN}-plugins"
+
+FILES_${PN}-plugins = "${libdir}/lirc/plugins/*.so ${datadir}/lirc/configs"
+FILES_${PN}-contrib = "${datadir}/lirc/contrib"
+FILES_${PN}-exec = "${bindir}/irexec ${sysconfdir}/lircexec"
+FILES_${PN} += "${systemd_unitdir}/system/lircexec.init"
+FILES_${PN} += "${systemd_unitdir}/system/lircd.service"
+FILES_${PN} += "${systemd_unitdir}/system/lircd.socket"
+FILES_${PN} += "${libdir}/tmpfiles.d/lirc.conf"
+FILES_${PN}-dbg += "${libdir}/lirc/plugins/.debug"
+FILES_${PN}-python += "${libdir}/python*/site-packages"
+
+
+INITSCRIPT_PACKAGES = "lirc lirc-exec"
+INITSCRIPT_NAME_lirc-exec = "lircexec"
+INITSCRIPT_PARAMS_lirc-exec = "defaults 21"
+
+# this is for distributions that don't use udev
+pkg_postinst_${PN}_append() {
+    if [ ! -c $D/dev/lirc -a ! -f /sbin/udevd ]; then mknod $D/dev/lirc c 61 0; fi
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/04-use-pkg-config-for-gnutls.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/04-use-pkg-config-for-gnutls.patch
new file mode 100644
index 0000000..20f388e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/04-use-pkg-config-for-gnutls.patch
@@ -0,0 +1,23 @@
+Description: use pkg-config to detect gnutls
+Debian: http://bugs.debian.org/529835
+Origin: http://groups.google.com/group/loudmouth-dev/browse_thread/thread/3f78255837048daf#
+
+--- a/configure.ac.orig	2009-08-16 20:29:36.000000000 +0200
++++ b/configure.ac	2009-08-16 20:30:43.000000000 +0200
+@@ -146,10 +146,12 @@ AC_ARG_WITH(openssl-libs,
+ enable_ssl=no
+ if test "x$ac_ssl" = "xgnutls"; then
+   dnl Look for GnuTLS
+-  AM_PATH_LM_LIBGNUTLS($GNUTLS_REQUIRED, have_libgnutls=yes, have_libgnutls=no)
+-  if test "x$have_libgnutls" = "xyes"; then
+-    CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
+-    LIBS="$LIBS $LIBGNUTLS_LIBS"
++  PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_REQUIRED, have_gnutls=yes, have_gnutls=no)
++  if test "x$have_gnutls" = "xyes"; then 
++    AC_SUBST(ASYNCNS_CFLAGS)
++    AC_SUBST(ASYNCNS_LIBS)
++    CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
++    LIBS="$LIBS $GNUTLS_LIBS"
+     AC_DEFINE(HAVE_GNUTLS, 1, [whether to use GnuTSL support.])
+     enable_ssl=GnuTLS
+   else
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/glib-2.32.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/glib-2.32.patch
new file mode 100644
index 0000000..b6c9422
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/glib-2.32.patch
@@ -0,0 +1,10 @@
+--- loudmouth-1.4.3.orig/loudmouth/lm-error.c	2008-10-29 21:48:15.000000000 +0100
++++ loudmouth-1.4.3/loudmouth/lm-error.c	2012-05-06 08:27:07.455739440 +0200
+@@ -19,7 +19,6 @@
+  */
+ 
+ #include <config.h>
+-#include <glib/gerror.h>
+ #include "lm-error.h"
+ 
+ /**
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb
new file mode 100644
index 0000000..4f1430b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Loudmouth is a lightweight and easy-to-use C library for programming with the Jabber protocol."
+HOMEPAGE = "http://www.loudmouth-project.org/"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c4f38aef94828f6b280e00d1173be689"
+
+DEPENDS = "glib-2.0 libcheck openssl libidn"
+
+inherit gnomebase gtk-doc
+
+PR = "r2"
+
+SRC_URI += "file://04-use-pkg-config-for-gnutls.patch \
+            file://glib-2.32.patch"
+
+SRC_URI[archive.md5sum] = "55339ca42494690c3942ee1465a96937"
+SRC_URI[archive.sha256sum] = "95a93f5d009b71ea8193d994aa11f311bc330a3efe1b7cd74dc48f11c7f929e3"
+GNOME_COMPRESS_TYPE="bz2"
+
+EXTRA_OECONF = "--with-ssl=openssl"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.4.12.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.4.12.bb
new file mode 100644
index 0000000..a173e69
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.4.12.bb
@@ -0,0 +1,49 @@
+SUMMARY = "ModemManager is a daemon controlling broadband devices/connections"
+DESCRIPTION = "ModemManager is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ModemManager/"
+LICENSE = "GPL-2.0 & LGPL-2.1"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+"
+
+inherit gnomebase gettext systemd vala gobject-introspection
+
+DEPENDS = "glib-2.0 libgudev dbus-glib"
+
+SRC_URI = "http://www.freedesktop.org/software/ModemManager/ModemManager-${PV}.tar.xz"
+SRC_URI[md5sum] = "66cc7266b15525cb366253e6639fc564"
+SRC_URI[sha256sum] = "7ef5035375a953b285a742591df0a65fd442f4641ce4d8f4392a41d6d6bc70b3"
+
+S = "${WORKDIR}/ModemManager-${PV}"
+
+PACKAGECONFIG ??= "mbim qmi polkit \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
+"
+
+PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,,"
+PACKAGECONFIG[polkit] = "--with-polkit=yes,--with-polkit=no,polkit"
+# Support WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol.
+PACKAGECONFIG[mbim] = "--with-mbim,--enable-mbim=no,libmbim"
+# Support WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol.
+PACKAGECONFIG[qmi] = "--with-qmi,--without-qmi,libqmi"
+
+FILES_${PN} += " \
+    ${datadir}/icons \
+    ${datadir}/polkit-1 \
+    ${datadir}/dbus-1 \
+    ${libdir}/ModemManager \
+    ${systemd_unitdir}/system \
+"
+
+FILES_${PN}-dev += " \
+    ${libdir}/ModemManager/*.la \
+"
+
+FILES_${PN}-staticdev += " \
+    ${libdir}/ModemManager/*.a \
+"
+
+FILES_${PN}-dbg += "${libdir}/ModemManager/.debug"
+
+SYSTEMD_SERVICE_${PN} = "ModemManager.service"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.2.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.2.4.bb
new file mode 100644
index 0000000..16e2a7d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.2.4.bb
@@ -0,0 +1,47 @@
+# NOTE: mosh-server requires a UTF-8 locale, but there's no way to add
+# an explicit dependency for this so you need to ensure this is in your
+# image yourself when you install mosh-server.
+
+SUMMARY = "Remote shell supporting roaming and high-latency connections"
+DESCRIPTION = "Remote terminal application that allows roaming, supports \
+intermittent connectivity, and provides intelligent local echo and line \
+editing of user keystrokes. Mosh is a replacement for SSH. It's more \
+robust and responsive, especially over Wi-Fi, cellular, and \
+long-distance links."
+HOMEPAGE = "http://mosh.mit.edu"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "protobuf-native protobuf ncurses zlib libio-pty-perl openssl libutempter"
+
+SRC_URI = "http://mosh.mit.edu/mosh-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "c2d918f4d91fdc32546e2e089f9281b2"
+SRC_URI[sha256sum] = "e74d0d323226046e402dd469a176075fc2013b69b0e67cea49762c957175df46"
+
+inherit autotools
+
+PACKAGE_BEFORE_PN += "${PN}-server"
+FILES_${PN}-server = "${bindir}/mosh-server"
+
+NEEDED_PERL_MODULES = "\
+	perl-module-socket \
+	perl-module-getopt-long \
+	perl-module-errno \
+	perl-module-io-socket-inet \
+	perl-module-posix \
+"
+
+# mosh uses SSH to authenticate and the client uses OpenSSH-specific features
+RDEPENDS_${PN} += "openssh-ssh ${NEEDED_PERL_MODULES}"
+# The server seemed not to work with dropbear either
+RDEPENDS_${PN}-server += "openssh-sshd ${NEEDED_PERL_MODULES}"
+
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:2100: Error: instruction not supported in Thumb16 mode -- `adds r4,r4,r4'
+#| {standard input}:2101: Error: instruction not supported in Thumb16 mode -- `adcs r5,r5,r5'
+#| {standard input}:2102: Error: instruction not supported in Thumb16 mode -- `adcs r6,r6,r6'
+#| {standard input}:2103: Error: instruction not supported in Thumb16 mode -- `adcs r7,r7,r7'
+#| {standard input}:2104: Error: selected processor does not support Thumb mode `it cs'
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager-openvpn_1.0.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager-openvpn_1.0.8.bb
new file mode 100644
index 0000000..258ee68
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager-openvpn_1.0.8.bb
@@ -0,0 +1,31 @@
+SUMMARY = "NetworkManager-openvpn-plugin"
+SECTION = "net/misc"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=100d5a599bead70ddcd70dcd73f2e29c"
+
+DEPENDS = "dbus dbus-glib networkmanager openvpn"
+
+inherit gnomebase useradd gettext systemd
+
+SRC_URI = "${GNOME_MIRROR}/NetworkManager-openvpn/${@gnome_verdir("${PV}")}/NetworkManager-openvpn-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "758a9951ad5e20a37c72cc7326c9c750"
+SRC_URI[sha256sum] = "1b979519d72ba4d78e729d4856c5b53fad914ca7ee3ca91209ce489ba78912ac"
+
+S = "${WORKDIR}/NetworkManager-openvpn-${PV}"
+
+PACKAGECONFIG[gnome] = "--with-gnome,--without-gnome"
+
+# Create user and group nm-openvpn that are needed since version 1.0.6
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system nm-openvpn"
+
+FILES_${PN} += " \
+    ${libdir}/NetworkManager/*.so \
+"
+
+RDEPENDS_${PN} = " \
+    networkmanager \
+    openvpn \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0001-don-t-try-to-run-sbin-dhclient-to-get-the-version-nu.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0001-don-t-try-to-run-sbin-dhclient-to-get-the-version-nu.patch
new file mode 100644
index 0000000..5c9ed92
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0001-don-t-try-to-run-sbin-dhclient-to-get-the-version-nu.patch
@@ -0,0 +1,36 @@
+From 7dd40db6606c3b3559365a03944cb99aee5ceabc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Thu, 4 Apr 2013 12:57:58 +0200
+Subject: [PATCH] don't try to run /sbin/dhclient to get the version number,
+ this break cross-compiling
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [build system specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ configure.ac |    6 ------
+ 1 files changed, 0 insertions(+), 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index cc66e9b..7163287 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -488,12 +488,6 @@ AS_IF([test -z "$with_dhcpcd"], with_dhcpcd=yes)
+ # Search and check the executables
+ if test "$with_dhclient" = "yes"; then
+ 	AC_PATH_PROGS(with_dhclient, dhclient, no, /sbin:/usr/sbin:/usr/local/sbin)
+-	if test "$with_dhclient" != "no"; then
+-		if ! $with_dhclient --version 2>&1 | grep -q "^isc-dhclient-4\."; then
+-			AC_MSG_WARN([Cannot use dhclient, version 4.x is required])
+-			with_dhclient=no
+-		fi
+-	fi
+ fi
+ if test "$with_dhcpcd" = "yes"; then
+ 	AC_PATH_PROGS(with_dhcpcd, dhcpcd, no, /sbin:/usr/sbin:/usr/local/sbin)
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0002-add-pkg-config-for-libgcrypt.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0002-add-pkg-config-for-libgcrypt.patch
new file mode 100644
index 0000000..bb95eaa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0002-add-pkg-config-for-libgcrypt.patch
@@ -0,0 +1,41 @@
+From a9261fee4a41045c42e0d292237cee532e11982c Mon Sep 17 00:00:00 2001
+From: Adrian <adrian.freihofer@gmail.com>
+Date: Thu, 27 Nov 2014 15:43:26 +0100
+Subject: [PATCH] add pkg config for libgcrypt
+
+---
+ configure.ac | 18 +++++++-----------
+ 1 file changed, 7 insertions(+), 11 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 94b0758..654a015 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -480,17 +480,13 @@ if test x"$ac_crypto" = xnss; then
+   with_nss=yes
+ elif test x"$ac_crypto" = xgnutls; then
+   PKG_CHECK_MODULES(GNUTLS, [gnutls >= 1.2])
+-  AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config, no)
+-  if test x"$LIBGCRYPT_CONFIG" = xno; then
+-    AC_MSG_ERROR([gnutls explicitly requested but gcrypt not found on system])
+-  else
+-    AC_DEFINE(HAVE_GNUTLS, 1, [Define if you have libgnutls])
+-    LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags`
+-    LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs`
+-    AC_SUBST(LIBGCRYPT_CFLAGS)
+-    AC_SUBST(LIBGCRYPT_LIBS)
+-    with_gnutls=yes
+-  fi
++  AC_DEFINE(HAVE_GNUTLS, 1, [Define if you have libgnutls])
++  PKG_CHECK_MODULES(LIBGCRYPT, [libgcrypt >= 1.1.42], [
++      AC_DEFINE(HAVE_GCRYPT, 1, [Define if gcrypt library is available.])
++      with_gnutls=yes
++    ], [
++      AC_MSG_ERROR([gnutls explicitly requested but gcrypt not found on system])
++    ])
+ else
+   AC_MSG_ERROR([Please choose either 'nss' or 'gnutls' for certificate and crypto operations])
+ fi
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0003-core-fix-failure-to-configure-routes-due-to-wrong-de.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0003-core-fix-failure-to-configure-routes-due-to-wrong-de.patch
new file mode 100644
index 0000000..5da536e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0003-core-fix-failure-to-configure-routes-due-to-wrong-de.patch
@@ -0,0 +1,54 @@
+From 11aa07ed939193e85516c287a57dee1837242972 Mon Sep 17 00:00:00 2001
+From: Thomas Haller <thaller@redhat.com>
+Date: Mon, 4 Jan 2016 18:54:26 +0100
+Subject: [PATCH 1/7] core: fix failure to configure routes due to wrong
+ device-route for IPv4 peer-addresses
+
+As in the case of a OpenVPN connection, we might add an address like:
+  10.8.0.58/32 ptp 10.8.0.57
+
+In this case, kernel would automatically add a device-route like:
+  10.8.0.57/32 via 0.0.0.0 dev 32 metric 0 mss 0 src rtprot-kernel scope link pref-src 10.8.0.58
+
+nm_ip4_config_commit() checks all IP addresses to figure out
+the present device-routes. Then the routes are synced by NMRouteManager.
+Due to a bug, we would not consider the peer-address, but the local-address
+and configure a route 10.8.0.58/32, instead of 10.8.0.57/32.
+
+That stays mostly unnoticed, because usually the peer and the local-address are
+in the same subnet, so that there is no difference (/32 is an example of the
+peer-address being in a different subnet).
+
+It also seems that due to a bug fixed by df4e5357521 this issue didn't surface.
+Probably because we would not notice the 10.8.0.57/32 right away and thus
+nm_route_manager_ip4_route_sync() would not wrongly delete it.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=759892
+
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809195
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809494
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809526
+https://bugs.archlinux.org/task/47535
+https://bugzilla.redhat.com/show_bug.cgi?id=1294309
+https://mail.gnome.org/archives/networkmanager-list/2015-December/msg00059.html
+---
+ src/nm-ip4-config.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c
+index f625d35..61e29af 100644
+--- a/src/nm-ip4-config.c
++++ b/src/nm-ip4-config.c
+@@ -298,7 +298,8 @@ nm_ip4_config_commit (const NMIP4Config *config, int ifindex, gboolean routes_fu
+ 
+ 				route.ifindex = ifindex;
+ 				route.source = NM_IP_CONFIG_SOURCE_KERNEL;
+-				route.network = nm_utils_ip4_address_clear_host_address (addr->address, addr->plen);
++				route.network = nm_utils_ip4_address_clear_host_address (addr->peer_address ? : addr->address,
++				                                                         addr->plen);
+ 				route.plen = addr->plen;
+ 				route.pref_src = addr->address;
+ 				route.metric = default_route_metric;
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0004-ppp-manager-clear-ppp_watch_id-upon-pppd-termination.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0004-ppp-manager-clear-ppp_watch_id-upon-pppd-termination.patch
new file mode 100644
index 0000000..41f2882
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0004-ppp-manager-clear-ppp_watch_id-upon-pppd-termination.patch
@@ -0,0 +1,29 @@
+From 8204c2a1968f757599c5ebec9a85efaacb0e522a Mon Sep 17 00:00:00 2001
+From: Beniamino Galvani <bgalvani@redhat.com>
+Date: Mon, 4 Jan 2016 14:18:02 +0100
+Subject: [PATCH 2/7] ppp-manager: clear @ppp_watch_id upon pppd termination
+
+Set @ppp_watch_id to zero upon pppd termination, otherwise the call to
+g_source_remove(priv->ppp_watch_id) in dispose() could trigger a failed
+assertion.
+
+(cherry picked from commit 5f93f0101538db39efe0f9ea2316e63bff953bf0)
+---
+ src/ppp-manager/nm-ppp-manager.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c
+index d27b262..85ca9c5 100644
+--- a/src/ppp-manager/nm-ppp-manager.c
++++ b/src/ppp-manager/nm-ppp-manager.c
+@@ -828,6 +828,7 @@ ppp_watch_cb (GPid pid, gint status, gpointer user_data)
+ 
+ 	nm_log_dbg (LOGD_PPP, "pppd pid %d cleaned up", priv->pid);
+ 	priv->pid = 0;
++	priv->ppp_watch_id = 0;
+ 	g_signal_emit (manager, signals[STATE_CHANGED], 0, NM_PPP_STATUS_DEAD);
+ }
+ 
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0005-device-update-ip_iface-only-if-IP-interface-exists.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0005-device-update-ip_iface-only-if-IP-interface-exists.patch
new file mode 100644
index 0000000..05c2dca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0005-device-update-ip_iface-only-if-IP-interface-exists.patch
@@ -0,0 +1,45 @@
+From cbcb848e6d4f4e8c4aa11c80f1f3dbb7fb2d397e Mon Sep 17 00:00:00 2001
+From: Beniamino Galvani <bgalvani@redhat.com>
+Date: Mon, 4 Jan 2016 14:22:01 +0100
+Subject: [PATCH 3/7] device: update @ip_iface only if IP interface exists
+
+If @ip_ifindex is zero, the IP interface has disappeared and
+there's no point in updating @ip_iface.
+
+Actually, unconditionally updating @ip_iface is dangerous because it
+breaks the assumption used by other functions (as
+nm_device_get_ip_ifindex()) that a non-NULL @ip_iface implies a valid
+@ip_ifindex. This was causing the scary failure:
+
+  devices/nm-device.c:666:get_ip_iface_identifier: assertion failed: (ifindex)
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1268617
+(cherry picked from commit ed536998f9530698ff3082fc5587dbeb7d3a594f)
+---
+ src/devices/nm-device.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
+index bb39ca5..4413e92 100644
+--- a/src/devices/nm-device.c
++++ b/src/devices/nm-device.c
+@@ -1526,12 +1526,13 @@ device_ip_link_changed (NMDevice *self)
+ {
+ 	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
+ 	const NMPlatformLink *pllink;
+-	int ip_ifindex;
+ 
+ 	priv->device_ip_link_changed_id = 0;
+ 
+-	ip_ifindex = nm_device_get_ip_ifindex (self);
+-	pllink = nm_platform_link_get (NM_PLATFORM_GET, ip_ifindex);
++	if (!priv->ip_ifindex)
++		return G_SOURCE_REMOVE;
++
++	pllink = nm_platform_link_get (NM_PLATFORM_GET, priv->ip_ifindex);
+ 	if (!pllink)
+ 		return G_SOURCE_REMOVE;
+ 
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0006-Fix-nm-version-macro-includes.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0006-Fix-nm-version-macro-includes.patch
new file mode 100644
index 0000000..aa57c83
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager/0006-Fix-nm-version-macro-includes.patch
@@ -0,0 +1,58 @@
+From 7274bbadd398a69b8babf47431f80d35e0228c42 Mon Sep 17 00:00:00 2001
+From: Adrian Freihofer <adrian.freihofer@gmail.com>
+Date: Mon, 18 Jan 2016 08:53:26 +0100
+Subject: [PATCH] Fix nm-version-macro includes
+
+nm-version-macros.h cannot be found since include directive has
+been changed from " to <. This breaks for example gnome-panel
+build:
+/usr/include/NetworkManager/NetworkManager.h:31:31:
+fatal error: nm-version-macros.h: No such file or directory.
+---
+ libnm-core/nm-version.h     | 2 +-
+ libnm-util/NetworkManager.h | 2 +-
+ libnm-util/nm-version.h     | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/libnm-core/nm-version.h b/libnm-core/nm-version.h
+index 730330a..d751bc1 100644
+--- a/libnm-core/nm-version.h
++++ b/libnm-core/nm-version.h
+@@ -23,7 +23,7 @@
+ 
+ #include <glib.h>
+ 
+-#include <nm-version-macros.h>
++#include "nm-version-macros.h"
+ 
+ /* Deprecation / Availability macros */
+ 
+diff --git a/libnm-util/NetworkManager.h b/libnm-util/NetworkManager.h
+index d83e4ab..3a964fc 100644
+--- a/libnm-util/NetworkManager.h
++++ b/libnm-util/NetworkManager.h
+@@ -28,7 +28,7 @@
+ 
+ /* This header must not include glib or libnm. */
+ 
+-#include <nm-version-macros.h>
++#include "nm-version-macros.h"
+ 
+ /*
+  * dbus services details
+diff --git a/libnm-util/nm-version.h b/libnm-util/nm-version.h
+index 63895dd..41101a4 100644
+--- a/libnm-util/nm-version.h
++++ b/libnm-util/nm-version.h
+@@ -23,7 +23,7 @@
+ 
+ #include <glib.h>
+ 
+-#include <nm-version-macros.h>
++#include "nm-version-macros.h"
+ 
+ /* Deprecation / Availability macros */
+ 
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager_1.0.10.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager_1.0.10.bb
new file mode 100644
index 0000000..831ddf0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/networkmanager/networkmanager_1.0.10.bb
@@ -0,0 +1,124 @@
+SUMMARY = "NetworkManager"
+SECTION = "net/misc"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=cbbffd568227ada506640fe950a4823b \
+                    file://libnm-util/COPYING;md5=1c4fa765d6eb3cd2fbd84344a1b816cd \
+                    file://docs/api/html/license.html;md5=51d7fb67bde992e58533a8481cee070b \
+"
+
+DEPENDS = "libnl dbus dbus-glib libgudev util-linux libndp libnewt polkit"
+
+inherit gnomebase gettext systemd bluetooth bash-completion vala gobject-introspection
+
+SRC_URI = " \
+    ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \
+    file://0001-don-t-try-to-run-sbin-dhclient-to-get-the-version-nu.patch \
+    file://0002-add-pkg-config-for-libgcrypt.patch \
+    file://0003-core-fix-failure-to-configure-routes-due-to-wrong-de.patch \
+    file://0004-ppp-manager-clear-ppp_watch_id-upon-pppd-termination.patch \
+    file://0005-device-update-ip_iface-only-if-IP-interface-exists.patch \
+    file://0006-Fix-nm-version-macro-includes.patch \
+"
+SRC_URI[md5sum] = "a8f54460a4708efd840358f32d0968fd"
+SRC_URI[sha256sum] = "1bcfce8441dfd9f432a100d06b54f3831a2275cccc3b74b1b4c09a011e179fbc"
+
+S = "${WORKDIR}/NetworkManager-${PV}"
+
+EXTRA_OECONF = " \
+    --disable-ifcfg-rh \
+    --disable-ifnet \
+    --disable-ifcfg-suse \
+    --disable-more-warnings \
+    --with-iptables=${sbindir}/iptables \
+    --with-tests \
+    --with-nmtui=yes \
+"
+
+do_compile_prepend() {
+        export GIR_EXTRA_LIBS_PATH="${B}/libnm-util/.libs"
+}
+
+PACKAGECONFIG ??= "nss ifupdown netconfig dhclient dnsmasq \
+    ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','consolekit',d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES','bluetooth','${BLUEZ}','',d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES','wifi','wifi','',d)} \
+"
+PACKAGECONFIG[systemd] = " \
+    --with-systemdsystemunitdir=${systemd_unitdir}/system --with-session-tracking=systemd --enable-polkit, \
+    --without-systemdsystemunitdir, \
+    polkit \
+"
+PACKAGECONFIG[bluez5] = "--enable-bluez5-dun,--disable-bluez5-dun,bluez5"
+# consolekit is not picked by shlibs, so add it to RDEPENDS too
+PACKAGECONFIG[consolekit] = "--with-session-tracking=consolekit,,consolekit,consolekit"
+PACKAGECONFIG[concheck] = "--with-libsoup=yes,--with-libsoup=no,libsoup-2.4"
+PACKAGECONFIG[modemmanager] = "--with-modem-manager-1=yes,--with-modem-manager-1=no,modemmanager"
+PACKAGECONFIG[ppp] = "--enable-ppp,--disable-ppp,ppp,ppp"
+# Use full featured dhcp client instead of internal one
+PACKAGECONFIG[dhclient] = "--with-dhclient=${base_sbindir}/dhclient,,,dhcp-client"
+PACKAGECONFIG[dnsmasq] = "--with-dnsmasq=${bindir}/dnsmasq"
+PACKAGECONFIG[nss] = "--with-crypto=nss,,nss"
+PACKAGECONFIG[gnutls] = "--with-crypto=gnutls,,gnutls libgcrypt"
+PACKAGECONFIG[wifi] = "--enable-wifi=yes,--enable-wifi=no,wireless-tools,wpa-supplicant wireless-tools"
+PACKAGECONFIG[ifupdown] = "--enable-ifupdown,--disable-ifupdown"
+PACKAGECONFIG[netconfig] = "--with-netconfig=yes,--with-netconfig=no"
+PACKAGECONFIG[qt4-x11-free] = "--enable-qt,--disable-qt,qt4-x11-free"
+
+PACKAGES =+ "libnmutil libnmglib libnmglib-vpn ${PN}-tests \
+  ${PN}-nmtui ${PN}-nmtui-doc \
+  ${PN}-adsl \
+"
+
+FILES_libnmutil += "${libdir}/libnm-util.so.*"
+FILES_libnmglib += "${libdir}/libnm-glib.so.*"
+FILES_libnmglib-vpn += "${libdir}/libnm-glib-vpn.so.*"
+
+FILES_${PN}-adsl = "${libdir}/NetworkManager/libnm-device-plugin-adsl.so"
+
+FILES_${PN} += " \
+    ${libexecdir} \
+    ${libdir}/pppd/*/nm-pppd-plugin.so \
+    ${libdir}/NetworkManager/*.so \
+    ${datadir}/polkit-1 \
+    ${datadir}/dbus-1 \
+    ${base_libdir}/udev/* \
+    ${systemd_unitdir}/system \
+"
+
+RRECOMMENDS_${PN} += "iptables \
+    ${@bb.utils.contains('PACKAGECONFIG','dnsmasq','dnsmasq','',d)} \
+"
+RCONFLICTS_${PN} = "connman"
+
+FILES_${PN}-dbg += " \
+    ${libdir}/NetworkManager/.debug/ \
+    ${libdir}/pppd/*/.debug/ \
+"
+
+FILES_${PN}-dev += " \
+    ${datadir}/NetworkManager/gdb-cmd \
+    ${libdir}/pppd/*/*.la \
+    ${libdir}/NetworkManager/*.la \
+"
+
+FILES_${PN}-tests = " \
+    ${bindir}/nm-online \
+"
+
+FILES_${PN}-nmtui = " \
+    ${bindir}/nmtui \
+    ${bindir}/nmtui-edit \
+    ${bindir}/nmtui-connect \
+    ${bindir}/nmtui-hostname \
+"
+
+FILES_${PN}-nmtui-doc = " \
+    ${mandir}/man1/nmtui* \
+"
+
+SYSTEMD_SERVICE_${PN} = "NetworkManager.service NetworkManager-dispatcher.service"
+
+do_install_append() {
+    rm -rf ${D}/run ${D}${localstatedir}/run
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
new file mode 100644
index 0000000..c2c284e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "obex-data-server is a D-Bus service providing high-level OBEX client and server side functionality"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "gtk+ dbus-glib imagemagick openobex"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','bluez5','bluez5','bluez4',d)}"
+
+SRC_URI = "http://tadas.dailyda.com/software/obex-data-server-${PV}.tar.gz"
+SRC_URI[md5sum] = "961ca5db6fe9c97024e133cc6203cc4d"
+SRC_URI[sha256sum] = "b399465ddbd6d0217abedd9411d9d74a820effa0a6a142adc448268d3920094f"
+
+inherit autotools-brokensep pkgconfig
+
+FILES_${PN} += "${datadir}/dbus-1/"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex-1.5/disable-cable-test.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex-1.5/disable-cable-test.patch
new file mode 100644
index 0000000..95b636d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex-1.5/disable-cable-test.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- openobex-1.2/apps/Makefile.am~disable-cable-test
++++ openobex-1.2/apps/Makefile.am
+@@ -6,7 +6,7 @@
+ 	obex_io.c obex_io.h \
+ 	obex_put_common.c obex_put_common.h
+ 
+-bin_PROGRAMS = irxfer obex_tcp irobex_palm3 obex_test
++bin_PROGRAMS = irxfer obex_tcp irobex_palm3
+ 
+ obex_test_SOURCES = \
+ 	obex_test.c obex_test.h \
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex-1.5/libusb_crosscompile_check.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex-1.5/libusb_crosscompile_check.patch
new file mode 100644
index 0000000..1177dfe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex-1.5/libusb_crosscompile_check.patch
@@ -0,0 +1,11 @@
+--- /tmp/acinclude.m4	2009-04-12 10:32:15.000000000 +0200
++++ openobex-1.5/acinclude.m4	2009-04-12 10:32:38.000000000 +0200
+@@ -158,7 +158,7 @@
+ 		;;
+ 	*)
+ 		PKG_CHECK_MODULES(USB, libusb, usb_lib_found=yes, AC_MSG_RESULT(no))
+-		AC_CHECK_FILE(${prefix}/lib/pkgconfig/libusb.pc, REQUIRES="libusb")
++		REQUIRES="libusb"
+ 		;;
+ 	esac
+ 	AC_SUBST(USB_CFLAGS)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex-1.5/separate_builddir.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex-1.5/separate_builddir.patch
new file mode 100644
index 0000000..8abf8ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex-1.5/separate_builddir.patch
@@ -0,0 +1,16 @@
+Fix detection of IrDA failing with B!=S
+
+Upstream-Status: Pending
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+--- a/acinclude.m4	2014-05-24 14:05:41.757796816 +0100
++++ b/acinclude.m4	2014-05-24 14:03:06.556795536 +0100
+@@ -54,6 +54,7 @@
+ ])
+ 
+ AC_DEFUN([AC_PATH_IRDA_LINUX], [
++	CPPFLAGS="${CPPFLAGS} -I${srcdir}"
+ 	AC_CACHE_CHECK([for IrDA support], irda_found, [
+ 		AC_TRY_COMPILE([
+ 				#include <sys/socket.h>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.5.bb
new file mode 100644
index 0000000..6ac7905
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.5.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "The Openobex project is an open source implementation of the \
+Object Exchange (OBEX) protocol."
+HOMEPAGE = "http://openobex.triq.net"
+SECTION = "libs"
+DEPENDS = "virtual/libusb0"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','bluez5','bluez5','bluez4',d)}"
+
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
+                    file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+"
+
+SRC_URI = "http://www.kernel.org/pub/linux/bluetooth/openobex-${PV}.tar.gz \
+           file://disable-cable-test.patch \
+           file://libusb_crosscompile_check.patch \
+           file://separate_builddir.patch"
+
+SRC_URI[md5sum] = "0d83dc86445a46a1b9750107ba7ab65c"
+SRC_URI[sha256sum] = "e602047570799a47ecb028420bda8f2cef41310e5a99d084de10aa9422935e65"
+
+inherit autotools binconfig pkgconfig
+
+EXTRA_OECONF = "--enable-apps --enable-syslog"
+
+do_install_append() {
+    install -d ${D}${datadir}/aclocal
+    install -m 0644 ${S}/openobex.m4 ${D}${datadir}/aclocal
+}
+
+PACKAGES += "openobex-apps"
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}/openobex-config"
+FILES_${PN}-apps = "${bindir}/*"
+DEBIAN_NOAUTONAME_${PN}-apps = "1"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obexftp/obexftp/Remove_some_printf_in_obexftpd.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obexftp/obexftp/Remove_some_printf_in_obexftpd.patch
new file mode 100644
index 0000000..8b73af3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obexftp/obexftp/Remove_some_printf_in_obexftpd.patch
@@ -0,0 +1,34 @@
+Signed-off-by: Jun Zhu <R01007@freescale.com>
+
+Upstream-Status:  Not applicable
+
+diff -Nru obexftp-0.23/apps.orig/obexftpd.c obexftp-0.23/apps/obexftpd.c
+--- obexftp-0.23/apps.orig/obexftpd.c	2013-11-08 10:42:20.816631583 +0800
++++ obexftp-0.23/apps/obexftpd.c	2013-11-08 10:44:18.628634893 +0800
+@@ -639,7 +639,7 @@
+ 	struct stat statbuf;
+ 	//char *namebuf = NULL;
+ 
+-	fprintf(stderr, "put_done>>>\n");
++	//fprintf(stderr, "put_done>>>\n");
+ 	while(OBEX_ObjectGetNextHeader(handle, object, &hi, &hv, &hlen))	{
+ 		switch(hi)	{
+ 		case OBEX_HDR_BODY:
+@@ -671,7 +671,7 @@
+ 		}
+ 	}
+ 	if(!body)	{
+-		printf("Got a PUT without a body\n");
++		//printf("Got a PUT without a body\n");
+ 		OBEX_ObjectSetRsp(object, OBEX_RSP_CONTINUE, OBEX_RSP_SUCCESS);
+ 	}
+ 	if(!name)	{
+@@ -807,7 +807,7 @@
+ 			
+ 		switch(obex_cmd) {
+ 		case OBEX_CMD_PUT:
+-			fprintf(stderr, "obex_ev_progress: obex_cmd_put\n");
++			//fprintf(stderr, "obex_ev_progress: obex_cmd_put\n");
+ 			put_done(handle, obj, 0);
+ 			break;
+ 		default:
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obexftp/obexftp_0.23.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obexftp/obexftp_0.23.bb
new file mode 100644
index 0000000..fcd447c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/obexftp/obexftp_0.23.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "A tool for transfer files to/from any OBEX enabled device"
+LICENSE = "GPLv2 & LGPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+DEPENDS += "openobex"
+
+# Depends on openobex
+PNBLACKLIST[obexftp] ?= "${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez5 conflicts with bluez4 and bluez5 is selected in DISTRO_FEATURES', '', d)}"
+
+SRC_URI = "http://sourceforge.net/projects/openobex/files/obexftp/${PV}/obexftp-${PV}.tar.bz2 \
+           file://Remove_some_printf_in_obexftpd.patch "
+
+SRC_URI[md5sum] = "f20762061b68bc921e80be4aebc349eb"
+SRC_URI[sha256sum] = "44a74ff288d38c0f75354d6bc2efe7d6dec10112eaff2e7b10e292b0d2105b36"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF += "--disable-tcl --disable-perl --disable-python --disable-ruby"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb
new file mode 100644
index 0000000..dde4599
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb
@@ -0,0 +1,37 @@
+# Copyright (C) 2014-2015 Freescale Semiconductor
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
+                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SUMMARY = "Set of Bluetooth related tools for inclusion in images"
+DESCRIPTION = "Includes bluetooth specific tools for this version of BlueZ.\
+These tools are used at runtime. \
+Supports BlueZ4 and BlueZ5."
+
+inherit packagegroup
+inherit bluetooth
+
+RDEPENDS_bluez4 = " \
+    obexftp \
+"
+
+RDEPENDS_bluez5 = " \
+    bluez5-noinst-tools \
+    bluez5-obex \
+    bluez5-testtools  \
+    libasound-module-bluez \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', \
+        'pulseaudio-module-bluetooth-discover \
+         pulseaudio-module-bluetooth-policy \
+         pulseaudio-module-bluez5-discover \
+         pulseaudio-module-bluez5-device \
+         pulseaudio-module-switch-on-connect \
+         pulseaudio-module-loopback', \
+        '', d)} \
+"
+
+# Install bluez4 tools or bluez5 tools depending on what is specified in the distro.
+# Otherwise install nothing.
+RDEPENDS_${PN} = "${RDEPENDS_${BLUEZ}}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/phonet-utils/phonet-utils_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/phonet-utils/phonet-utils_git.bb
new file mode 100644
index 0000000..5589963
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/phonet-utils/phonet-utils_git.bb
@@ -0,0 +1,13 @@
+SUMMARY = "This small package provides a few command line tools for Linux Phonet"
+HOMEPAGE = ""
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+SRC_URI = "git://gitorious.org/meego-cellular/phonet-utils.git;branch=master"
+PR = "r2"
+S = "${WORKDIR}/git"
+SRCREV = "4acfa720fd37d178a048fc2be17180137d4a70ea"
+PV = "0.0.0+gitr${SRCPV}"
+
+inherit autotools-brokensep
+
+FILES_${PN} += "${base_libdir}/udev/rules.d/85-phonet-utils.rules"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.7.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.7.0.bb
new file mode 100644
index 0000000..e9846fd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.7.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "A C-language AMQP client library for use with v2.0+ of the RabbitMQ broker"
+HOMEPAGE = "https://github.com/alanxz/rabbitmq-c"
+LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=6b7424f9db80cfb11fdd5c980b583f53"
+LICENSE = "MIT"
+
+SRC_URI = "git://github.com/alanxz/rabbitmq-c.git"
+SRCREV = "4dde30ce8d984edda540349f57eb7995a87ba9de"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "popt openssl"
+
+EXTRA_OECONF = "--disable-examples --enable-tools --disable-docs"
+
+inherit autotools pkgconfig
+
+PACKAGE_BEFORE_PN += "${PN}-tools"
+FILES_${PN}-tools = "${bindir}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill/0001-rfkill-makefile-don-t-use-t-the-OE-install-wrapper-d.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill/0001-rfkill-makefile-don-t-use-t-the-OE-install-wrapper-d.patch
new file mode 100644
index 0000000..c6f60d0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill/0001-rfkill-makefile-don-t-use-t-the-OE-install-wrapper-d.patch
@@ -0,0 +1,30 @@
+From db764080e54f8f998c28ef8dab78da8b8d1d1420 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 11 Feb 2011 10:35:40 +0100
+Subject: [PATCH] rfkill makefile: don't use -t, the OE install wrapper dislikes it
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ Makefile |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 8d6c700..3652690 100644
+--- a/Makefile
++++ b/Makefile
+@@ -53,10 +53,10 @@ check:
+ install: rfkill rfkill.8.gz
+ 	@$(NQ) ' INST rfkill'
+ 	$(Q)$(MKDIR) $(DESTDIR)$(SBINDIR)
+-	$(Q)$(INSTALL) -m 755 -t $(DESTDIR)$(SBINDIR) rfkill
++	$(Q)$(INSTALL) -m 755 rfkill $(DESTDIR)$(SBINDIR) 
+ 	@$(NQ) ' INST rfkill.8'
+ 	$(Q)$(MKDIR) $(DESTDIR)$(MANDIR)/man8/
+-	$(Q)$(INSTALL) -m 644 -t $(DESTDIR)$(MANDIR)/man8/ rfkill.8.gz
++	$(Q)$(INSTALL) -m 644 rfkill.8.gz $(DESTDIR)$(MANDIR)/man8/
+ 
+ clean:
+ 	$(Q)rm -f rfkill *.o *~ *.gz version.c *-stamp
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill/dont.call.git.rev-parse.on.parent.dir.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill/dont.call.git.rev-parse.on.parent.dir.patch
new file mode 100644
index 0000000..2b83689
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill/dont.call.git.rev-parse.on.parent.dir.patch
@@ -0,0 +1,31 @@
+When WORKDIR is included in some other git checkout, version.sh calls git rev-parse
+and it returns some description from that upper git checkout even when rfkill is
+being built from release tarball.
+
+When returned description doesn't match with expected v0.4, version.sh exits
+without creating version.c
+    # on git builds check that the version number above
+    # is correct...
+    [ "${descr%%-*}" = "v$VERSION" ] || exit 2
+
+and build fails a bit later:
+    | NOTE: make -j 32 -e MAKEFLAGS=
+    |  CC   rfkill.o
+    |  GEN  version.c
+    | make: *** [version.c] Error 2
+    | make: *** Waiting for unfinished jobs....
+    | ERROR: oe_runmake failed
+
+Don't try git rev-parse, if there isn't .git in ${S}.
+
+--- a/version.sh	2013-11-15 03:43:12.587744366 -0800
++++ b/version.sh	2013-11-15 03:42:40.699743320 -0800
+@@ -12,7 +12,7 @@
+ 
+ if test "x$SUFFIX" != 'x'; then
+ 	v="$VERSION$SUFFIX"
+-elif head=`git rev-parse --verify HEAD 2>/dev/null`; then
++elif test -d .git && head=`git rev-parse --verify HEAD 2>/dev/null`; then
+ 	git update-index --refresh --unmerged > /dev/null
+ 	descr=$(git describe 2>/dev/null || echo "v$VERSION")
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb
new file mode 100644
index 0000000..3e64476
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Radio enable/disable command line utility"
+HOMEPAGE = "http://linuxwireless.org/en/users/Documentation/rfkill"
+SECTION = "base"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c6036d0eb7edbfced28c4160e5d3fa94"
+
+SRC_URI = "http://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.bz2 \
+           file://0001-rfkill-makefile-don-t-use-t-the-OE-install-wrapper-d.patch \
+           file://dont.call.git.rev-parse.on.parent.dir.patch"
+
+SRC_URI[md5sum] = "b957713a6cfbcd8ac0e94420aeddcf1a"
+SRC_URI[sha256sum] = "3e160cca504a53679f2b3254f31c53a4fb38a021bc50fed8eb57a436d33dfa07"
+
+do_compile() {
+    oe_runmake
+}
+
+do_install() {
+    oe_runmake DESTDIR=${D} install
+}
+
+inherit update-alternatives
+
+ALTERNATIVE_${PN} = "rfkill"
+ALTERNATIVE_PRIORITY = "60"
+ALTERNATIVE_LINK_NAME[rfkill] = "${sbindir}/rfkill"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch
new file mode 100644
index 0000000..79d4f29
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch
@@ -0,0 +1,94 @@
+Using AC_RUN_IFELSE prevent people from configuring package for
+cross-compiling. Don't run code while configuring package.
+
+Upstream-Status: Pending
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+
+Index: libtorrent-0.13.3/scripts/checks.m4
+===================================================================
+--- libtorrent-0.13.3.orig/scripts/checks.m4	2012-05-14 14:17:04.000000000 +0300
++++ libtorrent-0.13.3/scripts/checks.m4	2013-02-10 15:28:37.414445524 +0200
+@@ -95,40 +95,6 @@
+
+ AC_DEFUN([TORRENT_CHECK_KQUEUE_SOCKET_ONLY], [
+   AC_MSG_CHECKING(whether kqueue supports pipes and ptys)
+-
+-  AC_RUN_IFELSE([AC_LANG_SOURCE([
+-      #include <fcntl.h>
+-      #include <stdlib.h>
+-      #include <unistd.h>
+-      #include <sys/event.h>
+-      #include <sys/time.h>
+-      int main() {
+-        struct kevent ev@<:@2@:>@, ev_out@<:@2@:>@;
+-        struct timespec ts = { 0, 0 };
+-        int pfd@<:@2@:>@, pty@<:@2@:>@, kfd, n;
+-        char buffer@<:@9001@:>@;
+-        if (pipe(pfd) == -1) return 1;
+-        if (fcntl(pfd@<:@1@:>@, F_SETFL, O_NONBLOCK) == -1) return 2;
+-        while ((n = write(pfd@<:@1@:>@, buffer, sizeof(buffer))) == sizeof(buffer));
+-        if ((pty@<:@0@:>@=posix_openpt(O_RDWR | O_NOCTTY)) == -1) return 3;
+-        if ((pty@<:@1@:>@=grantpt(pty@<:@0@:>@)) == -1) return 4;
+-        EV_SET(ev+0, pfd@<:@1@:>@, EVFILT_WRITE, EV_ADD | EV_ENABLE, 0, 0, NULL);
+-        EV_SET(ev+1, pty@<:@1@:>@, EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, NULL);
+-        if ((kfd = kqueue()) == -1) return 5;
+-        if ((n = kevent(kfd, ev, 2, NULL, 0, NULL)) == -1) return 6;
+-        if (ev_out@<:@0@:>@.flags & EV_ERROR) return 7;
+-        if (ev_out@<:@1@:>@.flags & EV_ERROR) return 8;
+-        read(pfd@<:@0@:>@, buffer, sizeof(buffer));
+-        if ((n = kevent(kfd, NULL, 0, ev_out, 2, &ts)) < 1) return 9;
+-        return 0;
+-      }
+-      ])],
+-    [
+-      AC_MSG_RESULT(yes)
+-    ], [
+-      AC_DEFINE(KQUEUE_SOCKET_ONLY, 1, kqueue only supports sockets.)
+-      AC_MSG_RESULT(no)
+-    ])
+ ])
+
+ AC_DEFUN([TORRENT_WITH_KQUEUE], [
+Index: libtorrent-0.13.3/scripts/common.m4
+===================================================================
+--- libtorrent-0.13.3.orig/scripts/common.m4	2012-05-14 14:17:04.000000000 +0300
++++ libtorrent-0.13.3/scripts/common.m4	2013-02-10 15:27:55.874446741 +0200
+@@ -222,38 +222,10 @@
+
+ AC_DEFUN([TORRENT_CHECK_EXECINFO], [
+   AC_MSG_CHECKING(for execinfo.h)
+-
+-  AC_RUN_IFELSE([AC_LANG_SOURCE([
+-      #include <execinfo.h>
+-      int main() { backtrace((void**)0, 0); backtrace_symbols((char**)0, 0); return 0;}
+-      ])],
+-    [
+-      AC_MSG_RESULT(yes)
+-      AC_DEFINE(USE_EXECINFO, 1, Use execinfo.h)
+-    ], [
+-      AC_MSG_RESULT(no)
+-  ])
+ ])
+
+ AC_DEFUN([TORRENT_CHECK_ALIGNED], [
+   AC_MSG_CHECKING(the byte alignment)
+-
+-  AC_RUN_IFELSE([AC_LANG_SOURCE([
+-      #include <inttypes.h>
+-      int main() {
+-        char buf@<:@8@:>@ = { 0, 0, 0, 0, 1, 0, 0, 0 };
+-	int i;
+-        for (i = 1; i < 4; ++i)
+-	  if (*(uint32_t*)(buf + i) == 0) return -1;
+-	return 0;
+-	}
+-      ])],
+-    [
+-      AC_MSG_RESULT(none needed)
+-    ], [
+-      AC_DEFINE(USE_ALIGNED, 1, Require byte alignment)
+-      AC_MSG_RESULT(required)
+-  ])
+ ])
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_0.9.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_0.9.3.bb
new file mode 100644
index 0000000..eb0a39a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_0.9.3.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Torrent client"
+HOMEPAGE = "http://libtorrent.rakshasa.no/"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "libsigc++-2.0 curl cppunit libtorrent ncurses"
+
+SRC_URI = "http://libtorrent.rakshasa.no/downloads/${BP}.tar.gz \
+    file://don-t-run-code-while-configuring-package.patch \
+"
+
+SRC_URI[md5sum] = "0bf2f262faa8c8c8d3b11ce286ea2bf2"
+SRC_URI[sha256sum] = "9e93ca41beb1afe74ad7ad8013e0d53ae3586c9b0e97263d722f721535cc7310"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_2.9.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_2.9.1.bb
new file mode 100644
index 0000000..8fe6a6f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_2.9.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "A serial to network proxy"
+SECTION = "console/network"
+HOMEPAGE = "http://sourceforge.net/projects/ser2net/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/ser2net/ser2net/ser2net-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "80011ac0e60bbdcb65f1d7a86251e3f3"
+SRC_URI[sha256sum] = "fdee1e69903cf409bdc6f32403a566cbc6006aa9e2a4d6f8f12b90dfd5ca0d0e"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND += "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3/fix-makefile-override.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3/fix-makefile-override.patch
new file mode 100644
index 0000000..f0a1d33
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3/fix-makefile-override.patch
@@ -0,0 +1,24 @@
+Upstream-Status: Backport [debian]
+
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -37,16 +37,15 @@
+ # Use the following only on GNU/Linux and only if you need ps listing like "smsd: MAINPROCESS" and "smsd: GSM1"
+ # CFLAGS += -D USE_LINUX_PS_TRICK
+ 
+-all: smsd 
+-
+-smsd: smsd.c extras.o locking.o cfgfile.o logging.o alarm.o smsd_cfg.o charset.o stats.o blacklist.o whitelist.o modeminit.o pdu.o
+-
+ ifneq (,$(findstring SOLARIS,$(CFLAGS)))
+ ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS)))
+ override LFLAGS += -lsocket -lnsl
+ endif
+ endif
+ 
++all: smsd 
++
++smsd: smsd.c extras.o locking.o cfgfile.o logging.o alarm.o smsd_cfg.o charset.o stats.o blacklist.o whitelist.o modeminit.o pdu.o
+ ifneq (,$(findstring NOSTATS,$(CFLAGS)))
+ 	$(CC) $(CFLAGS) -o $@ $^ $(LFLAGS)
+ else 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3/sms_binpath_and_psops.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3/sms_binpath_and_psops.patch
new file mode 100644
index 0000000..ffcaa09
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3/sms_binpath_and_psops.patch
@@ -0,0 +1,19 @@
+Index: smstools3/scripts/sms3
+===================================================================
+--- smstools3.orig/scripts/sms3	2010-05-04 11:21:44.000000000 +0200
++++ smstools3/scripts/sms3	2015-02-22 20:05:51.615074469 +0100
+@@ -24,11 +24,11 @@
+ # Logfile can also be defined in here:
+ LOGFILE="/var/log/smsd.log"
+ 
+-DAEMON=/usr/local/bin/smsd
++DAEMON=/usr/bin/smsd
+ # A program which turns power off for couple of seconds:
+-RESETMODEMS=/usr/local/bin/smsd_resetmodems
++RESETMODEMS=/usr/bin/smsd_resetmodems
+ NAME=smsd
+-PSOPT="-e"
++PSOPT=""
+ ECHO=echo
+ case `uname` in
+   *BSD|Darwin)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.15.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.15.bb
new file mode 100644
index 0000000..95adecd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.15.bb
@@ -0,0 +1,46 @@
+SUMMARY = "SMS Gateway software"
+DESCRIPTION = "The SMS Server Tools 3 is a SMS Gateway software which can send and receive short messages through GSM modems and mobile phones."
+SECTION = "console/network"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4d21efa1bb2a186360dde4035f860682"
+HOMEPAGE = "http://smstools3.kekekasvi.com"
+
+SRC_URI = "http://smstools3.kekekasvi.com/packages/${BP}.tar.gz \
+           file://sms_binpath_and_psops.patch \
+           file://fix-makefile-override.patch"
+
+SRC_URI[md5sum] = "0241ef60e646fac1a06254a848e61ed7"
+SRC_URI[sha256sum] = "ed00ffaeaa312a5b4f969f4e97a64603a866bbe16e393ea02f5bf05234814d59"
+
+
+S = "${WORKDIR}/${BPN}"
+
+RDEPENDS_${PN} = "bash"
+INITSCRIPT_NAME = "sms3"
+INITSCRIPT_PARAMS = "defaults"
+
+inherit update-rc.d
+
+do_install () {
+	
+	install -d ${D}${bindir}	
+	install -m 755 ${S}/src/smsd "${D}${bindir}/smsd"
+	
+	install -m 755 ${S}/scripts/sendsms "${D}${bindir}/sendsms"
+	install -m 755 ${S}/scripts/sms2html "${D}${bindir}/sms2html"
+	install -m 755 ${S}/scripts/sms2unicode "${D}${bindir}/sms2unicode" 
+	install -m 755 ${S}/scripts/unicode2sms "${D}${bindir}/unicode2sms"
+
+	install -d ${D}${sysconfdir}	
+	install -m 644 ${S}/examples/smsd.conf.easy "${D}${sysconfdir}/smsd.conf"
+
+	install -d "${D}${localstatedir}/spool"
+	install -d "${D}${localstatedir}/spool/sms"
+	install -d "${D}${localstatedir}/spool/sms/incoming"
+	install -d "${D}${localstatedir}/spool/sms/outgoing"
+	install -d "${D}${localstatedir}/spool/sms/checked"
+
+	install -d ${D}${sysconfdir}/init.d
+	install -m 755 ${S}/scripts/sms3 "${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}"
+
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/soft66/files/fix-ar.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/soft66/files/fix-ar.patch
new file mode 100644
index 0000000..bf1ffdf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/soft66/files/fix-ar.patch
@@ -0,0 +1,13 @@
+---
+ configure.ac |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- git.orig/configure.ac
++++ git/configure.ac
+@@ -7,5 +7,6 @@ AC_PROG_CC
+ AC_CONFIG_HEADERS([config.h])
+ AC_CONFIG_FILES([Makefile lib/Makefile tools/Makefile])
+ PKG_CHECK_MODULES([FTDI], [libftdi >= 0.13])
+ AC_OUTPUT
+ AM_PROG_CC_C_O
++AM_PROG_AR
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/soft66/soft66_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/soft66/soft66_git.bb
new file mode 100644
index 0000000..b649526
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/soft66/soft66_git.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Library and tools for Soft66ADD and related SDR radio receivers"
+LICENSE = "GPLv3 & LGPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
+                    file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02 "
+
+PNBLACKLIST[soft66] ?= "BROKEN: depends on broken libftdi"
+
+DEPENDS = "libftdi"
+
+PV = "0.1.3+gitr${SRCPV}"
+PR = "r1"
+
+SRCREV = "a1dab25e73896c90c98227ac8055f227b830d512"
+SRC_URI = "git://home.horsten.com/soft66 \
+file://fix-ar.patch"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/libtelepathy/doublefix.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/libtelepathy/doublefix.patch
new file mode 100644
index 0000000..a7737fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/libtelepathy/doublefix.patch
@@ -0,0 +1,18 @@
+Fix double reference to this file to work with recent autoconf+automake
+
+RP 1/2/10
+
+Upstream-Status: Inappropriate [configuration]
+
+Index: libtelepathy-0.3.3/src/Makefile.am
+===================================================================
+--- libtelepathy-0.3.3.orig/src/Makefile.am	2010-02-01 13:13:50.869038984 +0000
++++ libtelepathy-0.3.3/src/Makefile.am	2010-02-01 13:14:23.267789456 +0000
+@@ -27,7 +27,6 @@
+     tp-chan-type-text-gen.h \
+     tp-chan-type-tubes-gen.h \
+     tp-conn-iface-aliasing-gen.h \
+-    tp-conn-iface-avatars-gen.h \
+     tp-conn-iface-capabilities-gen.h \
+     tp-conn-iface-contact-info-gen.h \
+     tp-conn-iface-forwarding-gen.h \
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/libtelepathy/prefer_python_2.5.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/libtelepathy/prefer_python_2.5.patch
new file mode 100644
index 0000000..37679ab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/libtelepathy/prefer_python_2.5.patch
@@ -0,0 +1,15 @@
+Upstream-Status: Inappropriate [configuration]
+
+Index: libtelepathy-0.3.1/configure.ac
+===================================================================
+--- libtelepathy-0.3.1.orig/configure.ac	2007-11-22 19:05:56.000000000 +0000
++++ libtelepathy-0.3.1/configure.ac	2008-01-04 12:07:28.000000000 +0000
+@@ -51,7 +51,7 @@
+   AC_MSG_ERROR([xsltproc (from the libxslt source package) is required])
+ fi
+ 
+-AC_CHECK_PROGS([PYTHON], [python2.3 python2.4 python2.5 python])
++AC_CHECK_PROGS([PYTHON], [python2.5 python2.4 python2.3 python])
+ if test -z "$PYTHON"; then
+   AC_MSG_ERROR([Python is required to compile this package])
+ fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/libtelepathy_0.3.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/libtelepathy_0.3.3.bb
new file mode 100644
index 0000000..f13e709
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/libtelepathy_0.3.3.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Telepathy framework"
+DESCRIPTION = "Telepathy is a D-Bus framework for unifying real time \
+communication, including instant messaging, voice calls and video calls.  It \
+abstracts differences between protocols to provide a unified interface for \
+applications."
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+DEPENDS = "glib-2.0 dbus dbus-glib telepathy-glib libxslt-native"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+                    file://src/tp-conn.c;beginline=1;endline=19;md5=4c58069f77d601cc59200bce5396c7cb"
+PR = "r5"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/libtelepathy/libtelepathy-${PV}.tar.gz \
+           file://prefer_python_2.5.patch \
+           file://doublefix.patch"
+
+SRC_URI[md5sum] = "490ca1a0c614d4466394b72d43bf7370"
+SRC_URI[sha256sum] = "e0d230be855125163579743418203c6f6be2f10f98c4f065735c1dc9ed115878"
+
+inherit autotools pkgconfig pythonnative
+
+FILES_${PN} += "${datadir}/telepathy \
+		${datadir}/dbus-1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.0.bb
new file mode 100644
index 0000000..01c6e37
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Telepathy Framework glib-base helper library"
+DESCRIPTION = "Telepathy Framework: GLib-based helper library for connection managers"
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+DEPENDS = "glib-2.0 dbus hostpython-runtime-native dbus-native dbus-glib libxslt-native"
+LICENSE = "LGPLv2.1+"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-glib/${BP}.tar.gz"
+SRC_URI[md5sum] = "93c429e37750b25dcf8de86bb514664f"
+SRC_URI[sha256sum] = "ae0002134991217f42e503c43dea7817853afc18863b913744d51ffa029818cf"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e413d83db6ee8f2c8e6055719096a48e"
+
+inherit autotools pkgconfig gettext gobject-introspection
+
+FILES_${PN} += "${datadir}/telepathy \
+                ${datadir}/dbus-1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle/fix-svc-gtk-doc.h-target.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle/fix-svc-gtk-doc.h-target.patch
new file mode 100644
index 0000000..2cd2c78
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle/fix-svc-gtk-doc.h-target.patch
@@ -0,0 +1,15 @@
+Upstream-Status: Pending
+
+Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
+--- a/extensions/Makefile.am
++++ b/extensions/Makefile.am
+@@ -37,8 +37,8 @@ _gen/all.xml: all.xml $(wildcard $(srcdi
+ 		--xinclude $(tools_dir)/identity.xsl \
+ 		$< > $@
+ 
+-extensions.html: _gen/all.xml $(tools_dir)/doc-generator.xsl
++extensions.html _gen/svc-gtk-doc.h: _gen/all.xml $(tools_dir)/doc-generator.xsl
+ 	$(AM_V_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) \
+ 		$(tools_dir)/doc-generator.xsl \
+ 		$< > $@
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
new file mode 100644
index 0000000..ca09f6d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Telepathy IRC connection manager"
+DESCRIPTION = "Telepathy implementation of the Internet Relay Chat protocols."
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+DEPENDS = "glib-2.0 dbus telepathy-glib openssl libxslt-native"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+                    file://src/idle.c;beginline=1;endline=19;md5=b06b1e2594423111a1a7910b0eefc7f9"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
+           file://fix-svc-gtk-doc.h-target.patch"
+SRC_URI[md5sum] = "92a2de5198284cbd3c430b0d1a971a86"
+SRC_URI[sha256sum] = "3013ad4b38d14ee630b8cc8ada5e95ccaa849b9a6fe15d2eaf6d0717d76f2fab"
+
+inherit autotools pkgconfig pythonnative
+
+FILES_${PN} += "${datadir}/telepathy \
+                ${datadir}/dbus-1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-mission-control/tmc-Makefile-fix-race.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-mission-control/tmc-Makefile-fix-race.patch
new file mode 100644
index 0000000..ece1da6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-mission-control/tmc-Makefile-fix-race.patch
@@ -0,0 +1,76 @@
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Sun, 22 Sep 2013 23:21:01 -0400
+Subject: [PATCH] src/Makefile.am: fix race issue for _gen/gtypes.h and _gen/gtypes-body.h
+
+There might be an error when parallel build:
+
+[snip]
+Traceback (most recent call last):
+  File "/path/to/tools/glib-gtypes-generator.py", line 304, in <module>
+    GTypesGenerator(dom, argv[1], argv[2])()
+  File "/path/to/tools/glib-gtypes-generator.py", line 295, in __call__
+    file_set_contents(self.output + '.h', ''.join(self.header))
+  File "/path/to/tools/libtpcodegen.py", line 42, in file_set_contents
+    os.rename(filename + '.tmp', filename)
+OSError: [Errno 2] No such file or directory
+[snip]
+
+This is a race issue, the _gen/gtypes.h and _gen/gtypes-body.h may
+write(remove/rename) _gen/gtypes.tmp at the same time, then there would
+be the error.
+
+There was a similar bug in telepathy-glib which was already fixed, we use the
+similar patch to fix it.
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ src/Makefile.am |   18 +++++++++++++++---
+ 1 file changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -288,7 +288,11 @@ _gen/interfaces-body.h: _gen/mcd.xml \
+ 		$(tools_dir)/glib-interfaces-body-generator.xsl \
+ 		$< > $@
+ 
+-_gen/gtypes.h _gen/gtypes-body.h: _gen/mcd.xml \
++# do nothing, output as a side-effect
++_gen/gtypes.h: _gen/gtypes-body.h
++	@:
++
++_gen/gtypes-body.h: _gen/mcd.xml \
+ 	$(top_srcdir)/tools/glib-gtypes-generator.py
+ 	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/tools/glib-gtypes-generator.py \
+ 		$< _gen/gtypes mc
+@@ -309,7 +313,11 @@ _gen/%.xml: %.xml $(wildcard $(top_srcdir)/xml/*.xml) Makefile.am
+ 	$(AM_V_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \
+ 		$< > $@
+ 
+-_gen/cli-%-body.h _gen/cli-%.h: _gen/%.xml \
++# do nothing, output as a side-effect
++_gen/cli-%.h: _gen/cli-%-body.h
++	@:
++
++_gen/cli-%-body.h: _gen/%.xml \
+ 	$(tools_dir)/glib-client-gen.py Makefile.am
+ 	$(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \
+ 		--group=`echo $* | tr x- x_` \
+@@ -317,7 +325,11 @@ _gen/cli-%-body.h _gen/cli-%.h: _gen/%.xml \
+ 		--tp-proxy-api=0.7.6 \
+ 		$< Mc_Cli _gen/cli-$*
+ 
+-_gen/svc-%.c _gen/svc-%.h: _gen/%.xml \
++# do nothing, output as a side-effect
++_gen/svc-%.h: _gen/svc-%.c
++	@:
++
++_gen/svc-%.c: _gen/%.xml \
+ 	$(tools_dir)/glib-ginterface-gen.py Makefile.am
+ 	$(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-ginterface-gen.py \
+ 		--filename=_gen/svc-$* \
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-mission-control_5.16.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-mission-control_5.16.1.bb
new file mode 100644
index 0000000..9ae68dd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-mission-control_5.16.1.bb
@@ -0,0 +1,51 @@
+SUMMARY = "Central control for Telepathy IM connection managers"
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/Mission_Control/"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
+                    file://src/request.h;beginline=1;endline=21;md5=f80534d9af1c33291b3b79609f196eb2"
+SECTION = "libs"
+DEPENDS = "libtelepathy dbus-glib gconf libxslt-native"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-mission-control/${BP}.tar.gz \
+           file://tmc-Makefile-fix-race.patch \
+          "
+SRC_URI[md5sum] = "421115a35b9e427807326877f86e7f43"
+SRC_URI[sha256sum] = "14ceb7d53535b43d44b8271ad11319d1d0fe6d193d154636b9e62b42799b9723"
+
+inherit autotools-brokensep pkgconfig pythonnative
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[upower] = "--enable-upower,--disable-upower,upower"
+
+# to select connman or nm you need to use "connectivity" and "connman" or "nm", default is to disable both
+PACKAGECONFIG[connectivity] = ",--with-connectivity=no"
+PACKAGECONFIG[connman] = "--with-connectivity=connman,,connman"
+PACKAGECONFIG[nm] = "--with-connectivity=nm,,networkmanager"
+
+PACKAGES =+ " \
+	libmissioncontrol \
+	libmissioncontrol-config \
+	libmissioncontrol-server \
+	libmissioncontrol-dev \
+	libmissioncontrol-config-dev \
+	libmissioncontrol-server-dev \
+	libmissioncontrol-dbg \
+	libmissioncontrol-config-dbg \
+	libmissioncontrol-server-dbg \
+"
+
+FILES_${PN} += "${datadir}/dbus* ${datadir}/glib-2.0/schemas"
+
+FILES_libmissioncontrol = "${libdir}/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config = "${libdir}/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server = "${libdir}/libmissioncontrol-server.so.*"
+
+FILES_libmissioncontrol-dev = "${libdir}/libmissioncontrol.* \
+                               ${includedir}/libmissioncontrol/ \
+                               ${libdir}/pkgconfig/libmissioncontrol.pc"
+FILES_libmissioncontrol-config-dev = "${libdir}/libmissioncontrol-config.*"
+FILES_libmissioncontrol-server-dev = "${libdir}/libmissioncontrol-server.*"
+
+FILES_libmissioncontrol-dbg = "${libdir}/.debug/libmissioncontrol.so.*"
+FILES_libmissioncontrol-config-dbg = "${libdir}/.debug/libmissioncontrol-config.so.*"
+FILES_libmissioncontrol-server-dbg = "${libdir}/.debug/libmissioncontrol-server.so.*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python-0.15.19/parallel_make.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python-0.15.19/parallel_make.patch
new file mode 100644
index 0000000..2488246
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python-0.15.19/parallel_make.patch
@@ -0,0 +1,43 @@
+Add dependency of __init__.py
+
+Tasks must be done after exec of __init__, which creates the
+src/_generated directory that tasks are based on.
+
+Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
+
+Upstream-Status: Submitted
+(However it seems that this project is out of maintanence.)
+
+diff -ruN telepathy-python-0.15.19-orig/src/Makefile.am telepathy-python-0.15.19/src/Makefile.am
+--- telepathy-python-0.15.19-orig/src/Makefile.am	2011-03-10 08:51:49.000000000 +0800
++++ telepathy-python-0.15.19/src/Makefile.am	2011-03-10 08:54:45.000000000 +0800
+@@ -39,17 +39,17 @@
+ XSLTPROC_OPTS = --nonet --novalid --xinclude
+ tools_dir = $(top_srcdir)/tools
+ 
+-_generated/interfaces.py: $(tools_dir)/python-interfaces-generator.xsl $(wildcard $(spec_dir)/*.xml)
++_generated/interfaces.py: _generated/__init__.py $(tools_dir)/python-interfaces-generator.xsl $(wildcard $(spec_dir)/*.xml)
+ 	$(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_OPTS) -o $@ \
+ 	    $(tools_dir)/python-interfaces-generator.xsl \
+ 	    $(spec_dir)/all.xml
+ 
+-_generated/constants.py: $(tools_dir)/python-constants-generator.xsl $(wildcard $(spec_dir)/*.xml)
++_generated/constants.py: _generated/__init__.py $(tools_dir)/python-constants-generator.xsl $(wildcard $(spec_dir)/*.xml)
+ 	$(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_OPTS) -o $@ \
+ 	    $(tools_dir)/python-constants-generator.xsl \
+ 	    $(spec_dir)/all.xml
+ 
+-_generated/errors.py: $(tools_dir)/python-errors-generator.xsl $(wildcard $(spec_dir)/*.xml)
++_generated/errors.py: _generated/__init__.py $(tools_dir)/python-errors-generator.xsl $(wildcard $(spec_dir)/*.xml)
+ 	$(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_OPTS) -o $@ \
+ 	    $(tools_dir)/python-errors-generator.xsl \
+ 	    $(spec_dir)/all.xml
+@@ -58,7 +58,7 @@
+ 	$(AM_V_GEN)$(mkdir_p) $(dir $@)
+ 	@echo "# Placeholder for package" > $@
+ 
+-_generated/%.py: $(tools_dir)/spec-to-python.xsl $(spec_dir)/%.xml
++_generated/%.py: _generated/__init__.py $(tools_dir)/spec-to-python.xsl $(spec_dir)/%.xml
+ 	$(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_OPTS) -o $@ \
+ 	    $(tools_dir)/spec-to-python.xsl \
+ 	    $(spec_dir)/$*.xml
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python-0.15.19/remove_duplicate_install.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python-0.15.19/remove_duplicate_install.patch
new file mode 100644
index 0000000..df95a4c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python-0.15.19/remove_duplicate_install.patch
@@ -0,0 +1,26 @@
+commit f6c67662145de889055a86a6b3b12c70a45fc8d5
+Author: Dongxiao Xu <dongxiao.xu@intel.com>
+Date:   Wed Sep 7 16:02:20 2011 +0800
+
+    Avoid duplicated installation of errors.py
+    
+    newer version of autotools don't seem to like listing files to install
+    twice. Remove one errors.py from the installation list.
+    
+    Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
+    
+    Upstream-Status: Inappropirate [upstream inactive]
+    
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 5c27dfe..7536e43 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -11,7 +11,7 @@ telepathy_PYTHON = \
+ 
+ # telepathy._generated.* auto-generated modules
+ spec_dir = $(top_srcdir)/spec
+-spec_files := $(patsubst $(spec_dir)%.xml,_generated%.py,$(wildcard $(spec_dir)/*.xml))
++spec_files := $(filter-out _generated/errors.py, $(patsubst $(spec_dir)%.xml,_generated%.py,$(wildcard $(spec_dir)/*.xml)))
+ 
+ BUILT_SOURCES = \
+ 	_generated/interfaces.py \
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python-0.15.19/telepathy-python_fix_for_automake_1.12.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python-0.15.19/telepathy-python_fix_for_automake_1.12.patch
new file mode 100644
index 0000000..f613fdc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python-0.15.19/telepathy-python_fix_for_automake_1.12.patch
@@ -0,0 +1,26 @@
+Upstream-Status: Pending
+
+automake 1.12 has deprecated use of mkdir_p, and it recommends
+use of MKDIR_P instead. Changed the code to avoid these kind 
+of warning-errors.
+
+| make[1]: _generated/: Command not found
+| make[1]: *** [_generated/__init__.py] Error 127
+| make[1]: Leaving directory `/srv/home/nitin/builds2/build0/tmp/work/i586-poky-linux/telepathy-python-0.15.19-r4/telepathy-python-0.15.19/src'
+| make: *** [all-recursive] Error 1
+
+Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
+2012/07/10
+Index: telepathy-python-0.15.19/src/Makefile.am
+===================================================================
+--- telepathy-python-0.15.19.orig/src/Makefile.am
++++ telepathy-python-0.15.19/src/Makefile.am
+@@ -55,7 +55,7 @@ _generated/errors.py: _generated/__init_
+ 	    $(spec_dir)/all.xml
+ 
+ _generated/__init__.py:
+-	$(AM_V_GEN)$(mkdir_p) $(dir $@)
++	$(AM_V_GEN)$(MKDIR_P) $(dir $@)
+ 	@echo "# Placeholder for package" > $@
+ 
+ _generated/%.py: _generated/__init__.py $(tools_dir)/spec-to-python.xsl $(spec_dir)/%.xml
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb
new file mode 100644
index 0000000..b7aea24
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-python_0.15.19.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Telepathy IM framework - Python package"
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+                    file://src/utils.py;beginline=1;endline=17;md5=9a07d1a9791a7429a14e7b25c6c86822"
+
+DEPENDS = "libxslt-native"
+RDEPENDS_${PN} += "python-dbus"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
+           file://parallel_make.patch \
+           file://remove_duplicate_install.patch \
+           file://telepathy-python_fix_for_automake_1.12.patch"
+
+PR = "r6"
+
+inherit autotools pythonnative
+
+SRC_URI[md5sum] = "f7ca25ab3c88874015b7e9728f7f3017"
+SRC_URI[sha256sum] = "244c0e1bf4bbd78ae298ea659fe10bf3a73738db550156767cc2477aedf72376"
+
+FILES_${PN} += "\
+    ${libdir}/python*/site-packages/telepathy/*.py \
+    ${libdir}/python*/site-packages/telepathy/*/*.py \
+"
+
+do_install_append () {
+    rm -f ${D}${libdir}/python*/site-packages/telepathy/*.pyc
+    rm -f ${D}${libdir}/python*/site-packages/telepathy/*.pyo
+    rm -f ${D}${libdir}/python*/site-packages/telepathy/*/*.pyc
+    rm -f ${D}${libdir}/python*/site-packages/telepathy/*/*.pyo
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/umip/umip_1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/umip/umip_1.0.bb
new file mode 100644
index 0000000..e80c1b1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/umip/umip_1.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Mobile IPv6 and NEMO for Linux"
+DESCRIPTION = "UMIP is an open source implementation of Mobile IPv6 and NEMO \
+Basic Support for Linux. It is released under the GPLv2 license. It supports \
+the following IETF RFC: RFC6275 (Mobile IPv6), RFC3963 (NEMO), RFC3776 and \
+RFC4877 (IPsec and IKEv2)."
+HOMEPAGE = "http://umip.org/"
+SECTION = "System Environment/Base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=073dc31ccb2ebed70db54f1e8aeb4c33"
+DEPENDS = "rpm indent-native"
+
+SRC_URI = "git://git.umip.org/umip.git"
+SRCREV = "428974c2d0d8e75a2750a3ab0488708c5dfdd8e3"
+
+S = "${WORKDIR}/git"
+EXTRA_OE_CONF = "--enable-vt"
+
+inherit autotools-brokensep
+
+PARALLEL_MAKE = ""
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
new file mode 100644
index 0000000..52bf811
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "This daemon is in charge of multiplexing connections over USB to an iPhone or iPod touch."
+LICENSE = "GPLv3 & GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=ebb5c50ab7cab4baeffba14977030c07 \
+                    file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://COPYING.LGPLv2.1;md5=6ab17b41640564434dda85c06b7124f7"
+
+DEPENDS = "udev libusb1"
+
+inherit cmake pkgconfig gitpkgv
+
+PKGV = "${GITPKGVTAG}"
+
+SRCREV = "919587580c5e77f3936f3432115d2e10c7bac7c5"
+SRC_URI = "git://git.sukimashita.com/usbmuxd.git;protocol=http"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN} += "${base_libdir}/udev/rules.d/"
+
+# fix usbmuxd installing files to /usr/lib64 on 64bit hosts:
+EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib', True).replace('lib', '')}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[plist] = "-DWANT_PLIST=1,-DWANT_PLIST=0,libplist"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial/typo_pon.wvdial.1.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial/typo_pon.wvdial.1.patch
new file mode 100644
index 0000000..eec5a5d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial/typo_pon.wvdial.1.patch
@@ -0,0 +1,20 @@
+Remove warnings found by lintian
+Last-Update: 2011-01-09
+Index: wvdial-1.61/pon.wvdial.1
+===================================================================
+--- wvdial-1.61.orig/pon.wvdial.1	2011-01-09 21:33:03.000000000 +0300
++++ wvdial-1.61/pon.wvdial.1	2011-01-09 21:33:15.000000000 +0300
+@@ -8,13 +8,11 @@
+ .SH DESCRIPTION
+ .B pon.wvdial
+ .br
+-.TR
+ .B poff.wvdial
+ .br
+ .RS
+ Replacement scripts for pon and poff.
+ .RE
+-\."
+ .SH SEE ALSO
+ .BR wvdial (1),
+ .BR pon (1),
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
new file mode 100644
index 0000000..f7adf4c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
@@ -0,0 +1,30 @@
+HOMEPAGE = "http://www.alumnit.ca/wiki/?WvDial"
+DESCRIPTION = "WvDial is a program that makes it easy to connect your Linux workstation to the Internet."
+
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
+
+DEPENDS = "wvstreams"
+RDEPENDS_${PN} = "ppp"
+
+SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.bz2 \
+           file://typo_pon.wvdial.1.patch \
+          "
+
+SRC_URI[md5sum] = "37e9a2d664effe4efd44c0e1a20136de"
+SRC_URI[sha256sum] = "99906d9560cbdbc97e1855e7b0a7169f1e11983be3ac539140423f09debced82"
+
+EXTRA_OEMAKE = ""
+export WVLINK="${LD}"
+
+PARALLEL_MAKE = ""
+
+BUILD_CPPFLAGS += "-I${STAGING_INCDIR}/wvstreams"
+
+do_configure() {
+    sed -i 's/LDFLAGS+=-luniconf/LIBS+=-luniconf/' ${S}/Makefile
+}
+
+do_install() {
+    oe_runmake prefix=${D}/usr PPPDIR=${D}/etc/ppp/peers install
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/04_signed_request.diff b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/04_signed_request.diff
new file mode 100644
index 0000000..5ab633b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/04_signed_request.diff
@@ -0,0 +1,13 @@
+Index: wvstreams-4.6/crypto/wvx509.cc
+===================================================================
+--- wvstreams-4.6.orig/crypto/wvx509.cc	2009-07-29 11:58:16.000000000 -0400
++++ wvstreams-4.6/crypto/wvx509.cc	2009-07-29 11:58:43.000000000 -0400
+@@ -325,7 +325,7 @@
+     }
+ 
+     int verify_result = X509_REQ_verify(certreq, pk);
+-    if (verify_result == 0)
++    if (verify_result == 0 || verify_result == -1)
+     {
+ 	debug(WvLog::Warning, "Self signed request failed");
+ 	X509_REQ_free(certreq);
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff
new file mode 100644
index 0000000..8e4fd03
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff
@@ -0,0 +1,41 @@
+Index: wvstreams-4.6.1/crypto/wvx509.cc
+===================================================================
+--- wvstreams-4.6.1.orig/crypto/wvx509.cc	2011-05-20 00:02:38.119136584 +0200
++++ wvstreams-4.6.1/crypto/wvx509.cc	2011-05-20 00:02:26.035136589 +0200
+@@ -1157,7 +1157,7 @@
+         
+         if (ext)
+         {
+-            X509V3_EXT_METHOD *method = X509V3_EXT_get(ext);
++            X509V3_EXT_METHOD *method = (X509V3_EXT_METHOD *)X509V3_EXT_get(ext);
+             if (!method)
+             {
+                 WvDynBuf buf;
+Index: wvstreams-4.6.1/ipstreams/wvunixdgsocket.cc
+===================================================================
+--- wvstreams-4.6.1.orig/ipstreams/wvunixdgsocket.cc	2011-05-20 00:02:38.391136584 +0200
++++ wvstreams-4.6.1/ipstreams/wvunixdgsocket.cc	2011-05-20 00:02:35.283136585 +0200
+@@ -1,8 +1,6 @@
+ #include "wvunixdgsocket.h"
+-#ifdef MACOS
+ #include <sys/types.h>
+ #include <sys/stat.h>
+-#endif
+ 
+ WvUnixDGSocket::WvUnixDGSocket(WvStringParm filename, bool _server, int perms)
+     : socketfile(filename)
+Index: wvstreams-4.6.1/streams/wvatomicfile.cc
+===================================================================
+--- wvstreams-4.6.1.orig/streams/wvatomicfile.cc	2011-05-20 00:02:38.223136584 +0200
++++ wvstreams-4.6.1/streams/wvatomicfile.cc	2011-05-20 00:02:31.619136587 +0200
+@@ -10,10 +10,7 @@
+ #include "wvatomicfile.h"
+ #include "wvfileutils.h"
+ #include "wvstrutils.h"
+-
+-#ifdef MACOS
+ #include <sys/stat.h>
+-#endif
+ 
+ WvAtomicFile::WvAtomicFile(WvStringParm filename, int flags, mode_t create_mode)
+     : tmp_file(WvString::null)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/06_gcc-4.7.diff b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/06_gcc-4.7.diff
new file mode 100644
index 0000000..a75067a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/06_gcc-4.7.diff
@@ -0,0 +1,18 @@
+Description: Fix FTBFS with gcc-4.7
+ Small header include change. This is borderlinde cosmetic, but still needed
+ to prevent the FTBFS.
+Author: Paul Tagliamonte <paultag@ubuntu.com>
+Origin: vendor
+Bug-Debian: http://bugs.debian.org/667418
+Last-Update: 2012-04-13
+
+--- wvstreams-4.6.1.orig/utils/wvuid.cc
++++ wvstreams-4.6.1/utils/wvuid.cc
+@@ -33,6 +33,7 @@ wvuid_t wvgetuid()
+ 
+ #else // not WIN32
+ 
++#include <unistd.h>
+ 
+ WvString wv_username_from_uid(wvuid_t uid)
+ {
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/07_buildflags.diff b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/07_buildflags.diff
new file mode 100644
index 0000000..ec99dcd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/07_buildflags.diff
@@ -0,0 +1,32 @@
+Index: b/gen-cc
+===================================================================
+--- a/gen-cc
++++ b/gen-cc
+@@ -15,6 +15,11 @@
+ 	shift
+ 	shift
+ 	
++	echo $CC \$MODE -o \$BASE.o \$BASE.$EXT \\
++	        -MMD -MF \$DEPFILE -MP -MQ \$BASE.o \\
++	        $CPPFLAGS \\
++	        $CFLAGS \\
++	        "\$@"
+ 	$CC \$MODE -o \$BASE.o \$BASE.$EXT \\
+ 	        -MMD -MF \$DEPFILE -MP -MQ \$BASE.o \\
+ 	        $CPPFLAGS \\
+Index: b/wvrules-posix.mk
+===================================================================
+--- a/wvrules-posix.mk
++++ b/wvrules-posix.mk
+@@ -35,11 +35,6 @@
+ # Default compiler we use for linking
+ WVLINK_CC = $(CXX)
+ 
+-ifneq ("$(enable_optimization)", "no")
+-  CXXFLAGS+=-O2
+-  CFLAGS+=-O2
+-endif
+-
+ ifneq ("$(enable_warnings)", "no")
+   CXXFLAGS+=-Wall -Woverloaded-virtual
+   CFLAGS+=-Wall
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
new file mode 100644
index 0000000..6199a2f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
@@ -0,0 +1,48 @@
+HOMEPAGE = "http://alumnit.ca/wiki/index.php?page=WvStreams"
+SUMMARY = "WvStreams is a network programming library in C++"
+
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=55ca817ccb7d5b5b66355690e9abc605"
+
+DEPENDS = "zlib openssl (>= 0.9.8) dbus readline"
+
+SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.gz \
+           file://04_signed_request.diff \
+           file://05_gcc.diff \
+           file://06_gcc-4.7.diff \
+           file://07_buildflags.diff \
+          "
+
+SRC_URI[md5sum] = "2760dac31a43d452a19a3147bfde571c"
+SRC_URI[sha256sum] = "8403f5fbf83aa9ac0c6ce15d97fd85607488152aa84e007b7d0621b8ebc07633"
+
+inherit autotools-brokensep pkgconfig
+
+PARALLEL_MAKE = ""
+
+TARGET_CFLAGS_append = " -fno-tree-dce -fno-optimize-sibling-calls"
+
+LDFLAGS_append = " -Wl,-rpath-link,${CROSS_DIR}/${TARGET_SYS}/lib"
+
+EXTRA_OECONF = " --without-tcl --without-qt --without-pam --without-valgrind"
+
+PACKAGES_prepend = "libuniconf libuniconf-dbg "
+PACKAGES_prepend = "uniconfd uniconfd-dbg "
+PACKAGES_prepend = "libwvstreams-base libwvstreams-base-dbg "
+PACKAGES_prepend = "libwvstreams-extras libwvstreams-extras-dbg "
+PACKAGES_prepend = "${PN}-valgrind "
+
+FILES_libuniconf     = "${libdir}/libuniconf.so.*"
+FILES_libuniconf-dbg = "${libdir}/.debug/libuniconf.so.*"
+
+FILES_uniconfd     = "${sbindir}/uniconfd ${sysconfdir}/uniconf.conf ${localstatedir}/uniconf"
+FILES_uniconfd-dbg = "${sbindir}/.debug/uniconfd"
+
+FILES_libwvstreams-base     = "${libdir}/libwvutils.so.*"
+FILES_libwvstreams-base-dbg = "${libdir}/.debug/libwvutils.so.*"
+
+FILES_libwvstreams-extras     = "${libdir}/libwvbase.so.* ${libdir}/libwvstreams.so.*"
+FILES_libwvstreams-extras-dbg = "${libdir}/.debug/libwvbase.so.* ${libdir}/.debug/libwvstreams.so.*"
+
+FILES_${PN}-valgrind = "${libdir}/valgrind/wvstreams.supp"
+RDEPENDS_${PN} += "perl"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/0001-Fix-configure.ac.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/0001-Fix-configure.ac.patch
new file mode 100644
index 0000000..af14a1a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/0001-Fix-configure.ac.patch
@@ -0,0 +1,23 @@
+uname can not get version of kernel correctly while cross compile
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 523899b..4e6ae0d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -924,7 +924,7 @@ AC_MSG_RESULT([$ARCH ($host_os)])
+ if test "x$ARCH" = "xlinux"; then
+ 	AC_MSG_CHECKING([for the linux kernel version])
+ 
+-	kernel=`uname -r`
++	kernel="${KERNEL_VERSION}"
+ 
+ 	case "${kernel}" in
+ 		2.6.*)
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service
new file mode 100644
index 0000000..b18a96f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Zabbix Monitor Agent
+After=syslog.target network.target
+
+[Service]
+Type=oneshot
+ExecStart=@SBINDIR@/zabbix_agentd
+RemainAfterExit=yes
+User=zabbix
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_2.4.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_2.4.7.bb
new file mode 100644
index 0000000..c2c4eae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_2.4.7.bb
@@ -0,0 +1,72 @@
+SUMMARY = "Open-source monitoring solution for your IT infrastructure"
+DESCRIPTION = "\
+ZABBIX is software that monitors numerous parameters of a network and the \
+health and integrity of servers. ZABBIX uses a flexible notification \
+mechanism that allows users to configure e-mail based alerts for virtually \
+any event. This allows a fast reaction to server problems. ZABBIX offers \
+excellent reporting and data visualisation features based on the stored \
+data. This makes ZABBIX ideal for capacity planning. \
+\
+ZABBIX supports both polling and trapping. All ZABBIX reports and \
+statistics, as well as configuration parameters are accessed through a \
+web-based front end. A web-based front end ensures that the status of \
+your network and the health of your servers can be assessed from any \
+location. Properly configured, ZABBIX can play an important role in \
+monitoring IT infrastructure. This is equally true for small \
+organisations with a few servers and for large companies with a \
+multitude of servers."
+HOMEPAGE = "http://www.zabbix.com/"
+SECTION = "Applications/Internet"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=300e938ad303147fede2294ed78fe02e"
+DEPENDS  = "openldap virtual/libiconv"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+SRC_URI = "http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/${PV}/${BPN}-${PV}.tar.gz \
+           file://0001-Fix-configure.ac.patch \
+           file://zabbix-agent.service"
+
+SRC_URI[md5sum] = "9f8aeb11d8415585f41c3f2f22566b78"
+SRC_URI[sha256sum] = "d2c47b8f5b9b91f18010d54c45de55845d979014a8b3fe4bef64e0b08f8b00da"
+
+inherit autotools-brokensep linux-kernel-base pkgconfig systemd useradd
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "zabbix-agent.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "-r zabbix"
+USERADD_PARAM_${PN} = "-r -g zabbix -d /var/lib/zabbix \
+                       -s /sbin/nologin -c \"Zabbix Monitoring System\" zabbix"
+
+KERNEL_VERSION = "${@get_kernelversion_headers('${STAGING_KERNEL_DIR}')}"
+
+EXTRA_OECONF = '--enable-dependency-tracking \
+	        --enable-agent \
+	        --enable-ipv6 \
+	        --with-net-snmp \
+	        --with-ldap=${STAGING_EXECPREFIXDIR} \
+	        --with-jabber \
+	        --with-unixodbc \
+	        --with-ssh2 \
+	        --with-sqlite3 \
+	        '
+CFLAGS_append += "-lldap -llber"
+
+do_configure_prepend() {
+    export KERNEL_VERSION="${KERNEL_VERSION}"
+}
+
+do_install_append() {
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+	install -m 0644 ${WORKDIR}/zabbix-agent.service ${D}${systemd_unitdir}/system/
+        sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/zabbix-agent.service
+    fi
+}
+
+FILES_${PN} += "${libdir}"
+
+RDEPENDS_${PN} = "logrotate"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeroc-ice/zeroc-ice-3.5.1/0002-Modify-Makefile-for-cross-compile.patch b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeroc-ice/zeroc-ice-3.5.1/0002-Modify-Makefile-for-cross-compile.patch
new file mode 100644
index 0000000..43096d2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeroc-ice/zeroc-ice-3.5.1/0002-Modify-Makefile-for-cross-compile.patch
@@ -0,0 +1,292 @@
+Upstream-Status: Inappropriate
+
+This patch lets you build Ice with OpenEmbedded. I doubt you could do
+a regular build after applying this patch.
+
+From bc622ce74fa03a935278d21736a5a251466e1798 Mon Sep 17 00:00:00 2001
+From: Tom Rondeau <tom@trondeau.com>
+Date: Wed, 16 Apr 2014 14:34:51 -0400
+Subject: [PATCH] Modify Makefiles for cross compile
+
+---
+ config/Make.common.rules           |   20 +++++++------
+ cpp/Makefile                       |    9 +++---
+ cpp/config/Make.rules              |   32 ++++++++++++--------
+ cpp/config/Make.rules.Linux        |   18 ++---------
+ cpp/src/IceStorm/FreezeDB/Makefile |    2 +-
+ py/config/Make.rules               |   58 +++++++++++++++++++-----------------
+ 6 files changed, 70 insertions(+), 69 deletions(-)
+
+diff --git a/config/Make.common.rules b/config/Make.common.rules
+index d7b1d59..a3fb17e 100644
+--- a/config/Make.common.rules
++++ b/config/Make.common.rules
+@@ -65,9 +65,9 @@ ifeq ($(UNAME),Linux)
+       #
+       # Some Linux distributions like Debian/Ubuntu don't use /usr/lib64.
+       #
+-      ifeq ($(shell test -d /usr/lib64 && echo 0),0)
+-          lp64suffix	= 64
+-      endif
++      #ifeq ($(shell test -d /usr/lib64 && echo 0),0)
++      #    lp64suffix	= 64
++      #endif
+       ifeq ($(LP64),)
+           LP64      	= yes
+       endif
+@@ -244,12 +244,13 @@ else
+     slicedir = $(ice_dir)/slice
+ endif
+ 
+-ifeq ($(prefix), /usr)
+-    install_slicedir = /usr/share/Ice-$(VERSION)/slice
+-else
+-    install_slicedir = $(prefix)/slice
+-endif
++#ifeq ($(prefix), /usr)
++#    install_slicedir = /usr/share/Ice-$(VERSION)/slice
++#else
++#    install_slicedir = $(prefix)/slice
++#endif
+ 
++install_slicedir = $(prefix)/slice
+ #
+ # Set environment variables for the Slice translator.
+ #
+@@ -265,7 +266,8 @@ ifneq ($(ice_dir), /usr)
+     endif
+ 
+     ifeq ($(UNAME),Linux)
+-        export LD_LIBRARY_PATH := $(ice_lib_dir):$(LD_LIBRARY_PATH)
++        #export LD_LIBRARY_PATH := $(ice_lib_dir):$(LD_LIBRARY_PATH)
++        export LD_LIBRARY_PATH := $(ICE_HOME)/lib:$(LD_LIBRARY_PATH)
+     endif
+ 
+     ifeq ($(UNAME),SunOS)
+diff --git a/cpp/Makefile b/cpp/Makefile
+index a68f113..1f44f57 100644
+--- a/cpp/Makefile
++++ b/cpp/Makefile
+@@ -11,11 +11,12 @@ top_srcdir	= .
+ 
+ include $(top_srcdir)/config/Make.rules
+ 
+-SUBDIRS		= config src include test
++#SUBDIRS		= config src include test
++SUBDIRS		= config src include
+ 
+-ifeq ($(shell uname | grep MINGW),)
+-SUBDIRS		:= $(SUBDIRS) demo
+-endif
++#ifeq ($(shell uname | grep MINGW),)
++#SUBDIRS		:= $(SUBDIRS) demo
++#endif
+ 
+ INSTALL_SUBDIRS	= $(install_bindir) $(install_libdir) $(install_includedir) \
+ 	$(install_configdir) $(install_mandir)
+diff --git a/cpp/config/Make.rules b/cpp/config/Make.rules
+index 37461ae..197c5e8 100644
+--- a/cpp/config/Make.rules
++++ b/cpp/config/Make.rules
+@@ -175,11 +175,12 @@ headerdir		= $(top_srcdir)/include
+ # includedir is not handled the same as bindir and libdir
+ # because it is used in the .depend files
+ #
+-ifdef ice_src_dist
+-    includedir		= $(top_srcdir)/include
+-else
+-    includedir		= $(ice_dir)/include
+-endif
++#ifdef ice_src_dist
++#    includedir		= $(top_srcdir)/include
++#else
++#    includedir		= $(ice_dir)/include
++#endif
++includedir		= $(top_srcdir)/include
+ 
+ #
+ # Platform specific definitions
+@@ -277,14 +278,17 @@ ICECPPFLAGS		= -I$(slicedir)
+ SLICE2CPPFLAGS		= $(ICECPPFLAGS)
+ 
+ ifeq ($(ice_dir), /usr) 
+-    LDFLAGS		= $(LDPLATFORMFLAGS) $(CXXFLAGS)
++    LDFLAGS		+= $(LDPLATFORMFLAGS) $(CXXFLAGS)
+ else
+     CPPFLAGS	+= -I$(includedir)
+-    ifdef ice_src_dist
+-	LDFLAGS	= $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir)
+-    else
+-	LDFLAGS	= $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(ice_dir)/$(libsubdir)$(cpp11suffix)
+-    endif
++# We must always build using the libraries in the source tree, the host's are obviously
++# not what we want for the target
++    LDFLAGS	+= $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir) $(call rpathlink,$(libdir))
++#    ifdef ice_src_dist
++#        LDFLAGS	= $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir)
++#    else
++#	LDFLAGS	= $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(ice_dir)/$(libsubdir)$(cpp11suffix)
++#    endif
+ endif
+ 
+ ifeq ($(FLEX_NOLINE),yes)
+@@ -313,8 +317,10 @@ endif
+ 
+ ifdef ice_src_dist
+     SLICEPARSERLIB	= $(libdir)/$(call mklibfilename,Slice,$(VERSION))
+-    SLICE2CPP		= $(bindir)/slice2cpp
+-    SLICE2FREEZE	= $(bindir)/slice2freeze
++#    SLICE2CPP		= $(bindir)/slice2cpp
++#    SLICE2FREEZE	= $(bindir)/slice2freeze
++    SLICE2CPP		= $(ICE_HOME)/bin/slice2cpp
++    SLICE2FREEZE	= $(ICE_HOME)/bin/slice2freeze
+ else
+     SLICEPARSERLIB	= $(ice_dir)/$(libsubdir)$(cpp11suffix)/$(call mklibfilename,Slice,$(VERSION))
+     SLICE2CPP		= $(ice_dir)/$(binsubdir)$(cpp11suffix)/slice2cpp
+diff --git a/cpp/config/Make.rules.Linux b/cpp/config/Make.rules.Linux
+index 5d5717c..8363c6e 100644
+--- a/cpp/config/Make.rules.Linux
++++ b/cpp/config/Make.rules.Linux
+@@ -31,7 +31,7 @@ ifeq ($(CXX),c++)
+    CXX			= g++
+ endif
+ 
+-ifeq ($(CXX),g++)
++#ifeq ($(CXX),g++)
+ 
+     ifneq ($(SUSE_i586),)
+         CXXARCHFLAGS	+= -march=i586
+@@ -71,14 +71,6 @@ ifeq ($(CXX),g++)
+       CXXARCHFLAGS	+= -mtune=v8 -pipe -Wno-deprecated -DICE_USE_MUTEX_SHARED
+    endif
+ 
+-   ifeq ($(MACHINE),x86_64)
+-      ifeq ($(LP64),yes)
+-         CXXARCHFLAGS	+= -m64
+-      else
+-         CXXARCHFLAGS	+= -m32
+-      endif
+-   endif
+-
+    CXXFLAGS		= $(CXXARCHFLAGS) -Wall -Werror -pthread
+ 
+    ifneq ($(GENPIC),no)
+@@ -102,15 +94,11 @@ ifeq ($(CXX),g++)
+ 
+    rpathlink            = -Wl,-rpath-link,$(1) 
+ 
+-   ifneq ($(embedded_runpath_prefix),)
+-      LDPLATFORMFLAGS      = -Wl,--enable-new-dtags -Wl,-rpath,$(runpath_libdir)
+-   else
+-      LDPLATFORMFLAGS      = -Wl,--enable-new-dtags
+-   endif
++   LDPLATFORMFLAGS      = -Wl,--enable-new-dtags -Wl,-rpath,../../../lib
+ 
+    LDPLATFORMFLAGS	+= -rdynamic
+ 
+-endif
++#endif
+ 
+ ifeq ($(CXX),icpc)
+    $(warning ===================================================================) 
+diff --git a/cpp/src/IceStorm/FreezeDB/Makefile b/cpp/src/IceStorm/FreezeDB/Makefile
+index 7c844b7..cf15cb1 100644
+--- a/cpp/src/IceStorm/FreezeDB/Makefile
++++ b/cpp/src/IceStorm/FreezeDB/Makefile
+@@ -66,7 +66,7 @@ $(libdir)/$(LIBNAME): $(libdir)/$(SONAME)
+ 
+ $(MIGRATE): $(MOBJS)
+ 	rm -f $@
+-	$(CXX) $(LDFLAGS) -o $@ $(MOBJS) $(DB_RPATH_LINK) -lIceStormService -lIceStorm -lFreeze $(LIBS)
++	$(CXX) $(LDFLAGS) -o $@ $(MOBJS) $(DB_RPATH_LINK) -lIceStormService -lIceStorm -lFreeze $(LIBS) -ldb_cxx
+ 
+ # The slice2freeze rules are structured like this to avoid issues with
+ # parallel make.
+diff --git a/py/config/Make.rules b/py/config/Make.rules
+index 43ce01b..1349342 100644
+--- a/py/config/Make.rules
++++ b/py/config/Make.rules
+@@ -92,21 +92,23 @@ ifeq ($(shell test -f $(top_srcdir)/config/Make.rules.$(UNAME) && echo 0),0)
+     include $(top_srcdir)/config/Make.rules.$(UNAME)
+ else
+     include $(top_srcdir)/../cpp/config/Make.rules.$(UNAME)
+-endif 
++endif
+ 
+ libdir                  = $(top_srcdir)/python
+-ifneq ($(prefix), /usr)
+-install_pythondir       = $(prefix)/python
+-install_libdir          = $(prefix)/python
+-else
+-    ifeq ($(shell test -d $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/dist-packages && echo 0),0)
+-        install_pythondir       = $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/dist-packages
+-        install_libdir          = $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/dist-packages
+-    else
+-        install_pythondir       = $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/site-packages
+-        install_libdir          = $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/site-packages
+-    endif
+-endif
++#ifneq ($(prefix), /usr)
++#install_pythondir       = $(prefix)/python
++#install_libdir          = $(prefix)/python
++#else
++#    ifeq ($(shell test -d $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/dist-packages && echo 0),0)
++#        install_pythondir       = $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/dist-packages
++#        install_libdir          = $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/dist-packages
++#    else
++#        install_pythondir       = $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/site-packages
++#        install_libdir          = $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/site-packages
++#    endif
++#endif
++install_pythondir       = $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/site-packages
++install_libdir          = $(prefix)/$(libsubdir)/$(PYTHON_VERSION)/site-packages
+ 
+ ifeq ($(UNAME),SunOS)
+    ifeq ($(LP64),yes)
+@@ -115,19 +117,21 @@ ifeq ($(UNAME),SunOS)
+    endif
+ endif
+ 
+-ifdef ice_src_dist
+-    ifeq ($(ice_cpp_dir), $(ice_dir)/cpp)
+-        ICE_LIB_DIR = -L$(ice_cpp_dir)/lib
+-    else
+-        ICE_LIB_DIR = -L$(ice_cpp_dir)/$(libsubdir)
+-    endif
+-    ICE_LIB_DIR = -L$(ice_cpp_dir)/lib
+-    ICE_FLAGS 	= -I$(ice_cpp_dir)/include
+-endif
+-ifdef ice_bin_dist
+-    ICE_LIB_DIR = -L$(ice_dir)/$(libsubdir)
+-    ICE_FLAGS	= -I$(ice_dir)/include
+-endif
++#ifdef ice_src_dist
++#    ifeq ($(ice_cpp_dir), $(ice_dir)/cpp)
++#        ICE_LIB_DIR = -L$(ice_cpp_dir)/lib
++#    else
++#        ICE_LIB_DIR = -L$(ice_cpp_dir)/$(libsubdir)
++#    endif
++#    ICE_LIB_DIR = -L$(ice_cpp_dir)/lib
++#    ICE_FLAGS 	= -I$(ice_cpp_dir)/include
++#endif
++#ifdef ice_bin_dist
++#    ICE_LIB_DIR = -L$(ice_dir)/$(libsubdir)
++#    ICE_FLAGS	= -I$(ice_dir)/include
++#endif
++ICE_LIB_DIR = -L$(top_srcdir)/../cpp/lib
++ICE_FLAGS = -I$(ice_cpp_dir)/include
+ ICE_LIBS = $(ICE_LIB_DIR) -lIce -lSlice -lIceUtil
+ 
+ ifneq ($(embedded_runpath_prefix),)
+@@ -137,7 +141,7 @@ endif
+ CPPFLAGS		=
+ ICECPPFLAGS		= -I$(slicedir)
+ SLICE2PYFLAGS		= $(ICECPPFLAGS)
+-LDFLAGS			= $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir)
++LDFLAGS			+= $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir)
+ 
+ ifdef ice_src_dist
+     ifeq ($(ice_cpp_dir), $(ice_dir)/cpp)
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeroc-ice/zeroc-ice_3.5.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeroc-ice/zeroc-ice_3.5.1.bb
new file mode 100644
index 0000000..2b6f56e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeroc-ice/zeroc-ice_3.5.1.bb
@@ -0,0 +1,87 @@
+DESCRIPTION = "The Internet Communications Engine"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://ICE_LICENSE;md5=3dc3037023cc2ae6b2c5b995da529515"
+DEPENDS = "bzip2 expat openssl python db mcpp"
+DEPENDS_prepend_class-target = "zeroc-ice-native "
+
+SRC_URI = "http://www.zeroc.com/download/Ice/3.5/Ice-${PV}.tar.gz \
+           file://0002-Modify-Makefile-for-cross-compile.patch \
+          "
+SRC_URI[md5sum] = "f00c59983cc904bca977133c0a9b3e80"
+SRC_URI[sha256sum] = "989e51194c6adadbd156da3288e37bad847b93b3b876502e83033b70493af392"
+
+#| MapDb.cpp: In constructor 'Freeze::MapDb::MapDb(const ConnectionIPtr&, const string&, const string&, const string&, const KeyCompareBasePtr&, const std::vector<IceUtil::Handle<Freeze::MapIndexBase> >&, bool)':
+#| MapDb.cpp:138:46: error: call of overloaded 'set_bt_compare(int (*)(DB*, const DBT*, const DBT*))' is ambiguous
+#| MapDb.cpp:138:46: note: candidates are:
+#| /home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/include/db_cxx.h:272:14: note: virtual int Db::set_bt_compare(bt_compare_fcn_type) <near match>
+#| /home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/include/db_cxx.h:272:14: note:   no known conversion for argument 1 from 'int (*)(DB*, const DBT*, const DBT*) {aka int (*)(__db*, const __db_dbt*, const __db_dbt*)}' to 'bt_compare_fcn_type {aka int (*)(__db*, const __db_dbt*, const __db_dbt*, long unsigned int*)}'
+#| /home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/include/db_cxx.h:273:14: note: virtual int Db::set_bt_compare(int (*)(Db*, const Dbt*, const Dbt*, size_t*)) <near match>
+#| /home/jenkins/oe/world/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/include/db_cxx.h:273:14: note:   no known conversion for argument 1 from 'int (*)(DB*, const DBT*, const DBT*) {aka int (*)(__db*, const __db_dbt*, const __db_dbt*)}' to 'int (*)(Db*, const Dbt*, const Dbt*, size_t*) {aka int (*)(Db*, const Dbt*, const Dbt*, long unsigned int*)}'
+#| make[3]: *** [MapDb.o] Error 1
+PNBLACKLIST[zeroc-ice] ?= "BROKEN: not compatible with default db version"
+
+S = "${WORKDIR}/Ice-${PV}"
+
+inherit python-dir pkgconfig
+
+export PYTHON_VERSION = "python2.7"
+
+do_configure() {
+    :
+}
+
+do_compile_prepend_class-target () {
+    export PYTHON_INCLUDE_DIR="${STAGING_INCDIR}/${PYTHON_DIR}"
+    export PYTHON_LIB_DIR="${STAGING_LIBDIR}/${PYTHON_DIR}"
+    export ICE_HOME="${STAGING_DIR_NATIVE}/usr"
+}
+
+do_compile_prepend_class-nativesdk () {
+    export PYTHON_INCLUDE_DIR="${STAGING_INCDIR}/${PYTHON_DIR}"
+    export PYTHON_LIB_DIR="${STAGING_LIBDIR}/${PYTHON_DIR}"
+    export ICE_HOME="${STAGING_DIR_NATIVE}/usr"
+}
+
+do_compile_prepend_class-native () {
+    export PYTHON_INCLUDE_DIR="${STAGING_INCDIR}/${PYTHON_DIR}"
+    export PYTHON_LIB_DIR="${STAGING_LIBDIR}/${PYTHON_DIR}"
+    export ICE_HOME="${S}/cpp"
+}
+
+do_compile() {
+    oe_runmake -C ${S} cpp
+    oe_runmake -C ${S} py
+}
+
+do_install_prepend_class-target () {
+    export PYTHON_INCLUDE_DIR="${STAGING_INCDIR}/${PYTHON_DIR}"
+    export PYTHON_LIB_DIR="${STAGING_LIBDIR}/${PYTHON_DIR}"
+    export ICE_HOME="${STAGING_DIR_NATIVE}/usr"
+}
+
+do_install_prepend_class-nativesdk () {
+    export PYTHON_INCLUDE_DIR="${STAGING_INCDIR}/${PYTHON_DIR}"
+    export PYTHON_LIB_DIR="${STAGING_LIBDIR}/${PYTHON_DIR}"
+    export ICE_HOME="${STAGING_DIR_NATIVE}/usr"
+}
+
+do_install_prepend_class-native () {
+    export ICE_HOME="${S}/cpp"
+}
+
+do_install() {
+    oe_runmake -C ${S}/cpp prefix=${D}${prefix} install install-common
+    oe_runmake -C ${S}/py prefix=${D}${prefix} install
+}
+
+PACKAGES += "${PN}-python ${PN}-python-dev ${PN}-python-dbg"
+
+FILES_${PN}-doc += "${prefix}/man/man1"
+FILES_${PN} += "${prefix}/*LICENSE ${libdir}/ImportKey.class ${prefix}/RELEASE_NOTES ${prefix}/CHANGES"
+FILES_${PN}-dev += "${includedir} ${prefix}/slice ${prefix}/config"
+FILES_${PN}-python-dev = "${PYTHON_SITEPACKAGES_DIR}/IcePy.so"
+FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}/*.py ${PYTHON_SITEPACKAGES_DIR}/IcePy.so.* ${PYTHON_SITEPACKAGES_DIR}/Ice*/*.py"
+FILES_${PN}-python-dbg = "${PYTHON_SITEPACKAGES_DIR}/.debug"
+FILES_${PN}-dev += "${bindir}/slice* ${datadir}/Ice-${PV}/slice/*"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
new file mode 100644
index 0000000..f41cd0a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "C++ bindings for ZeroMQ"
+HOMEPAGE = "http://www.zeromq.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=db174eaf7b55a34a7c89551197f66e94"
+DEPENDS = "zeromq"
+SRCREV = "68a7b09cfce01c4c279fba2cf91686fcfc566848"
+
+SRC_URI = "git://github.com/zeromq/cppzmq.git"
+
+S = "${WORKDIR}/git"
+
+do_install () {
+        install -d ${D}/usr/include
+        install -m 0755 ${S}/zmq.hpp ${D}/usr/include/
+}
+
+PACKAGES = "${PN}-dev"
+
+RDEPENDS_${PN}-dev = "zeromq-dev"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/run-ptest b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/run-ptest
new file mode 100755
index 0000000..48b9cd9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/run-ptest
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+cd tests
+for i in `ls *`; do
+   if [ ./$i ] ; then
+       echo "PASS: $i"
+   else
+       echo "FAIL: $i"
+   fi
+done
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.1.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.1.4.bb
new file mode 100644
index 0000000..2090152
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.1.4.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "ZeroMQ looks like an embeddable networking library but acts like a concurrency framework"
+HOMEPAGE = "http://www.zeromq.org"
+LICENSE = "LGPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=d5311495d952062e0e4fbba39cbf3de1"
+DEPENDS = "libsodium"
+
+SRC_URI = "http://download.zeromq.org/zeromq-${PV}.tar.gz \
+           file://run-ptest \
+           "
+SRC_URI[md5sum] = "a611ecc93fffeb6d058c0e6edf4ad4fb"
+SRC_URI[sha256sum] = "e99f44fde25c2e4cb84ce440f87ca7d3fe3271c2b8cfbc67d55e4de25e6fe378"
+
+S = "${WORKDIR}/zeromq-${PV}"
+
+#Uncomment to choose polling system manually. valid values are kqueue, epoll, devpoll, poll or select
+#EXTRA_OECONF += "--with-poller=kqueue"
+#CFLAGS_append += "-O0"
+#CXXFLAGS_append += "-O0"
+
+inherit autotools ptest pkgconfig
+
+do_compile_ptest () {
+	echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${B}/Makefile
+	oe_runmake buildtest-TESTS
+}
+
+do_install_ptest () {
+        install -d ${D}${PTEST_PATH}/tests
+        install -m 0755 ${B}/.libs/test_* ${D}${PTEST_PATH}/tests
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb
new file mode 100644
index 0000000..205e1d1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb
@@ -0,0 +1,22 @@
+SUMMARY = "dbus forwarding daemon"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://dbus-daemon-proxy.c;endline=19;md5=41df6d21fe1c97d6a1cc22a5bf374cba"
+DEPENDS = "dbus dbus-glib"
+SRCREV = "1226a0a1374628ff191f6d8a56000be5e53e7608"
+PV = "0.0.0+gitr${SRCPV}"
+PR = "r1"
+
+ASNEEDED_pn-dbus-daemon-proxy = ""
+
+SRC_URI = "git://git.collabora.co.uk/git/user/alban/dbus-daemon-proxy"
+S = "${WORKDIR}/git"
+
+do_compile() {
+    ${CC} ${LDFLAGS} `pkg-config --cflags --libs dbus-glib-1` -o dbus-daemon-proxy dbus-daemon-proxy.c
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 dbus-daemon-proxy ${D}${bindir}
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/gtk-doc.patch b/import-layers/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/gtk-doc.patch
new file mode 100644
index 0000000..abd7ff4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/gtk-doc.patch
@@ -0,0 +1,34 @@
+Upstream-Status: Inappropriate [configuration] 
+
+Index: eggdbus-0.6/docs/eggdbus/Makefile.am
+===================================================================
+--- eggdbus-0.6.orig/docs/eggdbus/Makefile.am
++++ eggdbus-0.6/docs/eggdbus/Makefile.am
+@@ -87,11 +87,7 @@ HTML_IMAGES = 				\
+ # Extra options to supply to gtkdoc-fixref
+ FIXXREF_OPTIONS=
+ 
+-if ENABLE_GTK_DOC
+-include $(top_srcdir)/gtk-doc.make
+-else
+ CLEANFILES =
+-endif
+ 
+ CLEANFILES +=   *~				\
+ 		eggdbus-scan.*			\
+Index: eggdbus-0.6/docs/tests/Makefile.am
+===================================================================
+--- eggdbus-0.6.orig/docs/tests/Makefile.am
++++ eggdbus-0.6/docs/tests/Makefile.am
+@@ -65,11 +65,7 @@ HTML_IMAGES = 				\
+ # Extra options to supply to gtkdoc-fixref
+ FIXXREF_OPTIONS=
+ 
+-if ENABLE_GTK_DOC
+-include $(top_srcdir)/gtk-doc.make
+-else
+ CLEANFILES =
+-endif
+ 
+ CLEANFILES +=   *~				\
+ 		tests-scan.*			\
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/marshal.patch b/import-layers/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/marshal.patch
new file mode 100644
index 0000000..a605a34
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/marshal.patch
@@ -0,0 +1,28 @@
+Upstream-Status: Inappropriate [configuration]
+
+Index: eggdbus-0.6/src/eggdbus/Makefile.am
+===================================================================
+--- eggdbus-0.6.orig/src/eggdbus/Makefile.am
++++ eggdbus-0.6/src/eggdbus/Makefile.am
+@@ -130,7 +130,7 @@ BUILT_SOURCES =								\
+ 	$(NULL)
+ 
+ eggdbus-built-sources.stamp : eggdbus-binding-tool Makefile.am org.freedesktop.DBus.xml org.freedesktop.DBus.Peer.xml org.freedesktop.DBus.Properties.xml org.freedesktop.DBus.Introspectable.xml eggdbus-glib-genmarshal
+-	EGG_DBUS_GENMARSHAL=$(top_builddir)/src/eggdbus/eggdbus-glib-genmarshal $(top_builddir)/src/eggdbus/eggdbus-binding-tool							\
++	EGG_DBUS_GENMARSHAL=eggdbus-glib-genmarshal eggdbus-binding-tool							\
+ 		--namespace EggDBus									\
+ 		--dbus-namespace org.freedesktop.DBus							\
+ 		--interfaces-only									\
+Index: eggdbus-0.6/src/tests/Makefile.am
+===================================================================
+--- eggdbus-0.6.orig/src/tests/Makefile.am
++++ eggdbus-0.6/src/tests/Makefile.am
+@@ -25,7 +25,7 @@ BUILT_SOURCES = 							\
+ 	$(NULL)
+ 
+ test-built-sources.stamp : Makefile.am $(top_builddir)/src/eggdbus/eggdbus-binding-tool com.example.Frob.xml com.example.Tweak.xml com.example.Twiddle.xml
+-	EGG_DBUS_GENMARSHAL=$(top_builddir)/src/eggdbus/eggdbus-glib-genmarshal $(top_builddir)/src/eggdbus/eggdbus-binding-tool									\
++	EGG_DBUS_GENMARSHAL=eggdbus-glib-genmarshal eggdbus-binding-tool									\
+ 	  --namespace       "Test"										\
+ 	  --dbus-namespace  "com.example"									\
+ 	  --include-header  testtypes.h										\
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus_0.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus_0.6.bb
new file mode 100644
index 0000000..cc28ec7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus_0.6.bb
@@ -0,0 +1,33 @@
+SUMMARY = "An alternative to dbug-glib."
+DESCRIPTION = "An alternative to dbus-glib. It is designed specifically to \
+make it comfortable to work with very large and potentially \
+complex D-Bus services like e.g. DeviceKit-disks"
+
+HOMEPAGE = "http://cgit.freedesktop.org/~david/eggdbus"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=155db86cdbafa7532b41f390409283eb \
+                    file://src/eggdbus/eggdbus.h;md5=6b312aef57ed8d738b3f131ad037d6c2"
+
+DEPENDS = "dbus glib-2.0 dbus-glib eggdbus-native"
+DEPENDS_class-native = "dbus-native glib-2.0-native dbus-glib-native"
+
+SRC_URI = "http://cgit.freedesktop.org/~david/${BPN}/snapshot/${BPN}-${PV}.tar.bz2 \
+    file://gtk-doc.patch \
+"
+SRC_URI_append_class-target = "file://marshal.patch"
+SRC_URI[md5sum] = "0a111faa54dfba2cf432c2c8e8a76e06"
+SRC_URI[sha256sum] = "3ad26e271c1a879bafcd181e065fe0ed53b542299a773c3188c9edb25b895ed1"
+
+inherit autotools gtk-doc
+
+EXTRA_OECONF = " --disable-man-pages "
+
+BBCLASSEXTEND = "native"
+
+PARALLEL_MAKE = ""
+
+do_configure_prepend() {
+    # Create ChangeLog to walk around automake error.
+    # " Makefile.am: error: required file './ChangeLog' not found "
+    touch ${S}/ChangeLog
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/fakeroot/fakeroot-native_1.18.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/fakeroot/fakeroot-native_1.18.4.bb
new file mode 100644
index 0000000..a27a60b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/fakeroot/fakeroot-native_1.18.4.bb
@@ -0,0 +1,15 @@
+require fakeroot_${PV}.bb
+
+S = "${WORKDIR}/fakeroot-${PV}"
+
+inherit native
+
+EXTRA_OECONF = "--program-prefix="
+
+# Compatability for the rare systems not using or having SYSV
+python () {
+    if d.getVar('HOST_NONSYSV', True) and d.getVar('HOST_NONSYSV', True) != '0':
+        d.setVar('EXTRA_OECONF', ' --with-ipc=tcp --program-prefix= ')
+}
+
+RDEPENDS_${PN} = "util-linux-native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/fakeroot/fakeroot_1.18.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/fakeroot/fakeroot_1.18.4.bb
new file mode 100644
index 0000000..37b3c18
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/fakeroot/fakeroot_1.18.4.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Gives a fake root environment"
+HOMEPAGE = "http://fakeroot.alioth.debian.org"
+SECTION = "base"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
+
+SRC_URI = "\
+    ${DEBIAN_MIRROR}/main/f/fakeroot/fakeroot_${PV}.orig.tar.bz2 \
+"
+
+inherit autotools
+
+do_configure_prepend() {
+    mkdir -p ${S}/build-aux
+}
+
+do_install_append() {
+    install -d ${D}${includedir}/fakeroot
+    install -m 644 *.h ${D}${includedir}/fakeroot
+}
+
+# fakeroot needs getopt which is provided by the util-linux package
+RDEPENDS_${PN} = "util-linux"
+
+
+SRC_URI[md5sum] = "706171d8d520b1ca1576ac73f2ceb4f3"
+SRC_URI[sha256sum] = "0a359efa3e9496c33234b3e9c89306a09bb4da9d33de43c261f1d8447e6ebea2"
+
+# http://errors.yoctoproject.org/Errors/Details/35143/
+PNBLACKLIST[fakeroot] ?= "BROKEN: QA Issue: -dev package contains non-symlink .so"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/remove-examples.patch b/import-layers/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/remove-examples.patch
new file mode 100644
index 0000000..a5944c2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/remove-examples.patch
@@ -0,0 +1,30 @@
+Index: glibmm-2.22.1/Makefile.am
+===================================================================
+--- glibmm-2.22.1.orig/Makefile.am
++++ glibmm-2.22.1/Makefile.am
+@@ -23,12 +23,7 @@ src_subdirs = glib/src gio/src
+ else
+ src_subdirs =
+ endif
+-if ENABLE_DOCUMENTATION
+-doc_subdirs = docs
+-else
+-doc_subdirs =
+-endif
+-SUBDIRS = tools $(src_subdirs) glib/glibmm gio/giomm tests examples $(doc_subdirs)
++SUBDIRS = tools $(src_subdirs) glib/glibmm gio/giomm tests
+ 
+ glibmm_includedir = $(includedir)/$(GLIBMM_MODULE_NAME)
+ glibmm_include_HEADERS = glib/glibmm.h
+Index: glibmm-2.22.1/configure.ac
+===================================================================
+--- glibmm-2.22.1.orig/configure.ac
++++ glibmm-2.22.1/configure.ac
+@@ -136,7 +136,6 @@ AC_CONFIG_FILES([Makefile
+                  gio/src/Makefile
+                  gio/giomm/Makefile
+                  tests/Makefile
+-                 examples/Makefile
+                  docs/Makefile
+                  docs/reference/Doxyfile
+                  MSVC_Net2005/glibmm/glibmm.rc
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.44.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.44.0.bb
new file mode 100644
index 0000000..d9cffff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.44.0.bb
@@ -0,0 +1,31 @@
+SUMMARY = "C++ bindings for the glib library"
+HOMEPAGE = "http://www.gtkmm.org/"
+SECTION = "libs"
+LICENSE = "LGPLv2.1 & GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
+                    file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "mm-common glib-2.0 libsigc++-2.0"
+inherit autotools pkgconfig
+
+SHRT_VER = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}"
+
+SRC_URI = " \
+    ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/${SHRT_VER}/glibmm-${PV}.tar.xz \
+    file://remove-examples.patch \
+"
+SRC_URI[md5sum] = "32ee4150b436d097fe2506d0b0b13a75"
+SRC_URI[sha256sum] = "1b0ac0425d24895507c0e0e8088a464c7ae2d289c47afa1c11f63278fc672ea8"
+
+do_install_append() {
+    install -d ${D}${datadir}/glibmm-2.4
+    install -d ${D}${datadir}/aclocal
+
+    install -m 0644 glib/glibmmconfig.h ${D}${datadir}/glibmm-2.4/
+    install -m 0644 scripts/glibmm_check_perl.m4 ${D}${datadir}/aclocal/ || true
+}
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${datadir}/glibmm-* ${libdir}/glibmm-2.4/include/ ${libdir}/glibmm-2.4/proc/ ${libdir}/giomm-2.4/include/"
+
+RDEPENDS_${PN}-dev = "perl"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.2.11.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.2.11.bb
new file mode 100644
index 0000000..546305f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.2.11.bb
@@ -0,0 +1,21 @@
+SUMMARY = "A library for loose coupling of C++ method calls"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
+
+DEPENDS = "mm-common"
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-${PV}.tar.xz"
+SRC_URI[md5sum] = "815d0c6d61601f51bbcaeef6826606b0"
+SRC_URI[sha256sum] = "9834045f74f56752c2c6b3cdc195c30ab8314ad22dc8e626d6f67f940f1e4957"
+
+S = "${WORKDIR}/libsigc++-${PV}"
+
+inherit autotools
+
+EXTRA_AUTORECONF = "--exclude=autoheader"
+
+FILES_${PN}-dev += "${libdir}/sigc++-*/"
+FILES_${PN}-doc += "${datadir}/devhelp"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/libxml/libxml++/libxml++_ptest.patch b/import-layers/meta-openembedded/meta-oe/recipes-core/libxml/libxml++/libxml++_ptest.patch
new file mode 100644
index 0000000..82960f1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/libxml/libxml++/libxml++_ptest.patch
@@ -0,0 +1,82 @@
+diff --git a/Makefile.am b/Makefile.am
+index d4aadb1..0e36756 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -253,5 +253,8 @@ post-html: docs/index.html
+ 	rsync $(rsync_args) -r docs/index.html $$USER,libxmlplusplus@web.sourceforge.net:$(web_path_project)
+ 	rsync $(rsync_args) -r examples $$USER,libxmlplusplus@web.sourceforge.net:$(web_path_project)
+ 
++install-ptest:
++	make -C examples install-ptest
++
+ # Optional: auto-generate the ChangeLog file from the git log on make dist
+ include $(top_srcdir)/macros/dist-changelog.am
+diff --git a/examples/Makefile.am b/examples/Makefile.am
+index d9541ca..c27e088 100644
+--- a/examples/Makefile.am
++++ b/examples/Makefile.am
+@@ -19,6 +19,8 @@ AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -I. $(LIBXMLXX_CFLAGS)
+ AM_CXXFLAGS = $(LIBXMLXX_WXXFLAGS)
+ LDADD = $(top_builddir)/libxml++/libxml++-$(LIBXMLXX_API_VERSION).la $(LIBXMLXX_LIBS)
+ 
++LOG_DRIVER = $(SHELL) ../macros/test-driver
++
+ check_PROGRAMS = \
+   dom_build/dom_build \
+   dom_parse_entities/dom_parse_entities \
+@@ -36,6 +38,23 @@ check_PROGRAMS = \
+   schemavalidation/schemavalidation \
+   textreader/textreader
+ 
++check_DOTLIBS = \
++  dom_build/.libs/dom_build \
++  dom_parse_entities/.libs/dom_parse_entities \
++  dom_parser/.libs/dom_parser \
++  dom_parser_raw/.libs/dom_parser_raw \
++  dom_read_write/.libs/dom_read_write \
++  dom_xinclude/.libs/dom_xinclude \
++  dom_xpath/.libs/dom_xpath \
++  dtdvalidation/.libs/dtdvalidation \
++  import_node/.libs/import_node \
++  sax_exception/.libs/sax_exception \
++  sax_parser/.libs/sax_parser \
++  sax_parser_build_dom/.libs/sax_parser_build_dom \
++  sax_parser_entities/.libs/sax_parser_entities \
++  schemavalidation/.libs/schemavalidation \
++  textreader/.libs/textreader
++
+ # Shell scripts that call the example programs.
+ check_SCRIPTS = \
+   dom_build/make_check.sh \
+@@ -147,10 +166,10 @@ dist_noinst_DATA = \
+ # file are located in different directories.
+ dom_read_write/make_check.sh: Makefile
+ 	echo '# Generated and used by "make check"' >$@
+-	echo 'dom_read_write/dom_read_write "$(srcdir)/dom_read_write/example.xml" dom_read_write/example_output.xml >/dev/null' >>$@
++	echo 'cd dom_read_write && .libs/dom_read_write "example.xml" example_output.xml >/dev/null' >>$@
+ 	chmod +x $@
+ 
+-script_template = cd "$(srcdir)/<!progname!>" && "$(abs_builddir)/<!progname!>/<!progname!>" >/dev/null
++script_template = cd "<!progname!>" && ".libs/<!progname!>" >/dev/null
+ standard_scripts = $(filter-out dom_read_write/make_check.sh,$(check_SCRIPTS))
+ 
+ # All other script files are generated like so:
+@@ -162,3 +181,18 @@ $(standard_scripts): Makefile
+ CLEANFILES = \
+   dom_read_write/example_output.xml \
+   $(check_SCRIPTS)
++
++buildtest: all
++	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS)
++	$(MAKE) $(AM_MAKEFLAGS) buildtest-TESTS
++
++install-ptest:
++	$(MKDIR_P) $(DESTDIR)/examples
++	cp --parents $(check_DOTLIBS) $(DESTDIR)/examples
++	cp --parents $(check_SCRIPTS) $(DESTDIR)/examples
++	cd $(srcdir) && cp --parents $(dist_noinst_DATA) $(DESTDIR)/examples
++	cp Makefile $(DESTDIR)/examples
++	$(MKDIR_P) $(DESTDIR)/macros
++	cp $(srcdir)/../macros/test-driver $(DESTDIR)/macros
++	sed -i -e 's|^Makefile:|_Makefile:|' $(DESTDIR)/examples/Makefile
++
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/libxml/libxml++/run-ptest b/import-layers/meta-openembedded/meta-oe/recipes-core/libxml/libxml++/run-ptest
new file mode 100644
index 0000000..236f667
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/libxml/libxml++/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+cd examples
+make -k check-TESTS
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/libxml/libxml++_2.38.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/libxml/libxml++_2.38.1.bb
new file mode 100644
index 0000000..20313fe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/libxml/libxml++_2.38.1.bb
@@ -0,0 +1,28 @@
+SUMMARY = "C++ wrapper for libxml library"
+DESCRIPTION = "C++ wrapper for libxml library"
+HOMEPAGE = "http://libxmlplusplus.sourceforge.net"
+BUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml%2B%2B"
+SECTION = "libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 "
+
+SHRT_VER = "${@d.getVar('PV',True).split('.')[0]}.${@d.getVar('PV',True).split('.')[1]}"
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${SHRT_VER}/${BP}.tar.xz \
+    file://libxml++_ptest.patch \
+    file://run-ptest \
+"
+SRC_URI[md5sum] = "6b16aac575725a9bc0e9d96489e9251f"
+SRC_URI[sha256sum] = "882529189b03db6c69925b3f579ab1941feb4f02b5fe2612504ee7e498a4a05f"
+
+DEPENDS = "libxml2 glibmm"
+
+inherit autotools pkgconfig ptest
+
+do_compile_ptest() {
+  oe_runmake -C examples buildtest
+}
+
+FILES_${PN}-doc += "${datadir}/devhelp"
+FILES_${PN}-dev += "${libdir}/libxml++-2.6/include/libxml++config.h"
+
+RDEPENDS_${PN}-ptest += "make"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm-common.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm-common.bb
new file mode 100644
index 0000000..618cc1e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm-common.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Helper script for OE's llvm support"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
+                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420 \
+"
+
+SRC_URI = "file://llvm-config"
+
+ALLOW_EMPTY_${PN} = "1"
+SYSROOT_PREPROCESS_FUNCS_append_class-target = " llvm_common_sysroot_preprocess"
+
+llvm_common_sysroot_preprocess() {
+    install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+    install -m 0755 ${WORKDIR}/llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+}
+
+do_install_class-native() {
+    install -d ${D}${bindir}
+    install -m 0755 ${WORKDIR}/llvm-config ${D}${bindir}
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm-common/llvm-config b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm-common/llvm-config
new file mode 100644
index 0000000..a9a416d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm-common/llvm-config
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Wrapper script for real llvm-config. Simply calls
+
+if [ $WANT_LLVM_RELEASE ]; then
+	exec `dirname $0`/${TARGET_PREFIX}llvm-config$WANT_LLVM_RELEASE ${@}
+else
+  echo "The variable WANT_LLVM_RELEASE is not defined and exported"
+	echo "by your build recipe. Go figure."
+  exit 1
+fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm.inc b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm.inc
new file mode 100644
index 0000000..fa971f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm.inc
@@ -0,0 +1,162 @@
+# LLVM does not provide ABI stability between different versions. For this
+# reason OE makes it possible to build and install different llvm versions
+# at the same time.
+#
+# This is true for the normal recipes as well as the native ones.
+#
+# All regular installation directories are prefixed with 'llvm${LLVM_RELEASE}'
+# e.g. "${STAGING_BINDIR}/llvm2.5" or "${STAGING_INCDIR}/llvm2.5"
+#
+# For your program or library that makes use of llvm you do should not need to
+# modify anything as long as it uses the results of various llvm-config
+# invocations. If you need customizations something is wrong and it needs to be
+# fixed (report bug).
+#
+# However the *recipe* for your program/library *must* declare
+# export WANT_LLVM_RELEASE = "<valid version number>"
+# The version number is picked up by a generic wrapper script which just calls
+# the variant of the specified version.
+
+DESCRIPTION = "The Low Level Virtual Machine"
+HOMEPAGE = "http://llvm.org"
+
+# 3-clause BSD-like
+# University of Illinois/NCSA Open Source License
+LICENSE = "NCSA"
+LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=d0a3ef0d3e0e8f5cf59e5ffc273ab1f8"
+
+DEPENDS = "libffi libxml2-native llvm-common"
+
+inherit perlnative pythonnative autotools
+
+LLVM_RELEASE = "${PV}"
+LLVM_DIR = "llvm${LLVM_RELEASE}"
+
+SRC_URI = "http://llvm.org/releases/${PV}/llvm-${PV}.src.tar.gz"
+S = "${WORKDIR}/llvm-${PV}.src"
+
+LLVM_BUILD_DIR = "${WORKDIR}/llvm-${PV}.build"
+LLVM_INSTALL_DIR = "${WORKDIR}/llvm-install"
+
+EXTRA_OECONF += "--disable-assertions \
+                 --enable-debug-runtime \
+                 --disable-expensive-checks \
+                 --enable-bindings=none \
+                 --enable-keep-symbols \
+                 --enable-libffi \
+                 --enable-optimized \
+                 --enable-shared \
+                 --enable-targets=host-only"
+EXTRA_OEMAKE += "REQUIRES_RTTI=1 VERBOSE=1"
+
+do_configure_prepend() {
+    # Remove RPATHs
+    sed -i 's:$(RPATH) -Wl,$(\(ToolDir\|LibDir\|ExmplDir\))::g' ${S}/Makefile.rules
+
+    # Drop "svn" suffix from version string
+    sed -i 's/${PV}svn/${PV}/g' ${S}/configure
+
+    # Fix paths in llvm-config
+    sed -i "s|sys::path::parent_path(CurrentPath))\.str()|sys::path::parent_path(sys::path::parent_path(CurrentPath))).str()|g" ${S}/tools/llvm-config/llvm-config.cpp
+    sed -ri "s#/(bin|include|lib)(/?\")#/\1/${LLVM_DIR}\2#g" ${S}/tools/llvm-config/llvm-config.cpp
+
+    # Fix the hardcoded libdir in llvm-config
+    sed -i 's:/lib\>:/${baselib}:g' ${S}/tools/llvm-config/llvm-config.cpp
+
+    # Fails to build unless using separate directory from source
+    mkdir -p ${LLVM_BUILD_DIR}
+    cd ${LLVM_BUILD_DIR}
+}
+
+do_compile() {
+    cd ${LLVM_BUILD_DIR}
+
+    # Fix libdir for multilib
+    sed -i 's:(PROJ_prefix)/lib:(PROJ_prefix)/${baselib}:g' Makefile.config
+
+    oe_runmake \
+        AR="${BUILD_AR}" \
+        CC="${BUILD_CC}" \
+        CFLAGS="${BUILD_CFLAGS}" \
+        CXX="${BUILD_CXX}" \
+        CXXFLAGS="${BUILD_CXXFLAGS}" \
+        CPP="${BUILD_CPP}" \
+        CPPFLAGS="${BUILD_CPPFLAGS}" \
+        NM="${BUILD_NM}" \
+        RANLIB="${BUILD_RANLIB}" \
+        PATH="${STAGING_BINDIR_NATIVE}:$PATH" \
+        cross-compile-build-tools
+    oe_runmake
+}
+
+do_install() {
+    cd ${LLVM_BUILD_DIR}
+    oe_runmake DESTDIR=${LLVM_INSTALL_DIR} install
+
+    mv ${LLVM_INSTALL_DIR}${bindir}/${HOST_SYS}-llvm-config-host ${LLVM_INSTALL_DIR}/llvm-config-host
+
+    install -d ${D}${bindir}/${LLVM_DIR}
+    mv ${LLVM_INSTALL_DIR}${bindir}/* ${D}${bindir}/${LLVM_DIR}/
+
+    install -d ${D}${includedir}/${LLVM_DIR}
+    mv ${LLVM_INSTALL_DIR}${includedir}/* ${D}${includedir}/${LLVM_DIR}/
+
+    install -d ${D}${libdir}/${LLVM_DIR}
+    mv ${LLVM_INSTALL_DIR}${libdir}/* ${D}${libdir}/${LLVM_DIR}/
+    ln -s ${LLVM_DIR}/libLLVM-${PV}.so ${D}${libdir}/libLLVM-${PV}.so
+
+    install -d ${D}${docdir}/${LLVM_DIR}
+    mv ${LLVM_INSTALL_DIR}${prefix}/docs/llvm/* ${D}${docdir}/${LLVM_DIR}
+}
+
+SYSROOT_PREPROCESS_FUNCS += "llvm_sysroot_preprocess"
+
+llvm_sysroot_preprocess() {
+    install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
+    mv ${LLVM_INSTALL_DIR}/llvm-config-host ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV}
+}
+
+PACKAGES += "${PN}-bugpointpasses ${PN}-llvmhello"
+ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY_${PN}-staticdev = "1"
+FILES_${PN} = ""
+FILES_${PN}-staticdev = ""
+FILES_${PN}-dbg = " \
+    ${bindir}/${LLVM_DIR}/.debug \
+    ${libdir}/${LLVM_DIR}/.debug/BugpointPasses.so \
+    ${libdir}/${LLVM_DIR}/.debug/LLVMHello.so \
+    /usr/src/debug \
+"
+
+FILES_${PN}-dev = " \
+    ${bindir}/${LLVM_DIR} \
+    ${includedir}/${LLVM_DIR} \
+"
+RRECOMMENDS_${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello"
+
+FILES_${PN}-bugpointpasses = "\
+    ${libdir}/${LLVM_DIR}/BugpointPasses.so \
+"
+FILES_${PN}-llvmhello = "\
+    ${libdir}/${LLVM_DIR}/LLVMHello.so \
+"
+
+PACKAGES_DYNAMIC = "^libllvm${LLVM_RELEASE}-.*$"
+NOAUTOPACKAGEDEBUG = "1"
+
+INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE} += "dev-so"
+
+python llvm_populate_packages() {
+    libdir = bb.data.expand('${libdir}', d)
+    libllvm_libdir = bb.data.expand('${libdir}/${LLVM_DIR}', d)
+    split_dbg_packages = do_split_packages(d, libllvm_libdir+'/.debug', '^lib(.*)\.so$', 'libllvm${LLVM_RELEASE}-%s-dbg', 'Split debug package for %s', allow_dirs=True)
+    split_packages = do_split_packages(d, libdir, '^lib(.*)\.so$', 'libllvm${LLVM_RELEASE}-%s', 'Split package for %s', allow_dirs=True, allow_links=True, recursive=True)
+    split_staticdev_packages = do_split_packages(d, libllvm_libdir, '^lib(.*)\.a$', 'libllvm${LLVM_RELEASE}-%s-staticdev', 'Split staticdev package for %s', allow_dirs=True)
+    if split_packages:
+        pn = d.getVar('PN', True)
+        d.appendVar('RDEPENDS_' + pn, ' '+' '.join(split_packages))
+        d.appendVar('RDEPENDS_' + pn + '-dbg', ' '+' '.join(split_dbg_packages))
+        d.appendVar('RDEPENDS_' + pn + '-staticdev', ' '+' '.join(split_staticdev_packages))
+}
+
+PACKAGESPLITFUNCS_prepend = "llvm_populate_packages "
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm3.3/Remove-error-output-from-configure-if-CFLAGS-is-set-.patch b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm3.3/Remove-error-output-from-configure-if-CFLAGS-is-set-.patch
new file mode 100644
index 0000000..44387e8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm3.3/Remove-error-output-from-configure-if-CFLAGS-is-set-.patch
@@ -0,0 +1,52 @@
+From d4bf7a3853dab12c11cbfc8088fd76f548a8d017 Mon Sep 17 00:00:00 2001
+From: Patrik Hagglund <patrik.h.hagglund@ericsson.com>
+Date: Tue, 24 Sep 2013 11:38:45 +0000
+Subject: [PATCH] Remove error output from configure if CFLAGS is set (r174313).
+
+This fixes PR16724.
+
+git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191289 91177308-0d34-0410-b5e6-96231b3b80d8
+
+https://github.com/llvm-mirror/llvm/commit/d4bf7a3853dab12c11cbfc8088fd76f548a8d017
+
+Upstream-Status: Backport
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+---
+ autoconf/configure.ac | 4 ++--
+ configure             | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/autoconf/configure.ac b/autoconf/configure.ac
+index f9c365c..45f2fe4 100644
+--- a/autoconf/configure.ac
++++ b/autoconf/configure.ac
+@@ -61,8 +61,8 @@ fi
+ 
+ dnl Default to empty (i.e. assigning the null string to) CFLAGS and CXXFLAGS,
+ dnl instead of the autoconf default (for example, '-g -O2' for CC=gcc).
+-${CFLAGS=}
+-${CXXFLAGS=}
++: ${CFLAGS=}
++: ${CXXFLAGS=}
+ 
+ dnl We need to check for the compiler up here to avoid anything else
+ dnl starting with a different one.
+diff --git a/configure b/configure
+index f3a6594..9090cda 100755
+--- a/configure
++++ b/configure
+@@ -1992,8 +1992,8 @@ echo "$as_me: error: Already configured in ${srcdir}" >&2;}
+   fi
+ fi
+ 
+-${CFLAGS=}
+-${CXXFLAGS=}
++: ${CFLAGS=}
++: ${CXXFLAGS=}
+ 
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm3.3/arm_fenv_uclibc.patch b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm3.3/arm_fenv_uclibc.patch
new file mode 100644
index 0000000..c3ae494
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm3.3/arm_fenv_uclibc.patch
@@ -0,0 +1,14 @@
+Index: llvm-2.9/include/llvm/Support/FEnv.h
+===================================================================
+--- llvm-2.9.orig/include/llvm/Support/FEnv.h	2010-11-29 20:44:50.000000000 +0100
++++ llvm-2.9/include/llvm/Support/FEnv.h	2011-11-18 18:42:22.580161297 +0100
+@@ -17,6 +17,9 @@
+ 
+ #include "llvm/Config/config.h"
+ #include <cerrno>
++
++#undef HAVE_FENV_H
++
+ #ifdef HAVE_FENV_H
+ #include <fenv.h>
+ #endif
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm3.3_3.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm3.3_3.3.bb
new file mode 100644
index 0000000..60a2221
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/llvm/llvm3.3_3.3.bb
@@ -0,0 +1,22 @@
+require llvm.inc
+
+DEPENDS += "zlib"
+EXTRA_OECONF += "--enable-zlib"
+
+SRC_URI += "file://Remove-error-output-from-configure-if-CFLAGS-is-set-.patch"
+
+SRC_URI_append_libc-uclibc = " file://arm_fenv_uclibc.patch "
+
+SRC_URI[md5sum] = "40564e1dc390f9844f1711c08b08e391"
+SRC_URI[sha256sum] = "68766b1e70d05a25e2f502e997a3cb3937187a3296595cf6e0977d5cd6727578"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[r600] = "--enable-experimental-targets=R600,,,"
+
+# Fails to build with thumb-1 (qemuarm)
+# | {standard input}: Assembler messages:
+# | {standard input}:22: Error: selected processor does not support Thumb mode `stmdb sp!,{r0,r1,r2,r3,lr}'
+# | {standard input}:31: Error: lo register required -- `ldmia sp!,{r0,r1,r2,r3,lr}'
+# | {standard input}:32: Error: lo register required -- `ldr pc,[sp],#4'
+# | make[3]: *** [/home/jenkins/oe/world/shr-core/tmp-glibc/work/armv5te-oe-linux-gnueabi/llvm3.3/3.3-r0/llvm-3.3.build/lib/Target/ARM/Release/ARMJITInfo.o] Error 1
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/meta/distro-feed-configs.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/meta/distro-feed-configs.bb
new file mode 100644
index 0000000..ea5ca38
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/meta/distro-feed-configs.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Configuration files for online package repositories aka feeds"
+PR = "r6"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+DISTRO_FEED_PREFIX ?= "remote"
+DISTRO_FEED_URI ?= "http://my-distribution.example/remote-feed/"
+DISTRO_FEED_ARCHS ?= "all ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}"
+
+do_compile() {
+    mkdir -p ${S}/${sysconfdir}/opkg
+    for feed in ${DISTRO_FEED_ARCHS}; do
+        echo "src/gz ${DISTRO_FEED_PREFIX}-${feed} ${DISTRO_FEED_URI}/${feed}" > ${S}/${sysconfdir}/opkg/${feed}-feed.conf
+    done
+}
+do_install () {
+    install -d ${D}${sysconfdir}/opkg
+    install -m 0644 ${S}/${sysconfdir}/opkg/* ${D}${sysconfdir}/opkg/
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+#def distro_feed_configs(d):
+#    import bb
+#    parchs = d.getVar( "PACKAGE_EXTRA_ARCHS", 1 ).split()
+#    march = d.getVar( "MACHINE_ARCH", 1 ).split()
+#    archs = [ "all" ] + parchs + march
+#    confs = [ ( "${sysconfdir}/opkg/%s-feed.conf" % feed ) for feed in archs ]
+#    return " ".join( confs )
+#
+#CONFFILES_${PN} += '${@distro_feed_configs(d)}'
+
+CONFFILES_${PN} += '${@ " ".join( [ ( "${sysconfdir}/opkg/%s-feed.conf" % feed ) for feed in "all ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}".split() ] ) }'
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.8.bb
new file mode 100644
index 0000000..943343b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.8.bb
@@ -0,0 +1,12 @@
+inherit gnomebase
+
+GNOME_COMPRESS_TYPE="xz"
+
+SRC_URI[archive.md5sum] = "00fd5c6850cd5fecc2e02b04d0dd1637"
+SRC_URI[archive.sha256sum] = "c9ab5fd3872fbe245fbc35347acf4a95063111f81d54c43df3af662dad0a03d5"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+BBCLASSEXTEND = "native"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
new file mode 100644
index 0000000..21dd1de
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
@@ -0,0 +1,56 @@
+# This recipe is intended as a 'simpler' replacement for packagegroup-base.
+# Please communicate your use cases and suggestions to the mailinglist(s)
+
+SUMMARY = "Basic task to get a device online"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PR = "r13"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+inherit packagegroup
+inherit bluetooth
+
+# Poke extra recomendations into the list using your machine.conf
+#
+MACHINE_EXTRA_RRECOMMENDS ?= ""
+
+#
+# Select between dropbear and openssh
+# Set TASK_BASIC_SSHDAEMON = "openssh-sshd openssh-sftp openssh-sftp-server" in your DISTRO config to get openssh(d)
+#
+TASK_BASIC_SSHDAEMON ?= "dropbear openssh-sftp openssh-sftp-server"
+
+#
+# The section below is designed to match with packagegroup-boot, but doesn't depend on it to allow for more freedom 
+# when writing image recipes.
+# It also avoids the choice between connman/networkmanager/ifupdown since that is an image feature, not a
+# distro feature.
+#
+# Util-linux (u)mount is included because the busybox one can't handle /etc/mtab being symlinked to /proc/mounts
+#
+RDEPENDS_${PN} = "\
+    ${TASK_BASIC_SSHDAEMON} \
+    avahi-daemon avahi-utils \
+"
+
+#
+# The following section is split in 3:
+#   1) Machine features: kernel modules and userspace helpers for those
+#   2) Distro features: packages associated with those
+#   3) Nice to have: packages that are nice to have, but aren't strictly needed  
+#
+RRECOMMENDS_${PN} = "\
+    ${MACHINE_EXTRA_RRECOMMENDS} \
+    ${@bb.utils.contains("MACHINE_FEATURES", "usbhost", "usbutils", "", d)} \
+    ${@bb.utils.contains("MACHINE_FEATURES", "alsa", "alsa-utils-alsamixer", "", d)} \
+    ${@bb.utils.contains("MACHINE_FEATURES", "usbgadget", "kernel-module-g-ether kernel-module-g-serial kernel-module-g-mass-storage", "", d)} \
+    \
+    ${@bb.utils.contains("DISTRO_FEATURES", "bluetooth", "${BLUEZ}", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "wifi", "iw wpa-supplicant", "", d)} \
+    \
+    tzdata \
+    \
+    cpufrequtils \
+    htop \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
new file mode 100644
index 0000000..a542ae4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Basic task to get a device booting"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PR = "r58"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+inherit packagegroup
+
+#
+# those ones can be set in machine config to supply packages needed to get machine booting
+#
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= ""
+MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= ""
+
+# Make sure we build the kernel
+DEPENDS = "virtual/kernel"
+
+#
+# minimal set of packages - needed to boot
+#
+RDEPENDS_${PN} = "\
+    base-files \
+    base-passwd \
+    busybox \
+    netbase \
+    ${@bb.utils.contains("MACHINE_FEATURES", "keyboard", "keymaps", "", d)} \
+    ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS} \
+"
+
+RRECOMMENDS_${PN} = "\
+    kernel \
+    ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS} \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-cli-tools.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-cli-tools.bb
new file mode 100644
index 0000000..2a4b067
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-cli-tools.bb
@@ -0,0 +1,45 @@
+SUMMARY = "A set of useful command line tools"
+SUMMARY_${PN}-debug = "A set of command line tools useful for debugging"
+SECTION = "console"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+PV = "1.0"
+PR = "r21"
+
+inherit packagegroup allarch
+
+PACKAGES += "${PN}-debug"
+
+RDEPENDS_${PN} = "\
+    dbus-daemon-proxy \
+    dosfstools \
+    htop \
+    iptables \
+    lsof \
+    mbuffer \
+    mtd-utils \
+    nano \
+    nfs-utils-client \
+    nmon \
+    powertop \
+    screen \
+    socat \
+    sysstat \
+"
+
+RDEPENDS_${PN}-debug = "\
+    evtest \
+    devmem2 \
+    i2c-tools \
+    gdb \
+    procps \
+    pxaregs \
+    s3c24xx-gpio \
+    s3c64xx-gpio \
+    serial-forward \
+    strace \
+"
+
+RRECOMMENDS_${PN}-debug = "\
+    ltrace \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.2.bb
new file mode 100644
index 0000000..9ca8502
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.2.bb
@@ -0,0 +1,61 @@
+SUMMARY = "Plymouth is a project from Fedora providing a flicker-free graphical boot process."
+
+DESCRIPTION = "Plymouth is an application that runs very early in the boot process \
+               (even before the root filesystem is mounted!) that provides a \
+	       graphical boot animation while the boot process happens in the background."
+
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/Plymouth"
+SECTION = "base"
+
+LICENSE = "GPLv2+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "libcap libpng cairo dbus udev"
+PROVIDES = "virtual/psplash"
+RPROVIDES_${PN} = "virtual/psplash virtual/psplash-support"
+
+SRC_URI = "http://www.freedesktop.org/software/plymouth/releases/${BPN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "ff420994deb7ea203df678df92e7ab7d"
+SRC_URI[sha256sum] = "2f0ce82042cf9c7eadd2517a1f74c8a85fa8699781d9f294a06eade29fbed57f"
+
+EXTRA_OECONF += " --enable-shared --disable-static --disable-gtk --disable-documentation\
+		  --with-logo=${LOGO} \
+                  ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--enable-systemd-integration --with-system-root-install', '', d)} \
+                "
+
+PACKAGECONFIG[drm] = "--enable-drm,--disable-drm,libdrm"
+PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango"
+PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+"
+
+PACKAGECONFIG ??= "pango"
+
+LOGO ??= "${datadir}/plymouth/bizcom.png"
+
+PACKAGECONFIG_append_x86 = " drm"
+PACKAGECONFIG_append_x86-64 = " drm"
+
+inherit autotools pkgconfig systemd
+
+
+do_install_append() {
+	install -d ${D}${systemd_unitdir}/system
+	install -m 644 ${B}/systemd-units/*.service ${D}${systemd_unitdir}/system
+	install -m 644 ${B}/systemd-units/systemd-ask-password-plymouth.path ${D}${systemd_unitdir}/system
+	# Remove /var/run from package as plymouth will populate it on startup
+	rm -fr "${D}${localstatedir}/run"
+}
+
+PACKAGES =+ "${PN}-initrd ${PN}-set-default-theme"
+
+FILES_${PN}-initrd = "${libexecdir}/plymouth/*"
+FILES_${PN}-set-default-theme = "${sbindir}/plymouth-set-default-theme"
+
+FILES_${PN} += "${systemd_unitdir}/system/*"
+FILES_${PN}-dbg += "${libdir}/plymouth/renderers/.debug"
+
+
+RDEPENDS_${PN}-initrd = "bash dracut"
+RDEPENDS_${PN}-set-default-theme = "bash"
+
+SYSTEMD_SERVICE_${PN} = "plymouth-start.service"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl-20100902/create-as-shared-lib.patch b/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl-20100902/create-as-shared-lib.patch
new file mode 100644
index 0000000..306e3b8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl-20100902/create-as-shared-lib.patch
@@ -0,0 +1,31 @@
+--- a/src/proxy-libintl/Makefile.org	2009-09-12 23:19:04.989421607 -0700
++++ a/src/proxy-libintl/Makefile	2009-09-12 23:21:14.100640001 -0700
+@@ -4,20 +4,20 @@ ZIPFILE = proxy-libintl-$(TIMESTAMP).zip
+ CC = gcc
+ CFLAGS = -Wall -I ../../include
+ 
+-all : ../../lib/libintl.a ../../lib/intl.lib
++all : ../../lib/libintl.so ../../lib/intl.lib
+ 
+-../../lib/libintl.a : libintl.o
+-	ar rc $@ libintl.o
++../../lib/libintl.so : libintl.o
++	$(CC) -shared -o $@ libintl.o
+ 
+-../../lib/intl.lib : ../../lib/libintl.a
+-	cp ../../lib/libintl.a $@
+-	strip --strip-unneeded $@
++../../lib/intl.lib : ../../lib/libintl.so
++	cp ../../lib/libintl.so $@
++	$(STRIP) --strip-unneeded $@
+ 
+ libintl.o : libintl.c
+ 	$(CC) $(CFLAGS) -c libintl.c
+ 
+ clean :
+-	rm -f *.o ../../lib/libintl.a ../../$(ZIPFILE)
++	rm -f *.o ../../lib/libintl.so ../../$(ZIPFILE)
+ 
+ dist : clean all
+-	cd ../..; zip $(ZIPFILE) include/libintl.h lib/{libintl.a,intl.lib} src/proxy-libintl/{README.txt,COPYING.LIB.txt,Makefile,libintl.[ch]}; manifestify $(ZIPFILE)
++	cd ../..; zip $(ZIPFILE) include/libintl.h lib/{libintl.so,intl.lib} src/proxy-libintl/{README.txt,COPYING.LIB.txt,Makefile,libintl.[ch]}; manifestify $(ZIPFILE)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl-20100902/soname.patch b/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl-20100902/soname.patch
new file mode 100644
index 0000000..0df232d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl-20100902/soname.patch
@@ -0,0 +1,23 @@
+Index: proxy-libintl-20080418-r6/src/proxy-libintl/Makefile
+===================================================================
+--- proxy-libintl-20080418-r6.orig/src/proxy-libintl/Makefile	2010-07-25 08:40:22.893620001 -0700
++++ proxy-libintl-20080418-r6/src/proxy-libintl/Makefile	2010-07-25 10:51:29.573620000 -0700
+@@ -6,16 +6,13 @@ CFLAGS = -Wall -I ../../include
+ 
+ all : ../../lib/libintl.so ../../lib/intl.lib
+ 
+-../../lib/libintl.so : libintl.o
+-	$(CC) -shared -o $@ libintl.o
++../../lib/libintl.so : libintl.c
++	$(CC) $(CFLAGS) -shared -Wl,-soname -Wl,libintl.so -o $@ $<
+ 
+ ../../lib/intl.lib : ../../lib/libintl.so
+ 	cp ../../lib/libintl.so $@
+ 	$(STRIP) --strip-unneeded $@
+ 
+-libintl.o : libintl.c
+-	$(CC) $(CFLAGS) -c libintl.c
+-
+ clean :
+ 	rm -f *.o ../../lib/libintl.so ../../$(ZIPFILE)
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl-20100902/stub-only.patch b/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl-20100902/stub-only.patch
new file mode 100644
index 0000000..7186b13c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl-20100902/stub-only.patch
@@ -0,0 +1,72 @@
+Index: proxy-libintl/src/proxy-libintl/libintl.c
+===================================================================
+--- proxy-libintl.orig/src/proxy-libintl/libintl.c
++++ proxy-libintl/src/proxy-libintl/libintl.c
+@@ -18,9 +18,12 @@
+  */
+ 
+ #ifdef _WIN32
+-#include <windows.h>
++#  include <windows.h>
+ #else
+-#include <dlfcn.h>
++#  include <stddef.h>
++#  if !STUB_ONLY
++#    include <dlfcn.h>
++#  endif
+ typedef void* HMODULE;
+ #endif
+ 
+@@ -65,11 +68,13 @@ static char * (*p_bind_textdomain_codese
+ static int
+ use_intl_dll (HMODULE dll)
+ {
+-#ifdef _WIN32
+-#define LOOKUP(fn) p_##fn = (void *) GetProcAddress (dll, #fn); if (p_##fn == NULL) return 0
+-#else
+-#define LOOKUP(fn) p_##fn = (void *) dlsym (dll, #fn); if (p_##fn == NULL) return 0
+-#endif
++#if !STUB_ONLY
++#  ifdef _WIN32
++#    define LOOKUP(fn) p_##fn = (void *) GetProcAddress (dll, #fn); if (p_##fn == NULL) return 0
++#  else
++#    define LOOKUP(fn) p_##fn = (void *) dlsym (dll, #fn); if (p_##fn == NULL) return 0
++#  endif  /* _WIN32 */
++
+ 
+   LOOKUP (gettext);
+   LOOKUP (dgettext);
+@@ -82,7 +87,7 @@ use_intl_dll (HMODULE dll)
+   LOOKUP (bind_textdomain_codeset);
+   
+ #undef LOOKUP
+-
++#endif  /* !STUB_ONLY */
+   return 1;
+ }
+ 
+@@ -171,13 +176,17 @@ setup (void)
+ 
+   if (!beenhere)
+     {
+-#ifdef _WIN32
+-      HMODULE intl_dll = LoadLibrary ("intl.dll");
+-#elif defined(__APPLE__) && defined(__MACH__)
+-      HMODULE intl_dll = dlopen ("libintl.dylib", RTLD_LAZY);
+-#else
+-      HMODULE intl_dll = dlopen ("libintl.so", RTLD_LAZY);
+-#endif
++#if !STUB_ONLY
++#  ifdef _WIN32
++    HMODULE intl_dll = LoadLibrary ("intl.dll");
++#  elif defined(__APPLE__) && defined(__MACH__)
++    HMODULE intl_dll = dlopen ("libintl.dylib", RTLD_LAZY);
++#  else
++    HMODULE intl_dll = dlopen ("libintl.so", RTLD_LAZY);
++#  endif
++#else  /* !STUB_ONLY */
++    HMODULE intl_dll = NULL;
++#endif  /* STUB_ONLY */
+ 
+       if (intl_dll != NULL &&
+ 	  use_intl_dll (intl_dll))
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
new file mode 100644
index 0000000..a46a91c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Proxy libintl"
+HOMEPAGE = "http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/"
+SECTION = "libs"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://src/proxy-libintl/COPYING.LIB.txt;md5=bc400bc21422f9a92e76ec2c5167ca2e"
+
+PR = "r1"
+PROVIDES = "virtual/libintl"
+
+SRC_URI = " \
+    http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/${PN}-dev_${PV}_win32.zip \
+"
+SRC_URI[md5sum] = "aef407c2b97ee829383aadd867c61d1e"
+SRC_URI[sha256sum] = "291ac350cc5eb4a01b0d651ca99fae64cee8a1c06b2005277fab5a4356f9ae91"
+
+S = "${WORKDIR}"
+PACKAGES = "${PN} ${PN}-dev"
+FILES_${PN}-dev = "${includedir}/libintl.h ${libdir}/libintl.a"
+INSANE_SKIP_${PN}-dev = "staticdev"
+ALLOW_EMPTY_${PN} = "1"
+CFLAGS_append = " -fPIC -Wall -I ../../include ${@['-DSTUB_ONLY', ''][d.getVar('USE_NLS', 1) != 'no']}"
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_compile() {
+    cd ${WORKDIR}/src/proxy-libintl
+    oe_runmake ../../lib/libintl.a
+}
+
+do_install() {
+    install -d ${D}/${includedir}
+    install -d ${D}/${libdir}
+    install -m 0644 ${WORKDIR}/include/libintl.h ${D}/${includedir}
+    install -m 0644 ${WORKDIR}/lib/libintl.a ${D}/${libdir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.6.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.6.0.bb
new file mode 100644
index 0000000..da03200
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.6.0.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Toybox combines common utilities together into a single executable."
+HOMEPAGE = "http://www.landley.net/toybox/"
+
+SRC_URI = "http://www.landley.net/toybox/downloads/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "7f4a6c89e56c48e3350e611f5b36c2cf"
+SRC_URI[sha256sum] = "b6e2694d19ac08f1c3416d5b2a02a31d445db2ed98dec89761430cdff2c9710d"
+
+
+LICENSE = "BSD-0-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f0b8b3dd6431bcaa245da0a08bd0d511"
+
+SECTION = "base"
+
+do_configure() {
+    oe_runmake defconfig
+
+    # Disable killall5 as it isn't managed by update-alternatives
+    sed -e 's/CONFIG_KILLALL5=y/# CONFIG_KILLALL5 is not set/' -i .config
+}
+
+do_compile() {
+    oe_runmake toybox_unstripped
+
+    # Create a list of links needed
+    oe_runmake generated/instlist
+    ./generated/instlist long | sed -e 's#^#/#' > toybox.links
+}
+
+do_install() {
+    # Install manually instead of using 'make install'
+    install -d ${D}${base_bindir}
+    if grep -q "CONFIG_TOYBOX_SUID=y" ${B}/.config; then
+        install -m 4755 ${B}/toybox_unstripped ${D}${base_bindir}/toybox
+    else
+        install -m 0755 ${B}/toybox_unstripped ${D}${base_bindir}/toybox
+    fi
+
+    install -d ${D}${sysconfdir}
+    install -m 0644 ${B}/toybox.links ${D}${sysconfdir}
+}
+
+inherit update-alternatives
+
+# If you've chosen to install toybox you probably want it to take precedence
+# over busybox where possible but not over other packages
+ALTERNATIVE_PRIORITY = "60"
+
+python do_package_prepend () {
+    # Read links from /etc/toybox.links and create appropriate
+    # update-alternatives variables
+
+    dvar = d.getVar('D', True)
+    pn = d.getVar('PN', True)
+    target = "/bin/toybox"
+
+    f = open('%s/etc/toybox.links' % (dvar), 'r')
+    for alt_link_name in f:
+        alt_link_name = alt_link_name.strip()
+        alt_name = os.path.basename(alt_link_name)
+        d.appendVar('ALTERNATIVE_%s' % (pn), ' ' + alt_name)
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', alt_name, alt_link_name)
+        d.setVarFlag('ALTERNATIVE_TARGET', alt_name, target)
+    f.close()
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/files/GPLv2.patch b/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/files/GPLv2.patch
new file mode 100644
index 0000000..1ee8181
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/files/GPLv2.patch
@@ -0,0 +1,347 @@
+Upstream-Status: Inappropriate [licensing]
+
+diff --git a/COPYING b/COPYING
+new file mode 100644
+index 0000000..d511905
+--- /dev/null
++++ b/COPYING
+@@ -0,0 +1,339 @@
++		    GNU GENERAL PUBLIC LICENSE
++		       Version 2, June 1991
++
++ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++			    Preamble
++
++  The licenses for most software are designed to take away your
++freedom to share and change it.  By contrast, the GNU General Public
++License is intended to guarantee your freedom to share and change free
++software--to make sure the software is free for all its users.  This
++General Public License applies to most of the Free Software
++Foundation's software and to any other program whose authors commit to
++using it.  (Some other Free Software Foundation software is covered by
++the GNU Lesser General Public License instead.)  You can apply it to
++your programs, too.
++
++  When we speak of free software, we are referring to freedom, not
++price.  Our General Public Licenses are designed to make sure that you
++have the freedom to distribute copies of free software (and charge for
++this service if you wish), that you receive source code or can get it
++if you want it, that you can change the software or use pieces of it
++in new free programs; and that you know you can do these things.
++
++  To protect your rights, we need to make restrictions that forbid
++anyone to deny you these rights or to ask you to surrender the rights.
++These restrictions translate to certain responsibilities for you if you
++distribute copies of the software, or if you modify it.
++
++  For example, if you distribute copies of such a program, whether
++gratis or for a fee, you must give the recipients all the rights that
++you have.  You must make sure that they, too, receive or can get the
++source code.  And you must show them these terms so they know their
++rights.
++
++  We protect your rights with two steps: (1) copyright the software, and
++(2) offer you this license which gives you legal permission to copy,
++distribute and/or modify the software.
++
++  Also, for each author's protection and ours, we want to make certain
++that everyone understands that there is no warranty for this free
++software.  If the software is modified by someone else and passed on, we
++want its recipients to know that what they have is not the original, so
++that any problems introduced by others will not reflect on the original
++authors' reputations.
++
++  Finally, any free program is threatened constantly by software
++patents.  We wish to avoid the danger that redistributors of a free
++program will individually obtain patent licenses, in effect making the
++program proprietary.  To prevent this, we have made it clear that any
++patent must be licensed for everyone's free use or not licensed at all.
++
++  The precise terms and conditions for copying, distribution and
++modification follow.
++
++		    GNU GENERAL PUBLIC LICENSE
++   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
++
++  0. This License applies to any program or other work which contains
++a notice placed by the copyright holder saying it may be distributed
++under the terms of this General Public License.  The "Program", below,
++refers to any such program or work, and a "work based on the Program"
++means either the Program or any derivative work under copyright law:
++that is to say, a work containing the Program or a portion of it,
++either verbatim or with modifications and/or translated into another
++language.  (Hereinafter, translation is included without limitation in
++the term "modification".)  Each licensee is addressed as "you".
++
++Activities other than copying, distribution and modification are not
++covered by this License; they are outside its scope.  The act of
++running the Program is not restricted, and the output from the Program
++is covered only if its contents constitute a work based on the
++Program (independent of having been made by running the Program).
++Whether that is true depends on what the Program does.
++
++  1. You may copy and distribute verbatim copies of the Program's
++source code as you receive it, in any medium, provided that you
++conspicuously and appropriately publish on each copy an appropriate
++copyright notice and disclaimer of warranty; keep intact all the
++notices that refer to this License and to the absence of any warranty;
++and give any other recipients of the Program a copy of this License
++along with the Program.
++
++You may charge a fee for the physical act of transferring a copy, and
++you may at your option offer warranty protection in exchange for a fee.
++
++  2. You may modify your copy or copies of the Program or any portion
++of it, thus forming a work based on the Program, and copy and
++distribute such modifications or work under the terms of Section 1
++above, provided that you also meet all of these conditions:
++
++    a) You must cause the modified files to carry prominent notices
++    stating that you changed the files and the date of any change.
++
++    b) You must cause any work that you distribute or publish, that in
++    whole or in part contains or is derived from the Program or any
++    part thereof, to be licensed as a whole at no charge to all third
++    parties under the terms of this License.
++
++    c) If the modified program normally reads commands interactively
++    when run, you must cause it, when started running for such
++    interactive use in the most ordinary way, to print or display an
++    announcement including an appropriate copyright notice and a
++    notice that there is no warranty (or else, saying that you provide
++    a warranty) and that users may redistribute the program under
++    these conditions, and telling the user how to view a copy of this
++    License.  (Exception: if the Program itself is interactive but
++    does not normally print such an announcement, your work based on
++    the Program is not required to print an announcement.)
++
++These requirements apply to the modified work as a whole.  If
++identifiable sections of that work are not derived from the Program,
++and can be reasonably considered independent and separate works in
++themselves, then this License, and its terms, do not apply to those
++sections when you distribute them as separate works.  But when you
++distribute the same sections as part of a whole which is a work based
++on the Program, the distribution of the whole must be on the terms of
++this License, whose permissions for other licensees extend to the
++entire whole, and thus to each and every part regardless of who wrote it.
++
++Thus, it is not the intent of this section to claim rights or contest
++your rights to work written entirely by you; rather, the intent is to
++exercise the right to control the distribution of derivative or
++collective works based on the Program.
++
++In addition, mere aggregation of another work not based on the Program
++with the Program (or with a work based on the Program) on a volume of
++a storage or distribution medium does not bring the other work under
++the scope of this License.
++
++  3. You may copy and distribute the Program (or a work based on it,
++under Section 2) in object code or executable form under the terms of
++Sections 1 and 2 above provided that you also do one of the following:
++
++    a) Accompany it with the complete corresponding machine-readable
++    source code, which must be distributed under the terms of Sections
++    1 and 2 above on a medium customarily used for software interchange; or,
++
++    b) Accompany it with a written offer, valid for at least three
++    years, to give any third party, for a charge no more than your
++    cost of physically performing source distribution, a complete
++    machine-readable copy of the corresponding source code, to be
++    distributed under the terms of Sections 1 and 2 above on a medium
++    customarily used for software interchange; or,
++
++    c) Accompany it with the information you received as to the offer
++    to distribute corresponding source code.  (This alternative is
++    allowed only for noncommercial distribution and only if you
++    received the program in object code or executable form with such
++    an offer, in accord with Subsection b above.)
++
++The source code for a work means the preferred form of the work for
++making modifications to it.  For an executable work, complete source
++code means all the source code for all modules it contains, plus any
++associated interface definition files, plus the scripts used to
++control compilation and installation of the executable.  However, as a
++special exception, the source code distributed need not include
++anything that is normally distributed (in either source or binary
++form) with the major components (compiler, kernel, and so on) of the
++operating system on which the executable runs, unless that component
++itself accompanies the executable.
++
++If distribution of executable or object code is made by offering
++access to copy from a designated place, then offering equivalent
++access to copy the source code from the same place counts as
++distribution of the source code, even though third parties are not
++compelled to copy the source along with the object code.
++
++  4. You may not copy, modify, sublicense, or distribute the Program
++except as expressly provided under this License.  Any attempt
++otherwise to copy, modify, sublicense or distribute the Program is
++void, and will automatically terminate your rights under this License.
++However, parties who have received copies, or rights, from you under
++this License will not have their licenses terminated so long as such
++parties remain in full compliance.
++
++  5. You are not required to accept this License, since you have not
++signed it.  However, nothing else grants you permission to modify or
++distribute the Program or its derivative works.  These actions are
++prohibited by law if you do not accept this License.  Therefore, by
++modifying or distributing the Program (or any work based on the
++Program), you indicate your acceptance of this License to do so, and
++all its terms and conditions for copying, distributing or modifying
++the Program or works based on it.
++
++  6. Each time you redistribute the Program (or any work based on the
++Program), the recipient automatically receives a license from the
++original licensor to copy, distribute or modify the Program subject to
++these terms and conditions.  You may not impose any further
++restrictions on the recipients' exercise of the rights granted herein.
++You are not responsible for enforcing compliance by third parties to
++this License.
++
++  7. If, as a consequence of a court judgment or allegation of patent
++infringement or for any other reason (not limited to patent issues),
++conditions are imposed on you (whether by court order, agreement or
++otherwise) that contradict the conditions of this License, they do not
++excuse you from the conditions of this License.  If you cannot
++distribute so as to satisfy simultaneously your obligations under this
++License and any other pertinent obligations, then as a consequence you
++may not distribute the Program at all.  For example, if a patent
++license would not permit royalty-free redistribution of the Program by
++all those who receive copies directly or indirectly through you, then
++the only way you could satisfy both it and this License would be to
++refrain entirely from distribution of the Program.
++
++If any portion of this section is held invalid or unenforceable under
++any particular circumstance, the balance of the section is intended to
++apply and the section as a whole is intended to apply in other
++circumstances.
++
++It is not the purpose of this section to induce you to infringe any
++patents or other property right claims or to contest validity of any
++such claims; this section has the sole purpose of protecting the
++integrity of the free software distribution system, which is
++implemented by public license practices.  Many people have made
++generous contributions to the wide range of software distributed
++through that system in reliance on consistent application of that
++system; it is up to the author/donor to decide if he or she is willing
++to distribute software through any other system and a licensee cannot
++impose that choice.
++
++This section is intended to make thoroughly clear what is believed to
++be a consequence of the rest of this License.
++
++  8. If the distribution and/or use of the Program is restricted in
++certain countries either by patents or by copyrighted interfaces, the
++original copyright holder who places the Program under this License
++may add an explicit geographical distribution limitation excluding
++those countries, so that distribution is permitted only in or among
++countries not thus excluded.  In such case, this License incorporates
++the limitation as if written in the body of this License.
++
++  9. The Free Software Foundation may publish revised and/or new versions
++of the General Public License from time to time.  Such new versions will
++be similar in spirit to the present version, but may differ in detail to
++address new problems or concerns.
++
++Each version is given a distinguishing version number.  If the Program
++specifies a version number of this License which applies to it and "any
++later version", you have the option of following the terms and conditions
++either of that version or of any later version published by the Free
++Software Foundation.  If the Program does not specify a version number of
++this License, you may choose any version ever published by the Free Software
++Foundation.
++
++  10. If you wish to incorporate parts of the Program into other free
++programs whose distribution conditions are different, write to the author
++to ask for permission.  For software which is copyrighted by the Free
++Software Foundation, write to the Free Software Foundation; we sometimes
++make exceptions for this.  Our decision will be guided by the two goals
++of preserving the free status of all derivatives of our free software and
++of promoting the sharing and reuse of software generally.
++
++			    NO WARRANTY
++
++  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
++FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
++OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
++PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
++OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
++TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
++PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
++REPAIR OR CORRECTION.
++
++  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
++REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
++INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
++OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
++TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
++YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
++PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
++POSSIBILITY OF SUCH DAMAGES.
++
++		     END OF TERMS AND CONDITIONS
++
++	    How to Apply These Terms to Your New Programs
++
++  If you develop a new program, and you want it to be of the greatest
++possible use to the public, the best way to achieve this is to make it
++free software which everyone can redistribute and change under these terms.
++
++  To do so, attach the following notices to the program.  It is safest
++to attach them to the start of each source file to most effectively
++convey the exclusion of warranty; and each file should have at least
++the "copyright" line and a pointer to where the full notice is found.
++
++    <one line to give the program's name and a brief idea of what it does.>
++    Copyright (C) <year>  <name of author>
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License along
++    with this program; if not, write to the Free Software Foundation, Inc.,
++    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++
++Also add information on how to contact you by electronic and paper mail.
++
++If the program is interactive, make it output a short notice like this
++when it starts in an interactive mode:
++
++    Gnomovision version 69, Copyright (C) year name of author
++    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
++    This is free software, and you are welcome to redistribute it
++    under certain conditions; type `show c' for details.
++
++The hypothetical commands `show w' and `show c' should show the appropriate
++parts of the General Public License.  Of course, the commands you use may
++be called something other than `show w' and `show c'; they could even be
++mouse-clicks or menu items--whatever suits your program.
++
++You should also get your employer (if you work as a programmer) or your
++school, if any, to sign a "copyright disclaimer" for the program, if
++necessary.  Here is a sample; alter the names:
++
++  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
++  `Gnomovision' (which makes passes at compilers) written by James Hacker.
++
++  <signature of Ty Coon>, 1 April 1989
++  Ty Coon, President of Vice
++
++This General Public License does not permit incorporating your program into
++proprietary programs.  If your program is a subroutine library, you may
++consider it more useful to permit linking proprietary applications with the
++library.  If this is what you want to do, use the GNU Lesser General
++Public License instead of this License.
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/files/usleep.1 b/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/files/usleep.1
new file mode 100644
index 0000000..2d7520f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/files/usleep.1
@@ -0,0 +1,25 @@
+.TH USLEEP 1 "Red Hat, Inc" \" -*- nroff -*-
+.SH NAME
+usleep \- sleep some number of microseconds
+.SH SYNOPSIS
+.B usleep
+[\fInumber\fP]
+.SH DESCRIPTION
+.B usleep
+sleeps some number of microseconds.  The default is 1.
+.SH OPTIONS
+\fI--usage\fP
+Show short usage message.
+.TP
+\fI--help, -?\fP
+Print help information.
+.TP
+\fI-v, --version\fP
+Print version information.
+.SH BUGS
+Probably not accurate on many machines down to the microsecond.  Count
+on precision only to -4 or maybe -5.
+.SH AUTHOR
+Donald Barnes <djb@redhat.com>
+.br
+Erik Troan <ewt@redhat.com>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/files/usleep.c b/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/files/usleep.c
new file mode 100644
index 0000000..a5e7d9d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/files/usleep.c
@@ -0,0 +1,82 @@
+/* 
+ * usleep
+ * 
+ * Written by Donald Barnes <djb@redhat.com> for Red Hat, Inc.
+ * 
+ * Copyright (c) 1997-2003 Red Hat, Inc. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "popt.h"
+
+int main(int argc, char **argv) {
+  unsigned long count;
+  poptContext optCon;
+  int showVersion = 0;
+  int showOot = 0;
+  int rc;
+  char * countStr = NULL;
+  struct poptOption options[] = {
+            { "version", 'v', POPT_ARG_NONE, &showVersion, 0, 
+			"Display the version of this program, and exit" },
+            { "oot", 'o', POPT_ARG_NONE, &showOot, 0, 
+			"oot says hey!" },
+	    POPT_AUTOHELP
+            { 0, 0, 0, 0, 0 }
+        };
+
+  optCon = poptGetContext("usleep", argc, argv, options,0);
+  /*poptReadDefaultConfig(optCon, 1);*/
+  poptSetOtherOptionHelp(optCon, "[microseconds]");
+
+  if ((rc = poptGetNextOpt(optCon)) < -1) {
+	fprintf(stderr, "usleep: bad argument %s: %s\n", 
+		poptBadOption(optCon, POPT_BADOPTION_NOALIAS), 
+		poptStrerror(rc));
+	return 2;
+  }
+
+  if (showVersion) {
+      printf("usleep version 1.2\n	usleep --help for more info\n");
+      return 0;
+  }
+
+  if (showOot) {
+      printf("oot says hey!\n");
+      return 0;
+  }
+
+  countStr = poptGetArg(optCon);
+
+  if (countStr == NULL) count = 1;
+
+  else if (countStr && poptGetArg(optCon)) {
+      fprintf(stderr, "%s: exactly one argument (number of microseconds) "
+      		"must be used\n", argv[0]);
+      return 2;
+  }
+
+  else count = strtoul(countStr, NULL, 0); 
+
+  usleep(count);
+  return 0;
+} 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb
new file mode 100644
index 0000000..2ef4b7c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A user tool to support sleeping some number of microseconds"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+PR = "r0"
+
+S = "${WORKDIR}"
+DEPENDS = "popt"
+
+SRC_URI = "file://usleep.c \
+           file://usleep.1 \
+           file://GPLv2.patch \
+"
+
+do_compile() {
+	${CC} ${CFLAGS} ${LDFLAGS} usleep.c -o usleep -lpopt
+}
+
+do_install() {
+	install -d ${D}${base_bindir}
+	install -d ${D}${mandir}/man1
+
+	install -m 0755	${WORKDIR}/usleep	${D}${base_bindir}
+	install -m 0644	${WORKDIR}/usleep.1	${D}${mandir}/man1
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/autoconf-archive/autoconf-archive.inc b/import-layers/meta-openembedded/meta-oe/recipes-devtools/autoconf-archive/autoconf-archive.inc
new file mode 100644
index 0000000..9399363
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/autoconf-archive/autoconf-archive.inc
@@ -0,0 +1,15 @@
+LICENSE = "GPLv3"
+HOMEPAGE = "http://www.gnu.org/software/autoconf-archive/"
+SECTION = "devel"
+
+DEPENDS += "m4-native"
+DEPENDS_class-native = "m4-native gnu-config-native"
+DEPENDS_class-nativesdk = "m4-nativesdk gnu-config-nativesdk"
+
+RDEPENDS_${PN} = "m4 gnu-config"
+RDEPENDS_${PN}_class-native = "m4-native gnu-config-native"
+RDEPENDS_${PN}_class-nativesdk = "m4-nativesdk gnu-config-nativesdk"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/autoconf-archive/autoconf-archive_2012.04.07.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/autoconf-archive/autoconf-archive_2012.04.07.bb
new file mode 100644
index 0000000..5baaecc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/autoconf-archive/autoconf-archive_2012.04.07.bb
@@ -0,0 +1,13 @@
+require autoconf-archive.inc
+
+
+PARALLEL_MAKE = ""
+
+LICENSE = "GPLv2 & GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI[md5sum] = "e842c5b9fae021007bd70550362e5e80"
+SRC_URI[sha256sum] = "040b443bf68efd52fbfcb294b556bfbbbfe432db78445ca25e0cfe2e88f96a14"
+
+EXTRA_OECONF += "ac_cv_path_M4=m4"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/bootchart/bootchart/0001-svg-add-rudimentary-support-for-ARM-cpuinfo.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/bootchart/bootchart/0001-svg-add-rudimentary-support-for-ARM-cpuinfo.patch
new file mode 100644
index 0000000..4581ef2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/bootchart/bootchart/0001-svg-add-rudimentary-support-for-ARM-cpuinfo.patch
@@ -0,0 +1,49 @@
+From 8d40b4c286e005e82fa50b66fbbbde22b7e65e15 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Sun, 20 May 2012 21:35:34 +0200
+Subject: [PATCH 1/2] svg: add rudimentary support for ARM cpuinfo
+
+On ARM /proc/cpuinfo looks like this:
+
+root@beagleboneA3-0428:~# cat /proc/cpuinfo
+Processor	: ARMv7 Processor rev 2 (v7l)
+BogoMIPS	: 498.89
+Features	: swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls
+CPU implementer	: 0x41
+CPU architecture: 7
+CPU variant	: 0x3
+CPU part	: 0xc08
+CPU revision	: 2
+
+Hardware	: am335xevm
+Revision	: 0000
+Serial		: 0000000000000000
+
+So no real way to get the actual SoC name, TI AM3359, but a lot better than 'Unknown'
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+
+Upstream-Status: submitted
+
+ svg.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/svg.c b/svg.c
+index 80e0292..53724b2 100644
+--- a/svg.c
++++ b/svg.c
+@@ -178,6 +178,10 @@ void svg_title(void)
+ 				strncpy(cpu, &buf[13], 255);
+ 				break;
+ 			}
++			if (strstr(buf, "Processor")) {
++				strncpy(cpu, &buf[12], 255);
++				break;
++			}
+ 		}
+ 		fclose(f);
+ 	}
+-- 
+1.7.10
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/bootchart/bootchart/0002-svg-open-etc-os-release-and-use-PRETTY_NAME-for-the-.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/bootchart/bootchart/0002-svg-open-etc-os-release-and-use-PRETTY_NAME-for-the-.patch
new file mode 100644
index 0000000..f63d98a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/bootchart/bootchart/0002-svg-open-etc-os-release-and-use-PRETTY_NAME-for-the-.patch
@@ -0,0 +1,39 @@
+From e3adb4c312c6ba3491b7c173559efac7a53e5abc Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Sun, 20 May 2012 22:12:29 +0200
+Subject: [PATCH 2/2] svg: open /etc/os-release and use PRETTY_NAME for the
+ 'Build' name
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+
+Upstream-Status: Submitted
+
+ svg.c |   11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/svg.c b/svg.c
+index 53724b2..c675d84 100644
+--- a/svg.c
++++ b/svg.c
+@@ -194,6 +194,17 @@ void svg_title(void)
+ 		fclose(f);
+ 	}
+ 
++	f = fopen("/etc/os-release", "r");
++	if(f) {
++		while (fgets(buf, 255, f)) {
++			if (strstr(buf, "PRETTY_NAME=")) {
++				strncpy(build, &buf[12], 255);
++				break;
++			}
++		}
++		fclose(f);
++	}
++
+ 	svg("<text class=\"t1\" x=\"0\" y=\"30\">Bootchart for %s - %s</text>\n",
+ 	    uts.nodename, date);
+ 	svg("<text class=\"t2\" x=\"20\" y=\"50\">System: %s %s %s %s</text>\n",
+-- 
+1.7.10
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/bootchart/bootchart_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/bootchart/bootchart_git.bb
new file mode 100644
index 0000000..2b75eaa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/bootchart/bootchart_git.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Monitors where the system spends its time at start, creating a graph of all processes, disk utilization, and wait time."
+HOMEPAGE = "http://meego.gitorious.org/meego-developer-tools/bootchart"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067"
+
+PV = "1.17"
+PR = "r1"
+PE = "1"
+
+SRC_URI = "git://gitorious.org/meego-developer-tools/bootchart.git;protocol=https \
+           file://0001-svg-add-rudimentary-support-for-ARM-cpuinfo.patch \
+           file://0002-svg-open-etc-os-release-and-use-PRETTY_NAME-for-the-.patch \
+"
+
+SRCREV = "a2c7561d4060a9f075339bda89e793c76f2ff6dd"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_svn.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_svn.bb
new file mode 100644
index 0000000..7ada3a3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_svn.bb
@@ -0,0 +1,89 @@
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+# Applications using this library needs to add link against libbreakpad_client.a.
+
+SUMMARY = "An open-source multi-platform crash reporting system"
+DESCRIPTION = "Breakpad is a library and tool suite that allows you to distribute an application to users with compiler-provided debugging information removed, record crashes in compact \"minidump\" files, send them back to your server, and produce C and C++ stack traces from these minidumps. "
+HOMEPAGE = "https://code.google.com/p/google-breakpad/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=56c24a43c81c3af6fcf590851931489e"
+SECTION = "libs"
+
+inherit autotools
+
+BBCLASSEXTEND = "native"
+
+SRCREV = "r1435"
+SRC_URI = "svn://google-breakpad.googlecode.com/svn;module=trunk;protocol=http"
+S = "${WORKDIR}/trunk"
+
+do_install_append() {
+        install -d ${D}${includedir}
+        install -d ${D}${includedir}/breakpad
+
+        install -d ${D}${includedir}/breakpad/client/linux/crash_generation
+        install -m 0644 ${S}/src/client/linux/crash_generation/crash_generation_client.h  ${D}${includedir}/breakpad/client/linux/crash_generation/crash_generation_client.h
+
+        install -d ${D}${includedir}/breakpad/client/linux/handler/
+        install -m 0644 ${S}/src/client/linux/handler/exception_handler.h ${D}${includedir}/breakpad/client/linux/handler/exception_handler.h
+        install -m 0644 ${S}/src/client/linux/handler/minidump_descriptor.h ${D}${includedir}/breakpad/client/linux/handler/minidump_descriptor.h
+
+        install -d ${D}${includedir}/breakpad/client/linux/dump_writer_common
+        install -m 0644 ${S}/src/client/linux/dump_writer_common/mapping_info.h ${D}${includedir}/breakpad/client/linux/dump_writer_common/mapping_info.h
+        install -m 0644 ${S}/src/client/linux/dump_writer_common/thread_info.h ${D}${includedir}/breakpad/client/linux/dump_writer_common/thread_info.h
+        install -m 0644 ${S}/src/client/linux/dump_writer_common/raw_context_cpu.h ${D}${includedir}/breakpad/client/linux/dump_writer_common/raw_context_cpu.h
+
+        install -d ${D}${includedir}/breakpad/client/linux/minidump_writer
+        install -m 0644 ${S}/src/client/linux/minidump_writer/linux_dumper.h ${D}${includedir}/breakpad/client/linux/minidump_writer/linux_dumper.h
+        install -m 0644 ${S}/src/client/linux/minidump_writer/minidump_writer.h ${D}${includedir}/breakpad/client/linux/minidump_writer/minidump_writer.h
+
+        install -d ${D}${includedir}/breakpad/common
+        install -m 0644 ${S}/src/common/memory.h ${D}${includedir}/breakpad/common/memory.h
+        install -m 0644 ${S}/src/common/scoped_ptr.h ${D}${includedir}/breakpad/common/scoped_ptr.h
+        install -m 0644 ${S}/src/common/using_std_string.h ${D}${includedir}/breakpad/common/using_std_string.h
+
+        install -d ${D}${includedir}/breakpad/google_breakpad/common
+        install -m 0644 ${S}/src/google_breakpad/common/breakpad_types.h ${D}${includedir}/breakpad/google_breakpad/common/breakpad_types.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_format.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_format.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_cpu_amd64.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_cpu_amd64.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_cpu_arm.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_cpu_arm.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_cpu_arm.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_cpu_arm64.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_cpu_mips.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_cpu_mips.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_cpu_ppc64.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_cpu_ppc64.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_cpu_ppc.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_cpu_ppc.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_cpu_sparc.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_cpu_sparc.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_cpu_x86.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_cpu_x86.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_exception_linux.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_exception_linux.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_exception_mac.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_exception_mac.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_exception_ps3.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_exception_ps3.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_exception_solaris.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_exception_solaris.h
+        install -m 0644 ${S}/src/google_breakpad/common/minidump_exception_win32.h ${D}${includedir}/breakpad/google_breakpad/common/minidump_exception_win32.h
+
+        install -d ${D}${includedir}/breakpad/third_party/lss
+        install -m 0644 ${S}/src/third_party/lss/linux_syscall_support.h ${D}${includedir}/breakpad/third_party/lss/linux_syscall_support.h
+}
+
+PACKAGES =+ "${PN}-minidump-upload ${PN}-sym-upload"
+
+FILES_${PN}-minidump-upload = "${bindir}/minidump_upload"
+FILES_${PN}-sym-upload = "${bindir}/sym_upload"
+
+
+SYSROOT_PREPROCESS_FUNCS += "breakpad_populate_sysroot"
+breakpad_populate_sysroot() {
+        sysroot_stage_dir ${D}/usr/include ${SYSROOT_DESTDIR}/usr/include
+        sysroot_stage_dir ${D}/usr/lib ${SYSROOT_DESTDIR}/usr/lib
+        sysroot_stage_dir ${D}/usr/lib ${SYSROOT_DESTDIR}/usr/lib
+}
+
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:2178: Error: selected processor does not support Thumb mode `it ne'
+#| {standard input}:2179: Error: Thumb does not support conditional execution
+#| {standard input}:2180: Error: selected processor does not support Thumb mode `it eq'
+#| {standard input}:2181: Error: Thumb does not support conditional execution
+#| {standard input}:2183: Error: lo register required -- `str ip,[r1,#-4]!'
+#| {standard input}:2184: Error: Thumb does not support this addressing mode -- `str r6,[r1,#-4]!'
+#| {standard input}:2191: Error: lo register required -- `ldr pc,[sp]'
+#| make: *** [src/client/linux/handler/exception_handler.o] Error 1
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/remove-help2man.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/remove-help2man.patch
new file mode 100644
index 0000000..4358629
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/remove-help2man.patch
@@ -0,0 +1,47 @@
+Disable building manpages so that make install doesn't fail due to lack of help2man
+
+Upstream-Status: Inappropriate [config]
+
+Signed-off-by: Matthieu Crapet <Matthieu.Crapet@ingenico.com>
+---
+ configure.ac    | 3 ---
+ doc/Makefile.am | 5 -----
+ 2 files changed, 8 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index ee7eca0..1f0d924 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -134,9 +134,6 @@ dnl check that the required tools are available to generate documentation
+ if test "$HAS_MAKEINFO" != "yes" ; then
+ 	AC_MSG_ERROR([Please install makeinfo before installing])
+ fi
+-if test "$HAS_HELP2MAN" != "yes" ; then
+-	AC_MSG_ERROR([Please install help2man])
+-fi
+ 
+ dnl Checking for log10 function in math - I would like to remove this
+ AC_CHECK_LIB(m, log10)
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index 60662f6..0ae0013 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -1,15 +1,10 @@
+ info_TEXINFOS = cgdb.texi
+ cgdb_TEXINFOS = gpl.texi
+ 
+-dist_man_MANS = cgdb.1
+ EXTRA_DIST = cgdb.txt
+ 
+ dist_pkgdata_DATA = cgdb.txt
+ 
+-# generate the man page using help2man.
+-cgdb.1:
+-	help2man --output=$(top_srcdir)/doc/cgdb.1 $(top_builddir)/cgdb/cgdb$(EXEEXT)
+-
+ cgdb.txt: cgdb.texi $(srcdir)/version.texi $(cgdb_TEXINFOS)
+ TEXTS = cgdb.txt
+ text-am: $(TEXTS)
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.6.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.6.8.bb
new file mode 100644
index 0000000..74019fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.6.8.bb
@@ -0,0 +1,21 @@
+SUMMARY = "curses-based interface to GDB"
+DESCRIPTION = "cgdb is a lightweight curses (terminal-based) interface to the GNU Debugger (GDB)."
+HOMEPAGE = "http://cgdb.github.io/"
+SECTION = "devel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "flex-native readline ncurses"
+
+inherit autotools
+
+SRC_URI = "http://cgdb.me/files/${BP}.tar.gz \
+    file://remove-help2man.patch"
+SRC_URI[md5sum] = "7bd38c79bf4d794d239928fef401fca3"
+SRC_URI[sha256sum] = "be203e29be295097439ab67efe3dc8261f742c55ff3647718d67d52891f4cf41"
+
+CACHED_CONFIGUREVARS = "ac_cv_file__dev_ptmx=yes ac_cv_rl_version=6.2"
+EXTRA_OECONF = "--with-readline=${STAGING_LIBDIR} \
+    --with-ncurses=${STAGING_LIBDIR}"
+
+RDEPENDS_${PN} = "gdb"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/0001-ide-use-node-as-interpreter-for-sketches-instead-of-.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/0001-ide-use-node-as-interpreter-for-sketches-instead-of-.patch
new file mode 100644
index 0000000..b32311a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/0001-ide-use-node-as-interpreter-for-sketches-instead-of-.patch
@@ -0,0 +1,29 @@
+From ac1953d04f3f26d6aa5d8f53a9397d3ba0e96fa3 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@circuitco.com>
+Date: Fri, 11 May 2012 15:23:02 +0000
+Subject: [PATCH] ide: use 'node' as interpreter for sketches instead of
+ argv[0]
+
+This enables running scripts with node 0.6.x instead of 0.4.x
+
+Signed-off-by: root <root@beaglebone.(none)>
+---
+ server/cloud9/ide.js |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/server/cloud9/ide.js b/server/cloud9/ide.js
+index ce782f5..6c4e0f7 100644
+--- a/server/cloud9/ide.js
++++ b/server/cloud9/ide.js
+@@ -53,7 +53,7 @@ var Ide = module.exports = function(options, httpServer, exts, socket) {
+     };
+ 
+     this.$users = {};
+-    this.nodeCmd = process.argv[0];
++    this.nodeCmd = "node";
+ 
+     var davOptions = {
+         node: this.options.mountDir,
+-- 
+1.7.7
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9-avahi.service b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9-avahi.service
new file mode 100644
index 0000000..cb9b6e2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9-avahi.service
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
+<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
+
+<service-group>
+  <name replace-wildcards="yes">Cloud9 IDE on %h</name>
+  <service>
+    <type>_http._tcp</type>
+    <port>3000</port>
+  </service>
+</service-group>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9.service b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9.service
new file mode 100644
index 0000000..495b131
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Cloud9 IDE
+ConditionPathExists=|/var/lib/cloud9
+
+[Service]
+Restart=always
+EnvironmentFile=-/etc/default/node
+ExecStart=/usr/bin/node4 /usr/share/cloud9/bin/cloud9.js -l 0.0.0.0 -w /var/lib/cloud9 -p 3000
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/index.js b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/index.js
new file mode 100644
index 0000000..88c9a19
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/index.js
@@ -0,0 +1,2 @@
+var o3 = require('./o3.js')
+module.exports = o3.xml;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9_0.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9_0.6.bb
new file mode 100644
index 0000000..87e524d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9_0.6.bb
@@ -0,0 +1,118 @@
+SUMMARY = "Meet Cloud9, development-as-a-service for Javascripters and other developers"
+HOMEPAGE = "http://c9.io"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4784c3bcff601fd8f9515f52a11e7018"
+
+PR = "r5"
+
+# Nodejs-native for node-waf, nodejs4-native for the headers
+DEPENDS = "libxml2 nodejs-native nodejs4-native"
+
+PNBLACKLIST[cloud9] ?= "Not comatible with current nodejs 0.12, but upstream is working on it for v3"
+inherit systemd
+
+SRC_URI = "git://github.com/ajaxorg/cloud9.git;name=cloud9ide \
+           git://github.com/ajaxorg/o3;destsuffix=o3;name=o3 \
+           git://github.com/ajaxorg/ace.git;destsuffix=git/support/ace;name=ace \
+           git://github.com/ajaxorg/ace.wiki.git;destsuffix=git/support/ace/doc/wiki;name=acewiki \
+           git://github.com/ajaxorg/apf.git;destsuffix=git/support/apf;name=apf \
+           git://github.com/ajaxorg/async.js.git;destsuffix=git/support/asyncjs;name=asyncjs \
+           git://github.com/ajaxorg/connect.git;destsuffix=git/support/connect;name=connect;branch=ajaxorg \
+           git://github.com/jashkenas/coffee-script.git;destsuffix=git/support/connect/support/coffee-script;name=coffee-script \
+           git://github.com/visionmedia/expresso.git;destsuffix=git/support/connect/support/expresso;name=expresso \
+           git://github.com/visionmedia/node-jscoverage.git;destsuffix=git/support/connect/support/expresso/deps/jscoverage;name=jscoverage \
+           git://github.com/cloudhead/less.js.git;destsuffix=git/support/connect/support/less;name=less \
+           git://github.com/matehat/sass.js.git;destsuffix=git/support/connect/support/sass;name=sass \
+           git://github.com/ajaxorg/jsDAV.git;destsuffix=git/support/jsdav;name=jsdav \
+           git://github.com/fjakobs/async.js.git;destsuffix=git/support/jsdav/support/async.js;name=async-js \
+           git://github.com/felixge/node-formidable.git;destsuffix=git/support/jsdav/support/formidable;name=formidable \
+           git://github.com/ajaxorg/jsftp.git;destsuffix=git/support/jsdav/support/jsftp;name=jsftp \
+           git://github.com/Gozala/streamer.git;destsuffix=git/support/jsdav/support/jsftp/support/streamer;name=streamer \
+           git://github.com/ajaxorg/node-sftp.git;destsuffix=git/support/jsdav/support/node-sftp;name=sftp \
+           git://github.com/ajaxorg/lib-v8debug.git;destsuffix=git/support/lib-v8debug;name=lib-v8debug \
+           git://github.com/ajaxorg/socket.io.git;destsuffix=git/support/socket.io;name=socketio;branch=cadorn-upstream \
+           git://github.com/LearnBoost/socket.io-client.git;destsuffix=git/support/socket.io-client;name=socketio-client \
+           git://github.com/ajaxorg/treehugger.git;destsuffix=git/support/treehugger;name=treehugger \
+           git://github.com/ajaxorg/UglifyJS.git;destsuffix=git/support/uglify-js;name=uglify-js \
+           file://index.js \
+           file://cloud9-avahi.service \
+           file://cloud9.service \
+           file://0001-ide-use-node-as-interpreter-for-sketches-instead-of-.patch \
+"
+
+SRCREV_cloud9ide = "c4e2574896a22bb749f0500b25f41c888d346bed"
+SRCREV_o3 = "d66d4e3252e505f44ada6804c8cab39915ce8afd"
+SRCREV_ace = "0fc5392cbe46fb134052c3065a238ad8e3b31cfd"
+SRCREV_acewiki = "d2a65d0addc2e5ab922bbff9cb6022a4652b4f13"
+SRCREV_apf = "2560b762b2b0e5a8b46f8a4062f927a9a9d239f4"
+SRCREV_asyncjs = "d36ead408e2959b1e99572114ef3a1b6a48c1072"
+SRCREV_connect = "6bec95b51f2286b942bc7f340d62d816bcdc13d4"
+SRCREV_coffee-script = "a53c104db16d3ac9d13cf9f16834edec250b9749"
+SRCREV_expresso = "7f10ab7fa655299b4e2f519065b0495e6ac34ef2"
+SRCREV_jscoverage = "0d4608a6b4275b020ba665389aa75897d5d4a584"
+SRCREV_less = "a2807288008587b95c6c2f8ba5cac16f1bcab98f"
+SRCREV_sass = "4dfd4c699e7a8baf226215ab044854c4507f4420"
+SRCREV_jsdav = "f04ebf3d012cc8aeabfcfb2b8fab8966d52929e9"
+SRCREV_async-js = "92fb710a70efd3cdc2376ebfba71a7fb3a4f1651"
+SRCREV_formidable = "a37292d4b7d6d76a38909ed670334c9068d40871"
+SRCREV_jsftp = "e3f10c8927347c170cdd0150ef38e18272acf942"
+SRCREV_streamer = "1a7f75d4065819171ac91a09974199b932dbe17d"
+SRCREV_sftp = "a0539345134970d7535a19cb2608e3d1bc119d71"
+SRCREV_lib-v8debug = "7c11897f4bc77c7275c2b6dff5becc72ac018662"
+SRCREV_socketio = "735d5239b325df2ba67d2b9bb4ec32442283bc06"
+SRCREV_socketio-client = "4375ef1344ecb8ad75a3848a00af6b391822f86b"
+SRCREV_treehugger = "436d0d6dd0ce43782e6be08ad12c356730626996"
+SRCREV_uglify-js = "941c845c4a01e4e47a158458fe846eb36d0828ad"
+
+SRCREV_FORMAT = "cloud9ide"
+
+S = "${WORKDIR}/git"
+
+do_configure () {
+    cd ${WORKDIR}/o3
+    node-waf -vv configure
+}
+
+EXTRA_CXXFLAGS = "-Idefault/include -I../include -Idefault/hosts -I../hosts -Idefault/modules -I../modules -Idefault/deps -I../deps -I${STAGING_DIR_NATIVE}/usr/include/node4 -fPIC -DPIC"
+
+do_compile () {
+    cd ${WORKDIR}/o3
+    node4 tools/gluegen.js
+    cd hosts
+    ${CXX} ${TARGET_CXXFLAGS} ${EXTRA_CXXFLAGS} -c -o sh_node.o node-o3/sh_node.cc
+    ${CXX} ${TARGET_CXXFLAGS} ${EXTRA_CXXFLAGS} -c -o sh_node_libs.o node-o3/sh_node_libs.cc
+    cd ..
+    ${CXX} ${TARGET_LDFLAGS} hosts/sh_node.o hosts/sh_node_libs.o -o o3.node -shared -Wl,-Bdynamic -lxml2
+}
+
+do_install () {
+    install -m 0755 -d ${D}${datadir}/cloud9 ${D}${bindir} ${D}/var/lib/cloud9
+    rsync -r --exclude=".*" ${S}/* ${D}${datadir}/cloud9
+
+    touch ${D}${bindir}/cloud9
+    echo "#!/bin/sh" > ${D}${bindir}/cloud9
+    echo "node4 ${datadir}/cloud9/bin/cloud9.js -l 0.0.0.0 -w /var/lib/cloud9 -p 3000" >> ${D}${bindir}/cloud9
+    chmod 0755 ${D}${bindir}/cloud9
+
+    install -m 0755 -d ${D}${datadir}/cloud9/support/jsdav/support/node-o3-xml-v4/lib/o3-xml
+    install -m 0644 ${WORKDIR}/index.js ${D}${datadir}/cloud9/support/jsdav/support/node-o3-xml-v4/lib/o3-xml/index.js
+    install -m 0644 ${WORKDIR}/o3/modules/o3.js ${D}${datadir}/cloud9/support/jsdav/support/node-o3-xml-v4/lib/o3-xml/o3.js
+    install -m 0755 ${WORKDIR}/o3/o3.node ${D}${datadir}/cloud9/support/jsdav/support/node-o3-xml-v4/lib/o3-xml/o3.node
+
+     install -m 0755 -d ${D}${sysconfdir}/avahi/services/
+     install -m 0644 ${WORKDIR}/cloud9-avahi.service ${D}${sysconfdir}/avahi/services/
+     
+     install -d ${D}${systemd_unitdir}/system
+     install -m 0644 ${WORKDIR}/cloud9.service ${D}${systemd_unitdir}/system
+}
+
+FILES_${PN}-dbg += "${datadir}/cloud9/support/jsdav/support/node-o3-xml-v4/lib/o3-xml/.debug \
+                    ${datadir}/cloud9/support/jsdav/support/node-o3-xml-v4/lib/.debug \
+"
+
+RDEPENDS_${PN} = "nodejs4 nodejs gzip"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "cloud9.service"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit/cross.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit/cross.patch
new file mode 100644
index 0000000..d3bfab7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit/cross.patch
@@ -0,0 +1,55 @@
+Index: git/configure
+===================================================================
+--- git.orig/configure	2012-11-19 21:07:51.917429465 -0800
++++ git/configure	2012-11-19 21:13:19.337437278 -0800
+@@ -439,14 +442,18 @@
+ 	GZIP_SUFFIX=".gz"
+ fi
+ 
+-printf "Finding suitable compiler........"
+-CC=`pathsearch "${CC:-cc}"`
+-if test -z "$CC" -o ! -x "$CC"; then
+-	CC=`pathsearch "${CC:-gcc}"`
++if test -z "$CC"; then
++	printf "Finding suitable compiler........"
++	CC=`pathsearch "${CC:-cc}"`
++	if test -z "$CC" -o ! -x "$CC"; then
++		CC=`pathsearch "${CC:-gcc}"`
++	fi
+ fi
+ assert "$CC" "not found"
+ 
+-cat << EOF > .1.c
++if test -z "$COMPILER"; then
++
++	cat << EOF > .1.c
+ #include <stdio.h>
+ int main(void) {
+ #if defined(__GNUC__) && (__GNUC__ >= 4)
+@@ -569,16 +576,16 @@
+ #endif
+ }
+ EOF
+-
+-$CC -o .1 .1.c
+-COMPILER=`./.1`
+-r=$?
+-rm -f .1.c .1
+-
+-if test "$r" -ne 0; then
+-	assert "" "update compiler"
+-else
+-	echo "success [$CC]"
++	$CC -o .1 .1.c
++	COMPILER=`./.1`
++	r=$?
++	rm -f .1.c .1
++
++	if test "$r" -ne 0; then
++		assert "" "update compiler"
++	else
++		echo "success [$CC]"
++	fi
+ fi
+ 
+ if test "$COMPILER" = "suncc"; then
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit_git.bb
new file mode 100644
index 0000000..51243c2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit_git.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "Concurrency Kit provides a plethora of concurrency primitives, \
+safe memory reclamation mechanisms and non-blocking data structures \
+designed to aid in the design and implementation of high performance \
+concurrent systems."
+
+LICENSE = "BSD & Apache-2.0"
+HOMEPAGE = "http://concurrencykit.org"
+SECTION = "base"
+
+PV = "0.5.1+git${SRCPV}"
+SRCREV = "f97d3da5c375ac2fc5a9173cdd36cb828915a2e1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a0b24c1a8f9ad516a297d055b0294231"
+SRC_URI = "git://github.com/concurrencykit/ck.git;protocol=https \
+           file://cross.patch \
+"
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_HOST = "(i.86|x86_64|powerpc|powerpc64).*-linux*"
+
+inherit autotools-brokensep
+
+PLAT_powerpc64 = "ppc64"
+PLAT ?= "${HOST_ARCH}"
+
+do_configure () {
+    export PLATFORM=${PLAT}
+    export COMPILER='gcc'
+    ${S}/configure \
+    --prefix=${prefix} \
+    --includedir=${includedir} \
+    --libdir=${libdir}
+}
+
+do_compile () {
+    oe_runmake
+}
+
+do_install () {
+    oe_runmake 'DESTDIR=${D}' install
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cppunit/cppunit_1.13.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cppunit/cppunit_1.13.1.bb
new file mode 100644
index 0000000..9420294
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cppunit/cppunit_1.13.1.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "CppUnit is the C++ port of the famous JUnit framework for unit testing. Test output is in XML for automatic testing and GUI based for supervised tests. "
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/cppunit"
+LICENSE = "LGPL-2.1"
+SECTION = "libs"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+SRC_URI = " \
+    http://dev-www.libreoffice.org/src/cppunit-${PV}.tar.gz \
+    file://0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch \
+"
+SRC_URI[md5sum] = "fa9aa839145cdf860bf596532bb8af97"
+SRC_URI[sha256sum] = "d5b9f3ffc9f1634d75b20b54f48c02e0817bca6afa1d5160b244889d6bff8e0f"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cppunit/files/0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cppunit/files/0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch
new file mode 100644
index 0000000..6a20c12
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cppunit/files/0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch
@@ -0,0 +1,31 @@
+From 9d7ce869607d123cd9837890d71f940c5ced3393 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Mon, 29 Feb 2016 07:58:20 +0100
+Subject: [PATCH] doc/Makefile.am: do not preserve file flags when copying
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [cross specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ doc/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index 8815476..3237499 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -22,7 +22,7 @@ htmldir += $(pkgdatadir)/html
+ html_DATA += $(static_pages) html/index.html
+ 
+ install-data-hook:
+-	cp -pR html/* $(DESTDIR)$(htmldir)
++	cp -R html/* $(DESTDIR)$(htmldir)
+ 
+ # Automake's "distcheck" is sensitive to having files left over
+ # after "make uninstall", so we have to clean up the install hook.
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.8b.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.8b.bb
new file mode 100644
index 0000000..8aa5947
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.8b.bb
@@ -0,0 +1,24 @@
+# Copyright (C) 2015 Igor Santos <igor.santos@aker.com.br>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Cscope is a text screen based source browser"
+DESCRIPTION = "Cscope is a developer's tool for browsing source code. \
+               It has an impeccable Unix pedigree, having been originally \
+               developed at Bell Labs back in the days of the PDP-11. \
+               Cscope was part of the official AT&T Unix distribution for \
+               many years, and has been used to manage projects involving 20 \
+               million lines of code!"
+
+HOMEPAGE = "http://cscope.sourceforge.net/"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d4667b67b483823043fcffa489ea343b"
+
+inherit autotools
+
+DEPENDS += "ncurses"
+
+SRC_URI = "http://downloads.sourceforge.net/project/cscope/cscope/${PV}/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "8f9409a238ee313a96f9f87fe0f3b176"
+SRC_URI[sha256sum] = "4889d091f05aa0845384b1e4965aa31d2b20911fb2c001b2cdcffbcb7212d3af"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.8.bb
new file mode 100644
index 0000000..d006d83
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.8.bb
@@ -0,0 +1,25 @@
+# Copyright (C) 2015 Igor Santos <igor.santos@aker.com.br>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Exuberant Ctags"
+DESCRIPTION = "Exuberant Ctags is a multilanguage reimplementation of the \
+               Unix ctags utility. Ctags generates an index of source code \
+               definitions which is used by numerous editors and utilities \
+               to instantly locate the definitions."
+
+HOMEPAGE = "http://ctags.sourceforge.net/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+inherit autotools-brokensep
+
+SRC_URI = "http://prdownloads.sourceforge.net/${BPN}/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "c00f82ecdcc357434731913e5b48630d"
+SRC_URI[sha256sum] = "0e44b45dcabe969e0bbbb11e30c246f81abe5d32012db37395eb57d66e9e99c7"
+
+do_install() {
+    install -Dm 755 ${B}/ctags ${D}${bindir}/ctags
+    install -Dm 644 ${B}/ctags.1 ${D}${mandir}/man1/ctags.1
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cunit/cunit_2.1-3.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cunit/cunit_2.1-3.bb
new file mode 100644
index 0000000..c9d87e3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cunit/cunit_2.1-3.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "CUnit is a C framework for unit testing. Test output supports comandline and GUI results reporting"
+HOMEPAGE = "http://cunit.sourceforge.net"
+LICENSE = "LGPL-2.0"
+SECTION = "libs"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7734aa853b85d6f935466f081490ddbb"
+
+S = "${WORKDIR}/CUnit-${PV}"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/cunit/CUnit/${PV}/CUnit-${PV}.tar.bz2 \
+    file://fixup-install-docdir.patch"
+SRC_URI[md5sum] = "b5f1a9f6093869c070c6e4a9450cc10c"
+SRC_URI[sha256sum] = "f5b29137f845bb08b77ec60584fdb728b4e58f1023e6f249a464efa49a40f214"
+
+inherit autotools-brokensep remove-libtool
+
+EXTRA_OECONF = "--enable-memtrace --enable-automated --enable-basic --enable-console"
+
+FILES_${PN}-dev += "${datadir}/CUnit"
+FILES_${PN}-doc += "${docdir}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/cunit/files/fixup-install-docdir.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cunit/files/fixup-install-docdir.patch
new file mode 100644
index 0000000..c328227
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/cunit/files/fixup-install-docdir.patch
@@ -0,0 +1,36 @@
+From: "Mike Holmes" <mike.holmes@linaro.org>
+Date: Thu, 30 October 2014 16:21:03 -0500
+Subject: [PATCH] fixup-install-docdir
+
+The default configuration macros for CUnit install the documentation and
+header files in locations not consistent with the OE filesystem layout.
+So here we specify new locations which are consistent with OE filesystems.
+
+Upstream-Status: Inappropriate - configuration for OE build environment
+
+Signed-off-by: Mike Holmes <mike.holmes@linaro.org>
+Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
+---
+
+diff -uNr a/doc/headers/Makefile.am b/doc/headers/Makefile.am
+--- a/doc/headers/Makefile.am	2014-10-30 22:06:29.704574162 +0100
++++ b/doc/headers/Makefile.am	2014-10-30 22:07:43.578524791 +0100
+@@ -1,6 +1,6 @@
+ ## Process this file with automake to produce Makefile.in
+ 
+-dochdrdir = $(prefix)/doc/@PACKAGE@/headers
++dochdrdir = $(docdir)/headers
+ 
+ INCLUDE_FILES = \
+ 	Automated.h \
+diff -uNr a/doc/Makefile.am b/doc/Makefile.am
+--- a/doc/Makefile.am	2014-10-30 22:06:29.704574162 +0100
++++ b/doc/Makefile.am	2014-10-30 22:07:01.461412166 +0100
+@@ -1,7 +1,5 @@
+ ## Process this file with automake to produce Makefile.in
+ 
+-docdir = $(prefix)/doc/@PACKAGE@
+-
+ doc_DATA = \
+ 	CUnit_doc.css \
+ 	error_handling.html \
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap/devices.tar.gz b/import-layers/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap/devices.tar.gz
new file mode 100644
index 0000000..20eaba3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap/devices.tar.gz
Binary files differ
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.67.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.67.bb
new file mode 100644
index 0000000..62b2796
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.67.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Install a Debian system into a subdirectory"
+HOMEPAGE = "https://wiki.debian.org/Debootstrap"
+SECTION = "devel"
+LICENSE = "debootstrap-custom-license"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=1e68ced6e1689d4cd9dac75ff5225608"
+
+inherit pkgconfig
+
+SRC_URI  = "\
+    http://http.debian.net/debian/pool/main/d/debootstrap/debootstrap_1.0.67.tar.gz \
+    file://devices.tar.gz;unpack=0 \
+"
+
+SRC_URI[md5sum] = "eacabfe2e45415af60b1d74c3a23418a"
+SRC_URI[sha256sum] = "0a12e0a2bbff185d47711a716b1f2734856100e8784361203e834fed0cffa51b"
+
+S = "${WORKDIR}/${BP}"
+
+# All Makefile does is creation of devices.tar.gz, which fails in OE build, we use
+# static devices.tar.gz as work around
+# | NOTE: make -j 8 -e MAKEFLAGS=
+# | rm -rf dev
+# | mkdir -p dev
+# | chown 0:0 dev
+# | chown: changing ownership of `dev': Operation not permitted
+# | make: *** [devices.tar.gz] Error 1
+# | WARNING: exit code 1 from a shell command.
+do_compile_prepend() {
+    cp ${WORKDIR}/devices.tar.gz ${B}
+}
+
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install
+    chown -R root:root ${D}${datadir}/debootstrap
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu/configure.patch
new file mode 100644
index 0000000..2eb8af7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu/configure.patch
@@ -0,0 +1,45 @@
+Index: dejagnu-1.4.4/configure.in
+===================================================================
+--- dejagnu-1.4.4.orig/configure.in	2014-07-18 07:05:49.997481207 +0000
++++ dejagnu-1.4.4/configure.in	2014-07-18 07:05:50.085481210 +0000
+@@ -1,10 +1,10 @@
+ dnl Process this file with autoconf to produce a configure script.
+ AC_PREREQ(2.13)
+-AC_INIT(runtest.exp)
++AC_INIT(dejagnu, 1.4.4)
+ dnl AC_CONFIG_AUX_DIR(..)
+ 
+ dnl These are required by automake
+-AM_INIT_AUTOMAKE(dejagnu, 1.4.4)
++AM_INIT_AUTOMAKE([foreign])
+ AM_MAINTAINER_MODE
+ AC_PROG_MAKE_SET
+ 
+Index: dejagnu-1.4.4/example/calc/configure.in
+===================================================================
+--- dejagnu-1.4.4.orig/example/calc/configure.in	2002-04-26 03:32:40.000000000 +0000
++++ dejagnu-1.4.4/example/calc/configure.in	2014-07-18 07:11:59.085491266 +0000
+@@ -1,8 +1,8 @@
+ dnl Process this file with autoconf to produce a configure script.
+ AC_PREREQ(2.5)
+-AC_INIT(calc.c)
++AC_INIT(calc, 1.1)
+ AM_CONFIG_HEADER(calc.h)
+-AM_INIT_AUTOMAKE(calc, 1.1)
++AM_INIT_AUTOMAKE([foreign])
+ 
+ AC_PROG_CC
+ AC_PROG_INSTALL
+Index: dejagnu-1.4.4/example/hello/configure.in
+===================================================================
+--- dejagnu-1.4.4.orig/example/hello/configure.in	2002-08-31 05:46:16.000000000 +0000
++++ dejagnu-1.4.4/example/hello/configure.in	2014-07-18 07:12:23.721491937 +0000
+@@ -25,7 +25,7 @@
+ # ------------------------------------------------------------------------
+ 
+ AC_INIT(helloworld, demo-version, philip.wilsey@ieee.org)
+-AM_INIT_AUTOMAKE(helloworld, demo-version)
++AM_INIT_AUTOMAKE([foreign])
+ 
+ #AC_CONFIG_SRCDIR([hello.cc])
+ #AC_CONFIG_HEADER([config.h])
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu_1.4.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu_1.4.4.bb
new file mode 100644
index 0000000..63726b2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu_1.4.4.bb
@@ -0,0 +1,14 @@
+SUMMARY = "GNU unit testing framework, written in Expect and Tcl"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
+SECTION = "devel"
+
+inherit autotools
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
+           file://configure.patch"
+
+SRC_URI[md5sum] = "053f18fd5d00873de365413cab17a666"
+SRC_URI[sha256sum] = "d0fbedef20fb0843318d60551023631176b27ceb1e11de7468a971770d0e048d"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/Stop-using-relative-path-for-scsilib.c-link.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/Stop-using-relative-path-for-scsilib.c-link.patch
new file mode 100644
index 0000000..ccb9a02
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/Stop-using-relative-path-for-scsilib.c-link.patch
@@ -0,0 +1,29 @@
+From 4cf7e16fe9b773e2e7763d4b773854eefe2aa9ab Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Tue, 12 Jan 2016 09:59:55 -0200
+Subject: [PATCH] Stop using relative path for scsilib.c link
+Organization: O.S. Systems Software LTDA.
+
+Upstream-Status: Pending
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ Makefile.linux | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.linux b/Makefile.linux
+index 78333ff..e210564 100644
+--- a/Makefile.linux
++++ b/Makefile.linux
+@@ -129,7 +129,7 @@ scsilib.c:
+ 	    echo "Please specify OS={aix,linux,hpux,solaris,windows}"; \
+ 	    exit 1; \
+ 	fi; \
+-	ln -sf ../scsilib-$(OS).c scsilib.c
++	ln -sf scsilib-$(OS).c scsilib.c
+ 
+ print:;
+ 		@$(PRINTER) $(PRINTFLAGS) $(ALL_CFILES)
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/Use-tcsh-shell.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/Use-tcsh-shell.patch
new file mode 100644
index 0000000..0c00fdf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/Use-tcsh-shell.patch
@@ -0,0 +1,92 @@
+From e3c6eb8776f659eb9e6eeccf90d785eff18ecf74 Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Mon, 15 Feb 2016 18:00:05 -0200
+Subject: [PATCH] Use 'tcsh' shell
+Organization: O.S. Systems Software LTDA.
+
+Upstream-Status: Pending
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ Scripts/dta | 2 +-
+ Scripts/dtc | 2 +-
+ Scripts/dtf | 2 +-
+ Scripts/dtr | 2 +-
+ Scripts/dts | 2 +-
+ Scripts/dtt | 2 +-
+ Scripts/dtw | 2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/Scripts/dta b/Scripts/dta
+index ebc7072..4f90247 100755
+--- a/Scripts/dta
++++ b/Scripts/dta
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/bin/tcsh
+ #
+ #	Script file to test asynchronous communication lines.
+ #
+diff --git a/Scripts/dtc b/Scripts/dtc
+index da69c2e..89d48c2 100755
+--- a/Scripts/dtc
++++ b/Scripts/dtc
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/bin/tcsh
+ #	%Z%%M% %I% %E%
+ #
+ #	Date:	August 7, 1990
+diff --git a/Scripts/dtf b/Scripts/dtf
+index 9f8cd87..321d261 100755
+--- a/Scripts/dtf
++++ b/Scripts/dtf
+@@ -1,4 +1,4 @@
+-#! /bin/csh
++#! /bin/tcsh
+ #
+ #	Script file to gather floppy disk performance data.
+ #
+diff --git a/Scripts/dtr b/Scripts/dtr
+index ddb7947..1ff5a0b 100755
+--- a/Scripts/dtr
++++ b/Scripts/dtr
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/bin/tcsh
+ #	%Z%%M% %I% %E%
+ #
+ #	Date:	August 21, 1990
+diff --git a/Scripts/dts b/Scripts/dts
+index 6b8a167..42d2312 100755
+--- a/Scripts/dts
++++ b/Scripts/dts
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/bin/tcsh
+ #	%Z%%M% %I% %E%
+ #
+ #	Date:	August 7, 1990
+diff --git a/Scripts/dtt b/Scripts/dtt
+index 36cc6bd..df19d2f 100755
+--- a/Scripts/dtt
++++ b/Scripts/dtt
+@@ -1,4 +1,4 @@
+-#! /bin/csh
++#! /bin/tcsh
+ #	%Z%%M% %I% %E%
+ #
+ #	Date:	August 7, 1990
+diff --git a/Scripts/dtw b/Scripts/dtw
+index 8a4ac39..c58e304 100755
+--- a/Scripts/dtw
++++ b/Scripts/dtw
+@@ -1,4 +1,4 @@
+-#!/bin/csh
++#!/bin/tcsh
+ #	%Z%%M% %I% %E%
+ #
+ #	Date:	August 21, 1990
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/dt-default-source-define.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/dt-default-source-define.patch
new file mode 100644
index 0000000..87016ed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/dt-default-source-define.patch
@@ -0,0 +1,18 @@
+Patch from http://pkgs.fedoraproject.org/git/rpms/dt.git
+
+Upstream-Status: Pending
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+
+diff -rupN dt.v18.32.old/common.h dt.v18.32/common.h
+--- dt.v18.32.old/common.h	2013-03-01 23:52:30.000000000 +0100
++++ dt.v18.32/common.h	2014-09-24 17:41:40.777604710 +0200
+@@ -127,7 +127,7 @@ typedef volatile slarge_t	v_slarge;
+ 
+ #endif /* defined(_WIN64) */
+ 
+-#elif defined(__GNUC__) && defined(_BSD_SOURCE) || defined(SCO) || defined(__QNXNTO__) || defined(SOLARIS) || defined(HP_UX) || defined(AIX) || defined(_NT_SOURCE) 
++#elif defined(__GNUC__) && defined(_BSD_SOURCE) || defined (_DEFAULT_SOURCE) ||  defined(SCO) || defined(__QNXNTO__) || defined(SOLARIS) || defined(HP_UX) || defined(AIX) || defined(_NT_SOURCE) 
+ 
+ #define QuadIsLongLong
+ typedef unsigned long long int	large_t;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/dt-wformat-security.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/dt-wformat-security.patch
new file mode 100644
index 0000000..b6780c1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt/dt-wformat-security.patch
@@ -0,0 +1,48 @@
+Patch from http://pkgs.fedoraproject.org/git/rpms/dt.git
+
+Upstream-Status: Pending
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+
+diff -rupN dt.v18.32.old/dt.c dt.v18.32/dt.c
+--- dt.v18.32.old/dt.c	2014-08-18 14:45:53.242351115 +0200
++++ dt.v18.32/dt.c	2014-08-18 15:11:36.367719880 +0200
+@@ -4378,7 +4378,7 @@ report_error(
+ 	    (void)sprintf(dip->di_msg_buffer, "(%d): '%s', errno = %d - %s\n",
+ 			  dip->di_process_id, error_info, errno, emsg);
+ 	}
+-	syslog(LOG_ERR, dip->di_msg_buffer);
++	syslog(LOG_ERR, "%s", dip->di_msg_buffer);
+     }
+ #endif /* defined(SYSLOG) */
+ 
+diff -rupN dt.v18.32.old/dtutil.c dt.v18.32/dtutil.c
+--- dt.v18.32.old/dtutil.c	2014-08-18 14:45:53.354350779 +0200
++++ dt.v18.32/dtutil.c	2014-08-18 15:13:53.835307311 +0200
+@@ -5180,7 +5180,7 @@ ReportDeviceInfo (
+ 	    bp += Sprintf(bp,
+ 			  "(%d) Device name: %s\n",
+ 			   dip->di_process_id, dip->di_dname);
+-	    syslog(LOG_ERR, dip->di_msg_buffer);
++	    syslog(LOG_ERR, "%s", dip->di_msg_buffer);
+ 	    bp = dip->di_msg_buffer;
+ # if defined(SCSI)
+ 	    if (dip->di_serial_number) {
+@@ -5193,7 +5193,7 @@ ReportDeviceInfo (
+ 			      dip->di_process_id, dip->di_device_id);
+ 	    }
+ # endif /* defined(SCSI) */
+-	    syslog(LOG_ERR, dip->di_msg_buffer);
++	    syslog(LOG_ERR, "%s", dip->di_msg_buffer);
+ 	    bp = dip->di_msg_buffer;
+ 	    bp += Sprintf(bp,
+ 		  "(%d) Relative block number where the error occurred is " LUF ","
+@@ -5203,7 +5203,7 @@ ReportDeviceInfo (
+   	    } else {
+                 bp += Sprintf(bp, "\n");
+             }
+-	    syslog(LOG_ERR, dip->di_msg_buffer);
++	    syslog(LOG_ERR, "%s", dip->di_msg_buffer);
+ 	}
+ #endif /* defined(SYSLOG) */
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt_18.32.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt_18.32.bb
new file mode 100644
index 0000000..9688d02
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/dt/dt_18.32.bb
@@ -0,0 +1,47 @@
+SUMMARY = "Generic data test program"
+DESCRIPTION = "The Data Test Program (dt) is a generic data test program used to verify proper \
+operation of peripherals, file systems, device drivers, or any data stream supported by the \
+operating system."
+HOMEPAGE = "http://www.scsifaq.org/RMiller_Tools/dt.html"
+
+SECTION = "console/tests"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=be8bb25bbcfaa0725710d188e5152668"
+
+# Source URI taken from Fedora RPM spec file at:
+#  http://pkgs.fedoraproject.org/git/rpms/dt.git
+SRC_URI = "http://dl.dropboxusercontent.com/u/32363629/Datatest/dt-source-v${PV}.tar.gz \
+           file://dt-default-source-define.patch \
+           file://dt-wformat-security.patch \
+           file://Stop-using-relative-path-for-scsilib.c-link.patch \
+           file://Use-tcsh-shell.patch \
+"
+
+SRC_URI[md5sum] = "3054aeaaba047a1dbe90c2132a382ee2"
+SRC_URI[sha256sum] = "10d164676e918a4d07f233bcd11e4cb6bfd1052c996182cd1827ccd0c063fcc6"
+
+S = "${WORKDIR}/dt.v${PV}"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+EXTRA_OEMAKE += "-f Makefile.linux \
+                 OS=linux \
+                 CFLAGS="-I.. -DAIO -DFIFO -DMMAP -D__linux__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DTHREADS -DSCSI""
+
+do_compile() {
+    oe_runmake
+}
+
+do_install() {
+    install -Dm755 dt ${D}${sbindir}/dt
+    install -Dm644 Documentation/dt.man ${D}${mandir}/man8/dt.8
+
+    install -d ${D}${datadir}/dt/
+    install -d ${D}${docdir}/dt/html/
+    install -m755 Scripts/dt? ${D}${datadir}/dt/
+    install -m644 data/pattern_* ${D}${datadir}/dt/
+    install -m644 html/* ${D}${docdir}/dt/html/
+}
+
+RDEPENDS_${PN} += "tcsh"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/geany/geany/0001-configure.ac-remove-additional-c-test.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/geany/geany/0001-configure.ac-remove-additional-c-test.patch
new file mode 100644
index 0000000..5166fec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/geany/geany/0001-configure.ac-remove-additional-c-test.patch
@@ -0,0 +1,47 @@
+From e62d5b59262ec7ffe07931790712c7e247377795 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Thu, 21 Feb 2013 09:31:31 +0100
+Subject: [PATCH] configure.ac remove additional c++ test
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+For openembedded cross-builds CXX can contain something like:
+
+arm-oe-linux-gnueabi-g++  -march=armv5te  -marm -mthumb-interwork --sysroot=/home/jenkins/oe/shr-core-branches/shr-core/tmp-eglibc/sysroots/qemuarm
+
+This ends up in
+
+configure:5582: error: No C++ compiler found. Please install a C++ compiler.
+
+Anyway if [1] is still valid, the combination of AC_PROG_CC and AC_PROG_CXX
+should thow an error message.
+
+[1] http://lists.gnu.org/archive/html/bug-autoconf/2010-05/msg00001.html
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ configure.ac |    5 -----
+ 1 files changed, 0 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c37312a..742bf35 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -26,11 +26,6 @@ AC_USE_SYSTEM_EXTENSIONS
+ AC_PROG_CC
+ 
+ AC_PROG_CXX
+-# check for C++ compiler explicitly and fail if none is found, do this check
+-# after AC_PROG_CXX has set the CXX environment variable
+-if ! which $CXX >/dev/null 2>&1; then
+-	AC_MSG_ERROR([No C++ compiler found. Please install a C++ compiler.])
+-fi
+ 
+ AC_PROG_INSTALL
+ AC_PROG_LN_S
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.26.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.26.bb
new file mode 100644
index 0000000..ca4f6b6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.26.bb
@@ -0,0 +1,16 @@
+SUMMARY = "A fast and lightweight IDE"
+HOMEPAGE = "http://www.geany.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bd7b2c994af21d318bd2cd3b3f80c2d5"
+DEPENDS = "gtk+ python-docutils-native"
+
+inherit autotools pkgconfig perlnative pythonnative
+
+SRC_URI = " \
+    http://download.geany.org/${BP}.tar.bz2 \
+    file://0001-configure.ac-remove-additional-c-test.patch \
+"
+SRC_URI[md5sum] = "bd457caba57099cfa23b063e78b6f819"
+SRC_URI[sha256sum] = "e38530e87c577e1e9806be3b40e08fb9ee321eb1abc6361ddacdad89c825f90d"
+
+FILES_${PN} += "${datadir}/icons"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/giflib/giflib_4.1.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/giflib/giflib_4.1.6.bb
new file mode 100644
index 0000000..e59d0e5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/giflib/giflib_4.1.6.bb
@@ -0,0 +1,22 @@
+SUMMARY = "shared library for GIF images"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ae11c61b04b2917be39b11f78d71519a"
+PR = "r3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/giflib/${BP}.tar.bz2"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-x11"
+
+PACKAGES += "${PN}-utils"
+FILES_${PN} = "${libdir}/libgif.so.*"
+FILES_${PN}-utils = "${bindir}"
+
+BBCLASSEXTEND = "native"
+
+RDEPENDS_${PN}-utils = "perl"
+
+SRC_URI[md5sum] = "7125644155ae6ad33dbc9fc15a14735f"
+SRC_URI[sha256sum] = "e1c1ced9c5bc8f93ef0faf0a8c7717abf784d10a7b270d2285e8e1f3b93f2bed"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/glade/files/0001-gnome-doc-utils.make-sysrooted-pkg-config.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/glade/files/0001-gnome-doc-utils.make-sysrooted-pkg-config.patch
new file mode 100644
index 0000000..1b24c39
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/glade/files/0001-gnome-doc-utils.make-sysrooted-pkg-config.patch
@@ -0,0 +1,51 @@
+From aed002cd9ff9e8f972120fbac33b4a65aba952e1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Tue, 25 Sep 2012 10:28:33 +0200
+Subject: [PATCH] gnome-doc-utils.make: sysrooted pkg-config
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+same approach as used used in gnome-disk-utility:
+
+In cross environment we have to prepend the sysroot to the path found by
+pkgconfig since the path returned from pkgconfig does not have sysroot prefixed
+it ends up using the files from host system. Now usually people have gnome installed
+so the build succeeds but if you dont have gnome installed on build host then
+it wont find the files on host system and packages using gnome-doc-utils wont
+compile.
+
+This should work ok with non sysrooted builds too since in those cases PKG_CONFIG_SYSROOT_DIR
+will be empty
+
+Upstream-Status: pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ gnome-doc-utils.make |   10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/gnome-doc-utils.make b/gnome-doc-utils.make
+index 42d9df3..f71bbfa 100644
+--- a/gnome-doc-utils.make
++++ b/gnome-doc-utils.make
+@@ -133,11 +133,11 @@ _DOC_ABS_SRCDIR = @abs_srcdir@
+ _xml2po ?= `which xml2po`
+ _xml2po_mode = $(if $(DOC_ID),mallard,docbook)
+ 
+-_db2html ?= `$(PKG_CONFIG) --variable db2html gnome-doc-utils`
+-_db2omf  ?= `$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
+-_chunks  ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
+-_credits ?= `$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
+-_ids ?= $(shell $(PKG_CONFIG) --variable xmldir gnome-doc-utils)/gnome/xslt/docbook/utils/ids.xsl
++_db2html ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2html gnome-doc-utils`
++_db2omf  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable db2omf gnome-doc-utils`
++_chunks  ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/chunks.xsl
++_credits ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/credits.xsl
++_ids ?= ${PKG_CONFIG_SYSROOT_DIR}`$(PKG_CONFIG) --variable xmldir gnome-doc-utils`/gnome/xslt/docbook/utils/ids.xsl
+ 
+ if ENABLE_SK
+ _ENABLE_SK = true
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/glade/glade3_3.8.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/glade/glade3_3.8.5.bb
new file mode 100644
index 0000000..4e7ef9b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/glade/glade3_3.8.5.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Glade - A User Interface Designer"
+HOMEPAGE = "http://www.gnu.org/software/gnash"
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=aabe87591cb8ae0f3c68be6977bb5522 \
+                    file://COPYING.GPL;md5=9ac2e7cff1ddaf48b6eab6028f23ef88 \
+                    file://COPYING.LGPL;md5=252890d9eee26aab7b432e8b8a616475"
+DEPENDS = "gtk+ gnome-doc-utils-native gnome-common libxml2"
+
+inherit autotools pkgconfig pythonnative
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glade3/3.8/glade3-${PV}.tar.xz \
+           file://0001-gnome-doc-utils.make-sysrooted-pkg-config.patch"
+SRC_URI[md5sum] = "4e4b4f5ee34a03e017e4cef97d796c1f"
+SRC_URI[sha256sum] = "58a5f6e4df4028230ddecc74c564808b7ec4471b1925058e29304f778b6b2735"
+
+EXTRA_OECONF += "--disable-scrollkeeper"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gnome] = "--enable-gnome,--disable-gnome,libbonoboui libgnomeui"
+
+do_configure_prepend() {
+    sed -i '/^if HAVE_GNOME_DOC_UTILS/,/^endif/d' ${S}/Makefile.am
+}
+
+FILES_${PN} += "${datadir}/icons"
+FILES_${PN}-dbg += "${libdir}/glade3/modules/.debug"
+FILES_${PN}-dev += "${libdir}/glade3/modules/*.la"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/icon-slicer/files/0001-Makefile.am-no-examples.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/icon-slicer/files/0001-Makefile.am-no-examples.patch
new file mode 100644
index 0000000..5d83818
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/icon-slicer/files/0001-Makefile.am-no-examples.patch
@@ -0,0 +1,27 @@
+From e6d53086524a94d27920614e38966020e0b2b3ef Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Mon, 5 Nov 2012 11:25:02 +0100
+Subject: [PATCH] Makefile.am: no examples
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+
+---
+ Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 28ee7eb..af437a6 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1 +1 @@
+-SUBDIRS = src examples
+\ No newline at end of file
++SUBDIRS = src
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/icon-slicer/icon-slicer_0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/icon-slicer/icon-slicer_0.3.bb
new file mode 100644
index 0000000..9768a6e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/icon-slicer/icon-slicer_0.3.bb
@@ -0,0 +1,13 @@
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "gdk-pixbuf popt"
+
+SRC_URI = "http://freedesktop.org/software/${BPN}/releases/${BPN}-${PV}.tar.gz \
+           file://0001-Makefile.am-no-examples.patch"
+SRC_URI[md5sum] = "5c5374d4f265b0abe4daef1d03f87104"
+SRC_URI[sha256sum] = "05f0216dd0c25a17859de66357f64da5033375b6fbf5f31ca54867311160b64d"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/iptraf/iptraf/0001-src-Fix-error-in-cross-compile.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/iptraf/iptraf/0001-src-Fix-error-in-cross-compile.patch
new file mode 100644
index 0000000..291ed31
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/iptraf/iptraf/0001-src-Fix-error-in-cross-compile.patch
@@ -0,0 +1,138 @@
+From 27910ea19260b7f7a3f9c0465addd1dea80cf3bd Mon Sep 17 00:00:00 2001
+From: Li Xin <lixin.fnst@cn.fujitsu.com>
+Date: Thu, 8 Oct 2015 15:11:17 +0900
+Subject: [PATCH] src: Fix error in cross-compile
+
+The errors are like this:
+tcptable.h:26:25: fatal error: linux/if_tr.h: No such file or directory
+ld: cannot find -ltextbox
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ src/Makefile     | 2 +-
+ src/hostmon.c    | 2 +-
+ src/install.sh   | 4 ++--
+ src/othptab.c    | 2 +-
+ src/packet.c     | 2 +-
+ src/tcptable.h   | 2 +-
+ src/tr.c         | 2 +-
+ support/Makefile | 3 +--
+ 8 files changed, 9 insertions(+), 10 deletions(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 2043c2d..0f77bea 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -39,7 +39,7 @@ LDOPTS		= #-static
+ # you may want to change this to point to your ncurses include directory
+ # if the ncurses include files are not in the default location.
+ 
+-INCLUDEDIR	= -I/usr/include/ncurses -I../support
++INCLUDEDIR	=  -I../support
+ 
+ # You can uncomment this one to disable the backspace key in input fields.
+ # This means you must use the Del key or Ctrl+H combination to erase the
+diff --git a/src/hostmon.c b/src/hostmon.c
+index 14df2c8..6571562 100644
+--- a/src/hostmon.c
++++ b/src/hostmon.c
+@@ -31,7 +31,7 @@ details.
+ #include <linux/if_packet.h>
+ #include <linux/if_ether.h>
+ #include <linux/if_fddi.h>
+-#include <linux/if_tr.h>
++#include <netinet/if_tr.h>
+ #include <net/if_arp.h>
+ #include <stdlib.h>
+ #include <time.h>
+diff --git a/src/install.sh b/src/install.sh
+index d2fd360..36d3516 100755
+--- a/src/install.sh
++++ b/src/install.sh
+@@ -23,9 +23,9 @@ echo
+ echo "*** Installing executable programs and preparing work directories"
+ echo
+ echo ">>> Installing iptraf in $TARGET"
+-$INSTALL -m 0700 -o root -g root -s iptraf $TARGET
++$INSTALL -m 0700 -o root -g root  iptraf $TARGET
+ echo ">>> Installing rvnamed in $TARGET"
+-$INSTALL -m 0700 -o root -g root -s rvnamed $TARGET
++$INSTALL -m 0700 -o root -g root  rvnamed $TARGET
+ 
+ if [ ! -d $WORKDIR ]; then
+     echo ">>> Creating IPTraf work directory $WORKDIR"
+diff --git a/src/othptab.c b/src/othptab.c
+index 97771d1..a8bb536 100644
+--- a/src/othptab.c
++++ b/src/othptab.c
+@@ -18,7 +18,7 @@ details.
+ 
+ #include <asm/types.h>
+ #include <linux/if_ether.h>
+-#include <linux/if_tr.h>
++#include <netinet/if_tr.h>
+ #include <linux/if_fddi.h>
+ #include <winops.h>
+ #include "arphdr.h"
+diff --git a/src/packet.c b/src/packet.c
+index 33fdf2a..1e2b81b 100644
+--- a/src/packet.c
++++ b/src/packet.c
+@@ -36,7 +36,7 @@ details.
+ #include <linux/if_packet.h>
+ #include <linux/if_ether.h>
+ #include <linux/if_fddi.h>
+-#include <linux/if_tr.h>
++#include <netinet/if_tr.h>
+ #include <linux/isdn.h>
+ #include <linux/sockios.h>
+ #include <msgboxes.h>
+diff --git a/src/tcptable.h b/src/tcptable.h
+index 3e17793..d1380b5 100644
+--- a/src/tcptable.h
++++ b/src/tcptable.h
+@@ -23,7 +23,7 @@
+ #include <linux/if_packet.h>
+ #include <linux/if_ether.h>
+ #include <linux/if_fddi.h>
+-#include <linux/if_tr.h>
++#include <netinet/if_tr.h>
+ #include <net/if.h>
+ #include <netinet/ip.h>
+ #include <netinet/udp.h>
+diff --git a/src/tr.c b/src/tr.c
+index 40c9e63..11f8045 100644
+--- a/src/tr.c
++++ b/src/tr.c
+@@ -7,7 +7,7 @@
+  */
+ 
+ #include <asm/types.h>
+-#include <linux/if_tr.h>
++#include <netinet/if_tr.h>
+ #include <netinet/in.h>
+ 
+ unsigned int get_tr_ip_offset(unsigned char *pkt)
+diff --git a/support/Makefile b/support/Makefile
+index 114bfc3..c962c09 100644
+--- a/support/Makefile
++++ b/support/Makefile
+@@ -1,4 +1,3 @@
+-INCLUDEDIR		= -I/usr/include/ncurses
+ 
+ OBJS			= input.o menurt.o listbox.o winops.o labels.o \
+ 				msgboxes.o txbox.o
+@@ -12,7 +11,7 @@ libtextbox.a: $(OBJS)
+ #	gcc -shared -o libtextbox.so $(OBJS)
+ 
+ %.o: %.c *.h
+-	gcc -O2 -g -Wall -fPIC $(INCLUDEDIR) -c -o $*.o $<
++	${CC} -O2 -g -Wall -fPIC  -c -o $*.o $<
+ 
+ clean:
+ 	rm -rf *.o *~ libtextbox.a libtextbox.so
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/iptraf/iptraf_3.0.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/iptraf/iptraf_3.0.0.bb
new file mode 100644
index 0000000..25e6001
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/iptraf/iptraf_3.0.0.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "IPTraf is a console-based network statistics utility for Linux. \
+It gathers a variety of figures such as TCP connection packet and byte counts, \
+interface statistics and activity indicators, TCP/UDP traffic breakdowns, \
+and LAN station packet and byte counts."
+
+HOMEPAGE = "http://iptraf.seul.org"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dc0bdc29df738baf327368b1bbb15a45"
+
+DEPENDS = "ncurses"
+
+SRC_URI = " \
+    ftp://iptraf.seul.org/pub/iptraf/iptraf-3.0.0.tar.gz \
+    file://0001-src-Fix-error-in-cross-compile.patch"
+SRC_URI[md5sum] = "377371c28ee3c21a76f7024920649ea8"
+SRC_URI[sha256sum] = "9ee433d95573d612539da4b452e6cdcbca6ab6674a88bfbf6eaf12d4902b5163"
+RDEPENDS_${PN} = "ncurses"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_compile() {
+    oe_runmake -C src all  
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    oe_runmake -C src install \
+        TARGET=${D}${bindir} \
+        WORKDIR=${D}${localstatedir}/local/iptraf \
+        LOGDIR=${D}${localstatedir}/log/iptraf \
+        LOCKDIR=${D}${localstatedir}/run/iptraf 
+}
+
+FILES_${PN} += "${bindir} ${localstatedir} /run"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/jq/jq_1.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/jq/jq_1.5.bb
new file mode 100644
index 0000000..612eaf3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/jq/jq_1.5.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Lightweight and flexible command-line JSON processor"
+DESCRIPTION = "jq is like sed for JSON data, you can use it to slice and \
+               filter and map and transform structured data with the same \
+               ease that sed, awk, grep and friends let you play with text."
+HOMEPAGE = "http://stedolan.github.io/jq/"
+BUGTRACKER = "https://github.com/stedolan/jq/issues"
+SECTION = "utils"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=29dd0c35d7e391bb8d515eacf7592e00"
+
+DEPENDS = "flex-native bison-native onig"
+
+SRC_URI = "https://github.com/stedolan/${BPN}/releases/download/${BPN}-${PV}/${BPN}-${PV}.tar.gz \
+"
+
+SRC_URI[md5sum] = "0933532b086bd8b6a41c1b162b1731f9"
+SRC_URI[sha256sum] = "c4d2bfec6436341113419debf479d833692cc5cdab7eb0326b5a4d4fbe9f493c"
+
+inherit autotools
+
+# Don't build documentation (generation requires ruby)
+EXTRA_OECONF = "--disable-docs --disable-maintainer-mode"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/lemon/files/lemon.1 b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lemon/files/lemon.1
new file mode 100644
index 0000000..914ee07
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lemon/files/lemon.1
@@ -0,0 +1,63 @@
+.Dd 2002-10-04
+.Dt LEMON 1
+.Os "Debian GNU/Linux"
+.\" Manual page created by Guus Sliepen <guus@debian.org>
+.Sh NAME
+.Nm lemon
+.Nd The Lemon Parser Generator
+.Sh SYNOPSIS
+.Nm
+.Op Fl bcgmqsx
+.Ar input
+.Sh DESCRIPTION
+.Nm
+is an LALR(1) parser generator for C or C++.
+It does the same job as bison and yacc.
+But 
+.Nm
+is not another bison or yacc clone.
+It uses a different grammar syntax which is designed to reduce the number of coding errors.
+.Nm
+also uses a more sophisticated parsing engine that is faster than yacc and bison
+and which is both reentrant and thread-safe.
+Furthermore, 
+.Nm
+implements features that can be used to eliminate resource leaks,
+making is suitable for use in long-running programs such as graphical user interfaces or embedded controllers.
+.Pp
+.Nm
+will read the grammer from
+.Ar input
+and write out a parser for that grammar in the C language.
+.Sh OPTIONS
+.Bl -tag -width indent
+.It Fl b
+Print only the basis in report.
+.It Fl c
+Don't compress the action table.
+.It Fl g
+Print grammar without actions.
+.It Fl m
+Output a makeheaders compatible file.
+.It Fl q
+(Quiet) Don't print the report file.
+.It Fl s
+Print parser stats to standard output.
+.It Fl x
+Print the version number.
+.El
+.Sh FILES
+.Bl -tag -width indent
+.It Pa /usr/share/lemon/lempar.c
+Driver template for the
+.Nm
+parser generator.
+.El
+.Sh AUTHOR
+.Nm
+has been written by
+.An D. Richard Hipp Aq drh@hwaci.com .
+.Pp
+This manual page was written by
+.An Guus Sliepen Aq guus@debian.org
+for the Debian GNU/Linux system.
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/lemon/lemon.inc b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lemon/lemon.inc
new file mode 100644
index 0000000..57b9fb7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lemon/lemon.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "The Lemon Parser Generator"
+HOMEPAGE = "http://www.hwaci.com/sw/lemon/"
+LICENSE = "PD"
+SECTION = "devel"
+
+SRC_URI = "http://www.sqlite.org/sqlite-${PV}.tar.gz \
+           file://lemon.1"
+
+S = "${WORKDIR}/sqlite-${PV}/tool"
+
+do_compile() {
+    ${CC} ${CFLAGS} lemon.c -c -o lemon.o
+    ${CCLD} ${LDFLAGS} lemon.o -o lemon
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 lemon ${D}${bindir}
+    install -m 0644 lempar.c ${D}${bindir}
+    install -d ${D}${mandir}/man1
+    install -m 0644 ${WORKDIR}/lemon.1 ${D}${mandir}/man1/
+}
+
+BBCLASSEXTEND = "native"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/lemon/lemon_3.7.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lemon/lemon_3.7.3.bb
new file mode 100644
index 0000000..354db17
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lemon/lemon_3.7.3.bb
@@ -0,0 +1,7 @@
+require lemon.inc
+
+LIC_FILES_CHKSUM = "file://lemon.c;endline=8;md5=c7551a78fa3fdecd96d1ad6761d205ee"
+
+SRC_URI[md5sum] = "5437978aae90350cf984993091e0d695"
+SRC_URI[sha256sum] = "dbf352e8fbb74829f5e7a88f9f6ceeb80a709537f668c36e4b6cdfb271309ef6"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20150325-3.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20150325-3.1.bb
new file mode 100644
index 0000000..4a72896
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20150325-3.1.bb
@@ -0,0 +1,20 @@
+SUMMARY = "BSD replacement for libreadline"
+DESCRIPTION = "Command line editor library providing generic line editing, \
+history, and tokenization functions"
+HOMEPAGE = "http://www.thrysoee.dk/editline/"
+SECTION = "libs"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1e4228d0c5a9093b01aeaaeae6641533"
+
+DEPENDS = "ncurses"
+
+inherit autotools
+
+# upstream site does not allow wget's User-Agent
+FETCHCMD_wget += "-U bitbake"
+SRC_URI = "http://www.thrysoee.dk/editline/${BPN}-${PV}.tar.gz"
+
+S = "${WORKDIR}/${BPN}-${PV}"
+
+SRC_URI[md5sum] = "43cdb5df3061d78b5e9d59109871b4f6"
+SRC_URI[sha256sum] = "c88a5e4af83c5f40dda8455886ac98923a9c33125699742603a88a0253fcc8c5"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/libfribidi/fribidi_0.19.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libfribidi/fribidi_0.19.2.bb
new file mode 100644
index 0000000..cb4bc24
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libfribidi/fribidi_0.19.2.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Fribidi library for bidirectional text"
+SECTION = "libs"
+PR = "r1"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+BBCLASSEXTEND = "native"
+
+PROVIDES = "libfribidi"
+
+inherit autotools lib_package pkgconfig
+
+CFLAGS_append = "  -DPAGE_SIZE=4096 "
+
+SRC_URI = "http://fribidi.org/download/fribidi-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "626db17d2d99b43615ad9d12500f568a"
+SRC_URI[sha256sum] = "49cf91586e48b52fe25872ff66c1da0dff0daac2593f9f300e2af12f44f64177"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.18.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.18.0.bb
new file mode 100644
index 0000000..3fa9d9f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.18.0.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "libgee is a collection library providing GObject-based interfaces \
+and classes for commonly used data structures."
+HOMEPAGE = "http://live.gnome.org/Libgee"
+SECTION = "libs"
+DEPENDS = "glib-2.0"
+
+BBCLASSEXTEND = "native"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+
+PE = "1"
+
+inherit autotools vala pkgconfig gobject-introspection
+do_configure_prepend() {
+    MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4"
+    for i in ${MACROS}; do
+        rm -f m4/$i
+    done
+}
+
+SHRT_VER = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}"
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/libgee/${SHRT_VER}/${BP}.tar.xz"
+SRC_URI[md5sum] = "29ea6125e653d7e60b49a9a9544abc96"
+SRC_URI[sha256sum] = "4ad99ef937d071b4883c061df40bfe233f7649d50c354cf81235f180b4244399"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/0001-version-libraries.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/0001-version-libraries.patch
new file mode 100644
index 0000000..02117fa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/0001-version-libraries.patch
@@ -0,0 +1,28 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 57804cf..1aa7f27 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -18,6 +18,7 @@ ENDIF()
+ SET(SOURCES avl.c avl-cmp.c blob.c blobmsg.c uloop.c usock.c ustream.c ustream-fd.c vlist.c utils.c safe_list.c runqueue.c md5.c kvlist.c ulog.c base64.c)
+ 
+ ADD_LIBRARY(ubox SHARED ${SOURCES})
++SET_TARGET_PROPERTIES(ubox PROPERTIES VERSION 1.0.1 SOVERSION 1)
+ ADD_LIBRARY(ubox-static STATIC ${SOURCES})
+ SET_TARGET_PROPERTIES(ubox-static PROPERTIES OUTPUT_NAME ubox)
+ 
+@@ -46,6 +47,7 @@ find_library(json NAMES json-c)
+ IF(EXISTS ${json})
+ 	ADD_LIBRARY(blobmsg_json SHARED blobmsg_json.c)
+ 	TARGET_LINK_LIBRARIES(blobmsg_json ubox ${json})
++	SET_TARGET_PROPERTIES(blobmsg_json PROPERTIES VERSION 1.0.1 SOVERSION 1)
+ 
+ 	ADD_LIBRARY(blobmsg_json-static STATIC blobmsg_json.c)
+ 	SET_TARGET_PROPERTIES(blobmsg_json-static
+@@ -55,6 +57,7 @@ IF(EXISTS ${json})
+ 	TARGET_LINK_LIBRARIES(jshn blobmsg_json ${json})
+ 
+ 	ADD_LIBRARY(json_script SHARED json_script.c)
++	SET_TARGET_PROPERTIES(json_script PROPERTIES VERSION 1.0.1 SOVERSION 1)
+ 	TARGET_LINK_LIBRARIES(json_script ubox)
+ 
+ 	INSTALL(TARGETS blobmsg_json blobmsg_json-static jshn json_script
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/fix-libdir.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/fix-libdir.patch
new file mode 100644
index 0000000..6f09c8b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/fix-libdir.patch
@@ -0,0 +1,40 @@
+[PATCH] fix the CMAKE_INSTALL_LIBDIR
+
+Upstream-Status: Pending
+
+libdir maybe /usr/lib64 for 64bit machine
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ CMakeLists.txt | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 57804cf..2c7bdc1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -35,8 +35,8 @@ INSTALL(FILES ${headers}
+ 	DESTINATION include/libubox
+ )
+ INSTALL(TARGETS ubox ubox-static
+-	ARCHIVE DESTINATION lib
+-	LIBRARY DESTINATION lib
++	ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ )
+ 
+ ADD_SUBDIRECTORY(lua)
+@@ -58,8 +58,8 @@ IF(EXISTS ${json})
+ 	TARGET_LINK_LIBRARIES(json_script ubox)
+ 
+ 	INSTALL(TARGETS blobmsg_json blobmsg_json-static jshn json_script
+-		ARCHIVE DESTINATION lib
+-		LIBRARY DESTINATION lib
++		ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++		LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ 		RUNTIME DESTINATION bin
+ 	)
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
new file mode 100644
index 0000000..609281a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "C utility functions for OpenWrt"
+SECTION = "libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "\
+    file://avl.c;endline=39;md5=00810155fed3d604816ec5814523d60a \
+    file://avl-cmp.c;endline=15;md5=1603e6094b432a5f3f320877a06f41b5 \
+    file://base64.c;endline=61;md5=51fdff010d45b0086ac0a6e035693dc0 \
+    file://blobmsg.c;endline=15;md5=7ed64c1570e8c9b46c4fc6fbd16c489e \
+    file://list.h;endline=28;md5=2d5f5475fbd0f08741354c5a99c2e983 \
+    file://md5.h;endline=39;md5=048bf9f68963c207a0c2b3a94c9d2aaa \
+    file://md5.c;endline=51;md5=0a448eea0bcbc89e3c7e6608f2d119a0 \
+    file://usock.h;endline=18;md5=f0dfdc8de858e66d66d74036611bba14 \
+"
+
+SRC_URI = "\
+    git://git.openwrt.org/project/libubox.git \
+    file://0001-version-libraries.patch \
+    file://fix-libdir.patch \
+"
+
+SRCREV = "155bf39896f126b1ba121b816922a88dc34c31e3"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+DEPENDS = "json-c"
+
+EXTRA_OECMAKE = "-DBUILD_EXAMPLES=OFF -DBUILD_LUA=OFF"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_1.2.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_1.2.0.bb
new file mode 100644
index 0000000..c2f5ec0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_1.2.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "log4cplus provides a simple C++ logging API for log management"
+SECTION = "libs"
+HOMEPAGE = "http://sourceforge.net/projects/log4cplus/"
+BUGTRACKER = "http://sourceforge.net/p/log4cplus/bugs/"
+
+LICENSE = "Apache-2.0 & BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cedaa287ececcb94f9f2880d9c4ef085"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}-stable/${PV}/${BP}.tar.gz"
+SRC_URI[md5sum] = "e250f0f431c0723f8b625323e7b6465d"
+SRC_URI[sha256sum] = "ad5ec3b62f2f0bdc7f06fa398bde61091fd2493e91059e17315b5197420dcf04"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND += "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltp-ddt/ltp-ddt/ltp-Do-not-link-against-libfl.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltp-ddt/ltp-ddt/ltp-Do-not-link-against-libfl.patch
new file mode 100644
index 0000000..3e4aa73
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltp-ddt/ltp-ddt/ltp-Do-not-link-against-libfl.patch
@@ -0,0 +1,31 @@
+From 5bda9c0af56869c6ff2c25d38ea087179c946bc6 Mon Sep 17 00:00:00 2001
+From: Chong Lu <Chong.Lu@windriver.com>
+Date: Tue, 11 Mar 2014 14:47:22 +0800
+Subject: [PATCH] ltp: Don't link against libfl
+
+We have already defined yywrap function in scan.l file. After this, we no longer need to
+link against libfl and so no longer get errors about undefined references to yylex.
+
+Upstream-status: Pending
+
+Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
+---
+ pan/Makefile |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pan/Makefile b/pan/Makefile
+index 4cc6466..a4b575b 100644
+--- a/pan/Makefile
++++ b/pan/Makefile
+@@ -31,7 +31,7 @@ CPPFLAGS		+= -Wno-error
+ 
+ CPPFLAGS		+= -I$(abs_srcdir)
+ 
+-LDLIBS			+= -lm $(LEXLIB)
++LDLIBS			+= -lm
+ 
+ LFLAGS			+= -l
+ 
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltp-ddt/ltp-ddt_1.0.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltp-ddt/ltp-ddt_1.0.0.bb
new file mode 100644
index 0000000..62117b1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltp-ddt/ltp-ddt_1.0.0.bb
@@ -0,0 +1,97 @@
+SUMMARY = "Embedded Linux Device Driver Tests based on Linux Test Project"
+HOMEPAGE = "http://arago-project.org/git/projects/test-automation/ltp-ddt.git"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+PROVIDES += "ltp"
+DEPENDS += "zip-native virtual/kernel alsa-lib"
+
+RDEPENDS_${PN} += "pm-qa serialcheck"
+
+inherit autotools module-base kernel-module-split
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+SRCREV = "f086bed6cc88bf102eaad0e96cb7ebe79944a8ad"
+BRANCH ?= "master"
+
+SRC_URI = "git://arago-project.org/git/projects/test-automation/ltp-ddt.git;branch=${BRANCH} \
+    file://ltp-Do-not-link-against-libfl.patch \
+"
+
+S = "${WORKDIR}/git"
+
+LTPROOT = "/opt/ltp"
+
+EXTRA_OEMAKE_append = " \
+    prefix=${LTPROOT} \
+    CROSS_COMPILE=${HOST_PREFIX} \
+    SKIP_IDCHECK=1 \
+    KERNEL_PATH=${STAGING_KERNEL_DIR} \
+    KERNEL_INC=${STAGING_KERNEL_DIR} \
+    KERNEL_USR_INC=${STAGING_INCDIR} \
+    ALSA_INCPATH=${STAGING_INCDIR} \
+    ALSA_LIBPATH=${STAGING_LIBDIR} \
+    PLATFORM=${MACHINE} \
+    RANLIB=${RANLIB} \
+    DESTDIR=${D} \
+    CC='${CC}' \
+    KERNEL_CC='${KERNEL_CC}' \
+"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+FILES_${PN}-dbg += " \
+    ${LTPROOT}/.debug \
+    ${LTPROOT}/bin/.debug \
+    ${LTPROOT}/runtest/.debug \
+    ${LTPROOT}/testcases/bin/.debug \
+    ${LTPROOT}/testcases/bin/*/bin/.debug \
+    ${LTPROOT}/testcases/bin/*/test/.debug \
+    ${LTPROOT}/testcases/bin/ddt/.debug \
+    ${LTPROOT}/testcases/bin/ddt/*/bin/.debug \
+    ${LTPROOT}/testcases/bin/ddt/*/test/.debug \
+    ${LTPROOT}/testcases/realtime/*/*/.debug \
+"
+
+FILES_${PN}-staticdev += "${LTPROOT}/lib"
+FILES_${PN} += "${LTPROOT}/*"
+
+KERNEL_MODULES_META_PACKAGE = "${PN}"
+
+kmoddir = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/ddt"
+
+# ltp doesn't regenerate ffsb-6.0-rc2 configure and hardcode configure call.
+# we explicitly force regeneration of that directory and pass configure options.
+do_configure_append() {
+    (cd utils/ffsb-6.0-rc2; autoreconf -fvi; ./configure ${CONFIGUREOPTS})
+}
+
+# The makefiles make excessive use of make -C and several include testcases.mk
+# which triggers a build of the syscall header. To reproduce, build ltp,
+# then delete the header, then "make -j XX" and watch regen.sh run multiple
+# times. Its easier to generate this once here instead.
+do_compile_prepend () {
+    ( make -C ${B}/testcases/kernel include/linux_syscall_numbers.h )
+}
+
+do_compile_append () {
+    unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+    oe_runmake modules
+}
+
+do_install() {
+    oe_runmake install
+    install -d ${D}${datadir}
+    install -d ${D}${kmoddir}
+    mv ${D}${LTPROOT}/testcases/bin/ddt/*.ko ${D}${kmoddir}
+}
+
+# do_make_scripts should be a separate task for the lock to work
+addtask make_scripts before do_compile
+do_make_scripts[lockfiles] = "${TMPDIR}/kernel-scripts.lock"
+do_make_scripts[deptask] = "do_populate_sysroot"
+
+# http://errors.yoctoproject.org/Errors/Details/56327/
+PNBLACKLIST[ltp-ddt] ?= "BROKEN: fails since last autotools.bbclass changes"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ltrace-fix-gcc-5-logical-not-parentheses.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ltrace-fix-gcc-5-logical-not-parentheses.patch
new file mode 100644
index 0000000..681c43d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ltrace-fix-gcc-5-logical-not-parentheses.patch
@@ -0,0 +1,38 @@
+From 876fe5680d77800426f8c4c5680a235732d722e6 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Mon, 24 Aug 2015 17:37:54 +0800
+Subject: [PATCH] ltrace: fix gcc 5 logical not parentheses
+
+Upstream-Status: Pending
+
+Build ltrace with gcc 5.2, it fails with:
+
+error: logical not is only applied to the left hand side of comparison
+[-Werror=logical-not-parentheses]
+   if (!need_data(data, offset, SIZE / 8) < 0)  \
+                                             ^
+
+Function need_data just return 0 on success and -1 if fail. So it is ok
+to just test if (need_data(data, offset, SIZE / 8) < 0).
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ ltrace-elf.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ltrace-elf.c b/ltrace-elf.c
+index c571d2a..7fe830f 100644
+--- a/ltrace-elf.c
++++ b/ltrace-elf.c
+@@ -218,7 +218,7 @@ need_data(Elf_Data *data, GElf_Xword offset, GElf_Xword size)
+ 	int								\
+ 	NAME(Elf_Data *data, GElf_Xword offset, uint##SIZE##_t *retp)	\
+ 	{								\
+-		if (!need_data(data, offset, SIZE / 8) < 0)		\
++		if (need_data(data, offset, SIZE / 8) < 0)		\
+ 			return -1;					\
+ 									\
+ 		if (data->d_buf == NULL) /* NODATA section */ {		\
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/configure-allow-to-disable-selinux-support.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/configure-allow-to-disable-selinux-support.patch
new file mode 100644
index 0000000..4f89d8f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/configure-allow-to-disable-selinux-support.patch
@@ -0,0 +1,36 @@
+From 887a403e38f590ebf1d04ce600d94cb7a351744c Mon Sep 17 00:00:00 2001
+From: Wenzong Fan <wenzong.fan@windriver.com>
+Date: Mon, 1 Dec 2014 00:57:42 -0500
+Subject: [PATCH] ltrace: allow to enable/disable selinux support
+
+Upstream-Status: Pending
+
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+---
+ configure.ac |   10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 6fe5e3b..189885a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -125,8 +125,14 @@ AC_SUBST(libstdcxx_LIBS)
+ 
+ 
+ dnl Check security_get_boolean_active availability.
+-AC_CHECK_HEADERS(selinux/selinux.h)
+-AC_CHECK_LIB(selinux, security_get_boolean_active)
++AC_ARG_ENABLE([selinux],
++    AS_HELP_STRING([--enable-selinux],[enable SELinux support [default=auto]]),
++    [], [enable_selinux=auto])
++
++if test x$enable_selinux != xno; then
++    AC_CHECK_HEADERS(selinux/selinux.h)
++    AC_CHECK_LIB(selinux, security_get_boolean_active)
++fi
+ 
+ dnl Whether (and which) elfutils libdw.so to use for unwinding.
+ AC_ARG_WITH(elfutils,
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/ltrace-0.7.2-unused-typedef.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/ltrace-0.7.2-unused-typedef.patch
new file mode 100644
index 0000000..8f3c0ec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/ltrace-0.7.2-unused-typedef.patch
@@ -0,0 +1,49 @@
+diff --git a/value.c b/value.c
+index d18db17..b98298e 100644
+--- a/value.c
++++ b/value.c
+@@ -1,6 +1,6 @@
+ /*
+  * This file is part of ltrace.
+- * Copyright (C) 2011,2012 Petr Machata, Red Hat Inc.
++ * Copyright (C) 2011,2012,2013 Petr Machata, Red Hat Inc.
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License as
+@@ -282,9 +282,9 @@ value_init_deref(struct value *ret_val, struct value *valp)
+ 	if (value_extract_word(valp, &l, NULL) < 0)
+ 		return -1;
+ 
+-	/* We need "long" to be long enough to hold platform
++	/* We need "long" to be long enough to hold target
+ 	 * pointers.  */
+-	typedef char assert__long_enough_long[-(sizeof(l) < sizeof(void *))];
++	assert(sizeof(l) >= sizeof(arch_addr_t));
+ 
+ 	value_common_init(ret_val, valp->inferior, valp,
+ 			  valp->type->u.ptr_info.info, 0);
+diff --git a/lens_default.c b/lens_default.c
+index ed3d0e1..5d00814 100644
+--- a/lens_default.c
++++ b/lens_default.c
+@@ -1,6 +1,6 @@
+ /*
+  * This file is part of ltrace.
+- * Copyright (C) 2011,2012 Petr Machata, Red Hat Inc.
++ * Copyright (C) 2011,2012,2013 Petr Machata, Red Hat Inc.
+  * Copyright (C) 1998,2004,2007,2008,2009 Juan Cespedes
+  * Copyright (C) 2006 Ian Wienand
+  * Copyright (C) 2006 Steve Fink
+@@ -342,9 +342,9 @@ format_array(FILE *stream, struct value *value, struct value_dict *arguments,
+ 	     struct expr_node *length, size_t maxlen, int before,
+ 	     const char *open, const char *close, const char *delim)
+ {
+-	/* We need "long" to be long enough to cover the whole address
+-	 * space.  */
+-	typedef char assert__long_enough_long[-(sizeof(long) < sizeof(void *))];
++	/* We need "long" to be long enough to cover the whole target
++	 * address space.  */
++	assert(sizeof(long) >= sizeof(arch_addr_t));
+ 	long l;
+ 	if (expr_eval_word(length, value, arguments, &l) < 0)
+ 		return -1;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
new file mode 100644
index 0000000..bc4e271
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
@@ -0,0 +1,33 @@
+SUMMARY = "ltrace intercepts and records dynamic library calls"
+
+DESCRIPTION = "ltrace intercepts and records dynamic library calls \
+which are called by an executed process and the signals received by that process. \
+It can also intercept and print the system calls executed by the program.\
+"
+HOMEPAGE = "http://ltrace.org/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+PE = "1"
+PV = "7.3+git${SRCPV}"
+SRCREV = "37ecc41b58be3dbdd79592a76e331b5b371e4f81"
+
+DEPENDS = "elfutils"
+RDEPENDS_${PN} = "elfutils"
+SRC_URI = "git://anonscm.debian.org/collab-maint/ltrace.git;branch=ltrace-0.7 \
+           file://ltrace-0.7.2-unused-typedef.patch \
+           file://configure-allow-to-disable-selinux-support.patch \
+           file://0001-ltrace-fix-gcc-5-logical-not-parentheses.patch \
+          "
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)}"
+PACKAGECONFIG[unwind] = "--with-libunwind,--without-libunwind,libunwind"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux,libselinux"
+
+do_configure_prepend () {
+	( cd ${S}; ./autogen.sh )
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua/lua.pc.in b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua/lua.pc.in
new file mode 100644
index 0000000..c27e86e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua/lua.pc.in
@@ -0,0 +1,10 @@
+prefix=/usr
+libdir=${prefix}/lib
+includedir=${prefix}/include
+
+Name: Lua
+Description: Lua language engine
+Version: @VERSION@
+Requires:
+Libs: -L${libdir} -llua -lm -ldl
+Cflags: -I${includedir}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua/run-ptest b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua/run-ptest
new file mode 100644
index 0000000..8e085e1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua/run-ptest
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+cd test
+lua -e"_U=true" all.lua > lua-test.tmp
+
+echo "--- test output ---"
+cat lua-test.tmp
+echo ""
+echo ""
+echo "--- ptest result ---"
+
+grep "final OK \!\!\!" lua-test.tmp > /dev/null
+if [ $? -eq 0 ]; then
+   echo "PASS: lua"
+else
+   echo "FAIL: lua"
+fi
+
+rm -f lua-test.tmp
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua/uclibc-pthread.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua/uclibc-pthread.patch
new file mode 100644
index 0000000..f4cdc5d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua/uclibc-pthread.patch
@@ -0,0 +1,13 @@
+Index: lua-5.1.4/src/Makefile                                                         
+===================================================================
+--- a/src/Makefile.orig	2013-10-22 22:17:19.929103523 -0400
++++ a/src/Makefile	2013-10-22 22:18:27.992104545 -0400
+@@ -9,7 +9,7 @@
+ CC= gcc
+ CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS)
+ LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS)
+-LIBS= -lm $(SYSLIBS) $(MYLIBS)
++LIBS= -lm -lpthread $(SYSLIBS) $(MYLIBS)
+ 
+ AR= ar rcu
+ RANLIB= ranlib
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.2.bb
new file mode 100644
index 0000000..07a1a43
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.2.bb
@@ -0,0 +1,61 @@
+DESCRIPTION = "Lua is a powerful light-weight programming language designed \
+for extending applications."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://doc/readme.html;beginline=318;endline=352;md5=68fc2aa2b751a37ff265524ddf026d7f"
+HOMEPAGE = "http://www.lua.org/"
+
+PR = "r0"
+
+DEPENDS = "readline"
+SRC_URI = "http://www.lua.org/ftp/lua-${PV}.tar.gz;name=tarballsrc \
+           file://lua.pc.in \
+           "
+SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', \
+           'http://www.lua.org/tests/lua-${PV}-tests.tar.gz;name=tarballtest \
+            file://run-ptest \
+           ', '', d)}"
+
+SRC_URI[tarballsrc.md5sum] = "33278c2ab5ee3c1a875be8d55c1ca2a1"
+SRC_URI[tarballsrc.sha256sum] = "c740c7bb23a936944e1cc63b7c3c5351a8976d7867c5252c8854f7b2af9da68f"
+SRC_URI[tarballtest.md5sum] = "a2b7ab1b8ff82a0145376e233ef30a4a"
+SRC_URI[tarballtest.sha256sum] = "56909863a3713dee3709b3dbd0c868237e4f5c9ea1744f5bf0ba8bafa6c4ed32"
+
+inherit pkgconfig binconfig ptest
+
+UCLIBC_PATCHES += "file://uclibc-pthread.patch"
+SRC_URI_append_libc-uclibc = "${UCLIBC_PATCHES}"
+
+TARGET_CC_ARCH += " -fPIC ${LDFLAGS}"
+EXTRA_OEMAKE = "'CC=${CC} -fPIC' 'MYCFLAGS=${CFLAGS} -DLUA_USE_LINUX -fPIC' MYLDFLAGS='${LDFLAGS}'"
+
+do_configure_prepend() {
+    sed -i -e s:/usr/local:${prefix}:g src/luaconf.h
+}
+
+do_compile () {
+    oe_runmake linux
+}
+
+do_install () {
+    oe_runmake \
+        'INSTALL_TOP=${D}${prefix}' \
+        'INSTALL_BIN=${D}${bindir}' \
+        'INSTALL_INC=${D}${includedir}/' \
+        'INSTALL_MAN=${D}${mandir}/man1' \
+        'INSTALL_SHARE=${D}${datadir}/lua' \
+        'INSTALL_LIB=${D}${libdir}' \
+        'INSTALL_CMOD=${D}${libdir}/lua/5.3' \
+        install
+    install -d ${D}${libdir}/pkgconfig
+
+    sed -e s/@VERSION@/${PV}/ ${WORKDIR}/lua.pc.in > ${WORKDIR}/lua.pc
+    install -m 0644 ${WORKDIR}/lua.pc ${D}${libdir}/pkgconfig/
+    rmdir ${D}${datadir}/lua/5.3
+    rmdir ${D}${datadir}/lua
+}
+
+do_install_ptest () {
+        cp -R --no-dereference --preserve=mode,links -v ${WORKDIR}/lua-${PV}-tests ${D}${PTEST_PATH}/test
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit/0001-Do-not-strip-automatically-this-leaves-the-stripping.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit/0001-Do-not-strip-automatically-this-leaves-the-stripping.patch
new file mode 100644
index 0000000..f123b3f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit/0001-Do-not-strip-automatically-this-leaves-the-stripping.patch
@@ -0,0 +1,33 @@
+From 528009f5ca0685c95ef27f6c8957160499c0576a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 10 May 2013 10:42:45 -0700
+Subject: [PATCH] Do not strip automatically, this leaves the stripping
+ busines to OE
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/Makefile |    2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 278324a..5ecd6d5 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -665,12 +665,10 @@ $(LUAJIT_A): $(LJVMCORE_O)
+ $(LUAJIT_SO): $(LJVMCORE_O)
+ 	$(E) "DYNLINK   $@"
+ 	$(Q)$(TARGET_LD) $(TARGET_ASHLDFLAGS) -o $@ $(LJVMCORE_DYNO) $(TARGET_ALIBS)
+-	$(Q)$(TARGET_STRIP) $@
+ 
+ $(LUAJIT_T): $(TARGET_O) $(LUAJIT_O) $(TARGET_DEP)
+ 	$(E) "LINK      $@"
+ 	$(Q)$(TARGET_LD) $(TARGET_ALDFLAGS) -o $@ $(LUAJIT_O) $(TARGET_O) $(TARGET_ALIBS)
+-	$(Q)$(TARGET_STRIP) $@
+ 	$(E) "OK        Successfully built LuaJIT"
+ 
+ ##############################################################################
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.4.bb
new file mode 100644
index 0000000..a0252aa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.4.bb
@@ -0,0 +1,63 @@
+SUMMARY = "Just-In-Time Compiler for Lua"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=3992f1fbae3b8b061f9056b7fcda8cc6"
+HOMEPAGE = "http://luajit.org"
+
+SRC_URI = "http://luajit.org/download/LuaJIT-${PV}.tar.gz \
+           file://0001-Do-not-strip-automatically-this-leaves-the-stripping.patch \
+"
+SRC_URI[md5sum] = "dd9c38307f2223a504cbfb96e477eca0"
+SRC_URI[sha256sum] = "620fa4eb12375021bef6e4f237cbd2dd5d49e56beb414bee052c746beef1807d"
+
+S = "${WORKDIR}/LuaJIT-${PV}"
+
+inherit pkgconfig binconfig
+
+BBCLASSEXTEND = "native"
+
+do_configure_prepend() {
+    sed -i 's:PREFIX= /usr/local:PREFIX= ${prefix}:g' ${S}/Makefile
+    sed -i 's:MULTILIB= lib:MULTILIB= ${baselib}:g' ${S}/Makefile
+}
+
+# http://luajit.org/install.html#cross
+# Host luajit needs to be compiled with the same pointer size
+# If you want to cross-compile to any 32 bit target on an x64 OS,
+# you need to install the multilib development package (e.g.
+# libc6-dev-i386 on Debian/Ubuntu) and build a 32 bit host part
+# (HOST_CC="gcc -m32").
+BUILD_CC_ARCH_append_powerpc = ' -m32'
+BUILD_CC_ARCH_append_x86 = ' -m32'
+BUILD_CC_ARCH_append_arm = ' -m32'
+
+EXTRA_OEMAKE_append_class-target = '\
+    CROSS=${HOST_PREFIX} \
+    HOST_CC="${BUILD_CC} ${BUILD_CC_ARCH}" \
+    TARGET_CFLAGS="${TOOLCHAIN_OPTIONS} ${TARGET_CC_ARCH}" \
+    TARGET_LDFLAGS="${TOOLCHAIN_OPTIONS}" \
+    TARGET_SHLDFLAGS="${TOOLCHAIN_OPTIONS}" \
+'
+
+do_compile () {
+    oe_runmake
+}
+
+do_install () {
+    oe_runmake 'DESTDIR=${D}' install
+    rmdir ${D}${datadir}/lua/5.* \
+          ${D}${datadir}/lua \
+          ${D}${libdir}/lua/5.* \
+          ${D}${libdir}/lua
+}
+
+PACKAGES += 'luajit-common'
+
+FILES_${PN} += "${libdir}/libluajit-5.1.so.2 \
+    ${libdir}/libluajit-5.1.so.${PV} \
+"
+FILES_${PN}-dev += "${libdir}/libluajit-5.1.a \
+    ${libdir}/libluajit-5.1.so \
+    ${libdir}/pkgconfig/luajit.pc \
+"
+FILES_luajit-common = "${datadir}/${BPN}-${PV}"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/mcpp/files/ice-mcpp.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/mcpp/files/ice-mcpp.patch
new file mode 100644
index 0000000..8103cf0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/mcpp/files/ice-mcpp.patch
@@ -0,0 +1,208 @@
+diff -r -c -N ../mcpp-2.7.2-old/noconfig/vc2010.dif ./noconfig/vc2010.dif
+*** ../mcpp-2.7.2-old/noconfig/vc2010.dif	Wed Dec 31 20:30:00 1969
+--- ./noconfig/vc2010.dif	Fri May 14 12:47:22 2010
+***************
+*** 0 ****
+--- 1,67 ----
++ *** noconfig.H	Thu Sep 25 15:34:56 2008
++ --- noconfig.H.vc2005	Thu Sep 25 17:23:49 2008
++ ***************
++ *** 15,21 ****
++    */
++   
++   /* Define target operating-system.  */
++ ! #define SYSTEM              SYS_FREEBSD
++   
++   /* Define target compiler.          */
++   #ifndef COMPILER
++ --- 15,21 ----
++    */
++   
++   /* Define target operating-system.  */
++ ! #define SYSTEM              SYS_WIN32
++   
++   /* Define target compiler.          */
++   #ifndef COMPILER
++ ***************
++ *** 26,36 ****
++   #define HOST_SYSTEM         SYSTEM
++   
++   /* Define host compiler.            */
++ ! #define HOST_COMPILER       GNUC
++   
++   /* Version message.                 */
++   /* "MCPP V.2.* (200y/mm) compiled by " precedes VERSION_MSG */
++ ! #define VERSION_MSG         "GCC 3.4"
++   #if     0
++       "LCC-Win32 2006-03"
++       "Visual C 2005"
++ --- 26,36 ----
++   #define HOST_SYSTEM         SYSTEM
++   
++   /* Define host compiler.            */
++ ! #define HOST_COMPILER       MSC
++   
++   /* Version message.                 */
++   /* "MCPP V.2.* (200y/mm) compiled by " precedes VERSION_MSG */
++ ! #define VERSION_MSG         "Visual C 2010"
++   #if     0
++       "LCC-Win32 2006-03"
++       "Visual C 2005"
++ ***************
++ *** 212,221 ****
++   #define ONE_PASS            TRUE
++   #endif
++   #define COMPILER_EXT        "_MSC_VER"
++ ! #define COMPILER_EXT_VAL    "1500"      /* VC 6.0: "1200"   */
++       /* VC 2002: "1300", VC 2003: "1310", VC 2005: "1400", VC 2008: "1500"   */
++   #define COMPILER_EXT2       "_MSC_FULL_VER"
++ ! #define COMPILER_EXT2_VAL   "150021022" /* VC 6.0: "12008804"       */
++       /* VC 2002: "13009466", VC 2003: "13103077", VC 2005: "140050320"       */
++       /* VC 2008: "150021022" */
++   #define COMPILER_SP1        "_MSC_EXTENSIONS"
++ --- 212,221 ----
++   #define ONE_PASS            TRUE
++   #endif
++   #define COMPILER_EXT        "_MSC_VER"
++ ! #define COMPILER_EXT_VAL    "1600"      /* VC 6.0: "1200"   */
++       /* VC 2002: "1300", VC 2003: "1310", VC 2005: "1400", VC 2008: "1500"   */
++   #define COMPILER_EXT2       "_MSC_FULL_VER"
++ ! #define COMPILER_EXT2_VAL   "160030319" /* VC 6.0: "12008804"       */
++       /* VC 2002: "13009466", VC 2003: "13103077", VC 2005: "140050320"       */
++       /* VC 2008: "150021022" */
++   #define COMPILER_SP1        "_MSC_EXTENSIONS"
+diff -r -c -N ../mcpp-2.7.2-old/src/internal.H ./src/internal.H
+*** ../mcpp-2.7.2-old/src/internal.H	Wed Aug 27 10:31:16 2008
+--- ./src/internal.H	Fri May 14 12:40:56 2010
+***************
+*** 390,395 ****
+--- 390,397 ----
+  extern char     identifier[];       /* Lastly scanned name          */
+  extern IFINFO   ifstack[];          /* Information of #if nesting   */
+  extern char     work_buf[];
++ extern FILEINFO * sh_file;
++ extern int      sh_line;
+          /* Temporary buffer for directive line and macro expansion  */
+  
+  /* main.c   */
+***************
+*** 557,562 ****
+  #endif
+  #endif
+  
+! #if HOST_HAVE_STPCPY
+  extern char *   stpcpy( char * dest, const char * src);
+  #endif
+--- 559,564 ----
+  #endif
+  #endif
+  
+! #if HOST_HAVE_STPCPY && !defined(stpcpy)
+  extern char *   stpcpy( char * dest, const char * src);
+  #endif
+diff -r -c -N ../mcpp-2.7.2-old/src/main.c ./src/main.c
+*** ../mcpp-2.7.2-old/src/main.c	Wed Nov  5 05:04:46 2008
+--- ./src/main.c	Fri May 14 12:40:56 2010
+***************
+*** 326,331 ****
+--- 326,333 ----
+              = FALSE;
+      option_flags.trig = TRIGRAPHS_INIT;
+      option_flags.dig = DIGRAPHS_INIT;
++     sh_file = NULL;
++     sh_line = 0;
+  }
+  
+  int     mcpp_lib_main
+diff -r -c -N ../mcpp-2.7.2-old/src/support.c ./src/support.c
+*** ../mcpp-2.7.2-old/src/support.c	Tue Jun 10 06:02:33 2008
+--- ./src/support.c	Fri May 14 12:40:56 2010
+***************
+*** 188,194 ****
+      size_t      length
+  )
+  {
+!     if (mem_buf_p->bytes_avail < length) {  /* Need to allocate more memory */
+          size_t size = MAX( BUF_INCR_SIZE, length);
+  
+          if (mem_buf_p->buffer == NULL) {            /* 1st append   */
+--- 188,194 ----
+      size_t      length
+  )
+  {
+!     if (mem_buf_p->bytes_avail < length + 1) {  /* Need to allocate more memory */
+          size_t size = MAX( BUF_INCR_SIZE, length);
+  
+          if (mem_buf_p->buffer == NULL) {            /* 1st append   */
+***************
+*** 1722,1727 ****
+--- 1722,1729 ----
+                      sp -= 2;
+                      while (*sp != '\n')     /* Until end of line    */
+                          mcpp_fputc( *sp++, OUT);
++                     mcpp_fputc( '\n', OUT);
++                     wrong_line = TRUE;
+                  }
+                  goto  end_line;
+              default:                        /* Not a comment        */
+diff -r -c -N ../mcpp-2.7.2-old/src/system.c ./src/system.c
+*** ../mcpp-2.7.2-old/src/system.c      2008-11-26 10:53:51.000000000 +0100
+--- ./src/system.c      2011-02-21 16:18:05.678058106 +0100
+***************
+*** 3534,3539 ****
+--- 3534,3565 ----
+      FILEINFO *      file;
+      const char *    too_many_include_nest =
+              "More than %.0s%ld nesting of #include";    /* _F_ _W4_ */
++             
++     //
++     // When encoding is UTF-8, skip BOM if present.
++     //
++     if(mbchar == UTF8 && fp != NULL && ftell(fp) == 0)
++     {
++         const unsigned char UTF8_BOM[3] = {0xEF, 0xBB, 0xBF};
++         unsigned char FILE_HEAD[3] = {0, 0, 0};
++         int i;
++         for(i = 0; i < 3; ++i)
++         {
++             FILE_HEAD[i] = getc(fp);
++             if(FILE_HEAD[i] != UTF8_BOM[i])
++             {
++                 if(FILE_HEAD[i] == (unsigned char)EOF)
++                 {
++                     i--;
++                 }
++                 for(; i >= 0; --i)
++                 {
++                     ungetc(FILE_HEAD[i], fp);
++                 }
++                 break;
++             }
++         }
++     }
+  
+      filename = set_fname( filename);    /* Search or append to fnamelist[]  */
+      fullname = set_fname( fullname);    /* Search or append to fnamelist[]  */
+***************
+*** 3858,3863 ****
+--- 3884,3892 ----
+  }
+  #endif
+  
++ FILEINFO*       sh_file;
++ int             sh_line;
++ 
+  void    sharp(
+      FILEINFO *  sharp_file,
+      int         flag        /* Flag to append to the line for GCC   */
+***************
+*** 3868,3875 ****
+   * else (i.e. 'sharp_file' is NULL) 'infile'.
+   */
+  {
+-     static FILEINFO *   sh_file;
+-     static int  sh_line;
+      FILEINFO *  file;
+      int         line;
+  
+--- 3897,3902 ----
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/mcpp/mcpp_2.7.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/mcpp/mcpp_2.7.2.bb
new file mode 100644
index 0000000..a7163a3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/mcpp/mcpp_2.7.2.bb
@@ -0,0 +1,16 @@
+SUMMARY = "MCPP is a portable C/C++ preprocessor"
+HOMEPAGE = "http://mcpp.sourceforge.net/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5ca370b75ec890321888a00cea9bc1d5"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
+           file://ice-mcpp.patch "
+SRC_URI[md5sum] = "512de48c87ab023a69250edc7a0c7b05"
+SRC_URI[sha256sum] = "3b9b4421888519876c4fc68ade324a3bbd81ceeb7092ecdbbc2055099fcb8864"
+
+inherit autotools
+
+EXTRA_OECONF = " --enable-mcpplib "
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/memstat/memstat_1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/memstat/memstat_1.0.bb
new file mode 100644
index 0000000..8252153
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/memstat/memstat_1.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Display virtual memory allocation"
+DESCRIPTION = "Lists all the processes, executables, and shared libraries \
+that are using up virtual memory. It's helpful to see how the shared memory \
+is used and which 'old' libs are loaded. \
+"
+HOMEPAGE = "http://memstattool.sourceforge.net/"
+SECTION = "devtool"
+
+LICENSE = "GPLv2"
+
+S = "${WORKDIR}/memstattool"
+
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=87be186443b1ac2cfa466f475e1ee0cb"
+
+SRC_URI = "http://sourceforge.net/projects/memstattool/files/memstat_${PV}.tar.gz \
+          "
+
+SRC_URI[md5sum] = "2c3acc0c62b2a18f6601b84e54aa7462"
+SRC_URI[sha256sum] = "245d5fc7fb87bcfd14486cd34917cae2856e799559ac568434af12c4852bce94"
+
+do_install_append(){
+    install -d ${D}${bindir}
+    install -m 0755 memstat ${D}${bindir}
+    install -d ${D}${sysconfdir}
+    install -m 0755 memstat.conf ${D}${sysconfdir}
+    install -d ${D}${mandir}/man1
+    install -m 0644 memstat.1 ${D}${mandir}/man1
+    install -d ${D}${docdir}/${BPN}
+    install -m 0644 memstat-tutorial.txt ${D}${docdir}/${BPN}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial-native_3.4.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial-native_3.4.1.bb
new file mode 100644
index 0000000..303a032
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial-native_3.4.1.bb
@@ -0,0 +1,26 @@
+SUMMARY = "The Mercurial distributed SCM"
+HOMEPAGE = "http://mercurial.selenic.com/"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "python-native"
+
+SRC_URI = "http://mercurial.selenic.com/release/mercurial-${PV}.tar.gz"
+SRC_URI[md5sum] = "65783a60aefb46a11296b587e9403537"
+SRC_URI[sha256sum] = "7a8acf7329beda38ceea29c689212574d9a6bfffe24cf565015ea0066f7cee3f"
+
+S = "${WORKDIR}/mercurial-${PV}"
+
+inherit native
+
+EXTRA_OEMAKE = "STAGING_LIBDIR=${STAGING_LIBDIR} STAGING_INCDIR=${STAGING_INCDIR} \
+    BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} PREFIX=${prefix}"
+
+do_configure_append () {
+    sed -i -e 's:PYTHON=python:PYTHON=${STAGING_BINDIR_NATIVE}/python-native/python:g' ${S}/Makefile
+}
+
+do_install () {
+    oe_runmake -e install-bin DESTDIR=${D} PREFIX=${prefix}
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/mpich/mpich_3.1.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/mpich/mpich_3.1.1.bb
new file mode 100644
index 0000000..7d00906
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/mpich/mpich_3.1.1.bb
@@ -0,0 +1,39 @@
+SUMMARY = "Message Passing Interface (MPI) implementation"
+HOMEPAGE = "http://www.mpich.org/"
+SECTION = "devel"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=2106f0435056f3dd9349747a766e5816"
+
+SRC_URI = " \
+	http://www.mpich.org/static/downloads/${PV}/mpich-${PV}.tar.gz \
+"
+
+SRC_URI[md5sum] = "40dc408b1e03cc36d80209baaa2d32b7"
+SRC_URI[sha256sum] = "455ccfaf4ec724d2cf5d8bff1f3d26a958ad196121e7ea26504fd3018757652d"
+
+CACHED_CONFIGUREVARS += "BASH_SHELL=${base_bindir}/bash"
+
+RDEPENDS_${PN} += "bash perl libxml2"
+S = "${WORKDIR}/${BP}"
+
+EXTRA_OECONF = "--enable-debuginfo \
+                --enable-fast \
+                --enable-shared  \
+                --with-pm=gforker  \
+		--disable-rpath \
+                --disable-f77 \
+                --disable-fc \
+                --disable-fortran \
+                --disable-cxx"
+
+inherit autotools-brokensep gettext
+
+do_configure_prepend() {
+    autoreconf --verbose --install --force -I . -I confdb/ -I maint/
+    oe_runconf
+    exit
+}
+
+# http://errors.yoctoproject.org/Errors/Details/35146/
+PNBLACKLIST[mpich] ?= "BROKEN: QA Issue: libmpi.la failed sanity test (workdir), QA Issue: mpich.pc failed sanity test (tmpdir)"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/msr-tools/msr-tools_1.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/msr-tools/msr-tools_1.3.bb
new file mode 100644
index 0000000..e4701af
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/msr-tools/msr-tools_1.3.bb
@@ -0,0 +1,21 @@
+SUMMARY = "utilies to read and write Intel model-specific registers"
+HOMEPAGE = "https://01.org/msr-tools"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://Makefile;beginline=1;endline=11;md5=678a3928c856042424c734f4a7586e65"
+SECTION = "devel"
+
+SRC_URI = "https://01.org/sites/default/files/downloads/msr-tools/msr-tools-${PV}.zip"
+SRC_URI[md5sum] = "67d18527f64fd707c9b7a79f13d19fd5"
+SRC_URI[sha256sum] = "f9457b5340f5f274da4239a461f0db6b514142b40461559d9c6150f05aab1d1e"
+
+S = "${WORKDIR}/msr-tools-master"
+
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_install() {
+    install -d ${D}${sbindir}
+    install -m 0755 rdmsr ${D}${sbindir}
+    install -m 0755 wrmsr ${D}${sbindir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/ninja/ninja-native_1.6.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ninja/ninja-native_1.6.0.bb
new file mode 100644
index 0000000..c00710a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/ninja/ninja-native_1.6.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Ninja is a small build system with a focus on speed."
+HOMEPAGE = "http://martine.github.com/ninja/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a81586a64ad4e476c791cda7e2f2c52e"
+
+DEPENDS = "re2c-native"
+
+inherit native
+
+SRCREV="484c16336f19bd8970bb6e75322d61b92a229899"
+
+SRC_URI = "git://github.com/martine/ninja.git;branch=release"
+
+S="${WORKDIR}/git"
+
+do_configure[noexec] = "1"
+
+do_compile() {
+    python ${S}/configure.py --bootstrap
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 ${S}/ninja ${D}${bindir}/
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/no-registry.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/no-registry.patch
new file mode 100644
index 0000000..ed24738
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/no-registry.patch
@@ -0,0 +1,59 @@
+Bugfix for --no-registry in nodejs-v0.12.2
+
+diff -u -r node-v0.12.2_def/deps/npm/lib/cache/caching-client.js node-v0.12.2/deps/npm/lib/cache/caching-client.js
+--- node-v0.12.2_def/deps/npm/lib/cache/caching-client.js	2015-04-01 01:13:01.000000000 +0300
++++ node-v0.12.2/deps/npm/lib/cache/caching-client.js	2015-05-18 00:47:10.738599686 +0300
+@@ -67,6 +67,22 @@
+   var cacheBase = cacheFile(npm.config.get("cache"))(uri)
+   var cachePath = path.join(cacheBase, ".cache.json")
+ 
++  if (parsed.host === "noregistry") (function() {
++    var stat = null
++    var file = npm.config.get("cache") + parsed.pathname + "/.cache.json"
++    try {
++      stat = fs.statSync(cachePath)
++    } catch (ex) {}
++    if (!stat) try {
++      stat = fs.statSync(file) 
++      cachePath = file
++    } catch (ex) {
++      stat = "Registry not defined and registry files not found: \"" +
++             cachePath + "\", \"" + file + "\"."
++      throw new Error(stat)
++    }
++  })()
++
+   // If the GET is part of a write operation (PUT or DELETE), then
+   // skip past the cache entirely, but still save the results.
+   if (uri.match(/\?write=true$/)) {
+@@ -83,12 +99,17 @@
+         }
+         catch (ex) {
+           data = null
++          if (parsed.host === "noregistry")
++            throw new Error("File \"" + cachePath+"\"" + " corrupted.")
+         }
+ 
+         params.stat = stat
+         params.data = data
+ 
+-        get_.call(client, uri, cachePath, params, cb)
++        if (parsed.host === "noregistry")
++          cb(null, data, JSON.stringify(data), { statusCode : 304 })
++        else
++          get_.call(client, uri, cachePath, params, cb)
+       })
+     }
+     else {
+diff -u -r node-v0.12.2_def/deps/npm/lib/utils/map-to-registry.js node-v0.12.2/deps/npm/lib/utils/map-to-registry.js
+--- node-v0.12.2_def/deps/npm/lib/utils/map-to-registry.js	2015-04-01 01:13:01.000000000 +0300
++++ node-v0.12.2/deps/npm/lib/utils/map-to-registry.js	2015-05-18 01:15:10.030569613 +0300
+@@ -45,6 +45,8 @@
+ 
+   log.silly("mapToRegistry", "registry", registry)
+ 
++  if (!registry) return cb(null, "http://noregistry/" + name, {})
++
+   var auth = config.getCredentialsByURI(registry)
+ 
+   // normalize registry URL so resolution doesn't drop a piece of registry URL
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_4.4.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_4.4.3.bb
new file mode 100644
index 0000000..43761ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_4.4.3.bb
@@ -0,0 +1,84 @@
+DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
+HOMEPAGE = "http://nodejs.org"
+LICENSE = "MIT & BSD & Artistic-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=96aa1ac122c41f8c08a0683d4b2126b5"
+
+DEPENDS = "openssl"
+
+COMPATIBLE_MACHINE_armv4 = "(!.*armv4).*"
+COMPATIBLE_MACHINE_armv5 = "(!.*armv5).*"
+COMPATIBLE_MACHINE_mips64 = "(!.*mips64).*"
+
+SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
+    file://no-registry.patch \
+"
+SRC_URI[md5sum] = "74e83c9c512bd99b38a02edd740b4334"
+SRC_URI[sha256sum] = "57499bb0b1b86080459d4066e3c138579a278b2d0b1f5b2f19e66c69b4e8433c"
+
+S = "${WORKDIR}/node-v${PV}"
+
+# v8 errors out if you have set CCACHE
+CCACHE = ""
+
+def map_nodejs_arch(a, d):
+    import re
+
+    if   re.match('i.86$', a): return 'ia32'
+    elif re.match('x86_64$', a): return 'x64'
+    elif re.match('aarch64$', a): return 'arm64'
+    elif re.match('powerpc64$', a): return 'ppc64'
+    elif re.match('powerpc$', a): return 'ppc'
+    return a
+
+ARCHFLAGS_arm = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)}"
+GYP_DEFINES_append_mipsel = " mips_arch_variant='r1' "
+ARCHFLAGS ?= ""
+
+# Node is way too cool to use proper autotools, so we install two wrappers to forcefully inject proper arch cflags to workaround gypi
+do_configure () {
+    export LD="${CXX}"
+    GYP_DEFINES="${GYP_DEFINES}" export GYP_DEFINES
+    # $TARGET_ARCH settings don't match --dest-cpu settings
+   ./configure --prefix=${prefix} --without-snapshot --shared-openssl \
+               --dest-cpu="${@map_nodejs_arch(d.getVar('TARGET_ARCH', True), d)}" \
+               --dest-os=linux \
+               ${ARCHFLAGS}
+}
+
+do_compile () {
+    export LD="${CXX}"
+    oe_runmake BUILDTYPE=Release
+}
+
+do_install () {
+    oe_runmake install DESTDIR=${D}
+}
+
+do_install_append_class-native() {
+    # use node from PATH instead of absolute path to sysroot
+    # node-v0.10.25/tools/install.py is using:
+    # shebang = os.path.join(node_prefix, 'bin/node')
+    # update_shebang(link_path, shebang)
+    # and node_prefix can be very long path to bindir in native sysroot and
+    # when it exceeds 128 character shebang limit it's stripped to incorrect path
+    # and npm fails to execute like in this case with 133 characters show in log.do_install:
+    # updating shebang of /home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/work/x86_64-linux/nodejs-native/0.10.15-r0/image/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/npm to /home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/node
+    # /usr/bin/npm is symlink to /usr/lib/node_modules/npm/bin/npm-cli.js
+    # use sed on npm-cli.js because otherwise symlink is replaced with normal file and
+    # npm-cli.js continues to use old shebang
+    sed "1s^.*^#\!/usr/bin/env node^g" -i ${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js
+}
+
+do_install_append_class-target() {
+    sed "1s^.*^#\!${bindir}/env node^g" -i ${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js
+}
+
+PACKAGES =+ "${PN}-npm"
+FILES_${PN}-npm = "${exec_prefix}/lib/node_modules ${bindir}/npm"
+RDEPENDS_${PN}-npm = "bash python-shell python-datetime python-subprocess python-textutils"
+
+PACKAGES =+ "${PN}-systemtap"
+FILES_${PN}-systemtap = "${datadir}/systemtap"
+
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
new file mode 100644
index 0000000..14e75dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Packages required for a target (on-device) SDK"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PR = "r1"
+
+inherit packagegroup allarch
+
+RPROVIDES_${PN} += "packagegroup-native-sdk"
+RREPLACES_${PN} += "packagegroup-native-sdk"
+RCONFLICTS_${PN} += "packagegroup-native-sdk"
+RDEPENDS_${PN} = "gcc-symlinks g++-symlinks cpp cpp-symlinks \
+                  binutils-symlinks \
+                  perl-modules \
+                  flex flex-dev \
+                  bison \
+                  gawk \
+                  sed \
+                  grep \
+                  autoconf automake \
+                  make \
+                  patch diffstat diffutils \
+                  libstdc++-dev \
+                  libtool libtool-dev \
+                  pkgconfig"
+
+# usefull, but not in oe-core/meta-oe yet: patchutils
+RRECOMMENDS_${PN} = " g77-symlinks gfortran-symlinks"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit-0.5.6/0001-Don-t-call-deprecated-glib-functions-and-use-the-new.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit-0.5.6/0001-Don-t-call-deprecated-glib-functions-and-use-the-new.patch
new file mode 100644
index 0000000..ecf8e74
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit-0.5.6/0001-Don-t-call-deprecated-glib-functions-and-use-the-new.patch
@@ -0,0 +1,166 @@
+From 869e52a9055c72970fed036a1510f676e6ce0824 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 13 Jun 2013 01:24:19 -0700
+Subject: [PATCH] Don't call deprecated glib functions and use the new gthread
+ API.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate[version Unmaintained Upstream]
+---
+ client/pk-console.c                              |    3 ++-
+ client/pk-generate-pack.c                        |    3 ++-
+ client/pk-monitor.c                              |    3 ++-
+ contrib/command-not-found/PackageKit.sh          |    2 +-
+ contrib/command-not-found/pk-command-not-found.c |    4 ++--
+ contrib/debuginfo-install/pk-debuginfo-install.c |    4 ++--
+ src/pk-backend.c                                 |    7 +++++++
+ src/pk-main.c                                    |    4 ++--
+ 10 files changed, 20 insertions(+), 10 deletions(-)
+
+diff --git a/client/pk-console.c b/client/pk-console.c
+index de927e1..2435f27 100644
+--- a/client/pk-console.c
++++ b/client/pk-console.c
+@@ -1264,11 +1264,12 @@ main (int argc, char *argv[])
+ 	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+ 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ 	textdomain (GETTEXT_PACKAGE);
+-
++#if !GLIB_CHECK_VERSION(2,32,0)
+ 	if (! g_thread_supported ())
+ 		g_thread_init (NULL);
+ 	g_type_init ();
+ 	dbus_g_thread_init ();
++#endif
+ 
+ 	/* do stuff on ctrl-c */
+ 	signal (SIGINT, pk_console_sigint_cb);
+diff --git a/client/pk-generate-pack.c b/client/pk-generate-pack.c
+index 0b2b40f..20d7e8d 100644
+--- a/client/pk-generate-pack.c
++++ b/client/pk-generate-pack.c
+@@ -251,12 +251,13 @@ main (int argc, char *argv[])
+ 	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+ 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ 	textdomain (GETTEXT_PACKAGE);
+-
++#if !GLIB_CHECK_VERSION(2,32,0)
+ 	if (! g_thread_supported ())
+ 		g_thread_init (NULL);
+ 
+ 	g_type_init ();
+ 	dbus_g_thread_init ();
++#endif
+ 
+ 	/* do stuff on ctrl-c */
+ 	signal (SIGINT, pk_generate_pack_sigint_cb);
+diff --git a/client/pk-monitor.c b/client/pk-monitor.c
+index f230f7a..d43007f 100644
+--- a/client/pk-monitor.c
++++ b/client/pk-monitor.c
+@@ -285,11 +285,12 @@ main (int argc, char *argv[])
+ 	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+ 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ 	textdomain (GETTEXT_PACKAGE);
+-
++#if !GLIB_CHECK_VERSION(2,32,0)
+ 	if (! g_thread_supported ())
+ 		g_thread_init (NULL);
+ 	g_type_init ();
+ 	dbus_g_thread_init ();
++#endif
+ 
+ 	context = g_option_context_new (NULL);
+ 	/* TRANSLATORS: this is a program that monitors PackageKit */
+diff --git a/contrib/command-not-found/PackageKit.sh b/contrib/command-not-found/PackageKit.sh
+index d08989c..d708fff 100644
+--- a/contrib/command-not-found/PackageKit.sh
++++ b/contrib/command-not-found/PackageKit.sh
+@@ -18,7 +18,7 @@ command_not_found_handle () {
+ 
+ 	# run the command, or just print a warning
+ 	if [ $runcnf -eq 1 ]; then
+-		/home/hughsie/.root/libexec/pk-command-not-found $1
++		/usr/lib/packagekit/pk-command-not-found $1
+ 		retval=$?
+ 	else
+ 		echo "bash: $1: command not found"
+diff --git a/contrib/command-not-found/pk-command-not-found.c b/contrib/command-not-found/pk-command-not-found.c
+index 70679c0..9f81ce4 100644
+--- a/contrib/command-not-found/pk-command-not-found.c
++++ b/contrib/command-not-found/pk-command-not-found.c
+@@ -659,12 +659,12 @@ main (int argc, char *argv[])
+ 	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+ 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ 	textdomain (GETTEXT_PACKAGE);
+-
++#if !GLIB_CHECK_VERSION(2,32,0)
+ 	if (! g_thread_supported ())
+ 		g_thread_init (NULL);
+ 	dbus_g_thread_init ();
+ 	g_type_init ();
+-
++#endif
+ 	context = g_option_context_new (NULL);
+ 	/* TRANSLATORS: tool that gets called when the command is not found */
+ 	g_option_context_set_summary (context, _("PackageKit Command Not Found"));
+diff --git a/contrib/debuginfo-install/pk-debuginfo-install.c b/contrib/debuginfo-install/pk-debuginfo-install.c
+index c12aca5..b0e1e7c 100644
+--- a/contrib/debuginfo-install/pk-debuginfo-install.c
++++ b/contrib/debuginfo-install/pk-debuginfo-install.c
+@@ -532,11 +532,11 @@ main (int argc, char *argv[])
+ 	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+ 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ 	textdomain (GETTEXT_PACKAGE);
+-
++#if !GLIB_CHECK_VERSION(2,32,0)
+ 	if (! g_thread_supported ())
+ 		g_thread_init (NULL);
+ 	g_type_init ();
+-
++#endif
+ 	context = g_option_context_new (NULL);
+ 	/* TRANSLATORS: tool that gets called when the command is not found */
+ 	g_option_context_set_summary (context, _("PackageKit Debuginfo Installer"));
+diff --git a/src/pk-backend.c b/src/pk-backend.c
+index 5216b63..5b83ae4 100644
+--- a/src/pk-backend.c
++++ b/src/pk-backend.c
+@@ -2103,7 +2103,14 @@ pk_backend_thread_create (PkBackend *backend, PkBackendThreadFunc func)
+ 		egg_warning ("already has thread");
+ 		return FALSE;
+ 	}
++#if !GLIB_CHECK_VERSION(2,32,0)
+ 	backend->priv->thread = g_thread_create ((GThreadFunc) func, backend, FALSE, NULL);
++#else
++	backend->priv->thread = g_thread_try_new ("daemon thread", (GThreadFunc) func, backend, NULL);
++	if (backend->priv->thread != NULL) {
++		g_thread_unref(backend->priv->thread);
++	}
++#endif
+ 	if (backend->priv->thread == NULL) {
+ 		egg_warning ("failed to create thread");
+ 		return FALSE;
+diff --git a/src/pk-main.c b/src/pk-main.c
+index 4c758cd..8fa2482 100644
+--- a/src/pk-main.c
++++ b/src/pk-main.c
+@@ -219,12 +219,12 @@ main (int argc, char *argv[])
+ 	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+ 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ 	textdomain (GETTEXT_PACKAGE);
+-
++#if !GLIB_CHECK_VERSION(2,32,0)
+ 	if (! g_thread_supported ())
+ 		g_thread_init (NULL);
+ 	dbus_g_thread_init ();
+ 	g_type_init ();
+-
++#endif
+ 	/* TRANSLATORS: describing the service that is running */
+ 	context = g_option_context_new (_("PackageKit service"));
+ 	g_option_context_add_main_entries (context, options, NULL);
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit-0.5.6/configurefix.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit-0.5.6/configurefix.patch
new file mode 100644
index 0000000..48f9591
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit-0.5.6/configurefix.patch
@@ -0,0 +1,13 @@
+Index: PackageKit-0.6.0/configure.ac
+===================================================================
+--- PackageKit-0.6.0.orig/configure.ac	2010-01-04 16:32:18.000000000 +0000
++++ PackageKit-0.6.0/configure.ac	2010-01-29 11:33:48.000000000 +0000
+@@ -90,7 +90,7 @@
+ 							enable_strict=$default_strict)
+ if test x$enable_strict != xno; then
+ 	if test "$GCC" = "yes"; then
+-		WARNINGFLAGS_CPP="$WARNINGFLAGS_CPP -Werror"
++		:
+ 	fi
+ fi
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit-0.5.6/opkgfixes.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit-0.5.6/opkgfixes.patch
new file mode 100644
index 0000000..5a73a19
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit-0.5.6/opkgfixes.patch
@@ -0,0 +1,422 @@
+Index: PackageKit-0.6.0/backends/opkg/pk-backend-opkg.c
+===================================================================
+--- PackageKit-0.6.0.orig/backends/opkg/pk-backend-opkg.c	2010-01-29 09:39:33.000000000 +0000
++++ PackageKit-0.6.0/backends/opkg/pk-backend-opkg.c	2010-01-29 11:30:51.000000000 +0000
+@@ -29,8 +29,7 @@
+ 
++#include <stdio.h>
+ #include <libopkg/opkg.h>
+ 
+-static opkg_t *opkg;
+-
+ enum {
+ 	SEARCH_NAME,
+ 	SEARCH_DESCRIPTION,
+@@ -62,7 +60,7 @@
+  * check an opkg package for known GUI dependancies
+  */
+ static gboolean
+-opkg_is_gui_pkg (opkg_package_t *pkg)
++opkg_is_gui_pkg (pkg_t *pkg)
+ {
+ 
+   /* TODO: check appropriate tag */
+@@ -84,7 +82,7 @@
+  * check an opkg package to determine if it is a development package
+  */
+ static gboolean
+-opkg_is_devel_pkg (opkg_package_t *pkg)
++opkg_is_devel_pkg (pkg_t *pkg)
+ {
+   if (g_strrstr (pkg->name, "-dev"))
+       return TRUE;
+@@ -105,7 +103,7 @@
+  * returns true if the tag is present
+  */
+ static gboolean 
+-opkg_check_tag (opkg_package_t *pkg, const gchar *tag)
++opkg_check_tag (pkg_t *pkg, const gchar *tag)
+ {
+ 	if (pkg->tags && tag)
+ 		return (g_strrstr (pkg->tags, tag) != NULL);
+@@ -118,7 +116,7 @@
+ {
+ 	switch (err)
+ 	{
+-	case OPKG_NO_ERROR:
++/*	case OPKG_NO_ERROR:
+ 		break;
+ 	case OPKG_PACKAGE_NOT_INSTALLED:
+ 		pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_INSTALLED, NULL);
+@@ -140,7 +138,7 @@
+ 		break;
+ 	case OPKG_PACKAGE_NOT_AVAILABLE:
+ 		pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, NULL);
+-		break;
++		break;*/
+ 	default:
+ 		opkg_unknown_error (backend, err, "Update package");
+ 	}
+@@ -152,7 +150,7 @@
+ static void
+ backend_initialize (PkBackend *backend)
+ {
+-	opkg = opkg_new ();
++	int opkg = opkg_new ();
+ 
+ 	if (!opkg) {
+ 		pk_backend_error_code (backend,
+@@ -162,8 +160,8 @@
+ 	}
+ 
+ #ifdef OPKG_OFFLINE_ROOT
+-	opkg_set_option (opkg, (char *) "offline_root", OPKG_OFFLINE_ROOT);
+-	opkg_re_read_config_files (opkg);
++	opkg_set_option ((char *) "offline_root", OPKG_OFFLINE_ROOT);
++	opkg_re_read_config_files ();
+ #endif
+ 
+ }
+@@ -174,22 +172,22 @@
+ static void
+ backend_destroy (PkBackend *backend)
+ {
+-	opkg_free (opkg);
++	opkg_free ();
+ }
+ 
+ 
+ static void
+-pk_opkg_progress_cb (opkg_t *_opkg, const opkg_progress_data_t *pdata, void *data)
++pk_opkg_progress_cb (const opkg_progress_data_t *pdata, void *data)
+ {
+-	PkBackend *backend = PK_BACKEND (data);
++	PkBackend *backend = (PkBackend*) data;
+ 	if (!backend)
+ 		return;
+ 
+ 	pk_backend_set_percentage (backend, pdata->percentage);
+-	if (pdata->package)
++	if (pdata->pkg)
+ 	{
+ 		gchar *uid;
+-		opkg_package_t *pkg = pdata->package;
++		pkg_t *pkg = pdata->pkg;
+ 		gint status = PK_INFO_ENUM_UNKNOWN;
+ 
+ 		uid = g_strdup_printf ("%s;%s;%s;",
+@@ -225,12 +223,12 @@
+ {
+ 	int ret;
+ 
+-	ret = opkg_update_package_lists (opkg, pk_opkg_progress_cb, backend);
++	ret = opkg_update_package_lists (pk_opkg_progress_cb, backend);
+ 
+ 	if (ret) {
+-		if (ret == OPKG_DOWNLOAD_FAILED)
+-			pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_AVAILABLE, NULL);
+-		else
++//		if (ret == OPKG_DOWNLOAD_FAILED)
++//			pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_AVAILABLE, NULL);
++//		else
+ 			opkg_unknown_error (backend, ret, "Refreshing cache");
+ 	}
+ 	pk_backend_finished (backend);
+@@ -256,7 +254,7 @@
+  */
+ 
+ static void
+-pk_opkg_package_list_cb (opkg_t *_opkg, opkg_package_t *pkg, void *data)
++pk_opkg_package_list_cb (pkg_t *pkg, void *data)
+ {
+ 	SearchParams *params = (SearchParams*) data;
+ 	gchar *uid;
+@@ -298,7 +296,7 @@
+ 	uid = g_strdup_printf ("%s;%s;%s;",
+ 		pkg->name, pkg->version, pkg->architecture);
+ 
+-	if (pkg->installed)
++	if (pkg->state_status == SS_INSTALLED)
+ 		status = PK_INFO_ENUM_INSTALLED;
+ 	else
+ 		status = PK_INFO_ENUM_AVAILABLE;
+@@ -318,10 +316,10 @@
+                 opkg_is_gui_pkg (pkg))
+ 		goto end_handle;
+ 	if (pk_bitfield_contain(filters, PK_FILTER_ENUM_INSTALLED) && 
+-                (!pkg->installed))
++                (pkg->state_status != SS_INSTALLED))
+ 		goto end_handle;
+ 	if (pk_bitfield_contain(filters, PK_FILTER_ENUM_NOT_INSTALLED) && 
+-                (pkg->installed))
++                (pkg->state_status == SS_INSTALLED))
+ 		goto end_handle;
+ 
+ 	pk_backend_package (params->backend, status, uid, pkg->description);
+@@ -338,7 +336,7 @@
+ 
+ 	params = pk_backend_get_pointer (backend, "search-params");
+ 
+-	opkg_list_packages (opkg, pk_opkg_package_list_cb, params);
++	opkg_list_packages (pk_opkg_package_list_cb, params);
+ 
+ 	pk_backend_finished (params->backend);
+ 
+@@ -349,7 +347,7 @@
+ }
+ 
+ static void
+-backend_search_name (PkBackend *backend, PkBitfield filters, const gchar *search)
++backend_search_name (PkBackend *backend, PkBitfield filters, gchar **search)
+ {
+ 	SearchParams *params;
+ 
+@@ -360,7 +358,7 @@
+ 	params = g_new0 (SearchParams, 1);
+ 	params->filters = filters;
+ 	params->search_type = SEARCH_NAME;
+-	params->needle = g_utf8_strdown (search, -1);
++	params->needle = g_utf8_strdown (search[0], -1);
+ 	params->backend = backend;
+ 
+ 	pk_backend_set_pointer (backend, "search-params", params);
+@@ -371,7 +369,7 @@
+  * backend_search_description:
+  */
+ static void
+-backend_search_description (PkBackend *backend, PkBitfield filters, const gchar *search)
++backend_search_description (PkBackend *backend, PkBitfield filters, gchar **search)
+ {
+ 	SearchParams *params;
+ 
+@@ -382,7 +380,7 @@
+ 	params = g_new0 (SearchParams, 1);
+ 	params->filters = filters;
+ 	params->search_type = SEARCH_DESCRIPTION;
+-	params->needle = g_utf8_strdown (search, -1);
++	params->needle = g_utf8_strdown (search[0], -1);
+ 	params->backend = backend;
+ 
+ 	pk_backend_set_pointer (backend, "search-params", params);
+@@ -390,7 +388,7 @@
+ }
+ 
+ static void
+-backend_search_group (PkBackend *backend, PkBitfield filters, const gchar *search)
++backend_search_group (PkBackend *backend, PkBitfield filters, gchar **search)
+ {
+ 	SearchParams *params;
+ 
+@@ -401,7 +399,7 @@
+ 	params = g_new0 (SearchParams, 1);
+ 	params->filters = filters;
+ 	params->search_type = SEARCH_TAG;
+-	params->needle = g_strdup_printf ("group::%s", search);
++	params->needle = g_strdup_printf ("group::%s", search[0]);
+ 	params->backend = backend;
+ 
+ 	pk_backend_set_pointer (backend, "search-params", params);
+@@ -412,9 +410,9 @@
+ static gboolean
+ backend_install_packages_thread (PkBackend *backend)
+ {
+-	PkPackageId *pi;
+ 	gint err, i;
+ 	gchar **package_ids;
++	gchar **parts;
+ 
+ 	package_ids = pk_backend_get_strv (backend, "pkids");
+ 
+@@ -424,13 +422,13 @@
+ 	{
+ 		pk_backend_package (backend, PK_INFO_ENUM_INSTALLING, package_ids[i], NULL);
+ 
+-		pi = pk_package_id_new_from_string (package_ids[i]);
++		parts = pk_package_id_split (package_ids[i]);
+ 
+-		err = opkg_install_package (opkg, pi->name, pk_opkg_progress_cb, backend);
++		err = opkg_install_package (parts[PK_PACKAGE_ID_NAME], pk_opkg_progress_cb, backend);
+ 		if (err)
+ 			handle_install_error (backend, err);
+ 
+-		pk_package_id_free (pi);
++		g_strfreev (parts);
+ 		if (err != 0)
+ 			break;
+ 	}
+@@ -453,9 +451,9 @@
+ static gboolean
+ backend_remove_packages_thread (PkBackend *backend)
+ {
+-	PkPackageId *pi;
+ 	gint err, i;
+ 	gchar **package_ids;
++	gchar **parts;
+ 	gboolean allow_deps;
+ 	gboolean autoremove;
+ 	gpointer *data;
+@@ -467,29 +465,30 @@
+ 	autoremove = GPOINTER_TO_INT (data[2]);
+ 	g_free (data);
+ 
+-	opkg_set_option (opkg, (char *)"autoremove", &autoremove);
+-	opkg_set_option (opkg, (char *)"force_removal_of_dependent_packages", &allow_deps);
++	opkg_set_option ((char *)"autoremove", &autoremove);
++	opkg_set_option ((char *)"force_removal_of_dependent_packages", &allow_deps);
+ 
+ 	err = 0;
+ 
+ 	for (i = 0; package_ids[i]; i++)
+ 	{
+-		pi = pk_package_id_new_from_string (package_ids[i]);
+ 		pk_backend_package (backend, PK_INFO_ENUM_REMOVING, package_ids[i], NULL);
+ 
+-		err = opkg_remove_package (opkg, pi->name, pk_opkg_progress_cb, backend);
++		parts = pk_package_id_split (package_ids[i]);
++
++		err = opkg_remove_package (parts[PK_PACKAGE_ID_NAME], pk_opkg_progress_cb, backend);
+ 
+ 		switch (err)
+ 		{
+-		case OPKG_NO_ERROR:
+-			break;
+-		case OPKG_PACKAGE_NOT_INSTALLED:
+-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_INSTALLED, NULL);
+-			break;
++		//case OPKG_NO_ERROR:
++		//	break;
++		//case OPKG_PACKAGE_NOT_INSTALLED:
++		//	pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_INSTALLED, NULL);
++		//	break;
+ 		default:
+ 			opkg_unknown_error (backend, err, "Remove");
+ 		}
+-		pk_package_id_free (pi);
++		g_strfreev (parts);
+ 
+ 		if (err != 0)
+ 			break;
+@@ -540,7 +539,7 @@
+ 	gint err;
+ 
+ 	/* FIXME: support only_trusted */
+-	err = opkg_upgrade_all (opkg, pk_opkg_progress_cb, backend);
++	err = opkg_upgrade_all (pk_opkg_progress_cb, backend);
+ 
+ 	if (err)
+ 		opkg_unknown_error (backend, err, "Upgrading system");
+@@ -564,29 +563,28 @@
+ static gboolean
+ backend_update_package_thread (PkBackend *backend)
+ {
+-	PkPackageId *pi;
++        gchar **parts;
+ 	gint err = 0;
+ 	const gchar *package_id;
+ 
+ 	/* FIXME: support only_trusted */
+ 	package_id = pk_backend_get_string (backend, "pkgid");
+-	pi = pk_package_id_new_from_string (package_id);
++	parts = pk_package_id_split (package_id);
+ 
+-	if (!pi->name || !pi->version)
++	if (!parts)
+ 	{
+ 		pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+ 				"Package not found");
+-		pk_package_id_free (pi);
+ 		pk_backend_finished (backend);
+ 		return FALSE;
+ 	}
+ 
+-	err = opkg_upgrade_package (opkg, pi->name, pk_opkg_progress_cb, backend);
++	err = opkg_upgrade_package (parts[PK_PACKAGE_ID_NAME], pk_opkg_progress_cb, backend);
+ 	if (err)
+ 		handle_install_error (backend, err);
+ 
+ 
+-	pk_package_id_free (pi);
++	g_strfreev (parts);
+ 	pk_backend_finished (backend);
+ 	return (err != 0);
+ }
+@@ -610,13 +608,13 @@
+  */
+ 
+ static void
+-pk_opkg_list_upgradable_cb (opkg_t *_opkg, opkg_package_t *pkg, void *data)
++pk_opkg_list_upgradable_cb (pkg_t *pkg, void *data)
+ {
+-	PkBackend *backend = PK_BACKEND (data);
++	PkBackend *backend = (PkBackend*) data;
+ 	gchar *uid;
+ 	gint status;
+ 
+-	if (pkg->installed)
++	if (pkg->state_status == SS_INSTALLED)
+ 		status = PK_INFO_ENUM_INSTALLED;
+ 	else
+ 		status = PK_INFO_ENUM_AVAILABLE;
+@@ -631,7 +629,7 @@
+ static gboolean
+ backend_get_updates_thread (PkBackend *backend)
+ {
+-	opkg_list_upgradable_packages (opkg, pk_opkg_list_upgradable_cb, backend);
++	opkg_list_upgradable_packages (pk_opkg_list_upgradable_cb, backend);
+ 	pk_backend_finished (backend);
+ 	return TRUE;
+ }
+@@ -668,16 +666,18 @@
+ static gboolean
+ backend_get_details_thread (PkBackend *backend)
+ {
+-	PkPackageId *pi;
+ 	gchar **package_ids;
++        gchar **parts;
+ 	int group_index;
+ 	PkGroupEnum group = 0;
+-	opkg_package_t *pkg;
++	pkg_t *pkg;
+ 	gchar *newid;
+ 
+         package_ids = pk_backend_get_strv(backend, "package_ids");
+-	pi = pk_package_id_new_from_string (package_ids[0]);
+-	if (pi == NULL)
++	parts = pk_package_id_split (package_ids[0]);
++
++
++	if (!parts)
+ 	{
+ 		pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
+ 		pk_backend_finished (backend);
+@@ -685,8 +685,8 @@
+ 	}
+ 
+ 
+-	pkg = opkg_find_package (opkg, pi->name, pi->version, pi->arch, pi->data);
+-	pk_package_id_free (pi);
++	pkg = opkg_find_package (parts[PK_PACKAGE_ID_NAME], parts[PK_PACKAGE_ID_VERSION], parts[PK_PACKAGE_ID_ARCH], parts[PK_PACKAGE_ID_DATA]);
++	g_strfreev (parts);
+ 
+ 	if (!pkg)
+ 	{
+@@ -695,7 +695,7 @@
+ 		return FALSE;
+ 	}
+ 
+-	newid = g_strdup_printf ("%s;%s;%s;%s", pkg->name, pkg->version, pkg->architecture, pkg->repository);
++	newid = g_strdup_printf ("%s;%s;%s;%s", pkg->name, pkg->version, pkg->architecture, pkg->src->name);
+ 
+ 	if (pkg->tags) {
+ 		for (group_index = 0; group < PK_GROUP_ENUM_LAST; group_index++) {
+@@ -706,9 +706,8 @@
+ 		}
+ 	}
+ 
+-	pk_backend_details (backend, newid, NULL, group, pkg->description, pkg->url, pkg->size);
++	pk_backend_details (backend, newid, NULL, group, pkg->description, NULL, pkg->size);
+ 	g_free (newid);
+-	opkg_package_free(pkg);
+ 	pk_backend_finished (backend);
+ 	return TRUE;
+ }
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit_0.5.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit_0.5.6.bb
new file mode 100644
index 0000000..3633f29
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/packagekit/packagekit_0.5.6.bb
@@ -0,0 +1,65 @@
+SUMMARY = "PackageKit package management abstraction"
+SECTION = "libs"
+LICENSE = "GPL-2.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "gtk+ python polkit dbus dbus-glib glib-2.0 sqlite3 opkg intltool intltool-native"
+RDEPENDS_${PN} = "opkg bash"
+
+inherit gnome pythonnative
+
+SRC_URI = "http://www.freedesktop.org/software/PackageKit/releases/PackageKit-${PV}.tar.bz2;name=archive \
+           file://configurefix.patch \
+           file://opkgfixes.patch \
+           file://0001-Don-t-call-deprecated-glib-functions-and-use-the-new.patch \
+          "
+
+SRC_URI[archive.md5sum] = "33a3127e9ed41e26671786aee9fe56ff"
+SRC_URI[archive.sha256sum] = "8dae41493dfb011442746d252b3435bf3204e17bf7c47e396f90fbd215260e14"
+
+S = "${WORKDIR}/PackageKit-${PV}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[service-packs] = "--enable-service-packs,--disable-service-packs,libarchive"
+
+EXTRA_OECONF = "--with-security-framework=dummy \
+                --with-default-backend=opkg \
+                --enable-opkg \
+                --disable-tests \
+                --disable-ruck \
+                --disable-qt \
+                --disable-gstreamer-plugin \
+                --disable-local  \
+                --disable-networkmanager \
+                --disable-device-rebind \
+                ac_cv_path_XMLTO=no \
+"
+
+#do_configure_prepend() {
+#    mkdir -p m4
+#    echo "EXTRA_DIST=" > gtk-doc.make
+#}
+
+do_configure_append() {
+    for i in $(find . -name Makefile) ; do
+        sed -i -e s:${STAGING_DIR_NATIVE}::g \
+               -e s:/usr/bin/intltool-merge:${STAGING_BINDIR_NATIVE}/intltool-merge:g \
+               $i
+    done
+}
+
+PACKAGES =+ "${PN}-website"
+FILES_${PN}-website = "${datadir}/PackageKit/website"
+
+PACKAGES =+ "${PN}-python"
+FILES_${PN}-python = "${libdir}/python*"
+
+PACKAGES =+ "${PN}-gtkmodule"
+FILES_${PN}-gtkmodule = "${libdir}/gtk-2.0/*/*.so"
+
+FILES_${PN} += "${libdir}/packagekit-backend/*.so ${libdir}/pm-utils ${datadir}/dbus-1/system-services/ ${datadir}/PolicyKit ${datadir}/PackageKit"
+FILES_${PN}-dbg += "${libdir}/packagekit-backend/.debug/*.so ${libdir}/gtk-2.0/*/.debug"
+FILES_${PN}-dev += "${libdir}/packagekit-backend/*.la ${libdir}/gtk-2.0/*/*.la"
+FILES_${PN}-staticdev += "${libdir}/packagekit-backend/*.a ${libdir}/gtk-2.0/*/*.a"
+
+# PackageKit-0.5.6/backends/opkg/pk-backend-opkg.c:31:26: fatal error: libopkg/opkg.h: No such file or directory
+PNBLACKLIST[packagekit] ?= "BROKEN: depends on old deprecated libopkg which is currently disabled and will be removed soon"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_0.94.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_0.94.bb
new file mode 100644
index 0000000..66054a2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_0.94.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "\
+IPC::Run allows you run and interact with child processes \
+using files, pipes, and pseudo-ttys. Both system()-style and scripted \
+usages are supported and may be mixed. Likewise, functional and OO API \
+styles are both supported and may be mixed."
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0ebd37caf53781e8b7223e6b99b63f4e"
+DEPENDS = "perl"
+
+SRC_URI = "git://github.com/toddr/IPC-Run.git"
+SRCREV = "6bdf41e276e06d23e140783b13a6eaef4745c216"
+
+S = "${WORKDIR}/git"
+
+inherit cpan
+
+EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}"
+
+do_compile() {
+    export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
+    cpan_do_compile
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.12.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.12.bb
new file mode 100644
index 0000000..b1a95e5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.12.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Perl module for pseudo tty IO"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://META.yml;beginline=11;endline=12;md5=b2562f94907eeb42e8ce9d45f628e587"
+
+SRC_URI = "http://www.cpan.org/modules/by-module/IO/IO-Tty-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "11695a1a516b3bd1b90ce75ff0ce3e6d"
+SRC_URI[sha256sum] = "a2ef8770d3309178203f8c8ac25e623e63cf76e97830fd3be280ade1a555290d"
+
+S = "${WORKDIR}/IO-Tty-${PV}"
+
+inherit cpan
+
+FILES_${PN}-dbg += "${libdir}/perl/vendor_perl/*/auto/IO/Tty/.debug/"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php-5.6.18/change-AC_TRY_RUN-to-AC_TRY_LINK.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php-5.6.18/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
new file mode 100644
index 0000000..39c334f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php-5.6.18/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
@@ -0,0 +1,56 @@
+[PATCH] config.m4: change AC_TRY_RUN to AC_TRY_LINK
+
+Upstream-Status: Pending
+
+AC_TRY_RUN is not suitable for cross-compile
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ ext/fileinfo/config.m4 | 31 ++++++-------------------------
+ 1 file changed, 6 insertions(+), 25 deletions(-)
+
+diff --git a/ext/fileinfo/config.m4 b/ext/fileinfo/config.m4
+index 7e98d62..8a8ea0e 100644
+--- a/ext/fileinfo/config.m4
++++ b/ext/fileinfo/config.m4
+@@ -14,31 +14,12 @@ if test "$PHP_FILEINFO" != "no"; then
+     libmagic/readcdf.c libmagic/softmagic.c"
+ 
+   AC_MSG_CHECKING([for strcasestr])
+-  AC_TRY_RUN([
+-#include <string.h>
+-#include <strings.h>
+-#include <stdlib.h>
+-
+-int main(void)
+-{
+-        char *s0, *s1, *ret;
+-
+-        s0 = (char *) malloc(42);
+-        s1 = (char *) malloc(8);
+-
+-        memset(s0, 'X', 42);
+-        s0[24] = 'Y';
+-        s0[26] = 'Z';
+-        s0[41] = '\0';
+-        memset(s1, 'x', 8);
+-        s1[0] = 'y';
+-        s1[2] = 'Z';
+-        s1[7] = '\0';
+-
+-        ret = strcasestr(s0, s1);
+-
+-        return !(NULL != ret);
+-}
++  AC_TRY_COMPILE([
++     #include <string.h>
++     #include <strings.h>
++     #include <stdlib.h>
++  ],[
++     strcasestr(NULL, NULL);
+   ],[
+     dnl using the platform implementation
+     AC_MSG_RESULT(yes)
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php.inc b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php.inc
new file mode 100644
index 0000000..ee7a143
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php.inc
@@ -0,0 +1,272 @@
+SUMMARY = "A server-side, HTML-embedded scripting language"
+HOMEPAGE = "http://www.php.net"
+SECTION = "console/network"
+
+LICENSE = "PHP-3.0"
+
+BBCLASSEXTEND = "native"
+DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native lemon-native \
+           openssl libmcrypt"
+DEPENDS_class-native = "zlib-native libxml2-native"
+
+SRC_URI = "http://php.net/distributions/php-${PV}.tar.bz2 \
+           file://acinclude-xml2-config.patch \
+           file://0001-php-don-t-use-broken-wrapper-for-mkdir.patch \
+           file://0001-acinclude-use-pkgconfig-for-libxml2-config.patch \
+          "
+
+SRC_URI_append_class-target += " \
+            file://iconv.patch \
+            file://imap-fix-autofoo.patch \
+            file://pear-makefile.patch \
+            file://phar-makefile.patch \
+            file://php_exec_native.patch \
+            file://php-fpm.conf \
+            file://php-fpm-apache.conf \
+            file://configure.patch \
+            file://pthread-check-threads-m4.patch \
+            file://70_mod_php5.conf \
+            file://php-fpm.service \
+          "
+S = "${WORKDIR}/php-${PV}"
+
+inherit autotools pkgconfig pythonnative gettext
+
+# phpize is not scanned for absolute paths by default (but php-config is).
+#
+SSTATE_SCAN_FILES += "phpize"
+SSTATE_SCAN_FILES += "build-defs.h"
+
+PHP_LIBDIR = "${libdir}/php5"
+
+# Common EXTRA_OECONF
+COMMON_EXTRA_OECONF = "--enable-sockets \
+                       --enable-pcntl \
+                       --enable-shared \
+                       --disable-opcache \
+                       --disable-rpath \
+                       --with-pic \
+                       --libdir=${PHP_LIBDIR} \
+"
+EXTRA_OECONF = "--enable-mbstring \
+                --enable-wddx \
+                --enable-fpm \
+                --enable-zip \
+                --with-libdir=${baselib} \
+                --with-gettext=${STAGING_LIBDIR}/.. \
+                --with-zlib=${STAGING_LIBDIR}/.. \
+                --with-iconv=${STAGING_LIBDIR}/.. \
+                --with-mcrypt=${STAGING_DIR_TARGET}${exec_prefix} \
+                --with-bz2=${STAGING_DIR_TARGET}${exec_prefix} \
+                --with-config-file-path=${sysconfdir}/php/apache2-php5 \
+                ${@base_conditional('SITEINFO_ENDIANNESS', 'le', 'ac_cv_c_bigendian_php=no', 'ac_cv_c_bigendian_php=yes', d)} \
+                ${@bb.utils.contains('PACKAGECONFIG', 'pam', '', 'ac_cv_lib_pam_pam_start=no', d)} \
+                ${COMMON_EXTRA_OECONF} \
+"
+EXTRA_OECONF_class-native = " \
+                --with-zlib=${STAGING_LIBDIR_NATIVE}/.. \
+                --without-iconv \
+                ${COMMON_EXTRA_OECONF} \
+"
+
+PACKAGECONFIG ??= "mysql sqlite3 imap \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
+PACKAGECONFIG_class-native = ""
+
+PACKAGECONFIG[mysql] = "--with-mysql=${STAGING_DIR_TARGET}${prefix} \
+                        --with-mysqli=${STAGING_BINDIR_CROSS}/mysql_config \
+                        --with-pdo-mysql=${STAGING_BINDIR_CROSS}/mysql_config \
+                        ,--without-mysql --without-mysqli --without-pdo-mysql \
+                        ,mysql5"
+
+PACKAGECONFIG[sqlite3] = "--with-sqlite3=${STAGING_LIBDIR}/.. \
+                          --with-pdo-sqlite=${STAGING_LIBDIR}/.. \
+                          , \
+                          ,sqlite3"
+PACKAGECONFIG[pgsql] = "--with-pgsql=${STAGING_DIR_TARGET}${exec_prefix},--without-pgsql,postgresql"
+PACKAGECONFIG[soap] = "--enable-libxml --enable-soap, --disable-soap, libxml2"
+PACKAGECONFIG[apache2] = "--with-apxs2=${STAGING_BINDIR_CROSS}/apxs,,apache2-native apache2"
+PACKAGECONFIG[pam] = ",,libpam"
+PACKAGECONFIG[imap] = "--with-imap=${STAGING_DIR_HOST} \
+                       --with-imap-ssl=${STAGING_DIR_HOST} \
+                       ,--without-imap --without-imap-ssl \
+                       ,uw-imap"
+
+
+export PHP_NATIVE_DIR = "${STAGING_BINDIR_NATIVE}"
+export PHP_PEAR_PHP_BIN = "${STAGING_BINDIR_NATIVE}/php"
+CFLAGS += " -D_GNU_SOURCE -g -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED -I${STAGING_INCDIR}/apache2"
+CFLAGS_append_aarch64 = " -O2"
+
+EXTRA_OEMAKE = "INSTALL_ROOT=${D}"
+
+acpaths = ""
+
+do_configure_prepend () {
+    rm -f ${S}/build/libtool.m4 ${S}/ltmain.sh ${S}/aclocal.m4
+    find ${S} -name config.m4 | xargs -n1 sed -i 's!APXS_HTTPD=.*!APXS_HTTPD=${STAGING_BINDIR_NATIVE}/httpd!'
+}
+
+do_configure_append() {
+    # No, libtool, we really don't want rpath set...
+    sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' ${HOST_SYS}-libtool
+    sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' ${HOST_SYS}-libtool
+}
+
+do_install_append_class-native() {
+    rm -rf ${D}/${PHP_LIBDIR}/php/.registry
+    rm -rf ${D}/${PHP_LIBDIR}/php/.channels
+    rm -rf ${D}/${PHP_LIBDIR}/php/.[a-z]*
+}
+
+do_install_prepend() {
+    cat aclocal-copy/libtool.m4 aclocal-copy/lt~obsolete.m4 aclocal-copy/ltoptions.m4 \
+        aclocal-copy/ltsugar.m4 aclocal-copy/ltversion.m4 > ${S}/build/libtool.m4
+}
+
+do_install_prepend_class-target() {
+    if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'false', d)}; then
+        # Install dummy config file so apxs doesn't fail
+        install -d ${D}${sysconfdir}/apache2
+        printf "\nLoadModule dummy_module modules/mod_dummy.so\n" > ${D}${sysconfdir}/apache2/httpd.conf
+    fi
+}
+
+# fixme
+do_install_append_class-target() {
+    install -d ${D}/${sysconfdir}/
+    if [ -d ${D}/${STAGING_DIR_NATIVE}/${sysconfdir} ];then
+         mv ${D}/${STAGING_DIR_NATIVE}/${sysconfdir}/* ${D}/${sysconfdir}/
+    fi
+    rm -rf ${D}/${TMPDIR}
+    rm -rf ${D}/.registry
+    rm -rf ${D}/.channels
+    rm -rf ${D}/.[a-z]*
+    rm -rf ${D}/var
+    rm -f  ${D}/${sysconfdir}/php-fpm.conf.default
+    sed -i 's:${STAGING_DIR_NATIVE}::g' ${D}/${sysconfdir}/pear.conf
+    install -m 0644 ${WORKDIR}/php-fpm.conf ${D}/${sysconfdir}/php-fpm.conf
+    install -d ${D}/${sysconfdir}/apache2/conf.d
+    install -m 0644 ${WORKDIR}/php-fpm-apache.conf ${D}/${sysconfdir}/apache2/conf.d/php-fpm.conf
+    install -d ${D}${sysconfdir}/init.d
+    sed -i 's:=/usr/sbin:=${sbindir}:g' ${B}/sapi/fpm/init.d.php-fpm
+    sed -i 's:=/etc:=${sysconfdir}:g' ${B}/sapi/fpm/init.d.php-fpm
+    sed -i 's:=/var:=${localstatedir}:g' ${B}/sapi/fpm/init.d.php-fpm
+    install -m 0755 ${B}/sapi/fpm/init.d.php-fpm ${D}${sysconfdir}/init.d/php-fpm
+    install -m 0644 ${WORKDIR}/php-fpm-apache.conf ${D}/${sysconfdir}/apache2/conf.d/php-fpm.conf
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/php-fpm.service ${D}${systemd_unitdir}/system/
+        sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+            -e 's,@LOCALSTATEDIR@,${localstatedir},g' \
+            ${D}${systemd_unitdir}/system/php-fpm.service
+    fi
+
+    TMP=`dirname ${D}/${TMPDIR}`
+    while test ${TMP} != ${D}; do
+        if [ -d ${TMP} ]; then
+            rmdir ${TMP}
+        fi
+        TMP=`dirname ${TMP}`;
+    done
+
+    if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'false', d)}; then
+        install -d ${D}${libdir}/apache2/modules
+        install -d ${D}${sysconfdir}/apache2/modules.d
+        install -d ${D}${sysconfdir}/php/apache2-php5
+        install -m 755  libs/libphp5.so ${D}${libdir}/apache2/modules
+        install -m 644  ${WORKDIR}/70_mod_php5.conf ${D}${sysconfdir}/apache2/modules.d
+        sed -i s,lib/,${libdir}/, ${D}${sysconfdir}/apache2/modules.d/70_mod_php5.conf
+        cat ${S}/php.ini-production | \
+            sed -e 's,extension_dir = \"\./\",extension_dir = \"/usr/lib/extensions\",' \
+            > ${D}${sysconfdir}/php/apache2-php5/php.ini
+        rm -f ${D}${sysconfdir}/apache2/httpd.conf*
+    fi
+}
+
+SYSROOT_PREPROCESS_FUNCS += "php_sysroot_preprocess"
+
+php_sysroot_preprocess () {
+    install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+    install -m 755 ${D}${bindir}/phpize ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+    install -m 755 ${D}${bindir}/php-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+
+    sed -i 's!eval echo /!eval echo ${STAGING_DIR_HOST}/!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/phpize
+    sed -i 's!^include_dir=.*!include_dir=${STAGING_INCDIR}/php!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/php-config
+}
+
+MODPHP_PACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'apache2', '${PN}-modphp', '', d)}"
+
+PACKAGES = "${PN}-dbg ${PN}-cli ${PN}-cgi ${PN}-fpm ${PN}-fpm-apache2 ${PN}-pear ${PN}-phar ${MODPHP_PACKAGE} ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}"
+
+RDEPENDS_${PN}-pear = "${PN}"
+RDEPENDS_${PN}-phar = "${PN}-cli"
+RDEPENDS_${PN}-cli = "${PN}"
+RDEPENDS_${PN}-modphp = "${PN} apache2"
+RDEPENDS_${PN}-dev = "${PN}"
+
+INITSCRIPT_PACKAGES = "${PN}-fpm"
+inherit update-rc.d
+
+FILES_${PN}-dbg =+ "${bindir}/.debug \
+                    ${libdir}/apache2/modules/.debug"
+FILES_${PN}-doc += "${PHP_LIBDIR}/php/doc"
+FILES_${PN}-cli = "${bindir}/php"
+FILES_${PN}-phar = "${bindir}/phar*"
+FILES_${PN}-cgi = "${bindir}/php-cgi"
+FILES_${PN}-fpm = "${sbindir}/php-fpm ${sysconfdir}/php-fpm.conf ${datadir}/fpm ${sysconfdir}/init.d/php-fpm ${systemd_unitdir}/system/php-fpm.service"
+FILES_${PN}-fpm-apache2 = "${sysconfdir}/apache2/conf.d/php-fpm.conf"
+CONFFILES_${PN}-fpm = "${sysconfdir}/php-fpm.conf"
+CONFFILES_${PN}-fpm-apache2 = "${sysconfdir}/apache2/conf.d/php-fpm.conf"
+INITSCRIPT_NAME_${PN}-fpm = "php-fpm"
+INITSCRIPT_PARAMS_${PN}-fpm = "defaults 60"
+FILES_${PN}-pear = "${bindir}/pear* ${bindir}/pecl ${PHP_LIBDIR}/php/PEAR \
+                ${PHP_LIBDIR}/php/PEAR*.php ${PHP_LIBDIR}/php/System.php \
+                ${PHP_LIBDIR}/php/peclcmd.php ${PHP_LIBDIR}/php/pearcmd.php \
+                ${PHP_LIBDIR}/php/.channels ${PHP_LIBDIR}/php/.channels/.alias \
+                ${PHP_LIBDIR}/php/.registry ${PHP_LIBDIR}/php/Archive/Tar.php \
+                ${PHP_LIBDIR}/php/Console/Getopt.php ${PHP_LIBDIR}/php/OS/Guess.php \
+                ${PHP_LIBDIR}/php/data/PEAR \
+                ${sysconfdir}/pear.conf"
+FILES_${PN}-dev = "${includedir}/php ${PHP_LIBDIR}/build ${bindir}/phpize \
+                ${bindir}/php-config ${PHP_LIBDIR}/php/.depdb \
+                ${PHP_LIBDIR}/php/.depdblock ${PHP_LIBDIR}/php/.filemap \
+                ${PHP_LIBDIR}/php/.lock ${PHP_LIBDIR}/php/test"
+FILES_${PN} = "${PHP_LIBDIR}/php"
+FILES_${PN} += "${bindir}"
+
+SUMMARY_${PN}-modphp = "PHP module for the Apache HTTP server"
+FILES_${PN}-modphp = "${libdir}/apache2 ${sysconfdir}"
+
+MODPHP_OLDPACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'modphp', '', d)}"
+RPROVIDES_${PN}-modphp = "${MODPHP_OLDPACKAGE}"
+RREPLACES_${PN}-modphp = "${MODPHP_OLDPACKAGE}"
+RCONFLICTS_${PN}-modphp = "${MODPHP_OLDPACKAGE}"
+
+do_install_append_class-native() {
+    create_wrapper ${D}${bindir}/php \
+        PHP_PEAR_SYSCONF_DIR=${sysconfdir}/
+}
+
+SSTATEPOSTINSTFUNCS_append_class-native = " php_sstate_postinst "
+
+php_sstate_postinst() {
+    if [ "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]
+    then
+        head -n1 ${sysconfdir}/pear.conf > ${sysconfdir}/pear.tmp.conf
+        for p in `tail -n1  ${sysconfdir}/pear.conf | sed -s 's/;/ /g'`; do
+            echo $p | awk -F: 'BEGIN {OFS = ":"; ORS = ";"}{if(NF==3){print $1, length($3)-2*match($3, /^"/), $3} else {print $0}}';
+        done >> ${sysconfdir}/pear.tmp.conf
+        mv -f ${sysconfdir}/pear.tmp.conf ${sysconfdir}/pear.conf
+    fi
+}
+
+# Fails to build with thumb-1 (qemuarm)
+# | {standard input}: Assembler messages:
+# | {standard input}:3719: Error: selected processor does not support Thumb mode `smull r0,r2,r9,r3'
+# | {standard input}:3720: Error: unshifted register required -- `sub r2,r2,r0,asr#31'
+# | {standard input}:3796: Error: selected processor does not support Thumb mode `smull r0,r2,r3,r3'
+# | {standard input}:3797: Error: unshifted register required -- `sub r2,r2,r0,asr#31'
+# | make: *** [ext/standard/math.lo] Error 1
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude-use-pkgconfig-for-libxml2-config.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude-use-pkgconfig-for-libxml2-config.patch
new file mode 100644
index 0000000..51a5e43
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude-use-pkgconfig-for-libxml2-config.patch
@@ -0,0 +1,90 @@
+From 003c9feaae6ed5c173edcea51193e49bc94ac39a Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen.kooi@linaro.org>
+Date: Tue, 17 Jun 2014 09:53:00 +0200
+Subject: [PATCH 3/8] acinclude: use pkgconfig for libxml2 config
+
+Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
+Upstream-Status: pending
+---
+ acinclude.m4 | 63 ++++++++++++++++++++++--------------------------------------
+ 1 file changed, 23 insertions(+), 40 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 206fcbf..a6c0d84 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -2530,48 +2530,31 @@ dnl
+ dnl Common setup macro for libxml
+ dnl
+ AC_DEFUN([PHP_SETUP_LIBXML], [
+-AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
+-[
+-
+-      ac_cv_php_xml2_config_path="$PHP_LIBXML_DIR/xml2-config"
+-
++PKG_CHECK_MODULES([LIBXML], [libxml-2.0 > 2.6.11], [
++  PHP_EVAL_LIBLINE($LIBXML_LIBS, $1)
++  PHP_EVAL_INCLINE($LIBXML_CFLAGS)
++
++  dnl Check that build works with given libs
++  AC_CACHE_CHECK(whether libxml build works, php_cv_libxml_build_works, [
++    PHP_TEST_BUILD(xmlInitParser,
++    [
++      php_cv_libxml_build_works=yes
++      AC_MSG_RESULT(yes)
++    ], [
++      AC_MSG_RESULT(no)
++      AC_MSG_ERROR([build test failed.  Please check the config.log for details.])
++    ], [
++      [$]$1
++    ])
++  ])
++  if test "$php_cv_libxml_build_works" = "yes"; then
++    AC_DEFINE(HAVE_LIBXML, 1, [ ])
++  fi
++  $2
++], [
++  AC_MSG_ERROR([$LIBXML_PKG_ERRORS])
+ ])
+ 
+-  if test -x "$ac_cv_php_xml2_config_path"; then
+-    XML2_CONFIG="$ac_cv_php_xml2_config_path"
+-    libxml_full_version=`$XML2_CONFIG --version`
+-    ac_IFS=$IFS
+-    IFS="."
+-    set $libxml_full_version
+-    IFS=$ac_IFS
+-    LIBXML_VERSION=`expr [$]1 \* 1000000 + [$]2 \* 1000 + [$]3`
+-    if test "$LIBXML_VERSION" -ge "2006011"; then
+-      LIBXML_LIBS=`$XML2_CONFIG --libs`
+-      LIBXML_INCS=`$XML2_CONFIG --cflags`
+-      PHP_EVAL_LIBLINE($LIBXML_LIBS, $1)
+-      PHP_EVAL_INCLINE($LIBXML_INCS)
+-
+-      dnl Check that build works with given libs
+-      AC_CACHE_CHECK(whether libxml build works, php_cv_libxml_build_works, [
+-        PHP_TEST_BUILD(xmlInitParser,
+-        [
+-          php_cv_libxml_build_works=yes
+-        ], [
+-          AC_MSG_RESULT(no)
+-          AC_MSG_ERROR([build test failed.  Please check the config.log for details.])
+-        ], [
+-          [$]$1
+-        ])
+-      ])
+-      if test "$php_cv_libxml_build_works" = "yes"; then
+-        AC_DEFINE(HAVE_LIBXML, 1, [ ])
+-      fi
+-      $2
+-    else
+-      AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.])
+-    fi
+-ifelse([$3],[],,[else $3])
+-  fi
+ ])
+ 
+ dnl -------------------------------------------------------------------------
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php-don-t-use-broken-wrapper-for-mkdir.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php-don-t-use-broken-wrapper-for-mkdir.patch
new file mode 100644
index 0000000..2f7d581
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php-don-t-use-broken-wrapper-for-mkdir.patch
@@ -0,0 +1,26 @@
+From ebc101e0728b9db6c687cff525e5dfc8eb0edbf3 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Thu, 3 Nov 2011 14:27:15 +0100
+Subject: [PATCH 2/8] php: don't use broken wrapper for mkdir
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+
+Upstream-Status: Inappropriate
+
+ Makefile.global | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.global b/Makefile.global
+index ff858c2..ae554b4 100644
+--- a/Makefile.global
++++ b/Makefile.global
+@@ -1,4 +1,4 @@
+-mkinstalldirs = $(top_srcdir)/build/shtool mkdir -p
++mkinstalldirs = mkdir -p
+ INSTALL = $(top_srcdir)/build/shtool install -c
+ INSTALL_DATA = $(INSTALL) -m 644
+ 
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/70_mod_php5.conf b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/70_mod_php5.conf
new file mode 100644
index 0000000..1de6fb1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/70_mod_php5.conf
@@ -0,0 +1,12 @@
+# vim: ft=apache sw=4 ts=4
+<IfDefine PHP5>
+	# Load the module first
+	<IfModule !sapi_apache2.c>
+		LoadModule php5_module    lib/apache2/modules/libphp5.so
+	</IfModule>
+
+	# Set it to handle the files
+	AddHandler php5-script .php .phtml .php3 .php4 .php5
+	AddType application/x-httpd-php-source .phps
+	DirectoryIndex index.html index.html.var index.php index.phtml
+</IfDefine>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/acinclude-xml2-config.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/acinclude-xml2-config.patch
new file mode 100644
index 0000000..30811a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/acinclude-xml2-config.patch
@@ -0,0 +1,25 @@
+Upstream-status: Unknown
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 4fd452e..206fcbf 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -2532,12 +2532,9 @@ dnl
+ AC_DEFUN([PHP_SETUP_LIBXML], [
+ AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
+ [
+-  for i in $PHP_LIBXML_DIR /usr/local /usr; do
+-    if test -x "$i/bin/xml2-config"; then
+-      ac_cv_php_xml2_config_path="$i/bin/xml2-config"
+-      break
+-    fi
+-  done
++
++      ac_cv_php_xml2_config_path="$PHP_LIBXML_DIR/xml2-config"
++
+ ])
+ 
+   if test -x "$ac_cv_php_xml2_config_path"; then
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/configure.patch
new file mode 100644
index 0000000..c5334c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/configure.patch
@@ -0,0 +1,11 @@
+--- php-5.1.6/configure.old	2006-09-12 07:54:14.000000000 -0700
++++ php-5.1.6/configure	2006-09-12 07:54:37.000000000 -0700
+@@ -14715,8 +14715,6 @@
+ 
+ 
+ 
+-  unset ac_cv_func_dlopen
+-  unset ac_cv_func___dlopen
+   unset found
+   
+   echo $ac_n "checking for dlopen""... $ac_c" 1>&6
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/iconv.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/iconv.patch
new file mode 100644
index 0000000..255fbb0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/iconv.patch
@@ -0,0 +1,32 @@
+Upstream-status: Unknown
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index a6c0d84..df11abd 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -2452,7 +2452,8 @@ AC_DEFUN([PHP_SETUP_ICONV], [
+   dnl Check libc first if no path is provided in --with-iconv
+   dnl
+ 
+-  if test "$PHP_ICONV" = "yes"; then
++  dnl must check against no, not against yes as PHP_ICONV can also include a path, which implies yes
++  if test "$PHP_ICONV" != "no"; then
+     dnl Reset LIBS temporarily as it may have already been included
+     dnl -liconv in.
+     LIBS_save="$LIBS"
+diff --git a/ext/iconv/config.m4 b/ext/iconv/config.m4
+index d673b0a..1fbef13 100644
+--- a/ext/iconv/config.m4
++++ b/ext/iconv/config.m4
+@@ -15,7 +15,7 @@ if test "$PHP_ICONV" != "no"; then
+ 
+   if test "$iconv_avail" != "no"; then
+     if test -z "$ICONV_DIR"; then
+-      for i in /usr/local /usr; do
++      for i in $PHP_ICONV /usr/local /usr; do
+         if test -f "$i/include/iconv.h" || test -f "$i/include/giconv.h"; then
+           PHP_ICONV_PREFIX="$i"
+           break
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch
new file mode 100644
index 0000000..da04c2d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch
@@ -0,0 +1,46 @@
+Upstream-status: Unknown
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index df11abd..06e7236 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -2357,7 +2357,7 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[
+       PHP_OPENSSL_DIR="/usr/local/ssl /usr/local /usr /usr/local/openssl"
+     fi
+ 
+-    for i in $PHP_OPENSSL_DIR; do
++    for i in $PHP_OPENSSL_DIR $PHP_OPENSSL_DIR/usr; do
+       if test -r $i/include/openssl/evp.h; then
+         OPENSSL_INCDIR=$i/include
+       fi
+diff --git a/ext/imap/config.m4 b/ext/imap/config.m4
+index 3fcf674..f08caf7 100644
+--- a/ext/imap/config.m4
++++ b/ext/imap/config.m4
+@@ -109,7 +109,7 @@ if test "$PHP_IMAP" != "no"; then
+     PHP_NEW_EXTENSION(imap, php_imap.c, $ext_shared)
+     AC_DEFINE(HAVE_IMAP,1,[ ])
+ 
+-    for i in $PHP_IMAP /usr/local /usr; do
++    for i in $PHP_IMAP $PHP_IMAP/usr /usr/local /usr; do
+       IMAP_INC_CHK()
+       el[]IMAP_INC_CHK(/include/c-client)
+       el[]IMAP_INC_CHK(/include/imap)
+@@ -198,13 +198,7 @@ if test "$PHP_IMAP" != "no"; then
+       AC_MSG_ERROR(Cannot find rfc822.h. Please check your c-client installation.)
+     fi
+ 
+-    if test ! -r "$IMAP_DIR/c-client/libc-client.a" && test -r "$IMAP_DIR/c-client/c-client.a" ; then
+-      ln -s "$IMAP_DIR/c-client/c-client.a" "$IMAP_DIR/c-client/libc-client.a" >/dev/null 2>&1
+-    elif test ! -r "$IMAP_DIR/$PHP_LIBDIR/libc-client.a" && test -r "$IMAP_DIR/$PHP_LIBDIR/c-client.a"; then
+-      ln -s "$IMAP_DIR/$PHP_LIBDIR/c-client.a" "$IMAP_DIR/$PHP_LIBDIR/libc-client.a" >/dev/null 2>&1
+-    fi
+-
+-    for lib in c-client4 c-client imap; do
++    for lib in /usr/lib c-client4 c-client imap; do
+       IMAP_LIB=$lib
+       IMAP_LIB_CHK($PHP_LIBDIR)
+       IMAP_LIB_CHK(c-client)
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/pear-makefile.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/pear-makefile.patch
new file mode 100644
index 0000000..9927d2d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/pear-makefile.patch
@@ -0,0 +1,18 @@
+Upstream-status: Unknown
+
+diff --git a/pear/Makefile.frag b/pear/Makefile.frag
+index 00bacae..739eeca 100644
+--- a/pear/Makefile.frag
++++ b/pear/Makefile.frag
+@@ -11,7 +11,7 @@ PEAR_PREFIX = -dp a${program_prefix}
+ PEAR_SUFFIX = -ds a$(program_suffix)
+ 
+ install-pear-installer: $(SAPI_CLI_PATH)
+-	@$(top_builddir)/sapi/cli/php $(PEAR_INSTALL_FLAGS) pear/install-pear-nozlib.phar -d "$(peardir)" -b "$(bindir)" ${PEAR_PREFIX} ${PEAR_SUFFIX}
++	@$(PHP_NATIVE_DIR)/php $(PEAR_INSTALL_FLAGS) $(builddir)/install-pear-nozlib.phar -d "$(peardir)" -b "$(bindir)" ${PEAR_PREFIX} ${PEAR_SUFFIX}
+ 
+ install-pear:
+ 	@echo "Installing PEAR environment:      $(INSTALL_ROOT)$(peardir)/"
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/phar-makefile.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/phar-makefile.patch
new file mode 100644
index 0000000..2f7fe34
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/phar-makefile.patch
@@ -0,0 +1,35 @@
+Fix phar packaging
+
+Inherited from OE-Classic, with some additions to fix host paths leaking
+into the target package.
+
+Upstream-Status: Inappropriate [config]
+
+diff --git a/ext/phar/Makefile.frag b/ext/phar/Makefile.frag
+index 6516ddf..36e6cf4 100644
+--- a/ext/phar/Makefile.frag
++++ b/ext/phar/Makefile.frag
+@@ -5,20 +5,9 @@ pharcmd: $(builddir)/phar.php $(builddir)/phar.phar
+ 
+ PHP_PHARCMD_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d phar.readonly=0 -d 'safe_mode=0'
+ PHP_PHARCMD_EXECUTABLE = ` \
+-	if test -x "$(top_builddir)/$(SAPI_CLI_PATH)"; then \
+-		$(top_srcdir)/build/shtool echo -n -- "$(top_builddir)/$(SAPI_CLI_PATH) -n"; \
+-		if test "x$(PHP_MODULES)" != "x"; then \
+-		$(top_srcdir)/build/shtool echo -n -- " -d extension_dir=$(top_builddir)/modules"; \
+-		for i in bz2 zlib phar; do \
+-			if test -f "$(top_builddir)/modules/$$i.la"; then \
+-				. $(top_builddir)/modules/$$i.la; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \
+-			fi; \
+-		done; \
+-		fi; \
+-	else \
+-		$(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; \
+-	fi;`
+-PHP_PHARCMD_BANG = `$(top_srcdir)/build/shtool echo -n -- "$(INSTALL_ROOT)$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)";`
++		$(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; `
++
++PHP_PHARCMD_BANG = `$(top_srcdir)/build/shtool echo -n -- "$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)";`
+ 
+ $(builddir)/phar/phar.inc: $(srcdir)/phar/phar.inc
+ 	-@test -d $(builddir)/phar || mkdir $(builddir)/phar
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm-apache.conf b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm-apache.conf
new file mode 100644
index 0000000..77cdd82
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm-apache.conf
@@ -0,0 +1,6 @@
+# Taken from http://wiki.apache.org/httpd/PHP-FPM
+
+LoadModule proxy_module      lib/apache2/modules/mod_proxy.so
+LoadModule proxy_fcgi_module lib/apache2/modules/mod_proxy_fcgi.so
+
+ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/apache2/htdocs/
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm.conf b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm.conf
new file mode 100644
index 0000000..21e3dfb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm.conf
@@ -0,0 +1,510 @@
+;;;;;;;;;;;;;;;;;;;;;
+; FPM Configuration ;
+;;;;;;;;;;;;;;;;;;;;;
+
+; All relative paths in this configuration file are relative to PHP's install
+; prefix (/usr). This prefix can be dynamicaly changed by using the
+; '-p' argument from the command line.
+
+; Include one or more files. If glob(3) exists, it is used to include a bunch of
+; files from a glob(3) pattern. This directive can be used everywhere in the
+; file.
+; Relative path can also be used. They will be prefixed by:
+;  - the global prefix if it's been set (-p arguement)
+;  - /usr otherwise
+;include=etc/fpm.d/*.conf
+
+;;;;;;;;;;;;;;;;;;
+; Global Options ;
+;;;;;;;;;;;;;;;;;;
+
+[global]
+; Pid file
+; Note: the default prefix is /var
+; Default Value: none
+;pid = run/php-fpm.pid
+
+; Error log file
+; If it's set to "syslog", log is sent to syslogd instead of being written
+; in a local file.
+; Note: the default prefix is /var
+; Default Value: log/php-fpm.log
+;error_log = log/php-fpm.log
+
+; syslog_facility is used to specify what type of program is logging the
+; message. This lets syslogd specify that messages from different facilities
+; will be handled differently.
+; See syslog(3) for possible values (ex daemon equiv LOG_DAEMON)
+; Default Value: daemon
+;syslog.facility = daemon
+
+; syslog_ident is prepended to every message. If you have multiple FPM
+; instances running on the same server, you can change the default value
+; which must suit common needs.
+; Default Value: php-fpm
+;syslog.ident = php-fpm
+
+; Log level
+; Possible Values: alert, error, warning, notice, debug
+; Default Value: notice
+;log_level = notice
+
+; If this number of child processes exit with SIGSEGV or SIGBUS within the time
+; interval set by emergency_restart_interval then FPM will restart. A value
+; of '0' means 'Off'.
+; Default Value: 0
+;emergency_restart_threshold = 0
+
+; Interval of time used by emergency_restart_interval to determine when 
+; a graceful restart will be initiated.  This can be useful to work around
+; accidental corruptions in an accelerator's shared memory.
+; Available Units: s(econds), m(inutes), h(ours), or d(ays)
+; Default Unit: seconds
+; Default Value: 0
+;emergency_restart_interval = 0
+
+; Time limit for child processes to wait for a reaction on signals from master.
+; Available units: s(econds), m(inutes), h(ours), or d(ays)
+; Default Unit: seconds
+; Default Value: 0
+;process_control_timeout = 0
+
+; The maximum number of processes FPM will fork. This has been design to control
+; the global number of processes when using dynamic PM within a lot of pools.
+; Use it with caution.
+; Note: A value of 0 indicates no limit
+; Default Value: 0
+; process.max = 128
+
+; Specify the nice(2) priority to apply to the master process (only if set)
+; The value can vary from -19 (highest priority) to 20 (lower priority)
+; Note: - It will only work if the FPM master process is launched as root
+;       - The pool process will inherit the master process priority
+;         unless it specified otherwise
+; Default Value: no set
+; process.priority = -19
+
+; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging.
+; Default Value: yes
+;daemonize = yes
+ 
+; Set open file descriptor rlimit for the master process.
+; Default Value: system defined value
+;rlimit_files = 1024
+ 
+; Set max core size rlimit for the master process.
+; Possible Values: 'unlimited' or an integer greater or equal to 0
+; Default Value: system defined value
+;rlimit_core = 0
+
+; Specify the event mechanism FPM will use. The following is available:
+; - select     (any POSIX os)
+; - poll       (any POSIX os)
+; - epoll      (linux >= 2.5.44)
+; - kqueue     (FreeBSD >= 4.1, OpenBSD >= 2.9, NetBSD >= 2.0)
+; - /dev/poll  (Solaris >= 7)
+; - port       (Solaris >= 10)
+; Default Value: not set (auto detection)
+; events.mechanism = epoll
+
+;;;;;;;;;;;;;;;;;;;;
+; Pool Definitions ; 
+;;;;;;;;;;;;;;;;;;;;
+
+; Multiple pools of child processes may be started with different listening
+; ports and different management options.  The name of the pool will be
+; used in logs and stats. There is no limitation on the number of pools which
+; FPM can handle. Your system will tell you anyway :)
+
+; Start a new pool named 'www'.
+; the variable $pool can we used in any directive and will be replaced by the
+; pool name ('www' here)
+[www]
+
+; Per pool prefix
+; It only applies on the following directives:
+; - 'slowlog'
+; - 'listen' (unixsocket)
+; - 'chroot'
+; - 'chdir'
+; - 'php_values'
+; - 'php_admin_values'
+; When not set, the global prefix (or /usr) applies instead.
+; Note: This directive can also be relative to the global prefix.
+; Default Value: none
+;prefix = /path/to/pools/$pool
+
+; Unix user/group of processes
+; Note: The user is mandatory. If the group is not set, the default user's group
+;       will be used.
+user = nobody
+;group = nobody
+
+; The address on which to accept FastCGI requests.
+; Valid syntaxes are:
+;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
+;                            a specific port;
+;   'port'                 - to listen on a TCP socket to all addresses on a
+;                            specific port;
+;   '/path/to/unix/socket' - to listen on a unix socket.
+; Note: This value is mandatory.
+listen = 127.0.0.1:9000
+
+; Set listen(2) backlog. A value of '-1' means unlimited.
+; Default Value: 128 (-1 on FreeBSD and OpenBSD)
+;listen.backlog = -1
+
+; Set permissions for unix socket, if one is used. In Linux, read/write
+; permissions must be set in order to allow connections from a web server. Many
+; BSD-derived systems allow connections regardless of permissions. 
+; Default Values: user and group are set as the running user
+;                 mode is set to 0666
+;listen.owner = nobody
+;listen.group = nobody
+;listen.mode = 0666
+ 
+; List of ipv4 addresses of FastCGI clients which are allowed to connect.
+; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
+; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
+; must be separated by a comma. If this value is left blank, connections will be
+; accepted from any ip address.
+; Default Value: any
+;listen.allowed_clients = 127.0.0.1
+
+; Specify the nice(2) priority to apply to the pool processes (only if set)
+; The value can vary from -19 (highest priority) to 20 (lower priority)
+; Note: - It will only work if the FPM master process is launched as root
+;       - The pool processes will inherit the master process priority
+;         unless it specified otherwise
+; Default Value: no set
+; priority = -19
+
+; Choose how the process manager will control the number of child processes.
+; Possible Values:
+;   static  - a fixed number (pm.max_children) of child processes;
+;   dynamic - the number of child processes are set dynamically based on the
+;             following directives. With this process management, there will be
+;             always at least 1 children.
+;             pm.max_children      - the maximum number of children that can
+;                                    be alive at the same time.
+;             pm.start_servers     - the number of children created on startup.
+;             pm.min_spare_servers - the minimum number of children in 'idle'
+;                                    state (waiting to process). If the number
+;                                    of 'idle' processes is less than this
+;                                    number then some children will be created.
+;             pm.max_spare_servers - the maximum number of children in 'idle'
+;                                    state (waiting to process). If the number
+;                                    of 'idle' processes is greater than this
+;                                    number then some children will be killed.
+;  ondemand - no children are created at startup. Children will be forked when
+;             new requests will connect. The following parameter are used:
+;             pm.max_children           - the maximum number of children that
+;                                         can be alive at the same time.
+;             pm.process_idle_timeout   - The number of seconds after which
+;                                         an idle process will be killed.
+; Note: This value is mandatory.
+pm = dynamic
+
+; The number of child processes to be created when pm is set to 'static' and the
+; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
+; This value sets the limit on the number of simultaneous requests that will be
+; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
+; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
+; CGI. The below defaults are based on a server without much resources. Don't
+; forget to tweak pm.* to fit your needs.
+; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
+; Note: This value is mandatory.
+pm.max_children = 5
+
+; The number of child processes created on startup.
+; Note: Used only when pm is set to 'dynamic'
+; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
+pm.start_servers = 2
+
+; The desired minimum number of idle server processes.
+; Note: Used only when pm is set to 'dynamic'
+; Note: Mandatory when pm is set to 'dynamic'
+pm.min_spare_servers = 1
+
+; The desired maximum number of idle server processes.
+; Note: Used only when pm is set to 'dynamic'
+; Note: Mandatory when pm is set to 'dynamic'
+pm.max_spare_servers = 3
+
+; The number of seconds after which an idle process will be killed.
+; Note: Used only when pm is set to 'ondemand'
+; Default Value: 10s
+;pm.process_idle_timeout = 10s;
+ 
+; The number of requests each child process should execute before respawning.
+; This can be useful to work around memory leaks in 3rd party libraries. For
+; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
+; Default Value: 0
+;pm.max_requests = 500
+
+; The URI to view the FPM status page. If this value is not set, no URI will be
+; recognized as a status page. It shows the following informations:
+;   pool                 - the name of the pool;
+;   process manager      - static, dynamic or ondemand;
+;   start time           - the date and time FPM has started;
+;   start since          - number of seconds since FPM has started;
+;   accepted conn        - the number of request accepted by the pool;
+;   listen queue         - the number of request in the queue of pending
+;                          connections (see backlog in listen(2));
+;   max listen queue     - the maximum number of requests in the queue
+;                          of pending connections since FPM has started;
+;   listen queue len     - the size of the socket queue of pending connections;
+;   idle processes       - the number of idle processes;
+;   active processes     - the number of active processes;
+;   total processes      - the number of idle + active processes;
+;   max active processes - the maximum number of active processes since FPM
+;                          has started;
+;   max children reached - number of times, the process limit has been reached,
+;                          when pm tries to start more children (works only for
+;                          pm 'dynamic' and 'ondemand');
+; Value are updated in real time.
+; Example output:
+;   pool:                 www
+;   process manager:      static
+;   start time:           01/Jul/2011:17:53:49 +0200
+;   start since:          62636
+;   accepted conn:        190460
+;   listen queue:         0
+;   max listen queue:     1
+;   listen queue len:     42
+;   idle processes:       4
+;   active processes:     11
+;   total processes:      15
+;   max active processes: 12
+;   max children reached: 0
+;
+; By default the status page output is formatted as text/plain. Passing either
+; 'html', 'xml' or 'json' in the query string will return the corresponding
+; output syntax. Example:
+;   http://www.foo.bar/status
+;   http://www.foo.bar/status?json
+;   http://www.foo.bar/status?html
+;   http://www.foo.bar/status?xml
+;
+; By default the status page only outputs short status. Passing 'full' in the
+; query string will also return status for each pool process.
+; Example: 
+;   http://www.foo.bar/status?full
+;   http://www.foo.bar/status?json&full
+;   http://www.foo.bar/status?html&full
+;   http://www.foo.bar/status?xml&full
+; The Full status returns for each process:
+;   pid                  - the PID of the process;
+;   state                - the state of the process (Idle, Running, ...);
+;   start time           - the date and time the process has started;
+;   start since          - the number of seconds since the process has started;
+;   requests             - the number of requests the process has served;
+;   request duration     - the duration in µs of the requests;
+;   request method       - the request method (GET, POST, ...);
+;   request URI          - the request URI with the query string;
+;   content length       - the content length of the request (only with POST);
+;   user                 - the user (PHP_AUTH_USER) (or '-' if not set);
+;   script               - the main script called (or '-' if not set);
+;   last request cpu     - the %cpu the last request consumed
+;                          it's always 0 if the process is not in Idle state
+;                          because CPU calculation is done when the request
+;                          processing has terminated;
+;   last request memory  - the max amount of memory the last request consumed
+;                          it's always 0 if the process is not in Idle state
+;                          because memory calculation is done when the request
+;                          processing has terminated;
+; If the process is in Idle state, then informations are related to the
+; last request the process has served. Otherwise informations are related to
+; the current request being served.
+; Example output:
+;   ************************
+;   pid:                  31330
+;   state:                Running
+;   start time:           01/Jul/2011:17:53:49 +0200
+;   start since:          63087
+;   requests:             12808
+;   request duration:     1250261
+;   request method:       GET
+;   request URI:          /test_mem.php?N=10000
+;   content length:       0
+;   user:                 -
+;   script:               /home/fat/web/docs/php/test_mem.php
+;   last request cpu:     0.00
+;   last request memory:  0
+;
+; Note: There is a real-time FPM status monitoring sample web page available
+;       It's available in: /usr/share/fpm/status.html
+;
+; Note: The value must start with a leading slash (/). The value can be
+;       anything, but it may not be a good idea to use the .php extension or it
+;       may conflict with a real PHP file.
+; Default Value: not set 
+;pm.status_path = /status
+ 
+; The ping URI to call the monitoring page of FPM. If this value is not set, no
+; URI will be recognized as a ping page. This could be used to test from outside
+; that FPM is alive and responding, or to
+; - create a graph of FPM availability (rrd or such);
+; - remove a server from a group if it is not responding (load balancing);
+; - trigger alerts for the operating team (24/7).
+; Note: The value must start with a leading slash (/). The value can be
+;       anything, but it may not be a good idea to use the .php extension or it
+;       may conflict with a real PHP file.
+; Default Value: not set
+;ping.path = /ping
+
+; This directive may be used to customize the response of a ping request. The
+; response is formatted as text/plain with a 200 response code.
+; Default Value: pong
+;ping.response = pong
+
+; The access log file
+; Default: not set
+;access.log = log/$pool.access.log
+
+; The access log format.
+; The following syntax is allowed
+;  %%: the '%' character
+;  %C: %CPU used by the request
+;      it can accept the following format:
+;      - %{user}C for user CPU only
+;      - %{system}C for system CPU only
+;      - %{total}C  for user + system CPU (default)
+;  %d: time taken to serve the request
+;      it can accept the following format:
+;      - %{seconds}d (default)
+;      - %{miliseconds}d
+;      - %{mili}d
+;      - %{microseconds}d
+;      - %{micro}d
+;  %e: an environment variable (same as $_ENV or $_SERVER)
+;      it must be associated with embraces to specify the name of the env
+;      variable. Some exemples:
+;      - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
+;      - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
+;  %f: script filename
+;  %l: content-length of the request (for POST request only)
+;  %m: request method
+;  %M: peak of memory allocated by PHP
+;      it can accept the following format:
+;      - %{bytes}M (default)
+;      - %{kilobytes}M
+;      - %{kilo}M
+;      - %{megabytes}M
+;      - %{mega}M
+;  %n: pool name
+;  %o: ouput header
+;      it must be associated with embraces to specify the name of the header:
+;      - %{Content-Type}o
+;      - %{X-Powered-By}o
+;      - %{Transfert-Encoding}o
+;      - ....
+;  %p: PID of the child that serviced the request
+;  %P: PID of the parent of the child that serviced the request
+;  %q: the query string 
+;  %Q: the '?' character if query string exists
+;  %r: the request URI (without the query string, see %q and %Q)
+;  %R: remote IP address
+;  %s: status (response code)
+;  %t: server time the request was received
+;      it can accept a strftime(3) format:
+;      %d/%b/%Y:%H:%M:%S %z (default)
+;  %T: time the log has been written (the request has finished)
+;      it can accept a strftime(3) format:
+;      %d/%b/%Y:%H:%M:%S %z (default)
+;  %u: remote user
+;
+; Default: "%R - %u %t \"%m %r\" %s"
+;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
+ 
+; The log file for slow requests
+; Default Value: not set
+; Note: slowlog is mandatory if request_slowlog_timeout is set
+;slowlog = log/$pool.log.slow
+ 
+; The timeout for serving a single request after which a PHP backtrace will be
+; dumped to the 'slowlog' file. A value of '0s' means 'off'.
+; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
+; Default Value: 0
+;request_slowlog_timeout = 0
+ 
+; The timeout for serving a single request after which the worker process will
+; be killed. This option should be used when the 'max_execution_time' ini option
+; does not stop script execution for some reason. A value of '0' means 'off'.
+; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
+; Default Value: 0
+;request_terminate_timeout = 0
+ 
+; Set open file descriptor rlimit.
+; Default Value: system defined value
+;rlimit_files = 1024
+ 
+; Set max core size rlimit.
+; Possible Values: 'unlimited' or an integer greater or equal to 0
+; Default Value: system defined value
+;rlimit_core = 0
+ 
+; Chroot to this directory at the start. This value must be defined as an
+; absolute path. When this value is not set, chroot is not used.
+; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
+; of its subdirectories. If the pool prefix is not set, the global prefix
+; will be used instead.
+; Note: chrooting is a great security feature and should be used whenever 
+;       possible. However, all PHP paths will be relative to the chroot
+;       (error_log, sessions.save_path, ...).
+; Default Value: not set
+;chroot = 
+ 
+; Chdir to this directory at the start.
+; Note: relative path can be used.
+; Default Value: current directory or / when chroot
+;chdir = /var/www
+ 
+; Redirect worker stdout and stderr into main error log. If not set, stdout and
+; stderr will be redirected to /dev/null according to FastCGI specs.
+; Note: on highloaded environement, this can cause some delay in the page
+; process time (several ms).
+; Default Value: no
+;catch_workers_output = yes
+
+; Limits the extensions of the main script FPM will allow to parse. This can
+; prevent configuration mistakes on the web server side. You should only limit
+; FPM to .php extensions to prevent malicious users to use other extensions to
+; exectute php code.
+; Note: set an empty value to allow all extensions.
+; Default Value: .php
+;security.limit_extensions = .php .php3 .php4 .php5
+ 
+; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
+; the current environment.
+; Default Value: clean env
+;env[HOSTNAME] = $HOSTNAME
+;env[PATH] = /usr/local/bin:/usr/bin:/bin
+;env[TMP] = /tmp
+;env[TMPDIR] = /tmp
+;env[TEMP] = /tmp
+
+; Additional php.ini defines, specific to this pool of workers. These settings
+; overwrite the values previously defined in the php.ini. The directives are the
+; same as the PHP SAPI:
+;   php_value/php_flag             - you can set classic ini defines which can
+;                                    be overwritten from PHP call 'ini_set'. 
+;   php_admin_value/php_admin_flag - these directives won't be overwritten by
+;                                     PHP call 'ini_set'
+; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
+
+; Defining 'extension' will load the corresponding shared extension from
+; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
+; overwrite previously defined php.ini values, but will append the new value
+; instead.
+
+; Note: path INI options can be relative and will be expanded with the prefix
+; (pool, global or /usr)
+
+; Default Value: nothing is defined by default except the values in php.ini and
+;                specified at startup with the -d argument
+;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
+;php_flag[display_errors] = off
+;php_admin_value[error_log] = /var/log/fpm-php.www.log
+;php_admin_flag[log_errors] = on
+;php_admin_value[memory_limit] = 32M
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm.service b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm.service
new file mode 100644
index 0000000..ac79dc9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=PHP-FPM
+After=network.target
+[Service]
+Type=forking
+PIDFile=@LOCALSTATEDIR@/run/php-fpm.pid
+ExecStart=@SYSCONFDIR@/init.d/php-fpm start
+ExecStop=@SYSCONFDIR@/init.d/php-fpm stop
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php_exec_native.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php_exec_native.patch
new file mode 100644
index 0000000..0506bdd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/php_exec_native.patch
@@ -0,0 +1,18 @@
+Upstream-status: Inappriate
+
+diff --git a/sapi/cli/config.m4 b/sapi/cli/config.m4
+index cdfa1f7..0fe11e3 100644
+--- a/sapi/cli/config.m4
++++ b/sapi/cli/config.m4
+@@ -36,7 +36,7 @@ if test "$PHP_CLI" != "no"; then
+   esac
+ 
+   dnl Set executable for tests
+-  PHP_EXECUTABLE="\$(top_builddir)/\$(SAPI_CLI_PATH)"
++  PHP_EXECUTABLE="${PHP_NATIVE_DIR}/php"
+   PHP_SUBST(PHP_EXECUTABLE)
+ 
+   dnl Expose to Makefile
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/pthread-check-threads-m4.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/pthread-check-threads-m4.patch
new file mode 100644
index 0000000..0c564cd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php/pthread-check-threads-m4.patch
@@ -0,0 +1,30 @@
+From d8067ceacbf54e79c9c6b68675332c09eaa0b55d Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Mon, 8 Apr 2013 14:29:51 +0800
+Subject: [PATCH] pthread-check
+
+Enable pthreads support when cross-compiling
+
+Upstream-Status: Inapproprate [config]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ TSRM/threads.m4 |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/TSRM/threads.m4 b/TSRM/threads.m4
+index 38494ce..15d9454 100644
+--- a/TSRM/threads.m4
++++ b/TSRM/threads.m4
+@@ -86,7 +86,7 @@ int main() {
+   pthreads_working=no
+   ], [
+   dnl For cross compiling running this test is of no use. NetWare supports pthreads
+-  pthreads_working=no
++  pthreads_working=yes
+   case $host_alias in
+   *netware*)
+     pthreads_working=yes
+-- 
+1.7.4.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php_5.5.32.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php_5.5.32.bb
new file mode 100644
index 0000000..4ee3c38
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php_5.5.32.bb
@@ -0,0 +1,6 @@
+require php.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=464ca70af214d2407f6b7d4458158afd"
+
+SRC_URI[md5sum] = "47443f39152d671d24bc839e6a49049d"
+SRC_URI[sha256sum] = "b0f2c108db8e05db9f6366aaba9a754fd0ee31f3f86ee889561b608dfd6e92ee"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.18.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.18.bb
new file mode 100644
index 0000000..2ce012f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.18.bb
@@ -0,0 +1,7 @@
+require php.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b602636d46a61c0ac0432bbf5c078fe4"
+
+SRC_URI += "file://change-AC_TRY_RUN-to-AC_TRY_LINK.patch"
+SRC_URI[md5sum] = "7340353bedd998286ba2c4d87d7864f8"
+SRC_URI[sha256sum] = "c3cd4a29a9562309d36e2b128407d6eaa5c7dde590d2b1a464457383e517f4ed"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/pm-qa/pm-qa_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/pm-qa/pm-qa_git.bb
new file mode 100644
index 0000000..7322df8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/pm-qa/pm-qa_git.bb
@@ -0,0 +1,66 @@
+DESCRIPTION = "Utilities for testing Power Management"
+HOMEPAGE = "https://wiki.linaro.org/WorkingGroups/PowerManagement/Resources/TestSuite/PmQa"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+PV = "0.4.14"
+
+BRANCH ?= "master"
+
+# Corresponds to tag pm-qa-v0.4.14
+SRCREV = "9111d1930f02337394cf16e84ad2a27f33607cbb"
+
+SRC_URI = "git://git.linaro.org/power/pm-qa.git;protocol=git;branch=${BRANCH}"
+
+S = "${WORKDIR}/git"
+
+CFLAGS += "-pthread"
+
+do_compile () {
+    # Find all the .c files in this project and build them.
+    for x in `find . -name "*.c"`
+    do
+        util=`echo ${x} | sed s/.c$//`
+        oe_runmake ${util}
+    done
+}
+
+do_install () {
+    install -d ${D}${bindir}
+    install -d ${D}${libdir}/${BPN}
+
+    # Install the compiled binaries that were built in the previous step
+    for x in `find . -name "*.c"`
+    do
+        util=`echo ${x} | sed s/.c$//`
+        util_basename=`basename ${util}`
+        install -m 0755 ${util} ${D}${bindir}/${util_basename}
+    done
+
+    # Install the helper scripts in a subdirectory of $libdir
+    for script in `find . -name "*.sh" | grep include`
+    do
+        # Remove hardcoded relative paths
+        sed -i -e 's#..\/utils\/##' ${script}
+
+        script_basename=`basename ${script}`
+        install -m 0755 $script ${D}${libdir}/${BPN}/${script_basename}
+    done
+
+    # Install the shell scripts NOT in the $libdir directory since those
+    # will be installed elsewhere
+    for script in `find . -name "*.sh" | grep -v include`
+    do
+        # if the script includes any helper scripts from the $libdir
+        # directory then change the source path to the absolute path
+        # to reflect the install location of the helper scripts.
+        sed -i -e "s#source ../include#source ${libdir}/${BPN}#g" ${script}
+        # Remove hardcoded relative paths
+        sed -i -e 's#..\/utils\/##' ${script}
+
+        script_basename=`basename ${script}`
+        install -m 0755 $script ${D}${bindir}/${script_basename}
+    done
+}
+RDEPENDS_${PN} +="bash"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools/pmtools-switch-to-dynamic-buffer-for-huge-ACPI-table.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools/pmtools-switch-to-dynamic-buffer-for-huge-ACPI-table.patch
new file mode 100644
index 0000000..7ccdab0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools/pmtools-switch-to-dynamic-buffer-for-huge-ACPI-table.patch
@@ -0,0 +1,66 @@
+From 03a886252f6555d6b0af76b654e76459642b89da Mon Sep 17 00:00:00 2001
+From: Yunguo Wei <yunguo.wei@windriver.com>
+Date: Tue, 3 Dec 2013 18:12:50 +0800
+Subject: [PATCH] pmtools: switch to dynamic buffer for huge ACPI tables
+
+For servers like Canoe Pass or Thunder Ridge, there are much more
+entries in ACPI table, so original 1K buffer is insufficient.
+
+We switch to dynamic buffer on this situation.
+
+Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com>
+
+
+Upstream-Status: Pending
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ madt/madt.c | 18 +++++++++++++++++-
+ 1 file changed, 17 insertions(+), 1 deletion(-)
+
+diff --git a/madt/madt.c b/madt/madt.c
+index aed965c..8770cd5 100644
+--- a/madt/madt.c
++++ b/madt/madt.c
+@@ -51,7 +51,9 @@ get_next_entry(acpi_table_entry_header * entry_header)
+ 	return retval;
+ }
+ 
+-u8	buffer[1024];
++
++u8	buf[1024];
++u8	*buffer = buf;
+ 
+ main()
+ {
+@@ -75,6 +77,17 @@ main()
+ 
+ 	if (verbose) printf("header.length %d\n", madt_header->header.length);
+ 
++	/* if 1K buffer is insufficient for acpi table, switch to a larger memory buffer */
++	if(expected_length > sizeof(buf)) {
++		buffer = malloc(expected_length);
++		if (!buffer) {
++			perror("malloc");
++			exit(1);
++		}
++		memset(buffer, 0, expected_length);
++		memcpy(buffer, buf, sizeof(struct acpi_table_madt));
++	}
++
+ 	acpi_table_print((void*)&(buffer[bytes_read]), 0);
+ 
+ 	bytes_read = sizeof(struct acpi_table_madt);
+@@ -118,6 +131,9 @@ done:
+ 		printf("Checksum 0x%x != 0; 0x%x in header ERROR\n", csum,
+ 			 madt_header->header.checksum);
+ 
++	if(buffer != buf)
++		free(buffer);
++
+ 	return 0;
+ }
+ 
+-- 
+1.8.1.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb
new file mode 100644
index 0000000..22ed8e2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "This is a small collection of power management \
+               test and investigation tools"
+HOMEPAGE = "http://lesswatts.org/projects/acpi"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+PV = "20130209+git${SRCPV}"
+
+SRC_URI = "git://github.com/anyc/pmtools.git \
+    file://pmtools-switch-to-dynamic-buffer-for-huge-ACPI-table.patch \
+"
+SRCREV = "3ebe0e54c54061b4c627236cbe35d820de2e1168"
+
+COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
+
+S = "${WORKDIR}/git"
+
+do_configure[noexec] = "1"
+do_compile() {
+	oe_runmake
+}
+
+do_install() {
+	install -d ${D}${bindir} ${D}${docdir}
+	install -m 755 ${S}/acpidump/acpidump ${D}${bindir}
+	install -m 755 ${S}/acpixtract/acpixtract ${D}${bindir}
+	install -m 755 ${S}/madt/madt ${D}${bindir}
+	install -m 644 ${S}/README ${D}${docdir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_2.6.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_2.6.1.bb
new file mode 100644
index 0000000..049f9d4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_2.6.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Protocol Buffers - structured data serialisation mechanism"
+DESCRIPTION = "Protocol Buffers are a way of encoding structured data in an \
+efficient yet extensible format. Google uses Protocol Buffers for almost \
+all of its internal RPC protocols and file formats."
+HOMEPAGE = "https://github.com/google/protobuf"
+SECTION = "console/tools"
+LICENSE = "BSD-3-Clause"
+
+DEPENDS = "zlib"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=af6809583bfde9a31595a58bb4a24514"
+
+SRCREV = "bba83652e1be610bdb7ee1566ad18346d98b843c"
+
+PV = "2.6.1+git${SRCPV}"
+
+SRC_URI = "git://github.com/google/protobuf.git"
+
+EXTRA_OECONF += " --with-protoc=echo"
+
+inherit autotools
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.0.5.bb
new file mode 100644
index 0000000..3eb1882
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.0.5.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "The concurrent.futures module provides a high-level interface for asynchronously executing callables."
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=3d78c5bb15ac641d34f2ddc3bd7f51fa"
+HOMEPAGE = "http://code.google.com/p/pythonfutures"
+DEPENDS = "python"
+
+SRC_URI = "https://pypi.python.org/packages/source/f/futures/futures-${PV}.tar.gz"
+SRC_URI[md5sum] = "ced2c365e518242512d7a398b515ff95"
+SRC_URI[sha256sum] = "0542525145d5afc984c88f914a0c85c77527f65946617edb5274f72406f981df"
+
+S = "${WORKDIR}/futures-${PV}"
+
+inherit setuptools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/python/python-simplejson_3.8.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/python/python-simplejson_3.8.2.bb
new file mode 100644
index 0000000..a2a6c40
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/python/python-simplejson_3.8.2.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Simple, fast, extensible JSON encoder/decoder for Python"
+HOMEPAGE = "http://cheeseshop.python.org/pypi/simplejson"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c6338d7abd321c0b50a2a547e441c52e"
+PR = "r1"
+
+SRCNAME = "simplejson"
+
+SRC_URI = "http://cheeseshop.python.org/packages/source/s/simplejson/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "53b1371bbf883b129a12d594a97e9a18"
+SRC_URI[sha256sum] = "d58439c548433adcda98e695be53e526ba940a4b9c44fb9a05d92cd495cdd47f"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+RDEPENDS_${PN} = "\
+    python-core \
+    python-re \
+    python-io \
+    python-netserver \
+    python-numbers \
+"
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck/0001-Add-option-to-enable-internal-loopback.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck/0001-Add-option-to-enable-internal-loopback.patch
new file mode 100644
index 0000000..f69254a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck/0001-Add-option-to-enable-internal-loopback.patch
@@ -0,0 +1,81 @@
+From 059d5512e840fe68e2bb37add6c9208fa9c34d15 Mon Sep 17 00:00:00 2001
+From: Sekhar Nori <nsekhar@ti.com>
+Date: Tue, 24 Feb 2015 22:16:37 +0530
+Subject: [PATCH 1/2] Add option to enable internal loopback
+
+Upstream-status: Pending
+---
+ serialcheck.c | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/serialcheck.c b/serialcheck.c
+index 4f5b747..4100c37 100644
+--- a/serialcheck.c
++++ b/serialcheck.c
+@@ -12,6 +12,8 @@
+ #include <sys/ioctl.h>
+ #include <linux/serial.h>
+
++#define TIOCM_LOOP	0x8000
++
+ #define __same_type(a, b)	__builtin_types_compatible_p(typeof(a), typeof(b))
+ #define BUILD_BUG_ON_ZERO(e)	(sizeof(struct { int:-!!(e); }))
+ #define __must_be_array(a)	BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
+@@ -40,6 +42,7 @@ struct g_opt {
+	unsigned char hflow;
+	unsigned char do_termios;
+	unsigned char *cmp_buff;
++	unsigned char loopback;
+ };
+
+ /* name, key, arg, flags, doc, group */
+@@ -51,6 +54,7 @@ static struct argp_option options[] = {
+	{"mode",	'm', "M",    0, "transfer mode (d = duplex, t = send r = receive)", 0},
+	{"loops",	'l', "NUM",  0, "loops to perform (0 => wait fot CTRL-C", 0},
+	{"no-termios",	'n', NULL,   0, "No termios change (baud rate etc. remains unchanged)", 0},
++	{"loopback",	'k', NULL,   0, "loopback mode", 0},
+	{NULL, 0, NULL, 0, NULL, 0}
+ };
+
+@@ -67,6 +71,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state)
+		go->baudrate = 115200;
+		go->loops = UINT_MAX;
+		go->do_termios = 1;
++		go->loopback = 0;
+		break;
+	case ARGP_KEY_ARG:
+		ret =  ARGP_ERR_UNKNOWN;
+@@ -113,6 +118,9 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state)
+		} else
+			go->loops = num;
+		break;
++	case 'k':
++		go->loopback = 1;
++		break;
+	default:
+		ret = ARGP_ERR_UNKNOWN;
+	}
+@@ -487,6 +495,21 @@ int main(int argc, char *argv[])
+			die("tcflush failed: %m\n");
+	}
+
++	if (opts.loopback) {
++		unsigned int mcr;
++
++		ret = ioctl(fd, TIOCMGET, &mcr);
++		if (ret < 0)
++			die("mcr get failed: %m\n");
++
++		mcr |= TIOCM_LOOP;
++
++		ret = ioctl(fd, TIOCMSET, &mcr);
++		if (ret < 0)
++			die ("mcr set failed: %m\n");
++
++	}
++
+	ret = fcntl(fd, F_SETFL, 0);
+	if (ret)
+		printf("Failed to remove nonblock mode\n");
+--
+1.9.1
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck/0001-Makefile-Change-order-of-link-flags.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck/0001-Makefile-Change-order-of-link-flags.patch
new file mode 100644
index 0000000..2ab4834
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck/0001-Makefile-Change-order-of-link-flags.patch
@@ -0,0 +1,34 @@
+From efc8a4e717ba919c869c2da1c7de2d08bc976926 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 24 Feb 2016 18:48:07 +0000
+Subject: [PATCH] Makefile: Change order of link flags
+
+This helps in injectcting LDFLAGS from env to take effect
+as it appears last on cmdline now
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ Makefile | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index ba2bfbb..6d13e68 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
+-CFLAGS=-O2 -Wall -Wextra -g -Wno-sign-compare -Wno-pointer-sign
+-CC=gcc
++CFLAGS?=-O2 -Wall -Wextra -g -Wno-sign-compare -Wno-pointer-sign
++CC?=gcc
+ all: serialcheck
++serialcheck : serialcheck.o
++	$(CC) -o serialcheck serialcheck.o $(CFLAGS) $(LDFLAGS)
++
++%.o : %.c
++	$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
++
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck/0002-Restore-original-loopback-config.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck/0002-Restore-original-loopback-config.patch
new file mode 100644
index 0000000..1b8c95b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck/0002-Restore-original-loopback-config.patch
@@ -0,0 +1,49 @@
+From a6e5813d2f8402bf3a311c8bcda02623bfb76882 Mon Sep 17 00:00:00 2001
+From: Carlos Hernandez <ceh@ti.com>
+Date: Tue, 24 Feb 2015 16:00:34 -0500
+Subject: [PATCH 2/2] Restore original loopback config
+
+If loopback option is enabled, disable it at the end of the test.
+
+Signed-off-by: Carlos Hernandez <ceh@ti.com>
+Upstream-status: Pending
+---
+ serialcheck.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/serialcheck.c b/serialcheck.c
+index 4100c37..06470f7 100644
+--- a/serialcheck.c
++++ b/serialcheck.c
+@@ -427,6 +427,7 @@ int main(int argc, char *argv[])
+	unsigned char *data;
+	unsigned int open_mode;
+	off_t data_len;
++	unsigned int mcr;
+
+	argp_parse(&argp, argc, argv, 0, NULL, &opts);
+	if (!opts.file_trans)
+@@ -496,8 +497,6 @@ int main(int argc, char *argv[])
+	}
+
+	if (opts.loopback) {
+-		unsigned int mcr;
+-
+		ret = ioctl(fd, TIOCMGET, &mcr);
+		if (ret < 0)
+			die("mcr get failed: %m\n");
+@@ -535,6 +534,12 @@ int main(int argc, char *argv[])
+	ret = tcsetattr(fd, TCSAFLUSH, &old_term);
+	if (ret)
+		printf("tcsetattr() of old ones failed: %m\n");
++	if (opts.loopback) {
++		mcr &= ~(TIOCM_LOOP);
++		ret = ioctl(fd, TIOCMSET, &mcr);
++	}
++	if (ret)
++		printf("disabling loopback failed: %m\n");
+
+	close(fd);
+	return status;
+--
+1.9.1
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck_1.0.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck_1.0.0.bb
new file mode 100644
index 0000000..cd5e0a4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck_1.0.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Application to verify operation of serial ports"
+HOMEPAGE = "http://git.breakpoint.cc/cgit/bigeasy/serialcheck.git/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://git.breakpoint.cc/bigeasy/serialcheck.git \
+           file://0001-Add-option-to-enable-internal-loopback.patch \
+           file://0002-Restore-original-loopback-config.patch \
+           file://0001-Makefile-Change-order-of-link-flags.patch \
+           "
+
+SRCREV = "63854a2d0c0129efab132ec328a75279e013fb84"
+
+S = "${WORKDIR}/git"
+
+DEPENDS_append_libc-musl = " argp-standalone"
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+CFLAGS_prepend = "-Wall -Wextra -Wno-sign-compare -Wno-pointer-sign "
+LDFLAGS_append_libc-musl = " -largp"
+
+do_install() {
+    install -d ${D}${bindir}
+    install ${S}/serialcheck ${D}${bindir}
+    install -d ${D}${docdir}/${BP}
+    install ${S}/Readme.txt ${D}${docdir}/${BP}
+}
+CLEANBROKEN = "1"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/tclap/tclap/Makefile.am-disable-docs.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tclap/tclap/Makefile.am-disable-docs.patch
new file mode 100644
index 0000000..358cbef
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tclap/tclap/Makefile.am-disable-docs.patch
@@ -0,0 +1,31 @@
+From c209ed0e7ffca32fe3714bad9cc54bdb00c286bb Mon Sep 17 00:00:00 2001
+From: Ting Liu <b28495@freescale.com>
+Date: Mon, 15 Apr 2013 16:28:37 +0800
+Subject: [PATCH] Makefile.am: disable docs
+
+Upstream-Status: Inappropriate [OE specific]
+
+docs need some generating tool (for example, doxygen) from host which may
+be not available. Disable it to avoid build issue.
+
+Signed-off-by: Ting Liu <b28495@freescale.com>
+---
+ Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 0a6ebc9..6b42f41 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,7 +1,7 @@
+ 
+ ACLOCAL_AMFLAGS = -I config
+ 
+-SUBDIRS = include examples docs tests msc config
++SUBDIRS = include examples tests msc config
+ 
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = $(PACKAGE).pc
+-- 
+1.7.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/tclap/tclap_1.2.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tclap/tclap_1.2.1.bb
new file mode 100644
index 0000000..ab15a7e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tclap/tclap_1.2.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Templatized C++ Command Line Parser"
+HOMEPAGE = "http://tclap.sourceforge.net/" 
+LICENSE = "MIT" 
+LIC_FILES_CHKSUM = "file://COPYING;md5=c8ab0ff134bcc584d0e6b5b9f8732453"
+
+SRCREV = "3627d9402e529770df9b0edf2aa8c0e0d6c6bb41"
+SRC_URI = "git://git.code.sf.net/p/tclap/code \
+    file://Makefile.am-disable-docs.patch \
+" 
+
+S = "${WORKDIR}/git"
+inherit autotools
+
+ALLOW_EMPTY_${PN} = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/configure.use.fontconfig.with.xft.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/configure.use.fontconfig.with.xft.patch
new file mode 100644
index 0000000..a0c157f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/configure.use.fontconfig.with.xft.patch
@@ -0,0 +1,13 @@
+--- a/configure.in.orig	2014-05-10 14:35:39.859147385 +0000
++++ b/configure.in	2014-05-10 14:36:20.282925184 +0000
+@@ -554,8 +554,8 @@
+ 	dnl make sure package configurator (xft-config or pkg-config
+ 	dnl says that xft is present.
+ 	    found_xft=yes
+-	    XFT_CFLAGS=`pkg-config --cflags xft 2>/dev/null` || found_xft="no"
+-	    XFT_LIBS=`pkg-config --libs xft 2>/dev/null` || found_xft="no"
++	    XFT_CFLAGS=`pkg-config --cflags xft fontconfig 2>/dev/null` || found_xft="no"
++	    XFT_LIBS=`pkg-config --libs xft fontconfig 2>/dev/null` || found_xft="no"
+ 	AC_MSG_RESULT([$found_xft])
+ 	dnl make sure that compiling against Xft header file doesn't bomb
+ 	if test "$found_xft" = "yes" ; then
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff
new file mode 100644
index 0000000..c51e475
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff
@@ -0,0 +1,32 @@
+Patch by Sergei Golovan allows to find tclConfig.sh in /usr/share/tcltk/tcl8.5
+and tkConfig.sh in /usr/share/tcltk/tk8.5 where they are located in Debian
+installation.
+
+--- tk8.5-8.5.8.orig/unix/configure
++++ tk8.5-8.5.8/unix/configure
+@@ -1431,6 +1431,7 @@
+ 			`ls -d ${prefix}/lib 2>/dev/null` \
+ 			`ls -d /usr/local/lib 2>/dev/null` \
+ 			`ls -d /usr/contrib/lib 2>/dev/null` \
++			`ls -d /usr/share/tcltk/tcl8.5 2>/dev/null` \
+ 			`ls -d /usr/lib 2>/dev/null` \
+ 			; do
+ 		    if test -f "$i/tclConfig.sh" ; then
+--- tk8.5-8.5.8.orig/unix/tcl.m4
++++ tk8.5-8.5.8/unix/tcl.m4
+@@ -93,6 +93,7 @@
+ 			`ls -d ${prefix}/lib 2>/dev/null` \
+ 			`ls -d /usr/local/lib 2>/dev/null` \
+ 			`ls -d /usr/contrib/lib 2>/dev/null` \
++			`ls -d /usr/share/tcltk/tcl8.5 2>/dev/null` \
+ 			`ls -d /usr/lib 2>/dev/null` \
+ 			; do
+ 		    if test -f "$i/tclConfig.sh" ; then
+@@ -223,6 +224,7 @@
+ 			`ls -d ${prefix}/lib 2>/dev/null` \
+ 			`ls -d /usr/local/lib 2>/dev/null` \
+ 			`ls -d /usr/contrib/lib 2>/dev/null` \
++			`ls -d /usr/share/tcltk/tk8.5 2>/dev/null` \
+ 			`ls -d /usr/lib 2>/dev/null` \
+ 			; do
+ 		    if test -f "$i/tkConfig.sh" ; then
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff
new file mode 100644
index 0000000..d1bb710
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff
@@ -0,0 +1,16 @@
+--- /tmp/configure.in	2010-05-19 13:29:03.000000000 +0200
++++ unix/configure.in	2010-05-19 13:42:05.000000000 +0200
+@@ -526,13 +526,9 @@
+ 	found_xft="yes"
+ 	dnl make sure package configurator (xft-config or pkg-config
+ 	dnl says that xft is present.
+-	XFT_CFLAGS=`xft-config --cflags 2>/dev/null` || found_xft="no"
+-	XFT_LIBS=`xft-config --libs 2>/dev/null` || found_xft="no"
+-	if test "$found_xft" = "no" ; then
+ 	    found_xft=yes
+ 	    XFT_CFLAGS=`pkg-config --cflags xft 2>/dev/null` || found_xft="no"
+ 	    XFT_LIBS=`pkg-config --libs xft 2>/dev/null` || found_xft="no"
+-	fi
+ 	AC_MSG_RESULT([$found_xft])
+ 	dnl make sure that compiling against Xft header file doesn't bomb
+ 	if test "$found_xft" = "yes" ; then
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/non-linux.diff b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/non-linux.diff
new file mode 100644
index 0000000..7d31f9f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/non-linux.diff
@@ -0,0 +1,27 @@
+Patch by Sergei Golovan (originally by Mike Markley and Chris Waters) fixes
+building on non-linux Debian architectures.
+
+--- tk8.5-8.5.8.orig/unix/configure
++++ tk8.5-8.5.8/unix/configure
+@@ -4447,6 +4447,9 @@
+ 		if test "`uname -s`" = "AIX" ; then
+ 		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
+ 		fi
++		if test "`uname -s`" = "NetBSD" -a -f /etc/debian_version ; then
++		    tcl_cv_sys_version=NetBSD-Debian
++		fi
+ 	    fi
+ 	fi
+
+--- tk8.5-8.5.8.orig/unix/tcl.m4
++++ tk8.5-8.5.8/unix/tcl.m4
+@@ -962,6 +962,9 @@
+ 		if test "`uname -s`" = "AIX" ; then
+ 		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
+ 		fi
++		if test "`uname -s`" = "NetBSD" -a -f /etc/debian_version ; then
++		    tcl_cv_sys_version=NetBSD-Debian
++		fi
+ 	    fi
+ 	fi
+     ])
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tklibrary.diff b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tklibrary.diff
new file mode 100644
index 0000000..ee38c2a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tklibrary.diff
@@ -0,0 +1,22 @@
+--- tk8.5-8.5.8.orig/unix/configure
++++ tk8.5-8.5.8/unix/configure
+@@ -11070,7 +11070,7 @@
+     TCL_STUB_FLAGS="-DUSE_TCL_STUBS"
+ fi
+ 
+-TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
++test -z "$TK_LIBRARY" && TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
+ PRIVATE_INCLUDE_DIR='$(includedir)'
+ HTML_DIR='$(DISTDIR)/html'
+ TK_PKG_DIR='tk$(VERSION)'
+--- tk8.5-8.5.8.orig/unix/configure.in
++++ tk8.5-8.5.8/unix/configure.in
+@@ -607,7 +607,7 @@
+     TCL_STUB_FLAGS="-DUSE_TCL_STUBS"
+ fi
+ 
+-TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
++test -z "$TK_LIBRARY" && TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
+ PRIVATE_INCLUDE_DIR='$(includedir)'
+ HTML_DIR='$(DISTDIR)/html'
+ TK_PKG_DIR='tk$(VERSION)'
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tkprivate.diff b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tkprivate.diff
new file mode 100644
index 0000000..4e15469
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tkprivate.diff
@@ -0,0 +1,41 @@
+Patch by Chris Waters sets path which are normally point to a directory
+with Tk sources to a subdirectory of /usr/include/tcl8.4 (debian/rules
+puts private Tk headers there).
+
+--- tk8.5-8.5.8.orig/unix/tkConfig.sh.in
++++ tk8.5-8.5.8/unix/tkConfig.sh.in
+@@ -55,7 +55,7 @@
+ 
+ # String to pass to linker to pick up the Tk library from its
+ # build directory.
+-TK_BUILD_LIB_SPEC='@TK_BUILD_LIB_SPEC@'
++TK_BUILD_LIB_SPEC='@TK_LIB_SPEC@'
+ 
+ # String to pass to linker to pick up the Tk library from its
+ # installed directory.
+@@ -71,7 +71,7 @@
+ # different place than the directory containing the source files, this
+ # points to the location of the sources, not the location where Tk was
+ # compiled.
+-TK_SRC_DIR='@TK_SRC_DIR@'
++TK_SRC_DIR='@includedir@/tk-private'
+ 
+ # Needed if you want to make a 'fat' shared library library
+ # containing tk objects or link a different wish.
+@@ -86,14 +86,14 @@
+ 
+ # String to pass to linker to pick up the Tk stub library from its
+ # build directory.
+-TK_BUILD_STUB_LIB_SPEC='@TK_BUILD_STUB_LIB_SPEC@'
++TK_BUILD_STUB_LIB_SPEC='@TK_STUB_LIB_SPEC@'
+ 
+ # String to pass to linker to pick up the Tk stub library from its
+ # installed directory.
+ TK_STUB_LIB_SPEC='@TK_STUB_LIB_SPEC@'
+ 
+ # Path to the Tk stub library in the build directory.
+-TK_BUILD_STUB_LIB_PATH='@TK_BUILD_STUB_LIB_PATH@'
++TK_BUILD_STUB_LIB_PATH='@TK_STUB_LIB_PATH@'
+ 
+ # Path to the Tk stub library in the install directory.
+ TK_STUB_LIB_PATH='@TK_STUB_LIB_PATH@'
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.4.bb
new file mode 100644
index 0000000..d8eca50
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.4.bb
@@ -0,0 +1,79 @@
+SUMMARY = "Tool Command Language ToolKit Extension"
+HOMEPAGE = "http://tcl.sourceforge.net"
+SECTION = "devel/tcltk"
+
+# http://www.tcl.tk/software/tcltk/license.html
+LICENSE = "tcl"
+LIC_FILES_CHKSUM = "file://../license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+    file://../compat/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+    file://../doc/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+    file://../library/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+    file://../macosx/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+    file://../tests/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+    file://../unix/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+    file://../win/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+    file://../xlib/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+"
+
+DEPENDS = "tcl virtual/libx11 libxt"
+
+SRC_URI = "\
+    ${SOURCEFORGE_MIRROR}/tcl/${BPN}${PV}-src.tar.gz \
+    file://confsearch.diff;striplevel=2 \
+    file://non-linux.diff;striplevel=2 \
+    file://tklibrary.diff;striplevel=2 \
+    file://tkprivate.diff;striplevel=2 \
+    file://fix-xft.diff \
+    file://configure.use.fontconfig.with.xft.patch \
+"
+SRC_URI[md5sum] = "261754d7dc2a582f00e35547777e1fea"
+SRC_URI[sha256sum] = "08f99df85e5dc9c4271762163c6aabb962c8b297dc5c4c1af8bdd05fc2dd26c1"
+
+S = "${WORKDIR}/${BPN}${PV}/unix"
+
+# Short version format: "8.6"
+VER = "${@os.path.splitext(d.getVar('PV', True))[0]}"
+
+LDFLAGS += "-Wl,-rpath,${libdir}/tcltk/${PV}/lib"
+inherit autotools distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OECONF = "\
+    --enable-threads \
+    --with-x \
+    --with-tcl=${STAGING_BINDIR_CROSS} \
+    --libdir=${libdir} \
+"
+
+do_install_append() {
+    ln -sf libtk${VER}.so ${D}${libdir}/libtk${VER}.so.0
+    oe_libinstall -so libtk${VER} ${D}${libdir}
+    ln -sf wish${VER} ${D}${bindir}/wish
+
+    # Even after passing libdir=${libdir} at config, some incorrect dirs are still generated for the multilib build
+    if [ "$libdir" != "/usr/lib" ]; then
+        # Move files to correct library directory
+        mv ${D}/usr/lib/tk${VER}/* ${D}/${libdir}/tk${VER}/
+        # Remove unneeded/incorrect dir ('usr/lib/')
+        rm -rf ${D}/usr/lib
+    fi
+}
+
+PACKAGECONFIG ??= "xft"
+PACKAGECONFIG[xft] = "--enable-xft,--disable-xft,xft"
+PACKAGECONFIG[xss] = "--enable-xss,--disable-xss,libxscrnsaver libxext"
+
+PACKAGES =+ "${PN}-lib"
+
+FILES_${PN}-lib = "${libdir}/libtk${VER}.so*"
+FILES_${PN} += "${libdir}/tk*"
+
+# isn't getting picked up by shlibs code
+RDEPENDS_${PN} += "tk-lib"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native"
+
+# Fix the path in sstate
+SSTATE_SCAN_FILES += "*Config.sh"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/imap-2007e-shared.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/imap-2007e-shared.patch
new file mode 100644
index 0000000..4434e83
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/imap-2007e-shared.patch
@@ -0,0 +1,82 @@
+Fix linking libraries built with -fPIC with this library
+
+Patch borrowed from Fedora
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+Upstream-Status: Pending
+
+diff -up imap-2007e/src/osdep/unix/Makefile.shared imap-2007e/src/osdep/unix/Makefile
+--- imap-2007e/src/osdep/unix/Makefile.shared	2009-07-07 19:28:02.909755512 -0500
++++ imap-2007e/src/osdep/unix/Makefile	2009-07-07 19:29:35.870006799 -0500
+@@ -170,6 +170,10 @@ BUILD=$(MAKE) build EXTRACFLAGS='$(EXTRA
+  EXTRADRIVERS='$(EXTRADRIVERS)' EXTRAAUTHENTICATORS='$(EXTRAAUTHENTICATORS)'\
+  PASSWDTYPE=$(PASSWDTYPE) SSLTYPE=$(SSLTYPE) IP=$(IP)
+ 
++# Need this for the shared library rule to work correctly
++.SUFFIXES: .o .so
++SOFILES=${BINARIES:.o=.so}
++
+ 
+ # Here if no make argument established
+ 
+@@ -845,18 +849,24 @@ vu2:	# VAX Ultrix 2.3, etc.
+ 
+ # Build it!
+ 
+-build:	clean once $(ARCHIVE)
++build:	clean once $(ARCHIVE) $(SHLIBNAME)
+ 
+-all:	$(ARCHIVE)
++all:	$(ARCHIVE) $(SHLIBNAME)
+ 
+ $(ARCHIVE): $(BINARIES)
+ 	sh -c '$(RM) $(ARCHIVE) || true'
+ 	@$(CAT) ARCHIVE
+ 	@$(SH) ARCHIVE
+ 
+-.c.o:
+-	`$(CAT) CCTYPE` -c `$(CAT) CFLAGS` $*.c
++$(SHLIBNAME):	$(SOFILES)
++	gcc -shared -Wl,-soname,$(SHLIBNAME) -o $(SHLIBNAME) $(SOFILES) `cat LDFLAGS`
++	ln -s $(SHLIBNAME) lib$(SHLIBBASE).so
+ 
++.c.so:	osdep.h
++	$(CC) -fPIC -DPIC -D_REENTRANT -c `$(CAT) CFLAGS` ${@:.so=.c} -o $@
++
++.c.o:
++	$(CC) -fPIC -DPIC -D_REENTRANT -c `$(CAT) CFLAGS` $*.c
+ 
+ # Cleanup
+ 
+@@ -895,8 +905,7 @@ utf8aux.o: mail.h misc.h osdep.h utf8.h
+ 
+ 
+ # OS-dependent
+-
+-osdep.o:mail.h misc.h env.h fs.h ftl.h nl.h tcp.h \
++OSDEPS= mail.h misc.h env.h fs.h ftl.h nl.h tcp.h \
+ 	osdep.h env_unix.h tcp_unix.h \
+ 	osdep.c env_unix.c fs_unix.c ftl_unix.c nl_unix.c tcp_unix.c ip_unix.c\
+ 	auths.c crexcl.c flockcyg.c flocklnx.c flocksim.c fsync.c \
+@@ -910,12 +919,19 @@ osdep.o:mail.h misc.h env.h fs.h ftl.h n
+ 	write.c sslstdio.c \
+ 	strerror.c strpbrk.c strstr.c strtok.c strtoul.c \
+ 	OSCFLAGS
++
++osdep.o:	$(OSDEPS)
++	$(CC) -fPIC -DPIC -D_REENTRANT `$(CAT) CFLAGS` `$(CAT) OSCFLAGS` -c osdep.c
++	@echo ========================================================================
+ 	@echo Building OS-dependent module
+ 	@echo If you get No such file error messages for files x509.h, ssl.h,
+ 	@echo pem.h, buffer.h, bio.h, and crypto.h, that means that OpenSSL
+ 	@echo is not installed on your system.  Either install OpenSSL first
+ 	@echo or build with command: make `$(CAT) OSTYPE` SSLTYPE=none
+-	`$(CAT) CCTYPE` -c `$(CAT) CFLAGS` `$(CAT) OSCFLAGS` -c osdep.c
++	@echo ========================================================================
++
++osdep.so:	$(OSDEPS)
++	$(CC) -fPIC -DPIC -D_REENTRANT `$(CAT) CFLAGS` `cat OSCFLAGS` -c osdep.c -o $@
+ 
+ osdep.c: osdepbas.c osdepckp.c osdeplog.c osdepssl.c
+ 	$(CAT) osdepbas.c osdepckp.c osdeplog.c osdepssl.c > osdep.c
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/imap-2007f-format-security.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/imap-2007f-format-security.patch
new file mode 100644
index 0000000..6ec0476
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/imap-2007f-format-security.patch
@@ -0,0 +1,20 @@
+Fix error found with "-Werror=format-security" flag
+
+Patch borrowed from Fedora
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+Upstream-Status: Pending
+
+diff -Naur imap-2007f.orig/src/osdep/unix/flocklnx.c imap-2007f/src/osdep/unix/flocklnx.c
+--- imap-2007f.orig/src/osdep/unix/flocklnx.c	2011-07-23 02:20:11.000000000 +0200
++++ imap-2007f/src/osdep/unix/flocklnx.c	2014-04-14 19:17:46.429000000 +0200
+@@ -57,7 +57,7 @@
+     case ENOLCK:		/* lock table is full */
+       sprintf (tmp,"File locking failure: %s",strerror (errno));
+       mm_log (tmp,WARN);	/* give the user a warning of what happened */
+-      if (!logged++) syslog (LOG_ERR,tmp);
++      if (!logged++) syslog (LOG_ERR, "%s", tmp);
+ 				/* return failure if non-blocking lock */
+       if (op & LOCK_NB) return -1;
+       sleep (5);		/* slow down in case it loops */
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/quote_cctype.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/quote_cctype.patch
new file mode 100644
index 0000000..f729ee2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/quote_cctype.patch
@@ -0,0 +1,12 @@
+diff -urN imap-2007.orig/Makefile imap-2007/Makefile
+--- imap-2007.orig/Makefile	2007-12-20 23:11:10.000000000 +0100
++++ imap-2007/Makefile	2008-03-19 14:08:47.000000000 +0100
+@@ -690,7 +690,7 @@
+ 	@$(SH) -c '(test $(BUILDTYPE) = rebuild -o $(BUILDTYPE) = `$(CAT) OSTYPE`) || (echo Already built for `$(CAT) OSTYPE` -- you must do \"make clean\" first && exit 1)'
+ 	@echo Rebuilding c-client for `$(CAT) OSTYPE`...
+ 	@$(TOUCH) SPECIALS
+-	$(CD) c-client;$(MAKE) all CC=`$(CAT) CCTYPE` \
++	$(CD) c-client;$(MAKE) all CC="`$(CAT) CCTYPE`" \
+ 	 CFLAGS="`$(CAT) CFLAGS`" `$(CAT) SPECIALS`
+ 
+ rebuildclean:
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap_2007f.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap_2007f.bb
new file mode 100644
index 0000000..52b689e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap_2007f.bb
@@ -0,0 +1,44 @@
+SUMMARY = "UW c-client library for mail protocols"
+SECTION = "devel"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a6a4ddbb7cd2999f6827ee143f6fcd97"
+
+DEPENDS = "openssl"
+
+SRC_URI = "ftp://ftp.cac.washington.edu/imap/imap-${PV}.tar.gz \
+           file://quote_cctype.patch \
+           file://imap-2007e-shared.patch \
+           file://imap-2007f-format-security.patch \
+           "
+
+SRC_URI[md5sum] = "2126fd125ea26b73b20f01fcd5940369"
+SRC_URI[sha256sum] = "53e15a2b5c1bc80161d42e9f69792a3fa18332b7b771910131004eb520004a28"
+
+S = "${WORKDIR}/imap-${PV}"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
+PACKAGECONFIG[pam] = ",,libpam"
+
+EXTRA_OEMAKE = "CC='${CC}'"
+
+HEADERS = "src/c-client/*.h src/osdep/unix/*.h c-client/auths.c c-client/linkage.c c-client/linkage.h c-client/osdep.h"
+
+do_compile() {
+    echo "SSLINCLUDE=${STAGING_INCDIR} SSLLIB=${STAGING_LIBDIR}" > ${S}/SPECIALS
+    oe_runmake ${@bb.utils.contains('PACKAGECONFIG', 'pam', 'lnp', 'slx', d)}
+}
+
+do_install() {
+    install -d ${D}${includedir}/c-client
+    install ${HEADERS} ${D}${includedir}/c-client
+    install -d ${D}${libdir}
+    install c-client/c-client.a ${D}${libdir}/libc-client.a
+}
+
+RPROVIDES_${PN} = "libc-client"
+RREPLACES_${PN} = "libc-client"
+RCONFLICTS_${PN} = "libc-client"
+
+ALLOW_EMPTY_${PN} = "1"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool.inc b/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool.inc
new file mode 100644
index 0000000..0745130
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "Vala DBus Binding Tool"
+SECTION = "devel"
+DEPENDS = "vala libgee libxml2 intltool-native"
+HOMEPAGE = "http://wiki.freesmartphone.org/index.php/Implementations/vala-dbus-binding-tool"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+PE = "1"
+INC_PR = "r3"
+
+export XDG_DATA_DIRS = "${STAGING_DATADIR}"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/freesmartphone/sources/${BP}.tar.bz2"
+
+inherit autotools perlnative pkgconfig
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool/0001-configure.ac-don-t-use-dash-in-m4-macro-names.patch b/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool/0001-configure.ac-don-t-use-dash-in-m4-macro-names.patch
new file mode 100644
index 0000000..14d84ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool/0001-configure.ac-don-t-use-dash-in-m4-macro-names.patch
@@ -0,0 +1,34 @@
+From 8abed2e5bf8e7815b11df6d22042d5f0ac8efcb0 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 5 May 2015 13:43:35 +0200
+Subject: [PATCH] configure.ac: don't use dash in m4 macro names
+
+* otherwise it doesn't get expanded and vala-dbus-binding-tool ends with version 'vala-dbus-binding-tool_version'
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ configure.ac | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 48f007c..18d0bde 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1,9 +1,9 @@
+-m4_define([vala-dbus-binding-tool_released], [0])
+-m4_define([vala-dbus-binding-tool_base_version], [1.0])
+-m4_define([vala-dbus-binding-tool_maybe_gitrev], m4_if(vala-dbus-binding-tool_released, [1], [], [m4_esyscmd([git show-ref --hash=5 HEAD | tr -d '\n\r'])]))
+-m4_define([vala-dbus-binding-tool_version], m4_if(vala-dbus-binding-tool_released, [1], [vala-dbus-binding-tool_base_version], [vala-dbus-binding-tool_base_version-vala-dbus-binding-tool_maybe_gitrev]))
++m4_define([vala_dbus_binding_tool_released], [0])
++m4_define([vala_dbus_binding_tool_base_version], [1.0])
++m4_define([vala_dbus_binding_tool_maybe_gitrev], m4_if(vala_dbus_binding_tool_released, [1], [], [m4_esyscmd([git show-ref --hash=5 HEAD | tr -d '\n\r'])]))
++m4_define([vala_dbus_binding_tool_version], m4_if(vala_dbus_binding_tool_released, [1], [vala_dbus_binding_tool_base_version], [vala_dbus_binding_tool_base_version-vala_dbus_binding_tool_maybe_gitrev]))
+ 
+-AC_INIT([vala-dbus-binding-tool], [vala-dbus-binding-tool_version], [fso@openphoenux.org], [vala-dbus-binding-tool])
++AC_INIT([vala-dbus-binding-tool], [vala_dbus_binding_tool_version], [fso@openphoenux.org], [vala-dbus-binding-tool])
+ AC_CONFIG_SRCDIR([src/Makefile.am])
+ AC_CONFIG_HEADERS(config.h)
+ AM_INIT_AUTOMAKE([dist-bzip2])
+-- 
+2.3.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool_0.4.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool_0.4.0.bb
new file mode 100644
index 0000000..82fb73c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool_0.4.0.bb
@@ -0,0 +1,4 @@
+require vala-dbus-binding-tool.inc
+
+SRC_URI[md5sum] = "59eab7abf38f35355d3786803bd2441f"
+SRC_URI[sha256sum] = "1e37ab2e6238eaef9f573560ea7379e6955570f7c9503083e50c4c185c1956df"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool_git.bb
new file mode 100644
index 0000000..02a869f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/vala-dbus-binding-tool/vala-dbus-binding-tool_git.bb
@@ -0,0 +1,18 @@
+require vala-dbus-binding-tool.inc
+
+# Temporary remove negative preference, because there are 2 versions of 0.4.0 archives:
+# the original one depending on libgee1.0 from
+# http://downloads.freesmartphone.org/sources/${BPN}/${BP}.tar.bz2
+# and new one depending on libgee0.8 from
+# http://sourceforge.net/projects/freesmartphone/files/sources/
+# The original one can be already deployed on various premirrors,
+# so prefer the git recipe which doesn't suffer from this issue
+# DEFAULT_PREFERENCE = "-1"
+
+SRCREV = "742c04c2bb0743891904522ce47e50f9e5c99b12"
+PV = "0.4.0+gitr${SRCPV}"
+
+SRC_URI = "git://github.com/freesmartphone/vala-dbus-binding-tool.git;protocol=https \
+    file://0001-configure.ac-don-t-use-dash-in-m4-macro-names.patch \
+"
+S = "${WORKDIR}/git"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/xerces-c/xerces-c_3.1.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/xerces-c/xerces-c_3.1.3.bb
new file mode 100644
index 0000000..2355c9d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/xerces-c/xerces-c_3.1.3.bb
@@ -0,0 +1,46 @@
+SUMMARY = "Xerces-c is a validating xml parser written in C++"
+DESCRIPTION = "Xerces-C++ makes it easy to give your application \
+               the ability to read and write XML data. \
+               A shared library is provided for parsing, generating, \
+               manipulating, and validating XML documents using \
+               the DOM, SAX, and SAX2 APIs."
+HOMEPAGE = "http://xerces.apache.org/xerces-c/"
+SECTION =  "libs"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI = "http://apache.lauf-forum.at/xerces/c/3/sources/${BP}.tar.bz2"
+SRC_URI[md5sum] = "5e333b55cb43e6b025ddf0e5d0f0fb0d"
+SRC_URI[sha256sum] = "fc5e5e0247b108b8d64d75aeb124cabdee9b7fcd725a89fe2242b4637b25c1fa"
+
+inherit autotools
+
+PACKAGECONFIG ??= "curl icu"
+PACKAGECONFIG[curl] = "--with-curl=${STAGING_DIR},--with-curl=no,curl"
+PACKAGECONFIG[icu] = "--with-icu=${STAGING_DIR},--with-icu=no,icu"
+
+do_install_prepend () {
+        sed -i -e 's:-L${STAGING_DIR}/lib:-L\$\{libdir\}:g' ${B}/xerces-c.pc
+}
+
+PACKAGES = "libxerces-c \
+            libxerces-c-dbg \
+            libxerces-c-dev \
+            xerces-c-samples \
+            xerces-c-samples-dbg \
+            libxerces-c-staticdev \
+	   " 
+
+FILES_libxerces-c = "${libdir}/libxerces-c-3.1.so"
+FILES_libxerces-c-dbg = "${libdir}/.debug \ 
+                         ${prefix}/src/debug "
+FILES_libxerces-c-dev = "${libdir}/lib*.la \
+                         ${libdir}/libxerces-c.so \
+                         ${libdir}/pkgconfig/xerces-c.pc \
+                         ${includedir}/xercesc \
+			 "
+FILES_xerces-c-samples = "${bindir}/*"
+FILES_xerces-c-samples-dbg = "${bindir}/.debug/"
+FILES_libxerces-c-staticdev = "${libdir}/lib*.a"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-devtools/yajl/yajl_2.1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-devtools/yajl/yajl_2.1.0.bb
new file mode 100644
index 0000000..1bf5389
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-devtools/yajl/yajl_2.1.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Yet Another JSON Library."
+
+DESCRIPTION = "YAJL is a small event-driven (SAX-style) JSON parser \
+written in ANSI C, and a small validating JSON generator."
+
+HOMEPAGE = "http://lloyd.github.com/yajl/"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://COPYING;md5=39af6eb42999852bdd3ea00ad120a36d"
+
+SRC_URI = "git://github.com/lloyd/yajl"
+SRCREV = "a0ecdde0c042b9256170f2f8890dd9451a4240aa"
+
+S = "${WORKDIR}/git"
+
+inherit cmake lib_package
+
+EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib', True).replace('lib', '')}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpica_20150515.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpica_20150515.bb
new file mode 100644
index 0000000..de897e1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpica_20150515.bb
@@ -0,0 +1,46 @@
+SUMMARY = "ACPICA tools for the development and debug of ACPI tables"
+DESCRIPTION = "The ACPI Component Architecture (ACPICA) project provides an \
+OS-independent reference implementation of the Advanced Configuration and \
+Power Interface Specification (ACPI). ACPICA code contains those portions of \
+ACPI meant to be directly integrated into the host OS as a kernel-resident \
+subsystem, and a small set of tools to assist in developing and debugging \
+ACPI tables."
+
+HOMEPAGE = "http://www.acpica.org/"
+SECTION = "console/tools"
+
+LICENSE = "BSD | GPLv2"
+LIC_FILES_CHKSUM = "file://generate/unix/readme.txt;md5=204407e197c1a01154a48f6c6280c3aa"
+
+COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
+
+DEPENDS = "bison flex"
+
+SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix2-${PV}.tar.gz \
+    file://no-werror.patch \
+    "
+SRC_URI[md5sum] = "2bc4a7ccc82de9df9fa964f784ecb29c"
+SRC_URI[sha256sum] = "61204ec56d71bc9bfa2ee2ade4c66f7e8541772ac72ef8ccc20b3f339cc96374"
+
+S = "${WORKDIR}/acpica-unix2-${PV}"
+
+EXTRA_OEMAKE = "CC='${CC}' 'OPT_CFLAGS=-Wall'"
+
+do_install() {
+    install -D -p -m0755 generate/unix/bin*/iasl ${D}${bindir}/iasl
+    install -D -p -m0755 generate/unix/bin*/acpibin ${D}${bindir}/acpibin
+    install -D -p -m0755 generate/unix/bin*/acpiexec ${D}${bindir}/acpiexec
+    install -D -p -m0755 generate/unix/bin*/acpihelp ${D}${bindir}/acpihelp
+    install -D -p -m0755 generate/unix/bin*/acpinames ${D}${bindir}/acpinames
+    install -D -p -m0755 generate/unix/bin*/acpisrc ${D}${bindir}/acpisrc
+    install -D -p -m0755 generate/unix/bin*/acpixtract ${D}${bindir}/acpixtract
+}
+
+# iasl*.bb is a subset of this recipe, so RREPLACE it
+PROVIDES = "iasl"
+RPROVIDES_${PN} += "iasl"
+RREPLACES_${PN} += "iasl"
+RCONFLIGHTS_${PN} += "iasl"
+
+NATIVE_INSTALL_WORKS = "1"
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpitests/aapits-linux.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpitests/aapits-linux.patch
new file mode 100644
index 0000000..7c5d6b0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpitests/aapits-linux.patch
@@ -0,0 +1,336 @@
+From: Al Stone <ahs3@ahs3.net>
+Date: Mon, 7 Apr 2014 19:09:37 +0000
+Subject: [PATCH 1/2] Fixup aapits build
+
+From http://git.linaro.org/people/al.stone/acpica-tools.git
+Upstream-status: Unknown
+
+diff -urN acpica-unix2-20130626/tests/aapits/atexec.c acpica-unix2-20130626-aapits/tests/aapits/atexec.c
+--- acpica-unix2-20130626/tests/aapits/atexec.c	2013-01-17 12:48:28.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atexec.c	2013-07-25 13:44:23.023894441 -0600
+@@ -639,6 +639,7 @@
+ }
+ 
+ 
++#if ACPI_MACHINE_WIDTH == 32
+ /*******************************************************************************
+  *
+  * FUNCTION:    AtBuildLocalRSDT
+@@ -757,8 +758,9 @@
+         LocalRSDT->Header.Checksum = (UINT8)~LocalRSDT->Header.Checksum;
+     }
+ }
++#endif
+ 
+ 
+ /*******************************************************************************
+  *
+  * FUNCTION:    AtBuildLocalXSDT
+@@ -1424,7 +1426,7 @@
+         ACPI_WARNING ((AE_INFO,
+             "Request on [%4.4s] is beyond region limit Req-%X+%X, Base=%X, Len-%X\n",
+             (RegionObject->Region.Node)->Name.Ascii, (UINT32) Address,
+-            ByteWidth, (UINT32) BufferAddress, Length));
++            ByteWidth, (UINT32) BufferAddress, (UINT32) Length));
+ 
+         return (AE_AML_REGION_LIMIT);
+     }
+@@ -1792,7 +1796,9 @@
+             Path, Obj.Integer.Value, Value);
+ #else
+         printf ("API Error: Value of %s is 0x%llx instead of expected 0x%llx\n",
+-            Path, Obj.Integer.Value, Value);
++            Path,
++	    (long long unsigned int) Obj.Integer.Value,
++	    (long long unsigned int) Value);
+ #endif
+         Status = AE_ERROR;
+     }
+@@ -1871,7 +1877,7 @@
+     {
+         TestErrors++;
+         printf ("Test Error: cannot allocate buffer of %d bytes\n",
+-            Results.Length);
++                (int) Results.Length);
+         return (AE_NO_MEMORY);
+     }
+     Results.Pointer = Object;
+@@ -1952,7 +1956,8 @@
+     {
+         printf ("AtCheckBuffer: unexpected length %d of Buffer vs"
+             " calculated %d bytes\n",
+-            Results.Length, ACPI_ROUND_UP_TO_NATIVE_WORD(sizeof (ACPI_OBJECT) + Length));
++            (int)Results.Length,
++	    (int)(ACPI_ROUND_UP_TO_NATIVE_WORD(sizeof (ACPI_OBJECT) + Length)));
+     }
+ 
+     /* Initialize the return buffer structure */
+@@ -1961,7 +1968,7 @@
+     {
+         TestErrors++;
+         printf ("Test Error: cannot allocate buffer of %d bytes\n",
+-            Results.Length);
++            (int) Results.Length);
+         return (AE_NO_MEMORY);
+     }
+     Results.Pointer = Object;
+diff -urN acpica-unix2-20130626/tests/aapits/atinit.c acpica-unix2-20130626-aapits/tests/aapits/atinit.c
+--- acpica-unix2-20130626/tests/aapits/atinit.c	2013-01-17 12:48:28.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atinit.c	2013-07-25 13:20:19.706705960 -0600
+@@ -3024,7 +3024,7 @@
+             AapiErrors++;
+             printf ("API Error: AcpiGetSystemInfo() returned"
+                 " Length %d, expected %d\n",
+-                OutBuffer.Length, sizeof (Info));
++                (int) OutBuffer.Length, (int) sizeof (Info));
+             return (AE_ERROR);
+         }
+ 
+@@ -3046,7 +3046,7 @@
+             AapiErrors++;
+             printf ("API Error: AcpiGetSystemInfo() returned"
+                 " Length %d, expected %d\n",
+-                OutBuffer.Length, sizeof (Info));
++                (int) OutBuffer.Length, (int) sizeof (Info));
+             return (AE_ERROR);
+         }
+ 
+@@ -3066,7 +3066,7 @@
+             AapiErrors++;
+             printf ("API Error: AcpiGetSystemInfo() returned"
+                 " Length %d, expected %d\n",
+-                OutBuffer.Length, sizeof (Info));
++                (int) OutBuffer.Length, (int) sizeof (Info));
+             return (AE_ERROR);
+         }
+         else if (OutBuffer.Pointer != &Info)
+@@ -3149,7 +3149,7 @@
+             AapiErrors++;
+             printf ("API Error: AcpiGetSystemInfo() returned"
+                 " Length %d, expected %d\n",
+-                OutBuffer.Length, sizeof (Info));
++                (int) OutBuffer.Length, (int) sizeof (Info));
+             return (AE_ERROR);
+         }
+         else if (OutBuffer.Pointer != &Info)
+@@ -3214,7 +3214,7 @@
+             AapiErrors++;
+             printf ("API Error: AcpiGetSystemInfo() returned"
+                 " Length %d, expected %d\n",
+-                OutBuffer.Length, sizeof (ACPI_SYSTEM_INFO));
++                (int) OutBuffer.Length, (int) sizeof (ACPI_SYSTEM_INFO));
+             return (AE_ERROR);
+         }
+         else
+diff -urN acpica-unix2-20130626/tests/aapits/atmain.c acpica-unix2-20130626-aapits/tests/aapits/atmain.c
+--- acpica-unix2-20130626/tests/aapits/atmain.c	2013-01-17 12:48:28.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atmain.c	2013-07-25 13:18:22.083323948 -0600
+@@ -315,7 +315,7 @@
+     {
+         printf ("ACPICA API TS err: test num %ld of test case %ld"
+             " is not implemented\n",
+-            test_num, test_case);
++            (long int) test_num, (long int) test_case);
+         return (AtRetNotImpl);
+     }
+ 
+@@ -430,7 +432,7 @@
+     if (test_case < 1 || test_case > AT_TEST_CASE_NUM)
+     {
+         printf ("ACPICA API TS err: test case %ld is out of range 1 - %d\n",
+-            test_case, AT_TEST_CASE_NUM);
++            (long int) test_case, (int) AT_TEST_CASE_NUM);
+         return (AtRetBadParam);
+     }
+ 
+@@ -438,7 +440,7 @@
+     if (test_num < 0 || test_num > AtTestCase[test_case].TestsNum)
+     {
+         printf ("ACPICA API TS err: test num %ld is out of range 0 - %d\n",
+-            test_num, AtTestCase[test_case].TestsNum);
++            (long int) test_num, AtTestCase[test_case].TestsNum);
+         return (AtRetBadParam);
+     }
+
+diff -urN acpica-unix2-20130626/tests/aapits/atnamespace.c acpica-unix2-20130626-aapits/tests/aapits/atnamespace.c
+--- acpica-unix2-20130626/tests/aapits/atnamespace.c	2013-01-17 12:48:28.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atnamespace.c	2013-07-25 13:24:15.366466707 -0600
+@@ -2535,7 +2535,8 @@
+ #else
+                 printf ("API Error: Address of %s (0x%llX) != (0x%llX)\n",
+                     PathNames[2 * i + 1],
+-                    Info->Address, ExpectedInfo[i].Address);
++                    (long long unsigned int) Info->Address,
++		    (long long unsigned int) ExpectedInfo[i].Address);
+ #endif
+ #else
+                 printf ("API Error: Address of %s (0x%X) != (0x%X)\n",
+@@ -2908,7 +2909,8 @@
+         TestErrors++;
+         printf ("AtGetNextObjectTypeCommon: different numbers of entities"
+             "in TypesNames (%d) and LevelTypes0000 (%d)\n",
+-            TypesCount, sizeof (LevelTypes0000) / sizeof (ACPI_OBJECT_TYPE));
++            TypesCount,
++	    (int) (sizeof (LevelTypes0000) / sizeof (ACPI_OBJECT_TYPE)));
+         return (AE_ERROR);
+     }
+ 
+@@ -4192,7 +4194,9 @@
+             Pathname, Obj.Integer.Value, Value);
+ #else
+         printf ("API Error: Value of %s is 0x%llx instead of expected 0x%llx\n",
+-            Pathname, Obj.Integer.Value, Value);
++            Pathname,
++	    (long long unsigned int) Obj.Integer.Value,
++	    (long long unsigned int) Value);
+ #endif
+         Status = AE_ERROR;
+     }
+@@ -5199,7 +5203,7 @@
+             {
+                 AapiErrors++;
+                 printf ("API Error: AcpiOsAllocate(%d) returned NULL\n",
+-                    OutName.Length);
++                    (int) OutName.Length);
+                 return (AE_ERROR);
+             }
+         }
+diff -urN acpica-unix2-20130626/tests/aapits/atosxfctrl.c acpica-unix2-20130626-aapits/tests/aapits/atosxfctrl.c
+--- acpica-unix2-20130626/tests/aapits/atosxfctrl.c	2013-01-17 12:48:28.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atosxfctrl.c	2013-07-25 13:30:00.375492751 -0600
+@@ -737,13 +737,15 @@
+ #if ACPI_MACHINE_WIDTH == 64
+ #ifdef    _MSC_VER
+         printf("OsxfCtrlFingReg: unexpected Width %d of Reg 0x%I64x\n",
++            Width, Address);
+ #else
+         printf("OsxfCtrlFingReg: unexpected Width %d of Reg 0x%llx\n",
++            Width, (long long unsigned int) Address);
+ #endif
+ #else
+         printf("OsxfCtrlFingReg: unexpected Width %d of Reg 0x%x\n",
+-#endif
+             Width, Address);
++#endif
+         return (NULL);
+     }
+ 
+@@ -764,15 +766,19 @@
+ #ifdef    _MSC_VER
+                 printf("OsxfCtrlFingReg: intersection Regs (0x%I64x: 0x%x)"
+                     " and (0x%I64x: 0x%x)\n",
++                    Reg->Address, Reg->Width, Address, Width);
+ #else
+                 printf("OsxfCtrlFingReg: intersection Regs (0x%llx: 0x%x)"
+                     " and (0x%llx: 0x%x)\n",
++                    (long long unsigned int) Reg->Address,
++		    Reg->Width,
++		    (long long unsigned int) Address, Width);
+ #endif
+ #else
+                 printf("OsxfCtrlFingReg: intersection Regs (0x%x: 0x%x)"
+                     " and (0x%x: 0x%x)\n",
+-#endif
+                     Reg->Address, Reg->Width, Address, Width);
++#endif
+                 return (NULL);
+             }
+         }
+@@ -786,13 +792,15 @@
+ #if ACPI_MACHINE_WIDTH == 64
+ #ifdef    _MSC_VER
+             printf("OsxfCtrlFingReg: no memory for Reg (0x%I64x: 0x%x)\n",
++                Reg->Address, Reg->Width);
+ #else
+             printf("OsxfCtrlFingReg: no memory for Reg (0x%llx: 0x%x)\n",
++                (long long unsigned int) Reg->Address, Reg->Width);
+ #endif
+ #else
+             printf("OsxfCtrlFingReg: no memory for Reg (0x%x: 0x%x)\n",
+-#endif
+                 Reg->Address, Reg->Width);
++#endif
+             return (NULL);
+         }
+         Reg->Type = Type;
+@@ -932,14 +940,19 @@
+ #if ACPI_MACHINE_WIDTH == 64
+ #ifdef    _MSC_VER
+             printf("%.2u (%s Address 0x%I64x: Width %.2u) r/w counts: %u/%u\n",
++                i, (Reg->Type == EMUL_REG_SYS)? "SYS": "IO",
++                Reg->Address, Reg->Width, Reg->ReadCount, Reg->WriteCount);
+ #else
+             printf("%.2u (%s Address 0x%llx: Width %.2u) r/w counts: %u/%u\n",
++                i, (Reg->Type == EMUL_REG_SYS)? "SYS": "IO",
++                (long long unsigned int) Reg->Address,
++		Reg->Width, Reg->ReadCount, Reg->WriteCount);
+ #endif
+ #else
+             printf("%.2u (%s Address 0x%.4x: Width %.2u) r/w counts: %u/%u\n",
+-#endif
+                 i, (Reg->Type == EMUL_REG_SYS)? "SYS": "IO",
+                 Reg->Address, Reg->Width, Reg->ReadCount, Reg->WriteCount);
++#endif
+             Reg = Reg->Next;
+             i++;
+         }
+diff -urN acpica-unix2-20130626/tests/aapits/atresource.c acpica-unix2-20130626-aapits/tests/aapits/atresource.c
+--- acpica-unix2-20130626/tests/aapits/atresource.c	2013-01-17 12:48:29.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atresource.c	2013-07-25 13:25:49.423565947 -0600
+@@ -174,7 +174,7 @@
+         AapiErrors++;
+         printf ("API Error: AcpiGetCurrentResources(%s) returned Length %d,"
+             " expected %d\n",
+-            Pathname, OutBuffer.Length, RT0000_DEV0_CRS_LEN);
++            Pathname, (int) OutBuffer.Length, RT0000_DEV0_CRS_LEN);
+         return (AE_ERROR);
+     }
+ 
+@@ -490,7 +490,7 @@
+         AapiErrors++;
+         printf ("API Error: AcpiGetCurrentResources(%s) returned Length %d,"
+             " expected %d\n",
+-            Pathname, OutBuffer.Length, RT0000_DEV0_CRS_LEN);
++            Pathname, (int) OutBuffer.Length, RT0000_DEV0_CRS_LEN);
+         return (AE_ERROR);
+     }
+ 
+@@ -689,7 +689,7 @@
+         AapiErrors++;
+         printf ("Api Error: Resource->Length (%d) != %d\n",
+             CurrentResource->Length,
+-            ACPI_ROUND_UP_TO_NATIVE_WORD (ACPI_RS_SIZE (ACPI_RESOURCE_IRQ)));
++            (int) (ACPI_ROUND_UP_TO_NATIVE_WORD (ACPI_RS_SIZE (ACPI_RESOURCE_IRQ))));
+     }
+ 
+     if (CurrentResource->Data.Irq.Triggering != 0) /* Level-Triggered */
+@@ -981,7 +981,7 @@
+         AapiErrors++;
+         printf ("API Error: AcpiGetPossibleResources(%s) returned Length %d,"
+             " expected %d\n",
+-            Pathname, OutBuffer.Length, RT0000_DEV0_CRS_LEN);
++            Pathname, (int) OutBuffer.Length, RT0000_DEV0_CRS_LEN);
+         return (AE_ERROR);
+     }
+ 
+@@ -1923,7 +1923,7 @@
+         AapiErrors++;
+         printf ("API Error: AcpiGetIrqRoutingTable(%s) returned Length %d,"
+             " expected %d\n",
+-            Pathname, OutBuffer.Length, 0xA48);
++            Pathname, (int) OutBuffer.Length, 0xA48);
+         return (AE_ERROR);
+     }
+
+diff -urN acpica-unix2-20130626/tests/aapits/Makefile acpica-unix2-20130626-aapits/tests/aapits/Makefile
+--- acpica-unix2-20130626/tests/aapits/Makefile	2013-01-17 12:48:29.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/Makefile	2013-07-25 15:17:09.309236422 -0600
+@@ -194,7 +194,7 @@
+ CFLAGS+= -Wall -g -D_LINUX -DNDEBUG -D_CONSOLE -DACPI_APITS -DACPI_EXEC_APP -D_MULTI_THREADED -Wstrict-prototypes -I../../source/include
+
+ 
+-acpiexec : $(patsubst %.c,%.o, $(SRCS))
++$(PROG) : $(patsubst %.c,%.o, $(SRCS))
+ 	$(CC) $(LDFLAGS) $(patsubst %.c,%.o, $(SRCS)) -o $(PROG)
+ 
+ CLEANFILES= $(PROG)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpitests/aapits-makefile.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpitests/aapits-makefile.patch
new file mode 100644
index 0000000..4d9e997
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpitests/aapits-makefile.patch
@@ -0,0 +1,34 @@
+From: Al Stone <ahs3@ahs3.net>
+Date: Mon, 7 Apr 2014 19:09:37 +0000
+Subject: [PATCH 1/2] Fixup aapits build
+
+From http://git.linaro.org/people/al.stone/acpica-tools.git
+Upstream-status: Unknown
+
+diff -urN acpica-unix2-20140325/tests/aapits/Makefile acpica-unix2-20140325/tests/aapits/Makefile
+--- acpica-unix2-20140325/tests/aapits/Makefile	2014-04-05 14:23:14.683636794 -0600
++++ acpica-unix2-20140325-aapits/tests/aapits/Makefile	2014-04-05 15:10:57.879184598 -0600
+@@ -16,6 +16,7 @@
+ 	atosxfwrap.c \
+ 	osunixxf.c \
+ 	../../source/common/ahids.c \
++	../../source/common/ahuuids.c \
+ 	../../source/common/cmfsize.c \
+ 	../../source/common/getopt.c \
+ 	../../source/components/hardware/hwtimer.c \
+@@ -174,6 +175,7 @@
+ 	../../source/components/utilities/utexcep.c \
+ 	../../source/components/utilities/utfileio.c \
+ 	../../source/components/utilities/utglobal.c \
++	../../source/components/utilities/uthex.c \
+ 	../../source/components/utilities/utids.c \
+ 	../../source/components/utilities/utinit.c \
+ 	../../source/components/utilities/utlock.c \
+@@ -189,6 +191,7 @@
+ 	../../source/components/utilities/utstate.c \
+ 	../../source/components/utilities/utstring.c \
+ 	../../source/components/utilities/uttrack.c \
++	../../source/components/utilities/utuuid.c \
+ 	../../source/components/utilities/utxface.c \
+ 	../../source/components/utilities/utxferror.c \
+ 	../../source/components/utilities/utxfinit.c \
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpitests_20140828.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpitests_20140828.bb
new file mode 100644
index 0000000..1f6f190
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/acpitests_20140828.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Test suite used to validate ACPICA"
+HOMEPAGE = "http://www.acpica.org/"
+
+LICENSE = "Intel"
+LIC_FILES_CHKSUM = "file://tests/aapits/atexec.c;beginline=1;endline=115;md5=e92bcdfcd01d117d1bda3e814bb2030a"
+
+DEPENDS = "bison flex"
+
+SRC_URI = "https://acpica.org/sites/acpica/files/acpitests-unix-${PV}.tar.gz;name=acpitests \
+           https://acpica.org/sites/acpica/files/acpica-unix2-${PV}.tar.gz;name=acpica \
+           file://aapits-linux.patch \
+           file://aapits-makefile.patch \
+"
+SRC_URI[acpitests.md5sum] = "db9d6fdaa8e3eb101d700ee5ba4938ed"
+SRC_URI[acpitests.sha256sum] = "e576c74bf1bf1c9f7348bf9419e05c8acfece7105abcdc052e66670c7af2cf00"
+SRC_URI[acpica.md5sum] = "6f05f0d10166a1b1ff6107f3d1cdf1e5"
+SRC_URI[acpica.sha256sum] = "01d8867656c5ba41dec307c4383ce676196ad4281ac2c9dec9f5be5fac6d888e"
+
+S = "${WORKDIR}/acpitests-unix-${PV}"
+
+EXTRA_OEMAKE = "'CC=${TARGET_PREFIX}gcc ${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}' 'OPT_CFLAGS=-Wall'"
+
+# The Makefiles expect a specific layout
+do_compile() {
+    cp -af ${WORKDIR}/acpica-unix2-${PV}/source ${S}
+    cd tests/aapits
+    oe_runmake
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m0755 tests/aapits/bin/aapits ${D}${bindir}
+}
+
+COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/files/no-werror.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/files/no-werror.patch
new file mode 100644
index 0000000..5d28f47
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpica/files/no-werror.patch
@@ -0,0 +1,32 @@
+Description: remove -Werror flag
+Forwarded: not-needed
+Author: Fathi Boudra <fathi.boudra@linaro.org>
+
+---
+ generate/unix/iasl/Makefile |   12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/generate/unix/iasl/Makefile
++++ b/generate/unix/iasl/Makefile
+@@ -266,19 +266,19 @@ $(OBJDIR)/prparser.y.h: $(OBJDIR)/prpars
+ # by the utilities above and they are not necessarily ANSI C, etc.
+ #
+ $(OBJDIR)/aslcompilerlex.o :   $(OBJDIR)/aslcompilerlex.c
+-	$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
++	$(CC) -c $(CFLAGS) -Wall -o$@ $<
+ 
+ $(OBJDIR)/aslcompilerparse.o : $(OBJDIR)/aslcompilerparse.c
+-	$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
++	$(CC) -c $(CFLAGS) -Wall -o$@ $<
+ 
+ $(OBJDIR)/dtparserlex.o :      $(OBJDIR)/dtparserlex.c
+-	$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
++	$(CC) -c $(CFLAGS) -Wall -o$@ $<
+ 
+ $(OBJDIR)/dtparserparse.o :    $(OBJDIR)/dtparserparse.c
+-	$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
++	$(CC) -c $(CFLAGS) -Wall -o$@ $<
+ 
+ $(OBJDIR)/prparserlex.o :      $(OBJDIR)/prparserlex.c
+-	$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
++	$(CC) -c $(CFLAGS) -Wall -o$@ $<
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/acpitool/acpitool_0.5.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpitool/acpitool_0.5.1.bb
new file mode 100644
index 0000000..bc9669d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/acpitool/acpitool_0.5.1.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Acpitool is a Linux ACPI client. It simply reads /proc/acpi or /sys/class entries \
+and presents the output in a meaningfull, human-readable format."
+HOMEPAGE = "http://freeunix.dyndns.org:8088/site2/acpitool.shtml"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = "http://nchc.dl.sourceforge.net/project/${BPN}/${BPN}/${PV}/${BP}.tar.bz2 \
+    "
+
+inherit autotools
+
+SRC_URI[md5sum] = "9e4ec55201be0be71ffbc56d38b42b57"
+SRC_URI[sha256sum] = "004fb6cd43102918b6302cf537a2db7ceadda04aef2e0906ddf230f820dad34f"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Fix-error.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Fix-error.patch
new file mode 100644
index 0000000..d1a303c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Fix-error.patch
@@ -0,0 +1,26 @@
+From b8e791ce93a467081fb1594b91841e2f57c634a0 Mon Sep 17 00:00:00 2001
+From: Qian Lei <qianl.fnst@cn.fujitsu.com>
+Date: Fri, 16 Jan 2015 18:37:26 +0800
+Subject: [PATCH] Fix error
+
+Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
+---
+ swig/python/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/swig/python/CMakeLists.txt b/swig/python/CMakeLists.txt
+index 3976296..8073fc8 100644
+--- a/swig/python/CMakeLists.txt
++++ b/swig/python/CMakeLists.txt
+@@ -27,7 +27,7 @@ SET( SWIG_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/../cmpi.i" )
+ ADD_CUSTOM_COMMAND (
+    OUTPUT  ${SWIG_OUTPUT}
+    COMMAND ${CMAKE_COMMAND} -E echo_append "Creating wrapper code for Python ..."
+-   COMMAND ${SWIG_EXECUTABLE} -python -Wall -threads -features autodoc -o ${SWIG_OUTPUT} -outdir ${CMAKE_CURRENT_BINARY_DIR} -I/usr/include ${SWIG_INPUT}
++   COMMAND ${SWIG_EXECUTABLE} -python -Wall -threads -features autodoc -o ${SWIG_OUTPUT} -outdir ${CMAKE_CURRENT_BINARY_DIR} -I$ENV{STAGING_INCDIR} ${SWIG_INPUT}
+    COMMAND ${CMAKE_COMMAND} -E echo "Done."
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../*.i
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Modify-cmakelist.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Modify-cmakelist.patch
new file mode 100644
index 0000000..92e5e56
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Modify-cmakelist.patch
@@ -0,0 +1,41 @@
+From 070822507befe7c1b8bb1be2d36cb12141d03b8f Mon Sep 17 00:00:00 2001
+From: Qian Lei <qianl.fnst@cn.fujitsu.com>
+Date: Tue, 6 Jan 2015 18:38:32 +0800
+Subject: [PATCH] Change the install path in cmakelist
+
+Upstream-Status: Pending
+Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
+---
+ swig/python/CMakeLists.txt | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/swig/python/CMakeLists.txt b/swig/python/CMakeLists.txt
+index 3976296..93c87c1 100644
+--- a/swig/python/CMakeLists.txt
++++ b/swig/python/CMakeLists.txt
+@@ -56,18 +56,18 @@ TARGET_LINK_LIBRARIES( ${NAME} util )
+ 
+ INSTALL(TARGETS ${NAME} LIBRARY DESTINATION ${CMPI_LIBRARY_DIR})
+ # .py: swig generated
+-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/cmpi.py DESTINATION ${PYTHON_SITE_DIR} )
++INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/cmpi.py DESTINATION $ENV{ENV_INSTALL_PATH} )
+ 
+ 
+ #
+ # cmpi_pywbem_bindings.py: provider implementation
+ #
+-INSTALL(FILES cmpi_pywbem_bindings.py DESTINATION ${PYTHON_SITE_DIR} )
++INSTALL(FILES cmpi_pywbem_bindings.py DESTINATION $ENV{ENV_INSTALL_PATH} )
+ #INSTALL(FILES Py_UnixProcessProvider.py DESTINATION /usr/lib/pycim )
+ 
+-INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c \"from py_compile import compile; compile('\$ENV{DESTDIR}${PYTHON_SITE_DIR}/cmpi.py', dfile='${PYTHON_SITE_DIR}/cmpi.py')\")")
++INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c \"from py_compile import compile; compile('\$ENV{DESTDIR}$ENV{ENV_INSTALL_PATH}/cmpi.py', dfile='\$ENV{ENV_INSTALL_PATH}/cmpi.py')\")")
+ 
+-INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c \"from py_compile import compile; compile('\$ENV{DESTDIR}${PYTHON_SITE_DIR}/cmpi_pywbem_bindings.py', dfile='${PYTHON_SITE_DIR}/cmpi_pywbem_bindings.py')\")")
++INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c \"from py_compile import compile; compile('\$ENV{DESTDIR}$ENV{ENV_INSTALL_PATH}/cmpi_pywbem_bindings.py', dfile='$ENV{ENV_INSTALL_PATH}/cmpi_pywbem_bindings.py')\")")
+ 
+ 
+ 
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-fix-the-build-error-when-python-3.0.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-fix-the-build-error-when-python-3.0.patch
new file mode 100644
index 0000000..0d6f029
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-fix-the-build-error-when-python-3.0.patch
@@ -0,0 +1,31 @@
+From 323ced03a66e6cd963d8277b66cfcc7dce740be7 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Fri, 17 Jul 2015 01:33:43 -0700
+Subject: [PATCH] fix Xthe build error when python>3.0
+
+Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+---
+ src/target_python.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/target_python.c b/src/target_python.c
+index 90b43a1..2b76c9e 100644
+--- a/src/target_python.c
++++ b/src/target_python.c
+@@ -167,7 +167,12 @@ PyGlobalInitialize(const CMPIBroker* broker, CMPIStatus* st)
+   
+   Py_SetProgramName("cmpi_swig");
+   Py_Initialize();
+-  SWIGEXPORT void SWIG_init(void);
++#if PY_VERSION_HEX >= 0x03000000
++SWIGEXPORT PyObject*
++#else
++  SWIGEXPORT void 
++#endif
++  SWIG_init(void);
+   SWIG_init();
+   cmpiMainPyThreadState = PyGILState_GetThisThreadState();
+   PyEval_ReleaseThread(cmpiMainPyThreadState); 
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/cmpi-bindings-0.4.17-no-ruby-perl.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/cmpi-bindings-0.4.17-no-ruby-perl.patch
new file mode 100644
index 0000000..2072da7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/cmpi-bindings-0.4.17-no-ruby-perl.patch
@@ -0,0 +1,47 @@
+From 7dd01e33f9dac75f177113de9a8ff458d4263a11 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Mon, 24 Aug 2015 11:00:13 +0900
+Subject: [PATCH] cmpi-bindings-0.4.17 no ruby perl
+
+Port from Fedora20
+
+Upstream-Status: Pending
+Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
+---
+ swig/CMakeLists.txt | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/swig/CMakeLists.txt b/swig/CMakeLists.txt
+index 8b5555c..c2655b9 100644
+--- a/swig/CMakeLists.txt
++++ b/swig/CMakeLists.txt
+@@ -15,15 +15,15 @@ IF (PYTHON_LIBRARY)
+   ENDIF (PYTHON_LINK_LIBS)
+ ENDIF (PYTHON_LIBRARY)
+ 
+-FIND_PACKAGE(Perl)
+-IF (PERL_EXECUTABLE)
+-  MESSAGE(STATUS "Building Perl...")
+-  ADD_SUBDIRECTORY(perl)
+-ENDIF (PERL_EXECUTABLE)
++#FIND_PACKAGE(Perl)
++#IF (PERL_EXECUTABLE)
++#  MESSAGE(STATUS "Building Perl...")
++#  ADD_SUBDIRECTORY(perl)
++#ENDIF (PERL_EXECUTABLE)
+ 
+-FIND_PACKAGE(Ruby)
+-IF (RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
+-  MESSAGE(STATUS "Building Ruby...")
+-  ADD_SUBDIRECTORY(ruby)
+-  OPTION( BUILD_RUBY_GEM "Build Ruby GEM" YES )
+-ENDIF (RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
++#FIND_PACKAGE(Ruby)
++#IF (RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
++#  MESSAGE(STATUS "Building Ruby...")
++#  ADD_SUBDIRECTORY(ruby)
++#  OPTION( BUILD_RUBY_GEM "Build Ruby GEM" YES )
++#ENDIF (RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/cmpi-bindings-0.4.17-sblim-sigsegv.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/cmpi-bindings-0.4.17-sblim-sigsegv.patch
new file mode 100644
index 0000000..b993372
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/cmpi-bindings-0.4.17-sblim-sigsegv.patch
@@ -0,0 +1,22 @@
+Port from Fedora20
+
+Upstream-Status: Pending
+Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
+
+diff -up cmpi-bindings-0.4.17/swig/python/cmpi_pywbem_bindings.py.orig cmpi-bindings-0.4.17/swig/python/cmpi_pywbem_bindings.py
+--- cmpi-bindings-0.4.17/swig/python/cmpi_pywbem_bindings.py.orig	2012-03-01 17:05:31.878367281 +0100
++++ cmpi-bindings-0.4.17/swig/python/cmpi_pywbem_bindings.py	2012-03-01 17:06:34.718110137 +0100
+@@ -350,10 +350,10 @@ class BrokerCIMOMHandle(object):
+             allow_null_ns = False
+         else:
+             allow_null_ns = True
+-            if self.broker.name() == 'RequestHandler':
++#            if self.broker.name() == 'RequestHandler':
+                 # Check sblim bug #2185410.
+-                if instance.path is not None:
+-                    instance.path.namespace = None
++#                if instance.path is not None:
++#                    instance.path.namespace = None
+         inst = self.proxy.pywbem2cmpi_inst(instance, allow_null_ns)
+         rv = self.broker.deliverIndication(self.ctx, ns, inst)
+         return rv
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/cmpi-bindings-0.9.5-python-lib-dir.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/cmpi-bindings-0.9.5-python-lib-dir.patch
new file mode 100644
index 0000000..b6a51ec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/cmpi-bindings-0.9.5-python-lib-dir.patch
@@ -0,0 +1,17 @@
+Port from Fedora20
+
+Upstream-Status: Pending
+Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
+
+diff -up cmpi-bindings-0.9.5/swig/python/CMakeLists.txt.old cmpi-bindings-0.9.5/swig/python/CMakeLists.txt
+--- cmpi-bindings-0.9.5/swig/python/CMakeLists.txt.old	2013-08-06 15:57:03.576285764 +0200
++++ cmpi-bindings-0.9.5/swig/python/CMakeLists.txt	2013-08-06 15:57:14.891345941 +0200
+@@ -9,7 +9,7 @@ SET (BUILD_SHARED_LIBS ON)
+ 
+ FIND_PACKAGE(PythonInterp REQUIRED)
+ 
+-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib())" OUTPUT_VARIABLE PYTHON_LIB_DIR)
++EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(1))" OUTPUT_VARIABLE PYTHON_LIB_DIR)
+ 
+ IF (NOT PYTHON_SITE_DIR)
+   SET (PYTHON_SITE_DIR ${PYTHON_LIB_DIR})
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_git.bb
new file mode 100644
index 0000000..a2747c3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_git.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Adapter to write and run CMPI-type CIM providers"
+DESCRIPTION = "CMPI-compliant provider interface for various languages via SWIG"
+HOMEPAGE = "http://github.com/kkaempf/cmpi-bindings"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b19ee058d2d5f69af45da98051d91064"
+SECTION = "Development/Libraries"
+DEPENDS = "swig-native python sblim-cmpi-devel"
+
+SRC_URI = "git://github.com/kkaempf/cmpi-bindings.git;protocol=http \
+           file://cmpi-bindings-0.4.17-no-ruby-perl.patch \
+           file://cmpi-bindings-0.4.17-sblim-sigsegv.patch \
+           file://cmpi-bindings-0.9.5-python-lib-dir.patch \
+           file://0001-Modify-cmakelist.patch \
+           file://0001-Fix-error.patch \
+           file://0001-fix-the-build-error-when-python-3.0.patch \
+          "
+
+SRCREV = "62f60e065aa1b901f826e4f530c0573ae32d065e"
+S = "${WORKDIR}/git"
+
+inherit cmake pythonnative
+
+EXTRA_OECMAKE = "-DLIB='${baselib}' \
+                 -DPYTHON_INCLUDE_PATH=${STAGING_INCDIR}/python${PYTHON_BASEVERSION}"
+
+do_configure_prepend() {
+    export HOST_SYS=${HOST_SYS}
+    export BUILD_SYS=${BUILD_SYS}
+    export STAGING_LIBDIR=${STAGING_LIBDIR}
+    export STAGING_INCDIR=${STAGING_INCDIR}
+    export ENV_INSTALL_PATH=${PYTHON_SITEPACKAGES_DIR}
+}
+
+FILES_${PN} =+"${libdir}/cmpi/libpyCmpiProvider.so ${PYTHON_SITEPACKAGES_DIR}/*"
+FILES_${PN}-dbg =+ "${libdir}/cmpi/.debug/libpyCmpiProvider.so"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch
new file mode 100644
index 0000000..d0a5804
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch
@@ -0,0 +1,39 @@
+[PATCH] conditionally check libvirt
+
+Upstream-Statue: Pending
+
+check if libvirt is available only when a user wants to use libvirt
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ configure.ac | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 923498e..7206095 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -4778,12 +4778,14 @@ then
+ 		with_libxml2="no (pkg-config doesn't know libxml-2.0)"
+ 	fi
+ 
+-	$PKG_CONFIG --exists libvirt 2>/dev/null
+-	if test "$?" = "0"
+-	then
+-		with_libvirt="yes"
+-	else
+-		with_libvirt="no (pkg-config doesn't know libvirt)"
++	if test "x$enable_libvirt" = "xyes"; then
++		$PKG_CONFIG --exists libvirt 2>/dev/null
++		if test "$?" = "0"
++		then
++			with_libvirt="yes"
++		else
++			with_libvirt="no (pkg-config doesn't know libvirt)"
++		fi
+ 	fi
+ fi
+ if test "x$with_libxml2" = "xyes"
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-redefine-the-dependence.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-redefine-the-dependence.patch
new file mode 100644
index 0000000..ef6afad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-redefine-the-dependence.patch
@@ -0,0 +1,28 @@
+[PATCH] define the collectd dependence
+
+Upstream-Status: Pending
+
+libavltree.la libcommon.la libheap.la are created dynamically, and in LDADD,
+but not in DEPENDENCIES
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ src/daemon/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/daemon/Makefile.am b/src/daemon/Makefile.am
+index 10860ec..7f826e3 100644
+--- a/src/daemon/Makefile.am
++++ b/src/daemon/Makefile.am
+@@ -49,7 +49,7 @@ collectd_CPPFLAGS =  $(AM_CPPFLAGS) $(LTDLINCL)
+ collectd_CFLAGS = $(AM_CFLAGS)
+ collectd_LDFLAGS = -export-dynamic
+ collectd_LDADD = libavltree.la libcommon.la libheap.la -lm
+-collectd_DEPENDENCIES =
++collectd_DEPENDENCIES = libavltree.la libcommon.la libheap.la
+ 
+ # Link to these libraries..
+ if BUILD_WITH_LIBRT
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/collectd-version.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/collectd-version.patch
new file mode 100644
index 0000000..86c3f65
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/collectd-version.patch
@@ -0,0 +1,29 @@
+Don't pick up version string from parent git repository
+
+If the collectd source is extracted from a tarball underneath a
+directory structure that includes another git repository, that
+repository will be picked up by "git describe" which is not
+desirable. Check whether collectd itself is a git repository and just
+use the default version if not.
+
+Upstream-Status: Pending
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+diff --git a/version-gen.sh b/version-gen.sh
+index b09be8e..2671066 100755
+--- a/version-gen.sh
++++ b/version-gen.sh
+@@ -2,8 +2,10 @@
+ 
+ DEFAULT_VERSION="5.5.0.git"
+ 
+-VERSION="`git describe 2> /dev/null | grep collectd | sed -e 's/^collectd-//'`"
+-
++VERSION=""
++if test -d .git ; then
++	VERSION="`git describe 2> /dev/null | grep collectd | sed -e 's/^collectd-//'`"
++fi
+ if test -z "$VERSION"; then
+ 	VERSION="$DEFAULT_VERSION"
+ fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/collectd.init b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/collectd.init
new file mode 100644
index 0000000..95f5f73
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/collectd.init
@@ -0,0 +1,212 @@
+#!/bin/sh
+#
+# collectd - start and stop the statistics collection daemon
+# http://collectd.org/
+#
+# Copyright (C) 2005-2006 Florian Forster <octo@verplant.org>
+# Copyright (C) 2006-2009 Sebastian Harl <tokkee@debian.org>
+#
+
+### BEGIN INIT INFO
+# Provides:          collectd
+# Required-Start:    $local_fs $remote_fs
+# Required-Stop:     $local_fs $remote_fs
+# Should-Start:      $network $named $syslog $time cpufrequtils
+# Should-Stop:       $network $named $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: manage the statistics collection daemon
+# Description:       collectd is the statistics collection daemon.
+#                    It is a small daemon which collects system information
+#                    periodically and provides mechanisms to monitor and store
+#                    the values in a variety of ways.
+### END INIT INFO
+
+. /etc/init.d/functions
+
+export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+DISABLE=0
+
+NAME=collectd
+DAEMON=/usr/sbin/collectd
+
+CONFIGFILE=/etc/collectd.conf
+PIDFILE=/var/run/collectd.pid
+
+USE_COLLECTDMON=1
+COLLECTDMON_DAEMON=/usr/sbin/collectdmon
+COLLECTDMON_PIDFILE=/var/run/collectdmon.pid
+
+MAXWAIT=30
+
+# Gracefully exit if the package has been removed.
+test -x $DAEMON || exit 0
+
+if [ -r /etc/default/$NAME ]; then
+	. /etc/default/$NAME
+fi
+
+if test "$ENABLE_COREFILES" == 1; then
+	ulimit -c unlimited
+fi
+
+if test "$USE_COLLECTDMON" == 1; then
+	_PIDFILE="$COLLECTDMON_PIDFILE"
+else
+	_PIDFILE="$PIDFILE"
+fi
+
+# return:
+#   0 if config is fine
+#   1 if there is a syntax error
+#   2 if there is no configuration
+check_config() {
+	if test ! -e "$CONFIGFILE"; then
+		return 2
+	fi
+	if ! $DAEMON -t -C "$CONFIGFILE"; then
+		return 1
+	fi
+	return 0
+}
+
+# return:
+#   0 if the daemon has been started
+#   1 if the daemon was already running
+#   2 if the daemon could not be started
+#   3 if the daemon was not supposed to be started
+d_start() {
+	if test "$DISABLE" != 0; then
+		# we get here during restart
+		echo "disabled by /etc/default/$NAME"
+		return 3
+	fi
+
+	if test ! -e "$CONFIGFILE"; then
+		# we get here during restart
+		echo "disabled, no configuration ($CONFIGFILE) found"
+		return 3
+	fi
+
+	check_config
+	rc="$?"
+	if test "$rc" -ne 0; then
+		echo "not starting, configuration error"
+		return 2
+	fi
+
+	if test "$USE_COLLECTDMON" == 1; then
+		start-stop-daemon --start --quiet --oknodo --pidfile "$_PIDFILE" \
+			--exec $COLLECTDMON_DAEMON -- -P "$_PIDFILE" -- -C "$CONFIGFILE" \
+			|| return 2
+	else
+		start-stop-daemon --start --quiet --oknodo --pidfile "$_PIDFILE" \
+			--exec $DAEMON -- -C "$CONFIGFILE" -P "$_PIDFILE" \
+			|| return 2
+	fi
+	return 0
+}
+
+still_running_warning="
+WARNING: $NAME might still be running.
+In large setups it might take some time to write all pending data to
+the disk. You can adjust the waiting time in /etc/default/collectd."
+
+# return:
+#   0 if the daemon has been stopped
+#   1 if the daemon was already stopped
+#   2 if daemon could not be stopped
+d_stop() {
+	PID=$( cat "$_PIDFILE" 2> /dev/null ) || true
+
+	start-stop-daemon --stop --quiet --oknodo --pidfile "$_PIDFILE"
+	rc="$?"
+
+	if test "$rc" -eq 2; then
+		return 2
+	fi
+
+	sleep 1
+	if test -n "$PID" && kill -0 $PID 2> /dev/null; then
+		i=0
+		while kill -0 $PID 2> /dev/null; do
+			i=$(( $i + 2 ))
+			echo -n " ."
+
+			if test $i -gt $MAXWAIT; then
+				echo "$still_running_warning"
+				return 2
+			fi
+
+			sleep 2
+		done
+		return "$rc"
+	fi
+	return "$rc"
+}
+
+# return:
+#   0 if the daemon is running
+#   3 if the daemon is stopped
+d_status(){
+	if test "$USE_COLLECTDMON" == 1; then
+		status $COLLECTDMON_DAEMON
+	else
+		status $DAEMON
+	fi
+}
+
+case "$1" in
+	start)
+		echo -n "Starting $NAME"
+		d_start
+		case "$?" in
+			0|1) echo "." ;;
+			*) exit 1 ;;
+		esac
+		;;
+	stop)
+		echo -n "Stopping $NAME"
+		d_stop
+		case "$?" in
+			0|1) echo "." ;;
+			*) exit 1 ;;
+		esac
+		;;
+	status)
+		d_status
+		;;
+	restart|force-reload)
+		echo -n "Restarting $NAME"
+		check_config
+		rc="$?"
+		if test "$rc" -eq 1; then
+			echo "not restarting, configuration error"
+			exit 1
+		fi
+		d_stop
+		rc="$?"
+		case "$rc" in
+			0|1)
+				sleep 1
+				d_start
+				rc2="$?"
+				case "$rc2" in
+					0|1) echo "." ;;
+					*) exit 1 ;;
+				esac
+				;;
+			*)
+				exit 1
+				;;
+		esac
+		;;
+	*)
+		echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2
+		exit 3
+		;;
+esac
+
+# vim: syntax=sh noexpandtab sw=4 ts=4 :
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/collectd.service b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/collectd.service
new file mode 100644
index 0000000..d835b73
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/collectd.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Collectd
+After=local-fs.target network.target
+Requires=local-fs.target network.target
+
+[Service]
+ExecStart=@SBINDIR@/collectd -C /etc/collectd.conf -f
+Restart=always
+RestartSec=10
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/no-gcrypt-badpath.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/no-gcrypt-badpath.patch
new file mode 100644
index 0000000..0e876ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/no-gcrypt-badpath.patch
@@ -0,0 +1,30 @@
+Disable defaulting of GCRYPT_LDFLAGS to -L/usr/lib
+
+Prevents "unsafe for cross compilation" warnings that cause
+do_qa_configure to fail.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+Index: collectd-5.4.1/configure.ac
+===================================================================
+--- collectd-5.4.1.orig/configure.ac	2014-09-03 01:20:22.062084244 -0700
++++ collectd-5.4.1/configure.ac	2014-09-03 01:20:22.058084244 -0700
+@@ -1867,11 +1867,11 @@
+ 		GCRYPT_CPPFLAGS=`"$with_libgcrypt_config" --cflags 2>/dev/null`
+ 	fi
+ 
+-	if test "x$GCRYPT_LDFLAGS" = "x"
+-	then
+-		gcrypt_exec_prefix=`"$with_libgcrypt_config" --exec-prefix 2>/dev/null`
+-		GCRYPT_LDFLAGS="-L$gcrypt_exec_prefix/lib"
+-	fi
++#	if test "x$GCRYPT_LDFLAGS" = "x"
++#	then
++#		gcrypt_exec_prefix=`"$with_libgcrypt_config" --exec-prefix 2>/dev/null`
++#		GCRYPT_LDFLAGS="-L$gcrypt_exec_prefix/lib"
++#	fi
+ 
+ 	if test "x$GCRYPT_LIBS" = "x"
+ 	then
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb
new file mode 100644
index 0000000..6a3476f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.5.0.bb
@@ -0,0 +1,84 @@
+SUMMARY = "Collects and summarises system performance statistics"
+DESCRIPTION = "collectd is a daemon which collects system performance statistics periodically and provides mechanisms to store the values in a variety of ways, for example in RRD files."
+LICENSE = "GPLv2 & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1bd21f19f7f0c61a7be8ecacb0e28854"
+
+DEPENDS = "rrdtool curl libpcap libxml2 yajl libgcrypt libtool lvm2"
+
+SRC_URI = "http://collectd.org/files/collectd-${PV}.tar.bz2 \
+           file://no-gcrypt-badpath.patch \
+           file://collectd-version.patch \
+           file://0001-redefine-the-dependence.patch  \
+           file://collectd.init \
+           file://collectd.service \
+           file://0001-conditionally-check-libvirt.patch \
+"
+SRC_URI[md5sum] = "c39305ef5514b44238b0d31f77e29e6a"
+SRC_URI[sha256sum] = "847684cf5c10de1dc34145078af3fcf6e0d168ba98c14f1343b1062a4b569e88"
+
+inherit autotools pythonnative update-rc.d pkgconfig systemd
+
+SYSTEMD_SERVICE_${PN} = "collectd.service"
+
+# Floatingpoint layout, architecture dependent
+# 'nothing', 'endianflip' or 'intswap'
+FPLAYOUT ?= "--with-fp-layout=nothing"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[openjdk] = "--with-java=${STAGING_DIR_TARGET}${libdir}/jvm,--without-java,openjdk-7"
+PACKAGECONFIG[snmp] = "--enable-snmp,--disable-snmp --with-libnetsnmp=no,net-snmp"
+PACKAGECONFIG[libmemcached] = "--with-libmemcached,--without-libmemcached,libmemcached"
+PACKAGECONFIG[iptables] = "--enable-iptables,--disable-iptables,iptables"
+PACKAGECONFIG[postgresql] = "--enable-postgresql --with-libpq=yes, \
+        --disable-postgresql --with-libpq=no,postgresql"
+PACKAGECONFIG[mysql] = "--enable-mysql --with-libmysql=yes, \
+        --disable-mysql --with-libmysql=no,mysql5"
+PACKAGECONFIG[dbi] = "--enable-dbi,--disable-dbi,libdbi"
+PACKAGECONFIG[modbus] = "--enable-modbus,--disable-modbus,libmodbus"
+PACKAGECONFIG[libowcapi] = "--with-libowcapi,--without-libowcapi,owfs"
+PACKAGECONFIG[sensors] = "--enable-sensors --with-libsensors=yes, \
+        --disable-sensors --with-libsensors=no,lmsensors"
+PACKAGECONFIG[amqp] = "--enable-amqp --with-librabbitmq=yes, \
+        --disable-amqp --with-librabbitmq=no,rabbitmq-c"
+# protobuf-c, libvirt that are currently only available in meta-virtualization layer
+PACKAGECONFIG[pinba] = "--enable-pinba,--disable-pinba,protobuf-c-native protobuf-c"
+PACKAGECONFIG[libvirt] = "--enable-libvirt,--disable-libvirt,libvirt"
+PACKAGECONFIG[libesmtp] = "--with-libesmtp,--without-libesmtp,libesmtp"
+PACKAGECONFIG[libmnl] = "--with-libmnl,--without-libmnl,libmnl"
+PACKAGECONFIG[libatasmart] = "--with-libatasmart,--without-libatasmart,libatasmart"
+PACKAGECONFIG[ldap] = "--enable-openldap --with-libldap,--disable-openldap --without-libldap, openldap"
+
+EXTRA_OECONF = " \
+                ${FPLAYOUT} \
+                --disable-perl --with-libperl=no --with-perl-bindings=no \
+                --with-libgcrypt=${STAGING_BINDIR_CROSS}/libgcrypt-config \
+                --disable-notify_desktop \
+"
+
+do_install_append() {
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/collectd.init ${D}${sysconfdir}/init.d/collectd
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/collectd
+    sed -i 's!/etc/!${sysconfdir}/!g' ${D}${sysconfdir}/init.d/collectd
+    sed -i 's!/var/!${localstatedir}/!g' ${D}${sysconfdir}/init.d/collectd
+    sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' ${D}${sysconfdir}/init.d/collectd
+
+    # Fix configuration file to allow collectd to start up
+    sed -i 's!^#FQDNLookup[ \t]*true!FQDNLookup   false!g' ${D}${sysconfdir}/collectd.conf
+
+    rmdir "${D}${localstatedir}/run"
+    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}"
+
+    # Install systemd unit files
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/collectd.service ${D}${systemd_unitdir}/system
+    sed -i -e 's,@SBINDIR@,${sbindir},g' \
+        ${D}${systemd_unitdir}/system/collectd.service
+}
+
+INITSCRIPT_NAME = "collectd"
+INITSCRIPT_PARAMS = "defaults"
+
+# threshold.so load.so are also provided by gegl
+# disk.so is also provided by libgphoto2-camlibs
+PRIVATE_LIBS = "threshold.so load.so disk.so"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/corosync/corosync_2.3.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/corosync/corosync_2.3.5.bb
new file mode 100644
index 0000000..508277e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/corosync/corosync_2.3.5.bb
@@ -0,0 +1,56 @@
+SUMMARY = "The Corosync Cluster Engine and Application Programming Interfaces"
+DESCRIPTION = "This package contains the Corosync Cluster Engine Executive, several default \
+APIs and libraries, default configuration files, and an init script."
+HOMEPAGE = "http://corosync.github.io/corosync/"
+
+SECTION = "base"
+
+inherit autotools pkgconfig systemd
+
+SRC_URI = "http://build.clusterlabs.org/corosync/releases/${BP}.tar.gz"
+SRC_URI[md5sum] = "8894f00d499e0755467b381e6346f9ff"
+SRC_URI[sha256sum] = "1d48cdfa224b0ceb02e27fe9d56b738fb2a92262b04b15bb3a67e1c4248da8e2"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a85eb4ce24033adb6088dd1d6ffc5e5d"
+
+DEPENDS = "groff-native nss libqb"
+
+SYSTEMD_SERVICE_${PN} = "corosync.service corosync-notifyd.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+INITSCRIPT_NAME = "corosync-daemon"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+
+PACKAGECONFIG[systemd] = "--enable-systemd --with-systemddir=${systemd_unitdir}/system/,--with-systemddir="
+
+EXTRA_OECONF = "--with-upstartdir=%{_sysconfdir}/init"
+
+do_configure_prepend() {
+    ( cd ${S}
+    ${S}/autogen.sh )
+}
+
+do_install_append() {
+    install -d ${D}${sysconfdir}/sysconfig/
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 0644 ${S}/init/corosync.sysconfig.example ${D}${sysconfdir}/sysconfig/corosync
+    install -m 0644 ${S}/init/corosync-notifyd.conf.in ${D}${sysconfdir}/sysconfig/corosync-notifyd.conf
+    install -m 0644 ${S}/init/corosync.conf.in ${D}${sysconfdir}/sysconfig/corosync.conf
+    install -m 0644 ${S}/init/corosync.in ${D}${sysconfdir}/init.d/corosync
+    install -m 0644 ${S}/init/corosync-notifyd.in ${D}${sysconfdir}/init.d/corosync-notifyd
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${S}/init/corosync.service.in ${D}${systemd_unitdir}/system/corosync.service
+        install -m 0644 ${S}/init/corosync-notifyd.service.in ${D}${systemd_unitdir}/system/corosync-notifyd.service
+        sed -i -e 's,@INITWRAPPERSDIR@,${sysconfdir}/init.d,g' ${D}${systemd_unitdir}/system/corosync.service
+        sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/corosync-notifyd.service
+        sed -i -e 's,@SBINDIR@,${base_sbindir},g' ${D}${systemd_unitdir}/system/corosync-notifyd.service
+    fi	
+}
+
+RDEPENDS_${PN} += "bash"
+
+FILES_${PN}-dbg += "${libexecdir}/lcrso/.debug"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/dash/dash_0.5.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/dash/dash_0.5.8.bb
new file mode 100644
index 0000000..4961d7b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/dash/dash_0.5.8.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Small and fast POSIX-compliant shell"
+HOMEPAGE = "http://gondor.apana.org.au/~herbert/dash/"
+SECTION = "System Environment/Shells"
+
+LICENSE = "BSD & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b5262b4a1a1bff72b48e935531976d2e"
+
+inherit autotools update-alternatives
+
+SRC_URI = "http://gondor.apana.org.au/~herbert/${BPN}/files/${BP}.tar.gz"
+SRC_URI[md5sum] = "5c152209680dab3c319e8923f6c51378"
+SRC_URI[sha256sum] = "c6db3a237747b02d20382a761397563d813b306c020ae28ce25a1c3915fac60f"
+
+EXTRA_OECONF += "--bindir=${base_bindir}"
+
+ALTERNATIVE_${PN} = "sh"
+ALTERNATIVE_LINK_NAME[sh] = "${base_bindir}/sh"
+ALTERNATIVE_TARGET[sh] = "${base_bindir}/dash"
+ALTERNATIVE_PRIORITY = "10"
+
+pkg_postinst_${PN} () {
+    grep -q "^${base_bindir}/dash$" $D${sysconfdir}/shells || echo ${base_bindir}/dash >> $D${sysconfdir}/shells
+}
+
+pkg_postrm_${PN} () {
+    printf "$(grep -v "^${base_bindir}/dash$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.19.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.19.bb
new file mode 100644
index 0000000..27e00a5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.19.bb
@@ -0,0 +1,45 @@
+SUMMARY = "Data recovery tool"
+DESCRIPTION = "GNU ddrescue is a data recovery tool. It copies data \
+    from one file or block device (hard disc, cdrom, etc) to another, \
+    trying hard to rescue data in case of read errors."
+HOMEPAGE = "http://www.gnu.org/software/ddrescue/ddrescue.html"
+SECTION = "console"
+LICENSE = "GPLv2+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
+                    file://main_common.cc;beginline=5;endline=16;md5=3ec288b2676528cd2b069364e313016f"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.lz"
+SRC_URI[md5sum] = "ed6b5b82d74cbd925db2b829350e74b1"
+SRC_URI[sha256sum] = "ed8d0c9d9aac80a9110e9cb0d0a91a7390d3bf9f816b67a62ca4eb140f4747b8"
+
+# This isn't already added by base.bbclass
+do_unpack[depends] += "lzip-native:do_populate_sysroot"
+
+CONFIGUREOPTS = "\
+    '--srcdir=${S}' \
+    '--prefix=${prefix}' \
+    '--exec-prefix=${exec_prefix}' \
+    '--bindir=${bindir}' \
+    '--datadir=${datadir}' \
+    '--infodir=${infodir}' \
+    '--sysconfdir=${sysconfdir}' \
+    'CXX=${CXX}' \
+    'CPPFLAGS=${CPPFLAGS}' \
+    'CXXFLAGS=${CXXFLAGS}' \
+    'LDFLAGS=${LDFLAGS}' \
+"
+EXTRA_OEMAKE = ""
+
+do_configure () {
+    ${S}/configure ${CONFIGUREOPTS}
+}
+
+do_install () {
+    oe_runmake 'DESTDIR=${D}' install
+    # Info dir listing isn't interesting at this point so remove it if it exists.
+    if [ -e "${D}${infodir}/dir" ]; then
+        rm -f ${D}${infodir}/dir
+    fi
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.2-20150920.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.2-20150920.bb
new file mode 100644
index 0000000..6fef9d6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.2-20150920.bb
@@ -0,0 +1,30 @@
+SUMMARY = "display dialog boxes from shell scripts"
+DESCRIPTION = "Dialog lets you to present a variety of questions \
+or display messages using dialog boxes from a shell \
+script (or any scripting language)."
+HOMEPAGE = "http://invisible-island.net/dialog/"
+SECTION = "console/utils"
+DEPENDS = "ncurses"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+SRC_URI[md5sum] = "2b7c002b0a88ce1e0014af34b6b1ebdc"
+SRC_URI[sha256sum] = "c4e61ec5768701683dd4b5b2ebd8a31e6289fa6a1f5801e4b481085650698c05"
+
+SRC_URI = "ftp://invisible-island.net/dialog/dialog-${PV}.tgz \
+          "
+
+# hardcoded here for use in dialog-static recipe
+S = "${WORKDIR}/dialog-${PV}"
+
+inherit autotools-brokensep pkgconfig
+
+EXTRA_OECONF = "--with-ncurses \
+                --disable-rpath-hack"
+
+do_configure() {
+    gnu-configize --force
+    sed -i 's,${cf_ncuconfig_root}6-config,${cf_ncuconfig_root}-config,g' -i configure
+    sed -i 's,cf_have_ncuconfig=unknown,cf_have_ncuconfig=yes,g' -i configure
+    oe_runconf
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/dlm/dlm_4.0.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/dlm/dlm_4.0.2.bb
new file mode 100644
index 0000000..ff37305
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/dlm/dlm_4.0.2.bb
@@ -0,0 +1,49 @@
+DESCRIPTION = "dlm control daemon and tool"
+
+SECTION = "utils"
+HOMEPAGE = "https://fedorahosted.org/cluster/wiki/HomePage"
+
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+SRC_URI = "https://git.fedorahosted.org/cgit/dlm.git/snapshot/${BP}.tar.xz"
+
+SRC_URI[md5sum] = "efc2ee6093aa6aa0a88aaad83e998a3f"
+SRC_URI[sha256sum] = "b89bc557aaffbab0ac005398025f247718a5589cff6574d902eaffe2b20e683e"
+
+LICENSE = "LGPLv2+ & GPLv2 & GPLv2+"
+LIC_FILES_CHKSUM = "file://README.license;md5=8f0bbcdd678df1bce9863492b6c8832d"
+
+DEPENDS = "corosync systemd"
+
+inherit pkgconfig systemd distro_features_check
+
+SYSTEMD_SERVICE_${PN} = "dlm.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+export EXTRA_OEMAKE = ""
+
+do_compile_prepend() {
+    sed -i "s/libsystemd-daemon/libsystemd/g" ${S}/dlm_controld/Makefile
+}
+
+do_compile () {
+    oe_runmake 'CC=${CC}'
+}
+
+do_install_append (){
+    install -d ${D}${sysconfdir}/sysconfig/
+    install -d ${D}${sysconfdir}/init.d/
+    install -m 0644 ${S}/init/dlm.sysconfig ${D}${sysconfdir}/sysconfig/dlm
+    install -m 0644 ${S}/init/dlm.init ${D}${sysconfdir}/init.d/dlm
+
+    # install systemd unit files
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${S}/init/dlm.service ${D}${systemd_unitdir}/system
+    fi
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D} LIBDIR=${libdir}
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/efibootmgr/efibootmgr_0.12.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/efibootmgr/efibootmgr_0.12.bb
new file mode 100644
index 0000000..9b611ce
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/efibootmgr/efibootmgr_0.12.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Linux user-space application to modify the EFI Boot Manager."
+SUMMARY = "EFI Boot Manager"
+HOMEPAGE = "https://github.com/rhinstaller/efibootmgr"
+SECTION = "base"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+DEPENDS = "pciutils zlib efivar"
+
+COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
+
+SRC_URI = "https://github.com/rhinstaller/efibootmgr/releases/download/${BP}/${BP}.tar.bz2 \
+           file://ldflags.patch \
+          "
+
+SRC_URI[md5sum] = "6647f5cd807bc8484135ba74fcbcc39a"
+SRC_URI[sha256sum] = "a66f5850677e86255d93cb1cead04c3c48a823a2b864c579321f2a07f00256e6"
+
+EXTRA_OEMAKE = "'CC=${CC}' 'CFLAGS=${CFLAGS} -I${S}/src/include `pkg-config --cflags efivar` \
+                 -DEFIBOOTMGR_VERSION=\"$(RELEASE_MAJOR).$(RELEASE_MINOR)\" '"
+
+do_install () {
+    install -D -p -m0755 src/efibootmgr/efibootmgr ${D}/${sbindir}/efibootmgr
+}
+
+inherit pkgconfig
+
+PNBLACKLIST[efibootmgr] ?= "Depends on blacklisted efivar"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/efibootmgr/files/ldflags.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/efibootmgr/files/ldflags.patch
new file mode 100644
index 0000000..0d5594a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/efibootmgr/files/ldflags.patch
@@ -0,0 +1,17 @@
+Upstream-Status: Pending
+
+Import this patch from meta-linaro.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+--- efibootmgr-0.5.4.orig/Makefile
++++ efibootmgr-0.5.4/Makefile
+@@ -11,6 +11,8 @@
+   CFLAGS = $(EXTRA_CFLAGS) -DEFIBOOTMGR_VERSION=\"$(RELEASE_MAJOR).$(RELEASE_MINOR).$(RELEASE_SUBLEVEL)$(RELEASE_EXTRALEVEL)\" \
+ 	    -Wall -g -D_FILE_OFFSET_BITS=64
+ 
++  LDFLAGS += -lz
++
+   MODULES := src
+ 
+   BINDIR := /usr/sbin
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/efivar/efivar/0001-efivar-fix-for-cross-compile.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/efivar/efivar/0001-efivar-fix-for-cross-compile.patch
new file mode 100644
index 0000000..4bd7d95
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/efivar/efivar/0001-efivar-fix-for-cross-compile.patch
@@ -0,0 +1,31 @@
+From 7036e8b0dca61432970789e5397b6fb02b362c2b Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Fri, 25 Sep 2015 18:14:31 +0800
+Subject: [PATCH] efivar: fix for cross compile
+
+It builds and calls elf file makeguids to generate a header file which
+doesn't work for cross compile. Fix it.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ src/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 6eac858..ef4eb1d 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -65,8 +65,8 @@ makeguids.o : makeguids.c
+ makeguids : makeguids.o fakeguid.o
+ 	$(CC) $(cflags) -o $@ $^ -ldl
+ 
+-include/efivar/efivar-guids.h : makeguids guids.txt
+-	./makeguids guids.txt guids.bin names.bin guid-symbols.S $@
++include/efivar/efivar-guids.h : guids.txt
++	makeguids guids.txt guids.bin names.bin guid-symbols.S $@
+ 
+ guidlist.o : guids.S include/efivar/efivar-guids.h
+ 	$(CC) $(cflags) -c -o guidlist.o guids.S
+-- 
+2.6.0.rc2.10.gf4d9753
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/efivar/efivar/efivar-drop-options-not-supported-by-lower-version-gcc.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/efivar/efivar/efivar-drop-options-not-supported-by-lower-version-gcc.patch
new file mode 100644
index 0000000..7f04b19
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/efivar/efivar/efivar-drop-options-not-supported-by-lower-version-gcc.patch
@@ -0,0 +1,71 @@
+gcc options '-Wmaybe-uninitialized' and '-std=gnu11' are not recognized by gcc
+whose version is lower than 4.6, such as on Ubuntu 12.04. Drop them for backward
+compatible.
+
+Upstream-Status: Pending
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/Make.defaults b/Make.defaults
+index cc2baa9..118ae56 100644
+--- a/Make.defaults
++++ b/Make.defaults
+@@ -10,10 +10,9 @@ CFLAGS	?= -O2 -g
+ 
+ ARCH = $(shell uname -m)
+ clang_cflags =
+-gcc_cflags = -Wmaybe-uninitialized
+ cflags	:= $(CFLAGS) \
+ 	-Werror -Wall -Wsign-compare -Wstrict-aliasing \
+-	-std=gnu11 -fshort-wchar -fPIC \
++	-fshort-wchar -fPIC \
+ 	-fvisibility=hidden \
+ 	-D_GNU_SOURCE -I${TOPDIR}/src/include/efivar/ \
+ 	$(if $(filter $(CC),clang),$(clang_cflags),) \
+diff --git a/src/guid.h b/src/guid.h
+index 9542ee1..0817991 100644
+--- a/src/guid.h
++++ b/src/guid.h
+@@ -31,7 +31,8 @@ static inline int
+ real_isspace(char c)
+ {
+ 	char spaces[] = " \f\n\r\t\v";
+-	for (int i = 0; spaces[i] != '\0'; i++)
++	int i;
++	for (i = 0; spaces[i] != '\0'; i++)
+ 		if (c == spaces[i])
+ 			return 1;
+ 	return 0;
+@@ -59,7 +60,8 @@ check_sanity(const char *text, size_t len)
+ static inline int
+ check_segment_sanity(const char *text, size_t len)
+ {
+-	for(unsigned int i = 0; i < len; i++) {
++	unsigned int i;
++	for(i = 0; i < len; i++) {
+ 		if (text[i] >= '0' && text[i] <= '9')
+ 			continue;
+ 		/* "| 0x20" is tolower() without having to worry about
+diff --git a/src/makeguids.c b/src/makeguids.c
+index e9acf15..7e16cb2 100644
+--- a/src/makeguids.c
++++ b/src/makeguids.c
+@@ -150,7 +150,8 @@ main(int argc, char *argv[])
+ 
+ 	fprintf(header, "#ifndef EFIVAR_GUIDS_H\n#define EFIVAR_GUIDS_H 1\n\n");
+ 
+-	for (unsigned int i = 0; i < line-1; i++) {
++	unsigned int i, j;
++	for (i = 0; i < line-1; i++) {
+ 		if (!strcmp(outbuf[i].symbol, "efi_guid_zero"))
+ 			fprintf(symout, "\t.globl %s\n"
+ 					"\t.data\n"
+@@ -176,7 +177,7 @@ main(int argc, char *argv[])
+ 			fprintf(symout, "efi_guid_empty:\n");
+ 
+ 		uint8_t *guid_data = (uint8_t *) &outbuf[i].guid;
+-		for (unsigned int j = 0; j < sizeof (efi_guid_t); j++)
++		for (j = 0; j < sizeof (efi_guid_t); j++)
+ 			fprintf(symout,"\t.byte 0x%02x\n", guid_data[j]);
+ 
+ 		fprintf(symout, "%s_end:\n", outbuf[i].symbol);
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/efivar/efivar_0.21.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/efivar/efivar_0.21.bb
new file mode 100644
index 0000000..f7a4d55
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/efivar/efivar_0.21.bb
@@ -0,0 +1,39 @@
+SUMMARY = "Tools to manipulate UEFI variables"
+DESCRIPTION = "efivar provides a simple command line interface to the UEFI variable facility"
+HOMEPAGE = "https://github.com/rhinstaller/efivar"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6626bb1e20189cfa95f2c508ba286393"
+
+DEPENDS_class-target = "popt efivar-native"
+
+SRCREV = "aab6c2a64d90b6e5a63661fb5bd6be8d878b0784"
+SRC_URI = "git://github.com/rhinstaller/efivar.git"
+SRC_URI_append_class-target = " file://0001-efivar-fix-for-cross-compile.patch"
+SRC_URI_append_class-native = " file://efivar-drop-options-not-supported-by-lower-version-gcc.patch"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+}
+
+do_compile_class-native() {
+    oe_runmake -C src makeguids
+}
+
+do_install_class-native() {
+    install -D -m 0755 ${B}/src/makeguids ${D}${bindir}/makeguids
+}
+
+BBCLASSEXTEND = "native"
+
+# See
+# http://lists.openembedded.org/pipermail/openembedded-core/2016-February/116564.html
+# http://lists.openembedded.org/pipermail/openembedded-core/2016-February/116571.html
+# http://lists.openembedded.org/pipermail/openembedded-devel/2016-February/105802.html
+# http://lists.openembedded.org/pipermail/openembedded-devel/2016-February/105786.html
+# but it's still broken:
+# http://lists.openembedded.org/pipermail/openembedded-devel/2016-February/105825.html
+# http://lists.openembedded.org/pipermail/openembedded-devel/2016-February/105830.html
+PNBLACKLIST[efivar] ?= "BROKEN: linux.c:27:30: fatal error: linux/nvme_ioctl.h: No such file or directory"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/flashrom/flashrom_0.9.6.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/flashrom/flashrom_0.9.6.1.bb
new file mode 100644
index 0000000..a1f0b30
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/flashrom/flashrom_0.9.6.1.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "flashrom is a utility for identifying, reading, writing, verifying and erasing flash chips"
+LICENSE = "GPLv2"
+HOMEPAGE = "http://flashrom.org"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+DEPENDS = "pciutils"
+
+SRC_URI = "http://download.flashrom.org/releases/flashrom-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "407e836c0a2b17ec76583cb6809f65e5"
+SRC_URI[sha256sum] = "6f7b588cce74c90b4fe9c9c794de105de76e0323442fb5770b1aeab81e9d560a"
+
+do_install() {
+    oe_runmake PREFIX=${prefix} DESTDIR=${D} install
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/fwts/fwts_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/fwts/fwts_git.bb
new file mode 100644
index 0000000..8b0e61b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/fwts/fwts_git.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Firmware testsuite"
+DESCRIPTION = "The tool fwts comprises of over fifty tests that are designed to exercise and test different aspects of a machine's firmware. Many of these tests need super user access to read BIOS data and ACPI tables, so the tool requires running with super user privileges (e.g. with sudo)."
+HOMEPAGE = "https://wiki.ubuntu.com/Kernel/Reference/fwts"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://src/main.c;beginline=1;endline=16;md5=deb8af5388e838d133eaa036f4d1496f"
+
+PV = "14.09.00"
+
+SRCREV = "cf14f3b4bab716dea95de772ad52786c1cbe862a"
+SRC_URI = "git://kernel.ubuntu.com/hwe/fwts.git"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "libpcre json-c glib-2.0"
+
+inherit autotools-brokensep
+
+FILES_${PN} += "${libdir}/fwts/lib*${SOLIBS}"
+FILES_${PN}-dev += "${libdir}/fwts/lib*${SOLIBSDEV} ${libdir}/fwts/lib*.la"
+FILES_${PN}-staticdev += "${libdir}/fwts/lib*a"
+FILES_${PN}-dbg += "${libdir}/fwts/.debug"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot-4.6.5/lua-loadlibs-configure-in-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot-4.6.5/lua-loadlibs-configure-in-fix.patch
new file mode 100644
index 0000000..23f2cd2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot-4.6.5/lua-loadlibs-configure-in-fix.patch
@@ -0,0 +1,16 @@
+Index: gnuplot-4.6.5/configure.in
+===================================================================
+--- gnuplot-4.6.5.orig/configure.in
++++ gnuplot-4.6.5/configure.in
+@@ -690,6 +690,11 @@ if test "${with_lua}" = yes ; then
+   fi
+ 
+   if test "$with_lua" != no; then
++    dnl check for dlopen/dl to fix loadlibs link failure
++    AC_CHECK_FUNC([dlopen], [],
++      AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl"))
++    AC_SUBST(DLOPEN_LIBS)
++    LUA_LIBS="$LUA_LIBS $DLOPEN_LIBS"
+     TERMLIBS="$TERMLIBS $LUA_LIBS"
+     CPPFLAGS="$CPPFLAGS $LUA_CFLAGS"
+   else
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot-4.6.5/subdirs.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot-4.6.5/subdirs.patch
new file mode 100644
index 0000000..8c7d1f0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot-4.6.5/subdirs.patch
@@ -0,0 +1,11 @@
+--- /tmp/Makefile.am	2007-08-23 13:10:15.560659023 +0200
++++ gnuplot-4.2.0/Makefile.am	2007-08-23 13:10:34.961764629 +0200
+@@ -1,7 +1,7 @@
+ ## Process this file with automake to produce Makefile.in -*-Makefile-*-
+ AUTOMAKE_OPTIONS = foreign 1.2h
+ 
+-SUBDIRS = config m4 term src docs $(LISPDIR) man demo tutorial share
++SUBDIRS = config m4 term src  $(LISPDIR) man share
+ 
+ EXTRA_DIST = BUGS CodeStyle Copyright FAQ GNUmakefile INSTALL INSTALL.gnu \
+ Makefile.maint PATCHLEVEL PGPKEYS PORTING README README.1ST README.exp \
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot.inc b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot.inc
new file mode 100644
index 0000000..69bc74b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot.inc
@@ -0,0 +1,41 @@
+DESCRIPTION = "Gnuplot is a portable command-line driven interactive datafile \
+(text or binary) and function plotting utility."
+HOMEPAGE = "http://www.gnuplot.info/"
+SECTION = "console/scientific"
+LICENSE = "gnuplot"
+LIC_FILES_CHKSUM = "file://Copyright;md5=243a186fc2fd3b992125d60d5b1bab8f"
+DEPENDS = "virtual/libx11 gd readline"
+
+inherit autotools distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+acpaths = ""
+
+PACKAGECONFIG ??= "cairo"
+PACKAGECONFIG[cairo] = "--with-cairo,--without-cairo,cairo pango"
+PACKAGECONFIG[lua] = "--with-lua,--without-lua,lua"
+
+EXTRA_OECONF = "--with-readline=${STAGING_LIBDIR}/.. \
+                --without-lisp-files \
+                --without-tutorial \
+                --disable-wxwidgets"
+
+do_compile_prepend() {
+    install -m 0644 ${WORKDIR}/qtplot-0.2/qtopia.trm ${S}/term/
+}
+
+do_install_append() {
+    install -d ${D}${datadir}/applications/
+    install -m 0644 ${WORKDIR}/gnuplot.desktop ${D}${datadir}/applications/
+    install -d ${D}${datadir}/pixmaps/
+    install -m 0644 ${WORKDIR}/gnuplot.png ${D}${datadir}/pixmaps/
+}
+
+PACKAGES =+ "${PN}-x11-dbg ${PN}-x11"
+DESCRIPTION_${PN}-x11 = "X11 display terminal for Gnuplot."
+SECTION_${PN}-x11 = "x11/scientific"
+FILES_${PN}-x11 = "${libexecdir} ${datadir}/applications ${datadir}/pixmaps ${libdir}/X11 "
+
+FILES_${PN} += "${datadir}/texmf"
+FILES_${PN}-x11-dbg += "${libexecdir}/gnuplot/*/.debug"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot/gnuplot.desktop b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot/gnuplot.desktop
new file mode 100644
index 0000000..f67df9e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot/gnuplot.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=Gnuplot
+Comment=Plot data and function graphs
+Exec=x-terminal-emulator -e gnuplot
+Terminal=false
+Type=Application
+Icon=gnuplot
+Categories=Science;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot/gnuplot.png b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot/gnuplot.png
new file mode 100644
index 0000000..054cd9e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot/gnuplot.png
Binary files differ
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot/qtopia.trm b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot/qtopia.trm
new file mode 100644
index 0000000..b52f9bb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot/qtopia.trm
@@ -0,0 +1,483 @@
+/*
+ * $Id: dumb.trm,v 1.16 2004/04/13 17:24:16 broeker Exp $
+ *
+ */
+
+/* GNUPLOT - qtopia.trm */
+
+/*[
+ * Copyright 1991 - 1993, 1998, 2004   Thomas Williams, Colin Kelley
+ *
+ * Permission to use, copy, and distribute this software and its
+ * documentation for any purpose with or without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.
+ *
+ * Permission to modify the software is granted, but not the right to
+ * distribute the complete modified source code.  Modifications are to
+ * be distributed as patches to the released version.  Permission to
+ * distribute binaries produced by compiling modified sources is granted,
+ * provided you
+ *   1. distribute the corresponding source modifications from the
+ *    released version in the form of a patch file along with the binaries,
+ *   2. add special version identification to distinguish your version
+ *    in addition to the base release version number,
+ *   3. provide your name and address as the primary contact for the
+ *    support of your modified version, and
+ *   4. retain our contact information in regard to use of the base
+ *    software.
+ * Permission to distribute the released version of the source code along
+ * with corresponding source modifications in the form of a patch file is
+ * granted with same provisions 2 through 4 for binary distributions.
+ *
+ * This software is provided "as is" without express or implied warranty
+ * to the extent permitted by applicable law.
+]*/
+
+/*
+ * This file is included by ../term.c.
+ *
+ * This terminal driver supports:
+ *   qtopia terminals
+ *
+ * AUTHORS
+ *   Michael Neuroth, 2004-05-16
+ *           INTERNET: michael.neuroth@freenet.de
+ *
+ * send your comments or suggestions to (gnuplot-info@lists.sourceforge.net).
+ *
+ */
+#include "driver.h"
+
+#define NO_QTOPIA_ENHANCED_SUPPORT
+
+#ifdef TERM_REGISTER
+register_term(qtopia_driver)
+#endif
+
+#ifdef TERM_PROTO
+TERM_PUBLIC void QTOPIA_options __PROTO((void));
+TERM_PUBLIC void QTOPIA_init __PROTO((void));
+TERM_PUBLIC void QTOPIA_graphics __PROTO((void));
+TERM_PUBLIC void QTOPIA_text __PROTO((void));
+TERM_PUBLIC void QTOPIA_reset __PROTO((void));
+TERM_PUBLIC void QTOPIA_linetype __PROTO((int linetype));
+TERM_PUBLIC void QTOPIA_move __PROTO((unsigned int x, unsigned int y));
+TERM_PUBLIC void QTOPIA_point __PROTO((unsigned int x, unsigned int y,
+				     int point));
+TERM_PUBLIC void QTOPIA_vector __PROTO((unsigned int x, unsigned int y));
+TERM_PUBLIC void QTOPIA_put_text __PROTO((unsigned int x, unsigned int y,
+					const char *str));
+TERM_PUBLIC void QTOPIA_arrow __PROTO((unsigned int sx, unsigned int sy,
+				     unsigned int ex, unsigned int ey,
+				     int head));
+
+#define ENHqtopia_put_text NULL
+
+
+#define QTOPIA_XMAX 4096
+#define QTOPIA_YMAX 4096
+
+#ifdef ZAURUS
+#define QTOPIA_VCHAR (QTOPIA_YMAX/25)
+#define QTOPIA_HCHAR (QTOPIA_XMAX/40)
+#define QTOPIA_VTIC (QTOPIA_YMAX/50)
+#define QTOPIA_HTIC (QTOPIA_XMAX/40)
+#else
+#define QTOPIA_VCHAR (QTOPIA_YMAX/25)
+#define QTOPIA_HCHAR (QTOPIA_XMAX/50)
+#define QTOPIA_VTIC (QTOPIA_YMAX/100)
+#define QTOPIA_HTIC (QTOPIA_XMAX/150)
+#endif
+
+#endif /* TERM_PROTO */
+
+#ifdef TERM_BODY
+
+/*#include <winsock2.h>*/
+/* needs: ws2_32.lib */
+#ifndef _MSC_VER
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#endif
+
+#define QTOPIA_MAX_BUFFER		512
+#define QTOPIA_MAX_DELAY_COUNT	20	/* * 100 ms = 2 s */
+
+#ifdef _MSC_VER
+#define QTOPIA_BAD_SOCKET		INVALID_SOCKET		/* -1 */
+#define QTOPIA_BAD_CONNECT		SOCKET_ERROR
+#else
+#define QTOPIA_BAD_SOCKET		-1
+#define QTOPIA_BAD_CONNECT		-1
+#endif
+#define QTOPIA_PORT_NO			5050
+
+static int qtopia_client_socket = QTOPIA_BAD_SOCKET;
+static unsigned short qtopia_port_no = QTOPIA_PORT_NO;
+static char qtopia_host_name[QTOPIA_MAX_BUFFER+1] = { "localhost" };
+
+static int OpenClient __PROTO(( int test));
+static void CloseClient();
+
+static void MySleep( delay )
+int delay;
+{
+#ifdef _MSC_VER
+	Sleep( delay );
+#else
+	usleep( delay );
+#endif
+}
+
+static void InitSockets()
+{
+#ifdef _MSC_VER
+	WORD wVersionRequested;
+	WSADATA wsaData;
+	int err;
+
+	wVersionRequested = MAKEWORD( 2, 2 );
+
+	err = WSAStartup( wVersionRequested, &wsaData );
+#endif
+}
+
+static void ExitSockets()
+{
+#ifdef _MSC_VER
+	WSACleanup();
+#endif
+}
+
+static int CheckForQtplot( count )
+int count;
+{
+	/* test (via sockets) if qtplot is allready running */
+	if( !OpenClient( 1 ) )
+	{
+		/* give qtplot a litle bit time to start... */
+		if( count < QTOPIA_MAX_DELAY_COUNT )
+		{
+			if( count == 0 )
+			{
+#ifdef _MSC_VER
+				system( "start qtplot" );
+#else
+				system( "qtplot&" );
+#endif
+			}
+		
+			MySleep(100);
+
+			return CheckForQtplot( count+1 );
+		}
+		else
+		{
+			return 0;
+		}
+	}
+	else
+	{
+		CloseClient();
+
+		return 1;
+	}
+}
+
+static int OpenClient( test )
+int test;
+{
+    int len;
+    struct sockaddr_in address;
+    int result;
+
+	/*  Create a socket for the client.  */
+
+    qtopia_client_socket = socket(AF_INET, SOCK_STREAM, 0);
+
+	if( qtopia_client_socket != QTOPIA_BAD_SOCKET )
+	{
+		/*  Name the socket, as agreed with the server.  */
+
+		address.sin_family = AF_INET;
+		address.sin_addr.s_addr = inet_addr(/*qtopia_host_name*/"127.0.0.1");	/* localhost */
+		address.sin_port = htons(qtopia_port_no);
+		len = sizeof(address);
+
+		/*  Now connect our socket to the server's socket.  */
+
+		result = connect(qtopia_client_socket, (struct sockaddr *)&address, len);
+		
+		if( result == QTOPIA_BAD_SOCKET )
+		{
+			/* mark this socket as bad */
+
+			close( qtopia_client_socket );
+
+			qtopia_client_socket = QTOPIA_BAD_SOCKET;
+
+			if( !test )
+			{
+				fprintf( gpoutfile, "error connecting to server !\n" );
+			}
+			return 0;	/* something went wrong */
+		}
+	}
+	else
+	{
+		if( !test )
+		{
+			fprintf( gpoutfile, "error creating socket !\n" );
+		}
+		return 0;	/* something went wrong */
+	}
+
+	return 1;	/* everything ist ok ! */
+}
+
+static void CloseClient()
+{
+    close( qtopia_client_socket );
+}
+
+static int IsClientOk()
+{
+	return qtopia_client_socket != QTOPIA_BAD_SOCKET;
+}
+
+static void SendDataToSocket( sLine )
+const char * sLine;
+{
+	if( IsClientOk() )
+	{
+		int send_count;
+
+		send_count = send( qtopia_client_socket, sLine, strlen( sLine ), 0 );
+
+		if( send_count <= 0 )
+		{
+			fprintf( gpoutfile, "error writing to socket str=%s!\n", sLine );
+		}
+		/*
+		else
+		{
+			fprintf( gpoutfile, "wrote %d bytes\n", send_count );
+		}
+		*/
+	}
+	else
+	{
+		/* for testing... */
+		/*fprintf( gpoutfile, sLine );*/
+	}
+}
+
+/* ************************************************** */
+
+enum QTOPIA_id { QTOPIA_PORT, QTOPIA_HOST, QTOPIA_OTHER };
+
+static struct gen_table QTOPIA_opts[] =
+{
+    { "po$rt", QTOPIA_PORT },
+    { "ho$st", QTOPIA_HOST },
+    { NULL, QTOPIA_OTHER }
+};
+
+TERM_PUBLIC void
+QTOPIA_options()
+{
+    /* this is not for the qtopia terminal ! */
+	/*SendDataToSocket( "qtd options\n" );*/
+
+    int x, y;
+    struct value a;
+
+    while (!END_OF_COMMAND) 
+	{
+		switch(lookup_table(&QTOPIA_opts[0],c_token)) 
+		{
+			case QTOPIA_PORT:
+				c_token++;
+				if (END_OF_COMMAND)
+					int_error(c_token, "expecting port number");
+				qtopia_port_no = (int) real(const_express(&a));
+				break;
+			case QTOPIA_HOST:
+				c_token++;
+				if (END_OF_COMMAND)
+					int_error(c_token, "expecting host name");
+				if (isstring(c_token))
+					quote_str( qtopia_host_name, c_token, sizeof(qtopia_host_name) );
+				else
+ 					copy_str( qtopia_host_name, c_token, sizeof(qtopia_host_name) );
+				c_token++;
+				break;
+			case QTOPIA_OTHER:
+			default:
+				break;
+		}
+    }
+
+    sprintf(term_options, "host=%s port=%d",qtopia_host_name,qtopia_port_no);
+}
+
+
+TERM_PUBLIC void
+QTOPIA_init()
+{
+	/* initialize lib (if necassary) */
+	InitSockets();
+	CheckForQtplot( 0 );
+	OpenClient( 0 ); 
+
+	SendDataToSocket( "qtd init\n" );
+}
+
+
+TERM_PUBLIC void
+QTOPIA_graphics()
+{
+	SendDataToSocket( "qtd graphics\n" );
+}
+
+TERM_PUBLIC void
+QTOPIA_text()
+{
+	SendDataToSocket( "qtd text\n" );
+}
+
+
+TERM_PUBLIC void
+QTOPIA_reset()
+{
+	SendDataToSocket( "qtd reset\n" );
+
+	/* give the qtplot a litle bit time to shutdown */
+	MySleep(100);
+
+	CloseClient();
+	ExitSockets();
+}
+
+
+TERM_PUBLIC void
+QTOPIA_linetype(linetype)
+int linetype;
+{
+	char sBuffer[QTOPIA_MAX_BUFFER];
+
+	sprintf( sBuffer, "qtd linetype type=%d\n",linetype );
+
+	SendDataToSocket( sBuffer );
+}
+
+
+TERM_PUBLIC void
+QTOPIA_move(x, y)
+unsigned int x, y;
+{
+	char sBuffer[QTOPIA_MAX_BUFFER];
+
+	sprintf( sBuffer, "qtd move x=%d y=%d\n",x,y );
+
+	SendDataToSocket( sBuffer );
+}
+
+
+TERM_PUBLIC void
+QTOPIA_point(x, y, point)
+unsigned int x, y;
+int point;
+{
+	char sBuffer[QTOPIA_MAX_BUFFER];
+
+	sprintf( sBuffer, "qtd point x=%d y=%d point=%d\n",x,y,point );
+
+	SendDataToSocket( sBuffer );
+}
+
+
+TERM_PUBLIC void
+QTOPIA_vector(_x, _y)
+unsigned int _x, _y;
+{
+	char sBuffer[QTOPIA_MAX_BUFFER];
+
+	sprintf( sBuffer, "qtd vector x=%d y=%d\n",_x,_y );
+
+	SendDataToSocket( sBuffer );
+}
+
+
+TERM_PUBLIC void
+QTOPIA_put_text(x, y, str)
+unsigned int x, y;
+const char *str;
+{
+	char sBuffer[QTOPIA_MAX_BUFFER];
+
+	sprintf( sBuffer, "qtd put_text x=%d y=%d str=%s\n",x,y,str );
+
+	SendDataToSocket( sBuffer );
+}
+
+/* not suported yet ! */
+TERM_PUBLIC void
+QTOPIA_arrow(sx, sy, ex, ey, head)
+    unsigned int sx, sy, ex, ey;
+    int head;		/* ignored */
+{
+	char sBuffer[QTOPIA_MAX_BUFFER];
+
+	sprintf( sBuffer, "qtd arrow sx=%d sy=%d ex=%d ey=%d head=%d\n",sx,sy,ex,ey,head );
+
+	SendDataToSocket( sBuffer );
+}
+
+
+#endif /* TERM_BODY */
+
+#ifdef TERM_TABLE
+TERM_TABLE_START(qtopia_driver)
+    "qtopia", "qtopia or Qt",
+    QTOPIA_XMAX, QTOPIA_YMAX, QTOPIA_VCHAR, QTOPIA_HCHAR,
+    QTOPIA_VTIC, QTOPIA_HTIC, QTOPIA_options, QTOPIA_init, QTOPIA_reset,
+    QTOPIA_text, null_scale, QTOPIA_graphics, QTOPIA_move, QTOPIA_vector,
+    QTOPIA_linetype, QTOPIA_put_text, null_text_angle,
+    null_justify_text, QTOPIA_point, /*QTOPIA_arrow*/0, set_font_null,
+    0,				/* pointsize */
+    TERM_CAN_MULTIPLOT,
+    NULL, NULL, NULL, NULL
+#ifdef USE_MOUSE
+    , NULL, NULL, NULL, NULL, NULL
+#endif
+#ifdef PM3D
+    , NULL, NULL, NULL, NULL
+#endif
+TERM_TABLE_END(qtopia_driver)
+
+#undef LAST_TERM
+#define LAST_TERM qtopia_driver
+
+#endif /* TERM_TABLE */
+
+#ifdef TERM_HELP
+START_HELP(qtopia)
+"1 qtopia",
+"?commands set terminal qtopia",
+"?set terminal qtopia",
+"?set term qtopia",
+"?terminal qtopia",
+"?term qtopia",
+"?qtopia",
+" The `qtopia` terminal driver has no additional options.",
+"",
+" Syntax:",
+"       set terminal qtopia",
+""
+END_HELP(qtopia)
+#endif /* TERM_HELP */
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_4.6.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_4.6.5.bb
new file mode 100644
index 0000000..3f694a0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_4.6.5.bb
@@ -0,0 +1,14 @@
+require gnuplot.inc
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/gnuplot/${BP}.tar.gz;name=archive \
+    http://www.mneuroth.de/privat/zaurus/qtplot-0.2.tar.gz;name=qtplot \
+    file://subdirs.patch \
+    file://lua-loadlibs-configure-in-fix.patch \
+    file://gnuplot.desktop \
+    file://gnuplot.png \
+"
+
+SRC_URI[archive.md5sum] = "9a476b21f74bd99c876f1509d731a0f9"
+SRC_URI[archive.sha256sum] = "e550f030c7d04570e89c3d4e3f6e82296816508419c86ab46c4dd73156519a2d"
+SRC_URI[qtplot.md5sum] = "0a481885a496092c77eb4017540b5cf6"
+SRC_URI[qtplot.sha256sum] = "6df317183ff62cc82f3dcf88207a267cd6478cb5147f55d7530c94f1ad5f4132"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/haveged/haveged/remove-systemd-unit-503.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/haveged/haveged/remove-systemd-unit-503.patch
new file mode 100644
index 0000000..df27bcb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/haveged/haveged/remove-systemd-unit-503.patch
@@ -0,0 +1,20 @@
+--- a/init.d/Makefile.am	2014-01-02 18:55:53.000000000 +0100
++++ b/init.d/Makefile.am	2014-08-11 10:59:40.000000000 +0200
+@@ -34,11 +34,11 @@
+ 	$(do_subst) < $(srcdir)/$(src_tmpl) > haveged.service;
+ 
+ install-data-hook:
+-if ENABLE_SYSTEMD_LOOKUP
+-	install -p -m644 haveged.service `pkg-config --variable=systemdsystemunitdir systemd`/haveged.service;
+-else
+-	install -p -m644 haveged.service ($unit_dir)/haveged.service;
+-endif
+-	systemctl enable haveged.service;
++#if ENABLE_SYSTEMD_LOOKUP
++#	install -p -m644 haveged.service `pkg-config --variable=systemdsystemunitdir systemd`/haveged.service;
++#else
++#	install -p -m644 haveged.service ($unit_dir)/haveged.service;
++#endif
++#	systemctl enable haveged.service;
+ 
+ endif
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.1.bb
new file mode 100644
index 0000000..fbd1992d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.1.bb
@@ -0,0 +1,32 @@
+SUMMARY = "haveged - A simple entropy daemon"
+DESCRIPTION = "The haveged project is an attempt to provide an easy-to-use, unpredictable random number generator based upon an adaptation of the HAVEGE algorithm. Haveged was created to remedy low-entropy conditions in the Linux random device that can occur under some workloads, especially on headless servers."
+AUTHOR = "Gary Wuertz"
+HOMEPAGE = "http://www.issihosts.com/haveged/index.html"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM="file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "http://www.issihosts.com/haveged/haveged-${PV}.tar.gz \
+		file://remove-systemd-unit-503.patch \
+		"
+
+SRC_URI[md5sum] = "015ff58cd10607db0e0de60aeca2f5f8"
+SRC_URI[sha256sum] = "9c2363ed9542a6784ff08e247182137e71f2ddb79e8e6c1ac4ad50d21ced3715"
+
+PR = "r0"
+
+inherit autotools systemd
+
+EXTRA_OECONF = "\
+			--enable-init=service.redhat \
+			--enable-nistest=yes \
+			--enable-olt=yes \
+			--enable-threads=no \
+			"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "haveged.service"
+			
+do_install_append() {
+	mkdir -p ${D}${systemd_unitdir}/system
+	install -p -m644 ${B}/init.d/haveged.service ${D}${systemd_unitdir}/system
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit/0001-don-t-strip-when-installing.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit/0001-don-t-strip-when-installing.patch
new file mode 100644
index 0000000..a384b05
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit/0001-don-t-strip-when-installing.patch
@@ -0,0 +1,30 @@
+From cc67246ca6839e5b3f6a286f10ed24c225b77a5e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Eric=20B=C3=A9nard?= <eric@eukrea.com>
+Date: Thu, 4 Jul 2013 12:34:32 +0200
+Subject: [PATCH] don't strip when installing
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Eric Bénard <eric@eukrea.com>
+
+Upstream-Status: Inappropriate [configuration]
+---
+ Makefile.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 159463e..735cc72 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -42,6 +42,6 @@ distclean: clean
+ 
+ install: $(PRODUCT)
+ 	$(INSTALL) -d -m 755 $(DESTDIR)$(bindir)
+-	$(INSTALL) -s -m 755 $(PRODUCT) $(DESTDIR)$(bindir)
++	$(INSTALL) -m 755 $(PRODUCT) $(DESTDIR)$(bindir)
+ 	$(INSTALL) -d -m 755 $(DESTDIR)$(mandir)/man1
+ 	$(INSTALL) -m 644 $(PRODUCT).1 $(DESTDIR)$(mandir)/man1
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.2.13.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.2.13.bb
new file mode 100644
index 0000000..39df5b2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.2.13.bb
@@ -0,0 +1,17 @@
+SUMMARY = "view and edit files in hexadecimal or in ASCII"
+HOMEPAGE = "http://rigaux.org/hexedit.html"
+SECTION = "console/utils"
+LICENSE = "GPLv2+"
+DEPENDS = "ncurses"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+SRC_URI = "http://rigaux.org/${BP}.src.tgz \
+    file://0001-don-t-strip-when-installing.patch "
+
+SRC_URI[md5sum] = "a5af1378d028512a9cad27a5ba3e15f9"
+SRC_URI[sha256sum] = "6a126da30a77f5c0b08038aa7a881d910e3b65d13767fb54c58c983963b88dd7"
+
+inherit autotools-brokensep
+
+S = "${WORKDIR}/${BPN}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/configure.patch
new file mode 100644
index 0000000..31c005c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/configure.patch
@@ -0,0 +1,14 @@
+Index: hplip-3.12.6/configure.in
+===================================================================
+--- hplip-3.12.6.orig/configure.in	2014-07-16 20:03:51.310044196 +0000
++++ hplip-3.12.6/configure.in	2014-07-18 07:53:31.589559192 +0000
+@@ -27,8 +27,7 @@
+ 
+ #AC_PREREQ(2.59)
+ AC_INIT([HP Linux Imaging and Printing], [3.12.6], [3.12.6], [hplip])
+-#AM_INIT_AUTOMAKE([1.9 foreign])
+-AM_INIT_AUTOMAKE
++AM_INIT_AUTOMAKE([1.9 foreign])
+ AC_DISABLE_STATIC
+ 
+ # Checks for programs.
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/cups-1.6.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/cups-1.6.patch
new file mode 100644
index 0000000..7df01aa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/cups-1.6.patch
@@ -0,0 +1,395 @@
+Imported from gentoo:
+https://bugs.gentoo.org/show_bug.cgi?id=428672
+
+diff -Naur hplip-3.12.6_old/prnt/cupsext/cupsext.c hplip-3.12.6/prnt/cupsext/cupsext.c
+--- hplip-3.12.6_old/prnt/cupsext/cupsext.c	2012-08-04 09:18:18.388330038 +0200
++++ hplip-3.12.6/prnt/cupsext/cupsext.c	2012-08-04 09:18:27.855181327 +0200
+@@ -87,6 +87,46 @@
+ #define PY_SSIZE_T_MIN INT_MIN

+ #endif

+ 

++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)

++#define HAVE_CUPS_1_6 1

++#endif

++

++#ifndef HAVE_CUPS_1_6

++#define ippGetCount(attr)     attr->num_values

++#define ippGetGroupTag(attr)  attr->group_tag

++#define ippGetValueTag(attr)  attr->value_tag

++#define ippGetName(attr)      attr->name

++#define ippGetBoolean(attr, element) attr->values[element].boolean

++#define ippGetInteger(attr, element) attr->values[element].integer

++#define ippGetStatusCode(ipp) ipp->request.status.status_code

++#define ippGetString(attr, element, language) attr->values[element].string.text

++

++static ipp_attribute_t * ippFirstAttribute( ipp_t *ipp )

++{

++    if (!ipp)

++        return (NULL);

++    return (ipp->current = ipp->attrs);

++}

++

++static ipp_attribute_t * ippNextAttribute( ipp_t *ipp )

++{

++    if (!ipp || !ipp->current)

++        return (NULL);

++    return (ipp->current = ipp->current->next);

++}

++

++static int ippSetOperation( ipp_t *ipp, ipp_op_t op )

++{

++    ipp->request.op.operation_id = op;

++    return (1);

++}

++

++static int ippSetRequestId( ipp_t *ipp, int request_id )

++{

++    ipp->request.any.request_id = request_id;

++    return (1);

++}

++#endif

+ 

+ int g_num_options = 0;

+ cups_option_t * g_options;

+@@ -333,8 +373,8 @@
+     request = ippNew();

+     language = cupsLangDefault();

+ 

+-    request->request.op.operation_id = CUPS_GET_PRINTERS;

+-    request->request.any.request_id = 1;

++    ippSetOperation( request, CUPS_GET_PRINTERS );

++    ippSetRequestId ( request, 1);

+ 

+     ippAddString( request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,

+                   "attributes-charset", NULL, cupsLangEncoding( language ) );

+@@ -378,10 +418,10 @@
+         ipp_pstate_t state;

+         int i = 0;

+ 

+-        for ( attr = response->attrs; attr != NULL; attr = attr->next )

++        for ( attr = ippFirstAttribute( response ); attr != NULL; attr = ippNextAttribute( response ) )

+         {

+-            while ( attr != NULL && attr->group_tag != IPP_TAG_PRINTER )

+-                attr = attr->next;

++            while ( attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER )

++                attr = ippNextAttribute( response );

+ 

+             if ( attr == NULL )

+                 break;

+@@ -390,41 +430,41 @@
+             state = IPP_PRINTER_IDLE;

+             accepting = 0;

+ 

+-            while ( attr != NULL && attr->group_tag == IPP_TAG_PRINTER )

++            while ( attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER )

+             {

+-                if ( strcmp( attr->name, "printer-name" ) == 0 &&

+-                        attr->value_tag == IPP_TAG_NAME )

+-                    name = attr->values[ 0 ].string.text;

+-

+-                else if ( strcmp( attr->name, "device-uri" ) == 0 &&

+-                        attr->value_tag == IPP_TAG_URI )

+-                    device_uri = attr->values[ 0 ].string.text;

+-

+-                else if ( strcmp( attr->name, "printer-uri-supported" ) == 0 &&

+-                        attr->value_tag == IPP_TAG_URI )

+-                    printer_uri = attr->values[ 0 ].string.text;

+-

+-                else if ( strcmp( attr->name, "printer-info" ) == 0 &&

+-                        attr->value_tag == IPP_TAG_TEXT )

+-                    info = attr->values[ 0 ].string.text;

+-

+-                else if ( strcmp( attr->name, "printer-location" ) == 0 &&

+-                        attr->value_tag == IPP_TAG_TEXT )

+-                    location = attr->values[ 0 ].string.text;

+-

+-                else if ( strcmp( attr->name, "printer-make-and-model" ) == 0 &&

+-                        attr->value_tag == IPP_TAG_TEXT )

+-                    make_model = attr->values[ 0 ].string.text;

+-

+-                else if ( strcmp( attr->name, "printer-state" ) == 0 &&

+-                        attr->value_tag == IPP_TAG_ENUM )

+-                    state = ( ipp_pstate_t ) attr->values[ 0 ].integer;

+-

+-                else if (!strcmp(attr->name, "printer-is-accepting-jobs") &&

+-                        attr->value_tag == IPP_TAG_BOOLEAN)

+-                    accepting = attr->values[ 0 ].boolean;

++                if ( strcmp( ippGetName( attr ), "printer-name" ) == 0 &&

++                        ippGetValueTag( attr ) == IPP_TAG_NAME )

++                    name = ippGetString( attr, 0, NULL );

++

++                else if ( strcmp( ippGetName( attr ), "device-uri" ) == 0 &&

++                        ippGetValueTag( attr ) == IPP_TAG_URI )

++                    device_uri = ippGetString( attr, 0, NULL );

++

++                else if ( strcmp( ippGetName( attr ), "printer-uri-supported" ) == 0 &&

++                        ippGetValueTag( attr ) == IPP_TAG_URI )

++                    printer_uri = ippGetString( attr, 0, NULL );

++

++                else if ( strcmp( ippGetName( attr ), "printer-info" ) == 0 &&

++                        ippGetValueTag( attr ) == IPP_TAG_TEXT )

++                    info = ippGetString( attr, 0, NULL );

++

++                else if ( strcmp( ippGetName( attr ), "printer-location" ) == 0 &&

++                        ippGetValueTag( attr ) == IPP_TAG_TEXT )

++                    location = ippGetString( attr, 0, NULL );

++

++                else if ( strcmp( ippGetName( attr ), "printer-make-and-model" ) == 0 &&

++                        ippGetValueTag( attr ) == IPP_TAG_TEXT )

++                    make_model = ippGetString( attr, 0, NULL );

++

++                else if ( strcmp( ippGetName( attr ), "printer-state" ) == 0 &&

++                        ippGetValueTag( attr ) == IPP_TAG_ENUM )

++                    state = ( ipp_pstate_t ) ippGetInteger( attr, 0 );

++

++                else if (!strcmp(ippGetName( attr ), "printer-is-accepting-jobs") &&

++                        ippGetValueTag( attr ) == IPP_TAG_BOOLEAN)

++                    accepting = ippGetBoolean( attr, 0 );

+ 

+-                attr = attr->next;

++                attr = ippNextAttribute( response );

+             }

+ 

+             if ( device_uri == NULL )

+@@ -522,8 +562,8 @@
+     request = ippNew();

+     language = cupsLangDefault();

+ 

+-    request->request.op.operation_id = CUPS_ADD_PRINTER;

+-    request->request.any.request_id = 1;

++    ippSetOperation( request, CUPS_ADD_PRINTER );

++    ippSetRequestId ( request, 1 );

+ 

+     ippAddString( request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,

+                   "attributes-charset", NULL, cupsLangEncoding( language ) );

+@@ -568,7 +608,7 @@
+     }

+     else

+     {

+-        status = response->request.status.status_code;

++        status = ippGetStatusCode( response );

+         //ippDelete( response );

+         r = 1;

+     }

+@@ -631,8 +671,8 @@
+        */

+     request = ippNew();

+ 

+-    request->request.op.operation_id = CUPS_DELETE_PRINTER;

+-    request->request.op.request_id = 1;

++    ippSetOperation( request, CUPS_DELETE_PRINTER );

++    ippSetRequestId ( request, 1 );

+ 

+     language = cupsLangDefault();

+ 

+@@ -650,7 +690,7 @@
+      */

+     response = cupsDoRequest( http, request, "/admin/" );

+ 

+-    if ( ( response != NULL ) && ( response->request.status.status_code <= IPP_OK_CONFLICT ) )

++    if ( ( response != NULL ) && ( ippGetStatusCode( response ) <= IPP_OK_CONFLICT ) )

+     {

+         r = 1;

+     }

+@@ -721,8 +761,8 @@
+ 

+     request = ippNew();

+ 

+-    request->request.op.operation_id = CUPS_SET_DEFAULT;

+-    request->request.op.request_id = 1;

++    ippSetOperation( request, CUPS_SET_DEFAULT );

++    ippSetRequestId ( request, 1 );

+ 

+     language = cupsLangDefault();

+ 

+@@ -743,7 +783,7 @@
+ 

+     response = cupsDoRequest( http, request, "/admin/" );

+ 

+-    if ( ( response != NULL ) && ( response->request.status.status_code <= IPP_OK_CONFLICT ) )

++    if ( ( response != NULL ) && ( ippGetStatusCode( response ) <= IPP_OK_CONFLICT ) )

+     {

+         r = 1;

+     }

+@@ -797,8 +837,8 @@
+ 

+     request = ippNew();

+ 

+-    request->request.op.operation_id = op;

+-    request->request.op.request_id = 1;

++    ippSetOperation( request, op );

++    ippSetRequestId ( request, 1 );

+ 

+     language = cupsLangDefault();

+ 

+@@ -822,7 +862,7 @@
+ 

+     response = cupsDoRequest(http, request, "/admin/");

+ 

+-    if (( response != NULL ) && (response->request.status.status_code <= IPP_OK_CONFLICT))

++    if (( response != NULL ) && (ippGetStatusCode( response ) <= IPP_OK_CONFLICT))

+     {

+         r = 1;

+     }

+@@ -837,7 +877,7 @@
+     if ( response != NULL )

+         ippDelete( response );

+ 

+-    return Py_BuildValue( "i", r );;

++    return Py_BuildValue( "i", r );

+ }

+ 

+ 

+@@ -1116,8 +1156,8 @@
+ 

+     request = ippNew();

+ 

+-    request->request.op.operation_id = CUPS_GET_PPDS;

+-    request->request.op.request_id   = 1;

++    ippSetOperation( request, CUPS_GET_PPDS );

++    ippSetRequestId ( request, 1 );

+ 

+     language = cupsLangDefault();

+ 

+@@ -1143,43 +1183,43 @@
+     if ((response = cupsDoRequest(http, request, "/")) != NULL)

+     {

+ 

+-        for (attr = response->attrs; attr; attr = attr->next)

++        for (attr = ippFirstAttribute( response ); attr; attr = ippNextAttribute( response ))

+         {

+             PyObject *dict;

+             char *ppdname = NULL;

+ 

+-            while (attr && attr->group_tag != IPP_TAG_PRINTER)

+-                attr = attr->next;

++            while (attr && ippGetGroupTag( attr ) != IPP_TAG_PRINTER)

++                attr = ippNextAttribute( response );

+ 

+             if (!attr)

+                 break;

+ 

+             dict = PyDict_New ();

+ 

+-            for (; attr && attr->group_tag == IPP_TAG_PRINTER; attr = attr->next)

++            for (; attr && ippGetGroupTag( attr ) == IPP_TAG_PRINTER; attr = ippNextAttribute( response ))

+             {

+                 PyObject *val = NULL;

+ 

+-                if (!strcmp (attr->name, "ppd-name") && attr->value_tag == IPP_TAG_NAME)

++                if (!strcmp (ippGetName( attr ), "ppd-name") && ippGetValueTag( attr ) == IPP_TAG_NAME)

+                 {

+-                    ppdname = attr->values[0].string.text;

++                    ppdname = ippGetString( attr, 0, NULL );

+ 

+                     //sprintf( buf, "print '%s'", ppdname);

+                     //PyRun_SimpleString( buf );

+                 }

+ 

+-                else if (attr->value_tag == IPP_TAG_TEXT || attr->value_tag == IPP_TAG_NAME || attr->value_tag == IPP_TAG_KEYWORD)

+-                //else if ((!strcmp (attr->name, "ppd-natural-language") && attr->value_tag == IPP_TAG_LANGUAGE) ||

+-                //    (!strcmp (attr->name, "ppd-make-and-model") && attr->value_tag == IPP_TAG_TEXT) ||

+-                //    (!strcmp (attr->name, "ppd-make") && attr->value_tag == IPP_TAG_TEXT) ||

+-                //    (!strcmp (attr->name, "ppd-device-id") && attr->value_tag == IPP_TAG_TEXT))

++                else if (ippGetValueTag( attr ) == IPP_TAG_TEXT || ippGetValueTag( attr ) == IPP_TAG_NAME || ippGetValueTag( attr ) == IPP_TAG_KEYWORD)

++                //else if ((!strcmp (ippGetName( attr ), "ppd-natural-language") && ippGetValueTag( attr ) == IPP_TAG_LANGUAGE) ||

++                //    (!strcmp (ippGetName( attr ), "ppd-make-and-model") && ippGetValueTag( attr ) == IPP_TAG_TEXT) ||

++                //    (!strcmp (ippGetName( attr ), "ppd-make") && ippGetValueTag( attr ) == IPP_TAG_TEXT) ||

++                //    (!strcmp (ippGetName( attr ), "ppd-device-id") && ippGetValueTag( attr ) == IPP_TAG_TEXT))

+                 {

+-                    val = PyObj_from_UTF8(attr->values[0].string.text);

++                    val = PyObj_from_UTF8(ippGetString( attr, 0, NULL ));

+                 }

+ 

+                 if (val)

+                 {

+-                    PyDict_SetItemString (dict, attr->name, val);

++                    PyDict_SetItemString (dict, ippGetName( attr ), val);

+                     Py_DECREF (val);

+                 }

+             }

+diff -Naur hplip-3.12.6_old/scan/sane/hpaio.c hplip-3.12.6/scan/sane/hpaio.c
+--- hplip-3.12.6_old/scan/sane/hpaio.c	2012-08-04 09:18:21.458389913 +0200
++++ hplip-3.12.6/scan/sane/hpaio.c	2012-08-04 09:18:27.875181720 +0200
+@@ -47,6 +47,43 @@
+ #define DEBUG_DECLARE_ONLY
+ #include "sanei_debug.h"
+ 
++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
++#define HAVE_CUPS_1_6 1
++#endif
++
++#ifndef HAVE_CUPS_1_6
++#define ippGetGroupTag(attr)  attr->group_tag
++#define ippGetValueTag(attr)  attr->value_tag
++#define ippGetName(attr)      attr->name
++#define ippGetString(attr, element, language) attr->values[element].string.text
++
++static ipp_attribute_t * ippFirstAttribute( ipp_t *ipp )
++{
++    if (!ipp)
++        return (NULL);
++    return (ipp->current = ipp->attrs);
++}
++
++static ipp_attribute_t * ippNextAttribute( ipp_t *ipp )
++{
++    if (!ipp || !ipp->current)
++        return (NULL);
++    return (ipp->current = ipp->current->next);
++}
++
++static int ippSetOperation( ipp_t *ipp, ipp_op_t op )
++{
++    ipp->request.op.operation_id = op;
++    return (1);
++}
++
++static int ippSetRequestId( ipp_t *ipp, int request_id )
++{
++    ipp->request.any.request_id = request_id;
++    return (1);
++}
++#endif
++
+ static SANE_Device **DeviceList = NULL;
+ 
+ static int AddDeviceList(char *uri, char *model, SANE_Device ***pd)
+@@ -186,8 +223,8 @@
+    /* Assemble the IPP request */
+    request = ippNew();
+ 
+-   request->request.op.operation_id = CUPS_GET_PRINTERS;
+-   request->request.any.request_id  = 1;
++   ippSetOperation( request, CUPS_GET_PRINTERS );
++   ippSetRequestId( request, 1 );
+ 
+    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, "utf-8");
+    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, "en");
+@@ -197,20 +234,20 @@
+    if ((response = cupsDoRequest(http, request, "/")) == NULL)
+       goto bugout;
+ 
+-   for (attr = response->attrs; attr != NULL; attr = attr->next)
++   for (attr = ippFirstAttribute ( response ); attr != NULL; attr = ippNextAttribute( response ))
+    {
+       /* Skip leading attributes until we hit a printer. */
+-      while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
+-         attr = attr->next;
++      while (attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER)
++         attr = ippNextAttribute( response );
+ 
+       if (attr == NULL)
+          break;
+ 
+-      while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER)
++      while (attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER)
+       {
+-         if (strcmp(attr->name, "device-uri") == 0 && attr->value_tag == IPP_TAG_URI && AddCupsList(attr->values[0].string.text, printer) == 0)
++         if (strcmp(ippGetName( attr ), "device-uri") == 0 && ippGetValueTag( attr ) == IPP_TAG_URI && AddCupsList(ippGetString( attr, 0, NULL ), printer) == 0)
+             cnt++;
+-         attr = attr->next;
++         attr = ippNextAttribute( response );
+       }
+ 
+       if (attr == NULL)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/fix-libusb-paths.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/fix-libusb-paths.patch
new file mode 100644
index 0000000..b347f83
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/fix-libusb-paths.patch
@@ -0,0 +1,35 @@
+Upstream-Status: Inappropriate [configuration]
+
+diff -rupN hplip-3.12.6_orig/configure.in hplip-3.12.6/configure.in
+--- hplip-3.12.6_orig/configure.in	2012-06-18 20:44:24.000000000 +1000
++++ hplip-3.12.6/configure.in	2012-08-16 13:40:07.259927650 +1000
+@@ -524,6 +524,8 @@ if test "$hpijs_only_build" = "no"; then
+       AC_CHECK_HEADERS(usb.h, ,[AC_MSG_ERROR([cannot find libusb-devel support], 11)])
+    else
+       AC_CHECK_LIB([usb-1.0], [libusb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb 1.0 support], 2)])
++      LIBUSBINCLUDEROOT?="/usr/include/"
++      AC_ARG_VAR(LIBUSBINCLUDEROOT, [path to libusb-1.0 folder])
+       AC_CHECK_HEADERS(libusb-1.0/libusb.h, ,[AC_MSG_ERROR([cannot find libusb-1.0-devel support], 11)])
+    fi
+ fi
+diff -rupN hplip-3.12.6_orig/Makefile.am hplip-3.12.6/Makefile.am
+--- hplip-3.12.6_orig/Makefile.am	2012-06-18 20:44:13.000000000 +1000
++++ hplip-3.12.6/Makefile.am	2012-08-16 13:41:12.307932822 +1000
+@@ -72,7 +72,7 @@ libhpmud_la_SOURCES = io/hpmud/hpmud.c i
+ 	  io/hpmud/hpmud.h io/hpmud/hpmudi.h io/hpmud/list.h io/hpmud/mlc.h io/hpmud/pml.h io/hpmud/dot4.c \
+ 	  io/hpmud/dot4.h io/hpmud/jd.c io/hpmud/jd.h io/hpmud/pp.c io/hpmud/pp.h io/hpmud/musb.h io/hpmud/musb_libusb01.c
+ else
+-libhpmud_la_CFLAGS = -I/usr/include/libusb-1.0 -DMUDNAME=\"$(MUDNAME)\" -DCONFDIR=\"$(hplip_confdir)\"
++libhpmud_la_CFLAGS = -I/$(LIBUSBINCLUDEROOT)/libusb-1.0 -DMUDNAME=\"$(MUDNAME)\" -DCONFDIR=\"$(hplip_confdir)\"
+ libhpmud_la_SOURCES = io/hpmud/hpmud.c io/hpmud/mlc.c io/hpmud/model.c io/hpmud/pml.c \
+ 	  io/hpmud/hpmud.h io/hpmud/hpmudi.h io/hpmud/list.h io/hpmud/mlc.h io/hpmud/pml.h io/hpmud/dot4.c \
+ 	  io/hpmud/dot4.h io/hpmud/jd.c io/hpmud/jd.h io/hpmud/pp.c io/hpmud/pp.h io/hpmud/musb.h io/hpmud/musb.c
+@@ -286,7 +286,7 @@ hpmudext_la_LIBADD = libhpmud.la
+ if LIBUSB01_BUILD
+ hpmudext_la_CFLAGS = -I$(PYTHONINCLUDEDIR)
+ else
+-hpmudext_la_CFLAGS =-I/usr/include/libusb-1.0 -I$(PYTHONINCLUDEDIR)
++hpmudext_la_CFLAGS =-I$(LIBUSBINCLUDEROOT)/libusb-1.0 -I$(PYTHONINCLUDEDIR)
+ endif
+ 
+ # ui (qt3)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/setup-add-sleep-after-cups-reset.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/setup-add-sleep-after-cups-reset.patch
new file mode 100644
index 0000000..0e1b6c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/setup-add-sleep-after-cups-reset.patch
@@ -0,0 +1,12 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+--- hplip-3.11.10/setup.py.orig	2011-10-02 14:06:19.000000000 +1100
++++ hplip-3.11.10/setup.py	2012-02-29 08:21:39.167999938 +1100
+@@ -573,6 +573,7 @@
+ 
+             log.debug("Restarting CUPS...")
+             status, output = utils.run(restart_cups())
++            time.sleep(3)
+             log.debug("Restart CUPS returned: exit=%d output=%s" % (status, output))
+ 
+             cups.setPasswordPrompt("You do not have permission to add a printer.")
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.12.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.12.6.bb
new file mode 100644
index 0000000..86628b1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.12.6.bb
@@ -0,0 +1,75 @@
+SUMMARY = "HP Linux Imaging and Printing"
+LICENSE="GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=442bb3cbbeeb60643a87325718b8a8ee"
+
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz \
+           file://setup-add-sleep-after-cups-reset.patch \
+           file://fix-libusb-paths.patch \
+           file://cups-1.6.patch \
+           file://configure.patch \
+"
+
+DEPENDS += "cups python libusb"
+
+inherit autotools-brokensep python-dir pythonnative pkgconfig
+
+export BUILD_SYS
+export HOST_SYS
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+EXTRA_OECONF += "\
+        LIBUSBINCLUDEROOT=${STAGING_INCDIR} \
+        --disable-network-build \
+        --disable-doc-build \
+        --disable-pp-build \
+        --disable-scan-build \
+        --disable-gui-build \
+        --disable-fax-build \
+        --disable-policykit  \
+        --disable-qt4 \
+        --disable-qt3 \
+        --disable-dbus-build \
+        --disable-foomatic-drv-install \
+        --enable-foomatic-ppd-install  \
+        --enable-foomatic-rip-hplip-install \
+        --with-cupsbackenddir=${libdir}/cups/backend \
+        --with-cupsfilterdir=${libdir}/cups/filter \
+"
+
+PACKAGES += "${PN}-ppd ${PN}-cups ${PN}-backend ${PN}-filter ${PN}-hal"
+
+RDEPENDS_${PN} += " \
+        python-syslog \
+        python-pprint \
+        python-compression \
+        python-shell \
+        python-xml \
+        python-unixadmin \
+        python-html \
+        python-resource \
+        python-terminal \
+        python-subprocess\
+"
+RDEPENDS_${PN}-filter += "perl"
+
+# need to snag the debug file or OE will fail on backend package
+FILES_${PN}-dbg += "\
+        ${libdir}/cups/backend/.debug \
+        ${PYTHON_SITEPACKAGES_DIR}/.debug \
+        ${libdir}/cups/filter/.debug "
+
+FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
+FILES_${PN}-ppd = "${datadir}/ppd"
+FILES_${PN}-cups = "${datadir}/cups"
+FILES_${PN}-backend = "${libdir}/cups/backend"
+FILES_${PN}-filter = "${libdir}/cups/filter"
+FILES_${PN}-hal = "${datadir}/hal"
+
+FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/*.so"
+
+SRC_URI[md5sum] = "5303938e8630775ea6fb383af85775e5"
+SRC_URI[sha256sum] = "54578000792969adb583e75efeacb9c46ab69659ec7e9424de390613f3595775"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.10.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.10.bb
new file mode 100644
index 0000000..d25e8e3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.10.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A GNU program for formatting C code"
+HOMEPAGE = "http://www.gnu.org/software/indent/"
+SECTION = "Applications/Text"
+DESCRIPTION = "Indent is a GNU program for beautifying C code, so that \
+it is easier to read. Indent can also convert from one C writing style \
+to a different one. Indent understands correct C syntax and tries to handle \
+incorrect C syntax. \
+Install the indent package if you are developing applications in C and \
+you want a program to format your code."
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+DEPENDS = "virtual/gettext"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz"
+SRC_URI[md5sum] = "be35ea62705733859fbf8caf816d8959"
+SRC_URI[sha256sum] = "8a9b41be5bfcab5d8c1be74204b10ae78789fc3deabea0775fdced8677292639"
+
+inherit autotools gettext
+
+FILES_${PN}-doc += "/usr/doc/indent/indent.html"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb
new file mode 100644
index 0000000..5dcae98
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Simple top-like I/O monitor"
+DESCRIPTION = "iotop does for I/O usage what top(1) does for CPU usage. \
+    It watches I/O usage information output by the Linux kernel and displays \
+    a table of current I/O usage by processes on the system."
+HOMEPAGE = "http://guichaz.free.fr/iotop/"
+
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
+
+SRC_URI = "http://guichaz.free.fr/iotop/files/${BP}.tar.bz2"
+SRC_URI[md5sum] = "5ef9456b26d7694abf3101a72e1e0d1d"
+SRC_URI[sha256sum] = "3adea2a24eda49bbbaeb4e6ed2042355b441dbd7161e883067a02bfc8dcef75b"
+
+inherit distutils
+
+do_install_append() {
+    rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/site.pyo || true
+    rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/site.py  || true
+}
+
+RDEPENDS_${PN} = "python-curses python-textutils \
+                  python-codecs python-ctypes python-pprint \
+                  python-shell"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.4.bb
new file mode 100644
index 0000000..c235729
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.4.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Jansson is a C library for encoding, decoding and manipulating JSON data"
+HOMEPAGE = "http://www.digip.org/jansson/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6946b728e700de875e60ebb453cc3a20"
+
+SRC_URI = "http://www.digip.org/jansson/releases/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "c4629b89bf0432f3158c461e88fe0113"
+SRC_URI[sha256sum] = "1fcbd1ac3d8b610644acf86a5731d760bb228c9acbace20a2ad0f23baec79b41"
+
+inherit autotools pkgconfig
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi-native_0.9.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi-native_0.9.2.bb
new file mode 100644
index 0000000..9b2ace9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi-native_0.9.2.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Tool for rapid CMPI providers development"
+DESCRIPTION = "\
+KonkretCMPI makes CMPI provider development easier by generating type-safe \
+concrete CIM interfaces from MOF definitions and by providing default \
+implementations for many of the provider operations."
+HOMEPAGE = "https://github.com/rnovacek/konkretcmpi"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f673270bfc350d9ce1efc8724c6c1873"
+DEPENDS = "cmake-native cmpi-bindings-native"
+
+SRC_URI = "git://github.com/rnovacek/konkretcmpi.git \
+           file://konkretcmpi-0.9.2-fix-returning-instance-from-method.patch \
+           file://0001-CMakeLists.txt-fix-lib64-can-not-be-shiped-in-64bit-.patch "
+
+SRCREV = "460e6421c16a8216d29ccd1b7490f814dab8b769"
+S = "${WORKDIR}/git"
+
+inherit native cmake
+LDFLAGS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
+
+EXTRA_OECMAKE = "-DWITH_PYTHON=ON \
+                 ${@base_conditional("libdir", "/usr/lib64", "-DLIB_SUFFIX=64", "", d)} \
+                 ${@base_conditional("libdir", "/usr/lib32", "-DLIB_SUFFIX=32", "", d)} \
+                "
+
+do_install_append() {
+    rm -rf ${D}${datadir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi/0001-CMakeLists.txt-fix-lib64-can-not-be-shiped-in-64bit-.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi/0001-CMakeLists.txt-fix-lib64-can-not-be-shiped-in-64bit-.patch
new file mode 100644
index 0000000..40a0643
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi/0001-CMakeLists.txt-fix-lib64-can-not-be-shiped-in-64bit-.patch
@@ -0,0 +1,31 @@
+From d97ac2bf2ed9c84ffd65ff10989068b202e09fdf Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Mon, 3 Aug 2015 00:29:54 +0900
+Subject: [PATCH] CMakeLists.txt: fix lib64 can not be shiped in 64bit target
+
+Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+---
+ CMakeLists.txt | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index be544d1..14696e4 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -11,13 +11,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_P
+ 
+ find_package(CMPI)
+ 
+-# Set LIB_SUFFIX to 64 on 64bit architectures
+-if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+-    set(LIB_SUFFIX "")
+-else(CMAKE_SIZEOF_VOID_P EQUAL 4)
+-    set(LIB_SUFFIX 64)
+-endif(CMAKE_SIZEOF_VOID_P EQUAL 4)
+-
+ option(WITH_PYTHON "Build experimental Python bindings" OFF)
+ 
+ add_subdirectory(cmake)
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi/0001-to-fix-lib64-can-not-be-shiped-in-64bit-target.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi/0001-to-fix-lib64-can-not-be-shiped-in-64bit-target.patch
new file mode 100644
index 0000000..7da13ee
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi/0001-to-fix-lib64-can-not-be-shiped-in-64bit-target.patch
@@ -0,0 +1,36 @@
+From f3c39fd2a4b5f53338b5f821788c63858bf860cf Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Sun, 2 Aug 2015 22:08:43 +0900
+Subject: [PATCH] to fix lib64 can not be shiped in 64bit target
+
+To fix the warning as following:
+WARNING: QA Issue: konkretcmpi: Files/directories were installed but not shipped in any package:
+  /usr/lib64
+  /usr/lib64/libkonkret.so
+  /usr/lib64/libkonkret.so.0.0.1
+  /usr/lib64/libkonkret.so.0
+  /usr/lib64/libkonkretmof.so.0.0.1
+  /usr/lib64/libkonkretmof.so
+  ...
+
+Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+---
+ cmake/modules/FindKonkretCMPI.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/modules/FindKonkretCMPI.cmake b/cmake/modules/FindKonkretCMPI.cmake
+index b888cfd..097caed 100644
+--- a/cmake/modules/FindKonkretCMPI.cmake
++++ b/cmake/modules/FindKonkretCMPI.cmake
+@@ -9,7 +9,7 @@ find_path(KONKRETCMPI_INCLUDE_DIR
+ find_library(KONKRETCMPI_LIBRARY
+     NAMES konkret
+     HINTS $ENV{KONKRETCMPI_LIB_DIR}
+-    PATH_SUFFIXES lib64 lib
++    PATH_SUFFIXES lib lib64
+     PATHS /usr /usr/local
+ )
+ 
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi/konkretcmpi-0.9.2-fix-returning-instance-from-method.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi/konkretcmpi-0.9.2-fix-returning-instance-from-method.patch
new file mode 100644
index 0000000..b54d091
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi/konkretcmpi-0.9.2-fix-returning-instance-from-method.patch
@@ -0,0 +1,38 @@
+Port from Fedora20
+
+    | commit aca6c7f910ffe9930b5789969f0adfadd668bb46
+    | Author: Michal Minar <miminar@redhat.com>
+    | Date:   Fri Jun 20 10:50:45 2014 +0200
+    | 
+    |     Fix returning instance as an output argument from method
+    |     
+    |     Submitted By: Radek Novacek <rnovacek@redhat.com>
+
+Upstream-Status: Pending
+Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
+
+diff --git a/src/program/main.cpp b/src/program/main.cpp
+index 885dc12..9e7108a 100644
+--- a/src/program/main.cpp
++++ b/src/program/main.cpp
+@@ -506,7 +506,11 @@ static void gen_feature_decls(
+ 
+             // Add sig entry [type][length][name][zero-terminator]
+ 
+-            KTag tag = _ktag(pd->data_type, pd->array_index, key, false, false);
++            KTag tag;
++            if (pd->qualifiers->has_key("EmbeddedInstance"))
++                tag = _ktag(TOK_INSTANCE, pd->array_index, key, false, false);
++            else
++                tag = _ktag(pd->data_type, pd->array_index, key, false, false);
+             pack_tag(sig, tag);
+             pack_name(sig, pd->name);
+             count++;
+@@ -640,6 +644,7 @@ static void gen_param(FILE* os, MOF_Parameter* p, vector<unsigned char>& sig)
+         const char* ktn = _ktype_name(p->data_type);
+ 
+         if (p->qualifiers->has_key("EmbeddedInstance")) {
++            tag = _ktag(TOK_INSTANCE, p->array_index, false, in, out);
+             if (p->array_index)
+                 put(os, "    KInstanceA $0;\n", p->name, NULL);
+             else
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb
new file mode 100644
index 0000000..1d8b0db
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Tool for rapid CMPI providers development"
+DESCRIPTION = "\
+KonkretCMPI makes CMPI provider development easier by generating type-safe \
+concrete CIM interfaces from MOF definitions and by providing default \
+implementations for many of the provider operations."
+HOMEPAGE = "https://github.com/rnovacek/konkretcmpi"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f673270bfc350d9ce1efc8724c6c1873"
+DEPENDS = "swig-native sblim-cmpi-devel python"
+
+SRC_URI = "git://github.com/rnovacek/konkretcmpi.git \
+           file://konkretcmpi-0.9.2-fix-returning-instance-from-method.patch \
+           file://0001-CMakeLists.txt-fix-lib64-can-not-be-shiped-in-64bit-.patch \
+           "
+
+SRCREV = "460e6421c16a8216d29ccd1b7490f814dab8b769"
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+EXTRA_OECMAKE = "-DWITH_PYTHON=ON \
+                 ${@base_conditional("libdir", "/usr/lib64", "-DLIB_SUFFIX=64", "", d)} \
+                 ${@base_conditional("libdir", "/usr/lib32", "-DLIB_SUFFIX=32", "", d)} \
+                "
+
+do_install_append() {
+    rm -rf ${D}${datadir}
+}
+
+PACKAGES =+ "${PN}-python ${PN}-python-dbg"
+
+FILES_${PN}-python = "${libdir}/python2.7/site-packages/konkretmof.py* ${libdir}/python2.7/site-packages/_konkretmof.so"
+FILES_${PN}-python-dbg = "${libdir}/python2.7/site-packages/.debug/*"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc5.inc b/import-layers/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc5.inc
new file mode 100644
index 0000000..680f558
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc5.inc
@@ -0,0 +1,81 @@
+DESCRIPTION = "LCDproc is a client/server suite to drive all kinds of LCD (-like) devices. The client \
+shipped with this package can be used to acquire various kinds of system stats."
+SUMMARY = "Drivers for character-based LCD displays"
+HOMEPAGE = "http://lcdproc.org"
+SECTION = "utils"
+LICENSE = "GPLv2+"
+DEPENDS = "ncurses lirc"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760 \
+                    file://README;beginline=60;md5=637e042cdd3671ba00e78b58ede45d3b"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/lcdproc/${BP}.tar.gz"
+
+inherit autotools update-rc.d
+
+LCD_DRIVERS ?= "all"
+LCD_DEFAULT_DRIVER ?= "curses"
+
+PACKAGECONFIG ??= "usb"
+PACKAGECONFIG[usb] = "--enable-libusb,--disable-libusb,virtual/libusb0"
+PACKAGECONFIG[ftdi] = "--enable-libftdi,--disable-libftdi,libftdi"
+
+EXTRA_OECONF = "--enable-drivers=${LCD_DRIVERS}"
+
+do_install () {
+    # binaries
+    install -D -m 0755 server/LCDd ${D}${sbindir}/LCDd
+    install -D -m 0755 clients/lcdproc/lcdproc ${D}${bindir}/lcdproc
+
+    # init scripts
+    install -d ${D}${sysconfdir}/init.d
+    # so far, not fixed :-( and now even uglier :-((
+    cat scripts/init-LCDd.debian | sed -e s'/--oknodo//' -e 's/ -s -f / -s 1 -f 1 /' -e 's/force-reload/force-restart/' -e 's/sleep 1/sleep 4/' > ${D}${sysconfdir}/init.d/lcdd
+    chmod 0755 ${D}${sysconfdir}/init.d/lcdd
+    install -m 0755 scripts/init-lcdproc.debian ${D}${sysconfdir}/init.d/lcdproc
+    sed -i s'/--oknodo//' ${D}${sysconfdir}/init.d/lcdproc
+
+    # configuration files
+    install -m 0644 ${S}/LCDd.conf ${D}${sysconfdir}/LCDd.conf
+    sed -i 's!^DriverPath=.*!DriverPath=${libdir}/lcdproc/!' ${D}${sysconfdir}/LCDd.conf
+    sed -i 's!^Driver=.*!Driver=${LCD_DEFAULT_DRIVER}!' ${D}${sysconfdir}/LCDd.conf
+    install -m 0644 ${S}/clients/lcdproc/lcdproc.conf ${D}${sysconfdir}/lcdproc.conf
+
+    # driver library files
+    install -d ${D}${libdir}/lcdproc
+    for i in server/drivers/*.so; do
+        install -m 0644 $i ${D}${libdir}/lcdproc/
+    done
+}
+
+PACKAGES =+ "lcdd"
+
+RRECOMMENDS_${PN} = "lcdd"
+
+FILES_lcdd = "${sysconfdir}/LCDd.conf \
+    ${sbindir}/LCDd \
+    ${sysconfdir}/init.d/lcdd"
+
+CONFFILES_lcdd = "${sysconfdir}/LCDd.conf"
+CONFFILES_${PN} = "${sysconfdir}/lcdproc.conf"
+
+# Driver packages
+
+# USB / no USB trickery
+
+RCONFLICTS_lcdd-driver-hd47780nousb = "lcdd-driver-hd44780"
+RCONFLICTS_lcdd-driver-hd47780 = "lcdd-driver-hd44780nousb"
+
+INITSCRIPT_PACKAGES = "lcdd lcdproc"
+INITSCRIPT_NAME_lcdd = "lcdd"
+INITSCRIPT_NAME_lcdproc = "lcdproc"
+INITSCRIPT_PARAMS_lcdd = "defaults 70 21"
+INITSCRIPT_PARAMS_lcdproc = "defaults 71 20"
+
+python populate_packages_prepend() {
+    plugindir = d.expand('${libdir}/lcdproc')
+    do_split_packages(d, plugindir, '(.*)\.so$', 'lcdd-driver-%s', 'LCDd driver for %s', prepend=True)
+}
+
+PACKAGES_DYNAMIC += "^lcdd-driver-.*"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_0.5.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_0.5.6.bb
new file mode 100644
index 0000000..f57e9df
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_0.5.6.bb
@@ -0,0 +1,23 @@
+require lcdproc5.inc
+
+SRC_URI[md5sum] = "df4f5c2c7285eaf6979b9c7768b4877f"
+SRC_URI[sha256sum] = "bd2f43c30ff43b30f43110abe6b4a5bc8e0267cb9f57fa97cc5e5ef9488b984a"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[g15] = ",,libg15 g15daemon libg15render,"
+PACKAGECONFIG[hid] = "--enable-libhid,--disable-libhid,libhid"
+
+LCD_DRIVERS_append = "${@bb.utils.contains('PACKAGECONFIG', 'g15', '', ',!g15', d)}"
+
+do_install_append () {
+    # binaries
+    install -D -m 0755 clients/lcdvc/lcdvc ${D}${sbindir}/lcdvc
+
+    # configuration files
+    install -D -m 0644 ${S}/clients/lcdvc/lcdvc.conf ${D}${sysconfdir}/lcdvc.conf
+}
+
+PACKAGES =+ "lcdvc"
+CONFFILES_lcdvc = "${sysconfdir}/lcdvc.conf"
+FILES_lcdvc = "${sysconfdir}/lcdvc.conf ${sbindir}/lcdvc"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/leveldb/leveldb/0001-Explicitly-disable-tcmalloc.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/leveldb/leveldb/0001-Explicitly-disable-tcmalloc.patch
new file mode 100644
index 0000000..4b76dd0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/leveldb/leveldb/0001-Explicitly-disable-tcmalloc.patch
@@ -0,0 +1,48 @@
+From d6daac04dab4b3acf4b88f16742d1b402cdc3d83 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 1 Oct 2014 18:54:04 +0200
+Subject: [PATCH] Explicitly disable tcmalloc
+
+Without this change leveldb autodetects tcmalloc from sysroot and
+sometimes became dependant on gperftools
+
+Disable autodetection without TCMALLOC_ENABLED=true pased to make
+
+Upstream-Status: Pending
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ build_detect_platform | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/build_detect_platform b/build_detect_platform
+index bb76c4f..a586364 100755
+--- a/build_detect_platform
++++ b/build_detect_platform
+@@ -201,15 +201,17 @@ EOF
+         PLATFORM_LIBS="$PLATFORM_LIBS -lsnappy"
+     fi
+ 
+-    # Test whether tcmalloc is available
+-    $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -ltcmalloc 2>/dev/null  <<EOF
+-      int main() {}
++    if [ "$TCMALLOC_ENABLED" = "true" ]; then
++        # Test whether tcmalloc is available
++        $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -ltcmalloc 2>/dev/null  <<EOF
++          int main() {}
+ EOF
+-    if [ "$?" = 0 ]; then
+-        PLATFORM_LIBS="$PLATFORM_LIBS -ltcmalloc"
+-    fi
++        if [ "$?" = 0 ]; then
++            PLATFORM_LIBS="$PLATFORM_LIBS -ltcmalloc"
++        fi
+ 
+-    rm -f $CXXOUTPUT 2>/dev/null
++        rm -f $CXXOUTPUT 2>/dev/null
++    fi
+ fi
+ 
+ PLATFORM_CCFLAGS="$PLATFORM_CCFLAGS $COMMON_FLAGS"
+-- 
+2.1.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/leveldb/leveldb_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/leveldb/leveldb_git.bb
new file mode 100644
index 0000000..a6a3024
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/leveldb/leveldb_git.bb
@@ -0,0 +1,27 @@
+SUMMARY = "LevelDB is a fast key-value storage library"
+DESCRIPTION = "LevelDB is a fast key-value storage library that provides an ordered mapping from string keys to string values"
+HOMEPAGE = "http://leveldb.googlecode.com"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=92d1b128950b11ba8495b64938fc164d"
+
+SRCREV = "803d69203a62faf50f1b77897310a3a1fcae712b"
+PV = "1.18+git${SRCPV}"
+
+SRC_URI = "git://github.com/google/${BPN}.git \
+    file://0001-Explicitly-disable-tcmalloc.patch \
+"
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+    # do not use oe_runmake. oe_runmake pass to make compilation arguments and override
+    # leveldb makefile variable CFLAGS and broke leveldb build.
+    CFLAGS="${CFLAGS}" make || die
+}
+
+do_install() {
+    install -d ${D}${libdir}
+    oe_libinstall -C ${S} -so libleveldb ${D}${libdir}
+    install -d ${D}${includedir}/leveldb
+    install -m 644 ${S}/include/leveldb/*.h ${D}${includedir}/leveldb/
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
new file mode 100644
index 0000000..0f2a64e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
@@ -0,0 +1,23 @@
+SUMMARY = "USB CEC Adaptor communication Library"
+HOMEPAGE = "http://libcec.pulse-eight.com/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5e8e16396992369f73f3d28875f846da"
+
+DEPENDS = "udev lockdev"
+
+PV = "2.1.4"
+
+SRCREV = "81e38211724bc6e8bd7a60f484433053ed682635"
+SRC_URI = "git://github.com/Pulse-Eight/libcec.git;branch=release"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+# cec-client and xbmc need the .so present to work :(
+FILES_${PN} += "${libdir}/*.so"
+INSANE_SKIP_${PN} = "dev-so"
+
+# Adapter shows up as a CDC-ACM device
+RRECOMMENDS_${PN} = "kernel-module-cdc-acm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.5.bb
new file mode 100644
index 0000000..fb6e50e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.5.bb
@@ -0,0 +1,14 @@
+SUMMARY = "C/C++ Configuration File Library"
+DESCRIPTION = "Library for manipulating structured configuration files"
+HOMEPAGE = "http://www.hyperrealm.com/libconfig/"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=fad9b3332be894bab9bc501572864b29"
+
+SRC_URI = "http://www.hyperrealm.com/${BPN}/${BP}.tar.gz"
+
+inherit autotools-brokensep pkgconfig
+
+SRC_URI[md5sum] = "a939c4990d74e6fc1ee62be05716f633"
+SRC_URI[sha256sum] = "e31daa390d8e4461c8830512fe2e13ba1a3d6a02a2305a02429eec61e68703f6"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/files/fix-ar.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/files/fix-ar.patch
new file mode 100644
index 0000000..cc3f5d4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/files/fix-ar.patch
@@ -0,0 +1,18 @@
+---
+ configure.ac |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- git.orig/configure.ac
++++ git/configure.ac
+@@ -24,10 +24,11 @@ LT_INIT([win32-dll])
+ LT_PROG_RC
+ 
+ # Checks for programs.
+ AC_PROG_CC
+ AC_PROG_CC_C99
++AM_PROG_AR
+ 
+ # Enable automake silent build rules.
+ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+ 
+ # Checks for native Windows.
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb
new file mode 100644
index 0000000..6c4f4a0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Libdivecomputer is a cross-platform and open source library for communication with dive computers from various manufacturers."
+HOMEPAGE = "http://www.divesoftware.org/libdc/"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
+
+DEPENDS = "libusb1"
+
+inherit autotools pkgconfig
+
+PV = "0.4.2+gitr${SRCPV}"
+
+SRCREV = "5f765f91430f16932d96b3777404420aa2dd4c7c"
+SRC_URI = "git://git.libdivecomputer.org/libdivecomputer.git \
+           file://fix-ar.patch \
+          "
+
+S = "${WORKDIR}/git"
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim/multi-line-ACLOCAL_AMFLAGS-isnot-supported-by-autoreconf.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim/multi-line-ACLOCAL_AMFLAGS-isnot-supported-by-autoreconf.patch
new file mode 100644
index 0000000..3d293b4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim/multi-line-ACLOCAL_AMFLAGS-isnot-supported-by-autoreconf.patch
@@ -0,0 +1,21 @@
+multi-line ACLOCAL_AMFLAGS isn't supported by autoreconf.
+It will cause configure error as follow.
+
+   aclocal: error: non-option arguments are not accepted: '\'.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp libgxim-0.5.0.orig/Makefile.am libgxim-0.5.0/Makefile.am
+--- libgxim-0.5.0.orig/Makefile.am	2012-12-13 15:48:09.000000000 +0800
++++ libgxim-0.5.0/Makefile.am	2014-12-19 11:05:50.727209821 +0800
+@@ -2,9 +2,7 @@ NULL =
+ AUTOMAKE_OPTIONS = dist-bzip2
+ SUBDIRS = libgxim m4macros po tests docs
+ 
+-ACLOCAL_AMFLAGS =			\
+-	-I m4macros			\
+-	$(NULL)
++ACLOCAL_AMFLAGS = -I m4macros $(NULL)
+ 
+ CONFIGURE_DEPENDENCIES =		\
+ 	requires			\
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb
new file mode 100644
index 0000000..768bdaa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "GObject-based XIM protocol library"
+DESCRIPTION = "libgxim is a X Input Method protocol library that is implemented by GObject.\
+this library helps you to implement XIM servers or client applications to\
+communicate through XIM protocol without using Xlib API directly, particularly\
+if your application uses GObject-based main loop.\
+\
+This package contains the shared library."
+
+HOMEPAGE = "http://code.google.com/p/libgxim/"
+SECTION = "System Environment/Libraries"
+
+SRC_URI = "https://bitbucket.org/tagoh/libgxim/downloads/${BPN}-${PV}.tar.bz2 \
+           file://multi-line-ACLOCAL_AMFLAGS-isnot-supported-by-autoreconf.patch"
+
+SRC_URI[md5sum] = "4bb1fa63d00eb224439d413591c29a6a"
+SRC_URI[sha256sum] = "75e20d1744139644f9951b78ea3910b162d3380302315cb4b3d0640f23694c79"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "\
+file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+EXTRA_OECONF = " --disable-static --disable-rebuilds"
+DEPENDS += "gtk+ glib-2.0 ruby-native"
+
+inherit autotools pkgconfig gettext
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/files/fix-parallel-make.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/files/fix-parallel-make.patch
new file mode 100644
index 0000000..f6ef6f4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/files/fix-parallel-make.patch
@@ -0,0 +1,21 @@
+From 335b25febd4c864ad0ac08479f5cd43fc21b7d73 Mon Sep 17 00:00:00 2001
+From: Nikias Bassen
+Date: Mon, 09 Jul 2012 21:17:15 +0000
+Subject: Fix building with parallel build makeopts
+
+---
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0bad840..155994e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -57,6 +57,8 @@ ADD_SUBDIRECTORY( plutil )
+ ADD_SUBDIRECTORY( include )
+ ADD_SUBDIRECTORY( test )
+ 
++ADD_DEPENDENCIES( plist libcnary )
++
+ IF ( SWIG_FOUND AND PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND )
+ 	ADD_SUBDIRECTORY( swig )
+ ENDIF ( SWIG_FOUND AND PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND )
+--
+cgit v0.9.0.2
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_1.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_1.8.bb
new file mode 100644
index 0000000..6e8d69f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_1.8.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A library to handle Apple Property List format whereas it's binary or XML"
+
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07 \
+                    file://COPYING.LESSER;md5=6ab17b41640564434dda85c06b7124f7"
+
+DEPENDS = "libxml2 glib-2.0 swig python"
+
+inherit cmake pkgconfig
+
+SRC_URI = "http://www.libimobiledevice.org/downloads/libplist-${PV}.tar.bz2 \
+           file://fix-parallel-make.patch \
+"
+
+SRC_URI[md5sum] = "2a9e0258847d50f9760dc3ece25f4dc6"
+SRC_URI[sha256sum] = "a418da3880308199b74766deef2a760a9b169b81a868a6a9032f7614e20500ec"
+
+PACKAGES =+ "${PN}-utils ${PN}++"
+FILES_${PN} = "${libdir}/libplist${SOLIBS}"
+FILES_${PN}++ = "${libdir}/libplist++${SOLIBS}"
+FILES_${PN}-utils = "${bindir}/*"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/configure.patch
new file mode 100644
index 0000000..ea13e11
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/configure.patch
@@ -0,0 +1,25 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- liblockfile-1.05/./configure.in~configure
++++ liblockfile-1.05/./configure.in
+@@ -1,4 +1,5 @@
+-AC_INIT(lockfile.c)
++AC_INIT
++AC_CONFIG_SRCDIR([lockfile.c])
+ AC_CONFIG_HEADER(autoconf.h)
+ AC_REVISION($Revision: 1.0 $)dnl
+ 
+@@ -111,7 +112,8 @@
+ AC_SUBST(INSTALL_TARGETS)
+ AC_SUBST(nfslockdir)
+ 
+-AC_OUTPUT(\
++AC_CONFIG_FILES([\
+ 	./Makefile \
+ 	./maillock.h \
+-)
++])
++AC_OUTPUT
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/glibc-2.4.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/glibc-2.4.patch
new file mode 100644
index 0000000..e3c4aaa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/glibc-2.4.patch
@@ -0,0 +1,70 @@
+The local function eaccess conflicts with a glibc function of the same name.
+Rename the function so that this can be build under glibc 2.4, and older
+revisions, without any problems.
+
+--- liblockfile-1.06/dotlockfile.c	2006/07/10 03:17:40	1.1
++++ liblockfile-1.06/dotlockfile.c	2006/07/10 03:18:26
+@@ -42,7 +42,7 @@
+ extern int optind;
+ #endif
+ 
+-extern int eaccess(char *, gid_t, struct stat *);
++extern int xeaccess(char *, gid_t, struct stat *);
+ 
+ /*
+  *	Sleep for an amout of time while regulary checking if
+@@ -252,14 +252,14 @@
+ 		return L_ERROR;
+ 	}
+ 	gid = getgid();
+-	if (eaccess(dir, gid, &st) < 0) {
++	if (xeaccess(dir, gid, &st) < 0) {
+ 		if (errno == ENOENT) {
+ enoent:
+ 			if (!quiet) fprintf(stderr,
+ 				"dotlockfile: %s: no such directory\n", dir);
+ 			return L_TMPLOCK;
+ 		}
+-		if ((r = eaccess(dir, getegid(), &st) < 0) && errno == ENOENT)
++		if ((r = xeaccess(dir, getegid(), &st) < 0) && errno == ENOENT)
+ 			goto enoent;
+ 		if (r < 0 || !ismaillock(lockfile, pwd->pw_name)) {
+ 			if (!quiet) fprintf(stderr,
+@@ -272,7 +272,7 @@
+ 	/*
+ 	 *	Now we should be able to chdir() to the lock directory.
+ 	 *	When we stat("."), it should be the same as at the
+-	 *	eaccess() check or someone played symlink() games on us.
++	 *	xeaccess() check or someone played symlink() games on us.
+ 	 */
+ 	if (chdir(dir) < 0 || stat(".", &st2) < 0) {
+ 		if (!quiet) fprintf(stderr,
+--- liblockfile-1.06/lockfile.c	2006/07/10 03:17:40	1.1
++++ liblockfile-1.06/lockfile.c	2006/07/10 03:18:26
+@@ -54,7 +54,7 @@
+ #ifdef LIB
+ static
+ #endif
+-int eaccess(char *fn, gid_t gid, struct stat *st)
++int xeaccess(char *fn, gid_t gid, struct stat *st)
+ {
+ 	struct stat	tmp;
+ 	uid_t		uid = geteuid();
+@@ -96,7 +96,7 @@
+ 		*p = 0;
+ 	else
+ 		strcpy(dir, ".");
+-	if (eaccess(dir, egid, NULL) >= 0) {
++	if (xeaccess(dir, egid, NULL) >= 0) {
+ 		free(dir);
+ 		return 0;
+ 	}
+@@ -111,7 +111,7 @@
+ 			return 0;
+ 		mailgid = st.st_gid;
+ 	}
+-	ret = eaccess(dir, mailgid, NULL) >= 0;
++	ret = xeaccess(dir, mailgid, NULL) >= 0;
+ 	free (dir);
+ 	return ret;
+ }
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/install.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/install.patch
new file mode 100644
index 0000000..a9319ff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/install.patch
@@ -0,0 +1,48 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- liblockfile-1.05/Makefile.in~install
++++ liblockfile-1.05/Makefile.in
+@@ -20,6 +20,7 @@
+ includedir	= @includedir@
+ 
+ MAILGROUP	= @MAILGROUP@
++INSTGRP		= $(if $(MAILGROUP),-g $(MAILGROUP))
+ 
+ all:		@TARGETS@
+ install:	@INSTALL_TARGETS@
+@@ -50,25 +51,27 @@
+ 		$(CC) $(CFLAGS) -c lockfile.c -o xlockfile.o
+ 
+ install_static:	static install_common
++		install -d $(ROOT)$(libdir)
+ 		install -m 644 liblockfile.a $(ROOT)$(libdir)
+ 
+ install_shared:	shared install_common
++		install -d $(ROOT)$(libdir)
+ 		install -m 755 liblockfile.so \
+ 			$(ROOT)$(libdir)/liblockfile.so.$(VER)
+ 		ln -s liblockfile.so.$(VER) $(ROOT)$(libdir)/liblockfile.so
+ 		if test "$(ROOT)" = ""; then @LDCONFIG@; fi
+ 
+ install_common:
++		install -d $(ROOT)$(includedir)
+ 		install -m 644 lockfile.h maillock.h $(ROOT)$(includedir)
+-		if [ "$(MAILGROUP)" != "" ]; then\
+-		  install -g $(MAILGROUP) -m 2755 dotlockfile $(ROOT)$(bindir);\
+-		else \
+-		  install -g root -m 755 dotlockfile $(ROOT)$(bindir); \
+-		fi
++		install -d $(ROOT)$(bindir)
++		install -m 755 $(INSTGRP) dotlockfile $(ROOT)$(bindir)
++		install -d $(ROOT)$(mandir)/man1 $(ROOT)$(mandir)/man3
+ 		install -m 644 *.1 $(ROOT)$(mandir)/man1
+ 		install -m 644 *.3 $(ROOT)$(mandir)/man3
+ 
+ install_nfslib:	nfslib
++		install -d $(ROOT)$(nfslockdir)
+ 		install -m 755 nfslock.so.$(VER) $(ROOT)$(nfslockdir)
+ 		if test "$(ROOT)" = ""; then @LDCONFIG@; fi
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/ldflags.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/ldflags.patch
new file mode 100644
index 0000000..eb1d147
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/ldflags.patch
@@ -0,0 +1,21 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- liblockfile-1.05/Makefile.in~ldflags
++++ liblockfile-1.05/Makefile.in
+@@ -34,11 +34,11 @@
+ 
+ liblockfile.so: liblockfile.a
+ 		$(CC) -fPIC -shared -Wl,-soname,liblockfile.so.1 \
+-			-o liblockfile.so lockfile.o -lc
++			-o liblockfile.so lockfile.o $(LDFLAGS) -lc
+ 
+ nfslock.so.$(VER):	nfslock.o
+ 		$(CC) -fPIC -shared -Wl,-soname,nfslock.so.0 \
+-			-o nfslock.so.$(NVER) nfslock.o
++			-o nfslock.so.$(NVER) nfslock.o $(LDFLAGS)
+ 
+ dotlockfile:	dotlockfile.o xlockfile.o
+ 		$(CC) $(LDFLAGS) -o dotlockfile dotlockfile.o xlockfile.o
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-install-so-to-man-dir.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-install-so-to-man-dir.patch
new file mode 100644
index 0000000..27f760c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-install-so-to-man-dir.patch
@@ -0,0 +1,20 @@
+Upstream-Status: Inappropriate [no upstream]
+
+The extend so file is rename from nfslock.so.$(VER) to nfslock.so.$(NVER). That
+causes file nfslock.so.0.1 is installed into manual directory. Fix it.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+diff --git a/Makefile.in b/Makefile.in
+index a589fb8..46a57e8 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -68,7 +68,7 @@ install_common:
+ 		install -d $(ROOT)$(bindir)
+ 		install -m 755 $(INSTGRP) dotlockfile $(ROOT)$(bindir)
+ 		install -d $(ROOT)$(mandir)/man1 $(ROOT)$(mandir)/man3
+-		install -m 644 *.1 $(ROOT)$(mandir)/man1
++		install -m 644 dotlockfile.1 $(ROOT)$(mandir)/man1
+ 		install -m 644 *.3 $(ROOT)$(mandir)/man3
+ 
+ install_nfslib:	nfslib
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-nfslib-and-soname.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-nfslib-and-soname.patch
new file mode 100644
index 0000000..ffd7a40
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-nfslib-and-soname.patch
@@ -0,0 +1,54 @@
+Upstream-Status: Inappropriate [no upstream]
+
+* nfslib should use NVER instead of VER
+* install the missing soname library
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ Makefile.in         |    9 ++++++---
+ 1 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 836ca9b..a589fb8 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -27,7 +27,7 @@ install:	@INSTALL_TARGETS@
+ 
+ static:		liblockfile.a dotlockfile
+ shared:		liblockfile.so dotlockfile
+-nfslib:		nfslock.so.$(VER)
++nfslib:		nfslock.so.$(NVER)
+ 
+ liblockfile.a:	lockfile.o
+ 		$(AR) rv liblockfile.a lockfile.o
+@@ -36,7 +36,7 @@ liblockfile.so: liblockfile.a
+ 		$(CC) -fPIC -shared -Wl,-soname,liblockfile.so.1 \
+ 			-o liblockfile.so lockfile.o $(LDFLAGS) -lc
+ 
+-nfslock.so.$(VER):	nfslock.o
++nfslock.so.$(NVER):	nfslock.o
+ 		$(CC) -fPIC -shared -Wl,-soname,nfslock.so.0 \
+ 			-o nfslock.so.$(NVER) nfslock.o $(LDFLAGS)
+ 
+@@ -59,6 +59,7 @@ install_shared:	shared install_common
+ 		install -m 755 liblockfile.so \
+ 			$(ROOT)$(libdir)/liblockfile.so.$(VER)
+ 		ln -s liblockfile.so.$(VER) $(ROOT)$(libdir)/liblockfile.so
++		ln -s liblockfile.so.$(VER) $(ROOT)$(libdir)/liblockfile.so.1
+ 		if test "$(ROOT)" = ""; then @LDCONFIG@; fi
+ 
+ install_common:
+@@ -72,7 +73,9 @@ install_common:
+ 
+ install_nfslib:	nfslib
+ 		install -d $(ROOT)$(nfslockdir)
+-		install -m 755 nfslock.so.$(VER) $(ROOT)$(nfslockdir)
++		install -m 755 nfslock.so.$(NVER) $(ROOT)$(nfslockdir)
++		ln -sf nfslock.so.$(NVER) $(ROOT)$(libdir)/nfslock.so
++		ln -sf nfslock.so.$(NVER) $(ROOT)$(libdir)/nfslock.so.0
+ 		if test "$(ROOT)" = ""; then @LDCONFIG@; fi
+ 
+ clean:
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.09.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.09.bb
new file mode 100644
index 0000000..e5655b5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.09.bb
@@ -0,0 +1,34 @@
+SUMMARY = "File locking library"
+SECTION = "libs"
+LICENSE = "LGPLv2+ & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=ac284a60d48eaa4bc811cddc377fa341"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/libl/liblockfile/liblockfile_1.09.orig.tar.gz \
+    ${DEBIAN_MIRROR}/main/libl/liblockfile/liblockfile_1.09-6.debian.tar.bz2;name=1.09-6 \
+    file://install.patch \
+    file://configure.patch \
+    file://ldflags.patch \
+    file://liblockfile-fix-nfslib-and-soname.patch \
+    file://liblockfile-fix-install-so-to-man-dir.patch \
+"
+
+SRC_URI[md5sum] = "2aa269e4405ee8235ff17d1b357c6ae8"
+SRC_URI[sha256sum] = "16979eba05396365e1d6af7100431ae9d32f9bc063930d1de66298a0695f1b7f"
+
+SRC_URI[1.09-6.md5sum] = "a2811807e63a526c07b0f60626e329a2"
+SRC_URI[1.09-6.sha256sum] = "d45eacb7c637c16d03c777c55989d98da494ae9584a0783fe6dbf0db60fa290f"
+
+inherit autotools-brokensep
+
+# set default mailgroup to mail
+# --with-libnfslock specify where to install nfslock.so.NVER
+EXTRA_OECONF = "--enable-shared \
+                --with-mailgroup=mail \
+                --with-libnfslock=${libdir} \
+"
+
+# Makefile using ROOT not DESTDIR
+EXTRA_OEMAKE += "ROOT=${D}"
+
+FILES_${PN} += "${libdir}/nfslock.so.*"
+FILES_${PN}-dev += "${libdir}/nfslock.so"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.5.bb
new file mode 100644
index 0000000..3488b19
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.5.bb
@@ -0,0 +1,23 @@
+SUMMARY = "An easy to use logging library"
+DESCRIPTION = " \
+liblogging (the upstream project) is a collection of several components. \
+Namely: stdlog, journalemu, rfc3195. \
+The stdlog component of liblogging can be viewed as an enhanced version of \
+the syslog(3) API. It retains the easy semantics, but makes the API more \
+sophisticated "behind the scenes" with better support for multiple threads \
+and flexibility for different log destinations (e.g. syslog and systemd \
+journal)."
+SECTION = "libs"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=63fe03535d83726f5655072502bef1bc"
+SRC_URI = "http://download.rsyslog.com/${BPN}/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "44b8ce2daa1bfb84c9feaf42f9925fd7"
+SRC_URI[sha256sum] = "310dc1691279b7a669d383581fe4b0babdc7bf75c9b54a24e51e60428624890b"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-man-pages"
+
+PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd", "", d)}"
+PACKAGECONFIG[systemd] = "--enable-journal, --disable-journal, systemd"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/liblognorm/liblognorm.inc b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblognorm/liblognorm.inc
new file mode 100644
index 0000000..dc8abb9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblognorm/liblognorm.inc
@@ -0,0 +1,17 @@
+SUMMARY = "Fast samples-based log normalization library"
+DESCRIPTION = "Briefly described, liblognorm is a tool to normalize log data."
+
+HOMEPAGE = "http://www.liblognorm.com"
+SECTION = "base"
+
+LICENSE = "LGPL-2.1+"
+
+SRC_URI = "http://www.liblognorm.com/files/download/${BPN}-${PV}.tar.gz\
+"
+
+inherit autotools pkgconfig
+
+DEPENDS += "libee libestr json-c"
+
+PACKAGECONFIG[debug] = "--enable-debug,--disable-debug,,"
+PACKAGECONFIG[docs] = "--enable-docs,--disable-docs,sphinx,"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/liblognorm/liblognorm_1.0.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblognorm/liblognorm_1.0.1.bb
new file mode 100644
index 0000000..5d89e35
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/liblognorm/liblognorm_1.0.1.bb
@@ -0,0 +1,5 @@
+require ${BPN}.inc
+
+SRC_URI[md5sum] = "7b9a826542af9686127110deab09d7a1"
+SRC_URI[sha256sum] = "1f6cdfd901a8f6a97a3cb74bc6107c6746b3e9381f7889e4cd866a488e0c59a5"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ca016db57e008528dace002188c73dad"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc b/import-layers/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc
new file mode 100644
index 0000000..a01659a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc
@@ -0,0 +1,13 @@
+SUMMARY = "A Modbus library"
+DESCRIPTION = "libmodbus is a C library designed to provide a fast and robust \
+implementation of the Modbus protocol. It runs on Linux, Mac OS X, FreeBSD, \
+QNX and Windows."
+HOMEPAGE = "http://www.libmodbus.org/"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "http://libmodbus.org/releases/${BP}.tar.gz"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.0.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.0.6.bb
new file mode 100644
index 0000000..b4d32fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.0.6.bb
@@ -0,0 +1,4 @@
+require libmodbus.inc
+
+SRC_URI[md5sum] = "c80f88b6ca19cabc4ceffc195ca07771"
+SRC_URI[sha256sum] = "046d63f10f755e2160dc56ef681e5f5ad3862a57c1955fd82e0ce036b69471b6"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.2.bb
new file mode 100644
index 0000000..6fcfc3a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.2.bb
@@ -0,0 +1,7 @@
+require libmodbus.inc
+
+# Use the stable branch by default
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI[md5sum] = "dd4262f87ed835c4d1e560f8321a222c"
+SRC_URI[sha256sum] = "661e14f9dc904f3f1b034464ddaa5fd4b8472f8f5d1ea10a1148af85591b7ee9"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_0.17.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_0.17.1.bb
new file mode 100644
index 0000000..77307fe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_0.17.1.bb
@@ -0,0 +1,26 @@
+SUMMARY = "An IPC library for high performance servers"
+DESCRIPTION = "libqb is a library with the primary purpose of providing high performance client server reusable features. \
+It provides high performance logging, tracing, ipc, and poll."
+
+HOMEPAGE = "https://github.com/clusterlabs/libqb/wiki"
+
+SECTION = "libs"
+
+inherit autotools pkgconfig
+
+SRC_URI = "https://fedorahosted.org/releases/q/u/quarterback/${BP}.tar.xz \
+          "
+
+SRC_URI[md5sum] = "5770b343baa4528f6fec90120ec55048"
+SRC_URI[sha256sum] = "7a2115f83bfe20eaa5f2e4ed235e8f2994235d3b87e3e5ca41ba47b320f12e29"
+
+LICENSE = "LGPL-2.1"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=321bf41f280cf805086dd5a720b37785"
+
+do_configure_prepend() {
+    ( cd ${S}
+    ${S}/autogen.sh )
+}
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libuio/libuio/replace_inline_with_static-inline.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/libuio/libuio/replace_inline_with_static-inline.patch
new file mode 100644
index 0000000..fd314bf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libuio/libuio/replace_inline_with_static-inline.patch
@@ -0,0 +1,121 @@
+By default, gcc-5 uses C99 inline semantics, this semantics doesn't 
+generate externally visible function for inline functions. This results in 
+below error, when an another translation unit (TU) tries to link with the 
+inline function,
+
+-- snip --
+| lsuio.o: In function `main':
+| <...>/libuio/0.2.1-r0/git/tools/lsuio.c:85: undefined reference to `uio_mmap'
+| collect2: error: ld returned 1 exit status
+| make[2]: *** [lsuio] Error 1
+-- CUT --
+
+To solve this error and make libuio to compile with both 4.x and 5.x,
+
+1. We can remove 'uio_mmap' inline function definition in uio_mmap.c, and move
+   that definition into uio_helper.h file (which is included by lsuio.c) and 
+   replace inline with "static inline". Similarly it can be done to other 
+   uio_single_munmap and uio_munmap inline functions
+
+2. Add 'extern' keyword in front of inline functions declaration, to make 
+   inlined function as externally visible function, and to link with other TUs.
+
+Going with option 1.
+
+Upstream-Status: Pending
+
+Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
+
+--- git_org/src/uio_helper.h	2015-10-20 02:37:04.183075855 -0400
++++ git/src/uio_helper.h	2015-10-20 03:34:24.659970136 -0400
+@@ -61,11 +61,11 @@ struct uio_info_t {
+ 
+ /* function prototypes */
+ 
+-inline char* uio_lib_name(void);
+-inline char* uio_lib_version(void);
+-inline int uio_lib_ifcurrent(void);
+-inline int uio_lib_ifrevision(void);
+-inline int uio_lib_ifage(void);
++static inline char* uio_lib_name(void);
++static inline char* uio_lib_version(void);
++static inline int uio_lib_ifcurrent(void);
++static inline int uio_lib_ifrevision(void);
++static inline int uio_lib_ifage(void);
+ 
+ int uio_get_mem_size(struct uio_info_t* info, int map_num);
+ int uio_get_mem_addr(struct uio_info_t* info, int map_num);
+@@ -76,10 +76,30 @@ int uio_get_all_info(struct uio_info_t* 
+ int uio_get_device_attributes(struct uio_info_t* info);
+ 
+ void* uio_single_mmap(struct uio_info_t* info, int map_num, int fd);
+-inline void uio_mmap(struct uio_info_t* info, int fd);
+ 
+-inline void uio_single_munmap(struct uio_info_t* info, int map_num);
+-inline void uio_munmap(struct uio_info_t* info);
++static inline void uio_mmap(struct uio_info_t* info, int fd);
++static inline void uio_mmap(struct uio_info_t* info, int fd)
++{
++        int map_num;
++        if (!fd) return;
++        for (map_num= 0; map_num < MAX_UIO_MAPS; map_num++)
++                uio_single_mmap(info, map_num, fd);
++}
++
++static inline void uio_single_munmap(struct uio_info_t* info, int map_num);
++static inline void uio_single_munmap(struct uio_info_t* info, int map_num)
++{
++        munmap(info->maps[map_num].internal_addr, info->maps[map_num].size);
++        info->maps[map_num].mmap_result = UIO_MMAP_NOT_DONE;
++}
++
++static inline void uio_munmap(struct uio_info_t* info);
++static inline void uio_munmap(struct uio_info_t* info)
++{
++        int i;
++        for (i = 0; i < MAX_UIO_MAPS; i++)
++                uio_single_munmap(info, i);
++}
+ 
+ void uio_free_dev_attrs(struct uio_info_t* info);
+ void uio_free_info(struct uio_info_t* info);
+--- git_org/src/uio_mmap.c	2015-10-20 02:37:04.183075855 -0400
++++ git/src/uio_mmap.c	2015-10-20 03:34:45.060003208 -0400
+@@ -22,11 +22,3 @@
+ #include <stdlib.h>
+ 
+ #include "uio_helper.h"
+-
+-inline void uio_mmap(struct uio_info_t* info, int fd)
+-{
+-	int map_num;
+-	if (!fd) return;
+-	for (map_num= 0; map_num < MAX_UIO_MAPS; map_num++)
+-		uio_single_mmap(info, map_num, fd);
+-}
+--- git_org/src/uio_munmap.c	2015-10-20 02:37:04.183075855 -0400
++++ git/src/uio_munmap.c	2015-10-20 03:34:59.636026835 -0400
+@@ -22,10 +22,3 @@
+ #include <stdlib.h>
+ 
+ #include "uio_helper.h"
+-
+-inline void uio_munmap(struct uio_info_t* info)
+-{
+-	int i;
+-	for (i = 0; i < MAX_UIO_MAPS; i++)
+-		uio_single_munmap(info, i);
+-}
+\ No newline at end of file
+--- git_org/src/uio_single_munmap.c	2015-10-20 02:37:04.183075855 -0400
++++ git/src/uio_single_munmap.c	2015-10-20 03:52:55.005763023 -0400
+@@ -24,9 +24,3 @@
+ #include <sys/mman.h>
+ 
+ #include "uio_helper.h"
+-
+-inline void uio_single_munmap(struct uio_info_t* info, int map_num)
+-{
+-	munmap(info->maps[map_num].internal_addr, info->maps[map_num].size);
+-	info->maps[map_num].mmap_result = UIO_MMAP_NOT_DONE;
+-}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libuio/libuio_0.2.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libuio/libuio_0.2.1.bb
new file mode 100644
index 0000000..f405197
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libuio/libuio_0.2.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Libuio - helper library for UIO subsystem"
+SECTION = "base"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
+
+SRC_URI = "git://git.code.sf.net/p/libuio/code \
+           file://replace_inline_with_static-inline.patch"
+
+inherit autotools
+
+SRCREV = "ed4f07ea147ac403c28105ab44d01bbf524d36f9"
+
+S = "${WORKDIR}/git"
+
+PACKAGES += "${PN}-tools"
+
+FILES_${PN} = "${libdir}"
+FILES_${PN}-tools = "${bindir}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf/0001-configure-use-pkg-config-for-freetype.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf/0001-configure-use-pkg-config-for-freetype.patch
new file mode 100644
index 0000000..0f133e2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf/0001-configure-use-pkg-config-for-freetype.patch
@@ -0,0 +1,67 @@
+From 61655f82224cadb261e81f8bae111eaaa7bdf531 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed, 6 Aug 2014 14:53:03 +0200
+Subject: [PATCH] configure: use pkg-config for freetype
+
+Upstream-status: Pending
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ configure.ac | 37 ++++++++-----------------------------
+ 1 file changed, 8 insertions(+), 29 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 3cfe974..0055a8c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -399,40 +399,19 @@ AC_ARG_WITH(freetype,[  --with-freetype=DIR     use freetype2 in DIR],[
+ 	fi
+ ])
+ 
+-if [ test -n "$FREETYPE_DIR" ]; then
+-	AC_PATH_PROG(FREETYPE_CONFIG,freetype-config, ,[$FREETYPE_DIR/bin:$PATH])
+-else
+-	AC_PATH_PROG(FREETYPE_CONFIG,freetype-config)
+-fi
+-
+-if [ test -n "$FREETYPE_CONFIG" ]; then
+-	if [ test -n "$FREETYPE_DIR" ]; then
+-		freetype_cflags="`$FREETYPE_CONFIG --cflags` -I$FREETYPE_DIR/include"
+-		freetype_libs=`$FREETYPE_CONFIG --libs`
+-	else
+-		freetype_cflags=`$FREETYPE_CONFIG --cflags`
+-		freetype_libs=`$FREETYPE_CONFIG --libs`
+-	fi
+-else
+-	if [ test -n "$FREETYPE_DIR" ]; then
+-		freetype_cflags="-I$FREETYPE_DIR/include/freetype2 -I$FREETYPE_DIR/include"
+-		freetype_libs="-L$FREETYPE_DIR/lib -lfreetype"
+-	else
+-		freetype_cflags=""
+-		freetype_libs="-lfreetype"
+-	fi
+-fi
+-
+-CPPFLAGS="$freetype_cflags $CPPFLAGS"
+-LDFLAGS="$LDFLAGS $freetype_libs"
++PKG_CHECK_MODULES(FREETYPE2, freetype2, 
++    CFLAGS="$CFLAGS $FREETYPE2_CFLAGS"
++    LDFLAGS="$LDFLAGS $FREETYPE2_LIBS",
++    AC_MSG_ERROR([*** Unable to find FreeType2 library (http://www.freetype.org/)])
++)
+ 
+ AC_CHECK_LIB(freetype,FT_Init_FreeType,[
+-	WMF_FT_LDFLAGS="$freetype_libs"
++	WMF_FT_LDFLAGS="$FREETYPE2_LIBS"
+ ],[	AC_MSG_ERROR([* * * freetype(2) is required * * *])
+ ])
+ AC_CHECK_HEADER(ft2build.h,[
+-	WMF_FT_CFLAGS="$freetype_cflags"
+-	WMF_FT_CONFIG_CFLAGS="$freetype_cflags"
++	WMF_FT_CFLAGS="$FREETYPE2_CFLAGS"
++	WMF_FT_CONFIG_CFLAGS="$FREETYPE2_CFLAGS"
+ ],[	AC_MSG_ERROR([* * * freetype(2) is required * * *])
+ ])
+ 
+-- 
+1.9.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf/libwmf-0.2.8.4-intoverflow.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf/libwmf-0.2.8.4-intoverflow.patch
new file mode 100644
index 0000000..50d915c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf/libwmf-0.2.8.4-intoverflow.patch
@@ -0,0 +1,31 @@
+http://cvs.fedoraproject.org/viewvc/devel/libwmf/libwmf-0.2.8.4-intoverflow.patch?view=log
+
+CVE-2006-3376 libwmf integer overflow
+
+--- libwmf-0.2.8.4.orig/src/player.c	2002-12-10 19:30:26.000000000 +0000
++++ libwmf-0.2.8.4/src/player.c	2006-07-12 15:12:52.000000000 +0100
+@@ -42,6 +42,7 @@
+ #include "player/defaults.h" /* Provides: default settings               */
+ #include "player/record.h"   /* Provides: parameter mechanism            */
+ #include "player/meta.h"     /* Provides: record interpreters            */
++#include <stdint.h>
+ 
+ /**
+  * @internal
+@@ -132,8 +134,14 @@
+ 		}
+ 	}
+ 
+-/*	P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API)-3) * 2 * sizeof (unsigned char));
+- */	P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API)  ) * 2 * sizeof (unsigned char));
++	if (MAX_REC_SIZE(API) > UINT32_MAX / 2)
++	{
++		API->err = wmf_E_InsMem;
++		WMF_DEBUG (API,"bailing...");
++		return (API->err);
++	}
++	
++ 	P->Parameters = (unsigned char*) wmf_malloc (API,(MAX_REC_SIZE(API)  ) * 2 * sizeof (unsigned char));
+ 
+ 	if (ERR (API))
+ 	{	WMF_DEBUG (API,"bailing...");
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf/libwmf-0.2.8.4-useafterfree.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf/libwmf-0.2.8.4-useafterfree.patch
new file mode 100644
index 0000000..4d2d285
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf/libwmf-0.2.8.4-useafterfree.patch
@@ -0,0 +1,14 @@
+
+http://cvs.fedoraproject.org/viewvc/devel/libwmf/libwmf-0.2.8.4-useafterfree.patch?view=log
+Resolves: CVE-2009-1364
+
+--- libwmf-0.2.8.4/src/extra/gd/gd_clip.c.CVE-2009-1364-im-clip-list	2009-04-24 04:06:44.000000000 -0400
++++ libwmf-0.2.8.4/src/extra/gd/gd_clip.c	2009-04-24 04:08:30.000000000 -0400
+@@ -70,6 +70,7 @@ void gdClipSetAdd(gdImagePtr im,gdClipRe
+ 	{	more = gdRealloc (im->clip->list,(im->clip->max + 8) * sizeof (gdClipRectangle));
+ 		if (more == 0) return;
+ 		im->clip->max += 8;
++                im->clip->list = more;
+ 	}
+ 	im->clip->list[im->clip->count] = (*rect);
+ 	im->clip->count++;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
new file mode 100644
index 0000000..8ad5457
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Library for converting WMF files"
+HOMEPAGE = "http://wvware.sourceforge.net/libwmf.html"
+SECTION = "libs"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+PR = "r3"
+
+DEPENDS_class-native = "freetype-native libpng-native jpeg-native"
+DEPENDS = "freetype libpng jpeg expat gtk+"
+
+BBCLASSEXTEND = "native"
+
+inherit autotools pkgconfig
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/wvware/${BPN}/${PV}/${BPN}-${PV}.tar.gz;name=tarball \
+           file://libwmf-0.2.8.4-intoverflow.patch \
+           file://libwmf-0.2.8.4-useafterfree.patch \
+           file://0001-configure-use-pkg-config-for-freetype.patch \
+          "
+
+SRC_URI[tarball.md5sum] = "d1177739bf1ceb07f57421f0cee191e0"
+SRC_URI[tarball.sha256sum] = "5b345c69220545d003ad52bfd035d5d6f4f075e65204114a9e875e84895a7cf8"
+
+FILES_${PN}-dbg += "${libdir}/gtk-2.0/2.10.0/loaders/.debug"
+FILES_${PN}-dev += "${libdir}/gtk-2.0/2.10.0/loaders/*.la"
+FILES_${PN}-staticdev += "${libdir}/gtk-2.0/2.10.0/loaders/*.a"
+FILES_${PN} += "${libdir}/gtk-2.0/2.10.0/loaders/*.so"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libx86-1/libx86-1.1/0001-assume-zero-is-valid-address.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/libx86-1/libx86-1.1/0001-assume-zero-is-valid-address.patch
new file mode 100644
index 0000000..7a46301
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libx86-1/libx86-1.1/0001-assume-zero-is-valid-address.patch
@@ -0,0 +1,26 @@
+assume zero is valid address
+
+Upstream-Status: Pending
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ thunk.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/thunk.c b/thunk.c
+index 796e88b..6121ea1 100644
+--- a/thunk.c
++++ b/thunk.c
+@@ -141,9 +141,6 @@ int LRMI_init() {
+ 
+ 	mmap_addr = LRMI_common_init(1);
+ 
+-	if (!mmap_addr)
+-		return 0;
+-
+ 	X86EMU_pioFuncs pioFuncs = {
+ 		(&x_inb),
+ 		(&x_inw),
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libx86-1/libx86-1.1/libx86-mmap-offset.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/libx86-1/libx86-1.1/libx86-mmap-offset.patch
new file mode 100644
index 0000000..843acc8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libx86-1/libx86-1.1/libx86-mmap-offset.patch
@@ -0,0 +1,190 @@
+Upstream-Statue: Pending 
+[from ftp://195.220.108.108/linux/fedora/linux/development/rawhide/source/SRPMS/l/libx86-1.1-21.fc23.src.rpm]
+
+diff -ur libx86-1.1/lrmi.c libx86-1.1.hack/lrmi.c
+--- libx86-1.1/lrmi.c	2006-10-30 15:10:16.000000000 -0500
++++ libx86-1.1.hack/lrmi.c	2009-10-26 15:55:42.000000000 -0400
+@@ -136,7 +136,7 @@
+ 	if (context.ready)
+ 		return 1;
+ 
+-	if (!LRMI_common_init())
++	if (!LRMI_common_init(0))
+ 		return 0;
+ 
+ 	/*
+diff -ur libx86-1.1/thunk.c libx86-1.1.hack/thunk.c
+--- libx86-1.1/thunk.c	2008-04-02 20:48:00.000000000 -0400
++++ libx86-1.1.hack/thunk.c	2009-10-26 16:05:39.000000000 -0400
+@@ -139,11 +139,11 @@
+ 	int i;
+ 	X86EMU_intrFuncs intFuncs[256];
+ 
+-	if (!LRMI_common_init())
++	mmap_addr = LRMI_common_init(1);
++
++	if (!mmap_addr)
+ 		return 0;
+ 
+-	mmap_addr = 0;
+-	
+ 	X86EMU_pioFuncs pioFuncs = {
+ 		(&x_inb),
+ 		(&x_inw),
+@@ -169,10 +169,10 @@
+ 	X86_ESP = 0xFFF9;
+ 	memset (stack, 0, 64*1024);
+ 
+-	*((char *)0) = 0x4f; /* Make sure that we end up jumping back to a
+-				halt instruction */
++	*mmap_addr = 0x4f; /* Make sure that we end up jumping back to a
++			      halt instruction */
+ 
+-	M.mem_base = 0;
++	M.mem_base = (unsigned long)mmap_addr;
+ 	M.mem_size = 1024*1024;
+ 
+ 	return 1;
+diff -ur libx86-1.1/x86-common.c libx86-1.1.hack/x86-common.c
+--- libx86-1.1/x86-common.c	2008-05-16 12:56:23.000000000 -0400
++++ libx86-1.1.hack/x86-common.c	2009-10-26 16:03:21.000000000 -0400
+@@ -45,14 +45,15 @@
+ static struct {
+ 	int ready;
+ 	int count;
++	void *offset;
+ 	struct mem_block blocks[REAL_MEM_BLOCKS];
+ } mem_info = { 0 };
+ 
+ static int
+-real_mem_init(void)
++real_mem_init(int high_page)
+ {
+ 	void *m;
+-	int fd_zero;
++	int fd_zero, flags = MAP_SHARED;
+ 
+ 	if (mem_info.ready)
+ 		return 1;
+@@ -63,9 +64,12 @@
+ 		return 0;
+ 	}
+ 
++	if (!high_page)
++		flags |= MAP_FIXED;
++
+ 	m = mmap((void *)REAL_MEM_BASE, REAL_MEM_SIZE,
+-	 PROT_READ | PROT_WRITE | PROT_EXEC,
+-	 MAP_FIXED | MAP_SHARED, fd_zero, 0);
++		 PROT_READ | PROT_WRITE | PROT_EXEC,
++		 flags, fd_zero, 0);
+ 
+ 	if (m == (void *)-1) {
+ 		perror("mmap /dev/zero");
+@@ -76,6 +80,7 @@
+ 	close(fd_zero);
+ 
+ 	mem_info.ready = 1;
++	mem_info.offset = m;
+ 	mem_info.count = 1;
+ 	mem_info.blocks[0].size = REAL_MEM_SIZE;
+ 	mem_info.blocks[0].free = 1;
+@@ -87,7 +92,7 @@
+ real_mem_deinit(void)
+ {
+ 	if (mem_info.ready) {
+-		munmap((void *)REAL_MEM_BASE, REAL_MEM_SIZE);
++		munmap(mem_info.offset, REAL_MEM_SIZE);
+ 		mem_info.ready = 0;
+ 	}
+ }
+@@ -119,7 +124,7 @@
+ LRMI_alloc_real(int size)
+ {
+ 	int i;
+-	char *r = (char *)REAL_MEM_BASE;
++	char *r = (char *)mem_info.offset;
+ 
+ 	if (!mem_info.ready)
+ 		return NULL;
+@@ -151,7 +156,7 @@
+ LRMI_free_real(void *m)
+ {
+ 	int i;
+-	char *r = (char *)REAL_MEM_BASE;
++	char *r = (char *)mem_info.offset;
+ 
+ 	if (!mem_info.ready)
+ 		return;
+@@ -200,13 +205,15 @@
+ 	return *(unsigned short *)(i * 4);
+ }
+ 
+-int LRMI_common_init(void)
++void *LRMI_common_init(int high_page)
+ {
+-	void *m;
++	void *m, *offset;
+ 	int fd_mem;
+ 
+-	if (!real_mem_init())
+-		return 0;
++	if (!real_mem_init(high_page))
++		return NULL;
++
++	offset = mem_info.offset - REAL_MEM_BASE;
+ 
+ 	/*
+ 	 Map the Interrupt Vectors (0x0 - 0x400) + BIOS data (0x400 - 0x502)
+@@ -217,33 +224,33 @@
+ 	if (fd_mem == -1) {
+ 		real_mem_deinit();
+ 		perror("open /dev/mem");
+-		return 0;
++		return NULL;
+ 	}
+ 
+-	m = mmap((void *)0, 0x502,
+-	 PROT_READ | PROT_WRITE | PROT_EXEC,
+-	 MAP_FIXED | MAP_SHARED, fd_mem, 0);
++	m = mmap(offset, 0x502,
++		 PROT_READ | PROT_WRITE | PROT_EXEC,
++		 MAP_FIXED | MAP_SHARED, fd_mem, 0);
+ 
+ 	if (m == (void *)-1) {
+ 		close(fd_mem);
+ 		real_mem_deinit();
+ 		perror("mmap /dev/mem");
+-		return 0;
++		return NULL;
+ 	}
+ 
+-	m = mmap((void *)0xa0000, 0x100000 - 0xa0000,
++	m = mmap(offset+0xa0000, 0x100000 - 0xa0000,
+ 	 PROT_READ | PROT_WRITE | PROT_EXEC,
+ 	 MAP_FIXED | MAP_SHARED, fd_mem, 0xa0000);
+ 
+ 	if (m == (void *)-1) {
+-		munmap((void *)0, 0x502);
++		munmap(offset, 0x502);
+ 		close(fd_mem);
+ 		real_mem_deinit();
+ 		perror("mmap /dev/mem");
+-		return 0;
++		return NULL;
+ 	}
+ 
+ 	close(fd_mem);
+ 
+-	return 1;
++	return offset;
+ }
+diff -ur libx86-1.1/x86-common.h libx86-1.1.hack/x86-common.h
+--- libx86-1.1/x86-common.h	2006-09-07 18:44:27.000000000 -0400
++++ libx86-1.1.hack/x86-common.h	2009-10-26 16:01:19.000000000 -0400
+@@ -40,4 +40,4 @@
+ 
+ void *LRMI_alloc_real(int size);
+ void LRMI_free_real(void *m);
+-int LRMI_common_init(void);
++void *LRMI_common_init(int high_page);
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/libx86-1/libx86-1_1.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/libx86-1/libx86-1_1.1.bb
new file mode 100644
index 0000000..20c152c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/libx86-1/libx86-1_1.1.bb
@@ -0,0 +1,24 @@
+SUMMARY = "x86 real-mode library"
+DESCRIPTION = "A library to provide support for making real-mode calls x86 calls. On \
+x86 hardware, vm86 mode is used. On other platforms, x86 emulation is \
+provided."
+HOMEPAGE = "http://www.codon.org.uk/~mjg59/libx86/"
+LICENSE = "MIT & BSD-3-Clause"
+SECTION = "libs"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=633af6c02e6f624d4c472d970a2aca53"
+
+SRC_URI = "http://www.codon.org.uk/~mjg59/libx86/downloads/${BPN}-${PV}.tar.gz \
+           file://libx86-mmap-offset.patch \
+           file://0001-assume-zero-is-valid-address.patch \
+"
+
+SRC_URI[md5sum] = "41bee1f8e22b82d82b5f7d7ba51abc2a"
+SRC_URI[sha256sum] = "5bf13104cb327472b5cb65643352a9138646becacc06763088d83001d832d048"
+
+BPN = "libx86"
+COMPATIBLE_HOST = '(x86_64|i.86).*-linux'
+
+export LIBDIR = "${libdir}"
+export BACKEND = "x86emu"
+
+inherit autotools-brokensep
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.17.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.17.bb
new file mode 100644
index 0000000..4354fff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.17.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Command-line programs to safely lock and unlock files and mailboxes"
+DESCRIPTION = "\
+lockfile-progs provide a method to lock and unlock mailboxes and files \
+safely (via liblockfile)."
+HOMEPAGE = "http://packages.qa.debian.org/l/lockfile-progs.html"
+SECTION = "Applications/System"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+DEPENDS = "liblockfile"
+
+SRC_URI = "http://ftp.de.debian.org/debian/pool/main/l/${BPN}/${BPN}_${PV}.tar.gz"
+SRC_URI[md5sum] = "64424a766fbc8cf6d613fcc14a096e14"
+SRC_URI[sha256sum] = "03fb05d25499532f497775b1747b61fa6beebf12d3bcc951e125349ae166c511"
+
+do_compile() {
+    oe_runmake CFLAGS=' -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables'
+}
+
+do_install() {
+    install -m 755 -d ${D}${bindir}
+    install bin/* ${D}${bindir}
+    install -m 755 -d ${D}${mandir}/man1
+    install man/* ${D}${mandir}/man1
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/logcheck/logcheck_1.3.17.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/logcheck/logcheck_1.3.17.bb
new file mode 100644
index 0000000..ba4c2ab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/logcheck/logcheck_1.3.17.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Analyzes log files and sends noticeable events as email"
+DESCRIPTION = "\
+Logcheck is a simple utility which is designed to allow a system administrator \
+to view the log-files which are produced upon hosts under their control. \
+It does this by mailing summaries of the log-files to them, after first \
+filtering out "normal" entries. \
+Normal entries are entries which match one of the many included regular \
+expression files contain in the database."
+SECTION = "Applications/System"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c93c0550bd3173f4504b2cbd8991e50b"
+
+SRC_URI = "git://git.debian.org/git/logcheck/logcheck.git"
+SRCREV = "2429e67ad875fee8a0234c64d504277b038c89cd"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+    # Fix QA Issue
+    sed -i '/install -d $(DESTDIR)\/var\/lock\/logcheck/s/^/#/' Makefile
+
+    # "make install" do not install the manpages. Install them manually.
+    install -m 755 -d ${D}${mandir}/man1
+    install -m 755 -d ${D}${mandir}/man8
+    install -m 644 docs/logcheck-test.1 ${D}${mandir}/man1/
+    install -m 644 docs/logtail.8 ${D}${mandir}/man8/
+    install -m 644 docs/logtail2.8 ${D}${mandir}/man8/
+    sed -i "s/syslog/messages/" etc/logcheck.logfiles
+    sed -i "s/auth\.log/secure/" etc/logcheck.logfiles
+    install -m 755 -d ${D}${sysconfdir}/cron.d
+    install -m 644 debian/logcheck.cron.d ${D}${sysconfdir}/cron.d/logcheck
+    install -m 755 -d ${D}/var/lib/logcheck
+    oe_runmake install DESTDIR=${D}
+}
+
+RDEPENDS_${PN} = "perl"
+
+FILES_${PN} += "${datadir}/logtail"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/logwatch/logwatch_7.4.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/logwatch/logwatch_7.4.1.bb
new file mode 100644
index 0000000..b121522
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/logwatch/logwatch_7.4.1.bb
@@ -0,0 +1,58 @@
+SUMMARY = "A log file analysis program"
+DESCRIPTION = "\
+Logwatch is a customizable, pluggable log-monitoring system. It will go \
+through your logs for a given period of time and make a report in the areas \
+that you wish with the detail that you wish. Easy to use - works right out of \
+the package on many systems.\
+"
+SECTION = "devel"
+HOMEPAGE = "http://www.logwatch.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f2566bb12b16d2d80d90ebc533261aa7"
+RDEPENDS_${PN} = "perl"
+
+SRC_URI = "http://jaist.dl.sourceforge.net/project/${BPN}/${BP}/${BP}.tar.gz"
+SRC_URI[md5sum] = "a0c3d8721f877bdcd4a9089eb1b4691b"
+SRC_URI[sha256sum] = "35ec31f9fe981aaa727b144ab3ff2eb655997d8ccabaf66586458f5dfc3a56eb"
+
+do_install() {
+    install -m 0755 -d ${D}${sysconfdir}/logwatch/scripts
+    install -m 0755 -d ${D}${datadir}/logwatch/dist.conf/logfiles
+    install -m 0755 -d ${D}${datadir}/logwatch/dist.conf/services
+    install -m 0755 -d ${D}${localstatedir}/cache/logwatch
+    mv conf/ ${D}${datadir}/logwatch/default.conf
+    mv scripts/ ${D}${datadir}/logwatch/scripts
+    mv lib ${D}${datadir}/logwatch/lib
+    chown -R root:root ${D}${datadir}/logwatch
+
+    install -m 0755 -d ${D}${mandir}/man1
+    install -m 0755 -d ${D}${mandir}/man5
+    install -m 0755 -d ${D}${mandir}/man8
+    install -m 0644 amavis-logwatch.1 ${D}${mandir}/man1
+    install -m 0644 postfix-logwatch.1 ${D}${mandir}/man1
+    install -m 0644 ignore.conf.5 ${D}${mandir}/man5
+    install -m 0644 override.conf.5 ${D}${mandir}/man5
+    install -m 0644 logwatch.conf.5 ${D}${mandir}/man5
+    install -m 0644 logwatch.8 ${D}${mandir}/man8
+
+    install -m 0755 -d ${D}${sysconfdir}/cron.daily
+    install -m 0755 -d ${D}${sbindir}
+    ln -sf ../..${datadir}/logwatch/scripts/logwatch.pl ${D}${sbindir}/logwatch
+    cat > ${D}${sysconfdir}/cron.daily/0logwatch <<EOF
+    DailyReport=\`grep -e "^[[:space:]]*DailyReport[[:space:]]*=[[:space:]]*" /usr/share/logwatch/default.conf/logwatch.conf | head -n1 | sed -e "s|^\s*DailyReport\s*=\s*||"\`
+    if [ "\$DailyReport" != "No" ] && [ "\$DailyReport" != "no" ]
+    then
+            logwatch
+    fi
+EOF
+    chmod 755 ${D}${sysconfdir}/cron.daily/0logwatch
+
+    install -m 0755 -d ${D}${sysconfdir}/logwatch/conf/logfiles
+    install -m 0755 -d ${D}${sysconfdir}/logwatch/conf/services
+    touch ${D}${sysconfdir}/logwatch/conf/logwatch.conf
+    touch ${D}${sysconfdir}/logwatch/conf/ignore.conf
+    touch ${D}${sysconfdir}/logwatch/conf/override.conf
+    echo "# Local configuration options go here (defaults are in /usr/share/logwatch/default.conf/logwatch.conf)" > ${D}${sysconfdir}/logwatch/conf/logwatch.conf
+    echo "###### REGULAR EXPRESSIONS IN THIS FILE WILL BE TRIMMED FROM REPORT OUTPUT #####" > ${D}${sysconfdir}/logwatch/conf/ignore.conf
+    echo "# Configuration overrides for specific logfiles/services may be placed here." > ${D}${sysconfdir}/logwatch/conf/override.conf
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/lprng/lprng_3.8.C.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/lprng/lprng_3.8.C.bb
new file mode 100644
index 0000000..80b93d9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/lprng/lprng_3.8.C.bb
@@ -0,0 +1,19 @@
+SUMMARY = "An Enhanced Printer Spooler"
+SECTION = "console/utils"
+LICENSE = "GPLv2 | Artistic-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c6570d8d699af1883db9d0e733ac9bfb"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "5901bed95e61d2bea3ba3056056af432"
+SRC_URI[sha256sum] = "694a1747a96385b89e93f43343bf35cee5c8c73353a83814106911c99f09de10"
+
+inherit autotools gettext
+
+EXTRA_OECONF = "--disable-ssl --disable-kerberos --enable-force_localhost"
+FILES_${PN}-dbg += "${libdir}/lprng/filters/.debug"
+
+do_install_append() {
+    mv ${D}/etc/printcap.sample ${D}/etc/printcap
+    mv ${D}/etc/lpd/lpd.conf.sample ${D}/etc/lpd/lpd.conf
+    mv ${D}/etc/lpd/lpd.perms.sample ${D}/etc/lpd/lpd.perms
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/lssci/lsscsi_0.28.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/lssci/lsscsi_0.28.bb
new file mode 100644
index 0000000..4b8cbaf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/lssci/lsscsi_0.28.bb
@@ -0,0 +1,12 @@
+SUMMARY = "The lsscsi command lists information about SCSI devices in Linux"
+HOMEPAGE = "http://sg.danny.cz/scsi/lsscsi.html"
+LICENSE = "GPLv2"
+SECTION = "base"
+LIC_FILES_CHKSUM="file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+SRC_URI = "http://sg.danny.cz/scsi/${BP}.tgz"
+
+SRC_URI[md5sum] = "4a39e3b09cd422e2cae3edbaf56b3176"
+SRC_URI[sha256sum] = "025d009a1af42bc5b2fca664c44c9ecdfd754356e4a44f5c6aced2420afadd50"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/md5deep/files/wrong-variable-expansion.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/md5deep/files/wrong-variable-expansion.patch
new file mode 100644
index 0000000..3a4c4f4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/md5deep/files/wrong-variable-expansion.patch
@@ -0,0 +1,39 @@
+--- a/configure.ac	2014-08-22 12:22:54.290884351 +0200
++++ b/configure.ac	2014-08-22 12:23:15.822306295 +0200
+@@ -42,18 +42,6 @@
+      ;;		 		     
+ esac
+ 
+-
+-# Bring additional directories where things might be found into our
+-# search path. I don't know why autoconf doesn't do this by default
+-if test x"${mingw}" == "xno" ; then
+-  for spfx in /usr/local /opt/local /sw ; do
+-    echo checking ${spfx}/include
+-    if test -d ${spfx}/include; then
+-        CPPFLAGS="-I${spfx}/include $CPPFLAGS"
+-        LDFLAGS="-L${spfx}/lib $LDFLAGS"
+-    fi
+-  done
+-fi
+ #
+ #
+ ################################################################
+@@ -71,7 +59,7 @@
+ 
+ if test $mingw = "no" ; then
+   # add the warnings we don't want to do on mingw
+-  $WARNINGS_TO_TEST="$WARNINGS_TO_TEST -Wall -Wstrict-prototypes  -Weffc++"
++  WARNINGS_TO_TEST="$WARNINGS_TO_TEST -Wall -Wstrict-prototypes  -Weffc++"
+ fi
+ 
+ for option in $WARNINGS_TO_TEST
+@@ -105,7 +93,7 @@
+ 
+ if test $mingw = "no" ; then
+   # add the warnings we don't want to do on mingw
+-  $WARNINGS_TO_TEST="$WARNINGS_TO_TEST  -Weffc++"
++  WARNINGS_TO_TEST="$WARNINGS_TO_TEST  -Weffc++"
+ fi
+ 
+ for option in $WARNINGS_TO_TEST
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_4.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_4.4.bb
new file mode 100644
index 0000000..960e00f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_4.4.bb
@@ -0,0 +1,16 @@
+SUMMARY = "md5deep and hashdeep to compute and audit hashsets of amounts of files."
+DESCRIPTION = "md5deep is a set of programs to compute MD5, SHA-1, SHA-256, Tiger, or Whirlpool message digests on an arbitrary number of files. This package also includes hashdeep which is also able to audit hashsets."
+AUTHOR = "Jesse Kornblum, Simson L. Garfinkel"
+HOMEPAGE = "http://md5deep.sourceforge.net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9190f660105b9a56cdb272309bfd5491"
+# Release 4.4
+SRCREV = "cd2ed7416685a5e83eb10bb659d6e9bec01244ae"
+
+SRC_URI = "git://github.com/jessek/hashdeep.git \
+        file://wrong-variable-expansion.patch \
+        "
+
+S = "${WORKDIR}/git"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-include-cstdio-to-get-printf-definitions.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-include-cstdio-to-get-printf-definitions.patch
new file mode 100644
index 0000000..c5814bf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-include-cstdio-to-get-printf-definitions.patch
@@ -0,0 +1,28 @@
+From c92890c5e18bb6ee23bdb14074bacf306dd9428f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 5 May 2015 20:35:01 -0700
+Subject: [PATCH] include cstdio to get printf definitions
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/engine/boxml/BoxMLHOVElement.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/engine/boxml/BoxMLHOVElement.cc b/src/engine/boxml/BoxMLHOVElement.cc
+index 1a2812c..96c9eea 100644
+--- a/src/engine/boxml/BoxMLHOVElement.cc
++++ b/src/engine/boxml/BoxMLHOVElement.cc
+@@ -21,7 +21,7 @@
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <config.h>
+-
++#include <cstdio>
+ #include "BoxMLAttributeSignatures.hh"
+ #include "BoxMLHOVElement.hh"
+ #include "BoxMLHElement.hh"
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/use_hostcxx.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/use_hostcxx.patch
new file mode 100644
index 0000000..3fe6328
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/use_hostcxx.patch
@@ -0,0 +1,18 @@
+Use build_cc to compile the programs to run on build host
+helps with cross compiling
+
+Upstream-Status: Inappropriate [Cross-compiled OE specific]
+
+diff --git a/src/common/mathvariants/Makefile.am b/src/common/mathvariants/Makefile.am
+index 636ccf0..ed9921d 100644
+--- a/src/common/mathvariants/Makefile.am
++++ b/src/common/mathvariants/Makefile.am
+@@ -52,7 +52,7 @@ XSLTPROC = xsltproc
+ %.cc : %_gen.cc $(srcdir)/variant.top $(srcdir)/variant.bot
+ 	cat $(srcdir)/variant.top >$@
+ 	$(XSLTPROC) --novalid --param temp "false()" $(srcdir)/extract.xsl $(<:%_gen.cc=$(srcdir)/xml/%.xml) >>$@
+-	$(CXX) -o $(@:%.cc=%) -I$(top_builddir)/auto $<
++	$(BUILD_CXX) -o $(@:%.cc=%) -I$(top_builddir)/auto $<
+ 	echo "Char32 " >>$@
+ 	basename map_variant_$@ .cc | tr "-" "_" >>$@
+ 	echo "(Char32 ch)" >>$@
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb
new file mode 100644
index 0000000..3edbeed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb
@@ -0,0 +1,23 @@
+HOMEPAGE = "http://helm.cs.unibo.it/mml-widget/"
+DEPENDS = "t1lib gtk+ popt libxslt libxml2"
+
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6a6a8e020838b23406c81b19c1d46df6"
+
+PR = "r3"
+SRCREV = "0bc2cfa0a47aed2c8a63abd989cb8da4dcceb2ec"
+PV = "0.8.0+git${SRCPV}"
+
+SRC_URI = "git://github.com/GNOME/gtkmathview.git \
+           file://use_hostcxx.patch \
+	   file://0001-include-cstdio-to-get-printf-definitions.patch \
+          "
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+do_configure_append() {
+    # avoid host polution inf pkg-config files
+    sed -i "s:${STAGING_DIR_HOST}::g" `find -name '*.pc'`
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-add-support-for-big-endian-32bit-ARM.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-add-support-for-big-endian-32bit-ARM.patch
new file mode 100644
index 0000000..7b7038f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-add-support-for-big-endian-32bit-ARM.patch
@@ -0,0 +1,26 @@
+From 07830cbc409f8e998fa839275470031fc83d6eb6 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen.kooi@linaro.org>
+Date: Thu, 21 Apr 2016 14:10:54 +0200
+Subject: [PATCH] add support for big endian 32bit ARM
+
+Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
+---
+ mfbt/double-conversion/utils.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h
+index fe26dab..78a19cb 100644
+--- a/mfbt/double-conversion/utils.h
++++ b/mfbt/double-conversion/utils.h
+@@ -58,7 +58,7 @@
+     defined(__mips__) || defined(__powerpc__) || \
+     defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
+     defined(__SH4__) || defined(__alpha__) || \
+-    defined(__aarch64__) || \
++    defined(__aarch64__) || defined(__ARMEB__) || \
+     defined(_MIPS_ARCH_MIPS32R2)
+ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
+ #elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
+-- 
+2.4.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch
new file mode 100644
index 0000000..bc141d9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch
@@ -0,0 +1,35 @@
+From 0a61b0b98c152f10404ccbdeeac583a486638a7a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Thu, 6 Jun 2013 18:36:01 +0200
+Subject: [PATCH] js.pc.in: do not include RequiredDefines.h for depending
+ packages
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+in our cross environment the would fail with:
+
+| cc1: fatal error: /usr/include/js-17.0/js/RequiredDefines.h: No such file or directory
+
+and currently it only defines __STDC_LIMIT_MACROS
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ js.pc.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/js.pc.in b/js.pc.in
+index 13d761d..a95a7bd 100644
+--- a/js.pc.in
++++ b/js.pc.in
+@@ -8,4 +8,4 @@ Description: The Mozilla library for JavaScript
+ Version: @MOZILLA_VERSION@
+ Requires.private: @NSPR_PKGCONF_CHECK@
+ Libs: -L${libdir} -l@LIBRARY_NAME@
+-Cflags: -include ${includedir}/@MODULE@/js/RequiredDefines.h -I${includedir}/@MODULE@
++Cflags: -I${includedir}/@MODULE@
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs17.0.0-fix-the-compile-bug-of-powerpc.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs17.0.0-fix-the-compile-bug-of-powerpc.patch
new file mode 100644
index 0000000..de72d4f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs17.0.0-fix-the-compile-bug-of-powerpc.patch
@@ -0,0 +1,36 @@
+From da3929a96d9c74e11bf37d128890e18fcb745365 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Mon, 26 Jan 2015 08:53:19 +0900
+Subject: [PATCH] mozjs17.0.0: fix the compile bug of powerpc
+
+To fix the bug as following
+
+error: cannot convert '__va_list_tag**' to '__va_list_tag (*)[1]' for
+argument '5' to 'JSBool TryArgumentFormatter(JSContext*, const char**,
+JSBool, jsval**, __va_list_tag (*)[1])'
+
+Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+---
+ jscpucfg.h | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/jscpucfg.h b/jscpucfg.h
+index dfb1c14..8683491 100644
+--- a/jscpucfg.h
++++ b/jscpucfg.h
+@@ -47,6 +47,12 @@
+ #elif defined(JS_HAVE_ENDIAN_H)
+ # include <endian.h>
+ 
++#if defined(_POWER) || defined(__powerpc__) || \
++    defined(__ppc__)
++# define HAVE_VA_LIST_AS_ARRAY 1
++# endif
++
++
+ # if defined(__BYTE_ORDER)
+ #  if __BYTE_ORDER == __LITTLE_ENDIAN
+ #   define IS_LITTLE_ENDIAN 1
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-regenerate-configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-regenerate-configure.patch
new file mode 100644
index 0000000..fa413ea
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-regenerate-configure.patch
@@ -0,0 +1,3238 @@
+From 6440b4901c6f4bcc69686ff10806e311cc5a927b Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen.kooi@linaro.org>
+Date: Tue, 3 Mar 2015 19:12:17 +0800
+Subject: [PATCH] regenerate configure with autoconf-2.13
+
+Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
+Upstream-status: Inappropriate [generated file]
+
+---
+ js/src/configure | 838 ++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 389 insertions(+), 449 deletions(-)
+
+diff --git a/js/src/configure b/js/src/configure
+index cb6b41b..b05298f 100755
+--- a/js/src/configure
++++ b/js/src/configure
+@@ -5757,6 +5757,10 @@ arm*)
+     CPU_ARCH=arm
+     ;;
+ 
++aarch64*)
++    CPU_ARCH=aarch64
++    ;;
++
+ mips|mipsel)
+     CPU_ARCH="mips"
+     ;;
+@@ -5893,14 +5897,14 @@ no)
+     _SAVE_CFLAGS="$CFLAGS"
+     CFLAGS="$arch_flag"
+     cat > conftest.$ac_ext <<EOF
+-#line 5897 "configure"
++#line 5901 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return sizeof(__thumb2__);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:5904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:5908: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   MOZ_THUMB2=1
+ else
+@@ -5972,16 +5976,16 @@ if test -n "$all_flags"; then
+     _SAVE_CFLAGS="$CFLAGS"
+     CFLAGS="$all_flags"
+     echo $ac_n "checking whether the chosen combination of compiler flags ($all_flags) works""... $ac_c" 1>&6
+-echo "configure:5976: checking whether the chosen combination of compiler flags ($all_flags) works" >&5
++echo "configure:5980: checking whether the chosen combination of compiler flags ($all_flags) works" >&5
+     cat > conftest.$ac_ext <<EOF
+-#line 5978 "configure"
++#line 5982 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return 0;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:5985: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:5989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   echo "$ac_t""yes" 1>&6
+ else
+@@ -6004,18 +6008,18 @@ fi
+ 
+ if test "$CPU_ARCH" = "arm"; then
+   echo $ac_n "checking for ARM SIMD support in compiler""... $ac_c" 1>&6
+-echo "configure:6008: checking for ARM SIMD support in compiler" >&5
++echo "configure:6012: checking for ARM SIMD support in compiler" >&5
+   # We try to link so that this also fails when
+   # building with LTO.
+   cat > conftest.$ac_ext <<EOF
+-#line 6012 "configure"
++#line 6016 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ asm("uqadd8 r1, r1, r2");
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:6023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   result="yes"
+ else
+@@ -6038,18 +6042,18 @@ EOF
+   fi
+ 
+   echo $ac_n "checking for ARM NEON support in compiler""... $ac_c" 1>&6
+-echo "configure:6042: checking for ARM NEON support in compiler" >&5
++echo "configure:6046: checking for ARM NEON support in compiler" >&5
+   # We try to link so that this also fails when
+   # building with LTO.
+   cat > conftest.$ac_ext <<EOF
+-#line 6046 "configure"
++#line 6050 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ asm(".fpu neon\n vadd.i8 d0, d0, d0");
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:6057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   result="yes"
+ else
+@@ -6094,7 +6098,7 @@ configure_static_assert_macros='
+ '
+ 
+ echo $ac_n "checking that static assertion macros used in autoconf tests work""... $ac_c" 1>&6
+-echo "configure:6098: checking that static assertion macros used in autoconf tests work" >&5
++echo "configure:6102: checking that static assertion macros used in autoconf tests work" >&5
+ if eval "test \"`echo '$''{'ac_cv_static_assertion_macros_work'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6108,14 +6112,14 @@ cross_compiling=$ac_cv_prog_cc_cross
+ 
+   ac_cv_static_assertion_macros_work="yes"
+   cat > conftest.$ac_ext <<EOF
+-#line 6112 "configure"
++#line 6116 "configure"
+ #include "confdefs.h"
+ $configure_static_assert_macros
+ int main() {
+ CONFIGURE_STATIC_ASSERT(1)
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   :
+ else
+   echo "configure: failed program was:" >&5
+@@ -6125,14 +6129,14 @@ else
+ fi
+ rm -f conftest*
+   cat > conftest.$ac_ext <<EOF
+-#line 6129 "configure"
++#line 6133 "configure"
+ #include "confdefs.h"
+ $configure_static_assert_macros
+ int main() {
+ CONFIGURE_STATIC_ASSERT(0)
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6140: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_static_assertion_macros_work="no"
+ else
+@@ -6148,14 +6152,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
+ cross_compiling=$ac_cv_prog_cxx_cross
+ 
+   cat > conftest.$ac_ext <<EOF
+-#line 6152 "configure"
++#line 6156 "configure"
+ #include "confdefs.h"
+ $configure_static_assert_macros
+ int main() {
+ CONFIGURE_STATIC_ASSERT(1)
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6163: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   :
+ else
+   echo "configure: failed program was:" >&5
+@@ -6165,14 +6169,14 @@ else
+ fi
+ rm -f conftest*
+   cat > conftest.$ac_ext <<EOF
+-#line 6169 "configure"
++#line 6173 "configure"
+ #include "confdefs.h"
+ $configure_static_assert_macros
+ int main() {
+ CONFIGURE_STATIC_ASSERT(0)
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6180: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_static_assertion_macros_work="no"
+ else
+@@ -6317,7 +6321,7 @@ if test "$GNU_CC"; then
+     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
+     
+     echo $ac_n "checking whether the C compiler supports -Werror=return-type""... $ac_c" 1>&6
+-echo "configure:6321: checking whether the C compiler supports -Werror=return-type" >&5
++echo "configure:6325: checking whether the C compiler supports -Werror=return-type" >&5
+ if eval "test \"`echo '$''{'ac_c_has_werror_return_type'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6333,14 +6337,14 @@ cross_compiling=$ac_cv_prog_cc_cross
+             _SAVE_CFLAGS="$CFLAGS"
+             CFLAGS="$CFLAGS -Werror -Werror=return-type"
+             cat > conftest.$ac_ext <<EOF
+-#line 6337 "configure"
++#line 6341 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6348: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_c_has_werror_return_type="yes"
+ else
+@@ -6368,7 +6372,7 @@ echo "$ac_t""$ac_c_has_werror_return_type" 1>&6
+ 
+     
+     echo $ac_n "checking whether the C compiler supports -Wtype-limits""... $ac_c" 1>&6
+-echo "configure:6372: checking whether the C compiler supports -Wtype-limits" >&5
++echo "configure:6376: checking whether the C compiler supports -Wtype-limits" >&5
+ if eval "test \"`echo '$''{'ac_c_has_wtype_limits'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6384,14 +6388,14 @@ cross_compiling=$ac_cv_prog_cc_cross
+             _SAVE_CFLAGS="$CFLAGS"
+             CFLAGS="$CFLAGS -Werror -Wtype-limits"
+             cat > conftest.$ac_ext <<EOF
+-#line 6388 "configure"
++#line 6392 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6395: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6399: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_c_has_wtype_limits="yes"
+ else
+@@ -6419,7 +6423,7 @@ echo "$ac_t""$ac_c_has_wtype_limits" 1>&6
+ 
+     
+     echo $ac_n "checking whether the C compiler supports -Wempty-body""... $ac_c" 1>&6
+-echo "configure:6423: checking whether the C compiler supports -Wempty-body" >&5
++echo "configure:6427: checking whether the C compiler supports -Wempty-body" >&5
+ if eval "test \"`echo '$''{'ac_c_has_wempty_body'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6435,14 +6439,14 @@ cross_compiling=$ac_cv_prog_cc_cross
+             _SAVE_CFLAGS="$CFLAGS"
+             CFLAGS="$CFLAGS -Werror -Wempty-body"
+             cat > conftest.$ac_ext <<EOF
+-#line 6439 "configure"
++#line 6443 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6446: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6450: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_c_has_wempty_body="yes"
+ else
+@@ -6476,7 +6480,7 @@ echo "$ac_t""$ac_c_has_wempty_body" 1>&6
+     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
+     
+     echo $ac_n "checking whether the C compiler supports -Wno-overlength-strings""... $ac_c" 1>&6
+-echo "configure:6480: checking whether the C compiler supports -Wno-overlength-strings" >&5
++echo "configure:6484: checking whether the C compiler supports -Wno-overlength-strings" >&5
+ if eval "test \"`echo '$''{'ac_c_has_wno_overlength_strings'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6492,14 +6496,14 @@ cross_compiling=$ac_cv_prog_cc_cross
+             _SAVE_CFLAGS="$CFLAGS"
+             CFLAGS="$CFLAGS -Werror -Woverlength-strings"
+             cat > conftest.$ac_ext <<EOF
+-#line 6496 "configure"
++#line 6500 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_c_has_wno_overlength_strings="yes"
+ else
+@@ -6580,7 +6584,7 @@ if test "$GNU_CXX"; then
+     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
+     
+     echo $ac_n "checking whether the C++ compiler supports -Werror=return-type""... $ac_c" 1>&6
+-echo "configure:6584: checking whether the C++ compiler supports -Werror=return-type" >&5
++echo "configure:6588: checking whether the C++ compiler supports -Werror=return-type" >&5
+ if eval "test \"`echo '$''{'ac_cxx_has_werror_return_type'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6596,14 +6600,14 @@ cross_compiling=$ac_cv_prog_cxx_cross
+             _SAVE_CXXFLAGS="$CXXFLAGS"
+             CXXFLAGS="$CXXFLAGS -Werror -Werror=return-type"
+             cat > conftest.$ac_ext <<EOF
+-#line 6600 "configure"
++#line 6604 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cxx_has_werror_return_type="yes"
+ else
+@@ -6631,7 +6635,7 @@ echo "$ac_t""$ac_cxx_has_werror_return_type" 1>&6
+ 
+     
+     echo $ac_n "checking whether the C++ compiler supports -Wtype-limits""... $ac_c" 1>&6
+-echo "configure:6635: checking whether the C++ compiler supports -Wtype-limits" >&5
++echo "configure:6639: checking whether the C++ compiler supports -Wtype-limits" >&5
+ if eval "test \"`echo '$''{'ac_cxx_has_wtype_limits'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6647,14 +6651,14 @@ cross_compiling=$ac_cv_prog_cxx_cross
+             _SAVE_CXXFLAGS="$CXXFLAGS"
+             CXXFLAGS="$CXXFLAGS -Werror -Wtype-limits"
+             cat > conftest.$ac_ext <<EOF
+-#line 6651 "configure"
++#line 6655 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6658: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6662: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cxx_has_wtype_limits="yes"
+ else
+@@ -6682,7 +6686,7 @@ echo "$ac_t""$ac_cxx_has_wtype_limits" 1>&6
+ 
+     
+     echo $ac_n "checking whether the C++ compiler supports -Wempty-body""... $ac_c" 1>&6
+-echo "configure:6686: checking whether the C++ compiler supports -Wempty-body" >&5
++echo "configure:6690: checking whether the C++ compiler supports -Wempty-body" >&5
+ if eval "test \"`echo '$''{'ac_cxx_has_wempty_body'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6698,14 +6702,14 @@ cross_compiling=$ac_cv_prog_cxx_cross
+             _SAVE_CXXFLAGS="$CXXFLAGS"
+             CXXFLAGS="$CXXFLAGS -Werror -Wempty-body"
+             cat > conftest.$ac_ext <<EOF
+-#line 6702 "configure"
++#line 6706 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6709: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cxx_has_wempty_body="yes"
+ else
+@@ -6741,7 +6745,7 @@ echo "$ac_t""$ac_cxx_has_wempty_body" 1>&6
+     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-ctor-dtor-privacy"
+     
+     echo $ac_n "checking whether the C++ compiler supports -Wno-overlength-strings""... $ac_c" 1>&6
+-echo "configure:6745: checking whether the C++ compiler supports -Wno-overlength-strings" >&5
++echo "configure:6749: checking whether the C++ compiler supports -Wno-overlength-strings" >&5
+ if eval "test \"`echo '$''{'ac_cxx_has_wno_overlength_strings'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6757,14 +6761,14 @@ cross_compiling=$ac_cv_prog_cxx_cross
+             _SAVE_CXXFLAGS="$CXXFLAGS"
+             CXXFLAGS="$CXXFLAGS -Werror -Woverlength-strings"
+             cat > conftest.$ac_ext <<EOF
+-#line 6761 "configure"
++#line 6765 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6772: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cxx_has_wno_overlength_strings="yes"
+ else
+@@ -6792,7 +6796,7 @@ echo "$ac_t""$ac_cxx_has_wno_overlength_strings" 1>&6
+ 
+     
+     echo $ac_n "checking whether the C++ compiler supports -Wno-invalid-offsetof""... $ac_c" 1>&6
+-echo "configure:6796: checking whether the C++ compiler supports -Wno-invalid-offsetof" >&5
++echo "configure:6800: checking whether the C++ compiler supports -Wno-invalid-offsetof" >&5
+ if eval "test \"`echo '$''{'ac_cxx_has_wno_invalid_offsetof'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6808,14 +6812,14 @@ cross_compiling=$ac_cv_prog_cxx_cross
+             _SAVE_CXXFLAGS="$CXXFLAGS"
+             CXXFLAGS="$CXXFLAGS -Werror -Winvalid-offsetof"
+             cat > conftest.$ac_ext <<EOF
+-#line 6812 "configure"
++#line 6816 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6819: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6823: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cxx_has_wno_invalid_offsetof="yes"
+ else
+@@ -6843,7 +6847,7 @@ echo "$ac_t""$ac_cxx_has_wno_invalid_offsetof" 1>&6
+ 
+     
+     echo $ac_n "checking whether the C++ compiler supports -Wno-variadic-macros""... $ac_c" 1>&6
+-echo "configure:6847: checking whether the C++ compiler supports -Wno-variadic-macros" >&5
++echo "configure:6851: checking whether the C++ compiler supports -Wno-variadic-macros" >&5
+ if eval "test \"`echo '$''{'ac_cxx_has_wno_variadic_macros'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6859,14 +6863,14 @@ cross_compiling=$ac_cv_prog_cxx_cross
+             _SAVE_CXXFLAGS="$CXXFLAGS"
+             CXXFLAGS="$CXXFLAGS -Werror -Wvariadic-macros"
+             cat > conftest.$ac_ext <<EOF
+-#line 6863 "configure"
++#line 6867 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cxx_has_wno_variadic_macros="yes"
+ else
+@@ -6918,7 +6922,7 @@ echo "$ac_t""$ac_cxx_has_wno_variadic_macros" 1>&6
+         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
+         
+     echo $ac_n "checking whether the C++ compiler supports -Wno-extended-offsetof""... $ac_c" 1>&6
+-echo "configure:6922: checking whether the C++ compiler supports -Wno-extended-offsetof" >&5
++echo "configure:6926: checking whether the C++ compiler supports -Wno-extended-offsetof" >&5
+ if eval "test \"`echo '$''{'ac_cxx_has_wno_extended_offsetof'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6934,14 +6938,14 @@ cross_compiling=$ac_cv_prog_cxx_cross
+             _SAVE_CXXFLAGS="$CXXFLAGS"
+             CXXFLAGS="$CXXFLAGS -Werror -Wextended-offsetof"
+             cat > conftest.$ac_ext <<EOF
+-#line 6938 "configure"
++#line 6942 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return(0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:6945: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:6949: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cxx_has_wno_extended_offsetof="yes"
+ else
+@@ -6979,7 +6983,7 @@ MKSHLIB_UNFORCE_ALL=
+ if test "$COMPILE_ENVIRONMENT"; then
+ if test "$GNU_CC"; then
+   echo $ac_n "checking whether ld has archive extraction flags""... $ac_c" 1>&6
+-echo "configure:6983: checking whether ld has archive extraction flags" >&5
++echo "configure:6987: checking whether ld has archive extraction flags" >&5
+   if eval "test \"`echo '$''{'ac_cv_mkshlib_force_and_unforce'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6996,14 +7000,14 @@ LOOP_INPUT
+       LDFLAGS=$force
+       LIBS=$unforce
+       cat > conftest.$ac_ext <<EOF
+-#line 7000 "configure"
++#line 7004 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:7007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:7011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_mkshlib_force_and_unforce=$line; break
+ else
+@@ -7038,16 +7042,16 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
+ cross_compiling=$ac_cv_prog_cc_cross
+ 
+ echo $ac_n "checking for 64-bit OS""... $ac_c" 1>&6
+-echo "configure:7042: checking for 64-bit OS" >&5
++echo "configure:7046: checking for 64-bit OS" >&5
+ cat > conftest.$ac_ext <<EOF
+-#line 7044 "configure"
++#line 7048 "configure"
+ #include "confdefs.h"
+ $configure_static_assert_macros
+ int main() {
+ CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)
+ ; return 0; }
+ EOF
+-if { (eval echo configure:7051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:7055: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   result="yes"
+ else
+@@ -7170,7 +7174,7 @@ case "$host" in
+ esac
+ 
+ echo $ac_n "checking for Python version >= $PYTHON_VERSION but not 3.x""... $ac_c" 1>&6
+-echo "configure:7174: checking for Python version >= $PYTHON_VERSION but not 3.x" >&5
++echo "configure:7178: checking for Python version >= $PYTHON_VERSION but not 3.x" >&5
+ 
+ $PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1] or sys.version[:2] != '2.')" $PYTHON_VERSION
+ _python_res=$?
+@@ -7181,7 +7185,7 @@ fi
+ echo "$ac_t""yes" 1>&6
+ 
+ echo $ac_n "checking for custom <stdint.h> implementation""... $ac_c" 1>&6
+-echo "configure:7185: checking for custom <stdint.h> implementation" >&5
++echo "configure:7189: checking for custom <stdint.h> implementation" >&5
+ if test "$MOZ_CUSTOM_STDINT_H"; then
+   cat >> confdefs.pytmp <<EOF
+         (''' MOZ_CUSTOM_STDINT_H ''', r''' "$MOZ_CUSTOM_STDINT_H" ''')
+@@ -7249,9 +7253,9 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
+ cross_compiling=$ac_cv_prog_cxx_cross
+ 
+             echo $ac_n "checking for IBM XLC/C++ compiler version >= 9.0.0.7""... $ac_c" 1>&6
+-echo "configure:7253: checking for IBM XLC/C++ compiler version >= 9.0.0.7" >&5
++echo "configure:7257: checking for IBM XLC/C++ compiler version >= 9.0.0.7" >&5
+             cat > conftest.$ac_ext <<EOF
+-#line 7255 "configure"
++#line 7259 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+@@ -7260,7 +7264,7 @@ int main() {
+                  #endif
+ ; return 0; }
+ EOF
+-if { (eval echo configure:7264: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:7268: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   _BAD_COMPILER=
+ else
+@@ -7298,12 +7302,12 @@ cross_compiling=$ac_cv_prog_cc_cross
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:7302: checking for $ac_hdr" >&5
++echo "configure:7306: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 7307 "configure"
++#line 7311 "configure"
+ #include "confdefs.h"
+ 
+ #include <$ac_hdr>
+@@ -7311,7 +7315,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:7315: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:7319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -7394,17 +7398,17 @@ EOF
+     # builds.
+     _SAVE_LDFLAGS=$LDFLAGS
+      echo $ac_n "checking for -framework ExceptionHandling""... $ac_c" 1>&6
+-echo "configure:7398: checking for -framework ExceptionHandling" >&5
++echo "configure:7402: checking for -framework ExceptionHandling" >&5
+     LDFLAGS="$LDFLAGS -framework ExceptionHandling"
+     cat > conftest.$ac_ext <<EOF
+-#line 7401 "configure"
++#line 7405 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return 0;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:7408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:7412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_have_framework_exceptionhandling="yes"
+ else
+@@ -7426,18 +7430,18 @@ rm -f conftest*
+         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
+     else
+                 echo $ac_n "checking for -dead_strip option to ld""... $ac_c" 1>&6
+-echo "configure:7430: checking for -dead_strip option to ld" >&5
++echo "configure:7434: checking for -dead_strip option to ld" >&5
+         _SAVE_LDFLAGS=$LDFLAGS
+         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
+         cat > conftest.$ac_ext <<EOF
+-#line 7434 "configure"
++#line 7438 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return 0;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:7441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:7445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   _HAVE_DEAD_STRIP=1
+ else
+@@ -7783,12 +7787,12 @@ EOF
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:7787: checking for $ac_hdr" >&5
++echo "configure:7791: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 7792 "configure"
++#line 7796 "configure"
+ #include "confdefs.h"
+ 
+ #include <$ac_hdr>
+@@ -7796,7 +7800,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:7800: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:7804: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -7989,19 +7993,19 @@ EOF
+     _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
+ 
+     echo $ac_n "checking for __declspec(dllexport)""... $ac_c" 1>&6
+-echo "configure:7993: checking for __declspec(dllexport)" >&5
++echo "configure:7997: checking for __declspec(dllexport)" >&5
+ if eval "test \"`echo '$''{'ac_os2_declspec'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 7998 "configure"
++#line 8002 "configure"
+ #include "confdefs.h"
+ __declspec(dllexport) void ac_os2_declspec(void) {}
+ int main() {
+ return 0;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:8005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:8009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_os2_declspec="yes"
+ else
+@@ -8054,14 +8058,14 @@ EOF
+            _SAVE_LDFLAGS=$LDFLAGS
+            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
+            cat > conftest.$ac_ext <<EOF
+-#line 8058 "configure"
++#line 8062 "configure"
+ #include "confdefs.h"
+ #include <stdio.h>
+ int main() {
+ printf("Hello World\n");
+ ; return 0; }
+ EOF
+-if { (eval echo configure:8065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:8069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   :
+ else
+   echo "configure: failed program was:" >&5
+@@ -8089,7 +8093,7 @@ rm -f conftest*
+        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
+        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
+        echo $ac_n "checking for Sun C++ compiler version >= 5.9""... $ac_c" 1>&6
+-echo "configure:8093: checking for Sun C++ compiler version >= 5.9" >&5
++echo "configure:8097: checking for Sun C++ compiler version >= 5.9" >&5
+        
+        ac_ext=C
+ # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+@@ -8099,7 +8103,7 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
+ cross_compiling=$ac_cv_prog_cxx_cross
+ 
+        cat > conftest.$ac_ext <<EOF
+-#line 8103 "configure"
++#line 8107 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+@@ -8108,7 +8112,7 @@ int main() {
+            #endif
+ ; return 0; }
+ EOF
+-if { (eval echo configure:8112: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:8116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   _BAD_COMPILER=
+ else
+@@ -8125,7 +8129,7 @@ rm -f conftest*
+            _res="yes"
+        fi
+        cat > conftest.$ac_ext <<EOF
+-#line 8129 "configure"
++#line 8133 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+@@ -8134,7 +8138,7 @@ int main() {
+            #endif
+ ; return 0; }
+ EOF
+-if { (eval echo configure:8138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:8142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   _ABOVE_SS12U1=
+ else
+@@ -8535,7 +8539,7 @@ fi
+ 
+ if test "$GNU_CC" -a "$GCC_USE_GNU_LD" -a -z "$MOZ_DISABLE_ICF"; then
+     echo $ac_n "checking whether the linker supports Identical Code Folding""... $ac_c" 1>&6
+-echo "configure:8539: checking whether the linker supports Identical Code Folding" >&5
++echo "configure:8543: checking whether the linker supports Identical Code Folding" >&5
+ if eval "test \"`echo '$''{'LD_SUPPORTS_ICF'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -8544,7 +8548,7 @@ else
+               'int main() {return foo() - bar();}' > conftest.${ac_ext}
+         # If the linker supports ICF, foo and bar symbols will have
+         # the same address
+-        if { ac_try='${CC-cc} -o conftest${ac_exeext} $LDFLAGS -Wl,--icf=safe -ffunction-sections conftest.${ac_ext} $LIBS 1>&2'; { (eval echo configure:8548: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } &&
++        if { ac_try='${CC-cc} -o conftest${ac_exeext} $LDFLAGS -Wl,--icf=safe -ffunction-sections conftest.${ac_ext} $LIBS 1>&2'; { (eval echo configure:8552: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } &&
+            test -s conftest${ac_exeext} &&
+            objdump -t conftest${ac_exeext} | awk '{a[$6] = $1} END {if (a["foo"] && (a["foo"] != a["bar"])) { exit 1 }}'; then
+             LD_SUPPORTS_ICF=yes
+@@ -8559,14 +8563,14 @@ echo "$ac_t""$LD_SUPPORTS_ICF" 1>&6
+         _SAVE_LDFLAGS="$LDFLAGS -Wl,--icf=safe"
+         LDFLAGS="$LDFLAGS -Wl,--icf=safe -Wl,--print-icf-sections"
+         cat > conftest.$ac_ext <<EOF
+-#line 8563 "configure"
++#line 8567 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:8570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:8574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   LD_PRINT_ICF_SECTIONS=-Wl,--print-icf-sections
+ else
+@@ -8584,15 +8588,15 @@ fi
+ 
+ if test "$GNU_CC" -a "$GCC_USE_GNU_LD" -a -n "$MOZ_DEBUG_FLAGS"; then
+       echo $ac_n "checking whether removing dead symbols breaks debugging""... $ac_c" 1>&6
+-echo "configure:8588: checking whether removing dead symbols breaks debugging" >&5
++echo "configure:8592: checking whether removing dead symbols breaks debugging" >&5
+ if eval "test \"`echo '$''{'GC_SECTIONS_BREAKS_DEBUG_RANGES'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   echo 'int foo() {return 42;}' \
+              'int bar() {return 1;}' \
+              'int main() {return foo();}' > conftest.${ac_ext}
+-        if { ac_try='${CC-cc} -o conftest.${ac_objext} $CFLAGS $MOZ_DEBUG_FLAGS -c conftest.${ac_ext} 1>&2'; { (eval echo configure:8595: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } &&
+-           { ac_try='${CC-cc} -o conftest${ac_exeext} $LDFLAGS $MOZ_DEBUG_FLAGS -Wl,--gc-sections conftest.${ac_objext} $LIBS 1>&2'; { (eval echo configure:8596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } &&
++        if { ac_try='${CC-cc} -o conftest.${ac_objext} $CFLAGS $MOZ_DEBUG_FLAGS -c conftest.${ac_ext} 1>&2'; { (eval echo configure:8599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } &&
++           { ac_try='${CC-cc} -o conftest${ac_exeext} $LDFLAGS $MOZ_DEBUG_FLAGS -Wl,--gc-sections conftest.${ac_objext} $LIBS 1>&2'; { (eval echo configure:8600: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } &&
+            test -s conftest${ac_exeext} -a -s conftest.${ac_objext}; then
+             if test "`$PYTHON "$_topsrcdir"/build/autoconf/check_debug_ranges.py conftest.${ac_objext} conftest.${ac_ext}`" = \
+                     "`$PYTHON "$_topsrcdir"/build/autoconf/check_debug_ranges.py conftest${ac_exeext} conftest.${ac_ext}`"; then
+@@ -8615,12 +8619,12 @@ fi
+ 
+ if test -z "$SKIP_COMPILER_CHECKS"; then
+ echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+-echo "configure:8619: checking for ANSI C header files" >&5
++echo "configure:8623: checking for ANSI C header files" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 8624 "configure"
++#line 8628 "configure"
+ #include "confdefs.h"
+ #include <stdlib.h>
+ #include <stdarg.h>
+@@ -8628,7 +8632,7 @@ else
+ #include <float.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:8632: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:8636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+   rm -rf conftest*
+@@ -8645,7 +8649,7 @@ rm -f conftest*
+ if test $ac_cv_header_stdc = yes; then
+   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat > conftest.$ac_ext <<EOF
+-#line 8649 "configure"
++#line 8653 "configure"
+ #include "confdefs.h"
+ #include <string.h>
+ EOF
+@@ -8663,7 +8667,7 @@ fi
+ if test $ac_cv_header_stdc = yes; then
+   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat > conftest.$ac_ext <<EOF
+-#line 8667 "configure"
++#line 8671 "configure"
+ #include "confdefs.h"
+ #include <stdlib.h>
+ EOF
+@@ -8684,7 +8688,7 @@ if test "$cross_compiling" = yes; then
+   :
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 8688 "configure"
++#line 8692 "configure"
+ #include "confdefs.h"
+ #include <ctype.h>
+ #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+@@ -8695,7 +8699,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
+ exit (0); }
+ 
+ EOF
+-if { (eval echo configure:8699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:8703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+   :
+ else
+@@ -8722,12 +8726,12 @@ EOF
+ fi
+ 
+ echo $ac_n "checking for working const""... $ac_c" 1>&6
+-echo "configure:8726: checking for working const" >&5
++echo "configure:8730: checking for working const" >&5
+ if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 8731 "configure"
++#line 8735 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+@@ -8776,7 +8780,7 @@ ccp = (char const *const *) p;
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:8780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:8784: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_c_const=yes
+ else
+@@ -8800,12 +8804,12 @@ EOF
+ fi
+ 
+ echo $ac_n "checking for mode_t""... $ac_c" 1>&6
+-echo "configure:8804: checking for mode_t" >&5
++echo "configure:8808: checking for mode_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 8809 "configure"
++#line 8813 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #if STDC_HEADERS
+@@ -8836,12 +8840,12 @@ EOF
+ fi
+ 
+ echo $ac_n "checking for off_t""... $ac_c" 1>&6
+-echo "configure:8840: checking for off_t" >&5
++echo "configure:8844: checking for off_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 8845 "configure"
++#line 8849 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #if STDC_HEADERS
+@@ -8872,12 +8876,12 @@ EOF
+ fi
+ 
+ echo $ac_n "checking for pid_t""... $ac_c" 1>&6
+-echo "configure:8876: checking for pid_t" >&5
++echo "configure:8880: checking for pid_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 8881 "configure"
++#line 8885 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #if STDC_HEADERS
+@@ -8908,12 +8912,12 @@ EOF
+ fi
+ 
+ echo $ac_n "checking for size_t""... $ac_c" 1>&6
+-echo "configure:8912: checking for size_t" >&5
++echo "configure:8916: checking for size_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 8917 "configure"
++#line 8921 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #if STDC_HEADERS
+@@ -8951,12 +8955,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
+ cross_compiling=$ac_cv_prog_cxx_cross
+ 
+ echo $ac_n "checking for __stdcall""... $ac_c" 1>&6
+-echo "configure:8955: checking for __stdcall" >&5
++echo "configure:8959: checking for __stdcall" >&5
+ if eval "test \"`echo '$''{'ac_cv___stdcall'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 8960 "configure"
++#line 8964 "configure"
+ #include "confdefs.h"
+ template <typename Method> struct foo;
+                   template <> struct foo<void (*)()> {};
+@@ -8965,7 +8969,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:8969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:8973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv___stdcall=true
+ else
+@@ -8997,12 +9001,12 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
+ cross_compiling=$ac_cv_prog_cc_cross
+ 
+ echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
+-echo "configure:9001: checking for ssize_t" >&5
++echo "configure:9005: checking for ssize_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 9006 "configure"
++#line 9010 "configure"
+ #include "confdefs.h"
+ #include <stdio.h>
+                   #include <sys/types.h>
+@@ -9010,7 +9014,7 @@ int main() {
+ ssize_t foo = 0;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_type_ssize_t=true
+ else
+@@ -9035,12 +9039,12 @@ else
+   echo "$ac_t""no" 1>&6
+ fi
+ echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
+-echo "configure:9039: checking for st_blksize in struct stat" >&5
++echo "configure:9043: checking for st_blksize in struct stat" >&5
+ if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 9044 "configure"
++#line 9048 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #include <sys/stat.h>
+@@ -9048,7 +9052,7 @@ int main() {
+ struct stat s; s.st_blksize;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9052: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_struct_st_blksize=yes
+ else
+@@ -9072,12 +9076,12 @@ EOF
+ fi
+ 
+ echo $ac_n "checking for siginfo_t""... $ac_c" 1>&6
+-echo "configure:9076: checking for siginfo_t" >&5
++echo "configure:9080: checking for siginfo_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_siginfo_t'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 9081 "configure"
++#line 9085 "configure"
+ #include "confdefs.h"
+ #define _POSIX_C_SOURCE 199506L
+                   #include <signal.h>
+@@ -9085,7 +9089,7 @@ int main() {
+ siginfo_t* info;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9089: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9093: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_siginfo_t=true
+ else
+@@ -9111,72 +9115,8 @@ else
+ fi
+ 
+ 
+-echo $ac_n "checking for the size of void*""... $ac_c" 1>&6
+-echo "configure:9116: checking for the size of void*" >&5
+-if eval "test \"`echo '$''{'moz_cv_size_of_JS_BYTES_PER_WORD'+set}'`\" = set"; then
+-  echo $ac_n "(cached) $ac_c" 1>&6
+-else
+-  
+-  moz_cv_size_of_JS_BYTES_PER_WORD=
+-  for size in 4 8; do
+-    cat > conftest.$ac_ext <<EOF
+-#line 9124 "configure"
+-#include "confdefs.h"
+-
+-int main() {
+-
+-                     int a[sizeof (void*) == $size ? 1 : -1];
+-                     return 0;
+-                   
+-; return 0; }
+-EOF
+-if { (eval echo configure:9134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+-  rm -rf conftest*
+-  moz_cv_size_of_JS_BYTES_PER_WORD=$size; break
+-else
+-  echo "configure: failed program was:" >&5
+-  cat conftest.$ac_ext >&5
+-fi
+-rm -f conftest*
+-  done
+-  if test ! "$moz_cv_size_of_JS_BYTES_PER_WORD"; then
+-    { echo "configure: error: No size found for void*" 1>&2; exit 1; }
+-  fi
+-
+-fi
+-
+-echo "$ac_t""$moz_cv_size_of_JS_BYTES_PER_WORD" 1>&6
+-cat >> confdefs.pytmp <<EOF
+-        (''' JS_BYTES_PER_WORD ''', r''' $moz_cv_size_of_JS_BYTES_PER_WORD ''')
+-EOF
+-cat >> confdefs.h <<EOF
+-#define JS_BYTES_PER_WORD $moz_cv_size_of_JS_BYTES_PER_WORD
+-EOF
+-
+-
+-if test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "4"; then
+-  cat >> confdefs.pytmp <<\EOF
+-        (''' JS_BITS_PER_WORD_LOG2 ''', r''' 5 ''')
+-EOF
+-cat >> confdefs.h <<\EOF
+-#define JS_BITS_PER_WORD_LOG2 5
+-EOF
+-
+-elif test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "8"; then
+-  cat >> confdefs.pytmp <<\EOF
+-        (''' JS_BITS_PER_WORD_LOG2 ''', r''' 6 ''')
+-EOF
+-cat >> confdefs.h <<\EOF
+-#define JS_BITS_PER_WORD_LOG2 6
+-EOF
+-
+-else
+-  { echo "configure: error: Unexpected JS_BYTES_PER_WORD" 1>&2; exit 1; }
+-fi
+-
+-
+ echo $ac_n "checking for the alignment of void*""... $ac_c" 1>&6
+-echo "configure:9180: checking for the alignment of void*" >&5
++echo "configure:9120: checking for the alignment of void*" >&5
+ if eval "test \"`echo '$''{'moz_cv_align_of_JS_ALIGN_OF_POINTER'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -9184,7 +9124,7 @@ else
+   moz_cv_align_of_JS_ALIGN_OF_POINTER=
+   for align in 2 4 8 16; do
+     cat > conftest.$ac_ext <<EOF
+-#line 9188 "configure"
++#line 9128 "configure"
+ #include "confdefs.h"
+ 
+                      #include <stddef.h>
+@@ -9197,7 +9137,7 @@ int main() {
+                    
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9201: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9141: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   moz_cv_align_of_JS_ALIGN_OF_POINTER=$align; break
+ else
+@@ -9223,7 +9163,7 @@ EOF
+ 
+ 
+ echo $ac_n "checking for the size of double""... $ac_c" 1>&6
+-echo "configure:9227: checking for the size of double" >&5
++echo "configure:9167: checking for the size of double" >&5
+ if eval "test \"`echo '$''{'moz_cv_size_of_JS_BYTES_PER_DOUBLE'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -9231,7 +9171,7 @@ else
+   moz_cv_size_of_JS_BYTES_PER_DOUBLE=
+   for size in 6 8 10 12 14; do
+     cat > conftest.$ac_ext <<EOF
+-#line 9235 "configure"
++#line 9175 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+@@ -9241,7 +9181,7 @@ int main() {
+                    
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9245: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   moz_cv_size_of_JS_BYTES_PER_DOUBLE=$size; break
+ else
+@@ -9270,12 +9210,12 @@ EOF
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:9274: checking for $ac_hdr" >&5
++echo "configure:9214: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 9279 "configure"
++#line 9219 "configure"
+ #include "confdefs.h"
+ 
+ #include <$ac_hdr>
+@@ -9283,7 +9223,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9287: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9227: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -9326,12 +9266,12 @@ fi
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:9330: checking for $ac_hdr" >&5
++echo "configure:9270: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 9335 "configure"
++#line 9275 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #include <$ac_hdr>
+@@ -9339,7 +9279,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9343: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9283: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -9382,12 +9322,12 @@ fi
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:9386: checking for $ac_hdr" >&5
++echo "configure:9326: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 9391 "configure"
++#line 9331 "configure"
+ #include "confdefs.h"
+ 
+ #include <$ac_hdr>
+@@ -9395,7 +9335,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9399: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -9435,12 +9375,12 @@ EOF
+ fi
+ 
+ echo $ac_n "checking for uint""... $ac_c" 1>&6
+-echo "configure:9439: checking for uint" >&5
++echo "configure:9379: checking for uint" >&5
+ if eval "test \"`echo '$''{'ac_cv_uint'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 9444 "configure"
++#line 9384 "configure"
+ #include "confdefs.h"
+ #include <stdio.h>
+                   #include <sys/types.h>
+@@ -9448,7 +9388,7 @@ int main() {
+ uint foo = 0;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9452: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_uint=true
+ else
+@@ -9473,12 +9413,12 @@ else
+   echo "$ac_t""no" 1>&6
+ fi
+ echo $ac_n "checking for uint_t""... $ac_c" 1>&6
+-echo "configure:9477: checking for uint_t" >&5
++echo "configure:9417: checking for uint_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_uint_t'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 9482 "configure"
++#line 9422 "configure"
+ #include "confdefs.h"
+ #include <stdio.h>
+                   #include <sys/types.h>
+@@ -9486,7 +9426,7 @@ int main() {
+ uint_t foo = 0;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9490: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_uint_t=true
+ else
+@@ -9520,12 +9460,12 @@ cross_compiling=$ac_cv_prog_cxx_cross
+ 
+ 
+ echo $ac_n "checking for uname.domainname""... $ac_c" 1>&6
+-echo "configure:9524: checking for uname.domainname" >&5
++echo "configure:9464: checking for uname.domainname" >&5
+ if eval "test \"`echo '$''{'ac_cv_have_uname_domainname_field'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 9529 "configure"
++#line 9469 "configure"
+ #include "confdefs.h"
+ #include <sys/utsname.h>
+ int main() {
+@@ -9533,7 +9473,7 @@ int main() {
+             (void)uname(res);  if (res != 0) { domain = res->domainname; } 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9537: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9477: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_have_uname_domainname_field=true
+ else
+@@ -9560,12 +9500,12 @@ else
+ fi
+ 
+ echo $ac_n "checking for uname.__domainname""... $ac_c" 1>&6
+-echo "configure:9564: checking for uname.__domainname" >&5
++echo "configure:9504: checking for uname.__domainname" >&5
+ if eval "test \"`echo '$''{'ac_cv_have_uname_us_domainname_field'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 9569 "configure"
++#line 9509 "configure"
+ #include "confdefs.h"
+ #include <sys/utsname.h>
+ int main() {
+@@ -9573,7 +9513,7 @@ int main() {
+             (void)uname(res);  if (res != 0) { domain = res->__domainname; } 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_have_uname_us_domainname_field=true
+ else
+@@ -9609,7 +9549,7 @@ cross_compiling=$ac_cv_prog_cc_cross
+ 
+ if test "$GNU_CC"; then
+   echo $ac_n "checking for visibility(hidden) attribute""... $ac_c" 1>&6
+-echo "configure:9613: checking for visibility(hidden) attribute" >&5
++echo "configure:9553: checking for visibility(hidden) attribute" >&5
+ if eval "test \"`echo '$''{'ac_cv_visibility_hidden'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -9637,7 +9577,7 @@ EOF
+ 
+ 
+     echo $ac_n "checking for visibility(default) attribute""... $ac_c" 1>&6
+-echo "configure:9641: checking for visibility(default) attribute" >&5
++echo "configure:9581: checking for visibility(default) attribute" >&5
+ if eval "test \"`echo '$''{'ac_cv_visibility_default'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -9665,7 +9605,7 @@ EOF
+ 
+ 
+       echo $ac_n "checking for visibility pragma support""... $ac_c" 1>&6
+-echo "configure:9669: checking for visibility pragma support" >&5
++echo "configure:9609: checking for visibility pragma support" >&5
+ if eval "test \"`echo '$''{'ac_cv_visibility_pragma'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -9690,7 +9630,7 @@ fi
+ echo "$ac_t""$ac_cv_visibility_pragma" 1>&6
+       if test "$ac_cv_visibility_pragma" = "yes"; then
+         echo $ac_n "checking For gcc visibility bug with class-level attributes (GCC bug 26905)""... $ac_c" 1>&6
+-echo "configure:9694: checking For gcc visibility bug with class-level attributes (GCC bug 26905)" >&5
++echo "configure:9634: checking For gcc visibility bug with class-level attributes (GCC bug 26905)" >&5
+ if eval "test \"`echo '$''{'ac_cv_have_visibility_class_bug'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -9718,7 +9658,7 @@ fi
+ echo "$ac_t""$ac_cv_have_visibility_class_bug" 1>&6
+ 
+         echo $ac_n "checking For x86_64 gcc visibility bug with builtins (GCC bug 20297)""... $ac_c" 1>&6
+-echo "configure:9722: checking For x86_64 gcc visibility bug with builtins (GCC bug 20297)" >&5
++echo "configure:9662: checking For x86_64 gcc visibility bug with builtins (GCC bug 20297)" >&5
+ if eval "test \"`echo '$''{'ac_cv_have_visibility_builtin_bug'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -9770,7 +9710,7 @@ fi         # Sun Studio on Solaris
+ if test "$GNU_CC"; then
+ 
+ echo $ac_n "checking for gcc PR49911""... $ac_c" 1>&6
+-echo "configure:9774: checking for gcc PR49911" >&5
++echo "configure:9714: checking for gcc PR49911" >&5
+ ac_have_gcc_pr49911="no"
+ 
+ ac_ext=C
+@@ -9787,7 +9727,7 @@ if test "$cross_compiling" = yes; then
+   true
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 9791 "configure"
++#line 9731 "configure"
+ #include "confdefs.h"
+ 
+ extern "C" void abort(void);
+@@ -9828,7 +9768,7 @@ int main(void) {
+ }
+ 
+ EOF
+-if { (eval echo configure:9832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:9772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+   true
+ else
+@@ -9865,12 +9805,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
+ do
+ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
+-echo "configure:9869: checking for $ac_hdr that defines DIR" >&5
++echo "configure:9809: checking for $ac_hdr that defines DIR" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 9874 "configure"
++#line 9814 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #include <$ac_hdr>
+@@ -9878,7 +9818,7 @@ int main() {
+ DIR *dirp = 0;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9882: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_dirent_$ac_safe=yes"
+ else
+@@ -9906,7 +9846,7 @@ done
+ # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+ if test $ac_header_dirent = dirent.h; then
+ echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
+-echo "configure:9910: checking for opendir in -ldir" >&5
++echo "configure:9850: checking for opendir in -ldir" >&5
+ ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+@@ -9914,7 +9854,7 @@ else
+   ac_save_LIBS="$LIBS"
+ LIBS="-ldir  $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 9918 "configure"
++#line 9858 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error.  */
+ /* We use char because int might match the return type of a gcc2
+@@ -9925,7 +9865,7 @@ int main() {
+ opendir()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:9869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -9947,7 +9887,7 @@ fi
+ 
+ else
+ echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
+-echo "configure:9951: checking for opendir in -lx" >&5
++echo "configure:9891: checking for opendir in -lx" >&5
+ ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+@@ -9955,7 +9895,7 @@ else
+   ac_save_LIBS="$LIBS"
+ LIBS="-lx  $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 9959 "configure"
++#line 9899 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error.  */
+ /* We use char because int might match the return type of a gcc2
+@@ -9966,7 +9906,7 @@ int main() {
+ opendir()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:9970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:9910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -10000,12 +9940,12 @@ esac
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:10004: checking for $ac_hdr" >&5
++echo "configure:9944: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 10009 "configure"
++#line 9949 "configure"
+ #include "confdefs.h"
+ 
+ #include <$ac_hdr>
+@@ -10013,7 +9953,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10017: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:9957: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -10048,12 +9988,12 @@ EOF
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:10052: checking for $ac_hdr" >&5
++echo "configure:9992: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 10057 "configure"
++#line 9997 "configure"
+ #include "confdefs.h"
+ 
+ #include <$ac_hdr>
+@@ -10061,7 +10001,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:10005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -10095,12 +10035,12 @@ EOF
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:10099: checking for $ac_hdr" >&5
++echo "configure:10039: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 10104 "configure"
++#line 10044 "configure"
+ #include "confdefs.h"
+ 
+ #include <$ac_hdr>
+@@ -10108,7 +10048,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10112: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:10052: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -10141,12 +10081,12 @@ EOF
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:10145: checking for $ac_hdr" >&5
++echo "configure:10085: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 10150 "configure"
++#line 10090 "configure"
+ #include "confdefs.h"
+ 
+ #include <$ac_hdr>
+@@ -10154,7 +10094,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10158: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:10098: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -10188,12 +10128,12 @@ EOF
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:10192: checking for $ac_hdr" >&5
++echo "configure:10132: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 10197 "configure"
++#line 10137 "configure"
+ #include "confdefs.h"
+ 
+ #include <$ac_hdr>
+@@ -10201,7 +10141,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10205: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:10145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -10241,12 +10181,12 @@ cross_compiling=$ac_cv_prog_cxx_cross
+ NEW_H=new.h
+    ac_safe=`echo "new" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for new""... $ac_c" 1>&6
+-echo "configure:10245: checking for new" >&5
++echo "configure:10185: checking for new" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 10250 "configure"
++#line 10190 "configure"
+ #include "confdefs.h"
+ 
+ #include <new>
+@@ -10254,7 +10194,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10258: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:10198: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -10298,12 +10238,12 @@ fi
+ if test "x$enable_dtrace" = "xyes"; then
+      ac_safe=`echo "sys/sdt.h" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for sys/sdt.h""... $ac_c" 1>&6
+-echo "configure:10302: checking for sys/sdt.h" >&5
++echo "configure:10242: checking for sys/sdt.h" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 10307 "configure"
++#line 10247 "configure"
+ #include "confdefs.h"
+ 
+ #include <sys/sdt.h>
+@@ -10311,7 +10251,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10315: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:10255: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -10353,12 +10293,12 @@ case $target in
+   do
+        ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:10357: checking for $ac_hdr" >&5
++echo "configure:10297: checking for $ac_hdr" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 10362 "configure"
++#line 10302 "configure"
+ #include "confdefs.h"
+ 
+ #include <$ac_hdr>
+@@ -10366,7 +10306,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10370: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:10310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -10418,12 +10358,12 @@ CFLAGS="$CFLAGS $LINUX_HEADERS_INCLUDES"
+ 
+    ac_safe=`echo "linux/perf_event.h" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for linux/perf_event.h""... $ac_c" 1>&6
+-echo "configure:10422: checking for linux/perf_event.h" >&5
++echo "configure:10362: checking for linux/perf_event.h" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 10427 "configure"
++#line 10367 "configure"
+ #include "confdefs.h"
+ 
+ #include <linux/perf_event.h>
+@@ -10431,7 +10371,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10435: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:10375: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -10446,19 +10386,19 @@ fi
+   if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+     echo "$ac_t""yes" 1>&6
+     echo $ac_n "checking for perf_event_open system call""... $ac_c" 1>&6
+-echo "configure:10450: checking for perf_event_open system call" >&5
++echo "configure:10390: checking for perf_event_open system call" >&5
+ if eval "test \"`echo '$''{'ac_cv_perf_event_open'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 10455 "configure"
++#line 10395 "configure"
+ #include "confdefs.h"
+ #include <asm/unistd.h>
+ int main() {
+ return sizeof(__NR_perf_event_open);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10462: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:10402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_perf_event_open=yes
+ else
+@@ -10494,7 +10434,7 @@ case $target in
+ 	;;
+ *)
+ 	echo $ac_n "checking for gethostbyname_r in -lc_r""... $ac_c" 1>&6
+-echo "configure:10498: checking for gethostbyname_r in -lc_r" >&5
++echo "configure:10438: checking for gethostbyname_r in -lc_r" >&5
+ ac_lib_var=`echo c_r'_'gethostbyname_r | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+@@ -10502,7 +10442,7 @@ else
+   ac_save_LIBS="$LIBS"
+ LIBS="-lc_r  $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 10506 "configure"
++#line 10446 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error.  */
+ /* We use char because int might match the return type of a gcc2
+@@ -10513,7 +10453,7 @@ int main() {
+ gethostbyname_r()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:10457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -10554,14 +10494,14 @@ case $target in
+ *)
+     
+ echo $ac_n "checking for library containing dlopen""... $ac_c" 1>&6
+-echo "configure:10558: checking for library containing dlopen" >&5
++echo "configure:10498: checking for library containing dlopen" >&5
+ if eval "test \"`echo '$''{'ac_cv_search_dlopen'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   ac_func_search_save_LIBS="$LIBS"
+ ac_cv_search_dlopen="no"
+ cat > conftest.$ac_ext <<EOF
+-#line 10565 "configure"
++#line 10505 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error.  */
+ /* We use char because int might match the return type of a gcc2
+@@ -10572,7 +10512,7 @@ int main() {
+ dlopen()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:10516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_search_dlopen="none required"
+ else
+@@ -10583,7 +10523,7 @@ rm -f conftest*
+ test "$ac_cv_search_dlopen" = "no" && for i in dl; do
+ LIBS="-l$i  $ac_func_search_save_LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 10587 "configure"
++#line 10527 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error.  */
+ /* We use char because int might match the return type of a gcc2
+@@ -10594,7 +10534,7 @@ int main() {
+ dlopen()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:10538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_search_dlopen="-l$i"
+ break
+@@ -10612,12 +10552,12 @@ if test "$ac_cv_search_dlopen" != "no"; then
+   test "$ac_cv_search_dlopen" = "none required" || LIBS="$ac_cv_search_dlopen $LIBS"
+      ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
+-echo "configure:10616: checking for dlfcn.h" >&5
++echo "configure:10556: checking for dlfcn.h" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 10621 "configure"
++#line 10561 "configure"
+ #include "confdefs.h"
+ 
+ #include <dlfcn.h>
+@@ -10625,7 +10565,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10629: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:10569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -10662,12 +10602,12 @@ CFLAGS="$CFLAGS -D_GNU_SOURCE"
+ for ac_func in dladdr
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:10666: checking for $ac_func" >&5
++echo "configure:10606: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 10671 "configure"
++#line 10611 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+     which can conflict with char $ac_func(); below.  */
+@@ -10690,7 +10630,7 @@ $ac_func();
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:10634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -10724,7 +10664,7 @@ if test ! "$GNU_CXX"; then
+     case $target in
+     *-aix*)
+ 	echo $ac_n "checking for demangle in -lC_r""... $ac_c" 1>&6
+-echo "configure:10728: checking for demangle in -lC_r" >&5
++echo "configure:10668: checking for demangle in -lC_r" >&5
+ ac_lib_var=`echo C_r'_'demangle | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+@@ -10732,7 +10672,7 @@ else
+   ac_save_LIBS="$LIBS"
+ LIBS="-lC_r  $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 10736 "configure"
++#line 10676 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error.  */
+ /* We use char because int might match the return type of a gcc2
+@@ -10743,7 +10683,7 @@ int main() {
+ demangle()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:10687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -10776,7 +10716,7 @@ fi
+ 	;;
+      *)
+ 	echo $ac_n "checking for demangle in -lC""... $ac_c" 1>&6
+-echo "configure:10780: checking for demangle in -lC" >&5
++echo "configure:10720: checking for demangle in -lC" >&5
+ ac_lib_var=`echo C'_'demangle | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+@@ -10784,7 +10724,7 @@ else
+   ac_save_LIBS="$LIBS"
+ LIBS="-lC  $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 10788 "configure"
++#line 10728 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error.  */
+ /* We use char because int might match the return type of a gcc2
+@@ -10795,7 +10735,7 @@ int main() {
+ demangle()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:10739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -10834,7 +10774,7 @@ case $target in
+     ;;
+ *)
+     echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
+-echo "configure:10838: checking for socket in -lsocket" >&5
++echo "configure:10778: checking for socket in -lsocket" >&5
+ ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+@@ -10842,7 +10782,7 @@ else
+   ac_save_LIBS="$LIBS"
+ LIBS="-lsocket  $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 10846 "configure"
++#line 10786 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error.  */
+ /* We use char because int might match the return type of a gcc2
+@@ -10853,7 +10793,7 @@ int main() {
+ socket()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:10857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:10797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -10892,7 +10832,7 @@ darwin*)
+ *)
+     
+ echo $ac_n "checking for pthread_create in -lpthreads""... $ac_c" 1>&6
+-echo "configure:10896: checking for pthread_create in -lpthreads" >&5
++echo "configure:10836: checking for pthread_create in -lpthreads" >&5
+ echo "
+     #include <pthread.h>
+     #include <stdlib.h>
+@@ -10915,7 +10855,7 @@ echo "
+         echo "$ac_t""no" 1>&6
+         
+ echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
+-echo "configure:10919: checking for pthread_create in -lpthread" >&5
++echo "configure:10859: checking for pthread_create in -lpthread" >&5
+ echo "
+     #include <pthread.h>
+     #include <stdlib.h>
+@@ -10938,7 +10878,7 @@ echo "
+         echo "$ac_t""no" 1>&6
+         
+ echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
+-echo "configure:10942: checking for pthread_create in -lc_r" >&5
++echo "configure:10882: checking for pthread_create in -lc_r" >&5
+ echo "
+     #include <pthread.h>
+     #include <stdlib.h>
+@@ -10961,7 +10901,7 @@ echo "
+         echo "$ac_t""no" 1>&6
+         
+ echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6
+-echo "configure:10965: checking for pthread_create in -lc" >&5
++echo "configure:10905: checking for pthread_create in -lc" >&5
+ echo "
+     #include <pthread.h>
+     #include <stdlib.h>
+@@ -11020,7 +10960,7 @@ then
+ 				rm -f conftest*
+ 	ac_cv_have_dash_pthread=no
+ 	echo $ac_n "checking whether ${CC-cc} accepts -pthread""... $ac_c" 1>&6
+-echo "configure:11024: checking whether ${CC-cc} accepts -pthread" >&5
++echo "configure:10964: checking whether ${CC-cc} accepts -pthread" >&5
+ 	echo 'int main() { return 0; }' | cat > conftest.c
+ 	${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
+ 	if test $? -eq 0; then
+@@ -11043,7 +10983,7 @@ echo "configure:11024: checking whether ${CC-cc} accepts -pthread" >&5
+ 			    ac_cv_have_dash_pthreads=no
+     if test "$ac_cv_have_dash_pthread" = "no"; then
+ 	    echo $ac_n "checking whether ${CC-cc} accepts -pthreads""... $ac_c" 1>&6
+-echo "configure:11047: checking whether ${CC-cc} accepts -pthreads" >&5
++echo "configure:10987: checking whether ${CC-cc} accepts -pthreads" >&5
+     	echo 'int main() { return 0; }' | cat > conftest.c
+ 	    ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
+     	if test $? -eq 0; then
+@@ -11148,13 +11088,13 @@ fi
+ 
+ if test $ac_cv_prog_gcc = yes; then
+     echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
+-echo "configure:11152: checking whether ${CC-cc} needs -traditional" >&5
++echo "configure:11092: checking whether ${CC-cc} needs -traditional" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+     ac_pattern="Autoconf.*'x'"
+   cat > conftest.$ac_ext <<EOF
+-#line 11158 "configure"
++#line 11098 "configure"
+ #include "confdefs.h"
+ #include <sgtty.h>
+ Autoconf TIOCGETP
+@@ -11172,7 +11112,7 @@ rm -f conftest*
+ 
+   if test $ac_cv_prog_gcc_traditional = no; then
+     cat > conftest.$ac_ext <<EOF
+-#line 11176 "configure"
++#line 11116 "configure"
+ #include "confdefs.h"
+ #include <termio.h>
+ Autoconf TCGETA
+@@ -11194,7 +11134,7 @@ echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6
+ fi
+ 
+ echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
+-echo "configure:11198: checking for 8-bit clean memcmp" >&5
++echo "configure:11138: checking for 8-bit clean memcmp" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -11202,7 +11142,7 @@ else
+   ac_cv_func_memcmp_clean=no
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11206 "configure"
++#line 11146 "configure"
+ #include "confdefs.h"
+ 
+ main()
+@@ -11212,7 +11152,7 @@ main()
+ }
+ 
+ EOF
+-if { (eval echo configure:11216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:11156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+   ac_cv_func_memcmp_clean=yes
+ else
+@@ -11234,12 +11174,12 @@ for ac_func in fchmod flockfile getc_unlocked _getc_nolock getpagesize \
+                 stat64 statvfs statvfs64 strerror strtok_r truncate64
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:11238: checking for $ac_func" >&5
++echo "configure:11178: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11243 "configure"
++#line 11183 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+     which can conflict with char $ac_func(); below.  */
+@@ -11262,7 +11202,7 @@ $ac_func();
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11266: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:11206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -11291,14 +11231,14 @@ done
+ 
+ 
+ cat > conftest.$ac_ext <<EOF
+-#line 11295 "configure"
++#line 11235 "configure"
+ #include "confdefs.h"
+ #include <windows.h>
+ int main() {
+ SYSTEMTIME st;FILETIME ft;SystemTimeToFileTime(&st,&ft);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:11242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_have_systemtimetofiletime="yes"
+ else
+@@ -11318,14 +11258,14 @@ EOF
+ 
+ fi
+ cat > conftest.$ac_ext <<EOF
+-#line 11322 "configure"
++#line 11262 "configure"
+ #include "confdefs.h"
+ #include <windows.h>
+ int main() {
+ FILETIME ft;GetSystemTimeAsFileTime(&ft);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:11269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_have_getsystemtimeasfiletime="yes"
+ else
+@@ -11355,19 +11295,19 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
+ cross_compiling=$ac_cv_prog_cxx_cross
+ 
+ echo $ac_n "checking for wcrtomb""... $ac_c" 1>&6
+-echo "configure:11359: checking for wcrtomb" >&5
++echo "configure:11299: checking for wcrtomb" >&5
+ if eval "test \"`echo '$''{'ac_cv_have_wcrtomb'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11364 "configure"
++#line 11304 "configure"
+ #include "confdefs.h"
+ #include <wchar.h>
+ int main() {
+ mbstate_t ps={0};wcrtomb(0,'f',&ps);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:11311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_have_wcrtomb="yes"
+ else
+@@ -11390,19 +11330,19 @@ EOF
+ 
+ fi
+ echo $ac_n "checking for mbrtowc""... $ac_c" 1>&6
+-echo "configure:11394: checking for mbrtowc" >&5
++echo "configure:11334: checking for mbrtowc" >&5
+ if eval "test \"`echo '$''{'ac_cv_have_mbrtowc'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11399 "configure"
++#line 11339 "configure"
+ #include "confdefs.h"
+ #include <wchar.h>
+ int main() {
+ mbstate_t ps={0};mbrtowc(0,0,0,&ps);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:11346: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_have_mbrtowc="yes"
+ else
+@@ -11434,12 +11374,12 @@ cross_compiling=$ac_cv_prog_cc_cross
+ fi
+ 
+ echo $ac_n "checking for res_ninit()""... $ac_c" 1>&6
+-echo "configure:11438: checking for res_ninit()" >&5
++echo "configure:11378: checking for res_ninit()" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_res_ninit'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11443 "configure"
++#line 11383 "configure"
+ #include "confdefs.h"
+ 
+         #ifdef linux
+@@ -11451,7 +11391,7 @@ int main() {
+ int foo = res_ninit(&_res);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:11395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_func_res_ninit=yes
+ else
+@@ -11484,12 +11424,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
+ cross_compiling=$ac_cv_prog_cxx_cross
+ 
+ echo $ac_n "checking for gnu_get_libc_version()""... $ac_c" 1>&6
+-echo "configure:11488: checking for gnu_get_libc_version()" >&5
++echo "configure:11428: checking for gnu_get_libc_version()" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_gnu_get_libc_version'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11493 "configure"
++#line 11433 "configure"
+ #include "confdefs.h"
+ 
+         #ifdef HAVE_GNU_LIBC_VERSION_H
+@@ -11500,7 +11440,7 @@ int main() {
+ const char *glibc_version = gnu_get_libc_version();
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:11444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_func_gnu_get_libc_version=yes
+ else
+@@ -11534,7 +11474,7 @@ cross_compiling=$ac_cv_prog_cc_cross
+ 
+ 
+ echo $ac_n "checking for an implementation of va_copy()""... $ac_c" 1>&6
+-echo "configure:11538: checking for an implementation of va_copy()" >&5
++echo "configure:11478: checking for an implementation of va_copy()" >&5
+ if eval "test \"`echo '$''{'ac_cv_va_copy'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -11544,7 +11484,7 @@ else
+     
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11548 "configure"
++#line 11488 "configure"
+ #include "confdefs.h"
+ 
+         #include <stdarg.h>
+@@ -11558,7 +11498,7 @@ else
+         }
+         int main() { f (0, 42); return 0; }
+ EOF
+-if { (eval echo configure:11562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:11502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+   ac_cv_va_copy=yes
+ else
+@@ -11575,7 +11515,7 @@ fi
+ 
+ echo "$ac_t""$ac_cv_va_copy" 1>&6
+ echo $ac_n "checking for an implementation of __va_copy()""... $ac_c" 1>&6
+-echo "configure:11579: checking for an implementation of __va_copy()" >&5
++echo "configure:11519: checking for an implementation of __va_copy()" >&5
+ if eval "test \"`echo '$''{'ac_cv___va_copy'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -11585,7 +11525,7 @@ else
+     
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11589 "configure"
++#line 11529 "configure"
+ #include "confdefs.h"
+ 
+         #include <stdarg.h>
+@@ -11599,7 +11539,7 @@ else
+         }
+         int main() { f (0, 42); return 0; }
+ EOF
+-if { (eval echo configure:11603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:11543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+   ac_cv___va_copy=yes
+ else
+@@ -11616,7 +11556,7 @@ fi
+ 
+ echo "$ac_t""$ac_cv___va_copy" 1>&6
+ echo $ac_n "checking whether va_lists can be copied by value""... $ac_c" 1>&6
+-echo "configure:11620: checking whether va_lists can be copied by value" >&5
++echo "configure:11560: checking whether va_lists can be copied by value" >&5
+ if eval "test \"`echo '$''{'ac_cv_va_val_copy'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -11626,7 +11566,7 @@ else
+     
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11630 "configure"
++#line 11570 "configure"
+ #include "confdefs.h"
+ 
+         #include <stdarg.h>
+@@ -11640,7 +11580,7 @@ else
+         }
+         int main() { f (0, 42); return 0; }
+ EOF
+-if { (eval echo configure:11644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:11584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+   ac_cv_va_val_copy=yes
+ else
+@@ -11710,12 +11650,12 @@ ARM_ABI_PREFIX=
+ if test "$GNU_CC"; then
+   if test "$CPU_ARCH" = "arm" ; then
+     echo $ac_n "checking for ARM EABI""... $ac_c" 1>&6
+-echo "configure:11714: checking for ARM EABI" >&5
++echo "configure:11654: checking for ARM EABI" >&5
+ if eval "test \"`echo '$''{'ac_cv_gcc_arm_eabi'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11719 "configure"
++#line 11659 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+@@ -11728,7 +11668,7 @@ int main() {
+                         
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11732: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:11672: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_gcc_arm_eabi="yes"
+ else
+@@ -11753,12 +11693,12 @@ echo "$ac_t""$ac_cv_gcc_arm_eabi" 1>&6
+ fi
+ 
+ echo $ac_n "checking for modern C++ template specialization syntax support""... $ac_c" 1>&6
+-echo "configure:11757: checking for modern C++ template specialization syntax support" >&5
++echo "configure:11697: checking for modern C++ template specialization syntax support" >&5
+ if eval "test \"`echo '$''{'ac_cv_cpp_modern_specialize_template_syntax'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11762 "configure"
++#line 11702 "configure"
+ #include "confdefs.h"
+ template <class T> struct X { int a; };
+                                class Y {};
+@@ -11768,7 +11708,7 @@ X<int> int_x;
+                                X<Y> y_x;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11772: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:11712: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_cpp_modern_specialize_template_syntax=yes
+ else
+@@ -11786,12 +11726,12 @@ if test "$ac_cv_cpp_modern_specialize_template_syntax" = no ; then
+ fi
+ 
+ echo $ac_n "checking whether partial template specialization works""... $ac_c" 1>&6
+-echo "configure:11790: checking whether partial template specialization works" >&5
++echo "configure:11730: checking whether partial template specialization works" >&5
+ if eval "test \"`echo '$''{'ac_cv_cpp_partial_specialization'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11795 "configure"
++#line 11735 "configure"
+ #include "confdefs.h"
+ template <class T> class Foo {};
+                                template <class T> class Foo<T*> {};
+@@ -11799,7 +11739,7 @@ int main() {
+ return 0;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:11743: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_cpp_partial_specialization=yes
+ else
+@@ -11823,12 +11763,12 @@ EOF
+ fi
+ 
+ echo $ac_n "checking whether the C++ \"using\" keyword resolves ambiguity""... $ac_c" 1>&6
+-echo "configure:11827: checking whether the C++ \"using\" keyword resolves ambiguity" >&5
++echo "configure:11767: checking whether the C++ \"using\" keyword resolves ambiguity" >&5
+ if eval "test \"`echo '$''{'ac_cv_cpp_ambiguity_resolving_using'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11832 "configure"
++#line 11772 "configure"
+ #include "confdefs.h"
+ class X {
+                                  public: int go(const X&) {return 3;}
+@@ -11844,7 +11784,7 @@ int main() {
+ X x; Y y; y.jo(x);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11848: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:11788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_cpp_ambiguity_resolving_using=yes
+ else
+@@ -11868,7 +11808,7 @@ EOF
+ fi
+ 
+ echo $ac_n "checking for C++ dynamic_cast to void*""... $ac_c" 1>&6
+-echo "configure:11872: checking for C++ dynamic_cast to void*" >&5
++echo "configure:11812: checking for C++ dynamic_cast to void*" >&5
+ if eval "test \"`echo '$''{'ac_cv_cpp_dynamic_cast_void_ptr'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -11876,7 +11816,7 @@ else
+   ac_cv_cpp_dynamic_cast_void_ptr=no
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11880 "configure"
++#line 11820 "configure"
+ #include "confdefs.h"
+ class X { int i; public: virtual ~X() { } };
+                             class Y { int j; public: virtual ~Y() { } };
+@@ -11892,7 +11832,7 @@ class X { int i; public: virtual ~X() { } };
+                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
+                             }
+ EOF
+-if { (eval echo configure:11896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:11836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+   ac_cv_cpp_dynamic_cast_void_ptr=yes
+ else
+@@ -11919,19 +11859,19 @@ fi
+ 
+ 
+ echo $ac_n "checking whether C++ requires implementation of unused virtual methods""... $ac_c" 1>&6
+-echo "configure:11923: checking whether C++ requires implementation of unused virtual methods" >&5
++echo "configure:11863: checking whether C++ requires implementation of unused virtual methods" >&5
+ if eval "test \"`echo '$''{'ac_cv_cpp_unused_required'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11928 "configure"
++#line 11868 "configure"
+ #include "confdefs.h"
+ class X {private: virtual void never_called();};
+ int main() {
+ X x;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:11875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_cpp_unused_required=no
+ else
+@@ -11957,12 +11897,12 @@ fi
+ 
+ 
+ echo $ac_n "checking for trouble comparing to zero near std::operator!=()""... $ac_c" 1>&6
+-echo "configure:11961: checking for trouble comparing to zero near std::operator!=()" >&5
++echo "configure:11901: checking for trouble comparing to zero near std::operator!=()" >&5
+ if eval "test \"`echo '$''{'ac_cv_trouble_comparing_to_zero'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 11966 "configure"
++#line 11906 "configure"
+ #include "confdefs.h"
+ #include <algorithm>
+                                 template <class T> class Foo {};
+@@ -11973,7 +11913,7 @@ int main() {
+ Foo<int> f; return (0 != f);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:11977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:11917: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_trouble_comparing_to_zero=no
+ else
+@@ -12003,19 +11943,19 @@ fi
+ _SAVE_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
+ echo $ac_n "checking for __thread keyword for TLS variables""... $ac_c" 1>&6
+-echo "configure:12007: checking for __thread keyword for TLS variables" >&5
++echo "configure:11947: checking for __thread keyword for TLS variables" >&5
+ if eval "test \"`echo '$''{'ac_cv_thread_keyword'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 12012 "configure"
++#line 11952 "configure"
+ #include "confdefs.h"
+ __thread bool tlsIsMainThread = false;
+ int main() {
+ return tlsIsMainThread;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:11959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv_thread_keyword=yes
+ else
+@@ -12055,12 +11995,12 @@ fi
+ MALLOC_H=
+    ac_safe=`echo "malloc.h" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for malloc.h""... $ac_c" 1>&6
+-echo "configure:12059: checking for malloc.h" >&5
++echo "configure:11999: checking for malloc.h" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 12064 "configure"
++#line 12004 "configure"
+ #include "confdefs.h"
+ 
+ #include <malloc.h>
+@@ -12068,7 +12008,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:12012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -12091,12 +12031,12 @@ fi
+ if test "$MALLOC_H" = ""; then
+      ac_safe=`echo "malloc/malloc.h" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for malloc/malloc.h""... $ac_c" 1>&6
+-echo "configure:12095: checking for malloc/malloc.h" >&5
++echo "configure:12035: checking for malloc/malloc.h" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 12100 "configure"
++#line 12040 "configure"
+ #include "confdefs.h"
+ 
+ #include <malloc/malloc.h>
+@@ -12104,7 +12044,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12108: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:12048: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -12127,12 +12067,12 @@ fi
+   if test "$MALLOC_H" = ""; then
+        ac_safe=`echo "sys/malloc.h" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for sys/malloc.h""... $ac_c" 1>&6
+-echo "configure:12131: checking for sys/malloc.h" >&5
++echo "configure:12071: checking for sys/malloc.h" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 12136 "configure"
++#line 12076 "configure"
+ #include "confdefs.h"
+ 
+ #include <sys/malloc.h>
+@@ -12140,7 +12080,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12144: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:12084: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -12176,12 +12116,12 @@ MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
+ for ac_func in strndup posix_memalign memalign valloc
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:12180: checking for $ac_func" >&5
++echo "configure:12120: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 12185 "configure"
++#line 12125 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+     which can conflict with char $ac_func(); below.  */
+@@ -12207,7 +12147,7 @@ $ac_func();
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:12151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -12237,19 +12177,19 @@ done
+ 
+ 
+ echo $ac_n "checking for __attribute__((always_inline))""... $ac_c" 1>&6
+-echo "configure:12241: checking for __attribute__((always_inline))" >&5
++echo "configure:12181: checking for __attribute__((always_inline))" >&5
+ if eval "test \"`echo '$''{'ac_cv_attribute_always_inline'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 12246 "configure"
++#line 12186 "configure"
+ #include "confdefs.h"
+ inline void f(void) __attribute__((always_inline));
+ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12253: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:12193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_attribute_always_inline=yes
+ else
+@@ -12264,19 +12204,19 @@ fi
+ echo "$ac_t""$ac_cv_attribute_always_inline" 1>&6
+ 
+ echo $ac_n "checking for __attribute__((malloc))""... $ac_c" 1>&6
+-echo "configure:12268: checking for __attribute__((malloc))" >&5
++echo "configure:12208: checking for __attribute__((malloc))" >&5
+ if eval "test \"`echo '$''{'ac_cv_attribute_malloc'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 12273 "configure"
++#line 12213 "configure"
+ #include "confdefs.h"
+ void* f(int) __attribute__((malloc));
+ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:12220: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_attribute_malloc=yes
+ else
+@@ -12291,19 +12231,19 @@ fi
+ echo "$ac_t""$ac_cv_attribute_malloc" 1>&6
+ 
+ echo $ac_n "checking for __attribute__((warn_unused_result))""... $ac_c" 1>&6
+-echo "configure:12295: checking for __attribute__((warn_unused_result))" >&5
++echo "configure:12235: checking for __attribute__((warn_unused_result))" >&5
+ if eval "test \"`echo '$''{'ac_cv_attribute_warn_unused'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 12300 "configure"
++#line 12240 "configure"
+ #include "confdefs.h"
+ int f(void) __attribute__((warn_unused_result));
+ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12307: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:12247: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_attribute_warn_unused=yes
+ else
+@@ -12327,19 +12267,19 @@ cross_compiling=$ac_cv_prog_cc_cross
+ 
+ 
+ echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
+-echo "configure:12331: checking for LC_MESSAGES" >&5
++echo "configure:12271: checking for LC_MESSAGES" >&5
+ if eval "test \"`echo '$''{'ac_cv_i18n_lc_messages'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 12336 "configure"
++#line 12276 "configure"
+ #include "confdefs.h"
+ #include <locale.h>
+ int main() {
+ int category = LC_MESSAGES;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12343: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:12283: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_i18n_lc_messages=yes
+ else
+@@ -12365,12 +12305,12 @@ fi
+ for ac_func in localeconv
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:12369: checking for $ac_func" >&5
++echo "configure:12309: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 12374 "configure"
++#line 12314 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+     which can conflict with char $ac_func(); below.  */
+@@ -12393,7 +12333,7 @@ $ac_func();
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:12337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -12580,7 +12520,7 @@ fi
+ 	# Extract the first word of "nspr-config", so it can be a program name with args.
+ set dummy nspr-config; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:12584: checking for $ac_word" >&5
++echo "configure:12524: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_NSPR_CONFIG'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -12615,7 +12555,7 @@ fi
+ 
+ 	min_nspr_version=$NSPR_MINVER
+ 	echo $ac_n "checking for NSPR - version >= $min_nspr_version""... $ac_c" 1>&6
+-echo "configure:12619: checking for NSPR - version >= $min_nspr_version" >&5
++echo "configure:12559: checking for NSPR - version >= $min_nspr_version" >&5
+ 
+ 	no_nspr=""
+ 	if test "$NSPR_CONFIG" != "no"; then
+@@ -12678,7 +12618,7 @@ if test -n "$MOZ_NATIVE_NSPR"; then
+     _SAVE_CFLAGS=$CFLAGS
+     CFLAGS="$CFLAGS $NSPR_CFLAGS"
+     cat > conftest.$ac_ext <<EOF
+-#line 12682 "configure"
++#line 12622 "configure"
+ #include "confdefs.h"
+ #include "prlog.h"
+ int main() {
+@@ -12687,7 +12627,7 @@ int main() {
+                  #endif
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12691: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:12631: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   MOZ_NATIVE_NSPR=1
+ else
+@@ -12729,7 +12669,7 @@ if test -z "$MOZ_ZLIB_LIBS$MOZ_ZLIB_CFLAGS$SKIP_LIBRARY_CHECKS"; then
+         MOZ_NATIVE_ZLIB=
+     else
+         echo $ac_n "checking for gzread in -lz""... $ac_c" 1>&6
+-echo "configure:12733: checking for gzread in -lz" >&5
++echo "configure:12673: checking for gzread in -lz" >&5
+ ac_lib_var=`echo z'_'gzread | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+@@ -12737,7 +12677,7 @@ else
+   ac_save_LIBS="$LIBS"
+ LIBS="-lz  $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 12741 "configure"
++#line 12681 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error.  */
+ /* We use char because int might match the return type of a gcc2
+@@ -12748,7 +12688,7 @@ int main() {
+ gzread()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:12692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -12772,7 +12712,7 @@ fi
+         if test "$MOZ_NATIVE_ZLIB" = 1; then
+             MOZZLIBNUM=`echo $MOZZLIB | awk -F. '{printf "0x%x\n", ((($1 * 16 + $2) * 16) + $3) * 16 + $4}'`
+             cat > conftest.$ac_ext <<EOF
+-#line 12776 "configure"
++#line 12716 "configure"
+ #include "confdefs.h"
+  #include <stdio.h>
+                              #include <string.h>
+@@ -12783,7 +12723,7 @@ int main() {
+                              #endif 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:12787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:12727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   MOZ_NATIVE_ZLIB=1
+ else
+@@ -12829,7 +12769,7 @@ if test -n "$MOZ_NATIVE_FFI"; then
+     # Extract the first word of "pkg-config", so it can be a program name with args.
+ set dummy pkg-config; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:12833: checking for $ac_word" >&5
++echo "configure:12773: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -12873,19 +12813,19 @@ fi
+      PKG_CONFIG_MIN_VERSION=0.9.0
+      if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+         echo $ac_n "checking for libffi > 3.0.9""... $ac_c" 1>&6
+-echo "configure:12877: checking for libffi > 3.0.9" >&5
++echo "configure:12817: checking for libffi > 3.0.9" >&5
+ 
+         if $PKG_CONFIG --exists "libffi > 3.0.9" ; then
+             echo "$ac_t""yes" 1>&6
+             succeeded=yes
+ 
+             echo $ac_n "checking MOZ_FFI_CFLAGS""... $ac_c" 1>&6
+-echo "configure:12884: checking MOZ_FFI_CFLAGS" >&5
++echo "configure:12824: checking MOZ_FFI_CFLAGS" >&5
+             MOZ_FFI_CFLAGS=`$PKG_CONFIG --cflags "libffi > 3.0.9"`
+             echo "$ac_t""$MOZ_FFI_CFLAGS" 1>&6
+ 
+             echo $ac_n "checking MOZ_FFI_LIBS""... $ac_c" 1>&6
+-echo "configure:12889: checking MOZ_FFI_LIBS" >&5
++echo "configure:12829: checking MOZ_FFI_LIBS" >&5
+             ## Remove evil flags like -Wl,--export-dynamic
+             MOZ_FFI_LIBS="`$PKG_CONFIG --libs \"libffi > 3.0.9\" |sed s/-Wl,--export-dynamic//g`"
+             echo "$ac_t""$MOZ_FFI_LIBS" 1>&6
+@@ -12921,7 +12861,7 @@ echo "configure:12889: checking MOZ_FFI_LIBS" >&5
+     # Extract the first word of "pkg-config", so it can be a program name with args.
+ set dummy pkg-config; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:12925: checking for $ac_word" >&5
++echo "configure:12865: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -12965,19 +12905,19 @@ fi
+      PKG_CONFIG_MIN_VERSION=0.9.0
+      if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+         echo $ac_n "checking for libffi >= 3.0.9""... $ac_c" 1>&6
+-echo "configure:12969: checking for libffi >= 3.0.9" >&5
++echo "configure:12909: checking for libffi >= 3.0.9" >&5
+ 
+         if $PKG_CONFIG --exists "libffi >= 3.0.9" ; then
+             echo "$ac_t""yes" 1>&6
+             succeeded=yes
+ 
+             echo $ac_n "checking MOZ_FFI_CFLAGS""... $ac_c" 1>&6
+-echo "configure:12976: checking MOZ_FFI_CFLAGS" >&5
++echo "configure:12916: checking MOZ_FFI_CFLAGS" >&5
+             MOZ_FFI_CFLAGS=`$PKG_CONFIG --cflags "libffi >= 3.0.9"`
+             echo "$ac_t""$MOZ_FFI_CFLAGS" 1>&6
+ 
+             echo $ac_n "checking MOZ_FFI_LIBS""... $ac_c" 1>&6
+-echo "configure:12981: checking MOZ_FFI_LIBS" >&5
++echo "configure:12921: checking MOZ_FFI_LIBS" >&5
+             ## Remove evil flags like -Wl,--export-dynamic
+             MOZ_FFI_LIBS="`$PKG_CONFIG --libs \"libffi >= 3.0.9\" |sed s/-Wl,--export-dynamic//g`"
+             echo "$ac_t""$MOZ_FFI_LIBS" 1>&6
+@@ -13112,18 +13052,18 @@ MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
+ 
+ if test -n "$MOZ_DEBUG"; then
+     echo $ac_n "checking for valid debug flags""... $ac_c" 1>&6
+-echo "configure:13116: checking for valid debug flags" >&5
++echo "configure:13056: checking for valid debug flags" >&5
+     _SAVE_CFLAGS=$CFLAGS
+     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
+     cat > conftest.$ac_ext <<EOF
+-#line 13120 "configure"
++#line 13060 "configure"
+ #include "confdefs.h"
+ #include <stdio.h>
+ int main() {
+ printf("Hello World\n");
+ ; return 0; }
+ EOF
+-if { (eval echo configure:13127: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:13067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   _results=yes
+ else
+@@ -13201,18 +13141,18 @@ fi
+ if test "$COMPILE_ENVIRONMENT"; then
+ if test -n "$MOZ_OPTIMIZE"; then
+     echo $ac_n "checking for valid optimization flags""... $ac_c" 1>&6
+-echo "configure:13205: checking for valid optimization flags" >&5
++echo "configure:13145: checking for valid optimization flags" >&5
+     _SAVE_CFLAGS=$CFLAGS
+     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
+     cat > conftest.$ac_ext <<EOF
+-#line 13209 "configure"
++#line 13149 "configure"
+ #include "confdefs.h"
+ #include <stdio.h>
+ int main() {
+ printf("Hello World\n");
+ ; return 0; }
+ EOF
+-if { (eval echo configure:13216: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:13156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   _results=yes
+ else
+@@ -13364,7 +13304,7 @@ EOF
+     fi
+   else
+     echo $ac_n "checking size of int *""... $ac_c" 1>&6
+-echo "configure:13368: checking size of int *" >&5
++echo "configure:13308: checking size of int *" >&5
+ if eval "test \"`echo '$''{'ac_cv_sizeof_int_p'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -13372,7 +13312,7 @@ else
+   ac_cv_sizeof_int_p=4
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 13376 "configure"
++#line 13316 "configure"
+ #include "confdefs.h"
+ #include <stdio.h>
+ int main()
+@@ -13383,7 +13323,7 @@ int main()
+   return(0);
+ }
+ EOF
+-if { (eval echo configure:13387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:13327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+   ac_cv_sizeof_int_p=`cat conftestval`
+ else
+@@ -13687,12 +13627,12 @@ fi
+ if test -n "$MOZ_VALGRIND"; then
+        ac_safe=`echo "valgrind/valgrind.h" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for valgrind/valgrind.h""... $ac_c" 1>&6
+-echo "configure:13691: checking for valgrind/valgrind.h" >&5
++echo "configure:13631: checking for valgrind/valgrind.h" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 13696 "configure"
++#line 13636 "configure"
+ #include "confdefs.h"
+ 
+ #include <valgrind/valgrind.h>
+@@ -13700,7 +13640,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:13704: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:13644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -13973,7 +13913,7 @@ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:13977: checking for $ac_word" >&5
++echo "configure:13917: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_CCACHE'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -14099,12 +14039,12 @@ cross_compiling=$ac_cv_prog_cxx_cross
+     for ac_func in __cxa_demangle
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:14103: checking for $ac_func" >&5
++echo "configure:14043: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 14108 "configure"
++#line 14048 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+     which can conflict with char $ac_func(); below.  */
+@@ -14130,7 +14070,7 @@ $ac_func();
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:14134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:14074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -14184,12 +14124,12 @@ fi
+ if test -z "$SKIP_LIBRARY_CHECKS"; then
+        ac_safe=`echo "unwind.h" | sed 'y%./+-%__p_%'`
+   echo $ac_n "checking for unwind.h""... $ac_c" 1>&6
+-echo "configure:14188: checking for unwind.h" >&5
++echo "configure:14128: checking for unwind.h" >&5
+   if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+    cat > conftest.$ac_ext <<EOF
+-#line 14193 "configure"
++#line 14133 "configure"
+ #include "confdefs.h"
+ 
+ #include <unwind.h>
+@@ -14197,7 +14137,7 @@ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:14201: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:14141: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   eval "ac_cv_header_$ac_safe=yes"
+ else
+@@ -14214,12 +14154,12 @@ fi
+     for ac_func in _Unwind_Backtrace
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:14218: checking for $ac_func" >&5
++echo "configure:14158: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 14223 "configure"
++#line 14163 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+     which can conflict with char $ac_func(); below.  */
+@@ -14242,7 +14182,7 @@ $ac_func();
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:14246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:14186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -14334,7 +14274,7 @@ if test -z "$SKIP_COMPILER_CHECKS"; then
+ # Compiler Options
+ 
+ echo $ac_n "checking for -pipe support""... $ac_c" 1>&6
+-echo "configure:14338: checking for -pipe support" >&5
++echo "configure:14278: checking for -pipe support" >&5
+ if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
+         CFLAGS="$CFLAGS -pipe"
+     CXXFLAGS="$CXXFLAGS -pipe"
+@@ -14348,16 +14288,16 @@ _SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
+ 
+ echo $ac_n "checking whether C compiler supports -fprofile-generate""... $ac_c" 1>&6
+-echo "configure:14352: checking whether C compiler supports -fprofile-generate" >&5
++echo "configure:14292: checking whether C compiler supports -fprofile-generate" >&5
+ cat > conftest.$ac_ext <<EOF
+-#line 14354 "configure"
++#line 14294 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ return 0;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:14361: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:14301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+    PROFILE_GEN_CFLAGS="-fprofile-generate"
+                  result="yes" 
+@@ -14421,16 +14361,16 @@ if test "$_PEDANTIC"; then
+     _SAVE_CXXFLAGS=$CXXFLAGS
+     CXXFLAGS="$CXXFLAGS -pedantic ${_WARNINGS_CXXFLAGS} -Wno-long-long"
+     echo $ac_n "checking whether C++ compiler has -pedantic long long bug""... $ac_c" 1>&6
+-echo "configure:14425: checking whether C++ compiler has -pedantic long long bug" >&5
++echo "configure:14365: checking whether C++ compiler has -pedantic long long bug" >&5
+     cat > conftest.$ac_ext <<EOF
+-#line 14427 "configure"
++#line 14367 "configure"
+ #include "confdefs.h"
+ $configure_static_assert_macros
+ int main() {
+ CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)
+ ; return 0; }
+ EOF
+-if { (eval echo configure:14434: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:14374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   result="no"
+ else
+@@ -14457,12 +14397,12 @@ fi
+ _SAVE_CXXFLAGS=$CXXFLAGS
+ CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
+ echo $ac_n "checking for correct overload resolution with const and templates""... $ac_c" 1>&6
+-echo "configure:14461: checking for correct overload resolution with const and templates" >&5
++echo "configure:14401: checking for correct overload resolution with const and templates" >&5
+ if eval "test \"`echo '$''{'ac_nscap_nonconst_opeq_bug'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 14466 "configure"
++#line 14406 "configure"
+ #include "confdefs.h"
+ 
+                       template <class T>
+@@ -14492,7 +14432,7 @@ int main() {
+                     
+ ; return 0; }
+ EOF
+-if { (eval echo configure:14496: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:14436: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_nscap_nonconst_opeq_bug="no"
+ else
+@@ -14518,19 +14458,19 @@ EOF
+ fi
+ 
+ echo $ac_n "checking for tm_zone tm_gmtoff in struct tm""... $ac_c" 1>&6
+-echo "configure:14522: checking for tm_zone tm_gmtoff in struct tm" >&5
++echo "configure:14462: checking for tm_zone tm_gmtoff in struct tm" >&5
+ if eval "test \"`echo '$''{'ac_cv_struct_tm_zone_tm_gmtoff'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 14527 "configure"
++#line 14467 "configure"
+ #include "confdefs.h"
+ #include <time.h>
+ int main() {
+ struct tm tm; tm.tm_zone = 0; tm.tm_gmtoff = 1;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:14534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:14474: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   ac_cv_struct_tm_zone_tm_gmtoff="yes"
+ else
+@@ -14572,18 +14512,18 @@ cross_compiling=$ac_cv_prog_cc_cross
+ 
+ 
+ echo $ac_n "checking what kind of list files are supported by the linker""... $ac_c" 1>&6
+-echo "configure:14576: checking what kind of list files are supported by the linker" >&5
++echo "configure:14516: checking what kind of list files are supported by the linker" >&5
+ if eval "test \"`echo '$''{'EXPAND_LIBS_LIST_STYLE'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   echo "int main() {return 0;}" > conftest.${ac_ext}
+-     if { ac_try='${CC-cc} -o conftest.${OBJ_SUFFIX} -c $CFLAGS $CPPFLAGS conftest.${ac_ext} 1>&5'; { (eval echo configure:14581: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.${OBJ_SUFFIX}; then
++     if { ac_try='${CC-cc} -o conftest.${OBJ_SUFFIX} -c $CFLAGS $CPPFLAGS conftest.${ac_ext} 1>&5'; { (eval echo configure:14521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.${OBJ_SUFFIX}; then
+          echo "INPUT(conftest.${OBJ_SUFFIX})" > conftest.list
+-         if { ac_try='${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.list $LIBS 1>&5'; { (eval echo configure:14583: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest${ac_exeext}; then
++         if { ac_try='${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.list $LIBS 1>&5'; { (eval echo configure:14523: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest${ac_exeext}; then
+              EXPAND_LIBS_LIST_STYLE=linkerscript
+          else
+              echo "conftest.${OBJ_SUFFIX}" > conftest.list
+-             if { ac_try='${CC-cc} -o conftest${ac_exeext} $LDFLAGS @conftest.list $LIBS 1>&5'; { (eval echo configure:14587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest${ac_exeext}; then
++             if { ac_try='${CC-cc} -o conftest${ac_exeext} $LDFLAGS @conftest.list $LIBS 1>&5'; { (eval echo configure:14527: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest${ac_exeext}; then
+                  EXPAND_LIBS_LIST_STYLE=list
+              else
+                  EXPAND_LIBS_LIST_STYLE=none
+@@ -14603,7 +14543,7 @@ LIBS_DESC_SUFFIX=desc
+ 
+ if test "$GCC_USE_GNU_LD"; then
+     echo $ac_n "checking what kind of ordering can be done with the linker""... $ac_c" 1>&6
+-echo "configure:14607: checking what kind of ordering can be done with the linker" >&5
++echo "configure:14547: checking what kind of ordering can be done with the linker" >&5
+ if eval "test \"`echo '$''{'EXPAND_LIBS_ORDER_STYLE'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -14611,14 +14551,14 @@ else
+          _SAVE_LDFLAGS="$LDFLAGS"
+          LDFLAGS="${LDFLAGS} -Wl,--section-ordering-file,conftest.order"
+          cat > conftest.$ac_ext <<EOF
+-#line 14615 "configure"
++#line 14555 "configure"
+ #include "confdefs.h"
+ 
+ int main() {
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:14622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:14562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   EXPAND_LIBS_ORDER_STYLE=section-ordering-file
+ else
+@@ -14630,7 +14570,7 @@ fi
+ rm -f conftest*
+          LDFLAGS="$_SAVE_LDFLAGS"
+          if test -z "$EXPAND_LIBS_ORDER_STYLE"; then
+-             if { ac_try='${CC-cc} ${DSO_LDOPTS} ${LDFLAGS} -o ${DLL_PREFIX}conftest${DLL_SUFFIX} -Wl'; { (eval echo configure:14634: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
++             if { ac_try='${CC-cc} ${DSO_LDOPTS} ${LDFLAGS} -o ${DLL_PREFIX}conftest${DLL_SUFFIX} -Wl'; { (eval echo configure:14574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+                  EXPAND_LIBS_ORDER_STYLE=linkerscript
+              else
+                  EXPAND_LIBS_ORDER_STYLE=none
+@@ -14741,7 +14681,7 @@ esac
+ if test -z "$SKIP_LIBRARY_CHECKS" -a -z "$NO_EDITLINE"; then
+   if test -n "$JS_WANT_READLINE"; then
+     echo $ac_n "checking for readline in -lreadline""... $ac_c" 1>&6
+-echo "configure:14745: checking for readline in -lreadline" >&5
++echo "configure:14685: checking for readline in -lreadline" >&5
+ ac_lib_var=`echo readline'_'readline | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+@@ -14749,7 +14689,7 @@ else
+   ac_save_LIBS="$LIBS"
+ LIBS="-lreadline  $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 14753 "configure"
++#line 14693 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error.  */
+ /* We use char because int might match the return type of a gcc2
+@@ -14760,7 +14700,7 @@ int main() {
+ readline()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:14764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:14704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -14990,9 +14930,9 @@ EOF
+ 
+ 
+ echo $ac_n "checking for posix_fallocate""... $ac_c" 1>&6
+-echo "configure:14994: checking for posix_fallocate" >&5
++echo "configure:14934: checking for posix_fallocate" >&5
+ cat > conftest.$ac_ext <<EOF
+-#line 14996 "configure"
++#line 14936 "configure"
+ #include "confdefs.h"
+ #define _XOPEN_SOURCE 600
+   #include <fcntl.h>
+@@ -15000,7 +14940,7 @@ int main() {
+ posix_fallocate(0, 0, 0);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:15004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:14944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   ac_cv___posix_fallocate=true
+ else
+@@ -15029,7 +14969,7 @@ if test "$MOZ_X11"; then
+                 _SAVE_CFLAGS=$CFLAGS
+     CFLAGS="$CFLAGS $XCFLAGS"
+     cat > conftest.$ac_ext <<EOF
+-#line 15033 "configure"
++#line 14973 "configure"
+ #include "confdefs.h"
+ 
+         #include <stdio.h>
+@@ -15047,7 +14987,7 @@ int main() {
+     
+ ; return 0; }
+ EOF
+-if { (eval echo configure:15051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:14991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   :
+ else
+   echo "configure: failed program was:" >&5
+@@ -15162,12 +15102,12 @@ fi
+ for ac_func in setlocale
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:15166: checking for $ac_func" >&5
++echo "configure:15106: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 15171 "configure"
++#line 15111 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+     which can conflict with char $ac_func(); below.  */
+@@ -15190,7 +15130,7 @@ $ac_func();
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:15194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:15134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -15220,12 +15160,12 @@ done
+ for ac_func in localeconv
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:15224: checking for $ac_func" >&5
++echo "configure:15164: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 15229 "configure"
++#line 15169 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+     which can conflict with char $ac_func(); below.  */
+@@ -15248,7 +15188,7 @@ $ac_func();
+ 
+ ; return 0; }
+ EOF
+-if { (eval echo configure:15252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:15192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+   rm -rf conftest*
+   eval "ac_cv_func_$ac_func=yes"
+ else
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-Move-JS_BYTES_PER_WORD-out-of-config.h.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-Move-JS_BYTES_PER_WORD-out-of-config.h.patch
new file mode 100644
index 0000000..6aeb2f6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-Move-JS_BYTES_PER_WORD-out-of-config.h.patch
@@ -0,0 +1,75 @@
+From d4a15ad82292ff6d772dcc631df98754d20be31b Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@verbum.org>
+Date: Tue, 18 Mar 2014 11:46:05 -0400
+Subject: [PATCH 2/5] Move JS_BYTES_PER_WORD out of config.h
+
+Instead define it in terms of the already extant GNU C extension
+__SIZEOF_POINTER__.  This avoids multiarch conflicts when 32 and 64
+bit packages of js are co-installed.
+---
+
+Upstream-status: Pending
+
+ js/src/configure.in   |  9 ---------
+ js/src/js-config.h.in |  1 -
+ js/src/jstypes.h      | 12 ++++++++++++
+ 3 files changed, 12 insertions(+), 10 deletions(-)
+
+diff --git a/js/src/configure.in b/js/src/configure.in
+index 15605b2..64c7606 100644
+--- a/js/src/configure.in
++++ b/js/src/configure.in
+@@ -2345,15 +2345,6 @@ else
+   AC_MSG_RESULT(no)
+ fi
+ 
+-MOZ_SIZE_OF_TYPE(JS_BYTES_PER_WORD, void*, 4 8)
+-if test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "4"; then
+-  AC_DEFINE(JS_BITS_PER_WORD_LOG2, 5)
+-elif test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "8"; then
+-  AC_DEFINE(JS_BITS_PER_WORD_LOG2, 6)
+-else
+-  AC_MSG_ERROR([Unexpected JS_BYTES_PER_WORD])
+-fi
+-
+ MOZ_ALIGN_OF_TYPE(JS_ALIGN_OF_POINTER, void*, 2 4 8 16)
+ MOZ_SIZE_OF_TYPE(JS_BYTES_PER_DOUBLE, double, 6 8 10 12 14)
+ 
+diff --git a/js/src/js-config.h.in b/js/src/js-config.h.in
+index 6889e00..4775420 100644
+--- a/js/src/js-config.h.in
++++ b/js/src/js-config.h.in
+@@ -56,7 +56,6 @@
+ #undef JS_INT32_TYPE
+ #undef JS_INT64_TYPE
+ #undef JS_INTPTR_TYPE
+-#undef JS_BYTES_PER_WORD
+ 
+ /* Some mozilla code uses JS-friend APIs that depend on JS_METHODJIT being
+    correct. */
+diff --git a/js/src/jstypes.h b/js/src/jstypes.h
+index d0cf183..3e7928f 100644
+--- a/js/src/jstypes.h
++++ b/js/src/jstypes.h
+@@ -24,6 +24,18 @@
+ #include "mozilla/Util.h"
+ 
+ #include "js-config.h"
++#ifndef JS_BYTES_PER_WORD
++#define JS_BYTES_PER_WORD __SIZEOF_POINTER__
++#endif
++#ifndef JS_BITS_PER_WORD_LOG2
++#if JS_BYTES_PER_WORD == 8
++#define JS_BITS_PER_WORD_LOG2 6
++#elif JS_BYTES_PER_WORD == 4
++#define JS_BITS_PER_WORD_LOG2 5
++#else
++#error Unhandled JS_BYTES_PER_WORD
++#endif 
++#endif
+ 
+ /***********************************************************************
+ ** MACROS:      JS_EXTERN_API
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-Add-AArch64-support.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-Add-AArch64-support.patch
new file mode 100644
index 0000000..6e72429
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-Add-AArch64-support.patch
@@ -0,0 +1,76 @@
+From 15e710e331d36eb279852b5cd1ba37a9a6005217 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen.kooi@linaro.org>
+Date: Mon, 2 Mar 2015 19:08:22 +0800
+Subject: [PATCH 3/5] Add AArch64 support
+
+---
+Upstream-status: Pending
+
+ js/src/assembler/jit/ExecutableAllocator.h | 6 ++++++
+ js/src/assembler/wtf/Platform.h            | 4 ++++
+ js/src/configure.in                        | 4 ++++
+ mfbt/double-conversion/utils.h             | 1 +
+ 4 files changed, 15 insertions(+)
+
+diff --git a/js/src/assembler/jit/ExecutableAllocator.h b/js/src/assembler/jit/ExecutableAllocator.h
+index c071c33..90764c3 100644
+--- a/js/src/assembler/jit/ExecutableAllocator.h
++++ b/js/src/assembler/jit/ExecutableAllocator.h
+@@ -382,6 +382,12 @@ public:
+     {
+         reprotectRegion(start, size, Executable);
+     }
++#elif WTF_CPU_AARCH64 && WTF_PLATFORM_LINUX
++    static void cacheFlush(void* code, size_t size)
++    {
++        intptr_t end = reinterpret_cast<intptr_t>(code) + size;
++        __builtin___clear_cache(reinterpret_cast<char*>(code), reinterpret_cast<char*>(end));
++    }
+ #else
+     static void makeWritable(void*, size_t) {}
+     static void makeExecutable(void*, size_t) {}
+diff --git a/js/src/assembler/wtf/Platform.h b/js/src/assembler/wtf/Platform.h
+index 0c84896..e8763a7 100644
+--- a/js/src/assembler/wtf/Platform.h
++++ b/js/src/assembler/wtf/Platform.h
+@@ -325,6 +325,10 @@
+ #define WTF_THUMB_ARCH_VERSION 0
+ #endif
+ 
++/* CPU(AArch64) - 64-bit ARM */
++#if defined(__aarch64__)
++#define WTF_CPU_AARCH64 1
++#endif
+ 
+ /* WTF_CPU_ARMV5_OR_LOWER - ARM instruction set v5 or earlier */
+ /* On ARMv5 and below the natural alignment is required. 
+diff --git a/js/src/configure.in b/js/src/configure.in
+index 64c7606..0673aca 100644
+--- a/js/src/configure.in
++++ b/js/src/configure.in
+@@ -1121,6 +1121,10 @@ arm*)
+     CPU_ARCH=arm
+     ;;
+ 
++aarch64)
++    CPU_ARCH=aarch64
++    ;;
++
+ mips|mipsel)
+     CPU_ARCH="mips"
+     ;;
+diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h
+index 0eec2d9..fe26dab 100644
+--- a/mfbt/double-conversion/utils.h
++++ b/mfbt/double-conversion/utils.h
+@@ -58,6 +58,7 @@
+     defined(__mips__) || defined(__powerpc__) || \
+     defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
+     defined(__SH4__) || defined(__alpha__) || \
++    defined(__aarch64__) || \
+     defined(_MIPS_ARCH_MIPS32R2)
+ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
+ #elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-mozbug746112-no-decommit-on-large-pages.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-mozbug746112-no-decommit-on-large-pages.patch
new file mode 100644
index 0000000..8bd35d4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-mozbug746112-no-decommit-on-large-pages.patch
@@ -0,0 +1,103 @@
+From 0128c5a9eeee0d3fc0deb9129dd20eb79338c8f4 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen.kooi@linaro.org>
+Date: Mon, 2 Mar 2015 19:08:59 +0800
+Subject: [PATCH 4/5] mozbug746112-no-decommit-on-large-pages
+
+---
+Upstream-status: Pending
+
+ js/src/gc/Heap.h | 15 ++++++++++-----
+ js/src/jsgc.cpp  | 15 ++++++++++++---
+ 2 files changed, 22 insertions(+), 8 deletions(-)
+
+diff --git a/js/src/gc/Heap.h b/js/src/gc/Heap.h
+index b8f8c78..1cfd269 100644
+--- a/js/src/gc/Heap.h
++++ b/js/src/gc/Heap.h
+@@ -103,26 +103,31 @@ struct Cell
+ };
+ 
+ /*
+- * Page size is 4096 by default, except for SPARC, where it is 8192.
++ * Page size must be static to support our arena pointer optimizations, so we
++ * are forced to support each platform with non-4096 pages as a special case.
++ * Note: The freelist supports a maximum arena shift of 15.
+  * Note: Do not use JS_CPU_SPARC here, this header is used outside JS.
+  * Bug 692267: Move page size definition to gc/Memory.h and include it
+  *             directly once jsgc.h is no longer an installed header.
+  */
+ #if defined(SOLARIS) && (defined(__sparc) || defined(__sparcv9))
+ const size_t PageShift = 13;
++const size_t ArenaShift = PageShift;
++#elif defined(__powerpc__)
++const size_t PageShift = 16;
++const size_t ArenaShift = 12;
+ #else
+ const size_t PageShift = 12;
++const size_t ArenaShift = PageShift;
+ #endif
+ const size_t PageSize = size_t(1) << PageShift;
++const size_t ArenaSize = size_t(1) << ArenaShift;
++const size_t ArenaMask = ArenaSize - 1;
+ 
+ const size_t ChunkShift = 20;
+ const size_t ChunkSize = size_t(1) << ChunkShift;
+ const size_t ChunkMask = ChunkSize - 1;
+ 
+-const size_t ArenaShift = PageShift;
+-const size_t ArenaSize = PageSize;
+-const size_t ArenaMask = ArenaSize - 1;
+-
+ /*
+  * This is the maximum number of arenas we allow in the FreeCommitted state
+  * before we trigger a GC_SHRINK to release free arenas to the OS.
+diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp
+index b3caf05..a258d2d 100644
+--- a/js/src/jsgc.cpp
++++ b/js/src/jsgc.cpp
+@@ -251,6 +251,13 @@ static const int BackgroundPhaseLength[] = {
+     sizeof(BackgroundPhaseStrings) / sizeof(AllocKind)
+ };
+ 
++/* Unused memory decommiting requires the arena size match the page size. */
++static bool
++DecommitEnabled()
++{
++    return PageSize == ArenaSize;
++}
++
+ #ifdef DEBUG
+ void
+ ArenaHeader::checkSynchronizedWithFreeList() const
+@@ -742,7 +749,8 @@ Chunk::fetchNextDecommittedArena()
+     decommittedArenas.unset(offset);
+ 
+     Arena *arena = &arenas[offset];
+-    MarkPagesInUse(arena, ArenaSize);
++    if (DecommitEnabled())
++        MarkPagesInUse(arena, ArenaSize);
+     arena->aheader.setAsNotAllocated();
+ 
+     return &arena->aheader;
+@@ -2731,7 +2739,7 @@ DecommitArenasFromAvailableList(JSRuntime *rt, Chunk **availableListHeadp)
+                 chunk->removeFromAvailableList();
+ 
+             size_t arenaIndex = Chunk::arenaIndex(aheader->arenaAddress());
+-            bool ok;
++            bool ok = true;
+             {
+                 /*
+                  * If the main thread waits for the decommit to finish, skip
+@@ -2741,7 +2749,8 @@ DecommitArenasFromAvailableList(JSRuntime *rt, Chunk **availableListHeadp)
+                 Maybe<AutoUnlockGC> maybeUnlock;
+                 if (!rt->isHeapBusy())
+                     maybeUnlock.construct(rt);
+-                ok = MarkPagesUnused(aheader->getArena(), ArenaSize);
++                if (DecommitEnabled())
++                    ok = MarkPagesUnused(aheader->getArena(), ArenaSize);
+             }
+ 
+             if (ok) {
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-aarch64-64k-page.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-aarch64-64k-page.patch
new file mode 100644
index 0000000..bc99ecc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-aarch64-64k-page.patch
@@ -0,0 +1,44 @@
+From 9c42920c2b635a399bd1f93833efdeb1696f17ee Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen.kooi@linaro.org>
+Date: Mon, 2 Mar 2015 19:09:57 +0800
+Subject: [PATCH 5/5] aarch64-64k-page
+
+---
+Upstream-status: Pending
+
+ js/src/gc/Heap.h     | 2 +-
+ js/src/gc/Memory.cpp | 3 +++
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/js/src/gc/Heap.h b/js/src/gc/Heap.h
+index 1cfd269..f4dbcda 100644
+--- a/js/src/gc/Heap.h
++++ b/js/src/gc/Heap.h
+@@ -113,7 +113,7 @@ struct Cell
+ #if defined(SOLARIS) && (defined(__sparc) || defined(__sparcv9))
+ const size_t PageShift = 13;
+ const size_t ArenaShift = PageShift;
+-#elif defined(__powerpc__)
++#elif defined(__powerpc__) || defined(__aarch64__)
+ const size_t PageShift = 16;
+ const size_t ArenaShift = 12;
+ #else
+diff --git a/js/src/gc/Memory.cpp b/js/src/gc/Memory.cpp
+index 5b386a2..e5ad018 100644
+--- a/js/src/gc/Memory.cpp
++++ b/js/src/gc/Memory.cpp
+@@ -302,8 +302,11 @@ GetPageFaultCount()
+ void
+ InitMemorySubsystem()
+ {
++    /* aarch64 may have 64KB or 4KB pages */
++#ifndef __aarch64__
+     if (size_t(sysconf(_SC_PAGESIZE)) != PageSize)
+         MOZ_CRASH();
++#endif
+ }
+ 
+ void *
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0010-fix-cross-compilation-on-i586-targets.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0010-fix-cross-compilation-on-i586-targets.patch
new file mode 100644
index 0000000..6432e1f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0010-fix-cross-compilation-on-i586-targets.patch
@@ -0,0 +1,46 @@
+From a452138a1dd274bfad381a701729783360dc86fb Mon Sep 17 00:00:00 2001
+From: Maciej Borzecki <maciej.borzecki@open-rnd.pl>
+Date: Tue, 5 Jan 2016 22:04:17 +0100
+Subject: [PATCH] fix cross compilation on i586 targets
+
+Remove offending -Wl,-rpath-link that may cause host libraries to be picked
+during linking. The patch applies a fix to configure.in. So as not to
+regenerate configure, similar fix is applied there.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Maciej Borzecki <maciej.borzecki@open-rnd.pl>
+---
+ js/src/configure    | 2 +-
+ js/src/configure.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/js/src/configure b/js/src/configure
+index d019b0fdba44233596541de94307010d85a8e32e..5aa40f757a3dbb7d6887175046f44212c15c2eac 100755
+--- a/js/src/configure
++++ b/js/src/configure
+@@ -5555,7 +5555,7 @@ TARGET_MD_ARCH=unix
+ DIRENT_INO=d_ino
+ MOZ_USER_DIR=".mozilla"
+ 
+-MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
++MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin'
+ 
+ MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
+ 
+diff --git a/js/src/configure.in b/js/src/configure.in
+index 0673aca12f6d83035549ade2a4a83906bf91f0f0..39b22724f9535ac1a6dba04658c91e4ef667fc47 100644
+--- a/js/src/configure.in
++++ b/js/src/configure.in
+@@ -919,7 +919,7 @@ TARGET_MD_ARCH=unix
+ DIRENT_INO=d_ino
+ MOZ_USER_DIR=".mozilla"
+ 
+-MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
++MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin'
+ 
+ MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
+ 
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix-the-compile-error-of-powerpc64.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix-the-compile-error-of-powerpc64.patch
new file mode 100644
index 0000000..43c4590
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix-the-compile-error-of-powerpc64.patch
@@ -0,0 +1,18 @@
+fix the compile error of powerpc64
+ 
+Upstream-status: Accepted
+
+ fix the following error
+ |error: 'jsuword' does not name a type
+
+
+--- a/js/src/jsval.hold	2015-04-24 01:15:06.692970731 -0500
++++ b/js/src/jsval.h	2015-04-24 01:15:41.792969478 -0500
+@@ -304,7 +304,6 @@
+             int32_t        i32;
+             uint32_t       u32;
+             JSWhyMagic     why;
+-            jsuword        word;
+         } payload;
+     } s;
+     double asDouble;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix_milestone_compile_issue.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix_milestone_compile_issue.patch
new file mode 100644
index 0000000..abde01b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix_milestone_compile_issue.patch
@@ -0,0 +1,20 @@
+fix the compile error do to perl update
+
+Upstream-status: Inappropriate
+
+
+Signed-of-by: Armin Kuster <akuster808@gmail.com>
+
+Index: src/config/milestone.pl
+===================================================================
+--- src.orig/config/milestone.pl
++++ src/config/milestone.pl
+@@ -55,7 +55,7 @@ $MILESTONE_FILE  = "$TOPSRCDIR/config/mi
+ #
+ my $milestone = Moz::Milestone::getOfficialMilestone($MILESTONE_FILE);
+ 
+-if (defined(@TEMPLATE_FILE)) {
++if (@TEMPLATE_FILE) {
+   my $TFILE;
+ 
+   foreach $TFILE (@TEMPLATE_FILE) {
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_17.0.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_17.0.0.bb
new file mode 100644
index 0000000..02d5694
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_17.0.0.bb
@@ -0,0 +1,73 @@
+SUMMARY = "SpiderMonkey is Mozilla's JavaScript engine written in C/C++"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://../../LICENSE;md5=815ca599c9df247a0c7f619bab123dad"
+
+SRC_URI = " \
+    http://ftp.mozilla.org/pub/mozilla.org/js/${BPN}${PV}.tar.gz \
+    file://0001-mozjs17.0.0-fix-the-compile-bug-of-powerpc.patch \
+    file://0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch \
+    file://0002-Move-JS_BYTES_PER_WORD-out-of-config.h.patch;patchdir=../../ \
+    file://0003-Add-AArch64-support.patch;patchdir=../../ \
+    file://0004-mozbug746112-no-decommit-on-large-pages.patch;patchdir=../../ \
+    file://0005-aarch64-64k-page.patch;patchdir=../../ \
+    file://0001-regenerate-configure.patch;patchdir=../../ \ 
+    file://fix-the-compile-error-of-powerpc64.patch;patchdir=../../ \
+    file://fix_milestone_compile_issue.patch \
+    file://0010-fix-cross-compilation-on-i586-targets.patch;patchdir=../../ \
+    file://0001-add-support-for-big-endian-32bit-ARM.patch;patchdir=../../ \
+  "
+
+SRC_URI[md5sum] = "20b6f8f1140ef6e47daa3b16965c9202"
+SRC_URI[sha256sum] = "321e964fe9386785d3bf80870640f2fa1c683e32fe988eeb201b04471c172fba"
+
+S = "${WORKDIR}/${BPN}${PV}/js/src"
+
+inherit autotools pkgconfig perlnative pythonnative
+
+DEPENDS += "nspr zlib"
+
+# nspr's package-config is ignored so set libs manually
+EXTRA_OECONF = " \
+    --target=${TARGET_SYS} \
+    --host=${BUILD_SYS} \
+    --build=${BUILD_SYS} \
+    --prefix=${prefix} \
+    --libdir=${libdir} \
+    --with-nspr-libs='-lplds4 -lplc4 -lnspr4' \
+    --enable-threadsafe \
+    --disable-static \
+"
+EXTRA_OECONF_append_armv4 += " \
+    --disable-methodjit \
+"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR},--without-x,virtual/libx11"
+
+# mozjs requires autoreconf 2.13
+do_configure() {
+    ( cd ${S} 
+      gnu-configize --force
+      mv config.guess config.sub build/autoconf )
+    ${S}/configure ${EXTRA_OECONF}
+}
+
+# patch.bbclass will try to apply the patches already present and fail, so clean them out
+do_unpack() {
+    tar -xvf ${DL_DIR}/mozjs17.0.0.tar.gz -C ${WORKDIR}/
+    rm -rf ${WORKDIR}/${BPN}${PV}/patches
+}
+
+
+PACKAGES =+ "lib${PN}"
+FILES_lib${PN} += "${libdir}/lib*.so"
+FILES_${PN}-dev += "${bindir}/js17-config"
+
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:2172: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r2,r1,LSR#20'
+#| {standard input}:2173: Error: unshifted register required -- `bic r2,r2,#(1<<11)'
+#| {standard input}:2174: Error: unshifted register required -- `orr r1,r1,#(1<<20)'
+#| {standard input}:2176: Error: instruction not supported in Thumb16 mode -- `subs r2,r2,#0x300'
+#| {standard input}:2178: Error: instruction not supported in Thumb16 mode -- `subs r5,r2,#52'
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/nana/nana/change-mandir-to-DESTDIR.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/nana/nana/change-mandir-to-DESTDIR.patch
new file mode 100644
index 0000000..653a7e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/nana/nana/change-mandir-to-DESTDIR.patch
@@ -0,0 +1,40 @@
+From 7b04c4873c0a4510bdaf9145bf01ca34b3549fdb Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Thu, 4 Dec 2014 03:50:19 +0900
+Subject: [PATCH 1/2] change mandir to DESTDIR
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ man/Makefile.am | 2 +-
+ man/Makefile.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/man/Makefile.am b/man/Makefile.am
+index 80d24d8..944bc57 100644
+--- a/man/Makefile.am
++++ b/man/Makefile.am
+@@ -16,5 +16,5 @@ install-data-local:
+ 	@sect=1;				\
+ 	inst=`echo "nana" | sed '$(transform)'`.1; \
+ 	echo installing nana.1 as $(mandir)/man$$sect/$$inst; \
+-	$(INSTALL_DATA) $(srcdir)/nana.1 $(mandir)/man$$sect/$$inst
++	$(INSTALL_DATA) $(srcdir)/nana.1 $(DESTDIR)$(mandir)/man$$sect/$$inst
+ 
+diff --git a/man/Makefile.in b/man/Makefile.in
+index 6008b20..64bb84c 100644
+--- a/man/Makefile.in
++++ b/man/Makefile.in
+@@ -274,7 +274,7 @@ install-data-local:
+ 	@sect=1;				\
+ 	inst=`echo "nana" | sed '$(transform)'`.1; \
+ 	echo installing nana.1 as $(mandir)/man$$sect/$$inst; \
+-	$(INSTALL_DATA) $(srcdir)/nana.1 $(mandir)/man$$sect/$$inst
++	$(INSTALL_DATA) $(srcdir)/nana.1 $(DESTDIR)$(mandir)/man$$sect/$$inst
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/nana/nana/modify-acinclude.m4-and-configure.in.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/nana/nana/modify-acinclude.m4-and-configure.in.patch
new file mode 100644
index 0000000..aeb2546
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/nana/nana/modify-acinclude.m4-and-configure.in.patch
@@ -0,0 +1,137 @@
+From 679e33bfe74d713240fdd930602b993b937dce39 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 23 Jan 2015 03:30:47 +0900
+Subject: [PATCH] modify acinclude.m4 and configure.in
+
+this patch is from Debian to fix build errors.
+"acinclude.m4:34: error: automatic de-ANSI-fication
+support has been removed"
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ acinclude.m4 | 79 ------------------------------------------------------------
+ configure.in | 12 +++++++++
+ 2 files changed, 12 insertions(+), 79 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index e9e5500..d467fb5 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -30,82 +30,3 @@ AC_SUBST($1)
+ ## ------------------------------- ##
+ ## Check for function prototypes.  ##
+ ## ------------------------------- ##
+-
+-AC_DEFUN(fp_C_PROTOTYPES,
+-[AC_REQUIRE([AM_PROG_CC_STDC])
+-AC_MSG_CHECKING([for function prototypes])
+-if test "$ac_cv_prog_cc_stdc" != no; then
+-  AC_MSG_RESULT(yes)
+-  AC_DEFINE(PROTOTYPES)
+-  U= ANSI2KNR=
+-else
+-  AC_MSG_RESULT(no)
+-  U=_ ANSI2KNR=./ansi2knr
+-fi
+-AC_SUBST(U)dnl
+-AC_SUBST(ANSI2KNR)dnl
+-])
+-
+-## ----------------------------------------- ##
+-## ANSIfy the C compiler whenever possible.  ##
+-## ----------------------------------------- ##
+-
+-# @defmac AC_PROG_CC_STDC
+-# @maindex PROG_CC_STDC
+-# @ovindex CC
+-# If the C compiler in not in ANSI C mode by default, try to add an option
+-# to output variable @code{CC} to make it so.  This macro tries various
+-# options that select ANSI C on some system or another.  It considers the
+-# compiler to be in ANSI C mode if it defines @code{__STDC__} to 1 and
+-# handles function prototypes correctly.
+-#
+-# If you use this macro, you should check after calling it whether the C
+-# compiler has been set to accept ANSI C; if not, the shell variable
+-# @code{ac_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
+-# code in ANSI C, you can make an un-ANSIfied copy of it by using the
+-# program @code{ansi2knr}, which comes with Ghostscript.
+-# @end defmac
+-
+-AC_DEFUN(fp_PROG_CC_STDC,
+-[AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
+-AC_CACHE_VAL(ac_cv_prog_cc_stdc,
+-[ac_cv_prog_cc_stdc=no
+-ac_save_CFLAGS="$CFLAGS"
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX			-qlanglvl=ansi
+-# Ultrix and OSF/1	-std1
+-# HP-UX			-Aa -D_HPUX_SOURCE
+-# SVR4			-Xc
+-for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" -Xc
+-do
+-  CFLAGS="$ac_save_CFLAGS $ac_arg"
+-  AC_TRY_COMPILE(
+-[#if !defined(__STDC__) || __STDC__ != 1
+-choke me
+-#endif
+-], [int test (int i, double x);
+-struct s1 {int (*f) (int a);};
+-struct s2 {int (*f) (double a);};],
+-[ac_cv_prog_cc_stdc="$ac_arg"; break])
+-done
+-CFLAGS="$ac_save_CFLAGS"
+-])
+-AC_MSG_RESULT($ac_cv_prog_cc_stdc)
+-case "x$ac_cv_prog_cc_stdc" in
+-  x|xno) ;;
+-  *) CC="$CC $ac_cv_prog_cc_stdc" ;;
+-esac
+-])
+-
+-## --------------------------------------------------------- ##
+-## Use AC_PROG_INSTALL, supplementing it with INSTALL_SCRIPT ##
+-## substitution.                                             ##
+-## --------------------------------------------------------- ##
+-
+-AC_DEFUN(fp_PROG_INSTALL,
+-[AC_PROG_INSTALL
+-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL} -m 755'
+-AC_SUBST(INSTALL_SCRIPT)dnl
+-])
+-
+diff --git a/configure.in b/configure.in
+index 6b25ed5..a6a7f5b 100644
+--- a/configure.in
++++ b/configure.in
+@@ -103,6 +103,12 @@ nana_DEFINE(DI_MAKE_VALID_BREAKPOINT,(exprn),
+   sparc-*-*|i?86-*-*)
+     DI_MAKE_VALID_BREAKPOINT='asm("nop")'
+     ;;
++  arm*-*-*|frv-*-*|mips*-*-*)
++    DI_MAKE_VALID_BREAKPOINT='asm("nop")'
++    ;;
++  sh*-*-*)
++    DI_MAKE_VALID_BREAKPOINT='asm("nop\n\tnop\n\t")'
++    ;;
+   esac
+ ])
+ 
+@@ -113,6 +119,12 @@ nana_DEFINE(DL_MAKE_VALID_BREAKPOINT,(),
+   sparc-*-*|i?86-*-*)
+     DL_MAKE_VALID_BREAKPOINT='asm("nop")'
+     ;;
++  arm*-*-*|frv-*-*|mips*-*-*)
++    DL_MAKE_VALID_BREAKPOINT='asm("nop")'
++    ;;
++  sh*-*-*)
++    DL_MAKE_VALID_BREAKPOINT='asm("nop\n\tnop\n\t")'
++    ;;
+   esac
+ ])
+ 
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/nana/nana_2.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/nana/nana_2.5.bb
new file mode 100644
index 0000000..19a90ff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/nana/nana_2.5.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Support for assertion checking and logging in GNU C/C++"
+DESCRIPTION = "GNU Nana is a free library providing improved support for assertion\
+checking (as in assert.h) and logging (printf style debugging) in \
+GNU C and C++."
+SECTION = "Development/Languages/C and C++"
+
+SRC_URI = "http://download.savannah.gnu.org/releases/${PN}/${BP}.tar.gz \
+    file://change-mandir-to-DESTDIR.patch \
+    file://modify-acinclude.m4-and-configure.in.patch \
+"
+SRC_URI[md5sum] = "66c88aa0ad095b2e67673773135475f1"
+SRC_URI[sha256sum] = "fd1819ffea94b209513959447e4802afe2719600e7d161cd78b265a42812affa"
+
+LICENSE = "BSD-2-Clause"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=16aa57f3b7fdda870cee597275bd5d11"
+
+inherit autotools-brokensep pkgconfig
+
+EXTRA_OEMAKE = "DESTDIR=${D}"
+
+do_configure_prepend_class-nativesdk() {
+    sed -i -e 's:@CPP@:\$\{CXX\} \$\{CXXFLAGS\} \-E:g' ${S}/src/nana.in
+    sed -i -e 's:@CC@:\$\{CC\} \$\{CFLAGS\} \-E:g' ${S}/src/nana-clg.in
+    sed -i -e 's:@CXX@::g' ${S}/src/nana-c++lg.in
+    sed -i -e 's:@GDB@:\$\{GDB\}:g' ${S}/src/nana-run.in
+}
+
+do_install_prepend() {
+    install -d ${D}${mandir}/man1
+    install -d ${D}${mandir}/man3
+    install -d ${D}${datadir}/info
+}
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/nicstat/nicstat_1.95.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/nicstat/nicstat_1.95.bb
new file mode 100644
index 0000000..5126a31
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/nicstat/nicstat_1.95.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "nicstat is a Solaris and Linux command-line that prints out network \
+statistics for all network interface cards (NICs), including packets, kilobytes \
+per second, average packet sizes and more."
+HOMEPAGE = "http://nicstat.sourceforge.net"
+LICENSE = "Artistic-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b4a94da2a1f918b217ef5156634fc9e0"
+
+SRC_URI = "http://softlayer-sng.dl.sourceforge.net/project/${BPN}/${BP}.tar.gz"
+SRC_URI[md5sum] = "9a0b87bbc670c1e738e5b40c7afd184d"
+SRC_URI[sha256sum] = "c4cc33f8838f4523f27c3d7584eedbe59f4c587f0821612f5ac2201adc18b367"
+
+do_compile() {
+    ${CC} ${CFLAGS} ${LDFLAGS} -o nicstat nicstat.c
+}
+do_install() {
+    install -d ${D}/${bindir}/
+    install -d ${D}/${mandir}/
+    install -m 0755 ${S}/nicstat ${D}${bindir}/
+    install -m 0644 ${S}/nicstat.1 ${D}/${mandir}/
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-networking/0001-fix-lib64-can-not-be-shiped-in-64bit-target.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-networking/0001-fix-lib64-can-not-be-shiped-in-64bit-target.patch
new file mode 100644
index 0000000..c238200
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-networking/0001-fix-lib64-can-not-be-shiped-in-64bit-target.patch
@@ -0,0 +1,31 @@
+From 336bb5a031077461ec6b2e5438738bf100f0dd2f Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Mon, 3 Aug 2015 02:37:46 +0900
+Subject: [PATCH] fix lib64 can not be shiped in 64bit target
+
+Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+---
+ CMakeLists.txt | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 1ba3cd3..2411745 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -35,13 +35,6 @@ if (DEBUG)
+     add_definitions("-DDEBUG_ENABLED")
+ endif (DEBUG)
+ 
+-# Set LIB_SUFFIX to 64 on 64bit architectures
+-if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+-    set(LIB_SUFFIX "")
+-else(CMAKE_SIZEOF_VOID_P EQUAL 4)
+-    SET(LIB_SUFFIX 64)
+-endif(CMAKE_SIZEOF_VOID_P EQUAL 4)
+-
+ # Find OpenLMIMacros when installed in other prefix than /usr (e.g. /usr/local)
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_INSTALL_PREFIX})
+ include(OpenLMIMacros RESULT_VARIABLE LMIMACROS)
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-networking_0.3.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-networking_0.3.1.bb
new file mode 100644
index 0000000..5442910
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-networking_0.3.1.bb
@@ -0,0 +1,30 @@
+SUMMARY = "CIM providers for network management"
+DESCRIPTION = "\
+openlmi-networking is set of CMPI providers for network management using \
+Common Information Model (CIM)."
+HOMEPAGE = "http://www.openlmi.org/"
+LICENSE = "LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7c13b3376cea0ce68d2d2da0a1b3a72c"
+SECTION = "System/Management"
+DEPENDS = "openlmi-providers konkretcmpi sblim-cmpi-devel cim-schema-exper networkmanager dbus libcheck glib-2.0"
+
+SRC_URI = "http://fedorahosted.org/released/${BPN}/${BP}.tar.gz \
+           file://0001-fix-lib64-can-not-be-shiped-in-64bit-target.patch \
+          "
+SRC_URI[md5sum] = "f20de8c76fb6a80001b14c1eb035953e"
+SRC_URI[sha256sum] = "578eaa5c65fe924b5d7aeb635509dd46443166cd6a88b019bc42646e3518a460"
+
+inherit cmake
+
+EXTRA_OECMAKE = "${@base_conditional("libdir", "/usr/lib64", "-DLIB_SUFFIX=64", "", d)} \
+                 ${@base_conditional("libdir", "/usr/lib32", "-DLIB_SUFFIX=32", "", d)} \
+                "
+
+
+do_configure_prepend() {
+     export CMAKE_INSTALL_DATDIR="${STAGING_DATADIR}"
+}
+
+
+FILES_${PN} =+ "${libdir}/cmpi/libcmpiLMI_Networking.so ${prefix}/libexec*"
+FILES_${PN}-dbg =+ "${libdir}/cmpi/.debug*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-providers/0001-fix-error.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-providers/0001-fix-error.patch
new file mode 100644
index 0000000..4bcd1c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-providers/0001-fix-error.patch
@@ -0,0 +1,26 @@
+From 764171866b84e0198b67538f63022abde3e628ad Mon Sep 17 00:00:00 2001
+From: Qian Lei <qianl.fnst@cn.fujitsu.com>
+Date: Fri, 16 Jan 2015 14:15:25 +0800
+Subject: [PATCH] fix error
+
+Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
+---
+ cmake/modules/OpenLMIMacros.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/modules/OpenLMIMacros.cmake b/cmake/modules/OpenLMIMacros.cmake
+index d55f983..dbc32ec 100644
+--- a/cmake/modules/OpenLMIMacros.cmake
++++ b/cmake/modules/OpenLMIMacros.cmake
+@@ -89,7 +89,7 @@ macro(konkretcmpi_generate MOFS CIM_PROVIDERS CIM_HEADERS CIM_CLASSES)
+         endforeach(CLASS ${CIM_CLASS_NAMES})
+ 
+         # Generate headers for CIM classes
+-        set(ENV{KONKRET_SCHEMA_DIR} "/usr/share/mof/cim-current")
++        set(ENV{KONKRET_SCHEMA_DIR} "$ENV{CMAKE_INSTALL_DATDIR}/mof/cim-current")
+         execute_process(COMMAND ${KONKRETCMPI_KONKRET}
+                                 ${KONKRET_MOF_FILES}
+                                 ${GENERATE_PROVIDERS}
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-providers/0001-fix-lib64-can-not-be-shiped-in-64bit-target.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-providers/0001-fix-lib64-can-not-be-shiped-in-64bit-target.patch
new file mode 100644
index 0000000..9c8ebe4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-providers/0001-fix-lib64-can-not-be-shiped-in-64bit-target.patch
@@ -0,0 +1,31 @@
+From 7cecfa95f033b33a1c3260c214b2d0e5e81b4fd3 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Mon, 3 Aug 2015 02:05:56 +0900
+Subject: [PATCH] fix lib64 can not be shiped in 64bit target
+
+Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+---
+ CMakeLists.txt | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 48ae206..3ead9c6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -21,13 +21,6 @@ else(HAS_STACK_PROTECTOR_STRONG)
+     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
+ endif()
+ 
+-# Set LIB_SUFFIX to 64 on 64bit architectures
+-if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+-    set(LIB_SUFFIX "")
+-else(CMAKE_SIZEOF_VOID_P EQUAL 4)
+-    SET(LIB_SUFFIX 64)
+-endif(CMAKE_SIZEOF_VOID_P EQUAL 4)
+-
+ if(NOT SYSCONF_INSTALL_DIR)
+     set(SYSCONF_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/etc)
+ endif(NOT SYSCONF_INSTALL_DIR)
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-providers_0.6.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-providers_0.6.0.bb
new file mode 100644
index 0000000..6048888
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-providers_0.6.0.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Set of basic CIM providers"
+DESCRIPTION = "\
+openlmi-providers is set of (usually) small CMPI providers (agents) for \
+basic monitoring and management of host system using Common Information \
+Model (CIM)."
+HOMEPAGE = "http://www.openlmi.org/"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7c13b3376cea0ce68d2d2da0a1b3a72c"
+SECTION = "System/Management"
+DEPENDS = "konkretcmpi-native konkretcmpi sblim-sfcb sblim-cmpi-devel cim-schema-exper lmsensors libuser swig swig-native dbus udev systemd-systemctl-native pciutils"
+
+SRC_URI = "http://fedorahosted.org/released/${BPN}/${BP}.tar.gz \
+           file://0001-fix-error.patch \
+           file://0001-fix-lib64-can-not-be-shiped-in-64bit-target.patch \
+          "
+SRC_URI[md5sum] = "5904f23cf494946237cfbbdbe644a3cd"
+SRC_URI[sha256sum] = "e2b2fbeaec45a83905d0da3b87da83904d9cd94c1b86312f844587b3fff11f56"
+
+inherit cmake
+LDFLAGS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
+EXTRA_OECMAKE = " \
+                 -DWITH-DEVASSISTANT=OFF \
+                 -DWITH-JOURNALD=OFF \
+                 -DWITH-SERVICE=OFF \
+                 -DWITH-SERVICE-LEGACY=ON \
+                 -DWITH-ACCOUNT=OFF \
+                 -DWITH-PCP=OFF \
+                 -DWITH-REALMD=OFF \
+                 -DWITH-FAN=OFF \
+                 -DWITH-LOCALE=OFF \
+                 -DWITH-INDSENDER=OFF \
+                 -DWITH-JOBMANAGER=OFF \
+                 -DWITH-SSSD=OFF \
+                 -DWITH-SELINUX=OFF \
+                 -DWITH-SOFTWARE-DBUS=ON \
+                 ${@base_conditional("libdir", "/usr/lib64", "-DLIB_SUFFIX=64", "", d)} \
+                 ${@base_conditional("libdir", "/usr/lib32", "-DLIB_SUFFIX=32", "", d)} \
+               "
+
+do_configure_prepend() {
+    export CMAKE_INSTALL_DATDIR="${STAGING_DATADIR}"
+}
+
+do_install_append() {
+    if [ -d ${D}${prefix}${sysconfidr} ]; then
+        mv ${D}${prefix}${sysconfdir} ${D}${sysconfdir}
+    fi
+}
+
+FILES_${PN} =+ "${libdir}/cmpi/libcmpiLMI* ${prefix}/libexec*"
+FILES_${PN}-dev =+ "${datadir}/cmake*"
+FILES_${PN}-dbg =+ "${libdir}/cmpi/.debug*"
+
+RDEPENDS_${PN} = "python"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-storage_0.8.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-storage_0.8.1.bb
new file mode 100644
index 0000000..015d803
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-storage_0.8.1.bb
@@ -0,0 +1,32 @@
+SUMMARY = "CIM providers for storage management"
+DESCRIPTION = "\
+The openlmi-storage package contains CMPI providers for management of storage \
+using Common Information Managemen (CIM) protocol. \
+\
+The providers can be registered in any CMPI-aware CIMOM, both OpenPegasus and \
+SFCB were tested."
+HOMEPAGE = "http://www.openlmi.org/"
+LICENSE = "LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+SECTION = "System/Management"
+DEPENDS = "openlmi-providers pywbem cmpi-bindings"
+RDEPENDS_${PN} += "bash"
+
+SRC_URI = "http://fedorahosted.org/released/${BPN}/${BP}.tar.gz"
+SRC_URI[md5sum] = "898cf0d8c03b8ad6b45d65f335ddee0d"
+SRC_URI[sha256sum] = "4a1ba9957750f94ea58a89cea28985564f38d7cc9aa00fcae20c51e7b32bd0a8"
+
+inherit setuptools
+
+do_install_append() {
+    install -m 755 -d ${D}${datadir}/${BPN}
+    install -m 644 ${S}/mof/* ${D}${datadir}/${BPN}/
+
+    install -m 755 -d ${D}${sysconfdir}/openlmi/storage
+    install -m 644 storage.conf ${D}${sysconfdir}/openlmi/storage/storage.conf
+
+    install -m 755 -d ${D}${libexecdir}/pegasus
+    install -m 755 pycmpiLMI_Storage-cimprovagt ${D}${libexecdir}/pegasus/
+}
+
+FILES_${PN} =+ "${sysconfdir}/openlmi/storage/storage.conf ${datadir}/${BPN}/*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
new file mode 100644
index 0000000..b23869d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Set of CLI tools for Openlmi providers"
+DESCRIPTION = "openlmi-tools is a set of command line tools for Openlmi providers."
+HOMEPAGE = "http://www.openlmi.org/"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
+SECTION = "System/Management"
+
+inherit setuptools
+
+DEPENDS = "python-native pywbem-native python-m2crypto pywbem"
+
+SRC_URI = "http://fedorahosted.org/released/${BPN}/${BP}.tar.gz \
+          "
+SRC_URI[md5sum] = "e156246cb7b49753db82f4ddf7f03e50"
+SRC_URI[sha256sum] = "292b8f5f2250655a4add8183c529b73358bc980bd4f23cfa484a940953fce9e4"
+
+do_compile_prepend() {
+    cd cli
+    sed 's/@@VERSION@@/$(VERSION)/g' setup.py.skel >setup.py
+}
+do_install_prepend() {
+    cd cli
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/libssl-is-required-if-eventint-supported.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/libssl-is-required-if-eventint-supported.patch
new file mode 100644
index 0000000..bd540e3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/libssl-is-required-if-eventint-supported.patch
@@ -0,0 +1,17 @@
+libssl is required by wsman_client_transport if ENABLE_EVENTING_SUPPORT enabled.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp openwsman-2.4.12.orig/src/lib/CMakeLists.txt openwsman-2.4.12/src/lib/CMakeLists.txt
+--- openwsman-2.4.12.orig/src/lib/CMakeLists.txt	2014-10-28 23:04:47.000000000 +0800
++++ openwsman-2.4.12/src/lib/CMakeLists.txt	2014-12-31 11:09:20.340428523 +0800
+@@ -56,6 +56,9 @@ TARGET_LINK_LIBRARIES( ${WSMAN_CLIENT_TR
+ SET_TARGET_PROPERTIES( ${WSMAN_CLIENT_TRANSPORT_PKG} PROPERTIES VERSION 1.0.0 SOVERSION 1)
+ INSTALL(TARGETS ${WSMAN_CLIENT_TRANSPORT_PKG} DESTINATION ${LIB_INSTALL_DIR})
+ 
++IF( ENABLE_EVENTING_SUPPORT )
++TARGET_LINK_LIBRARIES( ${WSMAN_CLIENT_TRANSPORT_PKG} ${OPENSSL_LIBRARIES} )
++ENDIF( ENABLE_EVENTING_SUPPORT )
+ 
+ ############### wsman_client ###############
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/openwsmand.service b/import-layers/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/openwsmand.service
new file mode 100644
index 0000000..154f3cd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/openwsmand.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Openwsman WS-Management Service
+After=syslog.target
+
+[Service]
+Type=forking
+ExecStart=@SBINDIR@/openwsmand
+ExecStartPre=@SYSCONFDIR@/openwsman/owsmangencert.sh
+PIDFile=@LOCALSTATEDIR@/run/wsmand.pid
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.2.bb
new file mode 100644
index 0000000..52b271c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.2.bb
@@ -0,0 +1,67 @@
+SUMMARY = "Opensource Implementation of WS-Management"
+DESCRIPTION = "Openwsman is a project intended to provide an open-source \
+implementation of the Web Services Management specipication \
+(WS-Management) and to expose system management information on the \
+Linux operating system using the WS-Management protocol. WS-Management \
+is based on a suite of web services specifications and usage \
+requirements that exposes a set of operations focused on and covers \
+all system management aspects. \
+Openwsman Server and service libraries"
+HOMEPAGE = "http://www.openwsman.org/"
+SECTION = "Applications/System"
+
+DEPENDS = "curl libxml2 openssl libpam"
+
+SRCREV = "ed7a119e036c53078d70fd85936d94dc9b9b98be"
+PV = "2.6.2"
+
+SRC_URI = "git://github.com/Openwsman/openwsman.git;protocol=http \
+           file://libssl-is-required-if-eventint-supported.patch \
+           file://openwsmand.service"
+
+S = "${WORKDIR}/git"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d4f53d4c6cf73b9d43186ce3be6dd0ba"
+
+inherit systemd cmake pkgconfig pythonnative perlnative
+
+SYSTEMD_SERVICE_${PN} = "openwsmand.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+LDFLAGS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', " -fuse-ld=bfd ", '', d)}"
+
+EXTRA_OECMAKE = "-DBUILD_BINDINGS=NO \
+                 -DBUILD_LIBCIM=NO \
+                 -DBUILD_PERL=YES \
+                 -DCMAKE_INSTALL_PREFIX=${prefix} \
+                 -DLIB=${baselib} \
+                "
+
+do_configure_prepend() {
+    export HOST_SYS=${HOST_SYS}
+    export BUILD_SYS=${BUILD_SYS}
+    export STAGING_INCDIR=${STAGING_INCDIR}
+    export STAGING_LIBDIR=${STAGING_LIBDIR}
+}
+
+do_install_append() {
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 755 ${B}/etc/init/openwsmand.sh ${D}/${sysconfdir}/init.d/openwsmand
+    ln -sf ${sysconfdir}/init.d/openwsmand ${D}/${sbindir}/rcopenwsmand
+    chmod 755 ${D}/${sysconfdir}/openwsman/owsmangencert.sh
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}/${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/openwsmand.service ${D}/${systemd_unitdir}/system
+
+        sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/openwsmand.service
+        sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/openwsmand.service
+        sed -i -e 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${systemd_unitdir}/system/openwsmand.service
+    fi
+}
+
+FILES_${PN}-dbg += "${libdir}/openwsman/plugins/.debug/ \
+                    ${libdir}/openwsman/authenticators/.debug/ \
+                   "
+
+INSANE_SKIP_${PN} = "dev-so"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch
new file mode 100644
index 0000000..a3b02c5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/p7zip/files/do_not_override_compiler_and_do_not_strip.patch
@@ -0,0 +1,31 @@
+do not override compiler and do not strip
+
+The default makefile sets the compiler to g++ or gcc. This leads to a wrong architecture when cross-compiling.
+Remove the hardcoded compiler and just append the flags to CXX and CC.
+
+Upstream-Status: Pending
+Signed-off-by: Raphael Freudiger <raphael.freudiger@siemens.com>
+Reviewed-By: Pascal Bach <pascal.bach@siemens.com>
+
+Index: p7zip_9.20.1/makefile.machine
+=====================================================================
+--- p7zip_9.20.1/makefile.machine	2011-03-13 12:54:57.000000000 +0100
++++ p7zip_9.20.1/makefile.machine	2015-02-03 08:39:44.427696944 +0100
+@@ -4,14 +4,14 @@
+ 
+ OPTFLAGS=-O
+ 
+-ALLFLAGS=${OPTFLAGS} -pipe -s \
++ALLFLAGS=${OPTFLAGS} -pipe \
+     	-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
+ 	-DNDEBUG -D_REENTRANT -DENV_UNIX \
+ 	-D_7ZIP_LARGE_PAGES \
+ 	$(LOCAL_FLAGS)
+ 
+-CXX=g++ $(ALLFLAGS)
+-CC=gcc $(ALLFLAGS)
++CXX+=$(ALLFLAGS)
++CC+=$(ALLFLAGS)
+ CC_SHARED=-fPIC
+ LINK_SHARED=-fPIC -shared
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_9.20.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_9.20.1.bb
new file mode 100644
index 0000000..b89fc42
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_9.20.1.bb
@@ -0,0 +1,35 @@
+SUMMARY = "7-zip is a commandline utility handling 7z archives."
+HOMEPAGE = "http://www.7-zip.org/"
+LICENSE = "LGPL-2.1+ & unRAR"
+LIC_FILES_CHKSUM = "file://DOCS/copying.txt;md5=ecfc54c9e37b63ac58900061ce2eab5a \
+                    file://DOCS/unRarLicense.txt;md5=9c87ddde469ef94aed153b0951d088de"
+
+SRC_URI = "http://downloads.sourceforge.net/p7zip/p7zip/${PV}/p7zip_${PV}_src_all.tar.bz2 \
+          file://do_not_override_compiler_and_do_not_strip.patch"
+SRC_URI[md5sum] = "bd6caaea567dc0d995c990c5cc883c89"
+SRC_URI[sha256sum] = "49557e7ffca08100f9fc687f4dfc5aea703ca207640c76d9dee7b66f03cb4782"
+
+S = "${WORKDIR}/${BPN}_${PV}"
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 ${S}/bin/* ${D}${bindir}
+}
+
+# all3: to build bin/7za, bin/7z (with its plugins), bin/7zr and bin/7zCon.sfx
+EXTRA_OEMAKE_class-native = "all3"
+
+do_install_class-native() {
+    install -d ${D}${bindir}
+    install -d ${D}${bindir}/Codecs
+    install -m 0755 ${S}/bin/7* ${D}${bindir}
+    install -m 0755 ${S}/bin/Codecs/* ${D}${bindir}/Codecs
+
+    # Create a shell script wrapper to execute next to 7z.so
+    mv ${D}${bindir}/7z ${D}${bindir}/7z.bin
+    echo "#! /bin/sh" > ${D}${bindir}/7z
+    echo "exec ${D}${bindir}/7z.bin \"\$@\"" >> ${D}${bindir}/7z
+    chmod 0755 ${D}${bindir}/7z
+}
+
+BBCLASSEXTEND += "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/files/50-org.freedesktop.NetworkManager.rules b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/files/50-org.freedesktop.NetworkManager.rules
new file mode 100644
index 0000000..4b50cf8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/files/50-org.freedesktop.NetworkManager.rules
@@ -0,0 +1,8 @@
+/* give group 'network' rights to change settings */
+/* taken from https://wiki.archlinux.org/index.php/NetworkManager#Set_up_PolicyKit_permissions */
+
+polkit.addRule(function(action, subject) {
+  if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("network")) {
+    return polkit.Result.YES;
+  }
+});
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/files/50-org.freedesktop.timedate1.rules b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/files/50-org.freedesktop.timedate1.rules
new file mode 100644
index 0000000..95b0e0f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/files/50-org.freedesktop.timedate1.rules
@@ -0,0 +1,8 @@
+/* give group 'datetime' rights to change settings */
+/* based upon http://lists.freedesktop.org/archives/systemd-devel/2013-March/009576.html */
+
+polkit.addRule(function(action, subject) {
+  if (action.id.indexOf("org.freedesktop.timedate1.") == 0 && subject.isInGroup("datetime")) {
+    return polkit.Result.YES;
+  }
+});
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/files/gtk-doc-check.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/files/gtk-doc-check.patch
new file mode 100644
index 0000000..4b6ad75
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/files/gtk-doc-check.patch
@@ -0,0 +1,12 @@
+--- polkit-gnome-0.105/configure.ac.org	2015-05-04 22:33:03.925977953 -0700
++++ polkit-gnome-0.105/configure.ac	2015-05-04 22:33:16.862288030 -0700
+@@ -120,6 +120,9 @@
+ # Check for required packages
+ # ***************************
+ 
++# check for gtk-doc
++GTK_DOC_CHECK([1.14],[--flavour no-tmpl])
++
+ POLKIT_AGENT_REQUIRED=0.97
+ POLKIT_GOBJECT_REQUIRED=0.97
+ GTK_REQUIRED=3.0.0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-gnome_0.105.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-gnome_0.105.bb
new file mode 100644
index 0000000..8e99731
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-gnome_0.105.bb
@@ -0,0 +1,26 @@
+SUMMARY = "GNOME Authentication Agent for PolicyKit"
+DESCRIPTION = "PolicyKit-gnome provides an Authentication Agent for PolicyKit that integrates well with the GNOME desktop environment"
+HOMEPAGE = "http://www.packagekit.org/"
+BUGTRACKER = "http://bugzilla.gnome.org/"
+DEPENDS = "polkit dbus-glib gconf gtk+ intltool-native gnome-common"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=74579fab173e4c5e12aac0cd83ee98ec \
+                    file://src/main.c;beginline=1;endline=20;md5=aba145d1802f2329ba561e3e48ecb795"
+
+SRC_URI = "https://download.gnome.org/sources/polkit-gnome/${PV}/polkit-gnome-${PV}.tar.xz \
+           file://gtk-doc-check.patch \
+"
+SRC_URI[md5sum] = "50ecad37c8342fb4a52f590db7530621"
+SRC_URI[sha256sum] = "1784494963b8bf9a00eedc6cd3a2868fb123b8a5e516e66c5eda48df17ab9369"
+
+EXTRA_OECONF = "\
+    --disable-static \
+"
+
+DEPENDS += "gtk+3"
+
+inherit autotools gtk-doc pkgconfig
+
+FILES_${PN} += " ${datadir}/dbus-1 \
+                 ${datadir}/PolicyKit \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule-datetime.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule-datetime.bb
new file mode 100644
index 0000000..eced4b6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule-datetime.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Create usergroup datetime. All members off this group are allowed set date/time/timezone via system dbus"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+require polkit-group-rule.inc
+
+SRC_URI = "file://50-org.freedesktop.timedate1.rules"
+
+do_install() {
+        install -m 0755 ${WORKDIR}/50-org.freedesktop.timedate1.rules ${D}${sysconfdir}/polkit-1/rules.d
+}
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "--system datetime"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule-network.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule-network.bb
new file mode 100644
index 0000000..551ed3e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule-network.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Create usergroup network. All members off this group are allowed to modify networkmanager settings"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+require polkit-group-rule.inc
+
+SRC_URI = "file://50-org.freedesktop.NetworkManager.rules"
+
+do_install() {
+        install -m 0755 ${WORKDIR}/50-org.freedesktop.NetworkManager.rules ${D}${sysconfdir}/polkit-1/rules.d
+}
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "--system network"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule.inc b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule.inc
new file mode 100644
index 0000000..b727d00
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule.inc
@@ -0,0 +1,10 @@
+# polkit must prepare polkid group
+DEPENDS += "polkit"
+
+inherit useradd
+
+do_install_prepend() {
+    install -m 700 -d ${D}${sysconfdir}/polkit-1/rules.d
+    chown polkitd:polkitd ${D}${sysconfdir}/polkit-1/rules.d
+}
+USERADD_PARAM_${PN}_prepend = "--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch
new file mode 100644
index 0000000..4e3af87
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch
@@ -0,0 +1,107 @@
+From 7d5e205aa58a10e7b1ccc2fa75b443508a5c3e18 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Jan 2016 04:31:59 +0000
+Subject: [PATCH] make netgroup support configurable
+
+Disable using innetgr and *netigrent function if not available
+
+These functions are not available on all libc implementations e.g. musl
+doesnt have them.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ configure.ac                                          | 2 +-
+ src/polkitbackend/polkitbackendinteractiveauthority.c | 6 +++++-
+ src/polkitbackend/polkitbackendjsauthority.c          | 5 ++---
+ 3 files changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 07982d1..21590b2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -158,7 +158,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"],
+ 	     [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
+ AC_SUBST(EXPAT_LIBS)
+ 
+-AC_CHECK_FUNCS(clearenv fdatasync)
++AC_CHECK_FUNCS(clearenv fdatasync getnetgrent innetgr)
+ 
+ if test "x$GCC" = "xyes"; then
+   LDFLAGS="-Wl,--as-needed $LDFLAGS"
+diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
+index 7019356..cf39d77 100644
+--- a/src/polkitbackend/polkitbackendinteractiveauthority.c
++++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
+@@ -2213,7 +2213,7 @@ get_users_in_group (PolkitIdentity                    *group,
+  out:
+   return ret;
+ }
+-
++#if defined HAVE_GETNETGRENT
+ static GList *
+ get_users_in_net_group (PolkitIdentity                    *group,
+                         gboolean                           include_root)
+@@ -2270,6 +2270,8 @@ get_users_in_net_group (PolkitIdentity                    *group,
+   return ret;
+ }
+ 
++#endif
++
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+ static void
+@@ -2355,10 +2357,12 @@ authentication_agent_initiate_challenge (AuthenticationAgent         *agent,
+         {
+           user_identities = g_list_concat (user_identities, get_users_in_group (identity, FALSE));
+         }
++#if defined HAVE_GETNETGRENT
+       else if (POLKIT_IS_UNIX_NETGROUP (identity))
+         {
+           user_identities =  g_list_concat (user_identities, get_users_in_net_group (identity, FALSE));
+         }
++#endif
+       else
+         {
+           g_warning ("Unsupported identity");
+diff --git a/src/polkitbackend/polkitbackendjsauthority.c b/src/polkitbackend/polkitbackendjsauthority.c
+index 097dcc5..e59b3f7 100644
+--- a/src/polkitbackend/polkitbackendjsauthority.c
++++ b/src/polkitbackend/polkitbackendjsauthority.c
+@@ -1498,7 +1498,6 @@ js_polkit_spawn (JSContext  *cx,
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+-
+ static JSBool
+ js_polkit_user_is_in_netgroup (JSContext  *cx,
+                                unsigned    argc,
+@@ -1518,6 +1517,7 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,
+   user = JS_EncodeString (cx, user_str);
+   netgroup = JS_EncodeString (cx, netgroup_str);
+ 
++#if defined HAVE_INNETGR
+   if (innetgr (netgroup,
+                NULL,  /* host */
+                user,
+@@ -1525,6 +1525,7 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,
+     {
+       is_in_netgroup =  JS_TRUE;
+     }
++#endif
+ 
+   JS_free (cx, netgroup);
+   JS_free (cx, user);
+@@ -1536,8 +1537,6 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,
+   return ret;
+ }
+ 
+-
+-
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+ typedef struct
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/polkit-1_pam.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/polkit-1_pam.patch
new file mode 100644
index 0000000..74647ef
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/polkit-1_pam.patch
@@ -0,0 +1,23 @@
+polkit: No system-auth in OE-Core, we can use common-* in place of it.
+
+Upstream-Status:Inappropriate [configuration]
+
+Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com>
+
+--- a/configure.ac	2011-03-04 02:26:20.000000000 +0800
++++ b/configure.ac.new	2011-07-18 10:14:12.516818852 +0800
+@@ -350,10 +350,10 @@
+     PAM_FILE_INCLUDE_PASSWORD=system
+     PAM_FILE_INCLUDE_SESSION=system
+ else
+-   PAM_FILE_INCLUDE_AUTH=system-auth
+-   PAM_FILE_INCLUDE_ACCOUNT=system-auth
+-   PAM_FILE_INCLUDE_PASSWORD=system-auth
+-   PAM_FILE_INCLUDE_SESSION=system-auth
++   PAM_FILE_INCLUDE_AUTH=common-auth
++   PAM_FILE_INCLUDE_ACCOUNT=common-account
++   PAM_FILE_INCLUDE_PASSWORD=common-password
++   PAM_FILE_INCLUDE_SESSION=common-session
+ fi
+ 
+ AC_SUBST(PAM_FILE_INCLUDE_AUTH)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.113.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.113.bb
new file mode 100644
index 0000000..fdd198a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.113.bb
@@ -0,0 +1,49 @@
+SUMMARY = "PolicyKit Authorization Framework"
+DESCRIPTION = "The polkit package is an application-level toolkit for defining and handling the policy that allows unprivileged processes to speak to privileged processes."
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/polkit"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=155db86cdbafa7532b41f390409283eb \
+                    file://src/polkit/polkit.h;beginline=1;endline=20;md5=0a8630b0133176d0504c87a0ded39db4"
+
+DEPENDS = "expat glib-2.0 intltool-native mozjs"
+
+inherit autotools gtk-doc pkgconfig useradd systemd gobject-introspection
+
+PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+                 ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','consolekit',d)}"
+
+PACKAGECONFIG[pam] = "--with-authfw=pam,--with-authfw=shadow,libpam,libpam"
+PACKAGECONFIG[systemd] = "--enable-libsystemd-login=yes --with-systemdsystemunitdir=${systemd_unitdir}/system/,--enable-libsystemd-login=no --with-systemdsystemunitdir=,systemd"
+# there is no --enable/--disable option for consolekit and it's not picked by shlibs, so add it to RDEPENDS
+PACKAGECONFIG[consolekit] = ",,,consolekit"
+
+PAM_SRC_URI = "file://polkit-1_pam.patch"
+SRC_URI = "http://www.freedesktop.org/software/polkit/releases/polkit-${PV}.tar.gz \
+           file://0001-make-netgroup-support-configurable.patch \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+"
+SRC_URI[md5sum] = "4b77776c9e4f897dcfe03b2c34198edf"
+SRC_URI[sha256sum] = "e1c095093c654951f78f8618d427faf91cf62abdefed98de40ff65eca6413c81"
+
+EXTRA_OECONF = "--with-os-type=moblin --disable-man-pages"
+
+do_compile_prepend () {
+	export GIR_EXTRA_LIBS_PATH="${B}/src/polkit/.libs"
+}
+
+PACKAGES =+ "${PN}-examples"
+
+FILES_${PN}_append = " \
+    ${libdir}/${BPN}-1 \
+    ${nonarch_libdir}/${BPN}-1 \
+    ${datadir}/dbus-1 \
+    ${datadir}/${BPN}-1 \
+"
+
+FILES_${PN}-examples = "${bindir}/*example*"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/${BPN}-1 polkitd"
+
+SYSTEMD_SERVICE_${PN} = "${BPN}.service"
+SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/pywbem/pywbem_0.8.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/pywbem/pywbem_0.8.0.bb
new file mode 100644
index 0000000..2f9a5bd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/pywbem/pywbem_0.8.0.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Python WBEM Client and Provider Interface"
+DESCRIPTION = "\
+A Python library for making CIM (Common Information Model) operations over \
+HTTP using the WBEM CIM-XML protocol. It is based on the idea that a good \
+WBEM client should be easy to use and not necessarily require a large amount \
+of programming knowledge. It is suitable for a large range of tasks from \
+simply poking around to writing web and GUI applications. \
+\
+WBEM, or Web Based Enterprise Management is a manageability protocol, like \
+SNMP, standardised by the Distributed Management Task Force (DMTF) available \
+at http://www.dmtf.org/standards/wbem. \
+\
+It also provides a Python provider interface, and is the fastest and easiest \
+way to write providers on the planet."
+HOMEPAGE = "http://pywbem.sf.net/"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://pywbem/LICENSE.txt;md5=fbc093901857fcd118f065f900982c24"
+SECTION = "Development/Libraries"
+DEPENDS = "python-m2crypto-native"
+SRC_URI = "http://jaist.dl.sourceforge.net/project/${BPN}/${BPN}/${BP}/${BP}-dev.r704.zip"
+SRC_URI[md5sum] = "84072451dcdd1aa9ee82363848faf7ad"
+SRC_URI[sha256sum] = "898035866d3cc741bbcd62c4ac26e633ad07b7c11d89db2472b9f923f3fd3ed8"
+
+S = "${WORKDIR}/${BP}-dev"
+
+inherit setuptools python-dir
+
+do_install_append() {
+    mv ${D}${bindir}/wbemcli.py ${D}${bindir}/pywbemcli
+    mv ${D}${bindir}/mof_compiler.py ${D}${bindir}/mofcomp
+
+    rm ${D}${libdir}/python2.7/site-packages/${BPN}/wbemcli.py*
+    rm ${D}${libdir}/python2.7/site-packages/${BPN}/mof_compiler.py*
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0001-rarpd.8-add-man-file.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0001-rarpd.8-add-man-file.patch
new file mode 100644
index 0000000..77c75b4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0001-rarpd.8-add-man-file.patch
@@ -0,0 +1,89 @@
+From d91161eb163c16408202a91b4325a3381ab33752 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 18 Nov 2014 17:55:31 +0900
+Subject: [PATCH 1/5] rarpd.8 : add man file
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ rarpd.8 | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 69 insertions(+)
+ create mode 100644 rarpd.8
+
+diff --git a/rarpd.8 b/rarpd.8
+new file mode 100644
+index 0000000..ce7bd70
+--- /dev/null
++++ b/rarpd.8
+@@ -0,0 +1,69 @@
++.TH RARP 8 "7 April 2000" "rarpd" "Linux Programmer's Manual"
++.SH NAME
++rarpd \- Reverse Address Resolution Protocol (RARP) daemon
++.SH SYNOPSIS
++.B "rarpd [-aAvde] [-b bootdir ] [ interface ]"
++.SH DESCRIPTION
++.B Rarpd
++is a daemon which responds to RARP requests.
++RARP is used by some machines at boot time to discover their IP address.
++They provide their Ethernet address and
++.B rarpd
++responds with their IP address if it finds it in the ethers database
++(either
++.I /etc/ethers
++file or NIS+ lookup) and using DNS lookup if ethers database
++contains a hostname and not an IP address.
++By default
++.B rarpd
++also checks if a bootable image with a name starting with the IP address
++in hexadecimal uppercase letters is present in the TFTP boot directory
++(usually
++.I /tftpboot
++) before it decides to respond to the RARP request.
++.SH OPTIONS
++.TP
++.B \-a
++Do not bind to the interface.
++.TP
++.B \-A
++Respond to ARP as well as RARP requests.
++.TP
++.B \-v
++Tell the user what is going on by being verbose.
++.TP
++.B \-d
++Debugging mode. Do not detach from the tty.
++.TP
++.B \-e
++Skip the check for bootable image in the TFTP boot directory. If not
++present, then even if the Ethernet address is present in
++the ethers database but the bootable image for the resolved IP does not exist,
++.B rarpd
++will not respond to the request.
++.TP
++.B "\-b bootdir"
++Use
++.I bootdir
++instead of the default
++.I /tftpboot
++as the TFTP boot directory for bootable image checks.
++.SH OBSOLETES
++This
++.B rarpd
++obsoletes kernel
++.B rarp
++daemon present in Linux kernels up to 2.2 which was controlled by the
++rarp(8) command.
++.SH FILES
++.I /etc/ethers,
++.br
++.I /etc/nsswitch.conf,
++.br
++.I /tftpboot
++.SH SEE ALSO
++ethers(5)
++.SH AUTHORS
++Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
++.br
++Jakub Jelinek, <jakub@redhat.com>
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0002-Makefile-modify-compile-parameters.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0002-Makefile-modify-compile-parameters.patch
new file mode 100644
index 0000000..0b3ebc4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0002-Makefile-modify-compile-parameters.patch
@@ -0,0 +1,26 @@
+From d23b13bd959204824070433d954c5dfbfc421bb7 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 18 Nov 2014 18:05:27 +0900
+Subject: [PATCH 2/5] Makefile : modify compile parameters
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 19966b4..86a8169 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ CC=gcc
+ CFLAGS=-O2 -Wall -g $(DEFINES)
+ 
+-OBJ=rarpd.o ethernet.o
++OBJ=rarpd.o
+ 
+ all: rarpd
+ 
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0003-rarpd.c-bug-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0003-rarpd.c-bug-fix.patch
new file mode 100644
index 0000000..7ce1279
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0003-rarpd.c-bug-fix.patch
@@ -0,0 +1,263 @@
+From b49c8e6e66801406520d1bff791c66dff7b1cddb Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 18 Nov 2014 18:10:20 +0900
+Subject: [PATCH 3/5] rarpd.c : bug fix
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ rarpd.c | 98 +++++++++++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 56 insertions(+), 42 deletions(-)
+
+diff --git a/rarpd.c b/rarpd.c
+index 335d2d2..d45300e 100644
+--- a/rarpd.c
++++ b/rarpd.c
+@@ -7,9 +7,11 @@
+  *		2 of the License, or (at your option) any later version.
+  *
+  * Authors:	Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
++ *		Jakub Jelinek, <jakub@redhat.com>
+  */
+ 
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <syslog.h>
+ #include <dirent.h>
+ #include <malloc.h>
+@@ -26,6 +28,8 @@
+ #include <net/if.h>
+ #include <net/if_arp.h>
+ #include <netinet/in.h>
++#include <netinet/ether.h>
++#include <asm/types.h>
+ #include <linux/if_packet.h>
+ #include <linux/filter.h>
+ 
+@@ -39,27 +43,26 @@ int only_ethers;
+ int all_ifaces;
+ int listen_arp;
+ char *ifname;
+-char *tftp_dir = "/etc/tftpboot";
++char *tftp_dir = "/tftpboot";
+ 
+-extern int ether_ntohost(char *name, unsigned char *ea);
+ void usage(void) __attribute__((noreturn));
+ 
+-struct iflink
++struct rarpiflink
+ {
+-	struct iflink	*next;
+-	int	       	index;
+-	int		hatype;
+-	unsigned char	lladdr[16];
+-	unsigned char	name[IFNAMSIZ];
+-	struct ifaddr 	*ifa_list;
++	struct rarpiflink	*next;
++	int	       		index;
++	int			hatype;
++	unsigned char		lladdr[16];
++	unsigned char		name[IFNAMSIZ];
++	struct rarpifaddr 	*ifa_list;
+ } *ifl_list;
+ 
+-struct ifaddr
++struct rarpifaddr
+ {
+-	struct ifaddr 	*next;
+-	__u32		prefix;
+-	__u32		mask;
+-	__u32		local;
++	struct rarpifaddr 	*next;
++	__u32			prefix;
++	__u32			mask;
++	__u32			local;
+ };
+ 
+ struct rarp_map
+@@ -87,8 +90,8 @@ void load_if()
+ {
+ 	int fd;
+ 	struct ifreq *ifrp, *ifend;
+-	struct iflink *ifl;
+-	struct ifaddr *ifa;
++	struct rarpiflink *ifl;
++	struct rarpifaddr *ifa;
+ 	struct ifconf ifc;
+ 	struct ifreq ibuf[256];
+ 
+@@ -144,7 +147,7 @@ void load_if()
+ 				continue;
+ 			}
+ 
+-			ifl = (struct iflink*)malloc(sizeof(*ifl));
++			ifl = (struct rarpiflink*)malloc(sizeof(*ifl));
+ 			if (ifl == NULL)
+ 				continue;
+ 			memset(ifl, 0, sizeof(*ifl));
+@@ -154,6 +157,7 @@ void load_if()
+ 			ifl->hatype = ifrp->ifr_hwaddr.sa_family;
+ 			memcpy(ifl->lladdr, ifrp->ifr_hwaddr.sa_data, 14);
+ 			strncpy(ifl->name, ifrp->ifr_name, IFNAMSIZ);
++			ifl->name[IFNAMSIZ-1] = 0;
+ 			p = strchr(ifl->name, ':');
+ 			if (p)
+ 				*p = 0;
+@@ -179,7 +183,7 @@ void load_if()
+ 		if (ifa == NULL) {
+ 			if (mask == 0 || prefix == 0)
+ 				continue;
+-			ifa = (struct ifaddr*)malloc(sizeof(*ifa));
++			ifa = (struct rarpifaddr*)malloc(sizeof(*ifa));
+ 			memset(ifa, 0, sizeof(*ifa));
+ 			ifa->local = addr;
+ 			ifa->prefix = prefix;
+@@ -207,6 +211,7 @@ void load_if()
+ 			}
+ 		}
+ 	}
++	close(fd);
+ }
+ 
+ void configure()
+@@ -225,20 +230,21 @@ int bootable(__u32 addr)
+ 	d = opendir(tftp_dir);
+ 	if (d == NULL) {
+ 		syslog(LOG_ERR, "opendir: %m");
+-		return 0;
++		goto done_bootable;
+ 	}
+ 	while ((dent = readdir(d)) != NULL) {
+ 		if (strncmp(dent->d_name, name, 8) == 0)
+ 			break;
+ 	}
++done_bootable:
+ 	closedir(d);
+ 	return dent != NULL;
+ }
+ 
+-struct ifaddr *select_ipaddr(int ifindex, __u32 *sel_addr, __u32 **alist)
++struct rarpifaddr *select_ipaddr(int ifindex, __u32 *sel_addr, __u32 **alist)
+ {
+-	struct iflink *ifl;
+-	struct ifaddr *ifa;
++	struct rarpiflink *ifl;
++	struct rarpifaddr *ifa;
+ 	int retry = 0;
+ 	int i;
+ 
+@@ -294,7 +300,7 @@ struct rarp_map *rarp_lookup(int ifindex, int hatype,
+ 
+ 	if (r == NULL) {
+ 		if (hatype == ARPHRD_ETHER && halen == 6) {
+-			struct ifaddr *ifa;
++			struct rarpifaddr *ifa;
+ 			struct hostent *hp;
+ 			char ename[256];
+ 			static struct rarp_map emap = {
+@@ -304,7 +310,7 @@ struct rarp_map *rarp_lookup(int ifindex, int hatype,
+ 				6,
+ 			};
+ 
+-			if (ether_ntohost(ename, lladdr) != 0 ||
++			if (ether_ntohost(ename, (struct ether_addr *)lladdr) != 0 ||
+ 			    (hp = gethostbyname(ename)) == NULL) {
+ 				if (verbose)
+ 					syslog(LOG_INFO, "not found in /etc/ethers");
+@@ -345,7 +351,7 @@ static int load_arp_bpflet(int fd)
+ 
+ int put_mylladdr(unsigned char **ptr_p, int ifindex, int alen)
+ {
+-	struct iflink *ifl;
++	struct rarpiflink *ifl;
+ 
+ 	for (ifl=ifl_list; ifl; ifl = ifl->next)
+ 		if (ifl->index == ifindex)
+@@ -362,8 +368,8 @@ int put_mylladdr(unsigned char **ptr_p, int ifindex, int alen)
+ int put_myipaddr(unsigned char **ptr_p, int ifindex, __u32 hisipaddr)
+ {
+ 	__u32 laddr = 0;
+-	struct iflink *ifl;
+-	struct ifaddr *ifa;
++	struct rarpiflink *ifl;
++	struct rarpifaddr *ifa;
+ 
+ 	for (ifl=ifl_list; ifl; ifl = ifl->next)
+ 		if (ifl->index == ifindex)
+@@ -388,7 +394,7 @@ void arp_advise(int ifindex, unsigned char *lladdr, int lllen, __u32 ipaddr)
+ 	int fd;
+ 	struct arpreq req;
+ 	struct sockaddr_in *sin;
+-	struct iflink *ifl;
++	struct rarpiflink *ifl;
+ 
+ 	for (ifl=ifl_list; ifl; ifl = ifl->next)
+ 		if (ifl->index == ifindex)
+@@ -421,6 +427,10 @@ void serve_it(int fd)
+ 	struct rarp_map *rmap;
+ 	unsigned char *ptr;
+ 	int n;
++	int i;
++	char tmpbuf[16*3];
++	char tmpname[IFNAMSIZ];
++	struct rarpiflink *ifl;
+ 
+ 	n = recvfrom(fd, buf, sizeof(buf), MSG_DONTWAIT, (struct sockaddr*)&sll, &sll_len);
+ 	if (n<0) {
+@@ -447,21 +457,23 @@ void serve_it(int fd)
+ 	if (a->ar_op != htons(ARPOP_RREQUEST))
+ 		return;
+ 
+-	if (verbose) {
+-		int i;
+-		char tmpbuf[16*3];
+-		char *ptr = tmpbuf;
+-		for (i=0; i<sll.sll_halen; i++) {
+-			if (i) {
+-				sprintf(ptr, ":%02x", sll.sll_addr[i]);
+-				ptr++;
+-			} else
+-				sprintf(ptr, "%02x", sll.sll_addr[i]);
+-			ptr += 2;
+-		}
+-		syslog(LOG_INFO, "RARP request from %s on if%d", tmpbuf, sll.sll_ifindex);
++	ptr = tmpbuf;
++        snprintf(tmpbuf, 2, "%02x", sll.sll_addr[0]);
++	for (ptr=tmpbuf+2, i=1; i<sll.sll_halen; i++) {
++		snprintf(ptr, 3, ":%02x", sll.sll_addr[i]);
++		ptr += 3;
+ 	}
+ 
++	for (ifl=ifl_list; ifl; ifl = ifl->next)
++		if (ifl->index == sll.sll_ifindex)
++			break;
++	if (ifl) {
++		strncpy(tmpname, ifl->name, IFNAMSIZ);
++		tmpname[IFNAMSIZ-1] = 0;
++	} else
++		sprintf(tmpname, "if%d", sll.sll_ifindex);
++	syslog(LOG_INFO, "RARP request from %s on %s", tmpbuf, tmpname);
++
+ 	/* Sanity checks */
+ 
+ 	/* 1. IP only -> pln==4 */
+@@ -526,6 +538,8 @@ void serve_it(int fd)
+ 	ptr += rmap->lladdr_len;
+ 	memcpy(ptr, &rmap->ipaddr, 4);
+ 	ptr += 4;
++	syslog(LOG_INFO, "RARP response to %s %s on %s", tmpbuf,
++	       inet_ntoa(*(struct in_addr *)&rmap->ipaddr), tmpname);
+ 
+ 	/* Update our ARP cache. Probably, this guy
+ 	   will not able to make ARP (if it is broken)
+@@ -613,7 +627,7 @@ int main(int argc, char **argv)
+         if (ifname) {
+ 		struct ifreq ifr;
+ 		memset(&ifr, 0, sizeof(ifr));
+-		strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
++		strncpy(ifr.ifr_name, ifname, IFNAMSIZ-1);
+ 		if (ioctl(pset[0].fd, SIOCGIFINDEX, &ifr)) {
+ 			perror("ioctl(SIOCGIFINDEX)");
+ 			usage();
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0004-rarpd.init-add-new-init-file.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0004-rarpd.init-add-new-init-file.patch
new file mode 100644
index 0000000..3ba11ff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0004-rarpd.init-add-new-init-file.patch
@@ -0,0 +1,116 @@
+From 0ef1a95b220c7e110da950e5cc544c50c25b1bc6 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 18 Nov 2014 18:11:56 +0900
+Subject: [PATCH 4/5] rarpd.init : add new init file
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ rarpd.init | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 96 insertions(+)
+ create mode 100644 rarpd.init
+
+diff --git a/rarpd.init b/rarpd.init
+new file mode 100644
+index 0000000..efcf825
+--- /dev/null
++++ b/rarpd.init
+@@ -0,0 +1,96 @@
++#!/bin/bash
++#
++#	/etc/init.d/rarpd
++#
++# Starts the rarpd daemon
++#
++# chkconfig: - 82 16
++# description: Server Reverse Address Resolution Protocol requests.
++# processname: rarpd
++
++### BEGIN INIT INFO
++# Provides: rarpd
++# Required-Start: $syslog $network
++# Required-Stop:  $syslog $network
++# Default-Start:
++# Default-Stop: 0 1 2 3 4 5 6
++# Short-Description: start and stop rarpd
++# Description: RARP (Reverse Address Resolution Protocol) is a protocol \
++#              which allows individual devices on an IP network to get \
++#              their own IP addresses from the RARP server. \
++### END INIT INFO
++
++# Source function library.
++. /etc/init.d/functions
++
++# Read the config file if exists
++if [ -f /etc/sysconfig/rarpd ]; then
++ . /etc/sysconfig/rarpd
++fi
++
++RETVAL=0
++prog="rarpd"
++
++
++start() {
++    #if these files don't exist rarpd can't work
++    test -x /usr/sbin/rarpd -a -f /etc/ethers || exit 6
++	# Check if rarpd is already running
++	#if [ ! -f /var/lock/subsys/rarpd ]; then
++    status rarpd;
++    if [ $? -ne 0 ]; then
++	    echo -n $"Starting $prog: "
++	    daemon /usr/sbin/rarpd $OPTIONS $INTERFACE
++	    RETVAL=$?
++	    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/rarpd
++	    echo
++	fi
++	return $RETVAL
++}
++
++stop() {
++	echo -n $"Stopping $prog: "
++	killproc /usr/sbin/rarpd
++	RETVAL=$?
++	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/rarpd
++	echo
++	return $RETVAL
++}
++reload() {
++    RETVAL=3
++}
++
++#
++#	See how we were called.
++#
++case "$1" in
++  start)
++	start
++	;;
++  stop)
++	stop
++	;;
++  reload)
++    reload
++    ;;
++  force-reload|restart)
++    stop
++	start
++	;;
++  condrestart)
++	if [ -f /var/lock/subsys/rarpd ]; then
++	    stop
++	    start
++	fi
++	;;
++  status)
++	status rarpd
++	RETVAL=$?
++	;;
++  *)
++	echo $"Usage: $0 {start|stop|restart|condrestart|reload|status|force-reload}"
++	RETVAL=2
++    
++esac
++
++exit $RETVAL
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0005-ethernet.c-remove-it.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0005-ethernet.c-remove-it.patch
new file mode 100644
index 0000000..c77c806
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/0005-ethernet.c-remove-it.patch
@@ -0,0 +1,244 @@
+From abe15ba10ddc3548c528ccb088097d7abf5be48b Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 18 Nov 2014 18:14:07 +0900
+Subject: [PATCH 5/5] ethernet.c : remove it
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ ethernet.c | 224 -------------------------------------------------------------
+ 1 file changed, 224 deletions(-)
+ delete mode 100644 ethernet.c
+
+diff --git a/ethernet.c b/ethernet.c
+deleted file mode 100644
+index d682b63..0000000
+--- a/ethernet.c
++++ /dev/null
+@@ -1,224 +0,0 @@
+-/*
+- * Copyright (c) 1990, 1993 The Regents of the University of California.
+- * All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that: (1) source code distributions
+- * retain the above copyright notice and this paragraph in its entirety, (2)
+- * distributions including binary code include the above copyright notice and
+- * this paragraph in its entirety in the documentation or other materials
+- * provided with the distribution, and (3) all advertising materials mentioning
+- * features or use of this software display the following acknowledgement:
+- * ``This product includes software developed by the University of California,
+- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+- * the University nor the names of its contributors may be used to endorse
+- * or promote products derived from this software without specific prior
+- * written permission.
+- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+- */
+-#ifndef lint
+-static char rcsid[] =
+-    "@(#) $Header: etherent.c,v 1.4 96/06/14 20:34:25 leres Exp $ (LBL)";
+-#endif
+-
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-#include <sys/time.h>
+-
+-#include <ctype.h>
+-#include <stdio.h>
+-#include <string.h>
+-
+-#ifndef ETHERS_FILE
+-#define ETHERS_FILE "/etc/ethers"
+-#endif
+-
+-struct etherent {
+-        u_char addr[6];
+-        char name[122];
+-};
+-
+-static FILE *ether_fp = NULL;
+-
+-
+-/* Hex digit to integer. */
+-static inline int
+-xdtoi(c)
+-	int c;
+-{
+-
+-	if (isdigit(c))
+-		return c - '0';
+-	else if (islower(c))
+-		return c - 'a' + 10;
+-	else
+-		return c - 'A' + 10;
+-}
+-
+-static inline int
+-skip_space(f)
+-	FILE *f;
+-{
+-	int c;
+-
+-	do {
+-		c = getc(f);
+-	} while (isspace(c) && c != '\n');
+-
+-	return c;
+-}
+-
+-static inline int
+-skip_line(f)
+-	FILE *f;
+-{
+-	int c;
+-
+-	do
+-		c = getc(f);
+-	while (c != '\n' && c != EOF);
+-
+-	return c;
+-}
+-
+-static struct etherent *
+-next_etherent(fp)
+-	FILE *fp;
+-{
+-	register int c, d, i;
+-	char *bp;
+-	static struct etherent e;
+-	static int nline = 1;
+- top:
+-	while (nline) {
+-		/* Find addr */
+-		c = skip_space(fp);
+-		if (c == '\n')
+-			continue;
+-		/* If this is a comment, or first thing on line
+-		   cannot be etehrnet address, skip the line. */
+-		else if (!isxdigit(c))
+-			c = skip_line(fp);
+-		else {
+-			/* must be the start of an address */
+-			for (i = 0; i < 6; i += 1) {
+-				d = xdtoi(c);
+-				c = getc(fp);
+-				if (c != ':') {
+-					d <<= 4;
+-					d |= xdtoi(c);
+-					c = getc(fp);
+-				}
+-				e.addr[i] = d;
+-				if (c != ':')
+-					break;
+-				c = getc(fp);
+-			}
+-			nline = 0;
+-		}
+-		if (c == EOF)
+-			return NULL;
+-	}
+-	
+-	/* If we started a new line, 'c' holds the char past the ether addr,
+-	   which we assume is white space.  If we are continuing a line,
+-	   'c' is garbage.  In either case, we can throw it away. */
+-	   
+-	c = skip_space(fp);
+-	if (c == '\n') {
+-		nline = 1;
+-		goto top;
+-	}
+-	else if (c == '#') {
+-		(void)skip_line(fp);
+-		nline = 1;
+-		goto top;
+-	}
+-	else if (c == EOF)
+-		return NULL;
+-	
+-	/* Must be a name. */
+-	bp = e.name;
+-	/* Use 'd' to prevent buffer overflow. */
+-	d = sizeof(e.name) - 1;
+-	do {
+-		*bp++ = c;
+-		c = getc(fp);
+-	} while (!isspace(c) && c != EOF && --d > 0);
+-	*bp = '\0';
+-	if (c == '\n')
+-		nline = 1;
+-
+-	return &e;
+-}
+-
+-/* Open/rewind the ethers files; returns 1 if file was reopened */
+-int
+-ether_rewind()
+-{
+-	struct stat st;
+-	static long mtime = 0, ctime = 0;
+-
+-	if (ether_fp != NULL) {
+-		if (fstat(fileno(ether_fp), &st) < 0 ||
+-		    mtime != st.st_mtime || ctime != st.st_ctime ||
+-		    fseek(ether_fp, 0L, SEEK_SET) < 0) {
+-			fclose(ether_fp);
+-			ether_fp = NULL;
+-		}
+-	}
+-	if (ether_fp == NULL) {
+-		ether_fp = fopen(ETHERS_FILE, "r");
+-		if (ether_fp == NULL)
+-			return (-1);
+-		if (fstat(fileno(ether_fp), &st) < 0) {
+-			fclose(ether_fp);
+-			ether_fp = NULL;
+-			return (-1);
+-		}
+-		mtime = st.st_mtime;
+-		ctime = st.st_ctime;
+-		return (1);
+-	}
+-	return (0);
+-}
+-
+-/* Map an ethernet address to a name; returns 0 on success, else 1. */
+-int
+-ether_ntohost(name, ea)
+-	register char *name;
+-	register u_char *ea;
+-{
+-	register struct etherent *ep;
+-
+-	if (ether_rewind() < 0)
+-		return (1);
+-
+-	while ((ep = next_etherent(ether_fp)) != NULL)
+-		if (bcmp(ep->addr, ea, 6) == 0) {
+-			strcpy(name, ep->name);
+-			return (0);
+-		}
+-	return (1);
+-}
+-
+-/* Map an ethernet name to an address; returns 0 on success, else 1. */
+-int
+-ether_hostton(name, ea)
+-	register char *name;
+-	register u_char *ea;
+-{
+-	register struct etherent *ep;
+-
+-	if (ether_rewind() < 0)
+-		return (1);
+-
+-	while ((ep = next_etherent(ether_fp)) != NULL)
+-		if (strcmp(ep->name, name) == 0) {
+-			bcopy(ep->addr, ea, 6);
+-			return (0);
+-		}
+-	return (1);
+-}
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/ethers.sample b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/ethers.sample
new file mode 100644
index 0000000..249ca6b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/ethers.sample
@@ -0,0 +1 @@
+# see man ethers for syntax
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/rarpd.service b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/rarpd.service
new file mode 100644
index 0000000..137710e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd/rarpd.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Reverse Address Resolution Protocol Requests Server
+Requires=network.target
+After=syslog.target network.target
+
+[Service]
+Type=forking
+EnvironmentFile=-/etc/sysconfig/rarpd
+ExecStart=/usr/sbin/rarpd $OPTIONS $INTERFACE
+StandardError=syslog
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd_ss981107.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd_ss981107.bb
new file mode 100644
index 0000000..a112168
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd_ss981107.bb
@@ -0,0 +1,53 @@
+SUMMARY = "The RARP daemon."
+DESCRIPTION = "RARP (Reverse Address Resolution Protocol) is a protocol which \
+allows individual devices on an IP network to get their own IP addresses from \
+the RARP server. Some machines (e.g. SPARC boxes) use this protocol instead \
+of e.g. DHCP to query their IP addresses during network bootup. \
+Linux kernels up to 2.2 used to provide a kernel daemon for this service, \
+but since 2.3 kernels it is served by this userland daemon. \
+You should install rarpd if you want to set up a RARP server on your \
+network."
+SECTION = "System Environment/Daemons"
+
+SRC_URI = "http://pkgs.fedoraproject.org/repo/pkgs/${BPN}/${BP}.tar.gz/be2a88f8ccddf2a40ac484cb3294fedc/${BP}.tar.gz"
+SRC_URI[md5sum] = "be2a88f8ccddf2a40ac484cb3294fedc"
+SRC_URI[sha256sum] = "4d6145d435a5d8b567b9798620f57f9b0a464078a1deba267958f168fbe776e6"
+
+SRC_URI += "file://0001-rarpd.8-add-man-file.patch \
+    file://0002-Makefile-modify-compile-parameters.patch \
+    file://0003-rarpd.c-bug-fix.patch \
+    file://0004-rarpd.init-add-new-init-file.patch \
+    file://0005-ethernet.c-remove-it.patch \
+    file://ethers.sample \
+    file://rarpd.service \
+"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://rarpd.c;md5=199b20b172ea93121bc613a9c77b6931"
+
+S = "${WORKDIR}/${BPN}"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_install() {
+    install -d ${D}${sysconfdir}/init.d
+    install -d ${D}${sbindir}
+    install -d ${D}${mandir}/man8
+    install -m 755 rarpd.init ${D}${sysconfdir}/init.d/rarpd
+    install -m 755 rarpd ${D}${sbindir}/rarpd
+    install -m 644 rarpd.8 ${D}${mandir}/man8/rarpd.8
+    install -m 644 ${WORKDIR}/ethers.sample ${D}${sysconfdir}/ethers
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/rarpd.service ${D}${systemd_unitdir}/system/
+    fi
+}
+
+inherit ${@bb.utils.contains('VIRTUAL-RUNTIME_init_manager','systemd','systemd','',d)}
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "rarpd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+RDEPENDS_${PN} += "bash"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/hiredis-use-default-CC-if-it-is-set.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/hiredis-use-default-CC-if-it-is-set.patch
new file mode 100644
index 0000000..f9f1c0d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/hiredis-use-default-CC-if-it-is-set.patch
@@ -0,0 +1,30 @@
+From dc745a33f3875cc72d41bd34ed490b352e546352 Mon Sep 17 00:00:00 2001
+From: Venture Research <tech@ventureresearch.com>
+Date: Fri, 8 Feb 2013 17:39:52 -0600
+Subject: [PATCH] hiredis: use default CC if it is set
+
+Instead of trying to automagically figure out CC, which breaks with OE
+as CC has spaces in it, just skip it if one was already passed in.
+
+Signed-off-by: Venture Research <tech@ventureresearch.com>
+
+Update to work with 3.0.x
+Signed-off-by: Armin Kuster <akuster808@gmail.com>
+
+---
+ deps/hiredis/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: deps/hiredis/Makefile
+===================================================================
+--- a/deps/hiredis/Makefile
++++ b/deps/hiredis/Makefile
+@@ -24,7 +24,7 @@ endef
+ export REDIS_TEST_CONFIG
+ 
+ # Fallback to gcc when $CC is not in $PATH.
+-CC:=$(shell sh -c 'type $(CC) >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
++CC?=$(shell sh -c 'type $(CC) >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
+ OPTIMIZATION?=-O3
+ WARNINGS=-Wall -W -Wstrict-prototypes -Wwrite-strings
+ DEBUG?= -g -ggdb
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/init-redis-server b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/init-redis-server
new file mode 100755
index 0000000..6014d70
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/init-redis-server
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides:          redis-server
+# Required-Start:    $network
+# Required-Stop:     $network
+# Default-Start:     S 2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Redis, a key-value store
+# Description:       Redis is an open source, advanced key-value store.
+#                    http://redis.io
+### END INIT INFO
+
+test -f /usr/bin/redis-server || exit 0
+
+ARGS="/etc/redis/redis.conf"
+
+case "$1" in
+    start)
+	echo "Starting redis-server..."
+        start-stop-daemon --start --quiet --exec /usr/bin/redis-server -- $ARGS
+	;;
+    stop)
+        echo "Stopping redis-server..."
+        start-stop-daemon --stop --quiet --exec /usr/bin/redis-server
+	;;
+    restart)
+        echo "Stopping redis-server..."
+        start-stop-daemon --stop --quiet --exec /usr/bin/redis-server
+	echo "Starting redis-server..."
+        start-stop-daemon --start --quiet --exec /usr/bin/redis-server -- $ARGS
+	;;
+    *)
+	echo "Usage: /etc/init.d/redis-server {start|stop|restart}"
+	exit 1
+	;;
+esac
+
+exit 0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/lua-update-Makefile-to-use-environment-build-setting.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/lua-update-Makefile-to-use-environment-build-setting.patch
new file mode 100644
index 0000000..7e62ae1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/lua-update-Makefile-to-use-environment-build-setting.patch
@@ -0,0 +1,71 @@
+From 394108035d350ae662a431c80131f812b5f72dff Mon Sep 17 00:00:00 2001
+From: Venture Research <tech@ventureresearch.com>
+Date: Fri, 8 Feb 2013 20:22:19 -0600
+Subject: [PATCH] lua: update Makefile to use environment build settings
+
+OE-specific parameters, instead of overriding all of these simply use
+the ones that are already passed in. Also configure for only Linux...
+
+Signed-off-by: Venture Research <tech@ventureresearch.com>
+
+Updated to work with 3.0.x
+
+Signed-off-by: Armin Kuster <akust808@gmail.com>
+
+---
+ deps/lua/src/Makefile | 18 +++++++-----------
+ 1 file changed, 7 insertions(+), 11 deletions(-)
+
+Index: redis-3.0.2/deps/lua/src/Makefile
+===================================================================
+--- redis-3.0.2.orig/deps/lua/src/Makefile
++++ redis-3.0.2/deps/lua/src/Makefile
+@@ -5,18 +5,14 @@
+ # == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT =======================
+ 
+ # Your platform. See PLATS for possible values.
+-PLAT= none
++PLAT= linux
+ 
+-CC?= gcc
+-CFLAGS= -O2 -Wall $(MYCFLAGS)
+-AR= ar rcu
+-RANLIB= ranlib
+-RM= rm -f
+-LIBS= -lm $(MYLIBS)
+-
+-MYCFLAGS=
++MYCFLAGS=-DLUA_USE_LINUX
+ MYLDFLAGS=
+-MYLIBS=
++MYLIBS=-Wl,-E -ldl -lreadline -lhistory -lncurses
++
++CFLAGS += $(MYCFLAGS)
++LIBS += -lm $(MYLIBS)
+ 
+ # == END OF USER SETTINGS. NO NEED TO CHANGE ANYTHING BELOW THIS LINE =========
+ 
+Index: redis-3.0.2/deps/Makefile
+===================================================================
+--- redis-3.0.2.orig/deps/Makefile
++++ redis-3.0.2/deps/Makefile
+@@ -63,7 +63,6 @@ LUA_LDFLAGS+= $(LDFLAGS)
+ # lua's Makefile defines AR="ar rcu", which is unusual, and makes it more
+ # challenging to cross-compile lua (and redis).  These defines make it easier
+ # to fit redis into cross-compilation environments, which typically set AR.
+-AR=ar
+ ARFLAGS=rcu
+ 
+ lua: .make-prerequisites
+Index: redis-3.0.2/deps/lua/Makefile
+===================================================================
+--- redis-3.0.2.orig/deps/lua/Makefile
++++ redis-3.0.2/deps/lua/Makefile
+@@ -33,7 +33,6 @@ INSTALL_DATA= $(INSTALL) -m 0644
+ 
+ # Utilities.
+ MKDIR= mkdir -p
+-RANLIB= ranlib
+ 
+ # == END OF USER SETTINGS. NO NEED TO CHANGE ANYTHING BELOW THIS LINE =========
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/oe-use-libc-malloc.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/oe-use-libc-malloc.patch
new file mode 100644
index 0000000..b768a77
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/oe-use-libc-malloc.patch
@@ -0,0 +1,34 @@
+From f8861d2129b9e18bba137705bfa38c6bd9be1790 Mon Sep 17 00:00:00 2001
+From: Venture Research <tech@ventureresearch.com>
+Date: Wed, 6 Feb 2013 20:51:02 -0600
+Subject: [PATCH] hack to force use of libc malloc
+
+Hack to force libc usage as it seems the option to pass it in has been
+removed in favor of magic.
+
+Note that this of course doesn't allow tcmalloc and jemalloc, however 
+jemalloc wasn't building correctly.
+
+Signed-off-by: Venture Research <tech@ventureresearch.com>
+
+Update to work with 3.0.x
+Signed-off-by: Armin Kuster <akuster808@gmail.com>
+
+---
+ src/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: src/Makefile
+===================================================================
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -13,7 +13,8 @@
+ # Just use 'make dep', but this is only needed by developers.
+ 
+ release_hdr := $(shell sh -c './mkreleasehdr.sh')
+-uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
++# use fake uname option to force use of generic libc
++uname_S := "USE_LIBC_MALLOC"
+ OPTIMIZATION?=-O2
+ DEPENDENCY_TARGETS=hiredis linenoise lua
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/redis.conf b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/redis.conf
new file mode 100644
index 0000000..923b98e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis/redis.conf
@@ -0,0 +1,550 @@
+# Redis configuration file example
+
+# Note on units: when memory size is needed, it is possible to specify
+# it in the usual form of 1k 5GB 4M and so forth:
+#
+# 1k => 1000 bytes
+# 1kb => 1024 bytes
+# 1m => 1000000 bytes
+# 1mb => 1024*1024 bytes
+# 1g => 1000000000 bytes
+# 1gb => 1024*1024*1024 bytes
+#
+# units are case insensitive so 1GB 1Gb 1gB are all the same.
+
+# By default Redis does not run as a daemon. Use 'yes' if you need it.
+# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
+#
+# OE: run as a daemon.
+#
+daemonize yes
+
+# When running daemonized, Redis writes a pid file in /var/run/redis.pid by
+# default. You can specify a custom pid file location here.
+pidfile /var/run/redis.pid
+
+# Accept connections on the specified port, default is 6379.
+# If port 0 is specified Redis will not listen on a TCP socket.
+port 6379
+
+# If you want you can bind a single interface, if the bind option is not
+# specified all the interfaces will listen for incoming connections.
+#
+# bind 127.0.0.1
+
+# Specify the path for the unix socket that will be used to listen for
+# incoming connections. There is no default, so Redis will not listen
+# on a unix socket when not specified.
+#
+# unixsocket /tmp/redis.sock
+# unixsocketperm 755
+
+# Close the connection after a client is idle for N seconds (0 to disable)
+timeout 0
+
+# Set server verbosity to 'debug'
+# it can be one of:
+# debug (a lot of information, useful for development/testing)
+# verbose (many rarely useful info, but not a mess like the debug level)
+# notice (moderately verbose, what you want in production probably)
+# warning (only very important / critical messages are logged)
+loglevel notice
+
+# Specify the log file name. Also 'stdout' can be used to force
+# Redis to log on the standard output. Note that if you use standard
+# output for logging but daemonize, logs will be sent to /dev/null
+logfile /var/log/redis.log
+
+# To enable logging to the system logger, just set 'syslog-enabled' to yes,
+# and optionally update the other syslog parameters to suit your needs.
+# syslog-enabled no
+
+# Specify the syslog identity.
+# syslog-ident redis
+
+# Specify the syslog facility.  Must be USER or between LOCAL0-LOCAL7.
+# syslog-facility local0
+
+# Set the number of databases. The default database is DB 0, you can select
+# a different one on a per-connection basis using SELECT <dbid> where
+# dbid is a number between 0 and 'databases'-1
+databases 16
+
+################################ SNAPSHOTTING  #################################
+#
+# Save the DB on disk:
+#
+#   save <seconds> <changes>
+#
+#   Will save the DB if both the given number of seconds and the given
+#   number of write operations against the DB occurred.
+#
+#   In the example below the behaviour will be to save:
+#   after 900 sec (15 min) if at least 1 key changed
+#   after 300 sec (5 min) if at least 10 keys changed
+#   after 60 sec if at least 10000 keys changed
+#
+#   Note: you can disable saving at all commenting all the "save" lines.
+#
+#   It is also possible to remove all the previously configured save
+#   points by adding a save directive with a single empty string argument
+#   like in the following example:
+#
+#   save ""
+
+#save 900 1
+#save 300 10
+#save 60 10000
+
+# OE: tune for a small embedded system with a limited # of keys.
+save 120 1
+save 60 100
+save 30 1000
+
+# By default Redis will stop accepting writes if RDB snapshots are enabled
+# (at least one save point) and the latest background save failed.
+# This will make the user aware (in an hard way) that data is not persisting
+# on disk properly, otherwise chances are that no one will notice and some
+# distater will happen.
+#
+# If the background saving process will start working again Redis will
+# automatically allow writes again.
+#
+# However if you have setup your proper monitoring of the Redis server
+# and persistence, you may want to disable this feature so that Redis will
+# continue to work as usually even if there are problems with disk,
+# permissions, and so forth.
+stop-writes-on-bgsave-error yes
+
+# Compress string objects using LZF when dump .rdb databases?
+# For default that's set to 'yes' as it's almost always a win.
+# If you want to save some CPU in the saving child set it to 'no' but
+# the dataset will likely be bigger if you have compressible values or keys.
+rdbcompression yes
+
+# Since verison 5 of RDB a CRC64 checksum is placed at the end of the file.
+# This makes the format more resistant to corruption but there is a performance
+# hit to pay (around 10%) when saving and loading RDB files, so you can disable it
+# for maximum performances.
+#
+# RDB files created with checksum disabled have a checksum of zero that will
+# tell the loading code to skip the check.
+rdbchecksum yes
+
+# The filename where to dump the DB
+dbfilename dump.rdb
+
+# The working directory.
+#
+# The DB will be written inside this directory, with the filename specified
+# above using the 'dbfilename' configuration directive.
+# 
+# Also the Append Only File will be created inside this directory.
+# 
+# Note that you must specify a directory here, not a file name.
+dir /var/lib/redis/
+
+################################# REPLICATION #################################
+
+# Master-Slave replication. Use slaveof to make a Redis instance a copy of
+# another Redis server. Note that the configuration is local to the slave
+# so for example it is possible to configure the slave to save the DB with a
+# different interval, or to listen to another port, and so on.
+#
+# slaveof <masterip> <masterport>
+
+# If the master is password protected (using the "requirepass" configuration
+# directive below) it is possible to tell the slave to authenticate before
+# starting the replication synchronization process, otherwise the master will
+# refuse the slave request.
+#
+# masterauth <master-password>
+
+# When a slave lost the connection with the master, or when the replication
+# is still in progress, the slave can act in two different ways:
+#
+# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will
+#    still reply to client requests, possibly with out of date data, or the
+#    data set may just be empty if this is the first synchronization.
+#
+# 2) if slave-serve-stale data is set to 'no' the slave will reply with
+#    an error "SYNC with master in progress" to all the kind of commands
+#    but to INFO and SLAVEOF.
+#
+slave-serve-stale-data yes
+
+# You can configure a slave instance to accept writes or not. Writing against
+# a slave instance may be useful to store some ephemeral data (because data
+# written on a slave will be easily deleted after resync with the master) but
+# may also cause problems if clients are writing to it because of a
+# misconfiguration.
+#
+# Since Redis 2.6 by default slaves are read-only.
+#
+# Note: read only slaves are not designed to be exposed to untrusted clients
+# on the internet. It's just a protection layer against misuse of the instance.
+# Still a read only slave exports by default all the administrative commands
+# such as CONFIG, DEBUG, and so forth. To a limited extend you can improve
+# security of read only slaves using 'rename-command' to shadow all the
+# administrative / dangerous commands.
+slave-read-only yes
+
+# Slaves send PINGs to server in a predefined interval. It's possible to change
+# this interval with the repl_ping_slave_period option. The default value is 10
+# seconds.
+#
+# repl-ping-slave-period 10
+
+# The following option sets a timeout for both Bulk transfer I/O timeout and
+# master data or ping response timeout. The default value is 60 seconds.
+#
+# It is important to make sure that this value is greater than the value
+# specified for repl-ping-slave-period otherwise a timeout will be detected
+# every time there is low traffic between the master and the slave.
+#
+# repl-timeout 60
+
+# The slave priority is an integer number published by Redis in the INFO output.
+# It is used by Redis Sentinel in order to select a slave to promote into a
+# master if the master is no longer working correctly.
+#
+# A slave with a low priority number is considered better for promotion, so
+# for instance if there are three slaves with priority 10, 100, 25 Sentinel will
+# pick the one wtih priority 10, that is the lowest.
+#
+# However a special priority of 0 marks the slave as not able to perform the
+# role of master, so a slave with priority of 0 will never be selected by
+# Redis Sentinel for promotion.
+#
+# By default the priority is 100.
+slave-priority 100
+
+################################## SECURITY ###################################
+
+# Require clients to issue AUTH <PASSWORD> before processing any other
+# commands.  This might be useful in environments in which you do not trust
+# others with access to the host running redis-server.
+#
+# This should stay commented out for backward compatibility and because most
+# people do not need auth (e.g. they run their own servers).
+# 
+# Warning: since Redis is pretty fast an outside user can try up to
+# 150k passwords per second against a good box. This means that you should
+# use a very strong password otherwise it will be very easy to break.
+#
+# requirepass foobared
+
+# Command renaming.
+#
+# It is possible to change the name of dangerous commands in a shared
+# environment. For instance the CONFIG command may be renamed into something
+# of hard to guess so that it will be still available for internal-use
+# tools but not available for general clients.
+#
+# Example:
+#
+# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
+#
+# It is also possible to completely kill a command renaming it into
+# an empty string:
+#
+# rename-command CONFIG ""
+
+################################### LIMITS ####################################
+
+# Set the max number of connected clients at the same time. By default
+# this limit is set to 10000 clients, however if the Redis server is not
+# able ot configure the process file limit to allow for the specified limit
+# the max number of allowed clients is set to the current file limit
+# minus 32 (as Redis reserves a few file descriptors for internal uses).
+#
+# Once the limit is reached Redis will close all the new connections sending
+# an error 'max number of clients reached'.
+#
+# maxclients 10000
+
+# Don't use more memory than the specified amount of bytes.
+# When the memory limit is reached Redis will try to remove keys
+# accordingly to the eviction policy selected (see maxmemmory-policy).
+#
+# If Redis can't remove keys according to the policy, or if the policy is
+# set to 'noeviction', Redis will start to reply with errors to commands
+# that would use more memory, like SET, LPUSH, and so on, and will continue
+# to reply to read-only commands like GET.
+#
+# This option is usually useful when using Redis as an LRU cache, or to set
+# an hard memory limit for an instance (using the 'noeviction' policy).
+#
+# WARNING: If you have slaves attached to an instance with maxmemory on,
+# the size of the output buffers needed to feed the slaves are subtracted
+# from the used memory count, so that network problems / resyncs will
+# not trigger a loop where keys are evicted, and in turn the output
+# buffer of slaves is full with DELs of keys evicted triggering the deletion
+# of more keys, and so forth until the database is completely emptied.
+#
+# In short... if you have slaves attached it is suggested that you set a lower
+# limit for maxmemory so that there is some free RAM on the system for slave
+# output buffers (but this is not needed if the policy is 'noeviction').
+#
+# maxmemory <bytes>
+
+# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
+# is reached? You can select among five behavior:
+# 
+# volatile-lru -> remove the key with an expire set using an LRU algorithm
+# allkeys-lru -> remove any key accordingly to the LRU algorithm
+# volatile-random -> remove a random key with an expire set
+# allkeys-random -> remove a random key, any key
+# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
+# noeviction -> don't expire at all, just return an error on write operations
+# 
+# Note: with all the kind of policies, Redis will return an error on write
+#       operations, when there are not suitable keys for eviction.
+#
+#       At the date of writing this commands are: set setnx setex append
+#       incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
+#       sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
+#       zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
+#       getset mset msetnx exec sort
+#
+# The default is:
+#
+# maxmemory-policy volatile-lru
+
+# LRU and minimal TTL algorithms are not precise algorithms but approximated
+# algorithms (in order to save memory), so you can select as well the sample
+# size to check. For instance for default Redis will check three keys and
+# pick the one that was used less recently, you can change the sample size
+# using the following configuration directive.
+#
+# maxmemory-samples 3
+
+############################## APPEND ONLY MODE ###############################
+
+# By default Redis asynchronously dumps the dataset on disk. This mode is
+# good enough in many applications, but an issue with the Redis process or
+# a power outage may result into a few minutes of writes lost (depending on
+# the configured save points).
+#
+# The Append Only File is an alternative persistence mode that provides
+# much better durability. For instance using the default data fsync policy
+# (see later in the config file) Redis can lose just one second of writes in a
+# dramatic event like a server power outage, or a single write if something
+# wrong with the Redis process itself happens, but the operating system is
+# still running correctly.
+#
+# AOF and RDB persistence can be enabled at the same time without problems.
+# If the AOF is enabled on startup Redis will load the AOF, that is the file
+# with the better durability guarantees.
+#
+# Please check http://redis.io/topics/persistence for more information.
+
+#
+# OE: changed default to enable this
+appendonly yes
+
+# The name of the append only file (default: "appendonly.aof")
+# appendfilename appendonly.aof
+
+# The fsync() call tells the Operating System to actually write data on disk
+# instead to wait for more data in the output buffer. Some OS will really flush 
+# data on disk, some other OS will just try to do it ASAP.
+#
+# Redis supports three different modes:
+#
+# no: don't fsync, just let the OS flush the data when it wants. Faster.
+# always: fsync after every write to the append only log . Slow, Safest.
+# everysec: fsync only one time every second. Compromise.
+#
+# The default is "everysec" that's usually the right compromise between
+# speed and data safety. It's up to you to understand if you can relax this to
+# "no" that will let the operating system flush the output buffer when
+# it wants, for better performances (but if you can live with the idea of
+# some data loss consider the default persistence mode that's snapshotting),
+# or on the contrary, use "always" that's very slow but a bit safer than
+# everysec.
+#
+# More details please check the following article:
+# http://antirez.com/post/redis-persistence-demystified.html
+#
+# If unsure, use "everysec".
+
+# appendfsync always
+appendfsync everysec
+# appendfsync no
+
+# When the AOF fsync policy is set to always or everysec, and a background
+# saving process (a background save or AOF log background rewriting) is
+# performing a lot of I/O against the disk, in some Linux configurations
+# Redis may block too long on the fsync() call. Note that there is no fix for
+# this currently, as even performing fsync in a different thread will block
+# our synchronous write(2) call.
+#
+# In order to mitigate this problem it's possible to use the following option
+# that will prevent fsync() from being called in the main process while a
+# BGSAVE or BGREWRITEAOF is in progress.
+#
+# This means that while another child is saving the durability of Redis is
+# the same as "appendfsync none", that in practical terms means that it is
+# possible to lost up to 30 seconds of log in the worst scenario (with the
+# default Linux settings).
+# 
+# If you have latency problems turn this to "yes". Otherwise leave it as
+# "no" that is the safest pick from the point of view of durability.
+no-appendfsync-on-rewrite no
+
+# Automatic rewrite of the append only file.
+# Redis is able to automatically rewrite the log file implicitly calling
+# BGREWRITEAOF when the AOF log size will growth by the specified percentage.
+# 
+# This is how it works: Redis remembers the size of the AOF file after the
+# latest rewrite (or if no rewrite happened since the restart, the size of
+# the AOF at startup is used).
+#
+# This base size is compared to the current size. If the current size is
+# bigger than the specified percentage, the rewrite is triggered. Also
+# you need to specify a minimal size for the AOF file to be rewritten, this
+# is useful to avoid rewriting the AOF file even if the percentage increase
+# is reached but it is still pretty small.
+#
+# Specify a percentage of zero in order to disable the automatic AOF
+# rewrite feature.
+
+auto-aof-rewrite-percentage 100
+auto-aof-rewrite-min-size 64mb
+
+################################ LUA SCRIPTING  ###############################
+
+# Max execution time of a Lua script in milliseconds.
+#
+# If the maximum execution time is reached Redis will log that a script is
+# still in execution after the maximum allowed time and will start to
+# reply to queries with an error.
+#
+# When a long running script exceed the maximum execution time only the
+# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be
+# used to stop a script that did not yet called write commands. The second
+# is the only way to shut down the server in the case a write commands was
+# already issue by the script but the user don't want to wait for the natural
+# termination of the script.
+#
+# Set it to 0 or a negative value for unlimited execution without warnings.
+lua-time-limit 5000
+
+################################## SLOW LOG ###################################
+
+# The Redis Slow Log is a system to log queries that exceeded a specified
+# execution time. The execution time does not include the I/O operations
+# like talking with the client, sending the reply and so forth,
+# but just the time needed to actually execute the command (this is the only
+# stage of command execution where the thread is blocked and can not serve
+# other requests in the meantime).
+# 
+# You can configure the slow log with two parameters: one tells Redis
+# what is the execution time, in microseconds, to exceed in order for the
+# command to get logged, and the other parameter is the length of the
+# slow log. When a new command is logged the oldest one is removed from the
+# queue of logged commands.
+
+# The following time is expressed in microseconds, so 1000000 is equivalent
+# to one second. Note that a negative number disables the slow log, while
+# a value of zero forces the logging of every command.
+slowlog-log-slower-than 10000
+
+# There is no limit to this length. Just be aware that it will consume memory.
+# You can reclaim memory used by the slow log with SLOWLOG RESET.
+slowlog-max-len 128
+
+############################### ADVANCED CONFIG ###############################
+
+# Hashes are encoded using a memory efficient data structure when they have a
+# small number of entries, and the biggest entry does not exceed a given
+# threshold. These thresholds can be configured using the following directives.
+hash-max-ziplist-entries 512
+hash-max-ziplist-value 64
+
+# Similarly to hashes, small lists are also encoded in a special way in order
+# to save a lot of space. The special representation is only used when
+# you are under the following limits:
+list-max-ziplist-entries 512
+list-max-ziplist-value 64
+
+# Sets have a special encoding in just one case: when a set is composed
+# of just strings that happens to be integers in radix 10 in the range
+# of 64 bit signed integers.
+# The following configuration setting sets the limit in the size of the
+# set in order to use this special memory saving encoding.
+set-max-intset-entries 512
+
+# Similarly to hashes and lists, sorted sets are also specially encoded in
+# order to save a lot of space. This encoding is only used when the length and
+# elements of a sorted set are below the following limits:
+zset-max-ziplist-entries 128
+zset-max-ziplist-value 64
+
+# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in
+# order to help rehashing the main Redis hash table (the one mapping top-level
+# keys to values). The hash table implementation Redis uses (see dict.c)
+# performs a lazy rehashing: the more operation you run into an hash table
+# that is rehashing, the more rehashing "steps" are performed, so if the
+# server is idle the rehashing is never complete and some more memory is used
+# by the hash table.
+# 
+# The default is to use this millisecond 10 times every second in order to
+# active rehashing the main dictionaries, freeing memory when possible.
+#
+# If unsure:
+# use "activerehashing no" if you have hard latency requirements and it is
+# not a good thing in your environment that Redis can reply form time to time
+# to queries with 2 milliseconds delay.
+#
+# use "activerehashing yes" if you don't have such hard requirements but
+# want to free memory asap when possible.
+activerehashing yes
+
+# The client output buffer limits can be used to force disconnection of clients
+# that are not reading data from the server fast enough for some reason (a
+# common reason is that a Pub/Sub client can't consume messages as fast as the
+# publisher can produce them).
+#
+# The limit can be set differently for the three different classes of clients:
+#
+# normal -> normal clients
+# slave  -> slave clients and MONITOR clients
+# pubsub -> clients subcribed to at least one pubsub channel or pattern
+#
+# The syntax of every client-output-buffer-limit directive is the following:
+#
+# client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
+#
+# A client is immediately disconnected once the hard limit is reached, or if
+# the soft limit is reached and remains reached for the specified number of
+# seconds (continuously).
+# So for instance if the hard limit is 32 megabytes and the soft limit is
+# 16 megabytes / 10 seconds, the client will get disconnected immediately
+# if the size of the output buffers reach 32 megabytes, but will also get
+# disconnected if the client reaches 16 megabytes and continuously overcomes
+# the limit for 10 seconds.
+#
+# By default normal clients are not limited because they don't receive data
+# without asking (in a push way), but just after a request, so only
+# asynchronous clients may create a scenario where data is requested faster
+# than it can read.
+#
+# Instead there is a default limit for pubsub and slave clients, since
+# subscribers and slaves receive data in a push fashion.
+#
+# Both the hard or the soft limit can be disabled just setting it to zero.
+client-output-buffer-limit normal 0 0 0
+client-output-buffer-limit slave 256mb 64mb 60
+client-output-buffer-limit pubsub 32mb 8mb 60
+
+################################## INCLUDES ###################################
+
+# Include one or more other config files here.  This is useful if you
+# have a standard template that goes to all Redis server but also need
+# to customize a few per-server settings.  Include files can include
+# other files, so use this wisely.
+#
+# include /path/to/local.conf
+# include /path/to/other.conf
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis_3.0.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis_3.0.2.bb
new file mode 100644
index 0000000..55f2c96
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/redis/redis_3.0.2.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Redis key-value store"
+DESCRIPTION = "Redis is an open source, advanced key-value store."
+HOMEPAGE = "http://redis.io"
+SECTION = "libs"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3c01b49fed4df1a79843688fa3f7b9d6"
+DEPENDS = ""
+
+SRC_URI = "http://download.redis.io/releases/${BP}.tar.gz \
+           file://hiredis-use-default-CC-if-it-is-set.patch \
+           file://lua-update-Makefile-to-use-environment-build-setting.patch \
+           file://oe-use-libc-malloc.patch \
+           file://redis.conf \
+           file://init-redis-server \
+"
+SRC_URI[md5sum] = "87be8867447f62524b584813e5a7bd14"
+SRC_URI[sha256sum] = "93e422c0d584623601f89b956045be158889ebe594478a2c24e1bf218495633f"
+
+inherit autotools-brokensep update-rc.d
+
+do_install() {
+    export PREFIX=${D}/${prefix}
+    oe_runmake install
+    install -d ${D}/${sysconfdir}/redis
+    install -m 0644 ${WORKDIR}/redis.conf ${D}/${sysconfdir}/redis/redis.conf
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/init-redis-server ${D}/${sysconfdir}/init.d/redis-server
+    install -d ${D}/var/lib/redis/
+}
+
+CONFFILES_${PN} = "${sysconfdir}/redis/redis.conf"
+
+INITSCRIPT_NAME = "redis-server"
+INITSCRIPT_PARAMS = "defaults 87"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.5.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.5.4.bb
new file mode 100644
index 0000000..216aafc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.5.4.bb
@@ -0,0 +1,120 @@
+SUMMARY = "High performance data logging and graphing system for time series data"
+HOMEPAGE = "http://oss.oetiker.ch/rrdtool/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=3349111ed0533471494beec99715bc9d"
+
+DEPENDS = "libpng zlib cairo pango glib-2.0 libxml2 groff-native"
+
+SRCREV = "04f70058cc894c0a3ee5d555ea1bb5a8d4bb8a0e"
+PV = "1.5.4"
+
+SRC_URI = "\
+    git://github.com/oetiker/rrdtool-1.x.git;branch=1.5 \
+"
+
+S = "${WORKDIR}/git"
+
+inherit cpan autotools-brokensep gettext pythonnative python-dir systemd
+
+BBCLASSEXTEND = "native"
+
+SYSTEMD_SERVICE_${PN} = "rrdcached.socket rrdcached.service"
+
+EXTRA_AUTORECONF = "-I m4"
+
+PACKAGECONFIG ??= "python perl ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+
+PACKAGECONFIG[python] = "--enable-python=yes \
+am_cv_python_pythondir=${STAGING_LIBDIR}/python${PYTHON_BASEVERSION}/site-packages \
+am_cv_python_pyexecdir=${STAGING_LIBDIR}/python${PYTHON_BASEVERSION}/site-packages,\
+--disable-python,python,"
+
+PACKAGECONFIG[perl] = \
+"--enable-perl=yes --with-perl-options='INSTALLDIRS="vendor"' \
+ac_cv_path_PERL_CC='${CC}',  \
+--disable-perl,perl,"
+
+PACKAGECONFIG[dbi] = "--enable-libdbi,--disable-libdbi,libdbi"
+
+PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd,"
+
+EXTRA_OECONF = " \
+    --enable-shared \
+    --disable-libwrap \
+    --program-prefix='' \
+    rd_cv_ieee_works=yes \
+    --disable-ruby \
+    --disable-lua \
+    --disable-tcl \
+    --disable-rpath \
+"
+
+export BUILD_SYS
+export HOST_SYS
+export STAGING_LIBDIR
+export STAGING_INCDIR
+
+# emulate cpan_do_configure
+EXTRA_OEMAKE = ' PERL5LIB="${PERL_ARCHLIB}" '
+# Avoid do_configure error on some hosts
+export PERLHOSTLIB = ""
+
+do_configure() {
+    #fix the pkglib problem with newer automake
+    #perl
+    sed -i -e "s|-Wl,--rpath -Wl,\$rp||g" \
+        ${S}/bindings/perl-shared/Makefile.PL
+
+    #python
+    sed -i -e '/PYTHON_INCLUDES="-I${/c \
+    PYTHON_INCLUDES="-I=/usr/include/python${PYTHON_BASEVERSION}"' \
+        ${S}/m4/acinclude.m4
+    #remove the useless RPATH from the rrdtool.so
+    sed -i -e 's|LD_RUN_PATH=$(libdir)||g' ${S}/bindings/Makefile.am
+
+    autotools_do_configure
+
+    #modify python sitepkg
+    #remove the dependency of perl-shared:Makefile
+    #or perl-shared/Makefile will be regenerated
+    #if any code touch bindings/Makefile after below perl bindings code
+    sed -i -e "s:python/setup.py install:python/setup.py install \
+        --install-lib=${PYTHON_SITEPACKAGES_DIR}:" \
+        -e "s:perl-shared/Makefile.PL Makefile:perl-shared/Makefile.PL:" \
+        ${B}/bindings/Makefile
+
+    #redo the perl bindings
+    (
+    cd ${S}/bindings/perl-shared;
+    perl Makefile.PL INSTALLDIRS="vendor" INSTALLPRIVLIB="abc";
+
+    cd ../../bindings/perl-piped;
+    perl Makefile.PL INSTALLDIRS="vendor";
+    )
+
+    #change the interpreter in file
+    sed -i -e "s|^PERL = ${STAGING_BINDIR_NATIVE}/.*|PERL = /usr/bin/perl|g" \
+        ${B}/examples/Makefile
+    sed -i -e "s|${STAGING_BINDIR_NATIVE}/perl-native/perl|/usr/bin/perl|g" \
+        ${B}/examples/*.pl
+}
+
+PACKAGES =+ "${PN}-perl ${PN}-python"
+
+FILES_${PN}-doc += "${datadir}/rrdtool/examples"
+
+DESCRIPTION_${PN}-perl = \
+"The ${PN}-perl package includes RRDtool bindings for perl."
+FILES_${PN}-perl = "${libdir}/perl/vendor_perl/*/*.pm \
+    ${libdir}/perl/vendor_perl/*/auto/RRDs/RRDs.*"
+RDEPENDS_${PN}-perl = "perl perl-module-lib perl-module-getopt-long perl-module-time-hires \
+    perl-module-io-file perl-module-ipc-open2 perl-module-io-socket"
+
+DESCRIPTION_${PN}-python = \
+"The ${PN}-python package includes RRDtool bindings for python."
+FILES_${PN}-python = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/*"
+RDEPENDS_${PN}-python = "python"
+
+FILES_${PN}-dbg += "${libdir}/perl/vendor_perl/*/auto/RRDs/.debug \
+    ${libdir}/python${PYTHON_BASEVERSION}/site-packages/.debug"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/enable_tls_ptests.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/enable_tls_ptests.patch
new file mode 100644
index 0000000..c858f32
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/enable_tls_ptests.patch
@@ -0,0 +1,28 @@
+Enable tls ptest
+
+Signed-off-by: Tudor Florea <tudor.florea@enea.com>
+Upstream-Status: Pending
+
+--- rsyslog-7.4.4/tests/Makefile.am.orig	2013-08-30 18:30:41.000000000 +0200
++++ rsyslog-7.4.4/tests/Makefile.am	2015-10-01 09:38:45.176289031 +0200
+@@ -118,15 +118,13 @@
+ endif
+ 
+ if ENABLE_GNUTLS
+-# TODO: re-enable in newer version
+-#TESTS +=  \
+-	#sndrcv_tls_anon.sh \
+-	#sndrcv_tls_anon_rebind.sh \
+-	#imtcp-tls-basic.sh
++TESTS +=  \
++	 imtcp-tls-basic.sh \
++	 imtcp_conndrop_tls.sh
+ if HAVE_VALGRIND
+ TESTS += imtcp-tls-basic-vg.sh \
+-	 imtcp_conndrop_tls-vg.sh 
+-	 manytcp-too-few-tls-vg.sh 
++	 imtcp_conndrop_tls-vg.sh \
++	 manytcp-too-few-tls.sh
+ endif
+ endif
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/initscript b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/initscript
new file mode 100644
index 0000000..7a8f8f9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/initscript
@@ -0,0 +1,118 @@
+#! /bin/sh
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/rsyslog and type
+# > update-rc.d rsyslog defaults 5
+#
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+NAME=rsyslog
+RSYSLOGD=rsyslogd
+RSYSLOGD_BIN=/usr/sbin/rsyslogd
+RSYSLOGD_OPTIONS=""
+RSYSLOGD_PIDFILE=/var/run/rsyslogd.pid
+SCRIPTNAME=/etc/init.d/$NAME
+# Exit if the package is not installed
+[ -x "$RSYSLOGD_BIN" ] || exit 0
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+        DAEMON=$1
+        DAEMON_ARGS=$2
+        PIDFILE=$3
+        # Return
+        #   0 if daemon has been started
+        #   1 if daemon could not be started
+        #   if daemon had already been started, start-stop-daemon will return 1
+        #   so add -o/--oknodo(if nothing is done, exit 0)
+        start-stop-daemon -S --quiet --pidfile $PIDFILE --exec $DAEMON \
+                             --oknodo -- $DAEMON_ARGS || return 1
+}
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+        NAME=$1
+        PIDFILE=$2
+        # Return
+        #   0 if daemon has been stopped
+        #   1 if daemon was already stopped
+        #   2 if daemon could not be stopped
+        #   other if a failure occurred
+        # QUIT/TERM/INT should work here, but they don't ????? 
+        start-stop-daemon -K --quiet --signal KILL --pidfile $PIDFILE --name $NAME
+        RETVAL="$?"
+        rm -f $PIDFILE
+        return "$RETVAL"
+}
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+        NAME=$1
+        PIDFILE=$2
+        start-stop-daemon -K --signal HUP --quiet --pidfile $PIDFILE --name $NAME
+        return 0
+}
+
+do_status() {
+        NAME=$1
+        PIDFILE=$2
+        # -t: test only but not stop
+        start-stop-daemon -K -t --quiet --pidfile $PIDFILE --name $NAME
+        # exit with status 0 if process is found
+        if [ "$?" = "0" ]; then
+                return 0
+        else
+                return 1
+        fi
+}
+
+case "$1" in
+  start)
+        echo -n "starting $RSYSLOGD ... "
+        do_start "$RSYSLOGD_BIN" "$RSYSLOGD_OPTIONS" "$RSYSLOGD_PIDFILE"
+        case "$?" in
+                0) echo "done" ;;
+                1) echo "failed" ;;
+        esac
+        ;;
+  stop)
+        echo -n "stopping $RSYSLOGD ... "
+        do_stop "$RSYSLOGD" "$RSYSLOGD_PIDFILE"
+        case "$?" in
+                0|1) echo "done" ;;
+                2) echo "failed" ;;
+        esac
+        ;;
+  reload|force-reload)
+        echo -n "reloading $RSYSLOGD ... "
+        do_reload "$RSYSLOGD" "$RSYSLOGD_PIDFILE"
+        echo "done"
+        ;;
+  restart)
+        $0 stop
+        $0 start
+        ;;
+  status)
+        echo -n "status $RSYSLOGD ... "
+        do_status "$RSYSLOGD" "$RSYSLOGD_PIDFILE"
+        if [ "$?" = "0" ]; then
+                echo "running"
+                exit 0        
+        else
+                echo "stopped"
+                exit 1        
+        fi
+        ;;
+  *)
+        echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2
+        exit 3
+        ;;
+esac
+exit 0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/json-0.12-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/json-0.12-fix.patch
new file mode 100644
index 0000000..3dd85a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/json-0.12-fix.patch
@@ -0,0 +1,47 @@
+json-c-0.12 unlike 0.11 doesn't install json -> json-c symlink in include
+
+* Resolved in Version 7.6.4 [v7.6-stable] 2014-09-12
+  https://github.com/rsyslog/rsyslog/blob/v7-stable/ChangeLog
+* permits to build against json-c 0.12
+  Unfortunately, json-c had an ABI breakage, so this is necessary. Note
+  that versions prior to 0.12 had security issues (CVE-2013-6370,
+  CVE-2013-6371) and so it is desirable to link against the new version.
+  Thanks to Thomas D. for the patch. Note that at least some distros
+  have fixed the security issue in older versions of json-c, so this
+  seems to apply mostly when building from sources.
+
+Upstream-Status: Backport
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+diff --git a/plugins/ommongodb/ommongodb.c b/plugins/ommongodb/ommongodb.c
+index 41c0d76..682c40e 100644
+--- a/plugins/ommongodb/ommongodb.c
++++ b/plugins/ommongodb/ommongodb.c
+@@ -33,9 +33,9 @@
+ #include <stdint.h>
+ #include <time.h>
+ #include <mongo.h>
+-#include <json.h>
++#include <json-c/json.h>
+ /* For struct json_object_iter, should not be necessary in future versions */
+-#include <json_object_private.h>
++#include <json-c/json_object_private.h>
+ 
+ #include "rsyslog.h"
+ #include "conf.h"
+diff --git a/runtime/msg.c b/runtime/msg.c
+index d04ce7b..b367e1f 100644
+--- a/runtime/msg.c
++++ b/runtime/msg.c
+@@ -41,9 +41,9 @@
+ #endif
+ #include <netdb.h>
+ #include <libestr.h>
+-#include <json.h>
++#include <json-c/json.h>
+ /* For struct json_object_iter, should not be necessary in future versions */
+-#include <json_object_private.h>
++#include <json-c/json_object_private.h>
+ #if HAVE_MALLOC_H
+ #  include <malloc.h>
+ #endif
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/replace_deprecated_GnuTLS_functions.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/replace_deprecated_GnuTLS_functions.patch
new file mode 100644
index 0000000..be05eee
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/replace_deprecated_GnuTLS_functions.patch
@@ -0,0 +1,73 @@
+replace deprecated GnuTLS functions with newer ones if available
+
+closes https://github.com/rsyslog/rsyslog/issues/302
+
+Upstream fix https://github.com/rsyslog/rsyslog/commit/b34c35e38f258935c0e92ca754da097d7f3f0f58
+
+Upstream-Status: Backport
+Signed-off-by: Tudor Florea  <tudor.florea@enea.com>
+
+---
+ configure.ac       |  2 ++
+ runtime/nsd_gtls.c | 21 ++++++++++++++++++---
+ 2 files changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 643fc94..56835fb 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -763,6 +763,8 @@ AC_ARG_ENABLE(gnutls,
+ if test "x$enable_gnutls" = "xyes"; then
+ 	PKG_CHECK_MODULES(GNUTLS, gnutls >= 1.4.0)
+ 	AC_DEFINE([ENABLE_GNUTLS], [1], [Indicator that GnuTLS is present])
++        AC_CHECK_LIB(gnutls, gnutls_global_init)
++	AC_CHECK_FUNCS(gnutls_certificate_set_retrieve_function,,)
+ fi
+ AM_CONDITIONAL(ENABLE_GNUTLS, test x$enable_gnutls = xyes)
+ 
+diff --git a/runtime/nsd_gtls.c b/runtime/nsd_gtls.c
+index a763e4b..e127834 100644
+--- a/runtime/nsd_gtls.c
++++ b/runtime/nsd_gtls.c
+@@ -232,15 +232,26 @@ gtlsLoadOurCertKey(nsd_gtls_t *pThis)
+  */
+ static int
+ gtlsClientCertCallback(gnutls_session session,
+-              __attribute__((unused)) const gnutls_datum* req_ca_rdn, int __attribute__((unused)) nreqs,
+-              __attribute__((unused)) const gnutls_pk_algorithm* sign_algos, int __attribute__((unused)) sign_algos_length,
+-              gnutls_retr_st *st)
++        __attribute__((unused)) const gnutls_datum* req_ca_rdn,
++	int __attribute__((unused)) nreqs,
++        __attribute__((unused)) const gnutls_pk_algorithm* sign_algos,
++	int __attribute__((unused)) sign_algos_length,
++#if HAVE_GNUTLS_CERTIFICATE_SET_RETRIEVE_FUNCTION
++	gnutls_retr2_st* st
++#else
++        gnutls_retr_st *st
++#endif
++	)
+ {
+ 	nsd_gtls_t *pThis;
+ 
+ 	pThis = (nsd_gtls_t*) gnutls_session_get_ptr(session);
+ 
++#if HAVE_GNUTLS_CERTIFICATE_SET_RETRIEVE_FUNCTION
++	st->cert_type = GNUTLS_CRT_X509;
++#else
+ 	st->type = GNUTLS_CRT_X509;
++#endif
+ 	st->ncerts = 1;
+ 	st->cert.x509 = &pThis->ourCert;
+ 	st->key.x509 = pThis->ourKey;
+@@ -1625,7 +1625,11 @@ Connect(nsd_t *pNsd, int family, uchar *port, uchar *host)
+ 	gnutls_session_set_ptr(pThis->sess, (void*)pThis);
+ 	iRet = gtlsLoadOurCertKey(pThis); /* first load .pem files */
+ 	if(iRet == RS_RET_OK) {
++#		if HAVE_GNUTLS_CERTIFICATE_SET_RETRIEVE_FUNCTION 
++		gnutls_certificate_set_retrieve_function(xcred, gtlsClientCertCallback);
++#		else
+ 		gnutls_certificate_client_set_retrieve_function(xcred, gtlsClientCertCallback);
++#	endif
+ 	} else if(iRet != RS_RET_CERTLESS) {
+ 		FINALIZE; /* we have an error case! */
+ 	}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog-fix-ptest-not-finish.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog-fix-ptest-not-finish.patch
new file mode 100644
index 0000000..bdcb6e2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog-fix-ptest-not-finish.patch
@@ -0,0 +1,96 @@
+$MaxMessageSize doesn't work if before $IncludeConfig diag-common.conf, then
+test cases fall into infinite loop with error message:
+
+8062.511110729:4902c480: error: message received is larger than max msg size, we split it
+8062.511152265:4902c480: discarding zero-sized message
+
+Update configure to fix it.
+
+Upstream-Status: pending
+
+Kai Kang <kai.kang@windriver.com>
+---
+diff -Nru rsyslog-7.4.4/tests/testsuites/complex1.conf rsyslog-7.4.4.new/tests/testsuites/complex1.conf
+--- rsyslog-7.4.4/tests/testsuites/complex1.conf	2013-08-31 00:30:41.000000000 +0800
++++ rsyslog-7.4.4.new/tests/testsuites/complex1.conf	2013-12-18 14:28:10.644004184 +0800
+@@ -1,7 +1,7 @@
+ # complex test case with multiple actions in gzip mode
+ # rgerhards, 2009-05-22
+-$MaxMessageSize 10k
+ $IncludeConfig diag-common.conf
++$MaxMessageSize 10k
+ 
+ $MainMsgQueueTimeoutEnqueue 5000
+ 
+diff -Nru rsyslog-7.4.4/tests/testsuites/gzipwr_large.conf rsyslog-7.4.4.new/tests/testsuites/gzipwr_large.conf
+--- rsyslog-7.4.4/tests/testsuites/gzipwr_large.conf	2012-04-04 14:29:55.000000000 +0800
++++ rsyslog-7.4.4.new/tests/testsuites/gzipwr_large.conf	2013-12-18 14:28:10.645004186 +0800
+@@ -1,7 +1,7 @@
+ # simple async writing test
+ # rgerhards, 2010-03-09
+-$MaxMessageSize 10k
+ $IncludeConfig diag-common.conf
++$MaxMessageSize 10k
+ 
+ $ModLoad ../plugins/imtcp/.libs/imtcp
+ $MainMsgQueueTimeoutShutdown 10000
+diff -Nru rsyslog-7.4.4/tests/testsuites/gzipwr_large_dynfile.conf rsyslog-7.4.4.new/tests/testsuites/gzipwr_large_dynfile.conf
+--- rsyslog-7.4.4/tests/testsuites/gzipwr_large_dynfile.conf	2012-04-04 14:29:55.000000000 +0800
++++ rsyslog-7.4.4.new/tests/testsuites/gzipwr_large_dynfile.conf	2013-12-18 14:28:10.645004186 +0800
+@@ -1,7 +1,7 @@
+ # simple async writing test
+ # rgerhards, 2010-03-09
+-$MaxMessageSize 10k
+ $IncludeConfig diag-common.conf
++$MaxMessageSize 10k
+ 
+ $ModLoad ../plugins/imtcp/.libs/imtcp
+ $MainMsgQueueTimeoutShutdown 10000
+diff -Nru rsyslog-7.4.4/tests/testsuites/imptcp_conndrop.conf rsyslog-7.4.4.new/tests/testsuites/imptcp_conndrop.conf
+--- rsyslog-7.4.4/tests/testsuites/imptcp_conndrop.conf	2013-08-31 00:30:41.000000000 +0800
++++ rsyslog-7.4.4.new/tests/testsuites/imptcp_conndrop.conf	2013-12-18 14:28:10.646004189 +0800
+@@ -1,7 +1,7 @@
+ # simple async writing test
+ # rgerhards, 2010-03-09
+-$MaxMessageSize 10k
+ $IncludeConfig diag-common.conf
++$MaxMessageSize 10k
+ 
+ $ModLoad ../plugins/imptcp/.libs/imptcp
+ $MainMsgQueueTimeoutShutdown 10000
+diff -Nru rsyslog-7.4.4/tests/testsuites/imptcp_large.conf rsyslog-7.4.4.new/tests/testsuites/imptcp_large.conf
+--- rsyslog-7.4.4/tests/testsuites/imptcp_large.conf	2013-08-31 00:30:41.000000000 +0800
++++ rsyslog-7.4.4.new/tests/testsuites/imptcp_large.conf	2013-12-18 14:28:10.646004189 +0800
+@@ -1,7 +1,7 @@
+ # simple async writing test
+ # rgerhards, 2010-03-09
+-$MaxMessageSize 10k
+ $IncludeConfig diag-common.conf
++$MaxMessageSize 10k
+ 
+ $ModLoad ../plugins/imptcp/.libs/imptcp
+ $MainMsgQueueTimeoutShutdown 10000
+diff -Nru rsyslog-7.4.4/tests/testsuites/imtcp_conndrop.conf rsyslog-7.4.4.new/tests/testsuites/imtcp_conndrop.conf
+--- rsyslog-7.4.4/tests/testsuites/imtcp_conndrop.conf	2013-07-19 20:59:03.000000000 +0800
++++ rsyslog-7.4.4.new/tests/testsuites/imtcp_conndrop.conf	2013-12-18 14:28:10.646004189 +0800
+@@ -1,7 +1,7 @@
+ # simple async writing test
+ # rgerhards, 2010-03-09
+-$MaxMessageSize 10k
+ $IncludeConfig diag-common.conf
++$MaxMessageSize 10k
+ 
+ $ModLoad ../plugins/imtcp/.libs/imtcp
+ $MainMsgQueueTimeoutShutdown 10000
+diff -Nru rsyslog-7.4.4/tests/testsuites/wr_large.conf rsyslog-7.4.4.new/tests/testsuites/wr_large.conf
+--- rsyslog-7.4.4/tests/testsuites/wr_large.conf	2012-04-04 14:29:55.000000000 +0800
++++ rsyslog-7.4.4.new/tests/testsuites/wr_large.conf	2013-12-18 14:28:10.647004190 +0800
+@@ -1,7 +1,7 @@
+ # simple async writing test
+ # rgerhards, 2010-03-09
+-$MaxMessageSize 10k
+ $IncludeConfig diag-common.conf
++$MaxMessageSize 10k
+ 
+ $ModLoad ../plugins/imtcp/.libs/imtcp
+ $MainMsgQueueTimeoutShutdown 10000
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.conf b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.conf
new file mode 100644
index 0000000..324ae6d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.conf
@@ -0,0 +1,86 @@
+# if you experience problems, check
+# http://www.rsyslog.com/troubleshoot for assistance
+
+# rsyslog v3: load input modules
+# If you do not load inputs, nothing happens!
+# You may need to set the module load path if modules are not found.
+#
+# Ported from debian's sysklogd.conf
+
+$ModLoad immark   # provides --MARK-- message capability
+$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
+$ModLoad imklog   # kernel logging (formerly provided by rklogd)
+
+#
+# Set the default permissions
+#
+$FileOwner root
+$FileGroup adm
+$FileCreateMode 0640
+$DirCreateMode 0755
+$Umask 0022
+
+auth,authpriv.*                 /var/log/auth.log
+*.*;auth,authpriv.none          -/var/log/syslog
+cron.*                          /var/log/cron.log
+daemon.*                        -/var/log/daemon.log
+kern.*                          -/var/log/kern.log
+lpr.*                           -/var/log/lpr.log
+mail.*                          -/var/log/mail.log
+user.*                          -/var/log/user.log
+
+#
+# Logging for the mail system.  Split it up so that
+# it is easy to write scripts to parse these files.
+#
+mail.info                       -/var/log/mail.info
+mail.warn                       -/var/log/mail.warn
+mail.err                        /var/log/mail.err
+
+# Logging for INN news system
+#
+news.crit                       /var/log/news.crit
+news.err                        /var/log/news.err
+news.notice                     -/var/log/news.notice
+
+#
+# Some `catch-all' logfiles.
+#
+*.=debug;\
+        auth,authpriv.none;\
+        news.none;mail.none     -/var/log/debug
+*.=info;*.=notice;*.=warn;\
+        auth,authpriv.none;\
+        cron,daemon.none;\
+        mail,news.none          -/var/log/messages
+
+#
+# Emergencies are sent to everybody logged in.
+#
+*.emerg                         :omusrmsg:*
+
+# Save boot messages also to boot.log
+local7.*                                                /var/log/boot.log
+
+# Remote Logging (we use TCP for reliable delivery)
+# An on-disk queue is created for this action. If the remote host is
+# down, messages are spooled to disk and sent when it is up again.
+#$WorkDirectory /var/spool/rsyslog # where to place spool files
+#$ActionQueueFileName uniqName # unique name prefix for spool files
+$ActionQueueMaxDiskSpace 10m   # 1gb space limit (use as much as possible)
+#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
+#$ActionQueueType LinkedList   # run asynchronously
+#$ActionResumeRetryCount -1    # infinite retries if host is down
+# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
+#*.* @@remote-host:514
+
+
+# ######### Receiving Messages from Remote Hosts ##########
+# TCP Syslog Server:
+# provides TCP syslog reception and GSS-API (if compiled to support it)
+#$ModLoad imtcp.so  # load module
+#$InputTCPServerRun 514 # start up TCP listener at port 514
+
+# UDP Syslog Server:
+#$ModLoad imudp.so  # provides UDP syslog reception
+#$UDPServerRun 514 # start a UDP syslog server at standard port 514
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
new file mode 100644
index 0000000..94ec517
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
@@ -0,0 +1,39 @@
+# /etc/logrotate.d/rsyslog - Ported from Debian
+
+/var/log/syslog
+{
+        rotate 7
+        daily
+        missingok
+        notifempty
+        delaycompress
+        compress
+        postrotate
+		/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
+        endscript
+}
+
+/var/log/mail.info
+/var/log/mail.warn
+/var/log/mail.err
+/var/log/mail.log
+/var/log/daemon.log
+/var/log/kern.log
+/var/log/auth.log
+/var/log/user.log
+/var/log/lpr.log
+/var/log/cron.log
+/var/log/debug
+/var/log/messages
+{
+        rotate 4
+        weekly
+        missingok
+        notifempty
+        compress
+        delaycompress
+        sharedscripts
+        postrotate
+		/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
+        endscript
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/run-ptest b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/run-ptest
new file mode 100644
index 0000000..3770a75
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+#
+make -C tests -k check-TESTS
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/use-pkgconfig-to-check-libgcrypt.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/use-pkgconfig-to-check-libgcrypt.patch
new file mode 100644
index 0000000..ebc1070
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/use-pkgconfig-to-check-libgcrypt.patch
@@ -0,0 +1,48 @@
+From 5c3ba79177f7d1763db33c4358af2af60ff214b7 Mon Sep 17 00:00:00 2001
+From: Roy Li <rongqing.li@windriver.com> 
+Date: Wed, 18 Jun 2014 13:46:52 +0800
+Subject: [PATCH] use pkgconfig to check libgcrypt
+
+Upstream-status: Inappropriate [configuration]
+
+libgcrypt does no longer provide libgcrypt-config, and provide
+*.pc, so we should use pkgconfig to check
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ configure.ac |   19 +------------------
+ 1 file changed, 1 insertion(+), 18 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 017116e..1b880f8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -784,24 +784,7 @@ AC_ARG_ENABLE(libgcrypt,
+         [enable_libgcrypt=yes]
+ )
+ if test "x$enable_libgcrypt" = "xyes"; then
+-        AC_CHECK_PROG(
+-      	    [HAVE_LIBGCRYPT_CONFIG],
+-            [libgcrypt-config],
+-            [yes],,,
+-            )
+-        if test "x${HAVE_LIBGCRYPT_CONFIG}" != "xyes"; then
+-           AC_MSG_FAILURE([libgcrypt-config not found in PATH])
+-        fi
+-        AC_CHECK_LIB(
+-		[gcrypt],
+-        	[gcry_cipher_open],
+-        	[LIBGCRYPT_CFLAGS="`libgcrypt-config --cflags`"
+-        	LIBGCRYPT_LIBS="`libgcrypt-config --libs`"
+-        	],
+-        	[AC_MSG_FAILURE([libgcrypt is missing])],
+-        	[`libgcrypt-config --libs --cflags`]
+-        	)
+-	AC_DEFINE([ENABLE_LIBGCRYPT], [1], [Indicator that LIBGCRYPT is present])
++	PKG_CHECK_MODULES(LIBGCRYPT, libgcrypt)
+ fi
+ AM_CONDITIONAL(ENABLE_LIBGCRYPT, test x$enable_libgcrypt = xyes)
+ AC_SUBST(LIBGCRYPT_CFLAGS)
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/use_gnutls_certificate_type_set_priority_only_if_available.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/use_gnutls_certificate_type_set_priority_only_if_available.patch
new file mode 100644
index 0000000..e1dab75
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/use_gnutls_certificate_type_set_priority_only_if_available.patch
@@ -0,0 +1,79 @@
+From 21674039db99d1067e9df4df04d965297d62c6af Mon Sep 17 00:00:00 2001
+From: Rainer Gerhards <rgerhards@adiscon.com>
+Date: Mon, 18 May 2015 09:36:02 +0200
+Subject: [PATCH] use gnutls_certificate_type_set_priority() only if available
+
+The gnutls_certificate_type_set_priority function is deprecated
+and not available in recent GnuTLS versions. However, there is no
+doc how to properly replace it with gnutls_priority_set_direct.
+A lot of folks have simply removed it, when they also called
+gnutls_set_default_priority. This is what we now also do. If
+this causes problems or someone has an idea of how to replace
+the deprecated function in a better way, please let us know!
+In any case, we use it as long as it is available and let
+not insult us by the deprecation warnings.
+
+Upstream-Status: Backport
+Signed-off-by: Tudor Florea  <tudor.florea@enea.com>
+
+---
+ configure.ac       |  1 +
+ runtime/nsd_gtls.c | 18 ++++++++++++++++--
+ 2 files changed, 17 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 56835fb..1c2be01 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -765,6 +765,7 @@ if test "x$enable_gnutls" = "xyes"; then
+ 	AC_DEFINE([ENABLE_GNUTLS], [1], [Indicator that GnuTLS is present])
+         AC_CHECK_LIB(gnutls, gnutls_global_init)
+ 	AC_CHECK_FUNCS(gnutls_certificate_set_retrieve_function,,)
++	AC_CHECK_FUNCS(gnutls_certificate_type_set_priority,,)
+ fi
+ AM_CONDITIONAL(ENABLE_GNUTLS, test x$enable_gnutls = xyes)
+ 
+diff --git a/runtime/nsd_gtls.c b/runtime/nsd_gtls.c
+index e127834..4b6aab1 100644
+--- a/runtime/nsd_gtls.c
++++ b/runtime/nsd_gtls.c
+@@ -1658,8 +1658,9 @@ Connect(nsd_t *pNsd, int family, uchar *port, uchar *host)
+ 	nsd_gtls_t *pThis = (nsd_gtls_t*) pNsd;
+ 	int sock;
+ 	int gnuRet;
+-	/* TODO: later? static const int cert_type_priority[3] = { GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0 };*/
++#	if HAVE_GNUTLS_CERTIFICATE_TYPE_SET_PRIORITY
+ 	static const int cert_type_priority[2] = { GNUTLS_CRT_X509, 0 };
++#	endif
+ 	DEFiRet;
+ 
+ 	ISOBJ_TYPE_assert(pThis, nsd_gtls);
+@@ -1688,14 +1689,27 @@ Connect(nsd_t *pNsd, int family, uchar *port, uchar *host)
+ 		gnutls_certificate_set_retrieve_function(xcred, gtlsClientCertCallback);
+ #		else
+ 		gnutls_certificate_client_set_retrieve_function(xcred, gtlsClientCertCallback);
+-#	endif
++#		endif
+ 	} else if(iRet != RS_RET_CERTLESS) {
+ 		FINALIZE; /* we have an error case! */
+ 	}
+ 
+ 	/* Use default priorities */
+ 	CHKgnutls(gnutls_set_default_priority(pThis->sess));
++#	if HAVE_GNUTLS_CERTIFICATE_TYPE_SET_PRIORITY
++	/* The gnutls_certificate_type_set_priority function is deprecated
++	 * and not available in recent GnuTLS versions. However, there is no
++	 * doc how to properly replace it with gnutls_priority_set_direct.
++	 * A lot of folks have simply removed it, when they also called
++	 * gnutls_set_default_priority. This is what we now also do. If
++	 * this causes problems or someone has an idea of how to replace
++	 * the deprecated function in a better way, please let us know!
++	 * In any case, we use it as long as it is available and let
++	 * not insult us by the deprecation warnings.
++	 * 2015-05-18 rgerhards
++	 */
+ 	CHKgnutls(gnutls_certificate_type_set_priority(pThis->sess, cert_type_priority));
++#	endif
+ 
+ 	/* put the x509 credentials to the current session */
+ 	CHKgnutls(gnutls_credentials_set(pThis->sess, GNUTLS_CRD_CERTIFICATE, xcred));
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_7.6.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_7.6.1.bb
new file mode 100644
index 0000000..c1d923c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_7.6.1.bb
@@ -0,0 +1,178 @@
+SUMMARY = "Rsyslog is an enhanced multi-threaded syslogd"
+DESCRIPTION = "\
+Rsyslog is an enhanced syslogd supporting, among others, MySQL,\
+ PostgreSQL, failover log destinations, syslog/tcp, fine grain\
+ output format control, high precision timestamps, queued operations\
+ and the ability to filter on any message part. It is quite\
+ compatible to stock sysklogd and can be used as a drop-in replacement.\
+ Its advanced features make it suitable for enterprise-class,\
+ encryption protected syslog relay chains while at the same time being\
+ very easy to setup for the novice user."
+
+DEPENDS = "zlib libestr json-c bison-native flex-native liblogging"
+HOMEPAGE = "http://www.rsyslog.com/"
+LICENSE = "GPLv3 & LGPLv3 & Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=51d9635e646fb75e1b74c074f788e973 \
+                    file://COPYING.LESSER;md5=cb7903f1e5c39ae838209e130dca270a \
+                    file://COPYING.ASL20;md5=052f8a09206615ab07326ff8ce2d9d32\
+"
+
+SRC_URI = "http://www.rsyslog.com/download/files/download/rsyslog/${BPN}-${PV}.tar.gz \
+           file://initscript \
+           file://rsyslog.conf \
+           file://rsyslog.logrotate \
+           file://use-pkgconfig-to-check-libgcrypt.patch \
+           file://run-ptest \
+           file://rsyslog-fix-ptest-not-finish.patch \
+           file://json-0.12-fix.patch \
+           file://replace_deprecated_GnuTLS_functions.patch \
+           file://use_gnutls_certificate_type_set_priority_only_if_available.patch \
+           file://enable_tls_ptests.patch \
+"
+
+SRC_URI[md5sum] = "093c462a5245012bd9e7b82dd8aedffb"
+SRC_URI[sha256sum] = "357f089d866c351d5fe5b7139fa85b010223d77b3c21f29b2a1baa8688926111"
+
+inherit autotools pkgconfig systemd update-rc.d update-alternatives ptest
+
+EXTRA_OECONF += "--enable-cached-man-pages"
+
+# first line is default yes in configure
+PACKAGECONFIG ??= " \
+    zlib rsyslogd rsyslogrt klog inet regexp uuid libgcrypt \
+    imdiag gnutls imfile \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'snmp', 'snmp', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'testbench ${VALGRIND}', '', d)} \
+"
+
+# default yes in configure
+PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib,"
+PACKAGECONFIG[rsyslogd] = "--enable-rsyslogd,--disable-rsyslogd,,"
+PACKAGECONFIG[rsyslogrt] = "--enable-rsyslogrt,--disable-rsyslogrt,,"
+PACKAGECONFIG[inet] = "--enable-inet,--disable-inet,,"
+PACKAGECONFIG[klog] = "--enable-klog,--disable-klog,,"
+PACKAGECONFIG[regexp] = "--enable-regexp,--disable-regexp,,"
+PACKAGECONFIG[uuid] = "--enable-uuid,--disable-uuid,util-linux,"
+PACKAGECONFIG[libgcrypt] = "--enable-libgcrypt,--disable-libgcrypt,libgcrypt,"
+PACKAGECONFIG[testbench] = "--enable-testbench,--disable-testbench,,"
+
+# default no in configure
+PACKAGECONFIG[debug] = "--enable-debug,--disable-debug,,"
+PACKAGECONFIG[imdiag] = "--enable-imdiag,--disable-imdiag,,"
+PACKAGECONFIG[imfile] = "--enable-imfile,--disable-imfile,,"
+PACKAGECONFIG[snmp] = "--enable-snmp,--disable-snmp,net-snmp,"
+PACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls,"
+PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd,"
+PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5,"
+PACKAGECONFIG[postgresql] = "--enable-pgsql,--disable-pgsql,postgresql,"
+PACKAGECONFIG[libdbi] = "--enable-libdbi,--disable-libdbi,libdbi,"
+PACKAGECONFIG[mail] = "--enable-mail,--disable-mail,,"
+PACKAGECONFIG[gui] = "--enable-gui,--disable-gui,,"
+PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind,"
+
+TESTDIR = "tests"
+do_compile_ptest() {
+    echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${TESTDIR}/Makefile
+    oe_runmake -C ${TESTDIR} buildtest-TESTS
+}
+
+do_install_ptest() {
+    # install the tests
+    cp -rf ${S}/${TESTDIR} ${D}${PTEST_PATH}
+    cp -rf ${B}/${TESTDIR} ${D}${PTEST_PATH}
+
+    # do NOT need to rebuild Makefile itself
+    sed -i 's/^Makefile:.*$/Makefile:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+
+    # fix the srcdir, top_srcdir
+    sed -i 's,^\(srcdir = \).*,\1${PTEST_PATH}/tests,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+    sed -i 's,^\(top_srcdir = \).*,\1${PTEST_PATH}/tests,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+
+    # valgrind is not compatible with arm and mips,
+    # so remove related test cases if there is no valgrind.
+    if [ x${VALGRIND} = x ]; then
+        sed -i '/udp-msgreduc-/d' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+    fi
+
+    # install test-driver
+    install -m 644 ${S}/test-driver ${D}${PTEST_PATH}/${TESTDIR}
+
+    # install necessary links
+    install -d ${D}${PTEST_PATH}/tools
+    ln -sf ${sbindir}/rsyslogd ${D}${PTEST_PATH}/tools/rsyslogd
+
+    install -d ${D}${PTEST_PATH}/runtime
+    install -d ${D}${PTEST_PATH}/runtime/.libs
+    (
+        cd ${D}/${libdir}/rsyslog
+        allso="*.so"
+        for i in $allso; do
+            ln -sf ${libdir}/rsyslog/$i ${D}${PTEST_PATH}/runtime/.libs/$i
+        done
+    )
+
+    # fix the module load path with runtime/.libs
+    find ${D}${PTEST_PATH}/${TESTDIR} -name \*.conf -exec \
+        sed -i -e 's:../plugins/.*/.libs/:../runtime/.libs/:' \
+        '{}' \;
+}
+
+do_install_append() {
+    install -d "${D}${sysconfdir}/init.d"
+    install -m 755 ${WORKDIR}/initscript ${D}${sysconfdir}/init.d/syslog.${BPN}
+    install -m 644 ${WORKDIR}/rsyslog.conf ${D}${sysconfdir}/rsyslog.conf
+    install -m 644 ${WORKDIR}/rsyslog.logrotate ${D}${sysconfdir}/logrotate.rsyslog
+}
+
+FILES_${PN} += "${bindir}"
+
+INITSCRIPT_NAME = "syslog"
+INITSCRIPT_PARAMS = "defaults"
+
+# higher than sysklogd's 100
+ALTERNATIVE_PRIORITY = "110"
+
+ALTERNATIVE_${PN} = "syslogd syslog-conf syslog-logrotate"
+
+ALTERNATIVE_LINK_NAME[syslogd] = "${base_sbindir}/syslogd"
+ALTERNATIVE_TARGET[syslogd] = "${sbindir}/rsyslogd"
+ALTERNATIVE_LINK_NAME[syslog-conf] = "${sysconfdir}/syslog.conf"
+ALTERNATIVE_TARGET[syslog-conf] = "${sysconfdir}/rsyslog.conf"
+ALTERNATIVE_LINK_NAME[syslog-logrotate] = "${sysconfdir}/logrotate.d/syslog"
+ALTERNATIVE_TARGET[syslog-logrotate] = "${sysconfdir}/logrotate.rsyslog"
+
+CONFFILES_${PN} = "${sysconfdir}/rsyslog.conf"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "${BPN}.service"
+
+RDEPENDS_${PN} += "logrotate"
+
+# for rsyslog-ptest
+VALGRIND = "valgrind"
+VALGRIND_mips = ""
+VALGRIND_mips64 = ""
+VALGRIND_mips64n32 = ""
+VALGRIND_arm = ""
+VALGRIND_aarch64 = ""
+RDEPENDS_${PN}-ptest += "make diffutils gzip"
+RRECOMMENDS_${PN}-ptest += "${TCLIBC}-dbg ${VALGRIND}"
+
+# no syslog-init for systemd
+python () {
+    if bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
+        pn = d.getVar('PN', True)
+        sysconfdir = d.getVar('sysconfdir', True)
+        d.appendVar('ALTERNATIVE_%s' % (pn), ' syslog-init')
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', 'syslog-init', '%s/init.d/syslog' % (sysconfdir))
+        d.setVarFlag('ALTERNATIVE_TARGET', 'syslog-init', '%s/init.d/syslog.%s' % (d.getVar('sysconfdir', True), d.getVar('BPN', True)))
+
+    if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d):
+        pn = d.getVar('PN', True)
+        d.appendVar('ALTERNATIVE_%s' % (pn), ' syslog-service')
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', 'syslog-service', '%s/systemd/system/syslog.service' % (d.getVar('sysconfdir', True)))
+        d.setVarFlag('ALTERNATIVE_TARGET', 'syslog-service', '%s/system/rsyslog.service' % (d.getVar('systemd_unitdir', True)))
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-cmpi-devel/sblim-cmpi-devel/sblim-cmpi-devel-2.0.3-docdir.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-cmpi-devel/sblim-cmpi-devel/sblim-cmpi-devel-2.0.3-docdir.patch
new file mode 100644
index 0000000..58940c1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-cmpi-devel/sblim-cmpi-devel/sblim-cmpi-devel-2.0.3-docdir.patch
@@ -0,0 +1,17 @@
+Port from Fedora20
+
+Upstream-Status: Pending
+Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
+
+diff -up sblim-cmpi-devel-2.0.3/Makefile.in.orig sblim-cmpi-devel-2.0.3/Makefile.in
+--- sblim-cmpi-devel-2.0.3/Makefile.in.orig	2012-07-31 06:11:51.000000000 +0200
++++ sblim-cmpi-devel-2.0.3/Makefile.in	2013-08-07 18:28:09.600712807 +0200
+@@ -221,7 +221,7 @@ build_vendor = @build_vendor@
+ builddir = @builddir@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+-docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
++docdir = $(datadir)/doc/$(PACKAGE)
+ dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-cmpi-devel/sblim-cmpi-devel_2.0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-cmpi-devel/sblim-cmpi-devel_2.0.3.bb
new file mode 100644
index 0000000..0e5fc7b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-cmpi-devel/sblim-cmpi-devel_2.0.3.bb
@@ -0,0 +1,18 @@
+SUMMARY = "SBLIM CMPI Provider Development Support"
+DESCRIPTION = "\
+This packages provides the C and C++ CMPI header files needed by provider \
+developers and can be used standalone. If used for C++ provider development \
+it is also necessary to have tog-pegasus-devel installed."
+HOMEPAGE = "http://sblim.wiki.sourceforge.net/"
+LICENSE = "EPL-1.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f63d3a4e701129e869e89d7dcac8982"
+SECTION = "Development/Libraries"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/sblim/${BP}.tar.bz2 \
+           file://sblim-cmpi-devel-2.0.3-docdir.patch"
+SRC_URI[md5sum] = "b934616f88a848f17ca3cf1b9e792cbf"
+SRC_URI[sha256sum] = "1671cabff6b922b6fde897673d9fdafd56c9310f82a7eacc0547d596b9cdfea6"
+
+inherit autotools
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfc-common/sblim-sfc-common_1.0.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfc-common/sblim-sfc-common_1.0.1.bb
new file mode 100644
index 0000000..2a9b4bb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfc-common/sblim-sfc-common_1.0.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Common functions for SBLIM Small Footprint CIM Broker and CIM Client Library."
+DESCRIPTION = "\
+This package provides a common library for functions shared between Small Footprint CIM Broker (sblim-sfcb) \
+Small Footprint CIM Client (and sblim-sfcc)."
+HOMEPAGE = "http://sourceforge.net/projects/sblim/"
+LICENSE = "EPL"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f300afd598546add034364cd0a533261"
+SECTION = "Development/Libraries"
+
+DEPENDS = "cmpi-bindings"
+
+S = "${WORKDIR}/sblim-sfcCommon-${PV}"
+SRC_URI = "http://downloads.sourceforge.net/sblim/sblim-sfcCommon-${PV}.tar.bz2"
+SRC_URI[md5sum] = "8aa2655d97bdea54c4750f220b40990c"
+SRC_URI[sha256sum] = "b9b1037173d6ae0181c3bd5a316ddab5afd6a342ad0dbdc18e940fc0ad2c3297"
+
+inherit autotools
+
+do_install() {
+    oe_runmake DESTDIR=${D} install
+
+    rm -rf ${D}${libdir}/libsfcUtil.a
+    rm -rf ${D}${libdir}/libsfcUtil.la
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/files/sfcb.service b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/files/sfcb.service
new file mode 100644
index 0000000..5adf63c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/files/sfcb.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Small Footprint CIM Broker Service
+After=syslog.target
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/sfcbd -d
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.15-fix-provider-debugging.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.15-fix-provider-debugging.patch
new file mode 100644
index 0000000..4fbecaa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.15-fix-provider-debugging.patch
@@ -0,0 +1,12 @@
+diff -up sblim-sfcb-1.4.5/providerDrv.c.orig sblim-sfcb-1.4.5/providerDrv.c
+--- sblim-sfcb-1.4.5/providerDrv.c.orig	2013-09-04 12:59:22.140813239 +0200
++++ sblim-sfcb-1.4.5/providerDrv.c	2013-09-04 12:59:40.511870274 +0200
+@@ -3585,7 +3585,7 @@ processProviderInvocationRequests(char *
+     rc = spRecvReq(&providerSockets.receive, &parms->requestor,
+                    (void **) &parms->req, &rl, &mqg);
+     if (mqg.rdone) {
+-      int             debug_break = 0;
++      volatile int debug_break = 0;
+       if (rc != 0) {
+         mlogf(M_ERROR,M_SHOW, "spRecvReq returned error %d. Skipping message.\n", rc);
+         free(parms);
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.16-maxMsgLen.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.16-maxMsgLen.patch
new file mode 100644
index 0000000..a0dd816
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.16-maxMsgLen.patch
@@ -0,0 +1,14 @@
+diff -up sblim-sfcb-1.3.16/sfcb.cfg.pre.in.old sblim-sfcb-1.3.16/sfcb.cfg.pre.in
+--- sblim-sfcb-1.3.16/sfcb.cfg.pre.in.old	2012-06-13 23:21:09.000000000 +0200
++++ sblim-sfcb-1.3.16/sfcb.cfg.pre.in	2013-06-24 15:34:38.881992781 +0200
+@@ -113,8 +113,8 @@ provProcs:      32
+ 
+ ## Max message length, in bytes. This is a limit on the size of messages
+ ## written across sockets, for instance, between providers and SFCB.
+-## Default is 10000000
+-maxMsgLen:      10000000
++## Default is 100000000
++maxMsgLen:      100000000
+ 
+ ## Location of the registration directory, where providerRegister can be found
+ ## Default is @localstatedir@/lib/sfcb/registration
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.16-multilib-man-cfg.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.16-multilib-man-cfg.patch
new file mode 100644
index 0000000..c8cece2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.16-multilib-man-cfg.patch
@@ -0,0 +1,41 @@
+diff -up sblim-sfcb-1.3.16/man/sfcbd.1.pre.in.orig sblim-sfcb-1.3.16/man/sfcbd.1.pre.in
+--- sblim-sfcb-1.3.16/man/sfcbd.1.pre.in.orig	2014-02-26 14:05:32.213091734 +0100
++++ sblim-sfcb-1.3.16/man/sfcbd.1.pre.in	2014-02-26 15:10:54.476196379 +0100
+@@ -151,7 +151,7 @@ Default=\fI@localstatedir@/lib/sfcb/regi
+ .TP
+ .B providerDirs
+ A space separated list of directories where sfcb is looking for provider
+-libraries. Default=\fI@libdir@\ @libdir@/cmpi\fR
++libraries. Default=\fI/usr/lib\ /usr/lib/cmpi /usr/lib64\ /usr/lib64/cmpi\fR
+ .TP
+ .B providerSampleInterval
+ The interval in seconds at which the provider manager is checking for
+@@ -275,11 +275,11 @@ SSL private key file for sfcb.
+ SSL client certificate / trust store for sfcb.
+ .SH LIBRARIES
+ .TP
+-.I @libdir@/libsfc*
++.I /usr/lib/libsfc* /usr/lib64/libsfc*
+ Binaries for sfcb runtime libraries.
+ .TP
+-.I @libdir@/cmpi/*
+-Binaries for providers
++.I /usr/lib/cmpi/* /usr/lib64/cmpi/*
++Binaries for providers.
+ .SH AUTHOR
+ Adrian Schuur <schuur@de.ibm.com>
+ .SH CONRIBUTORS
+diff -up sblim-sfcb-1.3.16/sfcb.cfg.pre.in.orig sblim-sfcb-1.3.16/sfcb.cfg.pre.in
+--- sblim-sfcb-1.3.16/sfcb.cfg.pre.in.orig	2014-02-26 15:35:43.133869718 +0100
++++ sblim-sfcb-1.3.16/sfcb.cfg.pre.in	2014-02-26 15:38:12.794240532 +0100
+@@ -121,8 +121,8 @@ maxMsgLen:      100000000
+ registrationDir: @localstatedir@/lib/sfcb/registration
+ 
+ ## Locations to look for provider libraries. Delimit paths with a space.
+-## Default is @libdir@/sfcb @libdir@ @libdir@/cmpi
+-providerDirs: @libdir@/sfcb @libdir@ @libdir@/cmpi
++## Default is /usr/lib/sfcb /usr/lib64/sfcb /usr/lib /usr/lib64 /usr/lib/cmpi /usr/lib64/cmpi
++providerDirs: /usr/lib/sfcb /usr/lib64/sfcb /usr/lib /usr/lib64 /usr/lib/cmpi /usr/lib64/cmpi
+ 
+ ## Enable the root/interop namespace (affects indications)
+ ## Default: true
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.9-sfcbrepos-schema-location.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.9-sfcbrepos-schema-location.patch
new file mode 100644
index 0000000..7f95a9d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.3.9-sfcbrepos-schema-location.patch
@@ -0,0 +1,42 @@
+diff -up sblim-sfcb-1.3.9/man/sfcbrepos.1.pre.in.orig sblim-sfcb-1.3.9/man/sfcbrepos.1.pre.in
+--- sblim-sfcb-1.3.9/man/sfcbrepos.1.pre.in.orig	2009-10-13 21:54:13.000000000 +0200
++++ sblim-sfcb-1.3.9/man/sfcbrepos.1.pre.in	2010-09-06 14:01:57.294564062 +0200
+@@ -26,7 +26,7 @@ Supported command line options are:
+ .TP
+ \fB\-c\fR \fIschemadir\fR
+ Path to obtain the CIM Schema classes.
+-Default is \fI@datadir@/sfcb\fR
++Default is \fI@datadir@/mof/cim-current\fR
+ .TP
+ \fB\-s\fR \fIstagingdir\fR
+ Path to sfcb staging area containing class MOFs and registration files
+@@ -58,7 +58,7 @@ Alias of \fB-b\fR
+ Display usage information and exit.
+ .SH FILES
+ .TP
+-\fI@datadir@/sfcb/CIM/CIM_Schema.mof\fR
++\fI@datadir@/mof/cim-current/CIM_Schema.mof\fR
+ CIM Schema
+ .TP
+ \fI@localstatedir@/lib/sfcb/registration/providerRegister\fR
+diff -up sblim-sfcb-1.3.9/sfcbrepos.sh.in.orig sblim-sfcb-1.3.9/sfcbrepos.sh.in
+--- sblim-sfcb-1.3.9/sfcbrepos.sh.in.orig	2009-12-22 01:18:29.000000000 +0100
++++ sblim-sfcb-1.3.9/sfcbrepos.sh.in	2010-09-06 13:45:28.671491648 +0200
+@@ -59,7 +59,7 @@ then
+     echo -e "\t-X create repository in non-native format as specifed by argument"
+     echo -e "\t-s specify staging directory [@localstatedir@/lib/sfcb/stage]"
+     echo -e "\t-r specify repository directory [@localstatedir@/lib/sfcb/registration]"
+-    echo -e "\t-c specify directory containing CIM Schema MOFs [@datadir@/sfcb/CIM]"
++    echo -e "\t-c specify directory containing CIM Schema MOFs [@datadir@/mof/cim-current]"
+     echo -e "\t-t create tiny class repository by omitting inheritance information"
+     echo -e "\t-z compress repository with gzip"
+     echo
+@@ -99,7 +99,7 @@ fi
+ 
+ if [ -z "$cimschemadir" ]
+ then
+-    cimschemadir=${DESTDIR}@datadir@/sfcb/CIM
++    cimschemadir=${DESTDIR}@datadir@/mof/cim-current
+ fi
+ 
+ if [ -d $stagingdir ] && [ -f $stagingdir/default.reg ] &&
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.5-service.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.5-service.patch
new file mode 100644
index 0000000..eaccfa5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.5-service.patch
@@ -0,0 +1,27 @@
+diff -up sblim-sfcb-1.4.6/Makefile.in.orig sblim-sfcb-1.4.6/Makefile.in
+--- sblim-sfcb-1.4.6/Makefile.in.orig	2013-10-07 10:43:34.783228137 +0200
++++ sblim-sfcb-1.4.6/Makefile.in	2013-10-07 10:44:30.178533289 +0200
+@@ -627,7 +627,6 @@ initdir = $(sysconfdir)/init.d
+ pamdir = $(sysconfdir)/pam.d
+ sfcblibdir = $(libdir)/sfcb
+ cmpilibdir = $(libdir)/cmpi
+-systemddir = $(DESTDIR)@SYSTEMDDIR@
+ MANFILES = man/genSslCert.1 man/getSchema.1 man/sfcbd.1 man/sfcbmof.1 \
+ 	man/sfcbrepos.1 man/sfcbstage.1 man/sfcbunstage.1 man/sfcbuuid.1 \
+ 	man/wbemcat.1 man/xmltest.1
+@@ -2366,7 +2365,6 @@ unittest:
+ 	cd test && sh check_all.sh
+ 
+ install-data-local:
+-	if test -d $(systemddir); then cp $(srcdir)/sblim-sfcb.service $(systemddir); fi; 
+ 	test -d $(DESTDIR)$(sfcbstatedir)/registration/repository || $(mkdir_p) $(DESTDIR)$(sfcbstatedir)/registration/repository
+ 	test -d $(DESTDIR)$(sfcbstatedir)/stage/mofs/root/interop || $(mkdir_p) $(DESTDIR)$(sfcbstatedir)/stage/mofs/root/interop
+ 	test -d $(DESTDIR)$(sfcbstatedir)/stage/regs || $(mkdir_p) $(DESTDIR)$(sfcbstatedir)/stage/regs
+@@ -2384,7 +2382,6 @@ install-data-local:
+ uninstall-local:
+ 	rm -f $(DESTDIR)$(sfcbstatedir)/stage/default.reg
+ 	rm -f $(DESTDIR)$(sfcbstatedir)/stage/mofs/root/interop/10_interop.mof
+-	rm -f $(systemddir)/sblim-sfcb.service
+ @INDICATIONS_TRUE@	rm -f $(DESTDIR)$(sfcbstatedir)/stage/mofs/root/interop/20_indication.mof
+ @INDICATIONS_TRUE@	rm -f $(DESTDIR)$(sfcbstatedir)/stage/mofs/indication.mof
+ @DOCS_TRUE@	rm -rf $(DESTDIR)$(sfcbdocdir)/html
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.8-default-ecdh-curve-name.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.8-default-ecdh-curve-name.patch
new file mode 100644
index 0000000..3268d49
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.8-default-ecdh-curve-name.patch
@@ -0,0 +1,26 @@
+diff -up sblim-sfcb-1.4.8/control.c.orig sblim-sfcb-1.4.8/control.c
+--- sblim-sfcb-1.4.8/control.c.orig	2014-03-27 00:46:28.000000000 +0100
++++ sblim-sfcb-1.4.8/control.c	2014-05-15 12:31:38.304169409 +0200
+@@ -170,7 +170,7 @@ static Control init[] = {
+   {"sslCertList", CTL_STRING, SFCB_CONFDIR "/clist.pem", {0}},
+   {"sslCiphers", CTL_STRING, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH", {0}},
+   {"sslDhParamsFilePath", CTL_STRING, NULL, {0}},
+-  {"sslEcDhCurveName", CTL_STRING, "secp224r1", {0}},
++  {"sslEcDhCurveName", CTL_STRING, "secp384r1", {0}},
+   {"enableSslCipherServerPref", CTL_BOOL, NULL, {.b=0}},
+ 
+   {"registrationDir", CTL_STRING, SFCB_STATEDIR "/registration", {0}},
+diff -up sblim-sfcb-1.4.8/sfcb.cfg.pre.in.orig sblim-sfcb-1.4.8/sfcb.cfg.pre.in
+--- sblim-sfcb-1.4.8/sfcb.cfg.pre.in.orig	2014-05-15 12:31:59.188244865 +0200
++++ sblim-sfcb-1.4.8/sfcb.cfg.pre.in	2014-05-15 12:32:45.554408412 +0200
+@@ -293,8 +293,8 @@ sslCiphers: ALL:!ADH:!LOW:!EXP:!MD5:@STR
+ ## environment. If this value is not set, the indicated default is in effect.
+ ## If the value is set but the curve name is not recognized by the underlying
+ ## openssl implementation, SFCB will abort.
+-## Default is secp224r1
+-#sslEcDhCurveName: secp224r1
++## Default is secp384r1
++#sslEcDhCurveName: secp384r1
+ 
+ ## When set to true, sets the SSL_OP_CIPHER_SERVER_PREFERENCE flag for the ssl
+ ## context, to enforce server's preference instead of the client preference for
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.9-fix-ftbfs.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.9-fix-ftbfs.patch
new file mode 100644
index 0000000..9548b3c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.9-fix-ftbfs.patch
@@ -0,0 +1,12 @@
+diff -up sblim-sfcb-1.4.9/control.c.orig sblim-sfcb-1.4.9/control.c
+--- sblim-sfcb-1.4.9/control.c.orig	2015-07-13 15:06:21.331660336 +0200
++++ sblim-sfcb-1.4.9/control.c	2015-07-13 15:08:38.031308917 +0200
+@@ -83,7 +83,7 @@ long            httpReqHandlerTimeout;
+  * Kindly null terminate, always, even if might overwrite
+  * the last char of the truncated string. 
+ */
+-inline char *strncpy_kind(char *to, char *from, size_t size) {
++char *strncpy_kind(char *to, char *from, size_t size) {
+   strncpy(to, from, size);
+   *(to + size - 1) = '\0';
+   return to;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb
new file mode 100644
index 0000000..41626d1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb
@@ -0,0 +1,83 @@
+SUMMARY = "Small Footprint CIM Broker"
+DESCRIPTION = "\
+Small Footprint CIM Broker (sfcb) is a CIM server conforming to the CIM \
+Operations over HTTP protocol. It is robust, with low resource consumption \
+and therefore specifically suited for embedded and resource constrained \
+environments. sfcb supports providers written against the Common \
+Manageability Programming Interface (CMPI)."
+HOMEPAGE = "http://www.sblim.org"
+SECTION = "Applications/System"
+LICENSE = "EPL-1.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f300afd598546add034364cd0a533261"
+DEPENDS = "curl libpam openssl sblim-sfc-common unzip-native"
+
+SRC_URI = "http://downloads.sourceforge.net/sblim/${BP}.tar.bz2 \
+           file://sblim-sfcb-1.3.9-sfcbrepos-schema-location.patch \
+           file://sblim-sfcb-1.3.15-fix-provider-debugging.patch \
+           file://sblim-sfcb-1.3.16-maxMsgLen.patch \
+           file://sblim-sfcb-1.4.5-service.patch \
+           file://sblim-sfcb-1.3.16-multilib-man-cfg.patch \
+           file://sblim-sfcb-1.4.8-default-ecdh-curve-name.patch \
+           file://sblim-sfcb-1.4.9-fix-ftbfs.patch \
+           file://sfcb.service"
+           
+SRC_URI[md5sum] = "28021cdabc73690a94f4f9d57254ce30"
+SRC_URI[sha256sum] = "634a67b2f7ac3b386a79160eb44413d618e33e4e7fc74ae68b0240484af149dd"
+
+inherit autotools
+inherit ${@bb.utils.contains('VIRTUAL-RUNTIME_init_manager','systemd','systemd','', d)}
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "sblim-sfcb.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+LDFLAGS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
+
+EXTRA_OECONF = '--enable-debug \
+                --enable-ssl \
+                --enable-pam \
+                --enable-ipv6 \
+                CFLAGS="${CFLAGS} -D_GNU_SOURCE"'
+
+# make all with -j option is unsafe.
+PARALLEL_MAKE = ""
+
+INSANE_SKIP_${PN} = "dev-so"
+CONFIG_SITE = "${WORKDIR}/config-site.${P}"
+
+do_install() {
+    cp -f ${S}/sfcb.cfg.pre.in ${S}/sfcb.cfg
+
+    oe_runmake DESTDIR=${D} install
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/sfcb.service ${D}${systemd_unitdir}/system/sblim-sfcb.service
+    fi
+
+    install -d ${D}${sysconfdir}/init.d
+    mv ${D}${sysconfdir}/init.d/sfcb ${D}${sysconfdir}/init.d/sblim-sfcb
+    sed -i -e 's/\/var\/lock\/subsys\/sfcb/\/var\/lock\/subsys\/sblim-sfcb/g' ${D}${sysconfdir}/init.d/sblim-sfcb
+    
+    rm -rf ${D}${libdir}/sfcb/*.la
+}
+
+pkg_postinst_${PN} () {
+    OPTS=""
+
+    if [ x"$D" != "x" ]; then
+        OPTS="--root=$D"
+        if type systemctl >/dev/null 2>/dev/null; then
+                systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE}
+        fi
+        exit 1
+    fi
+
+    ${datadir}/sfcb/genSslCert.sh ${sysconfdir}/sfcb
+    ${bindir}/sfcbrepos -f
+}
+
+FILES_${PN} += "${libdir}/sfcb ${datadir}/sfcb"
+FILES_${PN}-dbg += "${libdir}/sfcb/.debug"
+
+RDEPENDS_${PN} = "perl bash"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcc/sblim-sfcc_2.2.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcc/sblim-sfcc_2.2.8.bb
new file mode 100644
index 0000000..1ec9940
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sblim-sfcc/sblim-sfcc_2.2.8.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Small Footprint CIM Client Library"
+DESCRIPTION = "Small Footprint CIM Client Library Runtime Libraries"
+HOMEPAGE = "http://www.sblim.org"
+
+SRC_URI = "http://netcologne.dl.sourceforge.net/project/sblim/${BPN}/${BPN}-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "0bac0dec19f17ec065b6c332a56d7bae"
+SRC_URI[sha256sum] = "1b8f187583bc6c6b0a63aae0165ca37892a2a3bd4bb0682cd76b56268b42c3d6"
+
+LICENSE = "EPL-1.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f300afd598546add034364cd0a533261"
+
+DEPENDS = "curl"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.4.bb
new file mode 100644
index 0000000..13f93cc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.4.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Linux SCSi tools to service maintain disk storage devices"
+DESCRIPTION = "scsirastools were designed to add to the Serviceability of \
+               SCSI devices under Linux so that the system does not have \
+               to be rebooted or taken out of service to perform common \
+               maintenance or service functions. It handles SCSI, \
+               Linux SW RAID, SAS, SATA, and USB devices via SCSI emulation."
+HOMEPAGE = "http://scsirastools.sourceforge.net/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=687ea108478d26152ae46eb29d9d1545"
+PR = "r0"
+
+SRC_URI = "http://prdownloads.sourceforge.net/scsirastools/scsirastools-${PV}.tar.gz \
+	  "
+SRC_URI[md5sum] = "2d775111b62e2dfc1960a722f5fda211"
+SRC_URI[sha256sum] = "38d2c6c9b04a2c594e528927b950754f94c0522718d17c78e6589ba778339bf8"
+
+inherit autotools update-rc.d
+
+# mdadm Makefile has CC set to gcc, hence override CC to ${CC}
+EXTRA_OEMAKE += "CC='${CC}'"
+
+INITSCRIPT_PACKAGES = "${PN}-diskmon ${PN}-raidmon"
+INITSCRIPT_NAME_${PN}-diskmon = "sgdisk"
+INITSCRIPT_PARAMS_${PN}-diskmon = "defaults 80 20"
+INITSCRIPT_NAME_${PN}-raidmon = "sgraid"
+INITSCRIPT_PARAMS_${PN}-raidmon = "defaults 80 20"
+
+PACKAGES =+ "${PN}-diskmon ${PN}-diskmon-dbg"
+PACKAGES =+ "${PN}-raidmon ${PN}-raidmon-dbg"
+
+FILES_${PN}-dbg += "/usr/share/scsirastools/.debug"
+
+FILES_${PN}-diskmon = "${sbindir}/sgdiskmon ${sysconfdir}/init.d/sgdisk"
+FILES_${PN}-diskmon-dbg = "${sbindir}/.debug/sgdiskmon"
+
+FILES_${PN}-raidmon = "${sbindir}/sgraidmon ${sysconfdir}/init.d/sgraid"
+FILES_${PN}-raidmon-dbg = "${sbindir}/.debug/sgraidmon"
+
+RDEPENDS_${PN} += "bash"
+RDEPENDS_${PN}-diskmon += "${PN}"
+RDEPENDS_${PN}-raidmon += "${PN}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sgpio/sgpio/Makefile-error-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sgpio/sgpio/Makefile-error-fix.patch
new file mode 100644
index 0000000..709f831
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sgpio/sgpio/Makefile-error-fix.patch
@@ -0,0 +1,127 @@
+Fix Makefile:
+
+* change the file format from dos to unix to avoid do_patch failed.
+* override gcc,SBIN_DIR and INSTALL for cross-compilation.
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ Makefile | 107 ++++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 55 insertions(+), 52 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 278d966..c2b0bc7 100755
+--- a/Makefile
++++ b/Makefile
+@@ -1,52 +1,55 @@
+-########################################################################

+-# Copyright (C) 2007-2008, Intel Corp. All rights reserved.

+-#

+-#

+-# This program is free software; you can redistribute it and/or modify it under

+-# the terms of the GNU General Public License as published by the Free Software

+-# Foundation; either version 2 of the License, or (at your option) any later version.

+-#

+-# This program is distributed in the hope that it will be useful, but

+-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or

+-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 

+-# for more details.

+-#

+-# You should have received a copy of the GNU General Public License along

+-# with this program; if not, write to the Free Software Foundation, Inc.,

+-# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

+-########################################################################

+-

+-

+-# Intel SGPIO enclosure management utility

+-#

+-# Author: Eric R Hall <Eric.R.Hall@intel.com>

+-

+-

+-MANDIR ?= /usr/local/man

+-ALL = sgpio

+-

+-all: $(ALL)

+-

+-sgpio.o: sgpio.c

+-	gcc -g -Wall -c sgpio.c

+-

+-sgpio: sgpio.o

+-	gcc -g sgpio.o -o sgpio

+-

+-clean:

+-	rm -f sgpio.o sgpio

+-

+-install: $(ALL)

+-	for i in $(ALL); do \

+-		install $$i /sbin/$$i; \

+-	done

+-	install -d $(MANDIR)/man1

+-	install -m 0644 *.1 $(MANDIR)/man1

+-

+-uninstall:

+-	for i in $(ALL); do \

+-		rm -f /sbin/$$i; \

+-	done

+-	for i in $(ALL:=.1); do \

+-		rm -f $(MANDIR)/man1/$$i; \

+-	done

++########################################################################
++# Copyright (C) 2007-2008, Intel Corp. All rights reserved.
++#
++#
++# This program is free software; you can redistribute it and/or modify it under
++# the terms of the GNU General Public License as published by the Free Software
++# Foundation; either version 2 of the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
++# for more details.
++#
++# You should have received a copy of the GNU General Public License along
++# with this program; if not, write to the Free Software Foundation, Inc.,
++# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++########################################################################
++
++
++# Intel SGPIO enclosure management utility
++#
++# Author: Eric R Hall <Eric.R.Hall@intel.com>
++
++
++MANDIR ?= /usr/local/man
++SBIN_DIR = /sbin
++INSTALL =/usr/bin/install -c
++ALL = sgpio
++CFLAGS = -g -Wall
++
++all: $(ALL)
++
++sgpio.o: sgpio.c
++	${CC} $(CFLAGS) -c sgpio.c
++
++sgpio: sgpio.o
++	${CC} -g sgpio.o -o sgpio
++
++clean:
++	rm -f sgpio.o sgpio
++
++install: $(ALL)
++	for i in $(ALL); do \
++		$(INSTALL) -D $$i $(SBIN_DIR)/$$i; \
++	done
++	$(INSTALL) -d $(MANDIR)/man1
++	$(INSTALL) -m 0644 *.1 $(MANDIR)/man1
++
++uninstall:
++	for i in $(ALL); do \
++		rm -f /sbin/$$i; \
++	done
++	for i in $(ALL:=.1); do \
++		rm -f $(MANDIR)/man1/$$i; \
++	done
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sgpio/sgpio_1.2.0.10.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/sgpio/sgpio_1.2.0.10.bb
new file mode 100644
index 0000000..ed7c413
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sgpio/sgpio_1.2.0.10.bb
@@ -0,0 +1,26 @@
+SUMMARY = "SGPIO captive backplane tool"
+DESCRIPTION = "Intel SGPIO enclosure management utility"
+
+SRC_URI = " \
+    http://pkgs.fedoraproject.org/repo/pkgs/${BPN}/${BPN}-1.2-0.10-src.tar.gz/a417bf68da4e9bd79a4664c11d7debd1/${BPN}-1.2-0.10-src.tar.gz \
+    file://Makefile-error-fix.patch \
+"
+SRC_URI[md5sum] = "a417bf68da4e9bd79a4664c11d7debd1"
+SRC_URI[sha256sum] = "9bf8c42acaa247efd9321bdb1fc2390022f0c554d77fbbd4a7363d990fc0270b"
+
+S = "${WORKDIR}/${BPN}"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE_GPL;md5=393a5ca445f6965873eca0259a17f833"
+
+do_compile_prepend() {
+    oe_runmake clean
+}
+
+do_install() {
+    oe_runmake install \
+        INSTALL="/usr/bin/install -p" \
+        DESTDIR=${D} \
+        SBIN_DIR=${D}/${sbindir} \
+        MANDIR=${D}/${mandir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/initd.smartd b/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/initd.smartd
new file mode 100755
index 0000000..54adcb4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/initd.smartd
@@ -0,0 +1,112 @@
+#! /bin/sh
+
+# smartmontools init file for smartd
+# Copyright (C) 2002-8 Bruce Allen <smartmontools-support@lists.sourceforge.net>
+# $Id: smartd.initd.in 3360 2011-06-06 19:25:36Z chrfranke $
+
+# For RedHat and cousins:
+# chkconfig: - 60 60
+# description: Self Monitoring and Reporting Technology (SMART) Daemon
+# processname: smartd 
+
+# For SuSE and cousins
+### BEGIN INIT INFO
+# Provides:                   smartd
+# Required-Start:             $syslog $remote_fs
+# Should-Start:               sendmail
+# Required-Stop:              $syslog $remote_fs
+# Should-Stop:                sendmail
+# Default-Start:              2 3 4 5
+# Default-Stop:               0 1 6
+# Short-Description:          Monitors disk and tape health via S.M.A.R.T.
+# Description:                Start S.M.A.R.T. disk and tape monitor.
+### END INIT INFO
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version. 
+# You should have received a copy of the GNU General Public License (for
+# example COPYING); if not, write to the Free Software Foundation, Inc., 675
+# Mass Ave, Cambridge, MA 02139, USA.
+# This code was originally developed as a Senior Thesis by Michael Cornwell
+# at the Concurrent Systems Laboratory (now part of the Storage Systems
+# Research Center), Jack Baskin School of Engineering, University of
+# California, Santa Cruz. http://ssrc.soe.ucsc.edu/.
+
+# Uncomment the line below to pass options to smartd on startup. 
+# Note that distribution specific configuration files like
+# /etc/{default,sysconfig}/smartmontools might override these
+#smartd_opts="--interval=1800"
+
+SMARTD_BIN=/usr/sbin/smartd
+SMARTDPID=/var/run/smartd.pid
+[ -x $SMARTD_BIN ] || exit 0
+RET=0
+
+# source configuration file
+[ -r /etc/default/rcS ] && . /etc/default/rcS
+[ -r /etc/default/smartmontools ] && . /etc/default/smartmontools
+
+smartd_opts="--pidfile $SMARTDPID $smartd_opts"
+
+case "$1" in
+	start)
+		if [ "$start_smartd" != "yes" ]; then
+			[ "$VERBOSE" != "no" ] && echo "Not starting S.M.A.R.T. daemon smartd, disabled via /etc/default/smartmontools"
+			exit 0
+		fi
+		echo -n "Starting S.M.A.R.T. daemon: smartd"
+		if start-stop-daemon --start --quiet --pidfile $SMARTDPID \
+			--exec $SMARTD_BIN -- $smartd_opts; then
+			echo "."
+		else
+			echo " (failed)"
+			RET=1
+		fi
+		;;
+	stop)
+		echo -n "Stopping S.M.A.R.T. daemon: smartd"
+		start-stop-daemon --stop --quiet --oknodo --pidfile $SMARTDPID
+		echo "."
+		;;
+	restart)
+		$0 stop
+		$0 start
+		;;
+	force-reload)
+		$0 reload || $0 restart
+		;;
+	reload)
+		echo -n "Reload S.M.A.R.T. daemon: smartd"
+		if start-stop-daemon --stop --quiet --signal 1 \
+			--pidfile $SMARTDPID; then
+			echo "."
+		else
+			echo " (failed)"
+			RET=1
+		fi
+		;;
+	report)
+		echo -n "Checking SMART devices now"
+		if start-stop-daemon --stop --quiet --signal 10 \
+			--pidfile $SMARTDPID; then
+			echo "."
+		else
+			echo " (failed)"
+			RET=1
+		fi
+		;;
+	status)
+		if pidof $SMARTD_BIN >/dev/null; then
+			echo "$SMARTD_BIN is running."
+		else
+			echo "$SMARTD_BIN is not running."
+			RET=1
+		fi
+		;;
+	*)
+		echo "Usage: $0 {start|stop|restart|force-reload|reload|report|status}"
+		exit 1
+esac
+exit $RET
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/smartd.service b/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/smartd.service
new file mode 100644
index 0000000..f3db946
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/smartd.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Self Monitoring and Reporting Technology (SMART) Daemon
+After=syslog.target
+
+[Service]
+EnvironmentFile=-@SYSCONFDIR@/smartmontools
+ExecStart=@SBINDIR@/smartd -n $smart_opts
+ExecReload=@BASE_BINDIR@/kill -HUP $MAINPID
+StandardOutput=syslog
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/smartmontools.default b/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/smartmontools.default
new file mode 100644
index 0000000..602e00b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/smartmontools.default
@@ -0,0 +1,6 @@
+# uncomment to start smartd on system startup for SysV init script
+# For systemd service file, use `systemctl enable smartd'.
+#start_smartd=yes
+
+# uncomment to pass additional options to smartd on startup
+#smartd_opts="--interval=1800"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_6.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_6.4.bb
new file mode 100644
index 0000000..86e6d9e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_6.4.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Control and monitor storage systems using S.M.A.R.T"
+DESCRIPTION = \
+"The smartmontools package contains two utility programs (smartctl \
+and smartd) to control and monitor storage systems using the Self-\
+Monitoring, Analysis and Reporting Technology System (SMART) built \
+into most modern ATA and SCSI hard disks. In many cases, these \
+utilities will provide advanced warning of disk degradation and failure."
+
+HOMEPAGE = "http://smartmontools.sourceforge.net/"
+SECTION = "console/utils"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/smartmontools/smartmontools-${PV}.tar.gz \
+           file://initd.smartd \
+           file://smartmontools.default \
+           file://smartd.service \
+          "
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'libcap-ng', 'libcap-ng', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)} \
+                  "
+PACKAGECONFIG[libcap-ng] = "--with-libcap-ng=yes,--with-libcap-ng=no,libcap-ng"
+PACKAGECONFIG[selinux] = "--with-selinux=yes,--with-selinux=no,libselinux"
+
+SRC_URI[md5sum] = "56812c8312fd123ed40ef65afde1049e"
+SRC_URI[sha256sum] = "eab75600c1eda9c34b13097db71138ab376f3dad8a6a4667fb4d1d081feb7a85"
+
+inherit autotools update-rc.d systemd
+
+SYSTEMD_SERVICE_${PN} = "smartd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+do_install_append () {
+	#install the init.d/smartd
+	install -d ${D}${sysconfdir}/init.d
+	install -p -m 0755 ${WORKDIR}/initd.smartd ${D}${sysconfdir}/init.d/smartd
+	install -d ${D}${sysconfdir}/default
+	install -p -m 0644 ${WORKDIR}/smartmontools.default ${D}${sysconfdir}/default/smartmontools
+
+	#install systemd service file
+	install -d ${D}${systemd_unitdir}/system
+	install -m 0644 ${WORKDIR}/smartd.service ${D}${systemd_unitdir}/system
+	sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+		-e 's,@SYSCONFDIR@,${sysconfdir},g' \
+		-e 's,@SBINDIR@,${sbindir},g' \
+		${D}${systemd_unitdir}/system/smartd.service
+}
+
+INITSCRIPT_NAME = "smartd"
+INITSCRIPT_PARAMS = "start 60 2 3 4 5 . stop 60 0 1 6 ."
+
+RDEPENDS_${PN} += "mailx"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
new file mode 100644
index 0000000..931e332
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Linux CAN network development utilities"
+DESCRIPTION = "Linux CAN network development"
+LICENSE = "GPLv2 & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://include/linux/can.h;endline=43;md5=390a2c9a3c5e3595a069ac1436553ee7"
+
+DEPENDS = "libsocketcan"
+
+SRC_URI = "git://github.com/linux-can/${BPN}.git;protocol=git;branch=master"
+SRCREV = "67a2bdcd336e6becfa5784742e18c88dbeddc973"
+
+PV = "0.0+gitr${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils/0001-canutils-candump-Add-error-frame-s-handling.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils/0001-canutils-candump-Add-error-frame-s-handling.patch
new file mode 100644
index 0000000..fcc38e0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils/0001-canutils-candump-Add-error-frame-s-handling.patch
@@ -0,0 +1,94 @@
+From bab595e38295dcafcfc17a011d3d51f2df1618e6 Mon Sep 17 00:00:00 2001
+From: AnilKumar Ch <anilkumar@ti.com>
+Date: Tue, 10 Jan 2012 18:55:11 +0530
+Subject: [PATCH] canutils: candump: Add error frame's handling
+
+This patch adds the error handling capability to candump utility
+by adding error flags for displaying all kind of error frames
+like tx_timeout, lost arbitration, controller problems, buserrors,
+bus warnings etc.
+
+Usage of candump for error frame display on console:
+candump [<can-interface>] [Options]
+Ex: candump can0 --error
+
+This patch is created on top of canutils-4.0.6 tag from
+http://git.pengutronix.de/?p=tools/canutils.git
+
+Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+---
+Upstream-Status: Backport
+
+ src/candump.c | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/src/candump.c b/src/candump.c
+index 259d442..c16425b 100644
+--- a/src/candump.c
++++ b/src/candump.c
+@@ -20,6 +20,7 @@
+ 
+ #include <linux/can.h>
+ #include <linux/can/raw.h>
++#include <linux/can/error.h>
+ 
+ extern int optind, opterr, optopt;
+ 
+@@ -40,6 +41,7 @@ static void print_usage(char *prg)
+ 		" -p, --protocol=PROTO\t"	"CAN protocol (default CAN_RAW = %d)\n"
+ 		"     --filter=id:mask[:id:mask]...\n"
+ 		"\t\t\t"			"apply filter\n"
++		" -e, --error\t\t"		"dump error frames along with data frames\n"
+ 		" -h, --help\t\t"		"this help\n"
+ 		" -o <filename>\t\t"		"output into filename\n"
+ 		" -d\t\t\t"			"daemonize\n"
+@@ -86,6 +88,11 @@ int main(int argc, char **argv)
+ 	int nbytes, i;
+ 	int opt, optdaemon = 0;
+ 	uint32_t id, mask;
++	int error = 0;
++	can_err_mask_t err_mask = (CAN_ERR_TX_TIMEOUT | CAN_ERR_LOSTARB |
++					CAN_ERR_CRTL | CAN_ERR_PROT |
++					CAN_ERR_TRX | CAN_ERR_ACK | CAN_ERR_BUSOFF |
++					CAN_ERR_BUSERROR);
+ 
+ 	signal(SIGPIPE, SIG_IGN);
+ 
+@@ -95,6 +102,7 @@ int main(int argc, char **argv)
+ 		{ "protocol", required_argument, 0, 'p' },
+ 		{ "type", required_argument, 0, 't' },
+ 		{ "filter", required_argument, 0, FILTER_OPTION },
++		{ "error", no_argument, 0, 'e' },
+ 		{ "version", no_argument, 0, VERSION_OPTION},
+ 		{ 0, 0, 0, 0},
+ 	};
+@@ -121,6 +129,10 @@ int main(int argc, char **argv)
+ 			proto = strtoul(optarg, NULL, 0);
+ 			break;
+ 
++		case 'e':
++			error = 1;
++			break;
++
+ 		case 'o':
+ 			optout = optarg;
+ 			break;
+@@ -186,6 +198,14 @@ int main(int argc, char **argv)
+ 		}
+ 	}
+ 
++	if (error) {
++		if (setsockopt(s, SOL_CAN_RAW, CAN_RAW_ERR_FILTER, &err_mask,
++			       sizeof(err_mask)) != 0) {
++			perror("setsockopt");
++			exit(1);
++		}
++	}
++
+ 	if (optdaemon)
+ 		daemon(1, 0);
+ 	else {
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb
new file mode 100644
index 0000000..e1508af
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb
@@ -0,0 +1,20 @@
+SUMMARY = "canutils (PTX flavour)"
+HOMEPAGE = "http://www.pengutronix.de"
+SECTION = "console/network"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "libsocketcan"
+
+SRCREV = "299dff7f5322bf0348dcdd60071958ebedf5f09d"
+SRC_URI = "git://git.pengutronix.de/git/tools/canutils.git;protocol=git \
+    file://0001-canutils-candump-Add-error-frame-s-handling.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+# Busybox ip doesn't support can interface configuration, use the real thing
+RDEPENDS_${PN} += "iproute2"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan/0001-Use-strcmp-instead-of-sizeof-on-char-string.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan/0001-Use-strcmp-instead-of-sizeof-on-char-string.patch
new file mode 100644
index 0000000..aa6196e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan/0001-Use-strcmp-instead-of-sizeof-on-char-string.patch
@@ -0,0 +1,39 @@
+From 94094cc4ee7ae585da3e5e7e83e7d82b5d6de656 Mon Sep 17 00:00:00 2001
+From: Alexander Stein <alexander.stein@systec-electronic.com>
+Date: Wed, 14 Nov 2012 12:13:06 +0100
+Subject: [PATCH] Use strcmp instead of sizeof on char* string
+
+This bug was detected by the clang warning:
+libsocketcan.c:384:16: warning: argument to 'sizeof' in 'strncmp' call
+is the same expression as the source; did you mean to provide an
+explicit length? [-Wsizeof-pointer-memaccess]
+sizeof(name)) != 0)
+~~~~~~~^~~~~~
+
+Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+---
+Upstream-Status: Backport
+
+ src/libsocketcan.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/libsocketcan.c b/src/libsocketcan.c
+index fedcbdc..841c2ed 100644
+--- a/src/libsocketcan.c
++++ b/src/libsocketcan.c
+@@ -379,9 +379,8 @@ static int do_get_nl_link(int fd, __u8 acquire, const char *name, void *res)
+ 				nl_msg->nlmsg_len - NLMSG_LENGTH(sizeof(struct ifaddrmsg));
+ 			parse_rtattr(tb, IFLA_MAX, IFLA_RTA(ifi), len);
+ 
+-			if (strncmp
+-			    ((char *)RTA_DATA(tb[IFLA_IFNAME]), name,
+-			     sizeof(name)) != 0)
++			if (strcmp
++			    ((char *)RTA_DATA(tb[IFLA_IFNAME]), name) != 0)
+ 				continue;
+ 
+ 			if (tb[IFLA_LINKINFO])
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.9.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.9.bb
new file mode 100644
index 0000000..98ef73f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.9.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Control basic functions in socketcan from userspace"
+HOMEPAGE = "http://www.pengutronix.de"
+SECTION = "libs/network"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://src/libsocketcan.c;beginline=3;endline=17;md5=97e38adced4385d8fba1ae2437cedee1"
+
+SRCREV = "e1a224bf1c409adf0c02b07a90deada634e54b88"
+
+SRC_URI = "git://git.pengutronix.de/git/tools/libsocketcan.git;protocol=git \
+    file://0001-Use-strcmp-instead-of-sizeof-on-char-string.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+do_configure_prepend() {
+    sed -i -e s:tests/GNUmakefile::g -e s:trunk:0.0.9: ${S}/configure.ac
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/subsurface/subsurface_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/subsurface/subsurface_git.bb
new file mode 100644
index 0000000..22b9d2f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/subsurface/subsurface_git.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Subsurface is an open source dive log program"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "libdivecomputer gtk+ libxml2 glib-2.0 gconf"
+
+PNBLACKLIST[subsurface] ?= "Needs to be upgraded for compatibility with new libdivecomputer"
+
+inherit gtk-icon-cache cmake
+
+inherit gitpkgv
+PKGV = "${GITPKGVTAG}"
+PV = "4.2"
+
+SRCREV = "f61ee20ba356ecfc4c5b247f548f52d588179c94"
+SRC_URI = "git://subsurface.hohndel.org/subsurface.git"
+S = "${WORKDIR}/git"
+
+#FILES_${PN} += "${datadir}/icons/hicolor/scalable/apps/subsurface.svg"
+RRECOMMENDS_${PN}_append_libc-glibc = " glibc-gconv-iso8859-15"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-Fix-build-with-musl-backtrace-APIs-are-glibc-specifi.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-Fix-build-with-musl-backtrace-APIs-are-glibc-specifi.patch
new file mode 100644
index 0000000..7d3f8a1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-Fix-build-with-musl-backtrace-APIs-are-glibc-specifi.patch
@@ -0,0 +1,50 @@
+From 290703a5d21f34ea5ec23efc815a9f4df241e7e8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 23 Oct 2015 00:33:32 -0700
+Subject: [PATCH] Fix build with musl, backtrace() APIs are glibc specific
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ userspace/libsinsp/utils.cpp | 4 +++-
+ userspace/libsinsp/utils.h   | 2 +-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/userspace/libsinsp/utils.cpp b/userspace/libsinsp/utils.cpp
+index 8f23f9c..c496a57 100644
+--- a/userspace/libsinsp/utils.cpp
++++ b/userspace/libsinsp/utils.cpp
+@@ -21,7 +21,9 @@ along with sysdig.  If not, see <http://www.gnu.org/licenses/>.
+ #include <limits.h>
+ #include <stdlib.h>
+ #include <sys/time.h>
++#ifdef __GLIBC__
+ #include <execinfo.h>
++#endif
+ #include <unistd.h>
+ #include <sys/time.h>
+ #include <netdb.h>
+@@ -741,7 +743,7 @@ uint64_t sinsp_utils::get_current_time_ns()
+     return tv.tv_sec * (uint64_t) 1000000000 + tv.tv_usec * 1000;
+ }
+ 
+-#ifndef _WIN32
++#if defined(_WIN32) && defined(__GLIBC__)
+ void sinsp_utils::bt(void)
+ {
+ 	static const char start[] = "BACKTRACE ------------";
+diff --git a/userspace/libsinsp/utils.h b/userspace/libsinsp/utils.h
+index 600d00b..4ab4650 100644
+--- a/userspace/libsinsp/utils.h
++++ b/userspace/libsinsp/utils.h
+@@ -79,7 +79,7 @@ public:
+ 
+ 	static uint64_t get_current_time_ns();
+ 
+-#ifndef _WIN32
++#if not defined(_WIN32) && defined(__GLIBC__)
+ 	//
+ 	// Print the call stack
+ 	//
+-- 
+2.6.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-libsinsp-Port-to-build-with-lua-5.2.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-libsinsp-Port-to-build-with-lua-5.2.patch
new file mode 100644
index 0000000..8fec0ca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-libsinsp-Port-to-build-with-lua-5.2.patch
@@ -0,0 +1,108 @@
+From c2782a6ca968190e221c25b0890600ba8cd43798 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 23 Oct 2015 00:23:15 -0700
+Subject: [PATCH] libsinsp: Port to build with lua >= 5.2
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ userspace/libsinsp/chisel.cpp | 40 +++++++++++++++++++++++++++++-----------
+ 1 file changed, 29 insertions(+), 11 deletions(-)
+
+diff --git a/userspace/libsinsp/chisel.cpp b/userspace/libsinsp/chisel.cpp
+index 3cfbd8d..2db9348 100644
+--- a/userspace/libsinsp/chisel.cpp
++++ b/userspace/libsinsp/chisel.cpp
+@@ -94,7 +94,7 @@ void lua_stackdump(lua_State *L)
+ // Lua callbacks
+ ///////////////////////////////////////////////////////////////////////////////
+ #ifdef HAS_LUA_CHISELS
+-const static struct luaL_reg ll_sysdig [] = 
++const static struct luaL_Reg ll_sysdig [] =
+ {
+ 	{"set_filter", &lua_cbacks::set_global_filter},
+ 	{"set_snaplen", &lua_cbacks::set_snaplen},
+@@ -120,7 +120,7 @@ const static struct luaL_reg ll_sysdig [] =
+ 	{NULL,NULL}
+ };
+ 
+-const static struct luaL_reg ll_chisel [] = 
++const static struct luaL_Reg ll_chisel [] =
+ {
+ 	{"request_field", &lua_cbacks::request_field},
+ 	{"set_filter", &lua_cbacks::set_filter},
+@@ -131,7 +131,7 @@ const static struct luaL_reg ll_chisel [] =
+ 	{NULL,NULL}
+ };
+ 
+-const static struct luaL_reg ll_evt [] = 
++const static struct luaL_Reg ll_evt [] =
+ {
+ 	{"field", &lua_cbacks::field},
+ 	{"get_num", &lua_cbacks::get_num},
+@@ -853,10 +853,28 @@ bool sinsp_chisel::parse_view_info(lua_State *ls, OUT chisel_desc* cd)
+ 
+ 
+ #ifdef HAS_LUA_CHISELS
++static void chisel_lua_registerlib(lua_State *L, const char *libname,
++				const luaL_Reg *l, int ind)
++{
++#if LUA_VERSION_NUM >= 502
++	if (libname)
++	{
++		lua_newtable(L);
++		luaL_setfuncs(L, l, ind);
++		lua_pushvalue(L, -1);
++		lua_setglobal(L, libname);
++	}
++	else
++		luaL_setfuncs(L, l, ind);
++#else
++	luaL_register(L, libname, l);
++#endif
++}
++
+ // Initializes a lua chisel
+ bool sinsp_chisel::init_lua_chisel(chisel_desc &cd, string const &fpath)
+ {
+-	lua_State* ls = lua_open();
++	lua_State* ls = luaL_newstate();
+ 	if(ls == NULL)
+ 	{
+ 		return false;
+@@ -867,9 +885,9 @@ bool sinsp_chisel::init_lua_chisel(chisel_desc &cd, string const &fpath)
+ 	//
+ 	// Load our own lua libs
+ 	//
+-	luaL_openlib(ls, "sysdig", ll_sysdig, 0);
+-	luaL_openlib(ls, "chisel", ll_chisel, 0);
+-	luaL_openlib(ls, "evt", ll_evt, 0);
++	chisel_lua_registerlib(ls, "sysdig", ll_sysdig, 0);
++	chisel_lua_registerlib(ls, "chisel", ll_chisel, 0);
++	chisel_lua_registerlib(ls, "evt", ll_evt, 0);
+ 
+ 	//
+ 	// Add our chisel paths to package.path
+@@ -1111,16 +1129,16 @@ void sinsp_chisel::load(string cmdstr)
+ 	//
+ 	// Open the script
+ 	//
+-	m_ls = lua_open();
++	m_ls = luaL_newstate();
+  
+ 	luaL_openlibs(m_ls);
+ 
+ 	//
+ 	// Load our own lua libs
+ 	//
+-	luaL_openlib(m_ls, "sysdig", ll_sysdig, 0);
+-	luaL_openlib(m_ls, "chisel", ll_chisel, 0);
+-	luaL_openlib(m_ls, "evt", ll_evt, 0);
++	chisel_lua_registerlib(m_ls, "sysdig", ll_sysdig, 0);
++	chisel_lua_registerlib(m_ls, "chisel", ll_chisel, 0);
++	chisel_lua_registerlib(m_ls, "evt", ll_evt, 0);
+ 
+ 	//
+ 	// Add our chisel paths to package.path
+-- 
+2.6.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb
new file mode 100644
index 0000000..717fab9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb
@@ -0,0 +1,35 @@
+SUMMARY = "A New System Troubleshooting Tool Built for the Way You Work"
+DESCRIPTION = "Sysdig is open source, system-level exploration: capture \
+system state and activity from a running Linux instance, then save, \
+filter and analyze."
+HOMEPAGE = "http://www.sysdig.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+inherit cmake pkgconfig
+
+DEPENDS = "luajit zlib ncurses"
+RDEPENDS_${PN} = "bash"
+
+SRC_URI = "git://github.com/draios/sysdig.git;branch=master \
+           file://0001-libsinsp-Port-to-build-with-lua-5.2.patch \
+           file://0001-Fix-build-with-musl-backtrace-APIs-are-glibc-specifi.patch \
+          "
+SRCREV = "85d16f33a82a17f87ccdbc088749271c71d87013"
+PV = "0.1.102+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+DIR_ETC="/etc"
+EXTRA_OECMAKE = ' -DUSE_BUNDLED_LUAJIT="OFF" \
+                  -DUSE_BUNDLED_ZLIB="OFF" \
+                  -DBUILD_DRIVER="OFF" \
+                  -DUSE_BUNDLED_NCURSES="OFF" \
+                  -DDIR_ETC="${DIR_ETC}" \
+                '
+
+FILES_${PN} += " \
+    ${DIR_ETC}/* \
+    ${datadir}/zsh/* \ 
+    ${prefix}/src/*  \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/configure.patch
new file mode 100644
index 0000000..8b98707
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/configure.patch
@@ -0,0 +1,128 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- t1lib-5.0.2/configure.in~configure.patch
++++ t1lib-5.0.2/configure.in
+@@ -75,9 +75,9 @@
+ T1LIB_VERSIONSTRING=\"MACRO_T1LIB_IDENTIFIER\"
+ 
+ 
+-dnl We use this file by Andreas Zeller to check for libXaw
+-builtin(include, ac-tools/ice_find_athena.m4)
+-builtin(include, ac-tools/aclocal.m4)
++#dnl We use this file by Andreas Zeller to check for libXaw
++#builtin(include, ac-tools/ice_find_athena.m4)
++#builtin(include, ac-tools/aclocal.m4)
+ 
+ dnl We want these before the checks, so the checks can modify their values.
+ test -z "$LDLIBS" && LDLIBS=-lm   AC_SUBST(LDLIBS)
+@@ -161,6 +161,7 @@
+ 
+ dnl **** Check for underscore on external symbols ****
+ 
++AH_TEMPLATE([NEED_UNDERSCORE_PREFIX], [Define if external symbols need an underscore prefix])
+ AC_CACHE_CHECK("whether external symbols need an underscore prefix",
+                ac_cv_c_extern_prefix,
+ [saved_libs=$LIBS
+@@ -178,68 +179,48 @@
+   AC_DEFINE(NEED_UNDERSCORE_PREFIX)
+ fi
+ 
+-dnl **** Check which ANSI integer type is 16 bit 
++dnl **** Check which ANSI integer type is 16 bit
++T1_AA_TYPE16=""
++for type in short int; do
++	if test x"`eval echo \\$ac_cv_sizeof_$type`" = "x2"; then
++		T1_AA_TYPE16="-DT1_AA_TYPE16=$type"
++		T1_INT16="$type"
++		break
++	fi
++done
+ 
+-AC_CACHE_CHECK( "which ANSI integer type is 16 bit", ac_16bit_type,
+-		AC_TRY_RUN([
+-int main(void) {
+-  if (sizeof(short)==2)
+-    return(0);
+-  else if (sizeof(int)==2)
+-    return(1);
+-  else
+-    return(2);
+-}], ac_16bit_type="short", ac_16bit_type="int", ac_16bit_type=))
+-if test "$ac_16bit_type" = "short"
+-then
+-  T1_AA_TYPE16="-DT1_AA_TYPE16=short"
+-  T1_INT16="short"
+-else
+-  T1_AA_TYPE16="-DT1_AA_TYPE16=int"
+-  T1_INT16="int"
++if test x"$T1_AA_TYPE16" = "x"; then
++	AC_MSG_ERROR("Unable to determine which integer type is 16 bit.")
+ fi
+ 
+-
+ dnl **** Check which ANSI integer type is 32 bit 
++T1_AA_TYPE32=""
++for type in int long; do
++	if test x"`eval echo \\$ac_cv_sizeof_$type`" = "x4"; then
++		T1_AA_TYPE32="-DT1_AA_TYPE32=$type"
++		T1_INT32="$type"
++		break
++	fi
++done
+ 
+-AC_CACHE_CHECK( "which ANSI integer type is 32 bit", ac_32bit_type,
+-		AC_TRY_RUN([
+-int main(void) {
+-  if (sizeof(int)==4)
+-    return(0);
+-  else if (sizeof(long)==4)
+-    return(1);
+-  else
+-    return(2);
+-}], ac_32bit_type="int", ac_32bit_type="long", ac_32bit_type=))
+-if test "$ac_32bit_type" = "int"
+-then
+-  T1_AA_TYPE32="-DT1_AA_TYPE32=int"
+-  T1_INT32="int"
+-else
+-  T1_AA_TYPE32="-DT1_AA_TYPE32=long"
+-  T1_INT32="long"
++if test x"$T1_AA_TYPE32" = "x"; then
++	AC_MSG_ERROR("Unable to determine which integer type is 32 bit.")
+ fi
+ 
+-
+ dnl **** Check which ANSI integer type is 64 bit 
++T1_AA_TYPE64=""
++for type in long long_long; do
++	if test x"`eval echo \\$ac_cv_sizeof_$type`" = "x8"; then
++		AC_MSG_WARN("$type is 64 bit")
++		T1_AA_TYPE64="-DT1_AA_TYPE64=\"`echo $type|tr '_' ' '`\""
++		break
++	fi
++done
+ 
+-AC_CACHE_CHECK( "which ANSI integer type is 64 bit", ac_64bit_type,
+-		AC_TRY_RUN([
+-int main(void) {
+-  if (sizeof(long)==8)
+-    return(0);
+-  else
+-    return(1);
+-}], ac_64bit_type="long", ac_64bit_type="<none>"))
+-if test "$ac_64bit_type" = "long"
+-then
+-  T1_AA_TYPE64="-DT1_AA_TYPE64=long"
+-else
+-  T1_AA_TYPE64=
++if test x"$T1_AA_TYPE64" = "x"; then
++	AC_MSG_ERROR("Unable to determine which integer type is 64 bit.")
+ fi
+ 
+-
+ CFLAGS="${CFLAGS} -DT1LIB_IDENT=\"\\\"${T1LIB_IDENTIFIER}\\\"\" -DGLOBAL_CONFIG_DIR=\"\\\"${T1LIB_DATA_DIR}\\\"\""
+ 
+ dnl **** Check for functions and header files ****
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/libtool.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/libtool.patch
new file mode 100644
index 0000000..e050025
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/libtool.patch
@@ -0,0 +1,116 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- t1lib-5.0.2/Makefile.in~libtool
++++ t1lib-5.0.2/Makefile.in
+@@ -18,7 +18,8 @@
+ # Last modified:       2001-04-01
+ #
+ 
+-SHELL     = /bin/sh
++SHELL     = @SHELL@
++LIBTOOL   = @LIBTOOL@
+ CC        = @CC@
+ CPP       = @CPP@
+ CFLAGS    = @CFLAGS@
+@@ -150,7 +151,7 @@
+ 	$(RM) examples/Makefile
+ 	$(RM) xglyph/Makefile
+ 	$(RM) doc/Makefile
+-	$(RM) libtool
++	$(RM) $(LIBTOOL)
+ 
+ 
+ # The following two targets are for building and cleaning the python-
+--- t1lib-5.0.2/examples/Makefile.in~libtool
++++ t1lib-5.0.2/examples/Makefile.in
+@@ -14,9 +14,10 @@
+ # Last modified:       2001-04-01
+ #
+ 
++top_builddir = @top_builddir@
+ 
+-LIBTOOL   = ../libtool
+-SHELL     = /bin/sh
++LIBTOOL   = @LIBTOOL@
++SHELL     = @SHELL@
+ CC        = @CC@
+ CPP       = @CPP@
+ CFLAGS    = @CFLAGS@
+--- t1lib-5.0.2/lib/Makefile.in~libtool
++++ t1lib-5.0.2/lib/Makefile.in
+@@ -15,8 +15,10 @@
+ #
+ # Contributions by H.Kakugawa to use libtool!
+ 
+-LIBTOOL   = ../libtool
+-SHELL     = /bin/sh
++top_builddir = @top_builddir@
++
++LIBTOOL   = @LIBTOOL@
++SHELL     = @SHELL@
+ CC        = @CC@
+ CPP       = @CPP@
+ CFLAGS    = @CFLAGS@
+--- t1lib-5.0.2/lib/t1lib/Makefile.in~libtool
++++ t1lib-5.0.2/lib/t1lib/Makefile.in
+@@ -14,8 +14,10 @@
+ #
+ # Modified by H.Kakugawa to use libtool
+ 
+-LIBTOOL   = ../../libtool
+-SHELL     = /bin/sh
++top_builddir = @top_builddir@
++
++LIBTOOL   = @LIBTOOL@
++SHELL     = @SHELL@
+ CC        = @CC@
+ CPP       = @CPP@
+ CFLAGS    = @CFLAGS@
+--- t1lib-5.0.2/lib/type1/Makefile.in~libtool
++++ t1lib-5.0.2/lib/type1/Makefile.in
+@@ -14,8 +14,10 @@
+ #
+ # Modified by H.Kakugawa to use libtool
+ 
+-LIBTOOL   = ../../libtool
+-SHELL     = /bin/sh
++top_builddir = @top_builddir@
++
++LIBTOOL   = @LIBTOOL@
++SHELL     = @SHELL@
+ CC        = @CC@
+ CPP       = @CPP@
+ CFLAGS    = @CFLAGS@
+--- t1lib-5.0.2/type1afm/Makefile.in~libtool
++++ t1lib-5.0.2/type1afm/Makefile.in
+@@ -15,8 +15,10 @@
+ #
+ # Modified by H.Kakugawa to use libtool
+ 
+-LIBTOOL   = ../libtool
+-SHELL     = /bin/sh
++top_builddir = @top_builddir@
++
++LIBTOOL   = @LIBTOOL@
++SHELL     = @SHELL@
+ CC        = @CC@
+ CPP       = @CPP@
+ CFLAGS    = @CFLAGS@
+--- t1lib-5.0.2/xglyph/Makefile.in~libtool
++++ t1lib-5.0.2/xglyph/Makefile.in
+@@ -15,8 +15,10 @@
+ #
+ # Modified by H.Kakugawa to use libtool
+ 
+-LIBTOOL   = ../libtool
+-SHELL     = /bin/sh
++top_builddir = @top_builddir@
++
++LIBTOOL   = @LIBTOOL@
++SHELL     = @SHELL@
+ CC        = @CC@
+ CPP       = @CPP@
+ CFLAGS    = @CFLAGS@
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib_5.1.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib_5.1.2.bb
new file mode 100644
index 0000000..1d670a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib_5.1.2.bb
@@ -0,0 +1,28 @@
+SUMMARY = "A Type1 Font Rastering Library"
+SECTION = "libs"
+DEPENDS = "virtual/libx11 libxaw"
+
+LICENSE = "LGPLv2 & GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8ca43cbc842c2336e835926c2166c28b \
+                    file://LGPL;md5=6e29c688d912da12b66b73e32b03d812 \
+"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/t/t1lib/t1lib_${PV}.orig.tar.gz \
+           file://configure.patch \
+           file://libtool.patch"
+SRC_URI[md5sum] = "a5629b56b93134377718009df1435f3c"
+SRC_URI[sha256sum] = "821328b5054f7890a0d0cd2f52825270705df3641dbd476d58d17e56ed957b59"
+
+inherit autotools-brokensep distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+# Fix GNU_HASH problem
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+EXTRA_OECONF = "--with-x --without-athena"
+EXTRA_OEMAKE = "without_doc"
+
+FILES_${PN} += " ${datadir}/t1lib/t1lib.config"
+FILES_${PN}-doc = "${datadir}/t1lib/doc/t1lib_doc.pdf"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/01_build.1.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/01_build.1.patch
new file mode 100644
index 0000000..b9f41ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/01_build.1.patch
@@ -0,0 +1,16 @@
+Author: Franz Pletz <fpletz@franz-pletz.org>
+Description: Original comment: Fix build
+Not sure why we have this patch. Let's keep it for compatibility.
+--- a/pathnames.h
++++ b/pathnames.h
+@@ -92,6 +92,10 @@
+ # define _PATH_TCSHELL		"/local/bin/tcsh"	/* use ram disk */
+ #endif /* _MINIX && !_PATH_TCSHELL */
+ 
++#ifndef _PATH_TCSHELL
++# define _PATH_TCSHELL		"/bin/tcsh"		/* Debian */
++#endif /* !_PATH_TCSHELL */
++
+ #if defined(__EMX__) && !defined(_PATH_DEVNULL)
+ # define _PATH_DEVNULL		"nul"
+ #endif /* __EMX__ && !_PATH_DEVNULL */
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/01_build.2.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/01_build.2.patch
new file mode 100644
index 0000000..ff27531
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/01_build.2.patch
@@ -0,0 +1,13 @@
+Author: Franz Pletz <fpletz@franz-pletz.org>
+Description: Update manpage.
+--- a/tcsh.man
++++ b/tcsh.man
+@@ -578,7 +578,7 @@ Repeating \fIdabbrev-expand\fR without a
+ changes to the next previous word etc., skipping identical matches
+ much like \fIhistory-search-backward\fR does.
+ .TP 8
+-.B delete-char \fR(not bound)
++.B delete-char \fR(bound to `Del' if using the standard \fI/etc/csh.cshrc\fR)
+ Deletes the character under the cursor.
+ See also \fIdelete-char-or-list-or-eof\fR.
+ .TP 8
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/01_build.3.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/01_build.3.patch
new file mode 100644
index 0000000..d36c177
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/01_build.3.patch
@@ -0,0 +1,13 @@
+Author: Franz Pletz <fpletz@franz-pletz.org>
+Description: Enable NODOT
+--- a/config_f.h
++++ b/config_f.h
+@@ -98,7 +98,7 @@
+ /*
+  * NODOT	Don't put "." in the default path, for security reasons
+  */
+-#undef NODOT
++#define NODOT
+ 
+ /*
+  * AUTOLOGOUT	tries to determine if it should set autologout depending
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/12_unknown_lscolors.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/12_unknown_lscolors.patch
new file mode 100644
index 0000000..faa59cc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/12_unknown_lscolors.patch
@@ -0,0 +1,24 @@
+Author: Franz Pletz <fpletz@franz-pletz.org>
+Description: Don't die on unknown LS_COLORS values
+Removing the patch causes a segfault when dircolors is set by coreutils' dircolors.
+Debian-Bug: #592089
+
+--- a/tw.color.c
++++ b/tw.color.c
+@@ -239,13 +239,10 @@ parseLS_COLORS(const Char *value)
+ 		    if ((Char)variables[i].variable[0] == (v[0] & CHAR) &&
+ 			(Char)variables[i].variable[1] == (v[1] & CHAR))
+ 			break;
+-		if (i < nvariables) {
+-		    v += 3;
++		v += 3;
++		if (i < nvariables)
+ 		    getstring(&c, &v, &variables[i].color, ':');
+-		    continue;
+-		}
+-		else
+-		    stderror(ERR_BADCOLORVAR, v[0], v[1]);
++		continue;
+ 	    }
+ 	    break;
+ 	}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/15_no-strip.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/15_no-strip.patch
new file mode 100644
index 0000000..cbc9f65
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/15_no-strip.patch
@@ -0,0 +1,14 @@
+Author: Lucas Nussbaum <lucas@debian.org>
+Description: do not strip binary
+ Stripping should be handled by dh_strip instead, so DEB_BUILD_OPTIONS=nostrip works.
+ Closes: #438109, #411607
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -596,7 +596,6 @@ install: tcsh$(EXEEXT)
+ 	-mkdir -p ${DESTBIN}
+ 	-mv -f ${DESTBIN}/tcsh$(EXEEXT)  ${DESTBIN}/tcsh.old
+ 	cp tcsh$(EXEEXT) ${DESTBIN}/tcsh$(EXEEXT)
+-	-strip ${DESTBIN}/tcsh$(EXEEXT)
+ 	chmod 755 ${DESTBIN}/tcsh$(EXEEXT)
+ 
+ install.man: tcsh.man
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-broken-test.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-broken-test.patch
new file mode 100644
index 0000000..0bda0ba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-broken-test.patch
@@ -0,0 +1,14 @@
+Author: Lucas Nussbaum <lucas@debian.org>
+Description: disable syntactically incorrect test
+--- a/tests/lexical.at
++++ b/tests/lexical.at
+@@ -172,9 +172,6 @@
+ AT_DATA([nohist.csh],
+ [echo ! space !	tab != "!(" newline !
+ ])
+-AT_CHECK([tcsh -f nohist.csh], ,
+-[[! space ! tab != !( newline !
+-]])
+ 
+ AT_CLEANUP
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-lexical.at-31.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-lexical.at-31.patch
new file mode 100644
index 0000000..98a9b2e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-lexical.at-31.patch
@@ -0,0 +1,30 @@
+--- a/tests/lexical.at
++++ b/tests/lexical.at
+@@ -27,27 +27,6 @@ AT_CHECK([tcsh -f oneword.csh], ,
+ 
+ AT_CLEANUP
+ 
+-
+-AT_SETUP([Comments])
+-
+-AT_CHECK([echo 'echo OK@%:@comment' | tcsh -f], , [OK
+-])
+-
+-AT_CHECK([tcsh -f -c 'echo @%:@no comment'], ,
+-[@%:@no comment
+-])
+-
+-AT_DATA([comment2.csh],
+-[[echo testing...@%:@\
+-OK
+-]])
+-AT_CHECK([tcsh -f comment2.csh], ,
+-[testing... OK
+-])
+-
+-AT_CLEANUP
+-
+-
+ AT_SETUP([Escaping special characters])
+ 
+ AT_DATA([nosplit.csh],
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-test-nice.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-test-nice.patch
new file mode 100644
index 0000000..79f918c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-test-nice.patch
@@ -0,0 +1,23 @@
+Author: Lucas Nussbaum <lucas@debian.org>
+Description: disable test that fails on the buildd with
+  "setpriority: Permission denied".
+--- a/tests/commands.at
++++ b/tests/commands.at
+@@ -888,17 +888,6 @@ TCSH_UNTESTED([migrate])
+ TCSH_UNTESTED([newgrp])
+ 
+ 
+-AT_SETUP([nice])
+-
+-# Nothing really tested
+-AT_CHECK([tcsh -f -c 'nice set var=1; echo $?var'], ,
+-[0
+-])
+-
+-
+-AT_CLEANUP
+-
+-
+ AT_SETUP([nohup])
+ 
+ AT_DATA([nohup.csh],
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-test-notty.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-test-notty.patch
new file mode 100644
index 0000000..69f0564
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/disable-test-notty.patch
@@ -0,0 +1,30 @@
+From: Lucas Nussbaum <lucas@debian.org>
+Description: Those tests fail when running the testsuite without a tty. Disabling them.
+
+--- a/tests/commands.at
++++ b/tests/commands.at
+@@ -1203,11 +1203,6 @@ AT_SETUP([source])
+ AT_DATA([script.csh],
+ [[set var=$1
+ ]])
+-AT_CHECK([[tcsh -f -c 'source -h script.csh foo; history' \
+-	   | sed 's/	[^	]*	/ TIME /']], ,
+-[     1 TIME source -h script.csh foo ; history
+-     2 TIME set var=$1
+-])
+ 
+ AT_CHECK([tcsh -f -c 'source -h script.csh foo; echo $var'], 1, [],
+ [var: Undefined variable.
+--- a/tests/variables.at
++++ b/tests/variables.at
+@@ -319,10 +319,6 @@ AT_CLEANUP
+ 
+ AT_SETUP([$ edit])
+ 
+-AT_CHECK([TERM=something tcsh -f -c 'echo $?edit'], ,
+-[1
+-])
+-
+ AT_CHECK([TERM=dumb tcsh -f -c 'echo $?edit'], ,
+ [0
+ ])
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/tcsh-6.17.02-multibyte.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/tcsh-6.17.02-multibyte.patch
new file mode 100644
index 0000000..3dd420a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/files/tcsh-6.17.02-multibyte.patch
@@ -0,0 +1,18 @@
+Author:  Jean-Luc Leger <reiga@dspnet.fr.eu.org>
+Description: fix broken globbing expansion
+Debian-Bug: #603545
+Index: tcsh-6.18.01/tc.str.c
+===================================================================
+--- tcsh-6.18.01.orig/tc.str.c	2012-01-10 13:34:31.000000000 -0800
++++ tcsh-6.18.01/tc.str.c	2013-02-26 13:12:13.429153489 -0800
+@@ -122,8 +122,9 @@
+ #else
+     ret = mbtowc(&tmp, s, n);
+ #endif
+-    if (ret > 0) {
++    if (ret >= 0)
+ 	*pwc = tmp;
++    if (ret >= 0) {
+ #if defined(UTF16_STRINGS) && defined(HAVE_MBRTOWC)
+ 	if (tmp >= 0xd800 && tmp <= 0xdbff) {
+ 	    /* UTF-16 surrogate pair.  Fetch second half and compute
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/tcsh_6.18.01.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/tcsh_6.18.01.bb
new file mode 100644
index 0000000..1dd4cb5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tcsh/tcsh_6.18.01.bb
@@ -0,0 +1,49 @@
+DESCRIPTION = "TENEX C Shell, an enhanced version of Berkeley csh \
+    The TENEX C Shell is an enhanced version of the Berkeley Unix C shell. \
+    It includes all features of 4.4BSD C shell, plus a command-line editor, \
+    programmable word completion, spelling correction and more."
+
+HOMEPAGE = "http://www.tcsh.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://Copyright;md5=1cf29be62df2be1a3763118b25b4c780"
+SECTION = "base"
+DEPENDS = "ncurses gettext-native"
+SRC_URI = " \
+    ${DEBIAN_MIRROR}/main/t/tcsh/tcsh_${PV}.orig.tar.gz;name=tarball \
+    ${DEBIAN_MIRROR}/main/t/tcsh/tcsh_${PV}-2.diff.gz;name=diffs \
+    file://01_build.1.patch \
+    file://01_build.2.patch \
+    file://01_build.3.patch \
+    file://15_no-strip.patch \
+    file://disable-test-notty.patch \
+    file://disable-test-nice.patch \
+    file://disable-lexical.at-31.patch \
+    file://12_unknown_lscolors.patch \
+    file://tcsh-6.17.02-multibyte.patch \
+    file://disable-broken-test.patch \
+"
+SRC_URI[tarball.md5sum] = "6eed09dbd4223ab5b6955378450d228a"
+SRC_URI[tarball.sha256sum] = "d81ca27851f3e8545666399b4bcf25433e602a195113b3f7c73886fef84c9fa8"
+SRC_URI[diffs.md5sum] = "ea39b818b624aca49ebf2cd2708d6ff9"
+SRC_URI[diffs.sha256sum] = "95b0c1a339b745c47c5d2f9d02c22a71597462e2e882b51614a9d1f75bd3d16c"
+
+inherit autotools
+
+do_install_append () {
+    oe_runmake install.man DESTDIR=${D}
+
+    install -d ${D}${base_bindir}
+    ln -s /usr/bin/tcsh ${D}${base_bindir}/tcsh
+
+    install -d ${D}${sysconfdir}/csh/login.d
+    install -m 0644 ${S}/debian/csh.cshrc ${S}/debian/csh.login ${S}/debian/csh.logout ${S}/complete.tcsh ${D}${sysconfdir}
+    install -D -m 0644 ${S}/csh-mode.el ${D}${datadir}/emacs/site-lisp/csh-mode.el
+}
+
+FILES_${PN} += "${datadir}/emacs/site-lisp/csh-mode.el"
+
+
+pkg_postinst_${PN} () {
+#!/bin/sh -e
+echo /usr/bin/tcsh >> $D/etc/shells
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/testfloat/files/0001-Makefile-for-cross-compile-SoftFloat.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/testfloat/files/0001-Makefile-for-cross-compile-SoftFloat.patch
new file mode 100644
index 0000000..71782c5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/testfloat/files/0001-Makefile-for-cross-compile-SoftFloat.patch
@@ -0,0 +1,348 @@
+Upstream-Status: Inappropriate [configuration]
+
+From 07f2528d93f44fe1d8080a4225f29f4ada9f4663 Mon Sep 17 00:00:00 2001
+From: Fabio Berton <fabio.berton@ossystems.com.br>
+Date: Thu, 4 Feb 2016 09:15:37 -0200
+Subject: [PATCH 1/2] Makefile for cross compile SoftFloat
+
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+ SoftFloat-3a/build/Linux-Cross-Compile/Makefile   | 274 ++++++++++++++++++++++
+ SoftFloat-3a/build/Linux-Cross-Compile/platform.h |  44 ++++
+ 2 files changed, 318 insertions(+)
+ create mode 100644 SoftFloat-3a/build/Linux-Cross-Compile/Makefile
+ create mode 100644 SoftFloat-3a/build/Linux-Cross-Compile/platform.h
+
+diff --git a/SoftFloat-3a/build/Linux-Cross-Compile/Makefile b/SoftFloat-3a/build/Linux-Cross-Compile/Makefile
+new file mode 100644
+index 0000000..c4d0a60
+--- /dev/null
++++ b/SoftFloat-3a/build/Linux-Cross-Compile/Makefile
+@@ -0,0 +1,274 @@
++
++#=============================================================================
++#
++# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
++# Package, Release 3a, by John R. Hauser.
++#
++# Copyright 2011, 2012, 2013, 2014 The Regents of the University of
++# California.  All rights reserved.
++#
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions are met:
++#
++#  1. Redistributions of source code must retain the above copyright notice,
++#     this list of conditions, and the following disclaimer.
++#
++#  2. Redistributions in binary form must reproduce the above copyright
++#     notice, this list of conditions, and the following disclaimer in the
++#     documentation and/or other materials provided with the distribution.
++#
++#  3. Neither the name of the University nor the names of its contributors
++#     may be used to endorse or promote products derived from this software
++#     without specific prior written permission.
++#
++# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
++# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
++# DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
++# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
++# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++#
++#=============================================================================
++
++SOURCE_DIR = ../../source
++SPECIALIZE_TYPE = 8086
++
++SOFTFLOAT_OPTS = -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV64TO32 -fgnu89-inline
++
++DELETE = rm -f
++C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
++COMPILE_C = \
++  ${CC} -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
++    $(C_INCLUDES) -O2 -o $@
++MAKELIB = ${AR} crs $@
++
++OBJ = .o
++LIB = .a
++
++.PHONY: all
++all: softfloat$(LIB)
++
++OBJS_PRIMITIVES = \
++  s_compare96M$(OBJ) \
++  s_compare128M$(OBJ) \
++  s_shortShiftLeft64To96M$(OBJ) \
++  s_shortShiftLeftM$(OBJ) \
++  s_shiftLeftM$(OBJ) \
++  s_shortShiftRightM$(OBJ) \
++  s_shortShiftRightJam64$(OBJ) \
++  s_shortShiftRightJamM$(OBJ) \
++  s_shiftRightJam32$(OBJ) \
++  s_shiftRightJam64$(OBJ) \
++  s_shiftRightJamM$(OBJ) \
++  s_shiftRightM$(OBJ) \
++  s_countLeadingZeros8$(OBJ) \
++  s_countLeadingZeros32$(OBJ) \
++  s_countLeadingZeros64$(OBJ) \
++  s_addM$(OBJ) \
++  s_addCarryM$(OBJ) \
++  s_addComplCarryM$(OBJ) \
++  s_negXM$(OBJ) \
++  s_sub1XM$(OBJ) \
++  s_subM$(OBJ) \
++  s_mul64To128M$(OBJ) \
++  s_mul128MTo256M$(OBJ) \
++  s_approxRecip32_1$(OBJ) \
++  s_approxRecipSqrt32_1$(OBJ) \
++  s_remStepMBy32$(OBJ) \
++
++OBJS_SPECIALIZE = \
++  softfloat_raiseFlags$(OBJ) \
++  s_f32UIToCommonNaN$(OBJ) \
++  s_commonNaNToF32UI$(OBJ) \
++  s_propagateNaNF32UI$(OBJ) \
++  s_f64UIToCommonNaN$(OBJ) \
++  s_commonNaNToF64UI$(OBJ) \
++  s_propagateNaNF64UI$(OBJ) \
++  extF80M_isSignalingNaN$(OBJ) \
++  s_extF80MToCommonNaN$(OBJ) \
++  s_commonNaNToExtF80M$(OBJ) \
++  s_propagateNaNExtF80M$(OBJ) \
++  f128M_isSignalingNaN$(OBJ) \
++  s_f128MToCommonNaN$(OBJ) \
++  s_commonNaNToF128M$(OBJ) \
++  s_propagateNaNF128M$(OBJ) \
++
++OBJS_OTHERS = \
++  s_roundPackToUI32$(OBJ) \
++  s_roundPackMToUI64$(OBJ) \
++  s_roundPackToI32$(OBJ) \
++  s_roundPackMToI64$(OBJ) \
++  s_normSubnormalF32Sig$(OBJ) \
++  s_roundPackToF32$(OBJ) \
++  s_normRoundPackToF32$(OBJ) \
++  s_addMagsF32$(OBJ) \
++  s_subMagsF32$(OBJ) \
++  s_mulAddF32$(OBJ) \
++  s_normSubnormalF64Sig$(OBJ) \
++  s_roundPackToF64$(OBJ) \
++  s_normRoundPackToF64$(OBJ) \
++  s_addMagsF64$(OBJ) \
++  s_subMagsF64$(OBJ) \
++  s_mulAddF64$(OBJ) \
++  s_tryPropagateNaNExtF80M$(OBJ) \
++  s_invalidExtF80M$(OBJ) \
++  s_normExtF80SigM$(OBJ) \
++  s_roundPackMToExtF80M$(OBJ) \
++  s_normRoundPackMToExtF80M$(OBJ) \
++  s_addExtF80M$(OBJ) \
++  s_compareNonnormExtF80M$(OBJ) \
++  s_isNaNF128M$(OBJ) \
++  s_tryPropagateNaNF128M$(OBJ) \
++  s_invalidF128M$(OBJ) \
++  s_shiftNormSigF128M$(OBJ) \
++  s_roundPackMToF128M$(OBJ) \
++  s_normRoundPackMToF128M$(OBJ) \
++  s_addF128M$(OBJ) \
++  s_mulAddF128M$(OBJ) \
++  softfloat_state$(OBJ) \
++  ui32_to_f32$(OBJ) \
++  ui32_to_f64$(OBJ) \
++  ui32_to_extF80M$(OBJ) \
++  ui32_to_f128M$(OBJ) \
++  ui64_to_f32$(OBJ) \
++  ui64_to_f64$(OBJ) \
++  ui64_to_extF80M$(OBJ) \
++  ui64_to_f128M$(OBJ) \
++  i32_to_f32$(OBJ) \
++  i32_to_f64$(OBJ) \
++  i32_to_extF80M$(OBJ) \
++  i32_to_f128M$(OBJ) \
++  i64_to_f32$(OBJ) \
++  i64_to_f64$(OBJ) \
++  i64_to_extF80M$(OBJ) \
++  i64_to_f128M$(OBJ) \
++  f32_to_ui32$(OBJ) \
++  f32_to_ui64$(OBJ) \
++  f32_to_i32$(OBJ) \
++  f32_to_i64$(OBJ) \
++  f32_to_ui32_r_minMag$(OBJ) \
++  f32_to_ui64_r_minMag$(OBJ) \
++  f32_to_i32_r_minMag$(OBJ) \
++  f32_to_i64_r_minMag$(OBJ) \
++  f32_to_f64$(OBJ) \
++  f32_to_extF80M$(OBJ) \
++  f32_to_f128M$(OBJ) \
++  f32_roundToInt$(OBJ) \
++  f32_add$(OBJ) \
++  f32_sub$(OBJ) \
++  f32_mul$(OBJ) \
++  f32_mulAdd$(OBJ) \
++  f32_div$(OBJ) \
++  f32_rem$(OBJ) \
++  f32_sqrt$(OBJ) \
++  f32_eq$(OBJ) \
++  f32_le$(OBJ) \
++  f32_lt$(OBJ) \
++  f32_eq_signaling$(OBJ) \
++  f32_le_quiet$(OBJ) \
++  f32_lt_quiet$(OBJ) \
++  f32_isSignalingNaN$(OBJ) \
++  f64_to_ui32$(OBJ) \
++  f64_to_ui64$(OBJ) \
++  f64_to_i32$(OBJ) \
++  f64_to_i64$(OBJ) \
++  f64_to_ui32_r_minMag$(OBJ) \
++  f64_to_ui64_r_minMag$(OBJ) \
++  f64_to_i32_r_minMag$(OBJ) \
++  f64_to_i64_r_minMag$(OBJ) \
++  f64_to_f32$(OBJ) \
++  f64_to_extF80M$(OBJ) \
++  f64_to_f128M$(OBJ) \
++  f64_roundToInt$(OBJ) \
++  f64_add$(OBJ) \
++  f64_sub$(OBJ) \
++  f64_mul$(OBJ) \
++  f64_mulAdd$(OBJ) \
++  f64_div$(OBJ) \
++  f64_rem$(OBJ) \
++  f64_sqrt$(OBJ) \
++  f64_eq$(OBJ) \
++  f64_le$(OBJ) \
++  f64_lt$(OBJ) \
++  f64_eq_signaling$(OBJ) \
++  f64_le_quiet$(OBJ) \
++  f64_lt_quiet$(OBJ) \
++  f64_isSignalingNaN$(OBJ) \
++  extF80M_to_ui32$(OBJ) \
++  extF80M_to_ui64$(OBJ) \
++  extF80M_to_i32$(OBJ) \
++  extF80M_to_i64$(OBJ) \
++  extF80M_to_ui32_r_minMag$(OBJ) \
++  extF80M_to_ui64_r_minMag$(OBJ) \
++  extF80M_to_i32_r_minMag$(OBJ) \
++  extF80M_to_i64_r_minMag$(OBJ) \
++  extF80M_to_f32$(OBJ) \
++  extF80M_to_f64$(OBJ) \
++  extF80M_to_f128M$(OBJ) \
++  extF80M_roundToInt$(OBJ) \
++  extF80M_add$(OBJ) \
++  extF80M_sub$(OBJ) \
++  extF80M_mul$(OBJ) \
++  extF80M_div$(OBJ) \
++  extF80M_rem$(OBJ) \
++  extF80M_sqrt$(OBJ) \
++  extF80M_eq$(OBJ) \
++  extF80M_le$(OBJ) \
++  extF80M_lt$(OBJ) \
++  extF80M_eq_signaling$(OBJ) \
++  extF80M_le_quiet$(OBJ) \
++  extF80M_lt_quiet$(OBJ) \
++  f128M_to_ui32$(OBJ) \
++  f128M_to_ui64$(OBJ) \
++  f128M_to_i32$(OBJ) \
++  f128M_to_i64$(OBJ) \
++  f128M_to_ui32_r_minMag$(OBJ) \
++  f128M_to_ui64_r_minMag$(OBJ) \
++  f128M_to_i32_r_minMag$(OBJ) \
++  f128M_to_i64_r_minMag$(OBJ) \
++  f128M_to_f32$(OBJ) \
++  f128M_to_f64$(OBJ) \
++  f128M_to_extF80M$(OBJ) \
++  f128M_roundToInt$(OBJ) \
++  f128M_add$(OBJ) \
++  f128M_sub$(OBJ) \
++  f128M_mul$(OBJ) \
++  f128M_mulAdd$(OBJ) \
++  f128M_div$(OBJ) \
++  f128M_rem$(OBJ) \
++  f128M_sqrt$(OBJ) \
++  f128M_eq$(OBJ) \
++  f128M_le$(OBJ) \
++  f128M_lt$(OBJ) \
++  f128M_eq_signaling$(OBJ) \
++  f128M_le_quiet$(OBJ) \
++  f128M_lt_quiet$(OBJ) \
++
++OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
++
++$(OBJS_ALL): \
++  platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
++  $(SOURCE_DIR)/include/primitives.h
++$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
++  $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
++  $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
++  $(SOURCE_DIR)/include/softfloat.h
++
++$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
++	$(COMPILE_C) $(SOURCE_DIR)/$*.c
++
++$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
++	$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
++
++softfloat$(LIB): $(OBJS_ALL)
++	$(DELETE) $@
++	$(MAKELIB) $^
++
++.PHONY: clean
++clean:
++	$(DELETE) $(OBJS_ALL) softfloat$(LIB)
++
+diff --git a/SoftFloat-3a/build/Linux-Cross-Compile/platform.h b/SoftFloat-3a/build/Linux-Cross-Compile/platform.h
+new file mode 100644
+index 0000000..5e566fc
+--- /dev/null
++++ b/SoftFloat-3a/build/Linux-Cross-Compile/platform.h
+@@ -0,0 +1,44 @@
++
++/*============================================================================
++
++This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
++Package, Release 3a, by John R. Hauser.
++
++Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
++All rights reserved.
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted provided that the following conditions are met:
++
++ 1. Redistributions of source code must retain the above copyright notice,
++    this list of conditions, and the following disclaimer.
++
++ 2. Redistributions in binary form must reproduce the above copyright notice,
++    this list of conditions, and the following disclaimer in the documentation
++    and/or other materials provided with the distribution.
++
++ 3. Neither the name of the University nor the names of its contributors may
++    be used to endorse or promote products derived from this software without
++    specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
++EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
++DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
++DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++=============================================================================*/
++
++/*----------------------------------------------------------------------------
++*----------------------------------------------------------------------------*/
++#define LITTLEENDIAN 1
++
++/*----------------------------------------------------------------------------
++*----------------------------------------------------------------------------*/
++#define INLINE extern inline
++
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/testfloat/files/0002-Makefile-for-cross-compile-TestFloat.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/testfloat/files/0002-Makefile-for-cross-compile-TestFloat.patch
new file mode 100644
index 0000000..cc124b3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/testfloat/files/0002-Makefile-for-cross-compile-TestFloat.patch
@@ -0,0 +1,396 @@
+Upstream-Status: Inappropriate [configuration]
+
+From 9aa4a416f05967320c1aa52bdccfe105a3bf3269 Mon Sep 17 00:00:00 2001
+From: Fabio Berton <fabio.berton@ossystems.com.br>
+Date: Thu, 4 Feb 2016 09:16:09 -0200
+Subject: [PATCH 2/2] Makefile for cross compile TestFloat
+
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+ TestFloat-3a/build/Linux-Cross-Compile/Makefile   | 321 ++++++++++++++++++++++
+ TestFloat-3a/build/Linux-Cross-Compile/platform.h |  45 +++
+ 2 files changed, 366 insertions(+)
+ create mode 100644 TestFloat-3a/build/Linux-Cross-Compile/Makefile
+ create mode 100644 TestFloat-3a/build/Linux-Cross-Compile/platform.h
+
+diff --git a/TestFloat-3a/build/Linux-Cross-Compile/Makefile b/TestFloat-3a/build/Linux-Cross-Compile/Makefile
+new file mode 100644
+index 0000000..a89326a
+--- /dev/null
++++ b/TestFloat-3a/build/Linux-Cross-Compile/Makefile
+@@ -0,0 +1,321 @@
++
++#=============================================================================
++#
++# This Makefile is part of TestFloat, Release 3a, a package of programs for
++# testing the correctness of floating-point arithmetic complying with the IEEE
++# Standard for Floating-Point, by John R. Hauser.
++#
++# Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
++# California.  All rights reserved.
++#
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions are met:
++#
++#  1. Redistributions of source code must retain the above copyright notice,
++#     this list of conditions, and the following disclaimer.
++#
++#  2. Redistributions in binary form must reproduce the above copyright
++#     notice, this list of conditions, and the following disclaimer in the
++#     documentation and/or other materials provided with the distribution.
++#
++#  3. Neither the name of the University nor the names of its contributors
++#     may be used to endorse or promote products derived from this software
++#     without specific prior written permission.
++#
++# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
++# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
++# DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
++# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
++# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++#
++#=============================================================================
++
++SOURCE_DIR = ../../source
++SUBJ_SOURCE_DIR = $(SOURCE_DIR)/subj-C
++SOFTFLOAT_DIR = ../../../SoftFloat-3a
++SOFTFLOAT_INCLUDE_DIR = $(SOFTFLOAT_DIR)/source/include
++PLATFORM = Linux-Cross-Compile
++
++SOFTFLOAT_H = \
++  $(SOFTFLOAT_INCLUDE_DIR)/softfloat_types.h \
++  $(SOFTFLOAT_INCLUDE_DIR)/softfloat.h
++SOFTFLOAT_LIB = $(SOFTFLOAT_DIR)/build/$(PLATFORM)/softfloat$(LIB)
++
++TESTFLOAT_OPTS = -DEXTFLOAT80 -DFLOAT128 -DLONG_DOUBLE_IS_EXTFLOAT80 -fgnu89-inline
++
++DELETE = rm -f
++C_INCLUDES = \
++  -I. -I$(SUBJ_SOURCE_DIR) -I$(SOURCE_DIR) -I$(SOFTFLOAT_INCLUDE_DIR)
++COMPILE_C = \
++  ${CC} -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
++    $(C_INCLUDES) -O2 -o $@
++COMPILE_SLOWFLOAT_C = \
++  ${CC} -c -Werror-implicit-function-declaration $(TESTFLOAT_OPTS) \
++    $(C_INCLUDES) -O3 -o $@
++MAKELIB = ${AR} crs $@
++LINK = ${CC} -o $@
++OTHER_LIBS = -lm
++
++OBJ = .o
++LIB = .a
++EXE =
++
++.PHONY: all
++all: \
++  testsoftfloat$(EXE) \
++  timesoftfloat$(EXE) \
++  testfloat_gen$(EXE) \
++  testfloat_ver$(EXE) \
++  testfloat$(EXE) \
++
++OBJS_GENCASES = \
++  genCases_ui32$(OBJ) \
++  genCases_ui64$(OBJ) \
++  genCases_i32$(OBJ) \
++  genCases_i64$(OBJ) \
++  genCases_f32$(OBJ) \
++  genCases_f64$(OBJ) \
++  genCases_extF80$(OBJ) \
++  genCases_f128$(OBJ) \
++
++OBJS_WRITECASE = \
++  writeCase_a_ui32$(OBJ) \
++  writeCase_a_ui64$(OBJ) \
++  writeCase_a_f32$(OBJ) \
++  writeCase_ab_f32$(OBJ) \
++  writeCase_abc_f32$(OBJ) \
++  writeCase_a_f64$(OBJ) \
++  writeCase_ab_f64$(OBJ) \
++  writeCase_abc_f64$(OBJ) \
++  writeCase_a_extF80M$(OBJ) \
++  writeCase_ab_extF80M$(OBJ) \
++  writeCase_abc_extF80M$(OBJ) \
++  writeCase_a_f128M$(OBJ) \
++  writeCase_ab_f128M$(OBJ) \
++  writeCase_abc_f128M$(OBJ) \
++  writeCase_z_bool$(OBJ) \
++  writeCase_z_ui32$(OBJ) \
++  writeCase_z_ui64$(OBJ) \
++  writeCase_z_f32$(OBJ) \
++  writeCase_z_f64$(OBJ) \
++  writeCase_z_extF80M$(OBJ) \
++  writeCase_z_f128M$(OBJ) \
++
++OBJS_TEST = \
++  test_a_ui32_z_f32$(OBJ) \
++  test_a_ui32_z_f64$(OBJ) \
++  test_a_ui32_z_extF80$(OBJ) \
++  test_a_ui32_z_f128$(OBJ) \
++  test_a_ui64_z_f32$(OBJ) \
++  test_a_ui64_z_f64$(OBJ) \
++  test_a_ui64_z_extF80$(OBJ) \
++  test_a_ui64_z_f128$(OBJ) \
++  test_a_i32_z_f32$(OBJ) \
++  test_a_i32_z_f64$(OBJ) \
++  test_a_i32_z_extF80$(OBJ) \
++  test_a_i32_z_f128$(OBJ) \
++  test_a_i64_z_f32$(OBJ) \
++  test_a_i64_z_f64$(OBJ) \
++  test_a_i64_z_extF80$(OBJ) \
++  test_a_i64_z_f128$(OBJ) \
++  test_a_f32_z_ui32_rx$(OBJ) \
++  test_a_f32_z_ui64_rx$(OBJ) \
++  test_a_f32_z_i32_rx$(OBJ) \
++  test_a_f32_z_i64_rx$(OBJ) \
++  test_a_f32_z_ui32_x$(OBJ) \
++  test_a_f32_z_ui64_x$(OBJ) \
++  test_a_f32_z_i32_x$(OBJ) \
++  test_a_f32_z_i64_x$(OBJ) \
++  test_a_f32_z_f64$(OBJ) \
++  test_a_f32_z_extF80$(OBJ) \
++  test_a_f32_z_f128$(OBJ) \
++  test_az_f32$(OBJ) \
++  test_az_f32_rx$(OBJ) \
++  test_abz_f32$(OBJ) \
++  test_abcz_f32$(OBJ) \
++  test_ab_f32_z_bool$(OBJ) \
++  test_a_f64_z_ui32_rx$(OBJ) \
++  test_a_f64_z_ui64_rx$(OBJ) \
++  test_a_f64_z_i32_rx$(OBJ) \
++  test_a_f64_z_i64_rx$(OBJ) \
++  test_a_f64_z_ui32_x$(OBJ) \
++  test_a_f64_z_ui64_x$(OBJ) \
++  test_a_f64_z_i32_x$(OBJ) \
++  test_a_f64_z_i64_x$(OBJ) \
++  test_a_f64_z_f32$(OBJ) \
++  test_a_f64_z_extF80$(OBJ) \
++  test_a_f64_z_f128$(OBJ) \
++  test_az_f64$(OBJ) \
++  test_az_f64_rx$(OBJ) \
++  test_abz_f64$(OBJ) \
++  test_abcz_f64$(OBJ) \
++  test_ab_f64_z_bool$(OBJ) \
++  test_a_extF80_z_ui32_rx$(OBJ) \
++  test_a_extF80_z_ui64_rx$(OBJ) \
++  test_a_extF80_z_i32_rx$(OBJ) \
++  test_a_extF80_z_i64_rx$(OBJ) \
++  test_a_extF80_z_ui32_x$(OBJ) \
++  test_a_extF80_z_ui64_x$(OBJ) \
++  test_a_extF80_z_i32_x$(OBJ) \
++  test_a_extF80_z_i64_x$(OBJ) \
++  test_a_extF80_z_f32$(OBJ) \
++  test_a_extF80_z_f64$(OBJ) \
++  test_a_extF80_z_f128$(OBJ) \
++  test_az_extF80$(OBJ) \
++  test_az_extF80_rx$(OBJ) \
++  test_abz_extF80$(OBJ) \
++  test_ab_extF80_z_bool$(OBJ) \
++  test_a_f128_z_ui32_rx$(OBJ) \
++  test_a_f128_z_ui64_rx$(OBJ) \
++  test_a_f128_z_i32_rx$(OBJ) \
++  test_a_f128_z_i64_rx$(OBJ) \
++  test_a_f128_z_ui32_x$(OBJ) \
++  test_a_f128_z_ui64_x$(OBJ) \
++  test_a_f128_z_i32_x$(OBJ) \
++  test_a_f128_z_i64_x$(OBJ) \
++  test_a_f128_z_f32$(OBJ) \
++  test_a_f128_z_f64$(OBJ) \
++  test_a_f128_z_extF80$(OBJ) \
++  test_az_f128$(OBJ) \
++  test_az_f128_rx$(OBJ) \
++  test_abz_f128$(OBJ) \
++  test_abcz_f128$(OBJ) \
++  test_ab_f128_z_bool$(OBJ) \
++
++OBJS_LIB = \
++  uint128$(OBJ) \
++  fail$(OBJ) \
++  functions_common$(OBJ) \
++  functionInfos$(OBJ) \
++  standardFunctionInfos$(OBJ) \
++  random$(OBJ) \
++  genCases_common$(OBJ) \
++  $(OBJS_GENCASES) \
++  genCases_writeTestsTotal$(OBJ) \
++  verCases_common$(OBJ) \
++  verCases_writeFunctionName$(OBJ) \
++  readHex$(OBJ) \
++  writeHex$(OBJ) \
++  $(OBJS_WRITECASE) \
++  testLoops_common$(OBJ) \
++  $(OBJS_TEST) \
++
++uint128$(OBJ): $(SOURCE_DIR)/uint128.h
++fail$(OBJ): $(SOURCE_DIR)/fail.h
++functions_common$(OBJ): $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h
++functionInfos$(OBJ): $(SOURCE_DIR)/functions.h
++standardFunctionInfos$(OBJ): $(SOURCE_DIR)/functions.h
++random$(OBJ): $(SOURCE_DIR)/random.h
++genCases_common$(OBJ): $(SOURCE_DIR)/fail.h $(SOURCE_DIR)/genCases.h
++$(OBJS_GENCASES): \
++  $(SOURCE_DIR)/random.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h
++genCases_f128$(OBJ): $(SOURCE_DIR)/uint128.h
++genCases_writeTestsTotal$(OBJ): $(SOURCE_DIR)/genCases.h
++verCases_common$(OBJ): $(SOURCE_DIR)/verCases.h
++verCases_writeFunctionName$(OBJ): $(SOURCE_DIR)/verCases.h
++readHex$(OBJ): $(SOURCE_DIR)/readHex.h
++writeHex$(OBJ): $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h
++$(OBJS_WRITECASE): \
++  $(SOFTFLOAT_H) $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/writeCase.h
++testLoops_common$(OBJ): $(SOURCE_DIR)/testLoops.h
++$(OBJS_TEST): \
++  $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) $(SOURCE_DIR)/genCases.h \
++  $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/testLoops.h
++$(OBJS_LIB): %$(OBJ): platform.h $(SOURCE_DIR)/%.c
++	$(COMPILE_C) $(SOURCE_DIR)/$*.c
++testfloat$(LIB): $(OBJS_LIB)
++	$(MAKELIB) $^
++
++OBJS_TESTSOFTFLOAT = slowfloat$(OBJ) testsoftfloat$(OBJ)
++
++slowfloat$(OBJ): \
++  platform.h $(SOURCE_DIR)/uint128.h $(SOFTFLOAT_H) \
++  $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/slowfloat.c
++	$(COMPILE_SLOWFLOAT_C) $(SOURCE_DIR)/slowfloat.c
++testsoftfloat$(OBJ): \
++  platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
++  $(SOURCE_DIR)/slowfloat.h $(SOURCE_DIR)/functions.h \
++  $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
++  $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testsoftfloat.c
++	$(COMPILE_C) $(SOURCE_DIR)/testsoftfloat.c
++
++testsoftfloat$(EXE): $(OBJS_TESTSOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
++	$(LINK) $^ $(OTHER_LIBS)
++
++OBJS_TIMESOFTFLOAT = timesoftfloat$(OBJ)
++
++timesoftfloat$(OBJ): \
++  platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
++  $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/timesoftfloat.c
++	$(COMPILE_C) $(SOURCE_DIR)/timesoftfloat.c
++
++timesoftfloat$(EXE): $(OBJS_TIMESOFTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
++	$(LINK) $^ $(OTHER_LIBS)
++
++OBJS_TESTFLOAT_GEN = genLoops$(OBJ) testfloat_gen$(OBJ)
++
++genLoops$(OBJ): \
++  platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
++  $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/writeHex.h $(SOURCE_DIR)/genLoops.h \
++  $(SOURCE_DIR)/genLoops.c
++	$(COMPILE_C) $(SOURCE_DIR)/genLoops.c
++testfloat_gen$(OBJ): \
++  $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) $(SOURCE_DIR)/functions.h \
++  $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/genLoops.h \
++  $(SOURCE_DIR)/testfloat_gen.c
++	$(COMPILE_C) $(SOURCE_DIR)/testfloat_gen.c
++
++testfloat_gen$(EXE): $(OBJS_TESTFLOAT_GEN) testfloat$(LIB) $(SOFTFLOAT_LIB)
++	$(LINK) $^ $(OTHER_LIBS)
++
++OBJS_TESTFLOAT_VER = verLoops$(OBJ) testfloat_ver$(OBJ)
++
++verLoops$(OBJ): \
++  platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
++  $(SOURCE_DIR)/readHex.h $(SOURCE_DIR)/verCases.h $(SOURCE_DIR)/writeCase.h \
++  $(SOURCE_DIR)/verLoops.h $(SOURCE_DIR)/verLoops.c
++	$(COMPILE_C) $(SOURCE_DIR)/verLoops.c
++testfloat_ver$(OBJ): \
++  platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
++  $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/verCases.h \
++  $(SOURCE_DIR)/writeCase.h $(SOURCE_DIR)/verLoops.h \
++  $(SOURCE_DIR)/testfloat_ver.c
++	$(COMPILE_C) $(SOURCE_DIR)/testfloat_ver.c
++
++testfloat_ver$(EXE): $(OBJS_TESTFLOAT_VER) testfloat$(LIB) $(SOFTFLOAT_LIB)
++	$(LINK) $^ $(OTHER_LIBS)
++
++OBJS_TESTFLOAT = subjfloat$(OBJ) subjfloat_functions$(OBJ) testfloat$(OBJ)
++
++subjfloat$(OBJ): \
++  platform.h $(SOFTFLOAT_H) $(SUBJ_SOURCE_DIR)/subjfloat_config.h \
++  $(SOURCE_DIR)/subjfloat.h $(SUBJ_SOURCE_DIR)/subjfloat.c
++	$(COMPILE_C) $(SUBJ_SOURCE_DIR)/subjfloat.c
++subjfloat_functions$(OBJ): \
++  platform.h $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
++  $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/subjfloat_functions.c
++	$(COMPILE_C) $(SOURCE_DIR)/subjfloat_functions.c
++testfloat$(OBJ): \
++  platform.h $(SOURCE_DIR)/uint128.h $(SOURCE_DIR)/fail.h $(SOFTFLOAT_H) \
++  $(SUBJ_SOURCE_DIR)/subjfloat_config.h $(SOURCE_DIR)/subjfloat.h \
++  $(SOURCE_DIR)/functions.h $(SOURCE_DIR)/genCases.h $(SOURCE_DIR)/verCases.h \
++  $(SOURCE_DIR)/testLoops.h $(SOURCE_DIR)/testfloat.c
++	$(COMPILE_C) $(SOURCE_DIR)/testfloat.c
++
++testfloat$(EXE): $(OBJS_TESTFLOAT) testfloat$(LIB) $(SOFTFLOAT_LIB)
++	$(LINK) $^ $(OTHER_LIBS)
++
++.PHONY: clean
++clean:
++	$(DELETE) $(OBJS_LIB) testfloat$(LIB)
++	$(DELETE) $(OBJS_TESTSOFTFLOAT) testsoftfloat$(EXE)
++	$(DELETE) $(OBJS_TIMESOFTFLOAT) timesoftfloat$(EXE)
++	$(DELETE) $(OBJS_TESTFLOAT_GEN) testfloat_gen$(EXE)
++	$(DELETE) $(OBJS_TESTFLOAT_VER) testfloat_ver$(EXE)
++	$(DELETE) $(OBJS_TESTFLOAT) testfloat$(EXE)
++
+diff --git a/TestFloat-3a/build/Linux-Cross-Compile/platform.h b/TestFloat-3a/build/Linux-Cross-Compile/platform.h
+new file mode 100644
+index 0000000..09e63a0
+--- /dev/null
++++ b/TestFloat-3a/build/Linux-Cross-Compile/platform.h
+@@ -0,0 +1,45 @@
++
++/*============================================================================
++
++This C header file is part of TestFloat, Release 3a, a package of programs for
++testing the correctness of floating-point arithmetic complying with the IEEE
++Standard for Floating-Point, by John R. Hauser.
++
++Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
++All rights reserved.
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted provided that the following conditions are met:
++
++ 1. Redistributions of source code must retain the above copyright notice,
++    this list of conditions, and the following disclaimer.
++
++ 2. Redistributions in binary form must reproduce the above copyright notice,
++    this list of conditions, and the following disclaimer in the documentation
++    and/or other materials provided with the distribution.
++
++ 3. Neither the name of the University nor the names of its contributors may
++    be used to endorse or promote products derived from this software without
++    specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
++EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
++DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
++DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++=============================================================================*/
++
++/*----------------------------------------------------------------------------
++*----------------------------------------------------------------------------*/
++#define LITTLEENDIAN 1
++
++/*----------------------------------------------------------------------------
++*----------------------------------------------------------------------------*/
++#define INLINE extern inline
++
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/testfloat/testfloat_3a.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/testfloat/testfloat_3a.bb
new file mode 100644
index 0000000..28e9677
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/testfloat/testfloat_3a.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Berkeley TestFloat is a small collection of programs for \
+    testing that an implementation of binary floating-point conforms to the \
+    IEEE Standard for Floating-Point Arithmetic."
+
+HOMEPAGE = "http://www.jhauser.us/arithmetic/TestFloat.html"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://TestFloat-${PV}/COPYING.txt;md5=e45c175a323b5727777fb6bd4b26eafc"
+
+SRC_URI = "\
+    http://www.jhauser.us/arithmetic/TestFloat-3a.zip;name=TestFloat \
+    http://www.jhauser.us/arithmetic/SoftFloat-3a.zip;name=SoftFloat \
+    file://0001-Makefile-for-cross-compile-SoftFloat.patch \
+    file://0002-Makefile-for-cross-compile-TestFloat.patch \
+"
+SRC_URI[TestFloat.md5sum] = "5a124e85ab74c5e52da27d401cea6cc3"
+SRC_URI[TestFloat.sha256sum] = "fa258b5b3c751656a372051adee4183e19ad4763032322eb7a87dfb9e2c22c75"
+SRC_URI[SoftFloat.md5sum] = "e53bd4550cf99690642c41374d188517"
+SRC_URI[SoftFloat.sha256sum] = "946fd23180559d60eb6683dda1cf8b142f5426dedfefb97b03c6afdfd70ee9e0"
+
+S = "${WORKDIR}"
+
+do_compile(){
+    oe_runmake -C SoftFloat-${PV}/build/Linux-Cross-Compile/
+    oe_runmake -C TestFloat-${PV}/build/Linux-Cross-Compile/
+}
+
+do_install(){
+    install -d ${D}/${bindir}
+    install ${S}/TestFloat-${PV}/build/Linux-Cross-Compile/testfloat     ${D}/${bindir}
+    install ${S}/TestFloat-${PV}/build/Linux-Cross-Compile/testfloat_gen ${D}/${bindir}
+    install ${S}/TestFloat-${PV}/build/Linux-Cross-Compile/testfloat_ver ${D}/${bindir}
+    install ${S}/TestFloat-${PV}/build/Linux-Cross-Compile/testsoftfloat ${D}/${bindir}
+    install ${S}/TestFloat-${PV}/build/Linux-Cross-Compile/timesoftfloat ${D}/${bindir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_2.0.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_2.0.6.bb
new file mode 100644
index 0000000..0ac8fad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_2.0.6.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Transparent Inter-Process Communication protocol"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://tipc-config/tipc-config.c;endline=32;md5=527a3d5745e1581b15a4fddfb5dfda68"
+
+SRC_URI = "git://tipc.git.sourceforge.net/gitroot/tipc/tipcutils"
+SRCREV = "292a03e17f889013fca2c7bd0aaeebd600c88f40"
+
+DEPENDS="virtual/kernel"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+inherit autotools
+
+S = "${WORKDIR}/git"
+
+do_configure_prepend() {
+    ( cd ${S}; ${S}/bootstrap )
+}
+
+do_install_append() {
+    demos="benchmark hello_world topology_subscr_demo connection_demo \
+           multicast_demo stream_demo"
+    for i in $demos;do
+        install -d ${D}/opt/tipcutils/demos/$i
+        install ${B}/demos/$i/client_tipc ${D}/opt/tipcutils/demos/$i/
+        install ${B}/demos/$i/server_tipc ${D}/opt/tipcutils/demos/$i/
+    done
+    install -d ${D}/opt/tipcutils/demos/inventory_sim
+    install ${B}/demos/inventory_sim/inventory_sim ${D}/opt/tipcutils/demos/inventory_sim/
+
+    install -d ${D}/opt/tipcutils/ptts
+    install ${B}/ptts/tipcTS ${D}/opt/tipcutils/ptts/
+    install ${B}/ptts/tipcTC ${D}/opt/tipcutils/ptts/
+
+    install -d ${D}${sysconfdir}
+    cp -R --no-dereference --preserve=mode,links -v ${S}/scripts/etc/* ${D}${sysconfdir}/
+    chown -R root:root ${D}${sysconfdir}
+}
+
+PACKAGES += "${PN}-demos"
+FILES_${PN}-dbg += "/opt/tipcutils/demos/*/.debug /opt/tipcutils/ptts/.debug"
+FILES_${PN}-demos = "/opt/tipcutils/*"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.bb
new file mode 100644
index 0000000..5a98116
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Hardware performance monitoring counters"
+HOMEPAGE = "http://tiptop.gforge.inria.fr/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "ncurses libxml2"
+
+SRC_URI = "http://tiptop.gforge.inria.fr/releases/${BP}.tar.gz"
+SRC_URI[md5sum] = "f1fba1e90465b0e5a3865b19133fa19d"
+SRC_URI[sha256sum] = "3f07e958b40acaeab98e9eb1326c9f91b0be0a782c1cc2bd7a9e18d31fab18ca"
+
+inherit autotools-brokensep
+EXTRA_OECONF = "CFLAGS="$CFLAGS -I${STAGING_INCDIR}/libxml2""
+COMPATIBLE_HOST = "(i.86|x86_64|arm|powerpc).*-linux"
+
+do_configure_prepend () {
+    # Two bugs in configure.ac when cross-compiling.
+    # 1. The path of libxml2. Specify it in EXTRA_OECONF.
+    # 2. hw's value on other platforms. Replace it if the target is 
+    #    not i*86/x86_64.
+    if ( echo "${TARGET_ARCH}" | grep -q -e 'i.86' -e 'x86_64' ); then
+        sed -i 's= -I/usr/include/libxml2=='    ${S}/configure.ac
+    else
+        sed -i 's/hw=`uname -m`/hw="unknown"/'  ${S}/configure.ac
+        sed -i 's= -I/usr/include/libxml2=='    ${S}/configure.ac
+    fi
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_2.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_2.1.bb
new file mode 100644
index 0000000..bf21de5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_2.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Terminal multiplexer"
+HOMEPAGE = "http://tmux.sourceforge.net"
+SECTION = "console/utils"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://tmux.c;beginline=3;endline=17;md5=8685b4455330a940fab1ff451aa941a0"
+
+DEPENDS = "ncurses libevent"
+
+
+SRC_URI = "git://github.com/tmux/tmux.git;branch=master"
+SRCREV ?= "310f0a960ca64fa3809545badc629c0c166c6cd2"
+
+S = "${WORKDIR}/git"
+B = "${WORKDIR}/build"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[utempter] = "ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=no,libutempter,"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities-20040406/fix-ldflags.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities-20040406/fix-ldflags.patch
new file mode 100644
index 0000000..05cc537
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities-20040406/fix-ldflags.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- tools/mconsole/Makefile~fix-ldflags	2003-02-08 05:10:08.000000000 +0100
++++ tools/mconsole/Makefile	2004-04-01 15:37:37.000000000 +0200
+@@ -7,7 +7,7 @@
+ all : $(BIN)
+ 
+ $(BIN) : $(OBJS)
+-	$(CC) $(CFLAGS) -o $(BIN) $(OBJS) -lreadline -lncurses
++	$(CC) $(CFLAGS) -o $(BIN) $(OBJS) $(LDFLAGS) -lreadline -lncurses
+ 
+ clean : 
+ 	rm -f $(BIN) $(OBJS) *~
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities-20040406/unstrip.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities-20040406/unstrip.patch
new file mode 100644
index 0000000..868001d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities-20040406/unstrip.patch
@@ -0,0 +1,84 @@
+Dont strip during install let the packaging handle it
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: tools/jailtest/Makefile
+===================================================================
+--- tools.orig/jailtest/Makefile	2003-02-07 20:10:27.000000000 -0800
++++ tools/jailtest/Makefile	2012-09-05 12:13:56.061615854 -0700
+@@ -14,4 +14,4 @@
+ 
+ install : $(BIN)
+ 	install -d $(DESTDIR)$(BIN_DIR)
+-	install -s $(BIN) $(DESTDIR)$(BIN_DIR)
++	install $(BIN) $(DESTDIR)$(BIN_DIR)
+Index: tools/mconsole/Makefile
+===================================================================
+--- tools.orig/mconsole/Makefile	2012-09-05 12:05:09.869607043 -0700
++++ tools/mconsole/Makefile	2012-09-05 12:14:07.725607469 -0700
+@@ -14,4 +14,4 @@
+ 
+ install : $(BIN)
+ 	install -d $(DESTDIR)$(BIN_DIR)
+-	install -s $(BIN) $(DESTDIR)$(BIN_DIR)
++	install $(BIN) $(DESTDIR)$(BIN_DIR)
+Index: tools/moo/Makefile
+===================================================================
+--- tools.orig/moo/Makefile	2003-06-26 09:27:00.000000000 -0700
++++ tools/moo/Makefile	2012-09-05 12:14:20.981604580 -0700
+@@ -22,4 +22,4 @@
+ 
+ install : $(BIN)
+ 	install -d $(DESTDIR)$(BIN_DIR)
+-	install -s $(BIN) $(DESTDIR)$(BIN_DIR)
++	install $(BIN) $(DESTDIR)$(BIN_DIR)
+Index: tools/port-helper/Makefile
+===================================================================
+--- tools.orig/port-helper/Makefile	2003-02-07 20:05:31.000000000 -0800
++++ tools/port-helper/Makefile	2012-09-05 12:14:39.429609678 -0700
+@@ -14,4 +14,4 @@
+ 
+ install : $(BIN)
+ 	install -d $(DESTDIR)$(LIB_DIR)
+-	install -s $(BIN) $(DESTDIR)$(LIB_DIR)
++	install $(BIN) $(DESTDIR)$(LIB_DIR)
+Index: tools/tunctl/Makefile
+===================================================================
+--- tools.orig/tunctl/Makefile	2003-02-07 20:05:04.000000000 -0800
++++ tools/tunctl/Makefile	2012-09-05 12:14:49.985606470 -0700
+@@ -14,4 +14,4 @@
+ 
+ install : $(BIN)
+ 	install -d $(DESTDIR)$(BIN_DIR)
+-	install -s $(BIN) $(DESTDIR)$(BIN_DIR)
++	install $(BIN) $(DESTDIR)$(BIN_DIR)
+Index: tools/uml_net/Makefile
+===================================================================
+--- tools.orig/uml_net/Makefile	2003-02-07 20:04:55.000000000 -0800
++++ tools/uml_net/Makefile	2012-09-05 12:15:00.961607290 -0700
+@@ -21,4 +21,4 @@
+ 
+ install : $(BIN)
+ 	install -d $(DESTDIR)$(BIN_DIR)
+-	install -s -m 04755 $(BIN) $(DESTDIR)$(BIN_DIR)
++	install -m 04755 $(BIN) $(DESTDIR)$(BIN_DIR)
+Index: tools/uml_router/Makefile
+===================================================================
+--- tools.orig/uml_router/Makefile	2003-02-07 20:04:39.000000000 -0800
++++ tools/uml_router/Makefile	2012-09-05 12:15:10.649607571 -0700
+@@ -20,4 +20,4 @@
+ 
+ install : $(BIN)
+ 	install -d $(DESTDIR)$(BIN_DIR)
+-	install -s $(BIN) $(DESTDIR)$(BIN_DIR)
++	install $(BIN) $(DESTDIR)$(BIN_DIR)
+Index: tools/watchdog/Makefile
+===================================================================
+--- tools.orig/watchdog/Makefile	2003-02-07 20:04:25.000000000 -0800
++++ tools/watchdog/Makefile	2012-09-05 12:15:35.561612203 -0700
+@@ -14,4 +14,4 @@
+ 
+ install : $(BIN)
+ 	install -d $(DESTDIR)$(BIN_DIR)
+-	install -s $(BIN) $(DESTDIR)$(BIN_DIR)
++	install $(BIN) $(DESTDIR)$(BIN_DIR)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb
new file mode 100644
index 0000000..45cc2e7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb
@@ -0,0 +1,26 @@
+SECTION = "console/utils"
+SUMMARY = "Utilities for User-Mode-Linux"
+LICENSE = "GPL-2.0"
+DEPENDS = "zlib ncurses readline"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+SRC_URI = "http://downloads.sourceforge.net/project/user-mode-linux/tools/1/uml_utilities_${PV}.tar.bz2  \
+           file://fix-ldflags.patch \
+           file://unstrip.patch \
+"
+SRC_URI[md5sum] = "2c1ccd9efacbfb39e42d482b89b2550a"
+SRC_URI[sha256sum] = "4f179b1db021ef15ac7e9b2eed57c525db127a754c574f591c367460cded9f41"
+
+PR = "r1"
+
+S = "${WORKDIR}/tools"
+
+do_compile() {
+    oe_runmake
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+}
+
+FILES_${PN} += "${exec_prefix}${nonarch_base_libdir}"
+FILES_${PN}-dbg += "${exec_prefix}${nonarch_base_libdir}/uml/.debug"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/wipe/files/support-cross-compile-for-linux.patch b/import-layers/meta-openembedded/meta-oe/recipes-extended/wipe/files/support-cross-compile-for-linux.patch
new file mode 100644
index 0000000..fb3aee8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/wipe/files/support-cross-compile-for-linux.patch
@@ -0,0 +1,36 @@
+From 35f14bd5aba2ed6cee258e11eab42c408afc04d0 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 4 Nov 2015 02:29:05 -0500
+Subject: [PATCH] Makefile: support cross compile for linux
+
+Upstream-Status: Pending
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ Makefile | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 17d9758..9e74cdf 100644
+--- a/Makefile
++++ b/Makefile
+@@ -41,7 +41,7 @@
+ # Linux 2.0.x
+ #
+ 
+-CC_LINUX=gcc
++CC_LINUX=$(CC)
+ CCO_LINUX=-Wall -DHAVE_DEV_URANDOM -DHAVE_OSYNC -DHAVE_STRCASECMP -DHAVE_RANDOM -DWEAK_RC6 -DSYNC_WAITS_FOR_SYNC -DFIND_DEVICE_SIZE_BY_BLKGETSIZE -DSIXTYFOUR -D__USE_LARGEFILE -D_FILE_OFFSET_BITS=64
+ # default should be to turn off debugging and to turn on optimization.
+ #CCO_LINUX+=-O9 -pipe -fomit-frame-pointer -finline-functions -funroll-loops -fstrength-reduce
+@@ -185,6 +185,7 @@ clean	:
+ 		rm -f wipe $(OBJECTS) wipe.tr-asc.1 version.h
+ 
+ install:
+-	install -m755 -o root -g root wipe $(DESTDIR)/usr/bin
++	[ -e $(DESTDIR)$(bindir) ] || mkdir -p $(DESTDIR)$(bindir)
++	install -m755 -o root -g root wipe $(DESTDIR)$(bindir)
+ 
+ .PHONY: always clean install
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_git.bb
new file mode 100644
index 0000000..70229f0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_git.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A UNIX tool for secure deletion"
+DESCRIPTION = "Wipe is a little command for securely erasing files from \
+magnetic media. It compiles under various unix platforms, \
+including Linux 2. * , (Open, Net, Free)BSD, aix 4.1, SunOS \
+5.5.1, Solaris 2.6. wipe is released under the GPL. Pre-compiled \
+packages are available on most Linux distributions. \
+Under Debian, the package name is wipe"
+HOMEPAGE = "http://lambda-diode.com/software/wipe/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+SRC_URI = "git://github.com/berke/wipe.git;branch=master \
+           file://support-cross-compile-for-linux.patch \
+          "
+SRCREV = "d9c100c9cd0b1cbbe4359e4d6c9a035d11e7597c"
+PV = "0.23+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "linux"
+
+do_install() {
+	make install DESTDIR=${D}
+}
+
+do_configure[noexec] = "1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/zram/zram/init b/import-layers/meta-openembedded/meta-oe/recipes-extended/zram/zram/init
new file mode 100644
index 0000000..7b6cbf4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/zram/zram/init
@@ -0,0 +1,85 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: zram
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Increased Performance In Linux With zRam (Virtual Swap Compressed in RAM)
+# Description: Adapted from systemd scripts at https://github.com/mystilleef/FedoraZram
+# Included as part of antix-goodies package by anticapitalista <antiX@operamail.com>
+# This script was written by tradetaxfree and is found at http://crunchbanglinux.org/forums/topic/15344/zram-a-good-idea/
+# Copy this script (as root) from /usr/local/bin to /etc/init.d and then #update-rc.d zram defaults
+# After booting verify the module is loaded with: lsmod | grep zram
+### END INIT INFO
+set -e
+
+start() {
+    # get the number of CPUs
+    num_cpus=$(grep -c processor /proc/cpuinfo)
+    # if something goes wrong, assume we have 1
+    [ "$num_cpus" != 0 ] || num_cpus=1
+
+    # set decremented number of CPUs
+    last_cpu=$((num_cpus - 1))
+
+    #default Factor % = 90 change this value here or create /etc/default/zram
+    FACTOR=90
+    #& put the above single line in /etc/default/zram with the value you want
+    [ -f /etc/default/zram ] && . /etc/default/zram || true
+    factor=$FACTOR # percentage
+
+    # get the amount of memory in the machine
+    memtotal=$(grep MemTotal /proc/meminfo | awk ' { print $2 } ')
+    mem_by_cpu=$(($memtotal/$num_cpus*$factor/100*1024))
+
+    # load dependency modules
+    modprobe zram zram_num_devices=$num_cpus
+    echo "zram devices probed successfully"
+
+    # initialize the devices
+    for i in $(seq 0 $last_cpu); do
+    	echo 1 > /sys/block/zram$i/reset
+    	echo $mem_by_cpu > /sys/block/zram$i/disksize
+    	# Creating swap filesystems
+    	mkswap /dev/zram$i
+    	# Switch the swaps on
+    	swapon -p 100 /dev/zram$i
+    done
+}
+
+stop() {
+    # get the number of CPUs
+    num_cpus=$(grep -c processor /proc/cpuinfo)
+
+    # set decremented number of CPUs
+    last_cpu=$((num_cpus - 1))
+
+    # Switching off swap
+    for i in $(seq 0 $last_cpu); do
+    	if [ "$(grep /dev/zram$i /proc/swaps)" != "" ]; then
+    		swapoff /dev/zram$i
+    		sleep 1
+    	fi
+    done
+    sleep 1
+    rmmod zram
+}
+
+case "$1" in
+    start)
+        start
+        ;;
+    stop)
+        stop
+        ;;
+    restart)
+        stop
+        sleep 3
+        start
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|restart}"
+        RETVAL=1
+esac
+exit $RETVAL
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram.service b/import-layers/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram.service
new file mode 100644
index 0000000..4a19367
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Enable zram compressed in-memory swap.
+After=multi-user.target
+
+[Service]
+RemainAfterExit=yes
+ExecStart=/usr/bin/zram-load.sh --load
+ExecStop=/usr/bin/zram-load.sh --unload
+Type=oneshot
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.1.bb
new file mode 100644
index 0000000..e07f570
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Linux zram compressed in-memory swap"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+inherit update-rc.d systemd
+
+RDEPENDS_${PN} = "util-linux-swaponoff kmod"
+RRECOMMENDS_${PN} = "kernel-module-zram"
+
+PR = "r3"
+
+SRC_URI = " \
+           file://init \
+           file://zram.service \
+"
+
+do_install () {
+    # Sysvinit
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/zram
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/zram.service ${D}${systemd_unitdir}/system
+}
+
+FILES_${PN} = "${sysconfdir}"
+INITSCRIPT_NAME = "zram"
+INITSCRIPT_PARAMS = "start 05 2 3 4 5 . stop 22 0 1 6 ."
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "zram.service"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-extended/zsh/zsh_5.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-extended/zsh/zsh_5.0.5.bb
new file mode 100644
index 0000000..39b2d95
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-extended/zsh/zsh_5.0.5.bb
@@ -0,0 +1,61 @@
+SUMMARY = "UNIX Shell similar to the Korn shell"
+DESCRIPTION = "Zsh is a shell designed for interactive use, although it is also a \
+               powerful scripting language. Many of the useful features of bash, \
+               ksh, and tcsh were incorporated into zsh; many original features were added."
+HOMEPAGE = "http://www.zsh.org"
+SECTION = "base/shell"
+
+LICENSE = "zsh"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=b7bc853894664be455a922db9805288e"
+
+DEPENDS = "ncurses bison-native libcap libpcre gdbm groff-native"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz"
+SRC_URI[md5sum] = "6fb0e3e52a0f8de5ca63138391b81ce0"
+SRC_URI[sha256sum] = "b35cf19e4a6ba39fd03c6372b8a8760a491cc2e2e4aba3d15023ff291c2894b4"
+
+inherit autotools gettext update-alternatives
+
+EXTRA_OECONF = " \
+    --bindir=${base_bindir} \
+    --enable-etcdir=${sysconfdir} \
+    --enable-fndir=${datadir}/${PN}/${PV}/functions \
+    --enable-site-fndir=${datadir}/${PN}/site-functions \
+    --with-term-lib='ncursesw ncurses' \
+    --with-tcsetpgrp \
+    --enable-cap \
+    --enable-multibyte \
+    --disable-gdbm \
+    --disable-dynamic \
+    zsh_cv_shared_environ=yes \
+"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+ALTERNATIVE_${PN} = "sh"
+ALTERNATIVE_LINK_NAME[sh] = "${base_bindir}/sh"
+ALTERNATIVE_TARGET[sh] = "${base_bindir}/${BPN}"
+ALTERNATIVE_PRIORITY = "100"
+
+export AUTOHEADER = "true"
+
+do_configure () {
+    gnu-configize --force ${S}
+    oe_runconf
+}
+
+do_install_append () {
+    rm -fr ${D}/usr/share
+}
+
+pkg_postinst_${PN} () {
+    touch $D${sysconfdir}/shells
+    grep -q "bin/zsh" $D${sysconfdir}/shells || echo /bin/zsh >> $D${sysconfdir}/shells
+    grep -q "bin/sh" $D${sysconfdir}/shells || echo /bin/sh >> $D${sysconfdir}/shells
+}
+
+FILES_${PN}-dbg += "\
+    ${libdir}/${PN}/${PV}/${PN}/.debug/*.so \
+    ${libdir}/${PN}/${PV}/${PN}/db/.debug/*.so \
+    ${libdir}/${PN}/${PV}/${PN}/net/.debug/*.so \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.22.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.22.7.bb
new file mode 100644
index 0000000..6f51e34
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.22.7.bb
@@ -0,0 +1,19 @@
+SUMMARY = "C++ bindings for the atk"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1 & GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+                    file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "atk glibmm"
+
+inherit gnome autotools pkgconfig
+
+GNOME_COMPRESS_TYPE = "xz"
+
+SRC_URI[archive.md5sum] = "fec7db3fc47ba2e0c95d130ec865a236"
+SRC_URI[archive.sha256sum] = "bfbf846b409b4c5eb3a52fa32a13d86936021969406b3dcafd4dd05abd70f91b"
+
+EXTRA_OECONF = " --disable-documentation "
+
+FILES_${PN}-dev += "${libdir}/*/include ${libdir}/*/proc/m4"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.3.bb
new file mode 100644
index 0000000..80595fe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.3.bb
@@ -0,0 +1,20 @@
+SUMMARY = "C++ bindings for the GTK+ toolkit"
+HOMEPAGE = "http://www.gtkmm.org/"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1 & GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
+                    file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "atkmm pangomm glibmm gtk+ cairomm"
+
+inherit gnome autotools pkgconfig
+
+GNOME_COMPRESS_TYPE = "xz"
+
+SRC_URI[archive.md5sum] = "42fc5a3feeb33ea59b7660200e2a5465"
+SRC_URI[archive.sha256sum] = "c564a438677174b97d69dd70467cb03c933481006398dc9377417aa6abe02a39"
+
+EXTRA_OECONF = " --disable-documentation "
+
+FILES_${PN}-dev += "${libdir}/*/include ${libdir}/*/proc/m4"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkextra/files/remove-tutorial.patch b/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkextra/files/remove-tutorial.patch
new file mode 100644
index 0000000..da4f3f4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkextra/files/remove-tutorial.patch
@@ -0,0 +1,12 @@
+Upstream-Status: Inappropriate [configuration]
+
+diff --git a/docs/Makefile.am b/docs/Makefile.am
+index f5375f5..c306f23 100644
+--- a/docs/Makefile.am
++++ b/docs/Makefile.am
+@@ -1,4 +1,4 @@
+-SUBDIRS = reference tutorial
++SUBDIRS = reference
+ 
+ EXTRA_DIST = \
+ 	COPYING \
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkextra/gtkextra_3.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkextra/gtkextra_3.0.5.bb
new file mode 100644
index 0000000..926eff7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkextra/gtkextra_3.0.5.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Gtk+Extra is a set of custom widget for plots and images"
+HOMEPAGE = "http://gtkextra.sourceforge.net/"
+
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/gtkextra/${BP}.tar.gz \
+           file://remove-tutorial.patch \
+"
+
+SRC_URI[md5sum] = "486cea93666020f85f101ed8341baf41"
+SRC_URI[sha256sum] = "9cab6c5d6b792eb828d17cec2b9c1baba2ef57f789a290464afab80b53969e65"
+
+DEPENDS = "gtk+"
+
+inherit autotools pkgconfig gobject-introspection
+
+# | ./.libs/libgtkextra-x11-3.0.so: error: undefined reference to 'roundint'
+PNBLACKLIST[gtkextra] ?= "BROKEN: Fails to build with gcc-5"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkhtml2/files/0001-tests-main.c-fix-build-with-glib-2.36.patch b/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkhtml2/files/0001-tests-main.c-fix-build-with-glib-2.36.patch
new file mode 100644
index 0000000..b3eb396
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkhtml2/files/0001-tests-main.c-fix-build-with-glib-2.36.patch
@@ -0,0 +1,32 @@
+From 4b17eed4b8588569d11ec4bd2b6fa3c063830e6e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Thu, 16 May 2013 18:44:50 +0200
+Subject: [PATCH] tests/main.c: fix build with glib 2.36
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: project seems dead
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ tests/main.c |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/tests/main.c b/tests/main.c
+index 61cce82..18165ed 100644
+--- a/tests/main.c
++++ b/tests/main.c
+@@ -30,7 +30,9 @@ main (gint argc, gchar **argv)
+ {
+ 	GtkWidget *browser;
+ 
++#if !GLIB_CHECK_VERSION (2, 36, 0)
+ 	g_thread_init(NULL);
++#endif
+ 
+ 	gtk_init (&argc, &argv);
+ 
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkhtml2/gtkhtml2_svn.bb b/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkhtml2/gtkhtml2_svn.bb
new file mode 100644
index 0000000..cd22576
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/gtkhtml2/gtkhtml2_svn.bb
@@ -0,0 +1,39 @@
+SECTION = "libs"
+DEPENDS = "gtk+ glib-2.0 libxml2"
+SUMMARY = "A GTK+ HTML rendering library"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
+
+SRCREV = "1161"
+PV = "2.11.0+svnr${SRCPV}"
+PR = "r5"
+
+SRC_URI = "svn://svn.gnome.org/svn/gtkhtml2/;module=trunk;protocol=http \
+           http://git.yoctoproject.org/cgit/cgit.cgi/web-patches/plain/css-stylesheet-user.patch;striplevel=0;name=patch2 \
+           http://git.yoctoproject.org/cgit/cgit.cgi/web-patches/plain/css-media.patch;striplevel=0;name=patch3 \
+           http://git.yoctoproject.org/cgit/cgit.cgi/web-patches/plain/add-end-element-signal.patch;striplevel=0;name=patch4 \
+           http://git.yoctoproject.org/cgit/cgit.cgi/web-patches/plain/add-dom-functions.patch;striplevel=0;name=patch5 \
+           http://git.yoctoproject.org/cgit/cgit.cgi/web-patches/plain/iain-mem-leak.patch;striplevel=0;name=patch6 \
+           file://0001-tests-main.c-fix-build-with-glib-2.36.patch \
+"
+
+SRC_URI[patch2.md5sum] = "05fc3627ca364095702dc804f41c8391"
+SRC_URI[patch2.sha256sum] = "df5cca50a8f95333505d7920929fea251daea3be25be6834a1c50a742d9eb674"
+
+SRC_URI[patch3.md5sum] = "d3fe4cda3545f3e4718f1acc186608ab"
+SRC_URI[patch3.sha256sum] = "3aefaa17ffa38143bf5df1161c51ab402d35bfbee41ab4643c313edf569165d5"
+
+SRC_URI[patch4.md5sum] = "651b1601d8a1b21c8a3040fadb729043"
+SRC_URI[patch4.sha256sum] = "d067e8331bf9c6851f1c6067d991a7f54327f532900b405ebdf8e149c071f381"
+
+SRC_URI[patch5.md5sum] = "041be9711a16e629d01487664ba97152"
+SRC_URI[patch5.sha256sum] = "42956fb41341cf82ae8bce18b4cf96a7e2aa631b1b60657afb6d7e9be7cd138c"
+
+SRC_URI[patch6.md5sum] = "4e11dc7899d68f2be2e06ccee01d296d"
+SRC_URI[patch6.sha256sum] = "1e2cc080e654c1839c5cb4b4adf4c62a23e7da208427f3ba0b16cfed9e5cfa98"
+
+S = "${WORKDIR}/trunk"
+
+inherit pkgconfig autotools
+
+EXTRA_OECONF = " --disable-accessibility"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/0001-Makefile.am-use-LIBTOOL-instead-of-hardcoded-libtool.patch b/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/0001-Makefile.am-use-LIBTOOL-instead-of-hardcoded-libtool.patch
new file mode 100644
index 0000000..2b5eda0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/0001-Makefile.am-use-LIBTOOL-instead-of-hardcoded-libtool.patch
@@ -0,0 +1,27 @@
+From f39bcd5af79aa3efe2cecb2212793c5b596890a8 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 18 Feb 2016 17:40:45 +0200
+Subject: [PATCH] Makefile.am: use $(LIBTOOL) instead of hardcoded libtool name
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ unique/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/unique/Makefile.am b/unique/Makefile.am
+index 6475a87..734f431 100644
+--- a/unique/Makefile.am
++++ b/unique/Makefile.am
+@@ -114,7 +114,7 @@ Unique-1.0.gir: $(INTROSPECTION_SCANNER) libunique-1.0.la
+ 		--include=GObject-2.0 \
+ 		--include=Gtk-2.0 \
+ 		--library=libunique-1.0.la \
+-		--libtool="$(top_builddir)/libtool" \
++		--libtool="$(LIBTOOL)" \
+ 		--pkg gobject-2.0 \
+ 		--pkg gtk+-2.0 \
+ 		--output $@ \
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/build.patch b/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/build.patch
new file mode 100644
index 0000000..46a5c62
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/build.patch
@@ -0,0 +1,421 @@
+Upstream-Status: Backport [http://git.gnome.org/browse/unique/commit/?h=unique-1.1&id=f75ca2d7aad7d27686acca6090c1c569a79d7e63]
+Signed-off-By: Ross Burton <ross.burton@intel.com>
+
+From f75ca2d7aad7d27686acca6090c1c569a79d7e63 Mon Sep 17 00:00:00 2001
+From: Emmanuele Bassi <ebassi@gnome.org>
+Date: Sat, 08 May 2010 11:17:21 +0000
+Subject: build: Update the build environment
+
+Require autoconf 2.63, automake 1.11 and libtool 2.2.6 to remove Shave.
+
+Also bump up the requirement for gobject-introspection to 0.6.7.
+---
+diff --git a/build/autotools/Makefile.am b/build/autotools/Makefile.am
+index 5f35b85..b78428f 100644
+--- a/build/autotools/Makefile.am
++++ b/build/autotools/Makefile.am
+@@ -1,7 +1,4 @@
+ EXTRA_DIST = \
+-	shave-libtool.in 	\
+-	shave.in 		\
+-	shave.m4 		\
+ 	as-compiler-flag.m4	\
+ 	introspection.m4	\
+ 	Makefile.am.enums	\
+diff --git a/build/autotools/Makefile.am.silent b/build/autotools/Makefile.am.silent
+index 249f6af..8576846 100644
+--- a/build/autotools/Makefile.am.silent
++++ b/build/autotools/Makefile.am.silent
+@@ -1,10 +1,5 @@
+ # custom rules for quiet builds
+ 
+-if USE_SHAVE
+-QUIET_GEN = $(Q:@=@echo '  GEN   '$@;)
+-QUIET_LN  = $(Q:@=@echo '  LN    '$@;)
+-QUIET_RM  = $(Q:@=@echo '  RM    '$@;)
+-else
+ QUIET_GEN = $(AM_V_GEN)
+ 
+ QUIET_LN   = $(QUIET_LN_$(V))
+@@ -14,4 +9,3 @@ QUIET_LN_0 = @echo '  LN     '$@;
+ QUIET_RM   = $(QUIET_RM_$(V))
+ QUIET_RM_  = $(QUIET_RM_$(AM_DEFAULT_VERBOSITY))
+ QUIET_RM_0 = @echo '  RM     '$@;
+-endif # USE_SHAVE
+diff --git a/build/autotools/introspection.m4 b/build/autotools/introspection.m4
+index f9ce49c..589721c 100644
+--- a/build/autotools/introspection.m4
++++ b/build/autotools/introspection.m4
+@@ -59,12 +59,18 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
+        INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+        INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+        INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
++       INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
++       INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
++       INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+     fi
+     AC_SUBST(INTROSPECTION_SCANNER)
+     AC_SUBST(INTROSPECTION_COMPILER)
+     AC_SUBST(INTROSPECTION_GENERATE)
+     AC_SUBST(INTROSPECTION_GIRDIR)
+     AC_SUBST(INTROSPECTION_TYPELIBDIR)
++    AC_SUBST(INTROSPECTION_CFLAGS)
++    AC_SUBST(INTROSPECTION_LIBS)
++    AC_SUBST(INTROSPECTION_MAKEFILE)
+ 
+     AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
+ ])
+diff --git a/build/autotools/shave-libtool.in b/build/autotools/shave-libtool.in
+deleted file mode 100644
+index 1f3a720..0000000
+--- a/build/autotools/shave-libtool.in
++++ b/dev/null
+@@ -1,69 +0,0 @@
+-#!/bin/sh
+-
+-# we need sed
+-SED=@SED@
+-if test -z "$SED" ; then
+-SED=sed
+-fi
+-
+-lt_unmangle ()
+-{
+-   last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
+-}
+-
+-# the real libtool to use
+-LIBTOOL="$1"
+-shift
+-
+-# if 1, don't print anything, the underlaying wrapper will do it
+-pass_though=0
+-
+-# scan the arguments, keep the right ones for libtool, and discover the mode
+-preserved_args=
+-while test "$#" -gt 0; do
+-    opt="$1"
+-    shift
+-
+-    case $opt in
+-    --mode=*)
+-        mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
+-        preserved_args="$preserved_args $opt"
+-        ;;
+-    -o)
+-        lt_output="$1"
+-        preserved_args="$preserved_args $opt"
+-	;;
+-    *)
+-        preserved_args="$preserved_args $opt"
+-        ;;
+-      esac
+-done
+-
+-case "$mode" in
+-compile)
+-    # shave will be called and print the actual CC/CXX/LINK line
+-    preserved_args="$preserved_args --shave-mode=$mode"
+-    pass_though=1
+-    ;;
+-link)
+-    preserved_args="$preserved_args --shave-mode=$mode"
+-    Q="  LINK  "
+-    ;;
+-*)
+-    # let's u
+-    # echo "*** libtool: Unimplemented mode: $mode, fill a bug report"
+-    ;;
+-esac
+-
+-lt_unmangle "$lt_output"
+-output=$last_result
+-
+-if test -z $V; then
+-    if test $pass_though -eq 0; then
+-        echo "$Q$output"
+-    fi
+-    $LIBTOOL --silent $preserved_args
+-else
+-    echo $LIBTOOL $preserved_args
+-    $LIBTOOL $preserved_args
+-fi
+diff --git a/build/autotools/shave.in b/build/autotools/shave.in
+deleted file mode 100644
+index 5c16f27..0000000
+--- a/build/autotools/shave.in
++++ b/dev/null
+@@ -1,79 +0,0 @@
+-#!/bin/sh
+-
+-# we need sed
+-SED=@SED@
+-if test -z "$SED" ; then
+-SED=sed
+-fi
+-
+-lt_unmangle ()
+-{
+-   last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
+-}
+-
+-# the tool to wrap (cc, cxx, ar, ranlib, ..)
+-tool="$1"
+-shift
+-
+-# the reel tool (to call)
+-REEL_TOOL="$1"
+-shift
+-
+-pass_through=0
+-preserved_args=
+-while test "$#" -gt 0; do
+-    opt="$1"
+-    shift
+-
+-    case $opt in
+-    --shave-mode=*)
+-        mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
+-	;;
+-    -o)
+-        lt_output="$1"
+-        preserved_args="$preserved_args $opt"
+-	;;
+-    *)
+-        preserved_args="$preserved_args $opt"
+-        ;;
+-      esac
+-done
+-
+-# mode=link is handled in the libtool wrapper
+-case "$mode,$tool" in
+-link,*)
+-    pass_through=1
+-    ;;
+-*,cxx)
+-    Q="  CXX   "
+-    ;;
+-*,cc)
+-    Q="  CC    "
+-    ;;
+-*,fc)
+-    Q="  FC    "
+-    ;;
+-*,f77)
+-    Q="  F77   "
+-    ;;
+-*,objc)
+-    Q="  OBJC   "
+-    ;;
+-*,*)
+-    # should not happen
+-    Q="  CC    "
+-    ;;
+-esac
+-
+-lt_unmangle "$lt_output"
+-output=$last_result
+-
+-if test -z $V; then
+-    if test $pass_through -eq 0; then
+-        echo "$Q$output"
+-    fi
+-    $REEL_TOOL $preserved_args
+-else
+-    echo $REEL_TOOL $preserved_args
+-    $REEL_TOOL $preserved_args
+-fi
+diff --git a/build/autotools/shave.m4 b/build/autotools/shave.m4
+deleted file mode 100644
+index 0a3509e..0000000
+--- a/build/autotools/shave.m4
++++ b/dev/null
+@@ -1,77 +0,0 @@
+-dnl Make automake/libtool output more friendly to humans
+-dnl  Damien Lespiau <damien.lespiau@gmail.com>
+-dnl
+-dnl SHAVE_INIT([shavedir],[default_mode])
+-dnl
+-dnl shavedir: the directory where the shave scripts are, it defaults to
+-dnl           $(top_builddir)
+-dnl default_mode: (enable|disable) default shave mode.  This parameter
+-dnl               controls shave's behaviour when no option has been
+-dnl               given to configure.  It defaults to disable.
+-dnl
+-dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just
+-dnl   before AC_CONFIG_FILE/AC_OUTPUT is perfect.  This macro rewrites CC and
+-dnl   LIBTOOL, you don't want the configure tests to have these variables
+-dnl   re-defined.
+-dnl * This macro requires GNU make's -s option.
+-
+-AC_DEFUN([_SHAVE_ARG_ENABLE],
+-[
+-  AC_ARG_ENABLE([shave],
+-    AS_HELP_STRING(
+-      [--enable-shave],
+-      [use shave to make the build pretty [[default=$1]]]),,
+-      [enable_shave=$1]
+-    )
+-])
+-
+-AC_DEFUN([SHAVE_INIT],
+-[
+-  dnl you can tweak the default value of enable_shave
+-  m4_if([$2], [enable], [_SHAVE_ARG_ENABLE(yes)], [_SHAVE_ARG_ENABLE(no)])
+-
+-  if test x"$enable_shave" = xyes; then
+-    dnl where can we find the shave scripts?
+-    m4_if([$1],,
+-      [shavedir="$ac_pwd"],
+-      [shavedir="$ac_pwd/$1"])
+-    AC_SUBST(shavedir)
+-
+-    dnl make is now quiet
+-    AC_SUBST([MAKEFLAGS], [-s])
+-    AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`'])
+-
+-    dnl we need sed
+-    AC_CHECK_PROG(SED,sed,sed,false)
+-
+-    dnl substitute libtool
+-    SHAVE_SAVED_LIBTOOL=$LIBTOOL
+-    LIBTOOL="${SHELL} ${shavedir}/shave-libtool '${SHAVE_SAVED_LIBTOOL}'"
+-    AC_SUBST(LIBTOOL)
+-
+-    dnl substitute cc/cxx
+-    SHAVE_SAVED_CC=$CC
+-    SHAVE_SAVED_CXX=$CXX
+-    SHAVE_SAVED_FC=$FC
+-    SHAVE_SAVED_F77=$F77
+-    SHAVE_SAVED_OBJC=$OBJC
+-    CC="${SHELL} ${shavedir}/shave cc ${SHAVE_SAVED_CC}"
+-    CXX="${SHELL} ${shavedir}/shave cxx ${SHAVE_SAVED_CXX}"
+-    FC="${SHELL} ${shavedir}/shave fc ${SHAVE_SAVED_FC}"
+-    F77="${SHELL} ${shavedir}/shave f77 ${SHAVE_SAVED_F77}"
+-    OBJC="${SHELL} ${shavedir}/shave objc ${SHAVE_SAVED_OBJC}"
+-    AC_SUBST(CC)
+-    AC_SUBST(CXX)
+-    AC_SUBST(FC)
+-    AC_SUBST(F77)
+-    AC_SUBST(OBJC)
+-
+-    V=@
+-  else
+-    V=1
+-  fi
+-  Q='$(V:1=)'
+-  AC_SUBST(V)
+-  AC_SUBST(Q)
+-])
+-
+diff --git a/configure.ac b/configure.ac
+index a3ed3ee..bc3163a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -14,7 +14,7 @@ m4_define([unique_api_version], [1.0])
+ # This is the X.Y used in the protocol negotiation
+ m4_define([unique_protocol_version], [1.0])
+ 
+-AC_PREREQ([2.59])
++AC_PREREQ([2.63])
+ 
+ AC_INIT([unique], [unique_version],
+         [http://bugzilla.gnome.org/enter_bug.cgi?product=libunique],
+@@ -23,9 +23,21 @@ AC_INIT([unique], [unique_version],
+ AC_CONFIG_SRCDIR([unique/unique.h])
+ AC_CONFIG_MACRO_DIR([build/autotools])
+ 
+-AM_INIT_AUTOMAKE([1.10])
++AM_INIT_AUTOMAKE([1.11 no-define -Wno-portability dist-bzip2])
+ AM_CONFIG_HEADER([config.h])
+ 
++AM_SILENT_RULES([yes])
++
++AC_PROG_CC_C_O
++
++AM_PATH_GLIB_2_0
++
++LT_PREREQ([2.2.6])
++LT_INIT([disable-static])
++
++# Honor aclocal flags
++ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
++
+ # version symbols
+ UNIQUE_MAJOR_VERSION=unique_major_version
+ UNIQUE_MINOR_VERSION=unique_minor_version
+@@ -49,21 +61,6 @@ UNIQUE_LT_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age)
+ AC_SUBST(UNIQUE_LT_VERSION_INFO)
+ AC_SUBST(UNIQUE_LT_CURRENT_MINUS_AGE)
+ 
+-AC_ISC_POSIX
+-AC_PROG_CC
+-AC_PROG_INSTALL
+-AC_PROG_MAKE_SET
+-AC_C_CONST
+-AC_PROG_LIBTOOL
+-AC_PATH_PROG(GLIB_MKENUMS, [glib-mkenums])
+-AC_PATH_PROG(GLIB_GENMARSHAL, [glib-genmarshal])
+-
+-AM_SANITY_CHECK
+-AM_PROG_CC_STDC
+-
+-# Honor aclocal flags
+-ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+-
+ m4_define([glib_required], [2.12.0])
+ m4_define([gtk_required],  [2.11.0])
+ m4_define([dbus_required], [0.70])
+@@ -122,7 +119,6 @@ AM_CONDITIONAL([HAVE_DBUS], [test "x$have_dbus" = "xyes"])
+ dnl Bacon backend
+ dnl This is the fallback backend, so we *need* these headers and functions
+ dnl even if we end up using D-Bus
+-dnl D-Bus backend dependencies
+ m4_define([have_bacon_default], [yes])
+ AC_ARG_ENABLE([bacon],
+               [AC_HELP_STRING([--enable-bacon=@<:@yes/no@:>@],
+@@ -178,9 +174,9 @@ AC_ARG_ENABLE([maintainer-flags],
+ AS_IF([test "x$enable_maintainer_flags" = "xyes" &&  test "x$GCC" = "xyes"],
+       [
+         AS_COMPILER_FLAGS([MAINTAINER_CFLAGS],
+-                          ["-Werror -Wall -Wshadow -Wcast-align
+-                            -Wno-uninitialized -Wempty-body -Wformat-security
+-                            -Winit-self"])
++                          ["-Wall -Wshadow -Wcast-align
++                            -Wno-uninitialized -Wempty-body
++                            -Wformat-security -Winit-self"])
+       ]
+ )
+ 
+@@ -230,27 +226,10 @@ AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
+ AM_GLIB_DEFINE_LOCALEDIR(UNIQUE_LOCALEDIR)
+ 
+ # introspection
+-GOBJECT_INTROSPECTION_CHECK([0.6.3])
++GOBJECT_INTROSPECTION_CHECK([0.6.7])
+ 
+ # gtk-doc
+-GTK_DOC_CHECK([1.11])
+-
+-# nice builds
+-m4_ifdef([AM_SILENT_RULES],
+-         [
+-           AM_SILENT_RULES([yes])
+-           use_shave=no
+-         ],
+-         [
+-           SHAVE_INIT([build/autotools], [enable])
+-           AC_CONFIG_FILES([
+-                build/autotools/shave-libtool
+-                build/autotools/shave
+-           ])
+-           use_shave=yes
+-         ])
+-
+-AM_CONDITIONAL([USE_SHAVE], [test "x$use_shave" = "xyes"])
++GTK_DOC_CHECK([1.13])
+ 
+ AC_CONFIG_FILES([
+         Makefile
+--
+cgit v0.9.0.2
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/fix_for_compile_with_gcc-4.6.0.patch b/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/fix_for_compile_with_gcc-4.6.0.patch
new file mode 100644
index 0000000..d75de93
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/fix_for_compile_with_gcc-4.6.0.patch
@@ -0,0 +1,36 @@
+Upstream-Status: Pending
+
+Fix Following compilation errors with gcc 4.6.0
+
+Nitin A Kamble <nitin.a.kamble@intel.com> 2011/05/10
+
+| uniquebackend-dbus.c: In function 'unique_backend_dbus_request_name':
+| uniquebackend-dbus.c:87:22: error: variable 'backend_dbus' set but not used [-Werror=unused-but-set-variable]
+| uniquebackend-dbus.c: In function 'unique_backend_dbus_send_message':
+| uniquebackend-dbus.c:189:12: error: variable 'res' set but not used [-Werror=unused-but-set-variable]
+| cc1: all warnings being treated as errors
+| 
+| make[5]: *** [libunique_dbus_la-uniquebackend-dbus.lo] Error 1
+
+Index: libunique-1.1.6/unique/dbus/uniquebackend-dbus.c
+===================================================================
+--- libunique-1.1.6.orig/unique/dbus/uniquebackend-dbus.c
++++ libunique-1.1.6/unique/dbus/uniquebackend-dbus.c
+@@ -84,7 +84,7 @@ unique_backend_dbus_register_proxy (Uniq
+ static gboolean
+ unique_backend_dbus_request_name (UniqueBackend *backend)
+ {
+-  UniqueBackendDBus *backend_dbus;
++  UniqueBackendDBus __attribute__((__unused__)) *backend_dbus;
+   const gchar *name;
+   DBusGConnection *connection;
+   DBusGProxy *proxy;
+@@ -186,7 +186,7 @@ unique_backend_dbus_send_message (Unique
+   GValueArray *data;
+   gchar *cmd;
+   gchar *resp;
+-  gboolean res;
++  gboolean __attribute__((__unused__)) res;
+   GError *error;
+   UniqueResponse response;
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/noconst.patch b/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/noconst.patch
new file mode 100644
index 0000000..2cc0347
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique/noconst.patch
@@ -0,0 +1,130 @@
+G_CONST_RETURN is deprecated in glib 2.30 so remove to to avoid
+build failures.
+
+RP 2011/10/12
+
+Upstream-Status: Pending
+
+Index: libunique-1.1.6/unique/uniqueapp.c
+===================================================================
+--- libunique-1.1.6.orig/unique/uniqueapp.c	2011-10-12 01:21:25.842046488 +0100
++++ libunique-1.1.6/unique/uniqueapp.c	2011-10-12 01:21:55.062046796 +0100
+@@ -781,7 +781,7 @@
+ }
+ 
+ 
+-G_CONST_RETURN gchar *
++const gchar *
+ unique_command_to_string (UniqueApp *app,
+                           gint       command)
+ {
+@@ -863,7 +863,7 @@
+   return retval;
+ }
+ 
+-G_CONST_RETURN gchar *
++const gchar *
+ unique_response_to_string (UniqueResponse response)
+ {
+   GEnumClass *enum_class;
+Index: libunique-1.1.6/unique/uniquebackend.c
+===================================================================
+--- libunique-1.1.6.orig/unique/uniquebackend.c	2011-10-12 01:21:25.742046323 +0100
++++ libunique-1.1.6/unique/uniquebackend.c	2011-10-12 01:21:55.062046796 +0100
+@@ -111,7 +111,7 @@
+  *
+  * Return value: FIXME
+  */
+-G_CONST_RETURN gchar *
++const gchar *
+ unique_backend_get_name (UniqueBackend *backend)
+ {
+   g_return_val_if_fail (UNIQUE_IS_BACKEND (backend), NULL);
+@@ -154,7 +154,7 @@
+  *
+  * Return value: FIXME
+  */
+-G_CONST_RETURN gchar *
++const gchar *
+ unique_backend_get_startup_id (UniqueBackend *backend)
+ {
+   g_return_val_if_fail (UNIQUE_IS_BACKEND (backend), NULL);
+Index: libunique-1.1.6/unique/uniquebackend.h
+===================================================================
+--- libunique-1.1.6.orig/unique/uniquebackend.h	2011-10-12 01:21:25.992046521 +0100
++++ libunique-1.1.6/unique/uniquebackend.h	2011-10-12 01:21:56.512047875 +0100
+@@ -94,10 +94,10 @@
+ 
+ UniqueBackend *       unique_backend_create         (void);
+ 
+-G_CONST_RETURN gchar *unique_backend_get_name       (UniqueBackend     *backend);
++const gchar *unique_backend_get_name       (UniqueBackend     *backend);
+ void                  unique_backend_set_name       (UniqueBackend     *backend,
+                                                      const gchar       *name);
+-G_CONST_RETURN gchar *unique_backend_get_startup_id (UniqueBackend     *backend);
++const gchar *unique_backend_get_startup_id (UniqueBackend     *backend);
+ void                  unique_backend_set_startup_id (UniqueBackend     *backend,
+                                                      const gchar       *startup_id);
+ GdkScreen *           unique_backend_get_screen     (UniqueBackend     *backend);
+Index: libunique-1.1.6/unique/uniqueinternals.h
+===================================================================
+--- libunique-1.1.6.orig/unique/uniqueinternals.h	2011-10-12 01:21:25.892046532 +0100
++++ libunique-1.1.6/unique/uniqueinternals.h	2011-10-12 01:21:56.512047875 +0100
+@@ -44,11 +44,11 @@
+  * and then back into an id
+  */
+ UniqueResponse        unique_response_from_string  (const gchar    *response);
+-G_CONST_RETURN gchar *unique_response_to_string    (UniqueResponse  response);
++const gchar *unique_response_to_string    (UniqueResponse  response);
+ 
+ gint                  unique_command_from_string   (UniqueApp      *app,
+                                                     const gchar    *command);
+-G_CONST_RETURN gchar *unique_command_to_string     (UniqueApp      *app,
++const gchar *unique_command_to_string     (UniqueApp      *app,
+                                                     gint            command);
+ 
+ G_END_DECLS
+Index: libunique-1.1.6/unique/uniquemessage.c
+===================================================================
+--- libunique-1.1.6.orig/unique/uniquemessage.c	2011-10-12 01:21:25.942046524 +0100
++++ libunique-1.1.6/unique/uniquemessage.c	2011-10-12 01:21:55.072046595 +0100
+@@ -185,7 +185,7 @@
+  *
+  * Since: 1.0.2
+  */
+-G_CONST_RETURN guchar *
++const guchar *
+ unique_message_data_get (UniqueMessageData *message_data,
+                          gsize             *length)
+ {
+@@ -525,7 +525,7 @@
+  *   owned by the #UniqueMessageData structure and should not be
+  *   modified or freed
+  */
+-G_CONST_RETURN gchar *
++const gchar *
+ unique_message_data_get_startup_id (UniqueMessageData *message_data)
+ {
+   g_return_val_if_fail (message_data != NULL, NULL);
+Index: libunique-1.1.6/unique/uniquemessage.h
+===================================================================
+--- libunique-1.1.6.orig/unique/uniquemessage.h	2011-10-12 01:21:25.792046596 +0100
++++ libunique-1.1.6/unique/uniquemessage.h	2011-10-12 01:21:56.512047875 +0100
+@@ -48,7 +48,7 @@
+ void                   unique_message_data_set            (UniqueMessageData *message_data,
+                                                            const guchar      *data,
+                                                            gsize              length);
+-G_CONST_RETURN guchar *unique_message_data_get            (UniqueMessageData *message_data,
++const guchar *unique_message_data_get            (UniqueMessageData *message_data,
+                                                            gsize             *length);
+ 
+ gboolean               unique_message_data_set_text       (UniqueMessageData *message_data,
+@@ -63,7 +63,7 @@
+ gchar *                unique_message_data_get_filename   (UniqueMessageData *message_data);
+ 
+ GdkScreen *            unique_message_data_get_screen     (UniqueMessageData *message_data);
+-G_CONST_RETURN gchar * unique_message_data_get_startup_id (UniqueMessageData *message_data);
++const gchar * unique_message_data_get_startup_id (UniqueMessageData *message_data);
+ guint                  unique_message_data_get_workspace  (UniqueMessageData *message_data);
+ 
+ G_END_DECLS
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique_1.1.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique_1.1.6.bb
new file mode 100644
index 0000000..3d13e5a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-gnome/libunique/libunique_1.1.6.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Library for supporting single instance GTK+ applications"
+DESCRIPTION = "Unique is a library for writing single instance GTK+ applications. If you launch a single instance application twice, the second instance will either just quit or will send a message to the running instance."
+HOMEPAGE = "https://wiki.gnome.org/Attic/LibUnique"
+BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=libunique"
+
+SRC_URI = "${GNOME_MIRROR}/libunique/1.1/libunique-${PV}.tar.bz2 \
+	file://fix_for_compile_with_gcc-4.6.0.patch \
+	file://noconst.patch \
+        file://build.patch \
+        file://0001-Makefile.am-use-LIBTOOL-instead-of-hardcoded-libtool.patch \
+        "
+
+SRC_URI[md5sum] = "7955769ef31f1bc4f83446dbb3625e6d"
+SRC_URI[sha256sum] = "e5c8041cef8e33c55732f06a292381cb345db946cf792a4ae18aa5c66cdd4fbb"
+
+PR = "r7"
+
+DEPENDS = "glib-2.0 gtk+"
+
+PACKAGECONFIG ??= "dbus"
+PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus dbus-glib"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+
+inherit autotools pkgconfig gobject-introspection
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/babl/babl_0.1.16.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/babl/babl_0.1.16.bb
new file mode 100644
index 0000000..daea052
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/babl/babl_0.1.16.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Babl is a dynamic, any to any, pixel format conversion library"
+LICENSE = "LGPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6a6a8e020838b23406c81b19c1d46df6"
+
+inherit gnomebase
+
+SRC_URI = "http://ftp.gimp.org/pub/${BPN}/0.1/${BP}.tar.bz2"
+SRC_URI[md5sum] = "a1c72e5f5d55a8b736ef2fa67ddb86ec"
+SRC_URI[sha256sum] = "7d6ba55ec53ee6f6bf6945beec28839d09ff72376f4d83035eb379cd4f3e980e"
+
+FILES_${PN} += "${libdir}/babl-*/*.so"
+FILES_${PN}-dev += "${libdir}/babl-*/*.la"
+FILES_${PN}-dbg += "${libdir}/babl-*/.debug/"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm_1.11.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm_1.11.2.bb
new file mode 100644
index 0000000..a330458
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm_1.11.2.bb
@@ -0,0 +1,16 @@
+SUMMARY = "C++ bindings for Cairo graphics library"
+
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c46bda00ffbb0ba1dac22f8d087f54d9"
+
+inherit autotools pkgconfig
+
+DEPENDS = "cairo libsigc++-2.0"
+
+SRC_URI = "http://cairographics.org/releases/cairomm-${PV}.tar.gz;name=archive"
+SRC_URI[archive.md5sum] = "732a3ff5b57401eb5dfeef795a2a0c52"
+SRC_URI[archive.sha256sum] = "ccf677098c1e08e189add0bd146f78498109f202575491a82f1815b6bc28008d"
+
+FILES_${PN}-doc += "${datadir}/devhelp"
+FILES_${PN}-dev += "${libdir}/cairomm-*/"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/clutter/clutter-box2d.inc b/import-layers/meta-openembedded/meta-oe/recipes-graphics/clutter/clutter-box2d.inc
new file mode 100644
index 0000000..646b785
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/clutter/clutter-box2d.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Clutter Box2D"
+HOMEPAGE = "http://www.clutter-project.org/"
+LICENSE = "LGPLv2.1+"
+
+# The main clutter lib is machine specific so we need to be too
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+inherit autotools pkgconfig gtk-doc
+
+do_install_append () {
+    install -d ${D}${bindir}
+    install ${S}/examples/.libs/blockbox ${D}${bindir}
+}
+
+FILESPATH = "${FILE_DIRNAME}/clutter-box2d"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/clutter/clutter-box2d_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/clutter/clutter-box2d_git.bb
new file mode 100644
index 0000000..194d104
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/clutter/clutter-box2d_git.bb
@@ -0,0 +1,19 @@
+require clutter-box2d.inc
+
+LIC_FILES_CHKSUM = "file://box2d/License.txt;md5=e5d39ad91f7dc4692dcdb1d85139ec6b"
+
+# 0.12.1+gitAUTOINC+de5452e56b-r1/git/clutter-box2d/clutter-box2d.h:226:47:
+#  fatal error: clutter-box2d/clutter-box2d-child.h: No such file or directory
+# |  #include <clutter-box2d/clutter-box2d-child.h>
+PNBLACKLIST[clutter-box2d] ?= "BROKEN: doesn't build with B!=S"
+
+SRCREV = "de5452e56b537a11fd7f9453d048ff4b4793b5a2"
+PV = "0.12.1+git${SRCPV}"
+PR = "r1"
+
+SRC_URI = "git://git.gnome.org/clutter-box2d.git"
+
+S = "${WORKDIR}/git"
+
+DEPENDS += "clutter-1.0"
+PROVIDES = "clutter-box2d-1.6"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb
new file mode 100644
index 0000000..a88caf8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Simple bootsplash for systemd systems"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+# Really, no depends besides a C library
+
+PV = "0.3"
+PR = "r1"
+
+SRCREV = "f7aadacbe3c19e37ea938e00a5141b577fb74a5e"
+SRC_URI = "git://github.com/lucasdemarchi/dietsplash.git"
+
+inherit autotools
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF = " --with-systemdsystemunitdir=${systemd_unitdir}/system \
+                 --disable-staticimages"
+
+FILES_${PN} += "${systemd_unitdir}/system/"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.2.bb
new file mode 100644
index 0000000..1d87b86
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.2.bb
@@ -0,0 +1,18 @@
+SUMMARY = "FBGrab is a framebuffer screenshot program"
+HOMEPAGE = "http://fbgrab.monells.se/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a"
+SECTION = "console/utils"
+DEPENDS = "libpng zlib"
+SRC_URI = "http://fbgrab.monells.se/${BP}.tar.gz"
+
+inherit autotools-brokensep
+
+S = "${WORKDIR}/${BPN}"
+
+SRC_URI[md5sum] = "15b432735d6efd0373722bb96577b945"
+SRC_URI[sha256sum] = "61e0772ad6ea744ee597ae478398ddd0ba6fceee2cf343859bebde2c15bafb91"
+
+do_configure_prepend() {
+    sed -i 's|$(DESTDIR)/usr/man/|$(DESTDIR)${mandir}/|g' ${S}/Makefile
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.10.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.10.bb
new file mode 100644
index 0000000..c14fc9b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.10.bb
@@ -0,0 +1,66 @@
+SUMMARY = "Framebuffer image and doc viewer tools"
+DESCRIPTION = "The fbida project contains a few applications for viewing and editing images, \
+               with the main focus being photos."
+HOMEPAGE = "http://linux.bytesex.org/fbida/"
+AUTHOR = "Gerd Hoffmann"
+SECTION = "utils"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+
+DEPENDS = "virtual/libiconv jpeg fontconfig freetype libexif"
+
+SRC_URI = "https://www.kraxel.org/releases/fbida/fbida-${PV}.tar.gz"
+SRC_URI[md5sum] = "09460b964b58c2e39b665498eca29018"
+SRC_URI[sha256sum] = "7a5a3aac61b40a6a2bbf716d270a46e2f8e8d5c97e314e927d41398a4d0b6cb6"
+
+B = "${WORKDIR}/build"
+
+EXTRA_OEMAKE = "STRIP= 'srcdir=${S}' -f ${S}/GNUmakefile"
+
+PACKAGECONFIG ??= "gif png curl"
+PACKAGECONFIG[curl] = ",,curl"
+PACKAGECONFIG[gif] = ",,giflib"
+PACKAGECONFIG[png] = ",,libpng"
+PACKAGECONFIG[tiff] = ",,tiff"
+PACKAGECONFIG[motif] = ",,libx11 libxext libxpm libxt openmotif"
+PACKAGECONFIG[webp] = ",,libwebp"
+PACKAGECONFIG[lirc] = ",,lirc"
+
+do_compile() {
+    sed -i -e 's# fbgs# \$(srcdir)/fbgs#; s#-Ijpeg#-I\$(srcdir)/jpeg#; s# jpeg/# \$(srcdir)/jpeg/#' ${S}/GNUmakefile
+    sed -i -e 's:/sbin/ldconfig:echo x:' ${S}/mk/Autoconf.mk
+    sed -i -e 's: cpp: ${TARGET_PREFIX}cpp -I${STAGING_INCDIR}:' ${S}/GNUmakefile
+
+    # Be sure to respect preferences (force to "no")
+    # Also avoid issues when ${BUILD_ARCH} == ${HOST_ARCH}
+    if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'curl', 'curl', '', d)}" ]; then
+        sed -i -e '/^HAVE_LIBCURL/s/:=.*$/:= no/' ${S}/GNUmakefile
+    fi
+    if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'gif', 'gif', '', d)}" ]; then
+        sed -i -e '/^HAVE_LIBGIF/s/:=.*$/:= no/' ${S}/GNUmakefile
+    fi
+    if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'png', 'png', '', d)}" ]; then
+        sed -i -e '/^HAVE_LIBPNG/s/:=.*$/:= no/' ${S}/GNUmakefile
+    fi
+    if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'tiff', 'tiff', '', d)}" ]; then
+        sed -i -e '/^HAVE_LIBTIFF/s/:=.*$/:= no/' ${S}/GNUmakefile
+    fi
+    if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'motif', 'motif', '', d)}" ]; then
+        sed -i -e '/^HAVE_MOTIF/s/:=.*$/:= no/' ${S}/GNUmakefile
+    fi
+    if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'webp', 'webp', '', d)}" ]; then
+        sed -i -e '/^HAVE_LIBWEBP/s/:=.*$/:= no/' ${S}/GNUmakefile
+    fi
+    if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'lirc', 'lirc', '', d)}" ]; then
+        sed -i -e '/^HAVE_LIBLIRC/s/:=.*$/:= no/' ${S}/GNUmakefile
+    fi
+
+    oe_runmake
+}
+
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install
+}
+
+RDEPENDS_${PN} = "ttf-dejavu-sans-mono bash"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/fim/files/cross_cc.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/fim/files/cross_cc.patch
new file mode 100644
index 0000000..85ab1ef
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/fim/files/cross_cc.patch
@@ -0,0 +1,29 @@
+From 9b0b322d86c7b2d2cddaa62f7dab4aa669739a48 Mon Sep 17 00:00:00 2001
+From: Matthieu Crapet <Matthieu.Crapet@ingenico.com>
+Date: Wed, 19 Mar 2014 13:18:21 +0100
+Subject: [PATCH] Upstream-Status: Pending
+
+b2ba should be built by BUILD_CC in cross environment
+This is only used when configured with --enable-hardcoded-font
+
+Signed-off-by: Matthieu Crapet <Matthieu.Crapet@ingenico.com>
+---
+ src/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index a1d4330..a8150b9 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -63,7 +63,7 @@ help-acm.cpp: fim.h
+ 	$(ECHO) '//#endif' >> $@
+ 
+ b2ba:
+-	$(CC) -o b2ba b2ba.c
++	$(BUILD_CC) -o b2ba b2ba.c
+ 
+ if FIM_WANT_CUSTOM_HARDCODED_CONSOLEFONT
+ default_font_byte_array.h: $(FIM_CUSTOM_HARDCODED_CONSOLEFONT) b2ba
+-- 
+1.8.5.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/fim/fim_0.4-rc1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/fim/fim_0.4-rc1.bb
new file mode 100644
index 0000000..90ac702
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/fim/fim_0.4-rc1.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Framebuffer (scriptable) image viewer"
+DESCRIPTION = "FIM (Fbi IMproved) aims to be a highly customizable and scriptable \
+               image viewer targeted at users who are comfortable with software \
+               like the Vim text editor or the Mutt mail user agent."
+SECTION = "utils"
+HOMEPAGE = "http://www.autistici.org/dezperado/fim/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fa01bff138cc98a62b8840a157951c88"
+
+PNBLACKLIST[fim] ?= "BROKEN: doesn't build with B!=S (flex: can't open lex.lex)"
+
+# flex with provide /usr/include/FlexLexer.h
+DEPENDS = "flex-native bison-native flex"
+
+SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/fbi-improved/${BPN}-${PV}.tar.gz \
+           file://cross_cc.patch"
+SRC_URI[md5sum] = "d7362dde5541c2b6439c35c6e2bd5046"
+SRC_URI[sha256sum] = "3f6bf2de2952b9adcbeb3db12c2a979e999a81dd1e314a03bc58e24f1ea9f686"
+
+PARALLEL_MAKE = ""
+
+inherit autotools pkgconfig
+
+# Don't use provided regex.c
+EXTRA_OECONF = "fim_cv_regex=no fim_cv_regex_broken=no \
+    --enable-framebuffer \
+    --disable-djvu \
+    --disable-ps \
+    --disable-xcftopnm \
+    --disable-convert \
+    --disable-inkscape \
+    --disable-xfig \
+    --disable-dia \
+    --disable-aa \
+    --disable-sdl \
+    --enable-read-dirs \
+    --enable-recursive-dirs \
+    --enable-custom-status-bar \
+"
+
+# Note: imlib2 is located in meta-efl layer.
+PACKAGECONFIG ?= "jpeg rl hf"
+PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng"
+PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
+PACKAGECONFIG[tiff] = "--enable-tiff,--disable-tiff,tiff"
+PACKAGECONFIG[gif] = "--enable-gif,--disable-gif,giflib"
+PACKAGECONFIG[pdf] = "--enable-poppler,--disable-poppler,poppler"
+PACKAGECONFIG[magick] = "--enable-graphicsmagick,--disable-graphicsmagick,imagemagick"
+PACKAGECONFIG[imlib2] = "--enable-imlib2,--disable-imlib2,imlib2"
+PACKAGECONFIG[rl] = "--enable-readline,--disable-readline,readline"
+PACKAGECONFIG[hf] = "--enable-hardcoded-font,--disable-hardcoded-font"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20150824.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20150824.bb
new file mode 100644
index 0000000..53899f1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20150824.bb
@@ -0,0 +1,60 @@
+SUMMARY = "A font editor"
+HOMEPAGE = "http://fontforge.github.io/en-US/"
+LICENSE = "BSD-3-Clause & GPLv3"
+LIC_FILES_CHKSUM = " \
+    file://COPYING.gplv3;md5=d32239bcb673463ab874e80d47fae504 \
+    file://LICENSE;md5=3f922b42ed0033fa0fd4cd3268f6429c \
+"
+
+DEPENDS = "glib-2.0 pango giflib tiff libxml2 jpeg python libtool uthash"
+DEPENDS_append_class-target = " libxi"
+
+inherit autotools pkgconfig pythonnative distro_features_check
+
+REQUIRED_DISTRO_FEATURES_append_class-target = " x11"
+
+SRC_URI = "git://github.com/${BPN}/${BPN}.git"
+# tag 20150824
+SRCREV = "07d5ccff2704f8a56f1b3cc6695a4e31f85f88e6"
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF_append_class-native = " with_x=no --disable-python-extension --disable-python-scripting"
+
+do_configure_prepend() {
+    # uthash sources are expected in uthash/src
+    currdir=`pwd`
+    cd ${S}
+
+    mkdir -p uthash/src
+    cp ${STAGING_INCDIR}/ut*.h uthash/src
+
+    # avoid bootstrap cloning gnulib on every configure
+    cat >.gitmodules <<EOF
+[submodule "gnulib"]
+       path = gnulib
+       url = git://git.sv.gnu.org/gnulib
+EOF
+    cp -rf ${STAGING_DATADIR}/gnulib ${S}
+
+    # --force to avoid errors on reconfigure e.g if recipes changed we depend on
+    # | bootstrap: running: libtoolize --quiet
+    # | libtoolize:   error: 'libltdl/COPYING.LIB' exists: use '--force' to overwrite
+    # | ...
+    ./bootstrap --force
+
+    cd $currdir
+}
+
+PACKAGES =+ "${PN}-python-dbg ${PN}-python"
+
+FILES_${PN} += " \
+    ${datadir}/mime \
+    ${datadir}/icons \
+"
+
+FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR} ${datadir}/${PN}/python"
+FILES_${PN}-python-dbg = "${PYTHON_SITEPACKAGES_DIR}/.debug"
+RDEPENDS_${PN}-python = "python"
+
+# for e.g kde's oxygen-fonts
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl/pkgconfig.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl/pkgconfig.patch
new file mode 100644
index 0000000..d145b62
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl/pkgconfig.patch
@@ -0,0 +1,21 @@
+Index: gegl-0.2.0/configure.ac
+===================================================================
+--- gegl-0.2.0.orig/configure.ac	2012-04-02 21:56:49.000000000 +0000
++++ gegl-0.2.0/configure.ac	2014-07-17 21:34:15.312546602 +0000
+@@ -765,15 +765,7 @@
+ 
+ have_sdl="no"
+ if test "x$with_sdl" != "xno"; then
+-  AC_PATH_PROG(SDL_CONFIG, sdl-config, no)
+-  if test "$SDL_CONFIG" = "no"; then
+-    have_sdl="no  (SDL library not found)"
+-    AC_MSG_RESULT([*** Check for SDL library failed.])
+-  else
+-    have_sdl="yes"
+-    SDL_CFLAGS=`$SDL_CONFIG --cflags`
+-    SDL_LIBS=`$SDL_CONFIG --libs`
+-  fi
++  PKG_CHECK_MODULES([SDL], [sdl], [have_sdl="yes"], [have_sdl="no  (SDL library not found)"])
+ fi
+ 
+ AM_CONDITIONAL(HAVE_SDL, test "$have_sdl" = "yes")
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl_0.3.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl_0.3.4.bb
new file mode 100644
index 0000000..15c1b64
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl_0.3.4.bb
@@ -0,0 +1,30 @@
+SUMMARY = "GEGL (Generic Graphics Library) is a graph based image processing framework"
+LICENSE = "LGPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+DEPENDS = "babl librsvg glib-2.0 gtk+ pango cairo expat zlib libpng jpeg virtual/libsdl json-glib"
+
+EXTRA_OECONF = "--disable-docs"
+
+inherit gnomebase vala gobject-introspection
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[jasper] = "--with-jasper,--without-jasper,jasper"
+PACKAGECONFIG[avformat] = "--with-libavformat,--without-libavformat,libav"
+PACKAGECONFIG[lcms] = "--with-lcms,--without-lcms,lcms"
+PACKAGECONFIG[tiff] = "--with-libtiff,--without-libtiff,tiff"
+PACKAGECONFIG[webp] = "--with-webp,--without-webp,webp"
+
+SRC_URI = "http://ftp.gimp.org/pub/${BPN}/0.3/${BP}.tar.bz2 \
+           file://pkgconfig.patch "
+SRC_URI[md5sum] = "c19478321594d715a4cb324a0decda6f"
+SRC_URI[sha256sum] = "846290a790854d1e6b7c17a2d6f82ad7cb14c72e240bd3b81b98cc0ceddbc3ec"
+
+# There are a couple of non-symlink .so files installed into libdir, which need to go into main package
+FILES_${PN}_append = " ${libdir}/gegl-0.3/*.so ${libdir}/gegl-0.3/*.json ${libdir}/libgegl-npd-0.3.so ${libdir}/libgegl-sc-0.3.so"
+FILES_${PN}-dev_append = " ${libdir}/gegl-0.3/*.la ${libdir}/libgegl-0.3.so"
+FILES_${PN}-dev_remove = "${libdir}/lib*.so"
+
+# Fails to build with thumb-1 (qemuarm)
+# gegl-0.2.0/operations/common/matting-global.c: In function 'matting_process':
+# gegl-0.2.0/operations/common/matting-global.c:463:1: internal compiler error: in patch_jump_insn, at cfgrtl.c:1275
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0001-configure-ac-do-not-check-for-freetype-config.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0001-configure-ac-do-not-check-for-freetype-config.patch
new file mode 100644
index 0000000..fecd012
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0001-configure-ac-do-not-check-for-freetype-config.patch
@@ -0,0 +1,38 @@
+From 72ad76841d87e857428693d812a961935284ac62 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Thu, 12 Feb 2015 15:57:47 +0100
+Subject: [PATCH] configure-ac: do not check for freetype-config
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+freetype-config is not allowed in our environment - see also binconfig-disabled
+
+Upstream-Status: inappropriate [OE specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ configure.ac | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 26812b6..abec714 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -647,13 +647,6 @@ if test "x$fontconfig_ok" = xno; then
+ fi
+ 
+ 
+-AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
+-if test "x$FREETYPE_CONFIG" != "xno" ; then
+-  AC_MSG_CHECKING([for freetype libraries])
+-  FREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
+-  AC_MSG_RESULT($FREETYPE_LIBS)
+-fi
+-AC_SUBST(FREETYPE_LIBS)
+ 
+ 
+ ##########################################
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/bump_Babl-GEGL_versions.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/bump_Babl-GEGL_versions.patch
new file mode 100644
index 0000000..b71bf32
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/bump_Babl-GEGL_versions.patch
@@ -0,0 +1,53 @@
+Bump acceptable versions of babl and gegl.
+
+Patch is taken from debian:
+https://packages.debian.org/stretch/gimp
+
+Upstream-Status: Inappropriate [OE specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+diff --git a/app/sanity.c b/app/sanity.c
+index febddfb..85fea55 100644
+--- a/app/sanity.c
++++ b/app/sanity.c
+@@ -351,7 +351,7 @@ sanity_check_babl (void)
+ 
+ #define BABL_REQUIRED_MAJOR 0
+ #define BABL_REQUIRED_MINOR 1
+-#define BABL_REQUIRED_MICRO 10
++#define BABL_REQUIRED_MICRO 12
+ 
+   babl_get_version (&babl_major_version,
+                     &babl_minor_version,
+@@ -388,7 +388,7 @@ sanity_check_gegl (void)
+   gint gegl_micro_version;
+ 
+ #define GEGL_REQUIRED_MAJOR 0
+-#define GEGL_REQUIRED_MINOR 2
++#define GEGL_REQUIRED_MINOR 3
+ #define GEGL_REQUIRED_MICRO 0
+ 
+   gegl_get_version (&gegl_major_version,
+diff --git a/configure.ac b/configure.ac
+index 26812b6..4252fe9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -40,8 +40,8 @@ m4_define([gimp_stable],
+ m4_define([gimp_full_name], [GNU Image Manipulation Program])
+ 
+ # required versions of other packages
+-m4_define([babl_required_version], [0.1.10])
+-m4_define([gegl_required_version], [0.2.0])
++m4_define([babl_required_version], [0.1.12])
++m4_define([gegl_required_version], [0.3.0])
+ m4_define([glib_required_version], [2.30.2])
+ m4_define([atk_required_version], [2.2.0])
+ m4_define([gtk_required_version], [2.24.10])
+@@ -519,7 +519,7 @@ AC_SUBST(ISO_CODES_LOCALEDIR)
+ ###############################
+ 
+ PKG_CHECK_MODULES(BABL, babl >= babl_required_version)
+-PKG_CHECK_MODULES(GEGL, gegl-0.2 >= gegl_required_version)
++PKG_CHECK_MODULES(GEGL, gegl-0.3 >= gegl_required_version)
+ PKG_CHECK_MODULES(ATK, atk >= atk_required_version)
+ 
+ AM_PATH_GLIB_2_0(glib_required_version, :,
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp_2.8.14.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp_2.8.14.bb
new file mode 100644
index 0000000..29ed4d9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp_2.8.14.bb
@@ -0,0 +1,32 @@
+SUMMARY = "The GIMP is the GNU Image Manipulation Program"
+HOMEPAGE = "http://www.gimp.org"
+SECTION = "x11/graphics"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "babl gdk-pixbuf-native libart-lgpl gtk+ jpeg libpng libexif tiff lcms gegl poppler jasper bzip2 libgudev"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libxmu libxpm', '', d)}"
+
+inherit gnome gtk-doc
+
+SRC_URI = " \
+    http://ftp.gimp.org/pub/gimp/v2.8/gimp-${PV}.tar.bz2 \
+    file://0001-configure-ac-do-not-check-for-freetype-config.patch \
+    file://bump_Babl-GEGL_versions.patch \
+"
+SRC_URI[md5sum] = "233c948203383fa078434cc3f8f925cb"
+SRC_URI[sha256sum] = "d82a958641c9c752d68e35f65840925c08e314cea90222ad845892a40e05b22d"
+
+EXTRA_OECONF = "--disable-python \
+                --without-webkit \
+                --without-wmf"
+
+do_configure_append() {
+    find ${B} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
+    find ${B} -name Makefile | xargs sed -i s:'-I/usr/include':'-I${STAGING_INCDIR}':g
+}
+
+CFLAGS += "-fPIC"
+
+FILES_${PN}-dbg += "${libdir}/gimp/2.0/*/.debug"
+FILES_${PN}  += "${datadir}/appdata"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/glcompbench/glcompbench/glbench-compile-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/glcompbench/glcompbench/glbench-compile-fix.patch
new file mode 100644
index 0000000..374a6cf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/glcompbench/glcompbench/glbench-compile-fix.patch
@@ -0,0 +1,35 @@
+From c4bc44c3abf69f26e4c2b7684f4da4670a51f993 Mon Sep 17 00:00:00 2001
+From: Prabhu Sundararaj <prabhu.sundararaj@freescale.com>
+Date: Tue, 5 Nov 2013 11:03:04 -0600
+Subject: [PATCH] to make compilable
+
+Upstream Status: Inappropriate [workaround]
+
+Signed-off-by: Prabhu Sundararaj <prabhu.sundararaj@freescale.com>
+---
+ src/composite-test-simple-blur.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/composite-test-simple-blur.cc b/src/composite-test-simple-blur.cc
+index 170ad64..d7f77cf 100644
+--- a/src/composite-test-simple-blur.cc
++++ b/src/composite-test-simple-blur.cc
+@@ -347,6 +347,7 @@ CompositeTestSimpleBlur::CompositeTestSimpleBlur() :
+ 
+ CompositeTestSimpleBlur::~CompositeTestSimpleBlur()
+ {
++#if 0
+     for (BlurWindowMapType::iterator winIt = priv_->windowMap.begin();
+          winIt != priv_->windowMap.end();
+          winIt++)
+@@ -354,6 +355,7 @@ CompositeTestSimpleBlur::~CompositeTestSimpleBlur()
+         RenderWindowBlur* ro = winIt->second;
+         delete ro;
+     }
++#endif
+     delete priv_;
+ }
+ 
+-- 
+1.8.1.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/glcompbench/glcompbench_2012.08.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/glcompbench/glcompbench_2012.08.bb
new file mode 100644
index 0000000..d0f4494
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/glcompbench/glcompbench_2012.08.bb
@@ -0,0 +1,16 @@
+SUMMARY = "A benchmark for GL(ES)2 based compositing operations"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
+
+DEPENDS = "virtual/libgl virtual/egl virtual/libgles1 virtual/libgles2 \
+           virtual/libx11 libxcomposite pixman libxrender libpng12"
+
+SRC_URI = "https://launchpad.net/glcompbench/trunk/${PV}/+download/${BPN}-${PV}.tar.gz \
+           file://glbench-compile-fix.patch"
+
+SRC_URI[md5sum] = "c939d9156fe940960098f38707fea827"
+SRC_URI[sha256sum] = "b04b738cec06c6786ceafa86e4735fd8b971c078265754854ef356b0379542ee"
+
+inherit pkgconfig waf distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2-2.5.8/0001-configure.ac-remove-AM_PO_SUBDIRS.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2-2.5.8/0001-configure.ac-remove-AM_PO_SUBDIRS.patch
new file mode 100644
index 0000000..7800fdd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2-2.5.8/0001-configure.ac-remove-AM_PO_SUBDIRS.patch
@@ -0,0 +1,26 @@
+From 60b6d5c95ca3632e02031ac04fb5486dd209011c Mon Sep 17 00:00:00 2001
+From: Andreas Baak <andreas.baak@gmail.com>
+Date: Sun, 12 Jul 2015 01:02:15 -0700
+Subject: [PATCH] configure.ac remove AM_PO_SUBDIRS
+
+This is done twice together with oe autotools.bbclass.
+
+---
+ configure.ac | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index bb5b795..93fbaf2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -64,7 +64,6 @@ GP_GETTEXT_HACK([],[Lutz Müller and others],[${MAIL_GPHOTO_TRANSLATION}])
+ ALL_LINGUAS="az cs da de en_GB es eu fi fr hu id is it ja nl pa pl pt_BR ro ru rw sk sr sv uk vi zh_CN zh_TW"
+ AM_GNU_GETTEXT_VERSION([0.14.1])
+ AM_GNU_GETTEXT([external])
+-AM_PO_SUBDIRS()
+ AM_ICONV()
+ GP_GETTEXT_FLAGS()
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2-2.5.8/0002-Look-for-popt-with-GP_CHECK_LIBRARY-function.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2-2.5.8/0002-Look-for-popt-with-GP_CHECK_LIBRARY-function.patch
new file mode 100644
index 0000000..e6c7dd6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2-2.5.8/0002-Look-for-popt-with-GP_CHECK_LIBRARY-function.patch
@@ -0,0 +1,32 @@
+From 884d4c9bbd2dc147d614a5fabc25dbea7a71cd48 Mon Sep 17 00:00:00 2001
+From: Andreas Baak <andreas.baak@gmail.com>
+Date: Sun, 12 Jul 2015 02:13:58 -0700
+Subject: [PATCH] Look for popt with GP_CHECK_LIBRARY function
+
+The previously used proprietary function GP_CHECK_POPT
+defined in /.m4m/gp-check-opt.m4 is not ready for cross
+compilation since it looks for the library and headers
+in the host system. Yocto reports the following error:
+"QA Issue: gphoto2: The compile log indicates that host
+include and/or library paths were used."
+Using the GP_CHECK_LIBRARY function fixes this problem
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 93fbaf2..6d661f0 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -285,7 +285,7 @@ GP_CONFIG_MSG([Text preview support],[$aa_msg])
+ dnl ---------------------------------------------------------------------------
+ dnl popt.h: Simplifies handling of command-line options enormously.
+ dnl ---------------------------------------------------------------------------
+-GP_CHECK_POPT([mandatory])
++GP_CHECK_LIBRARY([POPT], [popt], [], [popt.h], [], [], [mandatory])
+ 
+ 
+ dnl ---------------------------------------------------------------------------
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.8.bb
new file mode 100644
index 0000000..62d283b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.8.bb
@@ -0,0 +1,22 @@
+SUMMARY = "gphoto2 - a command-line frontend to libgphoto2"
+HOMEPAGE = "http://www.gphoto.com/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+DEPENDS = "libgphoto2 popt readline"
+RDEPENDS_gphoto2 = "libgphoto2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/gphoto/gphoto2-${PV}.tar.bz2;name=gphoto2 \
+           file://0001-configure.ac-remove-AM_PO_SUBDIRS.patch \
+           file://0002-Look-for-popt-with-GP_CHECK_LIBRARY-function.patch \
+"
+
+SRC_URI[gphoto2.md5sum] = "bae369aee6881e590c5c91bdbb11a5f8"
+SRC_URI[gphoto2.sha256sum] = "a9abcd15d95f205318d17e3ac12af7ce523d2bc4943709d50b0a12c30cc5ee4d"
+
+inherit autotools pkgconfig gettext
+
+EXTRA_OECONF += "--with-jpeg-prefix=${STAGING_INCDIR} \
+                 --without-cdk \
+"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/0001-configure.ac-remove-AM_PO_SUBDIRS.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/0001-configure.ac-remove-AM_PO_SUBDIRS.patch
new file mode 100644
index 0000000..8093676
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/0001-configure.ac-remove-AM_PO_SUBDIRS.patch
@@ -0,0 +1,48 @@
+From 31a5d2f7db18737aef08c34e8707b4f69f7e5156 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Sun, 21 Oct 2012 17:59:20 +0200
+Subject: [PATCH] configure.ac: remove AM_PO_SUBDIRS
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+together with oe autotools.bbclass this is done twice and causes:
+
+| autoreconf: running: aclocal --system-acdir=/home/Superandy/tmp/oe-core-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/libgphoto2-2.4.11-r2/libgphoto2-2.4.11/aclocal-copy/ --automake-acdir=/home/Superandy/tmp/oe-core-eglibc/sysroots/x86_64-linux/usr/share/aclocal-1.12 -I /home/Superandy/tmp/oe-core-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/libgphoto2-2.4.11-r2/libgphoto2-2.4.11/auto-m4/ -I /home/Superandy/tmp/oe-core-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/libgphoto2-2.4.11-r2/libgphoto2-2.4.11/m4m/ -I /home/Superandy/tmp/oe-core-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/libgphoto2-2.4.11-r2/libgphoto2-2.4.11/auto-m4/ -I /home/Superandy/tmp/oe-core-eglibc/work/armv7a-vfp-neon-angstrom-linux-gnueabi/libgphoto2-2.4.11-r2/libgphoto2-2.4.11/m4m/ --force -I auto-m4 -I m4m
+| configure.ac:230: error: `po-directories' is already registered with AC_CONFIG_COMMANDS.
+
+Upstream-Status: Inapropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ configure.ac                 |    1 -
+ libgphoto2_port/configure.ac |    1 -
+ 2 files changed, 0 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 2f8e1b8..2e90acf 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -209,7 +209,6 @@ ALL_LINGUAS="cs da de es eu fr hu it ja nl pl ru sv uk vi zh_CN"
+ GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2_CURRENT_MIN}],[The gPhoto Team],[${MAIL_GPHOTO_TRANSLATION}])
+ AM_GNU_GETTEXT_VERSION([0.14.1])
+ AM_GNU_GETTEXT([external])
+-AM_PO_SUBDIRS()
+ AM_ICONV()
+ GP_GETTEXT_FLAGS()
+ 
+diff --git a/libgphoto2_port/configure.ac b/libgphoto2_port/configure.ac
+index 0b66d58..df47357 100644
+--- a/libgphoto2_port/configure.ac
++++ b/libgphoto2_port/configure.ac
+@@ -124,7 +124,6 @@ GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2_PORT_CURRENT_MIN}],[Lutz Mueller and ot
+ ALL_LINGUAS="cs da de es eu fi fr it ja nl pl pt_BR ru sk sr sv uk vi zh_CN zh_TW"
+ AM_GNU_GETTEXT_VERSION([0.14.1])
+ AM_GNU_GETTEXT([external])
+-AM_PO_SUBDIRS()
+ AM_ICONV()
+ GP_GETTEXT_FLAGS()
+ 
+-- 
+1.7.4.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/10-camera-libgphoto2-device.fdi b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/10-camera-libgphoto2-device.fdi
new file mode 100644
index 0000000..3977064
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/10-camera-libgphoto2-device.fdi
@@ -0,0 +1,9533 @@
+<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
+<!-- This file was generated by libgphoto2 print-camera-list - - fdi-device -->
+<!--+
+    | Created from this library:
+    |   libgphoto2      2.5.8          all camlibs, gcc, ltdl, no EXIF
+    |   libgphoto2_port 0.12.0         gcc, ltdl, no USB, serial without locking
+    +-->
+<deviceinfo version="0.2">
+ <device>
+  <match key="info.subsystem" string="usb">
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13251">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13252">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13891">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13628">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13869">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13702">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13128">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13129">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13130">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13272">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13180">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13181">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13259">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13093">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13121">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13124">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13125">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13193">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13194">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13176">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13588">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13736">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13892">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="14117">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13833">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13427">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13663">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13911">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13226">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13796">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1282">
+    <match key="usb_device.product_id" int="13853">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="5845">
+    <match key="usb_device.product_id" int="32774">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="5845">
+    <match key="usb_device.product_id" int="32773">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1725">
+    <match key="usb_device.product_id" int="1027">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1725">
+    <match key="usb_device.product_id" int="1028">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1276">
+    <match key="usb_device.product_id" int="20555">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1276">
+    <match key="usb_device.product_id" int="20554">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2250">
+    <match key="usb_device.product_id" int="273">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1276">
+    <match key="usb_device.product_id" int="20554">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1276">
+    <match key="usb_device.product_id" int="20555">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7099">
+    <match key="usb_device.product_id" int="360">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7099">
+    <match key="usb_device.product_id" int="8200">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7099">
+    <match key="usb_device.product_id" int="3074">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7099">
+    <match key="usb_device.product_id" int="40974">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7099">
+    <match key="usb_device.product_id" int="61443">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7099">
+    <match key="usb_device.product_id" int="36941">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7099">
+    <match key="usb_device.product_id" int="359">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6473">
+    <match key="usb_device.product_id" int="2048">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6473">
+    <match key="usb_device.product_id" int="7">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6473">
+    <match key="usb_device.product_id" int="8">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6473">
+    <match key="usb_device.product_id" int="10">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6473">
+    <match key="usb_device.product_id" int="12">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6473">
+    <match key="usb_device.product_id" int="18">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6473">
+    <match key="usb_device.product_id" int="11">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6473">
+    <match key="usb_device.product_id" int="13">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6473">
+    <match key="usb_device.product_id" int="5">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6473">
+    <match key="usb_device.product_id" int="242">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="548">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4762">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4779">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4752">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4754">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4756">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4759">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4768">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4776">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4753">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4755">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1452">
+    <match key="usb_device.product_id" int="4761">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="20488">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="20489">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="16386">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5416">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5417">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5433">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5432">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5305">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5448">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4618">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4893">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4620">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4865">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4867">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4881">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4897">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="12787">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4913">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4915">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="12841">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4871">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="8200">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4951">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4945">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4873">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4875">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4883">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4885">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4917">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4877">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4879">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4889">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5359">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5480">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5481">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5311">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5400">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5384">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5385">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5293">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5274">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5227">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5214">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="5208">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="12715">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4615">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4929">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4891">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3705">
+    <match key="usb_device.product_id" int="4616">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="271">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="271">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37180">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="271">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="23055">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19680">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19681">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="20815">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="30579">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21519">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21535">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21775">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21760">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19664">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19665">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21023">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21007">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19648">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19649">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21600">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21608">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21504">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21520">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21521">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21606">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="30578">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21766">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21857">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="20992">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="20993">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21008">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21009">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21012">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21024">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21025">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21040">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21041">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19968">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19969">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19983">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19999">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19712">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19713">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19584">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19585">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19600">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19601">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19616">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="19617">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="22047">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="24322">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="22543">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="22559">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21632">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21633">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="30593">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21648">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2821">
+    <match key="usb_device.product_id" int="21649">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36945">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8320">
+    <match key="usb_device.product_id" int="6">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8320">
+    <match key="usb_device.product_id" int="5">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1189">
+    <match key="usb_device.product_id" int="12291">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7493">
+    <match key="usb_device.product_id" int="17821">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10823">
+    <match key="usb_device.product_id" int="32528">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10823">
+    <match key="usb_device.product_id" int="8200">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10823">
+    <match key="usb_device.product_id" int="3074">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12359">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12738">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12733">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12774">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12787">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12904">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12480">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12365">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12791">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12390">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12479">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12405">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12474">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12558">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12468">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12543">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12572">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12542">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12623">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12530">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12622">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12566">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12676">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12569">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12660">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12598">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12640">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12660">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12565">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12740">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12619">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12639">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12659">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12691">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12737">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12443">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12443">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12484">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12402">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12470">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12532">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12370">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12389">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12400">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12401">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12529">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12526">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12394">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12424">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12423">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12453">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12667">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12912">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12419">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12476">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12823">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12927">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12522">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12615">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12752">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12825">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12523">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12524">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12420">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12441">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12563">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12527">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12526">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12526">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12560">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12614">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12613">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12751">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12699">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12778">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12545">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12546">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12697">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12858">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12824">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12821">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12859">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12880">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12914">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12883">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12698">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12911">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12356">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12384">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12420">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12441">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12560">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12420">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12441">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12526">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12560">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12613">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12751">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12861">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12953">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12751">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12613">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12430">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12865">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12969">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12837">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12774">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12691">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12358">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12363">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12484">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12395">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12438">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12412">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12410">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12448">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12438">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12430">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12417">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12416">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12457">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12395">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12429">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12418">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12415">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12416">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12395">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12438">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12457">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12549">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12430">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12367">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12385">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12686">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12739">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12862">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12900">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12366">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12386">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12689">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12734">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12842">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12874">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12873">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12913">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12898">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12377">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12406">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12786">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12472">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12785">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12897">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12376">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12471">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12867">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12537">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12559">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12536">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12629">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12617">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12666">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12735">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12783">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12482">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12481">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12582">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12571">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12624">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12621">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12620">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12663">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12662">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12404">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12541">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12540">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12602">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12601">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12635">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12403">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12567">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12600">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12637">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12469">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12442">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12838">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12863">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12473">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12475">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12732">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12936">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12937">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12360">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12851">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12687">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12767">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12888">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12373">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12398">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12399">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12421">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12467">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12581">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12634">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12443">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12361">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12444">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12353">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12854">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12357">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12369">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12891">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12917">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12528">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12355">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12389">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12400">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12401">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12570">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12375">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12364">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12390">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12374">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12405">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12474">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12396">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12397">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12616">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12407">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12468">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12466">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12465">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12538">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12818">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12443">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12402">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12623">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12470">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12676">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12740">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12788">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12484">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12480">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12599">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12529">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12543">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12530">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12572">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12542">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12569">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12622">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12661">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12738">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12660">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12619">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12694">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12565">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12774">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12737">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12691">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12685">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12638">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12690">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12768">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12817">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12852">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12890">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12918">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12772">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12736">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12790">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12844">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12840">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12869">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12868">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12895">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12856">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12892">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12919">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12955">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12368">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12380">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12778">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12823">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12859">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1193">
+    <match key="usb_device.product_id" int="12408">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1999">
+    <match key="usb_device.product_id" int="4169">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1999">
+    <match key="usb_device.product_id" int="4162">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1999">
+    <match key="usb_device.product_id" int="4173">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1999">
+    <match key="usb_device.product_id" int="4172">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1999">
+    <match key="usb_device.product_id" int="4474">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1375">
+    <match key="usb_device.product_id" int="49664">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1207">
+    <match key="usb_device.product_id" int="34985">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="4098">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1943">
+    <match key="usb_device.product_id" int="32769">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="548">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7796">
+    <match key="usb_device.product_id" int="25874">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7763">
+    <match key="usb_device.product_id" int="5">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="16640">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1000">
+    <match key="usb_device.product_id" int="8578">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1000">
+    <match key="usb_device.product_id" int="8576">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2386">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="1809">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="1873">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2321">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2369">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2049">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2161">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2193">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2145">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2177">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2337">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2305">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="1793">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="1889">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3617">
+    <match key="usb_device.product_id" int="2353">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16406">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16391">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16394">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16402">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16395">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16403">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16675">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16727">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16688">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16700">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16691">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16737">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16695">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16701">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16689">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16720">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16728">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16722">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16671">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16723">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16702">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16721">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16738">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16745">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16680">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4204">
+    <match key="usb_device.product_id" int="12821">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2125">
+    <match key="usb_device.product_id" int="3">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3428">
+    <match key="usb_device.product_id" int="4129">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1000">
+    <match key="usb_device.product_id" int="8496">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3141">
+    <match key="usb_device.product_id" int="32768">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16690">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="16687">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16700">
+    <match key="usb_device.product_id" int="45323">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16700">
+    <match key="usb_device.product_id" int="45338">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16700">
+    <match key="usb_device.product_id" int="45339">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16700">
+    <match key="usb_device.product_id" int="17664">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7994">
+    <match key="usb_device.product_id" int="3074">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="270">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1498">
+    <match key="usb_device.product_id" int="4120">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4483">
+    <match key="usb_device.product_id" int="1">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1498">
+    <match key="usb_device.product_id" int="4128">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2726">
+    <match key="usb_device.product_id" int="24609">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36944">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36946">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4310">
+    <match key="usb_device.product_id" int="8704">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="270">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="271">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1208">
+    <match key="usb_device.product_id" int="1027">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1208">
+    <match key="usb_device.product_id" int="1026">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10608">
+    <match key="usb_device.product_id" int="8200">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10608">
+    <match key="usb_device.product_id" int="3074">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6018">
+    <match key="usb_device.product_id" int="16385">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1747">
+    <match key="usb_device.product_id" int="8634">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3530">
+    <match key="usb_device.product_id" int="2">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3530">
+    <match key="usb_device.product_id" int="2">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="330">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="466">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="454">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="467">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="539">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="403">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="480">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="448">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="484">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="411">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="449">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="453">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="468">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="486">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="506">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="526">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="557">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="625">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="592">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="477">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="475">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="495">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="512">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="488">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="521">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="576">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="637">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="613">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="664">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="452">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="471">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="447">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="322">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="399">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="668">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="563">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="622">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="611">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="678">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="648">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="472">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="513">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="525">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="510">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="693">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1227">
+    <match key="usb_device.product_id" int="451">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1221">
+    <match key="usb_device.product_id" int="4416">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1221">
+    <match key="usb_device.product_id" int="4923">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2334">
+    <match key="usb_device.product_id" int="9605">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1112">
+    <match key="usb_device.product_id" int="28677">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1037">
+    <match key="usb_device.product_id" int="34908">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1044">
+    <match key="usb_device.product_id" int="8200">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1044">
+    <match key="usb_device.product_id" int="3074">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="7">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="6">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="20033">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="20034">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="19983">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="19712">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="11522">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="29706">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="53514">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="53513">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="20193">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="20194">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="45066">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="28840">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="20005">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="20006">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="1459">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="28930">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6353">
+    <match key="usb_device.product_id" int="20197">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="9842">
+    <match key="usb_device.product_id" int="17">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1943">
+    <match key="usb_device.product_id" int="32796">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4866">
+    <match key="usb_device.product_id" int="4118">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4866">
+    <match key="usb_device.product_id" int="4119">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="270">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="32285">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="23837">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="23581">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4251">
+    <match key="usb_device.product_id" int="37126">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4251">
+    <match key="usb_device.product_id" int="37129">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4251">
+    <match key="usb_device.product_id" int="37125">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="25858">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="25090">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="31746">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="32002">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="25346">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="26114">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="29698">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="30722">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="29186">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="28162">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="30978">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="27906">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="25346">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="16642">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="26626">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="28930">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="27394">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="25602">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="30210">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="26370">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="27650">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="27138">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="16898">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="30466">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="32258">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="17154">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="16642">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="17410">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="17666">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="16642">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="24578">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="61443">
+    <match key="usb_device.product_id" int="24578">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="35586">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="35842">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="29954">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="31490">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="29442">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="31234">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="32770">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="33026">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="33282">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="39682">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="33794">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="34050">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="38402">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="38658">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="34562">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1008">
+    <match key="usb_device.product_id" int="34818">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="26716">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="26720">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3074">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="8200">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3782">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3773">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3583">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3219">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3240">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3582">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3556">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="1533">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3541">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3633">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3634">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3573">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="1966">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3546">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3985">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3940">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3939">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3975">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3935">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3936">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3562">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3538">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="1994">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3877">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="1562">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="4020">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="4021">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="1995">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="2009">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3308">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3576">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3577">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3578">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3579">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3580">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3581">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="2008">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="8210">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="1547">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="3533">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="61642">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="2977">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2996">
+    <match key="usb_device.product_id" int="2978">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4817">
+    <match key="usb_device.product_id" int="4226">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4817">
+    <match key="usb_device.product_id" int="13839">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4817">
+    <match key="usb_device.product_id" int="13855">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4817">
+    <match key="usb_device.product_id" int="4177">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4817">
+    <match key="usb_device.product_id" int="4178">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37203">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1161">
+    <match key="usb_device.product_id" int="49189">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="270">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6655">
+    <match key="usb_device.product_id" int="771">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6655">
+    <match key="usb_device.product_id" int="777">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6655">
+    <match key="usb_device.product_id" int="775">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="32903">
+    <match key="usb_device.product_id" int="2655">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="32903">
+    <match key="usb_device.product_id" int="2581">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="32903">
+    <match key="usb_device.product_id" int="2582">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="32902">
+    <match key="usb_device.product_id" int="1584">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="32903">
+    <match key="usb_device.product_id" int="2654">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="32903">
+    <match key="usb_device.product_id" int="2555">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="271">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4394">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4390">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4417">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4418">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4434">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4455">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4433">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="8449">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="8453">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="8450">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4102">
+    <match key="usb_device.product_id" int="12292">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4104">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4386">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4102">
+    <match key="usb_device.product_id" int="16386">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4102">
+    <match key="usb_device.product_id" int="16387">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4423">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4371">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4384">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4375">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4373">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4372">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4376">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4377">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4435">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4404">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4162">
+    <match key="usb_device.product_id" int="4419">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7784">
+    <match key="usb_device.product_id" int="4098">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4374">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="16642">
+    <match key="usb_device.product_id" int="4402">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2848">
+    <match key="usb_device.product_id" int="56814">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1924">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="13056">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="16640">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1498">
+    <match key="usb_device.product_id" int="4102">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="0">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10545">
+    <match key="usb_device.product_id" int="2561">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10545">
+    <match key="usb_device.product_id" int="2565">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1265">
+    <match key="usb_device.product_id" int="24837">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2126">
+    <match key="usb_device.product_id" int="1">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2856">
+    <match key="usb_device.product_id" int="4108">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8759">
+    <match key="usb_device.product_id" int="53512">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8759">
+    <match key="usb_device.product_id" int="53513">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8759">
+    <match key="usb_device.product_id" int="45320">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1559">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1547">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1406">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1418">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1420">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1421">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1417">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1450">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1434">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1442">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1463">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1466">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1447">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1455">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1454">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1475">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1449">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1478">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1436">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1376">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1376">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1333">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1382">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1382">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1396">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1395">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1393">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1412">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1401">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1400">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1400">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1402">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1403">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1414">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1404">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="288">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="289">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="272">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="273">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="304">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="274">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="306">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="352">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="305">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1317">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1280">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1296">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1328">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="368">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1365">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1398">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1360">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1392">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1394">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1397">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1405">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1407">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1399">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="768">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1344">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1384">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1385">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1381">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1383">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1486">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1536">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1439">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1473">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1453">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1413">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1024">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1426">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1427">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1422">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1423">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1425">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1440">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1452">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1451">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1464">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1437">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1438">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1415">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1459">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1460">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1408">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1416">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1027">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1461">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1429">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1487">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1485">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1034">
+    <match key="usb_device.product_id" int="1472">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1224">
+    <match key="usb_device.product_id" int="1826">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4907">
+    <match key="usb_device.product_id" int="1">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4907">
+    <match key="usb_device.product_id" int="25">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4907">
+    <match key="usb_device.product_id" int="9">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4907">
+    <match key="usb_device.product_id" int="7">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4907">
+    <match key="usb_device.product_id" int="24">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4907">
+    <match key="usb_device.product_id" int="34">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7994">
+    <match key="usb_device.product_id" int="4102">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1154">
+    <match key="usb_device.product_id" int="2425">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1154">
+    <match key="usb_device.product_id" int="2064">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1154">
+    <match key="usb_device.product_id" int="1393">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1154">
+    <match key="usb_device.product_id" int="1434">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36945">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9077">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6808">
+    <match key="usb_device.product_id" int="2">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30519">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30507">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="29848">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30140">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30142">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30018">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30077">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30440">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="29706">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30851">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30133">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30554">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="29900">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="3074">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="29847">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="29862">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="29944">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30488">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="29724">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30450">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30698">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30463">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="30641">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25073">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25081">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25215">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25198">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="24859">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="24719">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="24882">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25406">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25145">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25149">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25116">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25125">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="24986">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1086">
+    <match key="usb_device.product_id" int="28736">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1086">
+    <match key="usb_device.product_id" int="28849">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25372">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="25189">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="24592">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4100">
+    <match key="usb_device.product_id" int="24581">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="16640">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="5073">
+    <match key="usb_device.product_id" int="28674">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1133">
+    <match key="usb_device.product_id" int="2304">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1133">
+    <match key="usb_device.product_id" int="2384">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="16640">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="13056">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1276">
+    <match key="usb_device.product_id" int="20555">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1647">
+    <match key="usb_device.product_id" int="33900">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3725">
+    <match key="usb_device.product_id" int="80">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1032">
+    <match key="usb_device.product_id" int="45066">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6127">
+    <match key="usb_device.product_id" int="29827">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1276">
+    <match key="usb_device.product_id" int="20554">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="16640">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8709">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="16642">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1647">
+    <match key="usb_device.product_id" int="34128">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1647">
+    <match key="usb_device.product_id" int="34184">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1032">
+    <match key="usb_device.product_id" int="45065">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4721">
+    <match key="usb_device.product_id" int="8210">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8222">
+    <match key="usb_device.product_id" int="17067">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10821">
+    <match key="usb_device.product_id" int="8200">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10821">
+    <match key="usb_device.product_id" int="3074">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4310">
+    <match key="usb_device.product_id" int="8960">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3504">
+    <match key="usb_device.product_id" int="21874">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1118">
+    <match key="usb_device.product_id" int="1600">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1118">
+    <match key="usb_device.product_id" int="1570">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1118">
+    <match key="usb_device.product_id" int="1260">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1118">
+    <match key="usb_device.product_id" int="1808">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1118">
+    <match key="usb_device.product_id" int="1598">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1118">
+    <match key="usb_device.product_id" int="61642">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1118">
+    <match key="usb_device.product_id" int="201">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1118">
+    <match key="usb_device.product_id" int="1601">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3141">
+    <match key="usb_device.product_id" int="32776">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2125">
+    <match key="usb_device.product_id" int="3">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="24778">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="28808">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="25807">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11826">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11827">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11879">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11941">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11944">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11880">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="16854">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="16858">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="17063">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="17279">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="17267">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="18449">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="16860">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="28874">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11894">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11906">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11908">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11874">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11875">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11878">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="25619">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="25781">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="25782">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11856">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="11857">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="25621">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="10853">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="28835">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="28840">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="28841">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="17169">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="17158">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="16847">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="28941">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="28942">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8888">
+    <match key="usb_device.product_id" int="17250">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1375">
+    <match key="usb_device.product_id" int="49664">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1375">
+    <match key="usb_device.product_id" int="41808">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1375">
+    <match key="usb_device.product_id" int="49696">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1375">
+    <match key="usb_device.product_id" int="50208">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1375">
+    <match key="usb_device.product_id" int="50464">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2726">
+    <match key="usb_device.product_id" int="38401">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1033">
+    <match key="usb_device.product_id" int="806">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1033">
+    <match key="usb_device.product_id" int="1074">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1033">
+    <match key="usb_device.product_id" int="578">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1026">
+    <match key="usb_device.product_id" int="22120">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="770">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="279">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="290">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="291">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="265">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="277">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="289">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="273">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="285">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="301">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="516">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="271">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="267">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="304">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="305">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="297">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="275">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="518">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="281">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="302">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="269">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="309">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="313">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="311">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="287">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="259">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="295">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="274">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="401">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="258">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="550">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="392">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="520">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="779">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="777">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="382">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="351">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="389">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="789">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="792">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="791">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="804">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="835">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="773">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="402">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="320">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="381">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="322">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="545">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="524">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="361">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="388">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="347">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="547">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="355">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="552">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="785">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="367">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="383">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="395">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="549">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="553">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="363">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="364">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="371">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="823">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="838">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="334">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="353">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="375">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="376">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="801">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="813">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="831">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="795">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="800">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="820">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="810">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="324">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="809">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="349">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="544">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="334">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="369">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="542">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="540">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="343">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="543">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="546">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="390">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="403">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="843">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1028">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1036">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1032">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1052">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1034">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1026">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1040">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1046">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1050">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1060">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1061">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1063">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1068">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1075">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1062">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1056">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1067">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1044">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1048">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1077">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1059">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1065">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1071">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1073">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1054">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1069">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1030">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1058">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1064">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1038">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1072">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1079">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1042">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1066">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1070">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1078">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1057">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1538">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1539">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1541">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1545">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1542">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1537">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1200">
+    <match key="usb_device.product_id" int="1540">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1276">
+    <match key="usb_device.product_id" int="20554">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="548">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="705">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="101">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="95">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1122">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="494">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="521">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1214">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="738">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1210">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="108">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="234">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1150">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="553">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1204">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="340">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="341">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="345">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="46">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="152">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="141">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="60">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="663">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1491">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1426">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="961">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="973">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="463">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="815">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="377">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="229">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="820">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="821">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="228">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="417">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="545">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1788">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1638">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1633">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1316">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1160">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1233">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1249">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="121">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="390">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="766">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="770">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1265">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="10">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="116">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="146">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1306">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1157">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1144">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1253">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1263">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="110">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="978">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="57">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="501">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="619">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="500">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="628">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1057">
+    <match key="usb_device.product_id" int="1768">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="5891">
+    <match key="usb_device.product_id" int="1">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="5891">
+    <match key="usb_device.product_id" int="2">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2389">
+    <match key="usb_device.product_id" int="28841">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2389">
+    <match key="usb_device.product_id" int="46080">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2389">
+    <match key="usb_device.product_id" int="52999">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2389">
+    <match key="usb_device.product_id" int="52994">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2389">
+    <match key="usb_device.product_id" int="28928">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2389">
+    <match key="usb_device.product_id" int="28930">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7763">
+    <match key="usb_device.product_id" int="6">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="276">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="276">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="276">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="276">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="276">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="276">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="272">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="303">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="303">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="278">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="276">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="275">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="303">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="276">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="276">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="278">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1972">
+    <match key="usb_device.product_id" int="278">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8921">
+    <match key="usb_device.product_id" int="10085">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8921">
+    <match key="usb_device.product_id" int="10100">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8921">
+    <match key="usb_device.product_id" int="10099">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="9076">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="8517">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1242">
+    <match key="usb_device.product_id" int="8536">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4204">
+    <match key="usb_device.product_id" int="61443">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7501">
+    <match key="usb_device.product_id" int="20534">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7501">
+    <match key="usb_device.product_id" int="20533">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7501">
+    <match key="usb_device.product_id" int="20554">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="9723">
+    <match key="usb_device.product_id" int="357">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2583">
+    <match key="usb_device.product_id" int="13">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2583">
+    <match key="usb_device.product_id" int="247">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2726">
+    <match key="usb_device.product_id" int="38658">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8316">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8377">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8504">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="357">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8311">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8334">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8196">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="2135">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="2126">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8194">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="335">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8309">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8315">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8375">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8421">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="333">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="332">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="491">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="331">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="6411">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="270">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8592">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="32257">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="385">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="356">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="8226">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1137">
+    <match key="usb_device.product_id" int="370">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2276">
+    <match key="usb_device.product_id" int="322">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2276">
+    <match key="usb_device.product_id" int="328">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="270">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1924">
+    <match key="usb_device.product_id" int="10376">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1350">
+    <match key="usb_device.product_id" int="8245">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1350">
+    <match key="usb_device.product_id" int="3503">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="271">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10724">
+    <match key="usb_device.product_id" int="4611">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10724">
+    <match key="usb_device.product_id" int="4355">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1924">
+    <match key="usb_device.product_id" int="21248">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1276">
+    <match key="usb_device.product_id" int="65535">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1478">
+    <match key="usb_device.product_id" int="34816">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1478">
+    <match key="usb_device.product_id" int="61443">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1478">
+    <match key="usb_device.product_id" int="553">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1478">
+    <match key="usb_device.product_id" int="12694">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1478">
+    <match key="usb_device.product_id" int="26468">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1478">
+    <match key="usb_device.product_id" int="26469">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1478">
+    <match key="usb_device.product_id" int="36921">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1478">
+    <match key="usb_device.product_id" int="36901">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3530">
+    <match key="usb_device.product_id" int="4">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1924">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="4704">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="4712">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8715">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8707">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8708">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8712">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8716">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="805">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8724">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="813">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8717">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8722">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="811">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8723">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8726">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="815">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8727">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8730">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="272">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8706">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="829">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8717">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4042">
+    <match key="usb_device.product_id" int="32775">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8719">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8719">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37181">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37181">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37181">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3141">
+    <match key="usb_device.product_id" int="32771">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3141">
+    <match key="usb_device.product_id" int="32771">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3141">
+    <match key="usb_device.product_id" int="32771">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="270">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="271">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="271">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26726">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26407">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26720">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26716">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26743">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26450">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26799">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="57868">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26649">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="1188">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20255">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26420">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26178">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="5132">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="4996">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26698">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26467">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26377">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26793">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="26370">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20526">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20509">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20514">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20527">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20516">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="23055">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20531">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="1033">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20567">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20609">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20570">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20760">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20611">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20762">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20757">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20765">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20784">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20773">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20751">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20782">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20625">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20619">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20618">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20551">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20607">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20564">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20605">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20627">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20769">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20791">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1256">
+    <match key="usb_device.product_id" int="20540">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29712">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29776">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29778">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29746">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29748">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29924">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29904">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29824">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29728">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29730">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29792">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29888">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29890">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29920">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29697">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29696">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29744">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1921">
+    <match key="usb_device.product_id" int="29872">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1140">
+    <match key="usb_device.product_id" int="560">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1943">
+    <match key="usb_device.product_id" int="35073">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1943">
+    <match key="usb_device.product_id" int="35081">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1943">
+    <match key="usb_device.product_id" int="35089">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2125">
+    <match key="usb_device.product_id" int="4097">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="851">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="8718">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1482">
+    <match key="usb_device.product_id" int="807">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1245">
+    <match key="usb_device.product_id" int="38497">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1245">
+    <match key="usb_device.product_id" int="38602">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1161">
+    <match key="usb_device.product_id" int="49189">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="270">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1647">
+    <match key="usb_device.product_id" int="40976">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3191">
+    <match key="usb_device.product_id" int="4113">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3191">
+    <match key="usb_device.product_id" int="4117">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3191">
+    <match key="usb_device.product_id" int="4098">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3191">
+    <match key="usb_device.product_id" int="4112">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3428">
+    <match key="usb_device.product_id" int="4097">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3191">
+    <match key="usb_device.product_id" int="4097">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6390">
+    <match key="usb_device.product_id" int="258">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6390">
+    <match key="usb_device.product_id" int="272">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="13056">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7132">
+    <match key="usb_device.product_id" int="64191">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3530">
+    <match key="usb_device.product_id" int="2">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3783">
+    <match key="usb_device.product_id" int="4104">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1870">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1990">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="2391">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="2279">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="2382">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="2231">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="2387">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="2381">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="2388">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="2274">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="4756">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="704">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="743">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1347">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1567">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1774">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1169">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="2221">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1323">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1322">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1867">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="662">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="662">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="835">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="760">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1340">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20853">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="41333">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="45429">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="370">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20850">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16754">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="390">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20870">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16774">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="361">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20841">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16745">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="373">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16757">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="374">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16758">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="375">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20855">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16759">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="41335">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="45431">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="376">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20856">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16760">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="386">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20866">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16770">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="371">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20851">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16755">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="41331">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="45427">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1839">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1656">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="860">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="805">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="859">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1028">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="878">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="984">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1214">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1434">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1673">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1020">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1227">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="901">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1021">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1446">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="806">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1022">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="807">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="910">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="858">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="908">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1228">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1448">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="904">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1211">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="919">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="920">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="78">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1191">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="801">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1187">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1641">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1846">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1847">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1396">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1653">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20854">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="41334">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="45430">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="385">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20865">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16769">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1233">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1459">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1356">
+    <match key="usb_device.product_id" int="1460">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="369">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="368">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20848">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16752">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="384">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20864">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16768">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20849">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16753">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="382">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20862">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16766">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="41342">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="45438">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="365">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="408">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20888">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="419">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20899">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16803">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="396">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20876">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16780">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="444">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20924">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="444">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="459">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20939">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16843">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="392">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20872">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16776">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="402">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20882">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16786">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="411">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20891">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16795">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="427">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20907">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16811">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="426">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20906">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16810">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="405">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20885">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16789">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="397">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="404">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20877">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20884">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16781">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16788">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="403">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20883">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16787">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="438">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="406">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="412">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20918">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20886">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20892">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16796">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="423">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16807">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20903">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="414">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20894">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16798">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="431">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20911">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16815">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="443">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20923">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16827">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="442">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20922">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16826">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="393">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20873">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16777">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="407">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20887">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="326">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20806">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="217">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="212">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="239">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="343">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20823">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16727">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="334">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="53572">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="324">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="57344">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="117">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20815">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="335">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="346">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20826">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="342">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20822">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="349">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20829">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="358">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20838">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="359">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20839">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="360">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20840">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="16744">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="353">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20833">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="251">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="307">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="314">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="4296">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="243">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="261">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="198">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="179">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="245">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="118">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="218">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="274">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4046">
+    <match key="usb_device.product_id" int="20845">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37181">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1105">
+    <match key="usb_device.product_id" int="53512">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="5073">
+    <match key="usb_device.product_id" int="28695">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2726">
+    <match key="usb_device.product_id" int="12305">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1691">
+    <match key="usb_device.product_id" int="12341">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1691">
+    <match key="usb_device.product_id" int="1911">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1691">
+    <match key="usb_device.product_id" int="1908">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1691">
+    <match key="usb_device.product_id" int="1916">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1691">
+    <match key="usb_device.product_id" int="12314">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1691">
+    <match key="usb_device.product_id" int="12328">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2329">
+    <match key="usb_device.product_id" int="256">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="5008">
+    <match key="usb_device.product_id" int="21589">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4571">
+    <match key="usb_device.product_id" int="4096">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="2403">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="12">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="9">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="29">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="26">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="24">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="17">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="15">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="16">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="25">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="22">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="20">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4402">
+    <match key="usb_device.product_id" int="17207">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4402">
+    <match key="usb_device.product_id" int="17202">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4402">
+    <match key="usb_device.product_id" int="17205">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="4402">
+    <match key="usb_device.product_id" int="17204">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2352">
+    <match key="usb_device.product_id" int="28928">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="13056">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3478">
+    <match key="usb_device.product_id" int="16640">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7784">
+    <match key="usb_device.product_id" int="2">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1026">
+    <match key="usb_device.product_id" int="1553">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1647">
+    <match key="usb_device.product_id" int="33834">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2125">
+    <match key="usb_device.product_id" int="3">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1750">
+    <match key="usb_device.product_id" int="46">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1750">
+    <match key="usb_device.product_id" int="45">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2250">
+    <match key="usb_device.product_id" int="272">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1276">
+    <match key="usb_device.product_id" int="20554">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1943">
+    <match key="usb_device.product_id" int="32794">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1363">
+    <match key="usb_device.product_id" int="514">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3428">
+    <match key="usb_device.product_id" int="4097">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8711">
+    <match key="usb_device.product_id" int="1">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8711">
+    <match key="usb_device.product_id" int="17">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1032">
+    <match key="usb_device.product_id" int="14489">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="37152">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2425">
+    <match key="usb_device.product_id" int="551">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="270">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="2362">
+    <match key="usb_device.product_id" int="271">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3141">
+    <match key="usb_device.product_id" int="32778">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1161">
+    <match key="usb_device.product_id" int="57617">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1161">
+    <match key="usb_device.product_id" int="49190">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1161">
+    <match key="usb_device.product_id" int="57408">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1329">
+    <match key="usb_device.product_id" int="8193">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="3141">
+    <match key="usb_device.product_id" int="32769">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7763">
+    <match key="usb_device.product_id" int="7">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="4968">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="4680">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="4672">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="61443">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="36921">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="65352">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="872">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="864">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10007">
+    <match key="usb_device.product_id" int="1632">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="8711">
+    <match key="usb_device.product_id" int="6">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10518">
+    <match key="usb_device.product_id" int="37197">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10518">
+    <match key="usb_device.product_id" int="61443">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="7871">
+    <match key="usb_device.product_id" int="32553">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="1054">
+    <match key="usb_device.product_id" int="24576">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="10096">
+    <match key="usb_device.product_id" int="36956">
+     <append key="info.capabilities" type="strlist">camera</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6610">
+    <match key="usb_device.product_id" int="835">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6610">
+    <match key="usb_device.product_id" int="65486">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6610">
+    <match key="usb_device.product_id" int="580">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6610">
+    <match key="usb_device.product_id" int="581">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6610">
+    <match key="usb_device.product_id" int="774">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6610">
+    <match key="usb_device.product_id" int="775">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+   <match key="usb_device.vendor_id" int="6610">
+    <match key="usb_device.product_id" int="899">
+     <append key="info.capabilities" type="strlist">portable_audio_player</append>
+    </match>
+   </match>
+  </match>
+ </device>
+</deviceinfo>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/10-camera-libgphoto2.fdi b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/10-camera-libgphoto2.fdi
new file mode 100644
index 0000000..00427e7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/10-camera-libgphoto2.fdi
@@ -0,0 +1,19018 @@
+<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
+<!-- This file was generated by libgphoto2 print-camera-list - - fdi -->
+<!--+
+    | Created from this library:
+    |   libgphoto2      2.5.8          all camlibs, gcc, ltdl, no EXIF
+    |   libgphoto2_port 0.12.0         gcc, ltdl, no USB, serial without locking
+    +-->
+<deviceinfo version="0.2">
+ <device>
+  <match key="info.subsystem" string="usb">
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string"> JL2005B/C/D camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13251">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer E350 Liquid Gallant Duo (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13252">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer E350 Liquid Gallant Duo (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13891">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer E39</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13628">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia A1-810</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13869">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia A1-840FHD</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13702">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia A3-A11</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13128">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A100 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13129">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A100 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13130">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A101 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13272">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A110</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13180">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A200 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13181">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A200 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13259">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A210</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13093">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A500 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13121">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A500 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13124">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A501 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13125">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A501 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13193">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A510 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13194">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A510 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13176">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13588">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Liquid E2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13736">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Liquid E3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13892">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer liquid e700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="14117">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Liquid S56</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13833">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Liquid X1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13427">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Liquid Z120 MT65xx Android Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13663">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Liquid Z130 MT65xx Android Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13911">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer One 7</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13226">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer S500 CloudMobile</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13796">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Z150</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1282">
+    <match key="usb.product_id" int="13853">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acer Z160</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="5845">
+    <match key="usb.product_id" int="32774">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acromag Inc. XO Learning Tablet (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="5845">
+    <match key="usb.product_id" int="32773">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Acromag Inc. XO Learning Tablet (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">AEG Snap 300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1725">
+    <match key="usb.product_id" int="1027">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Agfa ePhoto CL18</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1725">
+    <match key="usb.product_id" int="1028">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Agfa ePhoto CL20</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1276">
+    <match key="usb.product_id" int="20555">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Aiptek 1.3 mega PocketCam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Aiptek PalmCam Trio</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1276">
+    <match key="usb.product_id" int="20554">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Aiptek Pencam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Aiptek PenCam Trio</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2250">
+    <match key="usb.product_id" int="273">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Aiptek PenCam VGA+</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1276">
+    <match key="usb.product_id" int="20554">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Aiptek Pencam without flash</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1276">
+    <match key="usb.product_id" int="20555">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Aiptek Smart Megacam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7099">
+    <match key="usb.product_id" int="360">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Alcatel 6030a</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7099">
+    <match key="usb.product_id" int="8200">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Alcatel One Touch 997D (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7099">
+    <match key="usb.product_id" int="3074">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Alcatel One Touch 997D (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7099">
+    <match key="usb.product_id" int="40974">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Alcatel OneTouch 5042D (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7099">
+    <match key="usb.product_id" int="61443">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Alcatel OneTouch 6034R</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7099">
+    <match key="usb.product_id" int="36941">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Alcatel/Bouygues BS472</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7099">
+    <match key="usb.product_id" int="359">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Alcatel/TCT 6010D/TCL S950</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Amazing Spiderman</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6473">
+    <match key="usb.product_id" int="2048">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Amazon Fire Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6473">
+    <match key="usb.product_id" int="7">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6473">
+    <match key="usb.product_id" int="8">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6473">
+    <match key="usb.product_id" int="10">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID3)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6473">
+    <match key="usb.product_id" int="12">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID4)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6473">
+    <match key="usb.product_id" int="18">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID5)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6473">
+    <match key="usb.product_id" int="11">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID6)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6473">
+    <match key="usb.product_id" int="13">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID7)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6473">
+    <match key="usb.product_id" int="5">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire 2G (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6473">
+    <match key="usb.product_id" int="242">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire HD6</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="548">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">American Idol Keychain Camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4762">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPad (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4779">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPad Air</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4752">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPhone (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4754">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPhone 3G (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4756">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPhone 3GS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4759">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPhone 4 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4768">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPhone 4S (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4776">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPhone 5 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4753">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPod Touch (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4755">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPod Touch 2G (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1452">
+    <match key="usb.product_id" int="4761">
+     <match key="usb.interface.class" int="6">
+      <match key="usb.interface.subclass" int="1">
+       <match key="usb.interface.protocol" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Apple iPod Touch 3rd Gen (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+       </match>
+      </match>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="20488">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos (for Tesco) Hudl (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="20489">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos (for Tesco) Hudl (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="16386">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 101 G4</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5416">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 101 G9 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5417">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 101 G9 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5433">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 101 G9 Turbo</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5432">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 101 G9 Turbo 250 HD</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5305">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 101 Titanium</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5448">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 101 XS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4618">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 104 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4893">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 105 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4620">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 204 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4865">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 404 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4867">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 404CAM (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4881">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 405 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4897">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 405HDD (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="12787">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 45 Neon</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4913">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 5 (MTP mode 1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4915">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 5 (MTP mode 2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="12841">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 50 Diamond</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4871">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 504 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="8200">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 50c</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4951">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 5H IT (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4945">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 5S IT (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4873">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 604 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4875">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 604WIFI (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4883">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 605 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4885">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 605F (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4917">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 7 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4877">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 704 mobile dvr</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4879">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 704TV (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4889">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 705 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5359">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 70b Titanium</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5480">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 70it2 (ID 1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5481">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 70it2 (ID 2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5311">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 80 Titanium</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5400">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 80G9</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5384">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 8o G9 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5385">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 8o G9 Turbo (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5293">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 97 Titanium</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5274">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos 97 Xenon</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5227">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos Arnova 10bG3 Tablet</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5214">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos Arnova 8c G3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="5208">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos Arnova Childpad</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="12715">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos C40</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4615">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos Gmini XS100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4929">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos SPOD (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4891">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos TV+ (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3705">
+    <match key="usb.product_id" int="4616">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Archos XS202 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Argus Bean Sprout</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Argus DC-1500</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Argus DC-1510</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="271">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Argus DC-1610</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="271">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Argus DC-1620</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37180">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Argus DC-1730</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Argus DC-2200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Argus DC1512e</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="271">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Argus QuickClix</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Aries ATC-0017</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Aries Digital Keychain Camera, I</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="23055">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus A450CG (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19680">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Asus Fonepad Note 6 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19681">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Asus Fonepad Note 6 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="20815">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Fonepad</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="30579">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Fonepad 7 (FE375CXG)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21519">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Fonepad 7 LTE ME372CL (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21535">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Fonepad 7 LTE ME372CL (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21775">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus K00E (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21760">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus K010 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19664">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ME301T MeMo Pad Smart 10 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19665">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ME301T MeMo Pad Smart 10 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21023">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ME302C MemoPad (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21007">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ME302C MemoPad (MTP+?)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19648">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ME302KL MeMo Pad FHD10 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19649">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ME302KL MeMo Pad FHD10 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21600">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Memo K00F (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21608">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Memo K00F (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21504">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Memo ME172V (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21520">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Memo ME173X (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21521">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Memo ME173X (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21606">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Memo Pad 8 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="30578">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus MemoPad 7 (ME572CL)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21766">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus MemoPad 7 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21857">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus MemoPad 8 ME181 CX (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="20992">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus PadFone (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="20993">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus PadFone (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21008">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus PadFone 2 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21009">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus PadFone 2 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21012">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus PadFone 2 (PTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21024">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus PadFone Infinity (2nd ID) (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21025">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus PadFone Infinity (2nd ID) (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21040">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus PadFone Infinity (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21041">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus PadFone Infinity (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19968">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus SL101 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19969">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus SL101 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19983">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TF101 Eeepad Transformer (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19999">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TF101 Eeepad Transformer (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19712">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TF201 Transformer Prime (keyboard dock)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19713">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TF201 Transformer Prime (tablet only)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19584">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TF300 Transformer (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19585">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TF300 Transformer (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19600">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TF700 Transformer (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19601">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TF700 Transformer (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19616">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TF701T Transformer Pad (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="19617">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TF701T Transformer Pad (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="22047">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus TX201LA (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="24322">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus Zenfone 2 ZE550ML (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="22543">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 4 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="22559">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 4 A400CG (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21632">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 5 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21633">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 5 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="30593">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 5 A500KL (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21648">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 6 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2821">
+    <match key="usb.product_id" int="21649">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 6 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36945">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Barbie Camera (Digital Blue)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8320">
+    <match key="usb.product_id" int="6">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Barnes&amp;Noble Nook HD</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8320">
+    <match key="usb.product_id" int="5">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Barnes&amp;Noble Nook HD+</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1189">
+    <match key="usb.product_id" int="12291">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Benq DC1300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7493">
+    <match key="usb.product_id" int="17821">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">BenQ F5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10823">
+    <match key="usb.product_id" int="32528">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">bq Aquarius E5-4G</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10823">
+    <match key="usb.product_id" int="8200">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">bq Krillin (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10823">
+    <match key="usb.product_id" int="3074">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">bq Krillin (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12359">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12738">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 100 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12733">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 110 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12774">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 120 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12787">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 130</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12904">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 255HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12480">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 30 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12365">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12791">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 300 HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12390">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 330</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12479">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 40 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12405">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 400 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12474">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 430 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12558">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 50 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12468">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12543">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 55 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12572">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 60 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12542">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 65 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12623">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 70 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12530">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 700 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12622">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 75 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12566">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 750 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12676">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 80 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12569">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 800 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12660">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 85 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12598">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 850 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12640">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 860 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12660">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 90 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12565">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 900Ti (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12740">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 95 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12619">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 950 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12639">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 960 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12659">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 970 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12691">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 980 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12737">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 990 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12443">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS i (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12443">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS i (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12484">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS i5 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12402">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS II (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12470">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS IIs (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12532">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS iZ (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12370">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS v</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12389">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS v2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12400">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS v3 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12401">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS v3 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12529">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS Wireless (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12526">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital Rebel XT (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12394">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Digital unknown 3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12424">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Elura 50 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12423">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Elura 50 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12453">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Elura 65 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12667">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 1000D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12912">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 100D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12419">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 10D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12476">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 10D (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12823">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 1100D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12927">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 1200D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12522">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 1D Mark II (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12615">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 1D Mark III (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12752">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 1D Mark IV</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12825">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 1D X</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12523">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 20D (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12524">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 20D (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12420">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 300D (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12441">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 300D (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12563">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 30D (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12527">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 350D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12526">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 350D (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12526">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 350D (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12560">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 400D (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12614">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 40D (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12613">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 450D (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12751">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 500D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12699">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 50D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12778">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 550D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12545">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 5D (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12546">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 5D (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12697">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 5D Mark II</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12858">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 5D Mark III</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12824">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 600D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12821">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 60D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12859">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 650D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12880">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 6D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12914">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 700D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12883">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 70D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12698">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 7D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12911">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS 7D MarkII</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12356">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS D30</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12384">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS D60</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12420">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Digital Rebel (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12441">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Digital Rebel (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12560">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Digital Rebel XTi (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12420">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss Digital (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12441">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss Digital (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12526">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss Digital N (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12560">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss Digital X (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12613">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss X2 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12751">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss X3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12861">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS M</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12953">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS M3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12751">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Rebel T1i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12613">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon EOS Rebel XSi (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12430">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon FV M1 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12865">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon IXUS 125HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12969">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon IXUS 165</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12837">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon IXUS 310IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12774">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon IXY 220 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12691">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon IXY 3000 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12358">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon IXY DIGITAL</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12363">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon IXY DIGITAL 300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12484">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon IXY Digital L2 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12395">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon IXY DV M</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12438">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon IXY DV M2 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12412">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon MV630i (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12410">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon MV650i (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12448">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon MV750i (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12438">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon MVX 10i (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12430">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon MVX 3i (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12417">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon MVX100i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12416">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon MVX150i (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12457">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon MVX25i (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12395">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon MVX2i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12429">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon MVX3i (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12418">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Optura 10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12415">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Optura 20</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12416">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Optura 20 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12395">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Optura 200 MC</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12438">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Optura 300 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12457">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Optura 40 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12549">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Optura 600 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12430">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Optura Xi (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12367">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12385">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12686">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A1000 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12739">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A1100 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12862">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A1300IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12900">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A1400</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12366">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A20</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12386">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12689">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2000 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12734">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2100 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12842">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12874">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2300IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12873">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2400IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12913">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2500</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12898">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2600</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12377">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A30</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12406">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A300 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12786">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A3000 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12472">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A310 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12785">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A3100 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12897">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A3500IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12376">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A40</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12471">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A400 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12867">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A4000IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12537">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A410 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12559">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A420 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12536">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A430 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12629">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A450 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12617">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A460 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12666">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A470</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12735">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A480</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12783">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Powershot A495</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12482">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A510 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12481">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A520 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12582">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A530 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12571">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A540 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12624">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A550 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12621">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A560 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12620">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A570 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12663">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A580</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12662">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A590 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12404">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A60 (PTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12541">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A610 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12540">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A620 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12602">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A630 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12601">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A640 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12635">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A650IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12403">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A70 (PTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12567">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A700 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12600">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A710 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12637">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A720 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12469">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A75 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12442">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A80 (PTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12838">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A800</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12863">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A810</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12473">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A85 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12475">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A95 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12732">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot D10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12936">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot Elph135</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12937">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot Elph340HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12360">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12851">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G1 X</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12687">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12767">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G11</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12888">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G15</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12373">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12398">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G3 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12399">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G3 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12421">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G5 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12467">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Powershot G6 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12581">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G7 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12634">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G9 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12443">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot IXY Digital L (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12361">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot Pro90 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12444">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S1 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12353">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12854">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12357">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S100 (2000)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12369">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S110 (2001)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12891">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S110 (PTP Mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12917">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S120</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12528">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S2 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12355">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S20</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12389">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12400">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S230 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12401">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S230 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12570">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S3 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12375">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S30</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12364">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12390">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S330</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12374">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S40</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12405">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S400 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12474">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S410 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12396">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S45 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12397">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S45 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12616">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S5 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12407">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S50 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12468">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12466">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Powershot S60 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12465">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Powershot S70 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12538">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S80 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12818">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S95</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12443">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD10 Digital ELPH (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12402">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12623">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD1000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12470">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD110 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12676">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Powershot SD1100 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12740">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Powershot SD1200 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12788">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD1300 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12484">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD20 (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12480">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD200 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12599">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD40 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12529">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD430 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12543">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD450 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12530">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12572">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD600 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12542">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD630 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12569">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD700 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12622">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD750 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12661">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD770 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12738">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD780 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12660">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Powershot SD790 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12619">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD850 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12694">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD880 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12565">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD900 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12774">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD940 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12737">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD970 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12691">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD990</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12685">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX10 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12638">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Powershot SX100 IS (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12690">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX110 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12768">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX120 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12817">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX130 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12852">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX150 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12890">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX160IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12918">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX170 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12772">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX20 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12736">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX200 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12790">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX210 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12844">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX220HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12840">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX230HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12869">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX240HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12868">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX260HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12895">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX280HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12856">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX40HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12892">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX500IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12919">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX510 HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12955">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX520 HS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12368">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot unknown 1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12380">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon PowerShot unknown 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12778">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Rebel T2i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12823">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Rebel T3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12859">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon Rebel T4i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1193">
+    <match key="usb.product_id" int="12408">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Canon ZR70MC (normal mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1999">
+    <match key="usb.product_id" int="4169">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Casio EX-S770</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1999">
+    <match key="usb.product_id" int="4162">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Casio EX-Z120</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1999">
+    <match key="usb.product_id" int="4173">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Casio EX-Z65</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1999">
+    <match key="usb.product_id" int="4172">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Casio EX-Z700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1999">
+    <match key="usb.product_id" int="4474">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Casio EX-ZR700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1375">
+    <match key="usb.product_id" int="49664">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Casio LV 10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1207">
+    <match key="usb.product_id" int="34985">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Caterpillar Cat S50</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Che-ez Snap</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Che-Ez Snap SNAP-U</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Che-ez! Babe</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="4098">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Che-ez! Splash</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Che-ez! SPYZ</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1943">
+    <match key="usb.product_id" int="32769">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Clever CAM 360</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="548">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Cobra DC125</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Cobra Digital Camera DC150</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7796">
+    <match key="usb.product_id" int="25874">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Coby COBY MP705</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7763">
+    <match key="usb.product_id" int="5">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Conceptronic CMTD2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Concord Eye-Q Duo</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Concord Eye-Q Easy</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="16640">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Concord EyeQ 4330</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1000">
+    <match key="usb.product_id" int="8578">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Concord EyeQMini_1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1000">
+    <match key="usb.product_id" int="8576">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Concord EyeQMini_2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">CoolCam CP086</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2386">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio 10 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="1809">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio 6 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="1873">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio 7 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2321">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio 9 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2369">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio C2 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2049">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio D2 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2161">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio D2+ DAB FW 4.x (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2193">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio D2+ DMB FW 1.x (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2145">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio D2+ FW 2.x (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2177">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio D2+ FW 3.x (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2337">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio J3 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2305">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio S9 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="1793">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio U3 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="1889">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio U5 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3617">
+    <match key="usb.product_id" int="2353">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Cowon iAudio X7 (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16406">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Creative CardCam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16391">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Creative Go Mini</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16394">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Creative PC-CAM 300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16402">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Creative PC-CAM350</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16395">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Creative PC-CAM600</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16403">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Creative PC-CAM750</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16675">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative Portable Media Center</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16727">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16688">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN Micro (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16700">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN MicroPhoto</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16691">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN MicroPhoto (alternate version)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16737">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN Mozaic</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16695">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN Sleek (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16701">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN Sleek Photo</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16689">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN Touch (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16720">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN V</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16728">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN V 2GB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16722">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN V Plus</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16671">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN Vision</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16723">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN Vision W</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16702">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN Vision:M</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16721">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN Vision:M (DVP-HD0004)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16738">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN X-Fi</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16745">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN X-Fi 3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16680">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Creative ZEN Xtra (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4204">
+    <match key="usb.product_id" int="12821">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Curitel Communications, Inc. Verizon Wireless Device</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2125">
+    <match key="usb.product_id" int="3">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">D-Link DSC 350+</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3428">
+    <match key="usb.product_id" int="4129">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">D-Link DSC 350F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1000">
+    <match key="usb.product_id" int="8496">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">D-MAX DM3588</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DC-N130t</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DC-N130ta</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3141">
+    <match key="usb.product_id" int="32768">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DC31VC</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16690">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Dell Dell Pocket DJ (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="16687">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Dell DJ (2nd generation)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16700">
+    <match key="usb.product_id" int="45323">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Dell Inc Dell Streak 7</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16700">
+    <match key="usb.product_id" int="45338">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Dell Inc Dell Venue 7 inch</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16700">
+    <match key="usb.product_id" int="45339">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Dell Inc Dell Venue 7 inch (2nd ID)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16700">
+    <match key="usb.product_id" int="17664">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Dell Inc DJ Itty</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Digigr8</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7994">
+    <match key="usb.product_id" int="3074">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">DigiLand DL701Q</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="270">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Digital camera, CD302N</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DIGITAL MID#0020509 (no-name camera)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1498">
+    <match key="usb.product_id" int="4120">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DigitalDream Enigma1.3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DigitalDream l'elegante</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DigitalDream l'elite</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DigitalDream l'espion</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4483">
+    <match key="usb.product_id" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DigitalDream l'espion XS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1498">
+    <match key="usb.product_id" int="4128">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DigitalDream l'espion xtra</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DigitalDream l'esprit</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">DigitalDream la ronde</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2726">
+    <match key="usb.product_id" int="24609">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Disney MixMax</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36944">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Disney pix micro</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36946">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Disney pix micro 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4310">
+    <match key="usb.product_id" int="8704">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Dunlop MP3 player 1GB / EGOMAN MD223AFD</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="270">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Elta Medi@ digi-cam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="271">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Emprex PCD3600</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1208">
+    <match key="usb.product_id" int="1027">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Epson PhotoPC 3000z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1208">
+    <match key="usb.product_id" int="1026">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Epson PhotoPC 850z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10608">
+    <match key="usb.product_id" int="8200">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Fly Evo Tech 4</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10608">
+    <match key="usb.product_id" int="3074">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Fly iq4415 era style 3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6018">
+    <match key="usb.product_id" int="16385">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Fly iq449</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1747">
+    <match key="usb.product_id" int="8634">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">FOMA D905i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3530">
+    <match key="usb.product_id" int="2">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji Axia Eyeplate</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3530">
+    <match key="usb.product_id" int="2">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji Axia Slimshot</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="330">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix A330</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="466">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix A800</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="454">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix A820</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="467">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix A920</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="539">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix AV-150</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="403">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix E900</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="480">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F100fd</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="448">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F20</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="484">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F200 EXR</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="411">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F30</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="449">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F31fd</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="453">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F40fd</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="468">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F50fd</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="486">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F60fd</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="506">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F70 EXR</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="526">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F80EXR</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="557">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix H20EXR</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="625">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix HS30EXR</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="592">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix JX370</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="477">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S1000fd</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="475">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S100fs</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="495">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S1500</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="512">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S1800</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="488">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S2000HD</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="521">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S2500HD</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="576">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S2950</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="637">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S2980</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="613">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S4300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="664">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S4850</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="452">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S5700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="471">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S5800</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="447">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S6500fd</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="322">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S7000</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="399">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S9500</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="668">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix SL1000</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="563">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix T200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="622">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix X-S1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="611">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix X10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="678">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix X20</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="648">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix XF1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="472">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix Z100fd</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="513">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix Z35</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="525">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji FinePix Z700EXR</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="510">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji Fujifilm A220</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="693">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji Fujifilm X-E2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji IX-1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1227">
+    <match key="usb.product_id" int="451">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Fuji S5 Pro</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">FujiFilm @xia ix-100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1221">
+    <match key="usb.product_id" int="4416">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Fujitsu, Ltd F903iX HIGH-SPEED</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1221">
+    <match key="usb.product_id" int="4923">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Fujitsu, Ltd STYLISTIC M532</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2334">
+    <match key="usb.product_id" int="9605">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Garmin Monterra</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Gear to go</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Generic SoundVision Clarity2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1112">
+    <match key="usb.product_id" int="28677">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Genius Smart 300, version 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1037">
+    <match key="usb.product_id" int="34908">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Gensis GT-7305 </merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1044">
+    <match key="usb.product_id" int="8200">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Gigabyte RCT6773W22 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1044">
+    <match key="usb.product_id" int="3074">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Gigabyte RCT6773W22 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Global Point 3 in 1 Digital Fun Graffiti 00044</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Global Point Clipster</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Global Point Splash Mini (underwater camera)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="7">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Ainol Novo) Fire/Flame</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="6">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Allwinner) A31 SoC</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="20033">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Asus) Nexus 7 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="20034">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Asus) Nexus 7 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="19983">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Asus) TF101 Transformer</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="19712">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Asus) TF201 Transformer</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="11522">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Barnes &amp; Noble) Nook Color</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="29706">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Lenovo) Ideapad K1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="53514">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for LG Electronics) P990/Optimus</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="53513">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for LG Electronics) P990/Optimus (Cyanogen)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="20193">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for LG Electronics/Samsung) Nexus 4/5/7/10 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="20194">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for LG Electronics/Samsung) Nexus 4/5/7/10 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="45066">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Medion) MD99000 (P9514)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="28840">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Motorola) Xoom (MZ604)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="20005">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Samsung) Nexus S (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="20006">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Samsung) Nexus S (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="1459">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Sony) S1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="28930">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Inc (for Toshiba) Thrive 7/AT105</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6353">
+    <match key="usb.product_id" int="20197">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Google Nexus 5 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="9842">
+    <match key="usb.product_id" int="17">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">GoPro HERO3+</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1943">
+    <match key="usb.product_id" int="32796">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">GrandTek ScopeCam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">GTW Electronics</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4866">
+    <match key="usb.product_id" int="4118">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Haier Ibiza Rhapsody 1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4866">
+    <match key="usb.product_id" int="4119">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Haier Ibiza Rhapsody 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="270">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Haimei Electronics HE-501A</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Hawking DC120 Pocketcam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="32285">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Hewlett-Packard Slate 10 HD</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="23837">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Hewlett-Packard Slate 7 2800</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="23581">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Hewlett-Packard Slate 7 4600</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4251">
+    <match key="usb.product_id" int="37126">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Hisense E860 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4251">
+    <match key="usb.product_id" int="37129">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Hisense E860 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4251">
+    <match key="usb.product_id" int="37125">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HiSense Sero 7 Pro</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="25858">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 120 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="25090">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 215</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="31746">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 217 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="32002">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 317 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="25346">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 318 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="26114">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 320 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="29698">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 407 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="30722">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 417 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="29186">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 43x (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="28162">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 507 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="30978">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 517 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="27906">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 607 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="25346">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 612 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="16642">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 618</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="26626">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 620 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="28930">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 635 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="27394">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 707 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="25602">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 715 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="30210">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 717 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="26370">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 720 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="27650">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 733 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="27138">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 735 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="16898">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 812 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="30466">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 817 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="32258">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 818 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="17154">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 850 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="16642">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 912</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="17410">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 935 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="17666">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 945 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="16642">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart C500</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="24578">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart C500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="61443">
+    <match key="usb.product_id" int="24578">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart C500 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="35586">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart E327 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="35842">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart E427 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="29954">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M22 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="31490">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M23 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="29442">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M307 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="31234">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M415 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="32770">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M425 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="33026">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M525 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="33282">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M527 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="39682">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M547 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="33794">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M725 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="34050">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M727 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="38402">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M737 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="38658">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart R742 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="34562">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart R927 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1008">
+    <match key="usb.product_id" int="34818">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart R967 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="26716">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC (for Hewlett-Packard) HP Touchpad (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="26720">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC (for Hewlett-Packard) HP Touchpad (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3074">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC Android Device ID1 (Zopo, HD2, Bird...)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="8200">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC Android Device ID2 (Zopo, HD2...)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3782">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC Desire 310 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3773">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC Droid DNA (MTP+UMS)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3583">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC Droid DNA (MTP+UMS+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3219">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC EVO 4G LTE/One V (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3240">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC EVO 4G LTE/One V (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3582">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC Butterfly (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3556">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC Butterfly X290d</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="1533">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC Desire 510 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3541">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC Desire X</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3633">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC Droid Incredible 4G LTE (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3634">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC Droid Incredible 4G LTE (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3573">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC Evo 4G LTE (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="1966">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One (HTC6500LVW)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3546">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3985">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One (ID3)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3940">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3939">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3975">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP+ADB+?)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3935">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP+ADB+CDC)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3936">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP+CDC)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3562">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP+UMS+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3538">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One 802w (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="1994">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (HTC6525LVW)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3877">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="1562">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="4020">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (MTP+ADB+UMS)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="4021">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (MTP+UMS)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="1995">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (Verizon) (HTC6525LVW)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="2009">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One Remix (HTC6515LVW)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3308">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One S (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3576">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One S (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3577">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One S (ID3)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3578">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One X (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3579">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One X (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3580">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One X (ID3)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3581">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC One X (ID4)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="2008">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC HTC6515LVW/One Remix</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="8210">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC Motorola Razr D1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="1547">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC One M8 Google Play Edition (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="3533">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC One Mini (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="61642">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC Windows Phone 8s ID1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="2977">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC Windows Phone 8X ID1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2996">
+    <match key="usb.product_id" int="2978">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">HTC Windows Phone 8X ID2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4817">
+    <match key="usb.product_id" int="4226">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Huawei Ascend P8 </merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4817">
+    <match key="usb.product_id" int="13839">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Huawei Mediapad (mode 0)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4817">
+    <match key="usb.product_id" int="13855">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Huawei Mediapad (mode 1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4817">
+    <match key="usb.product_id" int="4177">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Huawei MTP device (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4817">
+    <match key="usb.product_id" int="4178">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Huawei MTP device (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37203">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">iClick 5X</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">iConcepts digital camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1161">
+    <match key="usb.product_id" int="49189">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">InFocus M810</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="270">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">INNOVAGE Mini Digital, CD302N</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6655">
+    <match key="usb.product_id" int="771">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Insignia NS-DV45</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6655">
+    <match key="usb.product_id" int="777">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Insignia Pilot 4GB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6655">
+    <match key="usb.product_id" int="775">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Insignia Sport Player</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="32903">
+    <match key="usb.product_id" int="2655">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Intel Chuwi vi8</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="32903">
+    <match key="usb.product_id" int="2581">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Intel Foxconn iView i700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="32903">
+    <match key="usb.product_id" int="2582">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Intel Noblex T7A21</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="32902">
+    <match key="usb.product_id" int="1584">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Intel Pocket PC Camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="32903">
+    <match key="usb.product_id" int="2654">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Intel Telcast Air 3G</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="32903">
+    <match key="usb.product_id" int="2555">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Intel Xolo 900/AZ210A</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">IOMagic MagicImage 400</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="271">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">ION digital camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4394">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver Clix</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4390">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver Clix2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4417">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver E100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4418">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver E100 v2/Lplayer</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4434">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver E150</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4455">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver E30</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4433">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver E50</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="8449">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver H10 20GB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="8453">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver H10 5.6GB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="8450">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver H10 5GB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4102">
+    <match key="usb.product_id" int="12292">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver H300 Series MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4104">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver iFP-880</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4386">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver N12</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4102">
+    <match key="usb.product_id" int="16386">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver Portable Media Center 1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4102">
+    <match key="usb.product_id" int="16387">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver Portable Media Center 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4423">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver Spinn</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4371">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver T10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4384">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver T10 2GB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4375">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver T10b</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4373">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver T20</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4372">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver T20 FM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4376">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver T20b</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4377">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver T30</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4435">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver T5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4404">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver T60</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4162">
+    <match key="usb.product_id" int="4419">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver T7 Volcano</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7784">
+    <match key="usb.product_id" int="4098">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver Tolino Tab 7</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4374">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver U10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="16642">
+    <match key="usb.product_id" int="4402">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">iRiver X20</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2848">
+    <match key="usb.product_id" int="56814">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Isabella Her Prototype</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1924">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ixla DualCam 640</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Jazwares Star Wars no. 15256</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Jazz JDC9</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Jazz JDK235</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="13056">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Jenoptik JD-3300z3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="16640">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Jenoptik JD-4100z3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1498">
+    <match key="usb.product_id" int="4102">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Jenoptik JD350 entrance</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="0">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Jenoptik JD350 video</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Jenoptik JDC 350</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10545">
+    <match key="usb.product_id" int="2561">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Jolla Sailfish (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10545">
+    <match key="usb.product_id" int="2565">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Jolla Sailfish (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1265">
+    <match key="usb.product_id" int="24837">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">JVC Alneo XA-HD500</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2126">
+    <match key="usb.product_id" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">KBGear JamCam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2856">
+    <match key="usb.product_id" int="4108">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Kenwood Media Keg HD10GB7 Sport Player</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8759">
+    <match key="usb.product_id" int="53512">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Kobo Arc (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8759">
+    <match key="usb.product_id" int="53513">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Kobo Arc (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8759">
+    <match key="usb.product_id" int="45320">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Kobo Arc 7 HD</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1559">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C1530</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1547">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C183</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1406">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1418">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C310</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1420">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C330</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1421">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C340</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1417">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C360</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1450">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C433</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1434">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C530</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1442">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C533</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1463">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C613</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1466">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C633</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1447">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C643</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1455">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C653</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1454">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C743</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1475">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C813</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1449">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C875</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1478">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak C913</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1436">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CD33</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1376">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX4200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1376">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX4210</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1333">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX4230</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1382">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX4300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1382">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX4310</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1396">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX6200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1395">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX6230</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1393">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX6330</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1412">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX6445</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1401">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX7220</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1400">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX7300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1400">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX7310</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1402">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX7330</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1403">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX7430</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1414">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX7525</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1404">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak CX7530</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DC220</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="288">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DC240</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="289">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DC240 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="272">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DC260</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="273">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DC265</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="304">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DC280</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="274">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DC290</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="306">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DC3400</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="352">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DC4800</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="305">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DC5000</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1317">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX3215</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1280">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX3500</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1296">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX3600</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1328">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX3700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="368">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX3900</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1365">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX4330</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1398">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX4530</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1360">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX4900</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1392">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX6340</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1394">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX6440</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1397">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX6490</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1405">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX7440</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1407">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX7590</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1399">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak DX7630</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="768">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak EZ200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1344">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak LS420</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1384">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak LS443</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1385">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak LS663</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1381">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak LS743</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1383">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak LS753</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1486">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak M1063</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1536">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak M531</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1439">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak M753</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1473">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak M863</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1453">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak M883</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1413">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak M893 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1024">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak MC3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1426">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak P850</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1427">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak P880</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1422">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak V530</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1423">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak V550</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1425">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak V570</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1440">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak V603</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1452">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak V610</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1451">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak V705</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1464">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak V803</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1437">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z612</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1438">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z650</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1415">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1459">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z710</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1460">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z712 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1408">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z730</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1416">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z740</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1027">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z7590</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1461">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z812 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1429">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z8612 IS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1487">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z915</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1485">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak Z950</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1034">
+    <match key="usb.product_id" int="1472">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Kodak ZD710</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1224">
+    <match key="usb.product_id" int="1826">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Konica e-mini</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4907">
+    <match key="usb.product_id" int="1">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE A2 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4907">
+    <match key="usb.product_id" int="25">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE A200 (PictBridge mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4907">
+    <match key="usb.product_id" int="9">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE X21 (PictBridge mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4907">
+    <match key="usb.product_id" int="7">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE Z2 (PictBridge mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4907">
+    <match key="usb.product_id" int="24">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE Z3 (PictBridge mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4907">
+    <match key="usb.product_id" int="34">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE Z5 (PictBridge mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7994">
+    <match key="usb.product_id" int="4102">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Kurio 7S</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1154">
+    <match key="usb.product_id" int="2425">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Kyocera DuraForce</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1154">
+    <match key="usb.product_id" int="2064">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Kyocera KYL22</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1154">
+    <match key="usb.product_id" int="1393">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Kyocera Rise</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1154">
+    <match key="usb.product_id" int="1434">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Kyocera Torque Model E6715</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36945">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Lego Bionicle</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9077">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Leica D-LUX 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6808">
+    <match key="usb.product_id" int="2">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Leica M9</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30519">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo A3500-F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30507">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo A5500-F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="29848">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo A820</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30140">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo IdeaPad A3000 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30142">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo IdeaPad A3000 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30018">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo IdeaTab A2109A</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30077">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo IdeaTab S2210a</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30440">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo IdeaTab S5000</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="29706">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo K1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30851">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo K3 Note</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30133">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo K900 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30554">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo LifeTab E733X</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="29900">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo Lifetab S9512</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="3074">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo P70-A</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="29847">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo P700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="29862">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo P780</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="29944">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo S660</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30488">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo S930</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="29724">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo ThinkPad Tablet</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30450">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo Toga Tablet B6000-F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30698">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo Vibe Z2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30463">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo Yoga Tablet 10 B8000-H</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="30641">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Lenovo Yoga Tablet 2 Pro</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25073">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. Android phone (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25081">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. Android phone (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25215">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. G3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25198">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. G3 (VS985)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="24859">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. GR-500 Music Player</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="24719">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. KC910 Renoir Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="24882">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. KM900</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25406">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG G Flex 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25145">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG VS870</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25149">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG VS890</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25116">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG VS980</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25125">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG2 Optimus</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="24986">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG8575</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1086">
+    <match key="usb.product_id" int="28736">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. T54</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1086">
+    <match key="usb.product_id" int="28849">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. UP3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25372">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. Various E and P models</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="25189">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. VK810</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="24592">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. VX8550 V CAST Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4100">
+    <match key="usb.product_id" int="24581">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">LG T5100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="16640">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Lifetec LT 5995</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="5073">
+    <match key="usb.product_id" int="28674">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Logik LOG DAX MP3 and DAB Player</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1133">
+    <match key="usb.product_id" int="2304">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Logitech Clicksmart 310</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1133">
+    <match key="usb.product_id" int="2384">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Logitech Pocket Digital</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="16640">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Maginon SX-410z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="13056">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Maginon SX330z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Magpix B350</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1276">
+    <match key="usb.product_id" int="20555">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Maxell Max Pocket</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1647">
+    <match key="usb.product_id" int="33900">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Maxfield G-Flash NG 1GB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Media-Tech mt-406</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3725">
+    <match key="usb.product_id" int="80">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">MediaTek Inc MT5xx and MT6xx SoCs</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1032">
+    <match key="usb.product_id" int="45066">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Medion Lifetab P9514</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6127">
+    <match key="usb.product_id" int="29827">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Medion Lifetab P9516</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1276">
+    <match key="usb.product_id" int="20554">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Medion MD 5319</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="16640">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Medion MD 6000</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8709">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Medion MD 6126</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="16642">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Medion MD 9700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1647">
+    <match key="usb.product_id" int="34128">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Medion MD8333 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1647">
+    <match key="usb.product_id" int="34184">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Medion MD8333 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1032">
+    <match key="usb.product_id" int="45065">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Medion MD99000 (P9514)/Olivetti Olipad 110</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4721">
+    <match key="usb.product_id" int="8210">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Megafon Login+</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8222">
+    <match key="usb.product_id" int="17067">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Megafon MFLogin3T</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10821">
+    <match key="usb.product_id" int="8200">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Meizu MX Phone (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10821">
+    <match key="usb.product_id" int="3074">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Meizu MX Phone (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4310">
+    <match key="usb.product_id" int="8960">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Memorex or iRiver MMP 8585/8586 or iRiver E200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3504">
+    <match key="usb.product_id" int="21874">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Micro-Star International P610/Model MS-5557</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Micromaxx Digital Camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1118">
+    <match key="usb.product_id" int="1600">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Microsoft Kin 1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1118">
+    <match key="usb.product_id" int="1570">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Microsoft Windows MTP Simulator</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1118">
+    <match key="usb.product_id" int="1260">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Microsoft Windows Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1118">
+    <match key="usb.product_id" int="1808">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Microsoft Zune</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1118">
+    <match key="usb.product_id" int="1598">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Microsoft Zune HD</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1118">
+    <match key="usb.product_id" int="61642">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Microsoft/HTC HTC 8S</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1118">
+    <match key="usb.product_id" int="201">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Microsoft/Intel Bandon Portable Media Center</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1118">
+    <match key="usb.product_id" int="1601">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Microsoft/Sharp/nVidia Kin TwoM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3141">
+    <match key="usb.product_id" int="32776">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Mini Shotz ms-350</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2125">
+    <match key="usb.product_id" int="3">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Minton S-Cam F5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Mitek CD10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Mitek CD30P</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="24778">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola A1200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="28808">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Atrix MB860 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="25807">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Atrix XT687 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11826">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Atrix/Razr HD (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11827">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Atrix/Razr HD (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11879">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Droid Maxx (XT1080)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11941">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Droid Turbo (XT1254)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11944">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Droid Turbo Verizon</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11880">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Droid Ultra</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="16854">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Droid X/MB525 (Defy)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="16858">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola DROID2 (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="17063">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola DROID2 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="17279">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola DROID4</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="17267">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola DROID4 (PTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="18449">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola IdeaPad K1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="16860">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Milestone / Verizon Droid</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="28874">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Milestone X2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11894">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Moto G (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11906">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Moto G (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11908">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Moto G (XT1032)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11874">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Moto X (XT1053)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11875">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Moto X (XT1058)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11878">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Moto X (XT1080)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="25619">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola MTP Test Command Interface</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="25781">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Razr D1/D3/i (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="25782">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Razr D1/D3/i (MTP+?)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11856">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola RAZR M XT907 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="11857">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola RAZR M XT907 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="25621">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola RAZR2 V8/U9/Z6</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="10853">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola V3m/V750 verizon</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="28835">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Xoom (Factory test)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="28840">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Xoom (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="28841">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Xoom (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="17169">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Xoom 2 Media Edition</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="17158">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Xoom 2 Media Edition (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="16847">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola Xoom 2 Media Edition (ID3)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="28941">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola XT890/907/Razr (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="28942">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola XT890/907/Razr (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8888">
+    <match key="usb.product_id" int="17250">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Motorola XT912/XT928</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1375">
+    <match key="usb.product_id" int="49664">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Mustek gSmart 300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1375">
+    <match key="usb.product_id" int="41808">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Mustek gSmart 350</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1375">
+    <match key="usb.product_id" int="49696">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Mustek gSmart mini</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1375">
+    <match key="usb.product_id" int="50208">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Mustek gSmart mini 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1375">
+    <match key="usb.product_id" int="50464">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Mustek gSmart mini 3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2726">
+    <match key="usb.product_id" int="38401">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">MyMusix PD-6070</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1033">
+    <match key="usb.product_id" int="806">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">NEC Casio C811</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1033">
+    <match key="usb.product_id" int="1074">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">NEC Casio CA-201L</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1033">
+    <match key="usb.product_id" int="578">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">NEC FOMA N01A</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1026">
+    <match key="usb.product_id" int="22120">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nextar MA715A-8R</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nexxtech Mini Digital Camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="770">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 2000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="279">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 2100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="290">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 2200 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="291">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 2200v1.1 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="265">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 2500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="277">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 3100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="289">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 3200 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="273">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 3500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="285">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 3700 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="301">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="516">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4200 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="271">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4300 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="267">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="304">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4600 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="305">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4600a (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="297">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4800 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="275">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="518">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5200 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="281">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5400 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="302">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5600 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="269">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5700 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="309">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5900 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="313">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 7600 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="311">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 7900 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="287">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 8700 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="259">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon CoolPix 880</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="295">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 8800 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="274">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 885 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="401">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 9400  (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="258">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon CoolPix 990</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="550">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix A (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="392">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix AW100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="520">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L1 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="779">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L10 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="777">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L11 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="382">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L110 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="351">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L12 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="389">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L120 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="789">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L16 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="792">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L19 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="791">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L20 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="804">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L23 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="835">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L27</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="773">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L4 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="402">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L820  (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="320">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P1 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="381">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="322">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P2 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="545">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P300 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P330 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="524">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P4 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="361">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P50 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="388">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="347">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P5000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="547">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P510 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="355">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P5100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="552">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P520 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="785">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P60 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="367">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P6000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="383">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P7000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="395">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P7100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="549">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P7700 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="553">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P7800 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="363">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P80 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="364">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P80 v1.1 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="371">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P90 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="823">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S01</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="838">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S02</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="334">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S2 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="353">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S200 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="375">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S220 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="376">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S225 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="801">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S2500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="813">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S2600 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="831">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S2700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="795">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S3000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="800">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S3100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="820">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S3200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="810">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S3300 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="324">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S4 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="809">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S4300 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="349">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="544">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S5100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="334">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S6 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="369">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S60 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="542">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S6000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="540">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S620 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="343">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S7c (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="543">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S8000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="546">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S8200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="390">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S9100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="403">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S9500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="843">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S9700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix SQ (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1028">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon D2H SLR (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1036">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon D2Hs (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1032">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon D2X SLR (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1052">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon D3 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1034">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon D50 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1026">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1040">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D200 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1046">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D2Xs (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1050">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D300 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1060">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1061">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D300s (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1063">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1068">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1075">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1062">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3s (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1056">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3x (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1067">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D4</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1044">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D40 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1048">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D40x (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1077">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D4s</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1059">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D5000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1065">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D5100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1071">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D5200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1073">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D5300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1054">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D60 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1069">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D600</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D610</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1030">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D70 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1058">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D700 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1064">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D7000 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1038">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D70s (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1072">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D7100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1079">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D750</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1042">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D80 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1066">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D800</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1070">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D800E</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1078">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D810</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1057">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon DSC D90 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1538">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon J1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1539">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon J2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1541">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon J3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1545">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon J4</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1542">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon S1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1537">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon V1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1200">
+    <match key="usb.product_id" int="1540">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nikon V2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1276">
+    <match key="usb.product_id" int="20554">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">nisis Quickpix Qp3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="548">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">NogaNet TDC-15</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="705">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 2710</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="101">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 3109c Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="95">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 3110c Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1122">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 3250 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="494">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 3710</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="521">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5130 XpressMusic</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1214">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5200 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="738">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5230</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1210">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5300 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="108">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5310 XpressMusic</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="234">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5320 XpressMusic</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1150">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5500 Sport Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="553">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5530</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1204">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5700 XpressMusic Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="340">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5800 XpressMusic</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="341">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5800 XpressMusic v2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="345">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 5800 XpressMusic v3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="46">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 6120c Classic Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="152">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 6210 Navigator</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="141">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 6220 Classic</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="60">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 6500c Classic Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="663">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 6600i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1491">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia 808 PureView</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1426">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia C5-00</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="961">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia C7</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="973">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia C7 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="463">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia E52</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="815">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia E6</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="377">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia E63</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="229">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia E66</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="820">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia E7</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="821">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia E7 (Ovi mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="228">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia E71</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="417">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia E71x</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="545">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia E72</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1788">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia Lumia (RM-975)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1638">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia Lumia 301</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1633">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia Lumia WP8</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1316">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1160">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N73</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1233">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N73 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1249">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N75 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="121">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N78 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="390">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N79</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="766">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N8</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="770">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N8 (Ovi mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1265">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N80 Internet Edition (Media Player)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="10">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N81 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="116">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N82 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="146">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N85 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1306">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N9</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1157">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N91 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1144">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N93 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1253">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N93i Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1263">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N95 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="110">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N95 Mobile Phone 8GB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="978">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N950</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="57">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N96 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="501">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N97</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="619">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N97 mini</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="500">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia N97-1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="628">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia X6</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1057">
+    <match key="usb.product_id" int="1768">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Nokia XL</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="5891">
+    <match key="usb.product_id" int="1">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">NormSoft, Inc. Pocket Tunes</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="5891">
+    <match key="usb.product_id" int="2">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">NormSoft, Inc. Pocket Tunes 4</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2389">
+    <match key="usb.product_id" int="28841">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">nVidia CM9-Adam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2389">
+    <match key="usb.product_id" int="46080">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">nVidia Shield (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2389">
+    <match key="usb.product_id" int="52999">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">nVidia Shield (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2389">
+    <match key="usb.product_id" int="52994">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">nVidia Tegra Note</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2389">
+    <match key="usb.product_id" int="28928">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">nVidia Various tablets (ID1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2389">
+    <match key="usb.product_id" int="28930">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">nVidia Various tablets (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7763">
+    <match key="usb.product_id" int="6">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">O2 Sistemas ZoltarTV</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus C-2100UZ</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus C-3000Z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus C-3030Z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="276">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus C-310Z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="276">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus C-350Z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="276">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus C-5500Z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="276">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus C-55Z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="276">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus D-540Z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="276">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus D-560Z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="272">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus E series (Control)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="303">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus E-M5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="303">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus E-PL5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="278">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus FE4000</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="276">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus IR-300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="275">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus mju 500</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="303">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus SP-720UZ</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="276">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus X-100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="276">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus X-250</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="278">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus X920</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1972">
+    <match key="usb.product_id" int="278">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Olympus X925</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8921">
+    <match key="usb.product_id" int="10085">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Oppo Find 7 (ID 1)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8921">
+    <match key="usb.product_id" int="10100">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Oppo Find 7 (ID 2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8921">
+    <match key="usb.product_id" int="10099">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Oppo X9006</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Oregon Scientific DShot II</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Oregon Scientific DShot III</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-FS62</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-FZ20</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-FZ38</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-FZ45</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-FZ50</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-GF1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-LS2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-LS3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-LX7</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-TZ15</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-TZ18</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="9076">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-TZ8</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="8517">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic P905i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1242">
+    <match key="usb.product_id" int="8536">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Panasonic P906i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4204">
+    <match key="usb.product_id" int="61443">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Pantech Crux</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7501">
+    <match key="usb.product_id" int="20534">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Pegatron Chagall</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7501">
+    <match key="usb.product_id" int="20533">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Pegatron Chagall (ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7501">
+    <match key="usb.product_id" int="20554">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Pegatron Hudl 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Pencam TEVION MD 9456</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="9723">
+    <match key="usb.product_id" int="357">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Pentax K3 (PTP Mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2583">
+    <match key="usb.product_id" int="13">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Pentax Optio 43WR</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2583">
+    <match key="usb.product_id" int="247">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Pentax Optio W90</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2726">
+    <match key="usb.product_id" int="38658">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Perception Digital, Ltd Gigaware GX400</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8316">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear Aria</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8377">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear Ariaz</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8504">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear Ariaz/97</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="357">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear Audio</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8311">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear Muse</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8334">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA1VBE08KX/78</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8196">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA3345</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="2135">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA5145</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="2126">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA6014/SA6015/SA6024/SA6025/SA6044/SA6045</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8194">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA6125/SA6145/SA6185</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="335">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA9200</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8309">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear ViBE SA1VBE04</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8315">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear ViBE SA1VBE04/08</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8375">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear VIBE SA2VBE[08|16]K/02</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8421">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips GoGear Vibe/02</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="333">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips HDD085/00 or HDD082/17</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="332">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips HDD14XX,HDD1620 or HDD1630/17</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="491">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips HDD6320</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="331">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips HDD6320/00 or HDD6330/17</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="6411">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips i908</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="270">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Philips P44417B keychain camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8592">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips PI3900B2/58 </merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="32257">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips PSA235</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="385">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips PSA610</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="356">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips SA1115/55</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="8226">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips SA5285</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1137">
+    <match key="usb.product_id" int="370">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Philips Shoqbox</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Phoebe Smartcam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2276">
+    <match key="usb.product_id" int="322">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Pioneer DVR-LX60D</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2276">
+    <match key="usb.product_id" int="328">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Pioneer XMP3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="270">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Pixart Gemini Keychain Camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Pixie Princess Jelly-Soft</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">PockCam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1924">
+    <match key="usb.product_id" int="10376">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Polaroid DC700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1350">
+    <match key="usb.product_id" int="8245">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Polaroid Freescape/MPU-433158</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1350">
+    <match key="usb.product_id" int="3503">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Polaroid PDC 2300Z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Praktica Slimpix</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Precision Mini Digital Camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="271">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Precision Mini, Model HA513A</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10724">
+    <match key="usb.product_id" int="4611">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Prestigio 5504 DUO </merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10724">
+    <match key="usb.product_id" int="4355">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Prestigio 5505 DUO </merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1924">
+    <match key="usb.product_id" int="21248">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Pretec dc530</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1276">
+    <match key="usb.product_id" int="65535">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">PureDigital Ritz Disposable</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1478">
+    <match key="usb.product_id" int="34816">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Qualcomm (for Gigabyte) GSmart G1342</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1478">
+    <match key="usb.product_id" int="61443">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Qualcomm (for Highscreen) Omega Prime S</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1478">
+    <match key="usb.product_id" int="553">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Qualcomm (for Nokia) 5530 Xpressmusic</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1478">
+    <match key="usb.product_id" int="12694">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Qualcomm (for Nokia/Verizon) 6205 Balboa/Verizon Music Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1478">
+    <match key="usb.product_id" int="26468">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Qualcomm (for OnePlus) One (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1478">
+    <match key="usb.product_id" int="26469">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Qualcomm (for OnePlus) One (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1478">
+    <match key="usb.product_id" int="36921">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Qualcomm (for PhiComm) C230w (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1478">
+    <match key="usb.product_id" int="36901">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Qualcomm (for Smartfren) Andromax U</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">QuickPix QP1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3530">
+    <match key="usb.product_id" int="4">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Radioshack Flatfoto</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1924">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">RCA CDS1005</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="4704">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Redmi 1S (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="4712">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Redmi HM 1S (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Request Ultra Slim</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8715">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Capilo RX</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8707">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio 300G</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8708">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio G3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8712">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio G4</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8716">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio GX</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="805">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio GX (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8724">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio GX 8</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="813">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio GX 8 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8717">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8722">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R1v</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="811">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R1v (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8723">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8726">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="815">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R3 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8727">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R4</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8730">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="272">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R5 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8706">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio RR30</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="829">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio RR750 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8717">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio RZ1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4042">
+    <match key="usb.product_id" int="32775">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">RIM BlackBerry Storm/9650</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8719">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Rollei dr5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8719">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Rollei dr5 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37181">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar 23070  Crayola Digital Cam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37181">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar 28290 and 28292  Digital C</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37181">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar 92045  Spiderman</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar clipshot no. 1169x</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3141">
+    <match key="usb.product_id" int="32771">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Digital Keychain 11199</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3141">
+    <match key="usb.product_id" int="32771">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Digital no, 6637x</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3141">
+    <match key="usb.product_id" int="32771">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Digital no, 67480</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="270">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Digital no. 56379 Spyshot</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="271">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Digital no. 77379</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Dora the Explorer no. 88067</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Hello Kitty no. 94009</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Kidz Cam 86379</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Kidz-Cam no. 88379</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Micro Digital 2428x</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Nickelodeon iCarly no. 88061</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="271">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar no. 1638x CyberPix</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar no. 75379</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar no. 81890</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar no. 91379</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar no. 98379</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Star Wars kit no. 92022</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sakar Sticker Wizard no. 59379</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26726">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Samsung EK-GC100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26407">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung F250 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26720">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung Galaxy models (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26716">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung Galaxy models (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26743">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung Galaxy models Kies mode</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26450">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung GT-B2700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26799">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung GT-B2710/Xcover 271</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="57868">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung GT-S5230</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26649">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung GT-S8500</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="1188">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung I550W Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20255">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung Jet S8000</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26420">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung Juke (SCH-U470)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26178">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung M7600 Beat/GT-S8300T/SGH-F490/S8300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="5132">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Samsung NX1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="4996">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Samsung NX1000</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26698">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Samsung S5620</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26467">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung SAMSUNG Trance</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26377">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung U600 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26793">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung Vibrant SGH-T959/Captivate/Media player mode</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="26370">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung X830 Mobile Phone</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20526">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YH-820</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20509">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YH-920 (501d)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20514">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YH-920 (5022)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20527">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YH-925(-GS)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20516">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YH-925GS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="23055">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YH-999 Portable Media Center/SGH-A707/SGH-L760V/SGH-U900/Verizon Intensity/Fascinate</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20531">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YH-J70J</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="1033">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-900</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20567">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-F2J</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20609">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-K3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20570">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-K5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20760">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-M1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20611">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-P2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20762">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-P3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20757">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-Q1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20765">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-Q2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20784">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-Q3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20773">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-R0</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20751">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-R1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20782">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-R2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20625">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-S3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20619">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-S5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20618">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-T10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20551">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-T7J</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20607">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-T9</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20564">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-U2J (YP-U2JXB/XAA)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20605">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-U3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20627">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-U4</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20769">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-U5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20791">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-Z3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1256">
+    <match key="usb.product_id" int="20540">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Samsung YP-Z5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29712">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa c150</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29776">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa c240/c250</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29778">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa c250 v2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29746">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Clip</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29748">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Clip v2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29924">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Clip Zip</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29904">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Clip+</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29824">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Connect</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29728">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa e200/e250/e260/e270/e280</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29730">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa e260/e280 v2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29792">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Express</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29888">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Fuze</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29890">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Fuze v2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29920">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Fuze+</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29697">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa m200-tcc (MTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29696">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa m230/m240</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29744">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa m240/m250</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1921">
+    <match key="usb.product_id" int="29872">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa View</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1140">
+    <match key="usb.product_id" int="560">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sanyo VPC-C5 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1943">
+    <match key="usb.product_id" int="35073">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">ScanHex SX-35a</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1943">
+    <match key="usb.product_id" int="35081">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">ScanHex SX-35b</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1943">
+    <match key="usb.product_id" int="35089">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">ScanHex SX-35c</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2125">
+    <match key="usb.product_id" int="4097">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">ScanHex SX-35d</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Scott APX 30</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="851">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sea &amp; Sea 2G (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="8718">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sea &amp; Sea 5000G</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1482">
+    <match key="usb.product_id" int="807">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sea &amp; Sea 5000G (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Shark 2-in-1 Mini</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Shark SDC-513</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Shark SDC-519</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1245">
+    <match key="usb.product_id" int="38497">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SHARP Corporation SBM203SH</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1245">
+    <match key="usb.product_id" int="38602">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SHARP Corporation SH-06E</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1161">
+    <match key="usb.product_id" int="49189">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SHARP Corporation SH930W</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="270">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Shift3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1647">
+    <match key="usb.product_id" int="40976">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SigmaTel Inc. MTPMSCN Audio Player</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3191">
+    <match key="usb.product_id" int="4113">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SiPix Blink 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3191">
+    <match key="usb.product_id" int="4117">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SiPix CAMeleon</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3191">
+    <match key="usb.product_id" int="4098">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SiPix SC2100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3191">
+    <match key="usb.product_id" int="4112">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SiPix Snap</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3428">
+    <match key="usb.product_id" int="4097">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SiPix Stylecam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3191">
+    <match key="usb.product_id" int="4097">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SiPix Web2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6390">
+    <match key="usb.product_id" int="258">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sirius Stiletto</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6390">
+    <match key="usb.product_id" int="272">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sirius Stiletto 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="13056">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Skanhex SX-330z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7132">
+    <match key="usb.product_id" int="64191">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Slacker Inc. Slacker Portable Media Player</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3530">
+    <match key="usb.product_id" int="2">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SMaL Ultra-Pocket</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3783">
+    <match key="usb.product_id" int="4104">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">So. Show 301</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1870">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A3000</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1990">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A5000 (Control)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="2391">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A5100 (Control)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="2279">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A5100 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="2382">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A6000 (Control)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="2231">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A6000 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="2387">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A77 M2 (Control)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="2381">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A7r (Control)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="2388">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A7S (Control)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="2274">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A7S (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="4756">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony DCR-SR75</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="704">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-A100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="743">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-A900 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-F707V (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-F717 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-F828 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-H1 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-H2 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-H5 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1347">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-HX100V (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1567">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-HX200V (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1774">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-HX300 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1169">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-HX5V (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="2221">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-HX60V (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-N2 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P10 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P120 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P200 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P30 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P31 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P32 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P41 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P43 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P5 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P50 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P51 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P52 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P71 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P72 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P73 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P92 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-P93 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-R1 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1323">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-RX1 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1322">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-RX100 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1867">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-RX100M2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-S40 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-S60 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="662">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-S730 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-S75 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="662">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-S780 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-S85 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-T1 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-T10 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-T3 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-U10 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-U20 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-V1 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-W1 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-W12 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="835">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-W130 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="760">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-W200 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-W35 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1340">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-W510 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony DSC-W55 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20853">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY IS12S Xperia Acro HD MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="41333">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY IS12S Xperia Acro HD MTP+UMS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="45429">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY IS12S Xperia Acro MTP+UMS+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="370">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT22i Xperia P MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20850">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT22i Xperia P MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16754">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT22i Xperia P MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="390">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT25i Xperia V MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20870">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT25i Xperia V MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16774">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT25i Xperia V MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="361">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT26i Xperia S MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20841">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT26i Xperia S MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16745">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT26i Xperia S MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="373">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT26w Xperia Acro HD IS12S MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16757">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT26w Xperia Acro HD IS12S MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="374">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT26w Xperia Acro HD SO-03D MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16758">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT26w Xperia Acro HD SO-03D MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="375">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT28at Xperia Ion MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20855">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT28at Xperia Ion MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16759">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT28at Xperia Ion MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="41335">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT28at Xperia Ion MTP+UMS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="45431">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT28at Xperia Ion MTP+UMS+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="376">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT29i Xperia GX MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20856">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT29i Xperia GX MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16760">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT29i Xperia GX MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="386">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT30p Xperia T MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20866">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT30p Xperia T MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16770">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY LT30p Xperia T MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="371">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY MT27i Xperia Sola MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20851">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY MT27i Xperia Sola MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16755">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY MT27i Xperia Sola MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="41331">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY MT27i Xperia Sola MTP+UMS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="45427">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY MT27i Xperia Sola MTP+UMS+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony MVC-CD300 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony MVC-CD500 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1839">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony NEX-3N (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1656">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony NEX-6</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="860">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-A726/NWZ-A728/NWZ-A768</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="805">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-A815/NWZ-A818</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="859">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-A826/NWZ-A828/NWZ-A829</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1028">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-A845</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="878">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-B135</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="984">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-B142F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1214">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-B153F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1434">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-B163F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1673">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-B173F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1020">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-E344/E345</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1227">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-E354</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="901">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-E436F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1021">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-E445</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1446">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-E464</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="806">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S516</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1022">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S545</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="807">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S615F/NWZ-S616F/NWZ-S618F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="910">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S638F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="858">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S716F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="908">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S739F</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1228">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S754</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1448">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S765</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="904">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-W202</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1211">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-W252B</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="919">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-X1050B/NWZ-X1060B</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="920">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony NWZ-X1051/NWZ-X1061</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="78">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony PTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1191">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony SLT-A35 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="801">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony SLT-A350 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1187">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony SLT-A55 (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1641">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony SLT-A57</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1846">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony SLT-A58</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1847">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony SLT-A58 (Control)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1396">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony SLT-A65V (PTP mode)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1653">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">ptp</merge>
+     <merge key="camera.libgphoto2.name" type="string">Sony SLT-A99v</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20854">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY SO-03D Xperia Acro HD MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="41334">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY SO-03D Xperia Acro HD MTP+UMS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="45430">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY SO-03D Xperia Acro MTP+UMS+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="385">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY SO-05D Xperia SX MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20865">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY SO-05D Xperia SX MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16769">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY SO-05D Xperia SX MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1233">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony Sony Tablet P1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1459">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony Sony Tablet S</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1356">
+    <match key="usb.product_id" int="1460">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Sony Sony Tablet S1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="369">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST15i Xperia U MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="368">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST21i Xperia Tipo MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20848">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST21i Xperia Tipo MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16752">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST21i Xperia Tipo MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="384">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST23i Xperia Miro MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20864">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST23i Xperia Miro MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16768">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST23i Xperia Miro MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20849">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST25i Xperia U MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16753">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST25i Xperia U MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="382">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST27i/ST27a Xperia go MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20862">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST27i/ST27a Xperia go MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16766">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST27i/ST27a Xperia go MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="41342">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST27i/ST27a Xperia go MTP+UMS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="45438">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY ST27i/ST27a Xperia go MTP+UMS+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="365">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY WT19i Live Walkman MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="408">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia A MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20888">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia A MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="419">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia C MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20899">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia C MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16803">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia C MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="396">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia E MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20876">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia E MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16780">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia E MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="444">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia E3 MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20924">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia E3 MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="444">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia E3 MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="459">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY XPeria E4g MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20939">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY XPeria E4g MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16843">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY XPeria E4g MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="392">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia J MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20872">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia J MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16776">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia J MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="402">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia L MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20882">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia L MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16786">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia L MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="411">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia M MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20891">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia M MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16795">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia M MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="427">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 Dual MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20907">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 Dual MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16811">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 Dual MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="426">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20906">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16810">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="405">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia SP MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20885">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia SP MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16789">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia SP MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="397">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP 1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="404">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20877">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP+ADB 1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20884">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP+ADB 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16781">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP+CDROM 1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16788">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP+CDROM 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="403">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20883">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16787">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="438">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="406">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="412">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP (ID3)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20918">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20886">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP+ADB (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20892">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP+ADB (ID3)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16796">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP+CDROM (ID3)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="423">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 Compact D5503</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16807">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 Compact D5503 MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20903">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 Compact MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="414">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20894">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16798">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="431">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z2 MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20911">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z2 MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16815">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z2 MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="443">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 Compact MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20923">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 Compact MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16827">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 Compact MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="442">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20922">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16826">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="393">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia ZL MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20873">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia ZL MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16777">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia ZL MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="407">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia ZR MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20887">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SONY Xperia ZR MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="326">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson c1605 Xperia Dual E MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20806">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson c1605 Xperia Dual E MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="217">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson C702</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="212">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson C902</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="239">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson C905</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="343">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson IS12S Xperia Acro MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20823">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson IS12S Xperia Acro MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16727">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson IS12S Xperia Acro MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="334">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson j108i (Cedar)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="53572">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson j10i (Elm)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="324">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson j10i2 (Elm)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="57344">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson K550i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="117">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson K850i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20815">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson LT15i Xperia Arc MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="335">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson LT15i Xperia arc S MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="346">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson MK16i Xperia MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20826">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson MK16i Xperia MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="342">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson MT11i Xperia Neo MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20822">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson MT11i Xperia Neo MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="349">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson R800/R88i Xperia Play MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20829">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson R800/R88i Xperia Play MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="358">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson SK17i Xperia Mini Pro MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20838">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson SK17i Xperia Mini Pro MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="359">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST15i Xperia Mini MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20839">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST15i Xperia Mini MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="360">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST17i Xperia Active MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20840">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST17i Xperia Active MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="16744">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST17i Xperia Active MTP+CDROM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="353">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST18a Xperia Ray MTP</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20833">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST18i Xperia Ray MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="251">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson T700</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="307">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson U5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="314">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson U8i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="4296">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson W302</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="243">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson W595</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="261">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson W705/W715</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="198">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson W760i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="179">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson W890i</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="245">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson W902</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="118">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson W910</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="218">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson W980</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="274">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson W995</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4046">
+    <match key="usb.product_id" int="20845">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">SonyEricsson WT19i Live Walkman MTP+ADB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Soundstar TDC-35</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SpyPen Axys</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SpyPen Cleo</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SpyPen Luxo</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SpyPen Memo</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SpyPen Xion</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SQ chip camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">StarCam CP086</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">STM USB Dual-mode camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Stop &amp; Shop 87096</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">STV0680</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37181">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Suprema Digital Keychain Camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">SY-2107C</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1105">
+    <match key="usb.product_id" int="53512">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">TCL Alcatel one touch 986+</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="5073">
+    <match key="usb.product_id" int="28695">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Technika MP-709</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2726">
+    <match key="usb.product_id" int="12305">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Tevion MD 81488</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1691">
+    <match key="usb.product_id" int="12341">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Thomson / RCA Lyra HC308A</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1691">
+    <match key="usb.product_id" int="1911">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Thomson / RCA Opal / Lyra MC4002</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1691">
+    <match key="usb.product_id" int="1908">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Thomson EM28 Series</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1691">
+    <match key="usb.product_id" int="1916">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Thomson Lyra MC5104B (M51 Series)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1691">
+    <match key="usb.product_id" int="12314">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Thomson RCA H106</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1691">
+    <match key="usb.product_id" int="12328">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Thomson scenium E308</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2329">
+    <match key="usb.product_id" int="256">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Tiger Fast Flicks</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Timlex CP075</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="5008">
+    <match key="usb.product_id" int="21589">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">TomTom Rider 40</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4571">
+    <match key="usb.product_id" int="4096">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Topfield TF5000PVR</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="2403">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Excite AT300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="12">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="9">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat MEGF-40</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="29">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat MET401</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="26">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat MEU201</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="24">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat MEU202</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="17">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat P10</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="15">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat P20</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="16">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat S</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="25">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat T</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="22">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat U</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="20">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat V30</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4402">
+    <match key="usb.product_id" int="17207">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba PDR-M11</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4402">
+    <match key="usb.product_id" int="17202">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba PDR-M60</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4402">
+    <match key="usb.product_id" int="17205">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba PDR-M61</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="4402">
+    <match key="usb.product_id" int="17204">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba PDR-M65</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2352">
+    <match key="usb.product_id" int="28928">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Toshiba Thrive AT100/AT105</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="13056">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Traveler SX330z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3478">
+    <match key="usb.product_id" int="16640">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Traveler SX410z</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7784">
+    <match key="usb.product_id" int="2">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">TrekStor i.Beat Organix 2.0</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1026">
+    <match key="usb.product_id" int="1553">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">TrekStor i.Beat Sweez FM</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1647">
+    <match key="usb.product_id" int="33834">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">TrekStor Vibez 8/12GB</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2125">
+    <match key="usb.product_id" int="3">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Trust Familycam 300</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1750">
+    <match key="usb.product_id" int="46">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Trust PowerC@m 350FS</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1750">
+    <match key="usb.product_id" int="45">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Trust PowerC@m 350FT</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2250">
+    <match key="usb.product_id" int="272">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Trust Spyc@m 100</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1276">
+    <match key="usb.product_id" int="20554">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Trust Spyc@m 500F FLASH</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1943">
+    <match key="usb.product_id" int="32794">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Typhoon StyloCam</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1363">
+    <match key="usb.product_id" int="514">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">UMAX AstraPen</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3428">
+    <match key="usb.product_id" int="4097">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">UMAX AstraPix 320s</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.interface.class" int="6">
+    <match key="usb.interface.subclass" int="1">
+     <match key="usb.interface.protocol" int="1">
+      <merge key="info.category" type="string">camera</merge>
+      <addset key="info.capabilities" type="strlist">camera</addset>
+      <merge key="camera.access_method" type="string">ptp</merge>
+      <merge key="camera.libgphoto2.name" type="string">USB PTP Class Camera</merge>
+      <merge key="camera.libgphoto2.support" type="bool">true</merge>
+     </match>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8711">
+    <match key="usb.product_id" int="1">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Various Viewpia DR/bq Kepler</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8711">
+    <match key="usb.product_id" int="17">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Various Viewpia DR/bq Kepler Debugging</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1032">
+    <match key="usb.product_id" int="14489">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Verizon Ellipsis 7</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">ViviCam3350</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="37152">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">ViviCam5B</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2425">
+    <match key="usb.product_id" int="551">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Vivitar Freelance</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="270">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Vivitar Mini Digital Camera</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="2362">
+    <match key="usb.product_id" int="271">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Vivitar Vivicam 55</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3141">
+    <match key="usb.product_id" int="32778">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Vivitar Vivicam3350B</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Vivitar Vivicam35</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1161">
+    <match key="usb.product_id" int="57617">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Vizio (for Lenovo) LIFETAB S9714</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1161">
+    <match key="usb.product_id" int="49190">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Vizio Unknown 1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1161">
+    <match key="usb.product_id" int="57408">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Vizio VTAB1008</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1329">
+    <match key="usb.product_id" int="8193">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Wacom Cintiq Companion Hybrid (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="3141">
+    <match key="usb.product_id" int="32769">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">Wild Planet Digital Spy Camera 70137</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7763">
+    <match key="usb.product_id" int="7">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Wyplay Wyplayer</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="4968">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Xiaomi HM NOTE 1LTEW MIUI (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="4680">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Xiaomi Hongmi (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="4672">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Xiaomi Hongmi (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="61443">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Xiaomi Mi-2 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="36921">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Xiaomi Mi-2 (MTP+ADB)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="65352">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Xiaomi Mi-2s (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="872">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Xiaomi Mi-3 (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="864">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Xiaomi Mi-3w (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10007">
+    <match key="usb.product_id" int="1632">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Xiaomi MiPad (MTP)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="8711">
+    <match key="usb.product_id" int="6">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">YiFang BQ Tesla</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10518">
+    <match key="usb.product_id" int="37197">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Yota Phone 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10518">
+    <match key="usb.product_id" int="61443">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">Yota Phone 2 (ID2)</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="7871">
+    <match key="usb.product_id" int="32553">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">YU Yureka Vodafone smart turbo 4</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="1054">
+    <match key="usb.product_id" int="24576">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">ZiiLABS Zii EGG</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="10096">
+    <match key="usb.product_id" int="36956">
+     <merge key="info.category" type="string">camera</merge>
+     <addset key="info.capabilities" type="strlist">camera</addset>
+     <merge key="camera.access_method" type="string">proprietary</merge>
+     <merge key="camera.libgphoto2.name" type="string">ZINA Mini Digital Keychain Camer</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6610">
+    <match key="usb.product_id" int="835">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">ZTE Grand X In</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6610">
+    <match key="usb.product_id" int="65486">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">ZTE V5</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6610">
+    <match key="usb.product_id" int="580">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">ZTE V55 ID 1</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6610">
+    <match key="usb.product_id" int="581">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">ZTE V55 ID 2</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6610">
+    <match key="usb.product_id" int="774">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">ZTE V790/Blade 3</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6610">
+    <match key="usb.product_id" int="775">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">ZTE V880E</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+   <match key="usb.vendor_id" int="6610">
+    <match key="usb.product_id" int="899">
+     <merge key="info.category" type="string">portable_audio_player</merge>
+     <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
+     <merge key="portable_audio_player.access_method" type="string">user</merge>
+     <merge key="portable_audio_player.type" type="string">mtp</merge>
+     <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
+     <merge key="camera.libgphoto2.name" type="string">ZTE V985</merge>
+     <merge key="camera.libgphoto2.support" type="bool">true</merge>
+    </match>
+   </match>
+  </match>
+ </device>
+</deviceinfo>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/40-libgphoto2.rules b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/40-libgphoto2.rules
new file mode 100644
index 0000000..b9f0439
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2-2.5.8/40-libgphoto2.rules
@@ -0,0 +1,1955 @@
+# udev rules file for libgphoto2 devices (for udev 0.98 version)
+# Created from this library:
+#   libgphoto2      2.5.8          all camlibs, gcc, ltdl, no EXIF
+#   libgphoto2_port 0.12.0         gcc, ltdl, no USB, serial without locking
+#
+# this file is autogenerated, local changes will be LOST on upgrades
+ACTION!="add", GOTO="libgphoto2_rules_end"
+SUBSYSTEM!="usb|usb_device", GOTO="libgphoto2_usb_end"
+
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="33c3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="33c4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3643", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="353c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="362d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3586", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3348", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3349", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="334a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="33d8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="337c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="337d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="33cb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3325", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3341", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3344", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3345", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3389", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="338a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3378", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3514", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="35a8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3644", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3725", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3609", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3473", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="355f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="3657", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="33aa", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="35e4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0502", ATTRS{idProduct}=="361d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="16d5", ATTRS{idProduct}=="8006", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="16d5", ATTRS{idProduct}=="8005", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="06bd", ATTRS{idProduct}=="0403", MODE="l36"
+ATTRS{idVendor}=="06bd", ATTRS{idProduct}=="0404", MODE="l36"
+ATTRS{idVendor}=="04fc", ATTRS{idProduct}=="504b", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="04fc", ATTRS{idProduct}=="504a", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="08ca", ATTRS{idProduct}=="0111", MODE="l36"
+ATTRS{idVendor}=="04fc", ATTRS{idProduct}=="504a", MODE="l36"
+ATTRS{idVendor}=="04fc", ATTRS{idProduct}=="504b", MODE="l36"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0168", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="2008", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0c02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="a00e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="f003", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="904d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0167", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="1949", ATTRS{idProduct}=="0800", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1949", ATTRS{idProduct}=="0007", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1949", ATTRS{idProduct}=="0008", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1949", ATTRS{idProduct}=="000a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1949", ATTRS{idProduct}=="000c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1949", ATTRS{idProduct}=="0012", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1949", ATTRS{idProduct}=="000b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1949", ATTRS{idProduct}=="000d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1949", ATTRS{idProduct}=="0005", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1949", ATTRS{idProduct}=="00f2", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0224", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="129a", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="12ab", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1290", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1292", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1294", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1297", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="12a0", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="12a8", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1291", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1293", MODE="l36"
+ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1299", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="5008", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="5009", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="4002", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1528", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1529", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1539", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1538", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="14b9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1548", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="120a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="131d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="120c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1301", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1303", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1311", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1321", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="31f3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1331", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1333", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="3229", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1307", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="2008", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1357", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1351", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1309", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="130b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1313", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1315", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1335", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="130d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="130f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1319", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="14ef", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1568", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1569", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="14bf", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1518", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1508", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1509", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="14ad", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="149a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="146b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="145e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1458", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="31ab", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1207", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1341", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="131b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e79", ATTRS{idProduct}=="1208", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010f", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010f", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="913c", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010f", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5a0f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4ce0", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4ce1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="514f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="7773", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="540f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="541f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="550f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5500", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4cd0", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4cd1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="521f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="520f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4cc0", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4cc1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5460", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5468", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5400", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5410", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5411", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5466", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="7772", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5506", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5561", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5200", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5201", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5210", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5211", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5214", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5220", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5221", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5230", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5231", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4e00", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4e01", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4e0f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4e1f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4d00", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4d01", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4c80", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4c81", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4c90", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4c91", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4ca0", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="4ca1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="561f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5f02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="580f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="581f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5480", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5481", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="7781", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5490", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="5491", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9051", MODE="l36"
+ATTRS{idVendor}=="2080", ATTRS{idProduct}=="0006", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2080", ATTRS{idProduct}=="0005", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04a5", ATTRS{idProduct}=="3003", MODE="l36"
+ATTRS{idVendor}=="1d45", ATTRS{idProduct}=="459d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2a47", ATTRS{idProduct}=="7f10", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2a47", ATTRS{idProduct}=="2008", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2a47", ATTRS{idProduct}=="0c02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3047", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31c2", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31bd", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31e6", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31f3", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3268", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30c0", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="304d", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31f7", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3066", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30bf", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3075", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ba", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="310e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b4", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ff", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="311c", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30fe", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="314f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30f2", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="314e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3116", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3184", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3119", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3174", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3136", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3160", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3174", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3115", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31c4", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="314b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="315f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3173", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3193", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31c1", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="309b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="309b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30c4", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3072", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b6", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30f4", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3052", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3065", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3070", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3071", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30f1", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ee", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="306a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3088", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3087", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30a5", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="317b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3270", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3083", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30bc", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3217", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="327f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ea", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3147", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31d0", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3219", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30eb", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ec", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3084", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3099", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3113", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ef", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ee", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ee", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3110", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3146", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3145", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31cf", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="319b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31ea", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3101", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3102", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3199", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="323a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3218", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3215", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="323b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3250", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3272", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3253", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="319a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="326f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3044", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3060", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3084", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3099", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3110", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3084", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3099", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ee", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3110", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3145", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31cf", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="323d", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3299", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31cf", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3145", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="308e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3241", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="32a9", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3225", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31e6", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3193", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3046", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="304b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30c4", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="306b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3096", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="307c", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="307a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30a0", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3096", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="308e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3081", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3080", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30a9", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="306b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="308d", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3082", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="307f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3080", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="306b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3096", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30a9", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3105", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="308e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="304f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3061", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="318e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31c3", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="323e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3264", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="304e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3062", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3191", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31be", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="322a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="324a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3249", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3271", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3262", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3059", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3076", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31f2", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b8", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31f1", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3261", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3058", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b7", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3243", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30f9", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="310f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30f8", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3155", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3149", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="317a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31bf", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31ef", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30c2", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30c1", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3126", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="311b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3150", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="314d", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="314c", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3177", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3176", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3074", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30fd", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30fc", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="313a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3139", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="315b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3073", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3117", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3138", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="315d", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b5", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="309a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3226", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="323f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b9", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30bb", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31bc", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3288", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3289", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3048", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3233", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="318f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31df", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3258", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3055", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="306e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="306f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3085", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b3", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3125", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="315a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="309b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3049", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="309c", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3041", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3236", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3045", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3051", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="325b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3275", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30f0", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3043", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3065", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3070", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3071", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="311a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3057", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="304c", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3066", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3056", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3075", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ba", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="306c", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="306d", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3148", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3077", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b4", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b2", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b1", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30fa", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3212", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="309b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3072", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="314f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30b6", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3184", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31c4", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31f4", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30c4", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30c0", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3137", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30f1", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30ff", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30f2", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="311c", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="30fe", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3119", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="314e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3175", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31c2", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3174", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="314b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3196", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3115", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31e6", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31c1", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3193", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="318d", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="315e", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3192", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31e0", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3211", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3234", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="325a", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3276", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31e4", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31c0", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31f6", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="322c", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3228", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3245", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3244", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="325f", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3238", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="325c", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3277", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="329b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3050", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="305c", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31ea", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3217", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="323b", MODE="l36"
+ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="3078", MODE="l36"
+ATTRS{idVendor}=="07cf", ATTRS{idProduct}=="1049", MODE="l36"
+ATTRS{idVendor}=="07cf", ATTRS{idProduct}=="1042", MODE="l36"
+ATTRS{idVendor}=="07cf", ATTRS{idProduct}=="104d", MODE="l36"
+ATTRS{idVendor}=="07cf", ATTRS{idProduct}=="104c", MODE="l36"
+ATTRS{idVendor}=="07cf", ATTRS{idProduct}=="117a", MODE="l36"
+ATTRS{idVendor}=="055f", ATTRS{idProduct}=="c200", MODE="l36"
+ATTRS{idVendor}=="04b7", ATTRS{idProduct}=="88a9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="1002", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0797", ATTRS{idProduct}=="8001", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0224", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="1e74", ATTRS{idProduct}=="6512", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1e53", ATTRS{idProduct}=="0005", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="4100", MODE="l36"
+ATTRS{idVendor}=="03e8", ATTRS{idProduct}=="2182", MODE="l36"
+ATTRS{idVendor}=="03e8", ATTRS{idProduct}=="2180", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0952", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0711", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0751", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0911", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0941", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0801", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0871", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0891", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0861", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0881", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0921", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0901", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0701", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0761", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0e21", ATTRS{idProduct}=="0931", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4016", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4007", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="400a", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4012", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="400b", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4013", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4123", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4157", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4130", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="413c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4133", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4161", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4137", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="413d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4131", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4150", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4158", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4152", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="411f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4153", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="413e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4151", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4162", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4169", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4128", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="106c", ATTRS{idProduct}=="3215", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="084d", ATTRS{idProduct}=="0003", MODE="l36"
+ATTRS{idVendor}=="0d64", ATTRS{idProduct}=="1021", MODE="l36"
+ATTRS{idVendor}=="03e8", ATTRS{idProduct}=="2130", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="8000", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="4132", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="412f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="b10b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="b11a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="b11b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="4500", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="1f3a", ATTRS{idProduct}=="0c02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010e", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="05da", ATTRS{idProduct}=="1018", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="1183", ATTRS{idProduct}=="0001", MODE="l36"
+ATTRS{idVendor}=="05da", ATTRS{idProduct}=="1020", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0aa6", ATTRS{idProduct}=="6021", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9050", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9052", MODE="l36"
+ATTRS{idVendor}=="10d6", ATTRS{idProduct}=="2200", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010e", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010f", MODE="l36"
+ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0403", MODE="l36"
+ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0402", MODE="l36"
+ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2008", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2970", ATTRS{idProduct}=="0c02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1782", ATTRS{idProduct}=="4001", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="06d3", ATTRS{idProduct}=="21ba", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0dca", ATTRS{idProduct}=="0002", MODE="l36"
+ATTRS{idVendor}=="0dca", ATTRS{idProduct}=="0002", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="014a", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01d2", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01c6", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01d3", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="021b", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0193", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01e0", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01c0", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01e4", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="019b", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01c1", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01c5", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01d4", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01e6", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01fa", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="020e", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="022d", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0271", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0250", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01dd", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01db", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01ef", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0200", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01e8", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0209", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0240", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="027d", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0265", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0298", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01c4", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01d7", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01bf", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0142", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="018f", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="029c", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0233", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="026e", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0263", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="02a6", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0288", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01d8", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="0201", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="020d", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01fe", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="02b5", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="04cb", ATTRS{idProduct}=="01c3", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="04c5", ATTRS{idProduct}=="1140", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04c5", ATTRS{idProduct}=="133b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="091e", ATTRS{idProduct}=="2585", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="0458", ATTRS{idProduct}=="7005", MODE="l36"
+ATTRS{idVendor}=="040d", ATTRS{idProduct}=="885c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0414", ATTRS{idProduct}=="2008", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0414", ATTRS{idProduct}=="0c02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="0007", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="0006", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e41", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e42", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e0f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4d00", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="2d02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="740a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="d10a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="d109", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee2", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="b00a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="70a8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e25", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e26", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="05b3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="7102", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2672", ATTRS{idProduct}=="0011", MODE="l36"
+ATTRS{idVendor}=="0797", ATTRS{idProduct}=="801c", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="1302", ATTRS{idProduct}=="1016", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1302", ATTRS{idProduct}=="1017", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010e", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7e1d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="5d1d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="5c1d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="109b", ATTRS{idProduct}=="9106", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="109b", ATTRS{idProduct}=="9109", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="109b", ATTRS{idProduct}=="9105", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6502", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6202", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7c02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7d02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6302", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6602", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7402", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7802", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7202", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6e02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7902", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6d02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6302", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="4102", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6802", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7102", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6b02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6402", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7602", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6702", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6c02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6a02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="4202", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7702", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7e02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="4302", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="4102", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="4402", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="4502", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="4102", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="6002", MODE="l36"
+ATTRS{idVendor}=="f003", ATTRS{idProduct}=="6002", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="8b02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="8c02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7502", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7b02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7302", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="7a02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="8002", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="8102", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="8202", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="9b02", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="8402", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="8502", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="9602", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="9702", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="8702", MODE="l36"
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="8802", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="685c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="6860", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0c02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2008", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0ec6", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0ebd", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dff", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0c93", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0ca8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dfe", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0de4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="05fd", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dd5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0e31", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0e32", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0df5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="07ae", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dda", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0f91", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0f64", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0f63", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0f87", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0f5f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0f60", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dea", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dd2", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="07ca", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0f25", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="061a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0fb4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0fb5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="07cb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="07d9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0cec", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0df8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0df9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dfa", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dfb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dfc", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dfd", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="07d8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2012", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="060b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0dcd", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="f0ca", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0ba1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0ba2", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1082", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="360f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="361f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1051", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1052", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9153", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="c025", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010e", MODE="l36"
+ATTRS{idVendor}=="19ff", ATTRS{idProduct}=="0303", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="19ff", ATTRS{idProduct}=="0309", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="19ff", ATTRS{idProduct}=="0307", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0a5f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0a15", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0a16", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="8086", ATTRS{idProduct}=="0630", MODE="l36"
+ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0a5e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="8087", ATTRS{idProduct}=="09fb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010f", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="112a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1126", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1141", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1142", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1152", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1167", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1151", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="2101", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="2105", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="2102", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1006", ATTRS{idProduct}=="3004", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1008", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1122", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1006", ATTRS{idProduct}=="4002", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1006", ATTRS{idProduct}=="4003", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1147", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1113", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1120", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1117", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1115", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1114", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1118", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1119", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1153", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1134", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1042", ATTRS{idProduct}=="1143", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1e68", ATTRS{idProduct}=="1002", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1116", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="4102", ATTRS{idProduct}=="1132", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0b20", ATTRS{idProduct}=="ddee", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0784", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="3300", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="4100", MODE="l36"
+ATTRS{idVendor}=="05da", ATTRS{idProduct}=="1006", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="0000", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="2931", ATTRS{idProduct}=="0a01", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2931", ATTRS{idProduct}=="0a05", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04f1", ATTRS{idProduct}=="6105", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="084e", ATTRS{idProduct}=="0001", MODE="l36"
+ATTRS{idVendor}=="0b28", ATTRS{idProduct}=="100c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2237", ATTRS{idProduct}=="d108", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2237", ATTRS{idProduct}=="d109", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2237", ATTRS{idProduct}=="b108", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0617", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="060b", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="057e", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="058a", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="058c", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="058d", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0589", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05aa", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="059a", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05a2", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05b7", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05ba", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05a7", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05af", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05ae", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05c3", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05a9", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05c6", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="059c", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0560", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0560", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0535", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0566", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0566", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0574", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0573", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0571", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0584", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0579", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0578", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0578", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="057a", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="057b", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0586", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="057c", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0120", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0121", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0110", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0111", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0130", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0112", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0132", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0160", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0131", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0525", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0500", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0510", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0530", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0170", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0555", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0576", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0550", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0570", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0572", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0575", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="057d", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="057f", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0577", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0300", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0540", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0568", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0569", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0565", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0567", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05ce", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0600", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="059f", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05c1", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05ad", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0585", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0400", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0592", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0593", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="058e", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="058f", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0591", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05a0", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05ac", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05ab", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05b8", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="059d", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="059e", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0587", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05b3", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05b4", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0580", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0588", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0403", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05b5", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="0595", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05cf", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05cd", MODE="l36"
+ATTRS{idVendor}=="040a", ATTRS{idProduct}=="05c0", MODE="l36"
+ATTRS{idVendor}=="04c8", ATTRS{idProduct}=="0722", MODE="l36"
+ATTRS{idVendor}=="132b", ATTRS{idProduct}=="0001", MODE="l36"
+ATTRS{idVendor}=="132b", ATTRS{idProduct}=="0019", MODE="l36"
+ATTRS{idVendor}=="132b", ATTRS{idProduct}=="0009", MODE="l36"
+ATTRS{idVendor}=="132b", ATTRS{idProduct}=="0007", MODE="l36"
+ATTRS{idVendor}=="132b", ATTRS{idProduct}=="0018", MODE="l36"
+ATTRS{idVendor}=="132b", ATTRS{idProduct}=="0022", MODE="l36"
+ATTRS{idVendor}=="1f3a", ATTRS{idProduct}=="1006", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0482", ATTRS{idProduct}=="0979", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0482", ATTRS{idProduct}=="0810", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0482", ATTRS{idProduct}=="0571", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0482", ATTRS{idProduct}=="059a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9051", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2375", MODE="l36"
+ATTRS{idVendor}=="1a98", ATTRS{idProduct}=="0002", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="7737", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="772b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="7498", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="75bc", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="75be", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="7542", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="757d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="76e8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="740a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="7883", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="75b5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="775a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="74cc", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="0c02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="7497", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="74a6", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="74f8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="7718", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="741c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="76f2", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="77ea", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="76ff", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="77b1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="61f1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="61f9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="627f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="626e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="611b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="608f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="6132", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="633e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="6239", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="623d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="621c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="6225", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="619a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="043e", ATTRS{idProduct}=="7040", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="043e", ATTRS{idProduct}=="70b1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="631c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="6265", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="6010", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1004", ATTRS{idProduct}=="6005", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="4100", MODE="l36"
+ATTRS{idVendor}=="13d1", ATTRS{idProduct}=="7002", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0900", MODE="l36"
+ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0950", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="4100", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="3300", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="04fc", ATTRS{idProduct}=="504b", MODE="l36"
+ATTRS{idVendor}=="066f", ATTRS{idProduct}=="846c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="0050", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0408", ATTRS{idProduct}=="b00a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="17ef", ATTRS{idProduct}=="7483", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04fc", ATTRS{idProduct}=="504a", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="4100", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="2205", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="4102", MODE="l36"
+ATTRS{idVendor}=="066f", ATTRS{idProduct}=="8550", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="066f", ATTRS{idProduct}=="8588", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0408", ATTRS{idProduct}=="b009", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1271", ATTRS{idProduct}=="2012", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="201e", ATTRS{idProduct}=="42ab", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2a45", ATTRS{idProduct}=="2008", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2a45", ATTRS{idProduct}=="0c02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="10d6", ATTRS{idProduct}=="2300", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0db0", ATTRS{idProduct}=="5572", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="0640", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="0622", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="04ec", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="0710", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="063e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="f0ca", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="00c9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="0641", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="8008", MODE="l36"
+ATTRS{idVendor}=="084d", ATTRS{idProduct}=="0003", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="60ca", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="7088", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="64cf", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e32", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e33", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e67", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2ea5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2ea8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e68", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="41d6", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="41da", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="42a7", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="437f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="4373", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="4811", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="41dc", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="70ca", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e76", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e82", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e84", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e62", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e63", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e66", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="6413", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="64b5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="64b6", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e50", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2e51", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="6415", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="2a65", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="70a3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="70a8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="70a9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="4311", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="4306", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="41cf", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="710d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="710e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="4362", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+# not working yet: PROGRAM="check-mtp-device", , ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="055f", ATTRS{idProduct}=="c200", MODE="l36"
+ATTRS{idVendor}=="055f", ATTRS{idProduct}=="a350", MODE="l36"
+ATTRS{idVendor}=="055f", ATTRS{idProduct}=="c220", MODE="l36"
+ATTRS{idVendor}=="055f", ATTRS{idProduct}=="c420", MODE="l36"
+ATTRS{idVendor}=="055f", ATTRS{idProduct}=="c520", MODE="l36"
+ATTRS{idVendor}=="0aa6", ATTRS{idProduct}=="9601", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0409", ATTRS{idProduct}=="0326", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0409", ATTRS{idProduct}=="0432", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0409", ATTRS{idProduct}=="0242", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0402", ATTRS{idProduct}=="5668", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0302", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0117", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0122", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0123", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0109", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0115", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0121", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0111", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="011d", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="012d", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0204", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="010f", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="010b", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0130", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0131", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0129", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0113", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0206", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0119", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="012e", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="010d", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0135", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0139", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0137", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="011f", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0103", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0127", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0112", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0191", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0102", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0226", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0188", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0208", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="030b", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0309", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="017e", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="015f", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0185", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0315", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0318", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0317", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0324", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0343", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0305", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0192", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0140", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="017d", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0142", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0221", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="020c", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0169", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0184", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="015b", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0223", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0163", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0228", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0311", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="016f", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="017f", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="018b", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0225", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0229", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="016b", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="016c", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0173", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0337", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0346", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="014e", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0161", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0177", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0178", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0321", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="032d", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="033f", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="031b", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0320", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0334", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="032a", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0144", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0329", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="015d", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0220", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="014e", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0171", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="021e", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="021c", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0157", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="021f", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0222", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0186", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0193", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="034b", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0404", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="040c", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0408", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="041c", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="040a", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0402", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0410", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0416", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="041a", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0424", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0425", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0427", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="042c", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0433", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0426", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0420", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="042b", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0414", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0418", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0435", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0423", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0429", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="042f", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0431", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="041e", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="042d", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0434", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0406", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0422", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0428", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="040e", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0430", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0437", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0412", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="042a", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="042e", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0436", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0421", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0602", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0603", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0605", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0609", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0606", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0601", MODE="l36"
+ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0604", MODE="l36"
+ATTRS{idVendor}=="04fc", ATTRS{idProduct}=="504a", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0224", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="02c1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0065", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="005f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0462", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01ee", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0209", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="04be", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="02e2", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="04ba", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="006c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="00ea", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="047e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0229", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="04b4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0154", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0155", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0159", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="002e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0098", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="008d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="003c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0297", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="05d3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0592", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="03c1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="03cd", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01cf", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="032f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0179", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="00e5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0334", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0335", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="00e4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01a1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0221", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="06fc", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0666", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0661", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0524", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0488", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="04d1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="04e1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0079", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0186", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="02fe", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0302", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="04f1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="000a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0074", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0092", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="051a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0485", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0478", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="04e5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="04ef", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="006e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="03d2", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0039", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01f5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="026b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01f4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0274", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="06e8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1703", ATTRS{idProduct}=="0001", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1703", ATTRS{idProduct}=="0002", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0955", ATTRS{idProduct}=="70a9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0955", ATTRS{idProduct}=="b400", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0955", ATTRS{idProduct}=="cf07", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0955", ATTRS{idProduct}=="cf02", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0955", ATTRS{idProduct}=="7100", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0955", ATTRS{idProduct}=="7102", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1e53", ATTRS{idProduct}=="0006", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0114", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0114", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0114", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0114", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0114", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0114", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0110", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="012f", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="012f", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0116", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0114", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0113", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="012f", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0114", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0114", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0116", MODE="l36"
+ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0116", MODE="l36"
+ATTRS{idVendor}=="22d9", ATTRS{idProduct}=="2765", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22d9", ATTRS{idProduct}=="2774", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="22d9", ATTRS{idProduct}=="2773", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2374", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2145", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04da", ATTRS{idProduct}=="2158", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="106c", ATTRS{idProduct}=="f003", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1d4d", ATTRS{idProduct}=="5036", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1d4d", ATTRS{idProduct}=="5035", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1d4d", ATTRS{idProduct}=="504a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="25fb", ATTRS{idProduct}=="0165", MODE="l36"
+ATTRS{idVendor}=="0a17", ATTRS{idProduct}=="000d", MODE="l36"
+ATTRS{idVendor}=="0a17", ATTRS{idProduct}=="00f7", MODE="l36"
+ATTRS{idVendor}=="0aa6", ATTRS{idProduct}=="9702", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="207c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="20b9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="2138", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="0165", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="2077", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="208e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="2004", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="0857", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="084e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="2002", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="014f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="2075", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="207b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="20b7", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="20e5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="014d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="014c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="01eb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="014b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="190b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010e", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="2190", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="7e01", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="0181", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="0164", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="2022", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0471", ATTRS{idProduct}=="0172", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="08e4", ATTRS{idProduct}=="0142", MODE="l36"
+ATTRS{idVendor}=="08e4", ATTRS{idProduct}=="0148", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010e", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="0784", ATTRS{idProduct}=="2888", MODE="l36"
+ATTRS{idVendor}=="0546", ATTRS{idProduct}=="2035", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0546", ATTRS{idProduct}=="0daf", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010f", MODE="l36"
+ATTRS{idVendor}=="29e4", ATTRS{idProduct}=="1203", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="29e4", ATTRS{idProduct}=="1103", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0784", ATTRS{idProduct}=="5300", MODE="l36"
+ATTRS{idVendor}=="04fc", ATTRS{idProduct}=="ffff", MODE="l36"
+ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="8800", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="f003", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="0229", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="3196", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="6764", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="6765", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9039", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9025", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0dca", ATTRS{idProduct}=="0004", MODE="l36"
+ATTRS{idVendor}=="0784", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="1260", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="1268", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="220b", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="2203", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="2204", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="2208", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="220c", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="0325", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="2214", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="032d", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="220d", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="2212", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="032b", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="2213", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="2216", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="032f", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="2217", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="221a", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="0110", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="2202", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="033d", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="220d", MODE="l36"
+ATTRS{idVendor}=="0fca", ATTRS{idProduct}=="8007", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="220f", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="220f", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="913d", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="913d", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="913d", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="8003", MODE="l36"
+ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="8003", MODE="l36"
+ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="8003", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010e", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010f", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010f", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6866", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6727", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="685c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6877", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6752", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="68af", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="e20c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6819", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="04a4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="4f1f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6734", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6642", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="140c", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="1384", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="684a", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6763", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6709", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="68a9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6702", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="502e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="501d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5022", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="502f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5024", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5a0f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5033", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="0409", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5057", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5081", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="505a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5118", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5083", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="511a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5115", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="511d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5130", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5125", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="510f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="512e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5091", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="508b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="508a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5047", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="507f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5054", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="507d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5093", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5121", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5137", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="503c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7410", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7450", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7452", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7432", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7434", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="74e4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="74d0", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7480", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7420", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7422", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7460", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="74c0", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="74c2", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="74e0", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7401", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7400", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="7430", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0781", ATTRS{idProduct}=="74b0", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0474", ATTRS{idProduct}=="0230", MODE="l36"
+ATTRS{idVendor}=="0797", ATTRS{idProduct}=="8901", MODE="l36"
+ATTRS{idVendor}=="0797", ATTRS{idProduct}=="8909", MODE="l36"
+ATTRS{idVendor}=="0797", ATTRS{idProduct}=="8911", MODE="l36"
+ATTRS{idVendor}=="084d", ATTRS{idProduct}=="1001", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="0353", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="220e", MODE="l36"
+ATTRS{idVendor}=="05ca", ATTRS{idProduct}=="0327", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="04dd", ATTRS{idProduct}=="9661", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="04dd", ATTRS{idProduct}=="96ca", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="c025", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010e", MODE="l36"
+ATTRS{idVendor}=="066f", ATTRS{idProduct}=="a010", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0c77", ATTRS{idProduct}=="1011", MODE="l36"
+ATTRS{idVendor}=="0c77", ATTRS{idProduct}=="1015", MODE="l36"
+ATTRS{idVendor}=="0c77", ATTRS{idProduct}=="1002", MODE="l36"
+ATTRS{idVendor}=="0c77", ATTRS{idProduct}=="1010", MODE="l36"
+ATTRS{idVendor}=="0d64", ATTRS{idProduct}=="1001", MODE="l36"
+ATTRS{idVendor}=="0c77", ATTRS{idProduct}=="1001", MODE="l36"
+ATTRS{idVendor}=="18f6", ATTRS{idProduct}=="0102", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="18f6", ATTRS{idProduct}=="0110", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="3300", MODE="l36"
+ATTRS{idVendor}=="1bdc", ATTRS{idProduct}=="fabf", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0dca", ATTRS{idProduct}=="0002", MODE="l36"
+ATTRS{idVendor}=="0ec7", ATTRS{idProduct}=="1008", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="074e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="07c6", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0957", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="08e7", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="094e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="08b7", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0953", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="094d", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0954", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="08e2", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="1294", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="02c0", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="02e7", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0543", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="061f", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06ee", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0491", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="08ad", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="052b", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="052a", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="074b", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0296", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0296", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0343", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="02f8", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="053c", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5175", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="a175", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="b175", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0172", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5172", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4172", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0186", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5186", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4186", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0169", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5169", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4169", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0175", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4175", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0176", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4176", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0177", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5177", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4177", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="a177", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="b177", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0178", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5178", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4178", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0182", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5182", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4182", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0173", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5173", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4173", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="a173", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="b173", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="072f", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0678", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="035c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0325", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="035b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0404", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="036e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="03d8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="04be", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="059a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0689", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="03fc", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="04cb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0385", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="03fd", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05a6", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0326", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="03fe", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0327", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="038e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="035a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="038c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="04cc", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05a8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0388", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="04bb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0397", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0398", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="004e", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="04a7", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0321", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="04a3", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0669", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0736", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0737", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0574", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0675", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5176", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="a176", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="b176", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0181", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5181", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4181", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="04d1", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05b3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05b4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0171", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0170", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5170", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4170", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0180", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5180", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4180", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5171", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4171", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="017e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="517e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="417e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="a17e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="b17e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="016d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0198", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5198", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01a3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="51a3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="41a3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="018c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="518c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="418c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01bc", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="51bc", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01bc", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01cb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="51cb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="41cb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0188", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5188", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4188", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0192", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5192", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4192", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="019b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="519b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="419b", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01ab", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="51ab", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="41ab", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01aa", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="51aa", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="41aa", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0195", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5195", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4195", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="018d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0194", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="518d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5194", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="418d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4194", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0193", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5193", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4193", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01b6", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0196", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="019c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="51b6", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5196", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="519c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="419c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01a7", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="41a7", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="51a7", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="019e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="519e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="419e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01af", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="51af", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="41af", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01bb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="51bb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="41bb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="01ba", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="51ba", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="41ba", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0189", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5189", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4189", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0197", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5197", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0146", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5146", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="00d9", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="00d4", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="00ef", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0157", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5157", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4157", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="014e", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="d144", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0144", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="e000", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0075", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="514f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="014f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="015a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="515a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0156", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5156", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="015d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="515d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0166", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5166", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0167", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5167", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0168", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5168", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="4168", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0161", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="5161", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="00fb", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0133", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="013a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="10c8", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="00f3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0105", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="00c6", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="00b3", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="00f5", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0076", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="00da", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="0112", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="516d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="913d", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="0451", ATTRS{idProduct}=="d108", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="13d1", ATTRS{idProduct}=="7017", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0aa6", ATTRS{idProduct}=="3011", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="069b", ATTRS{idProduct}=="3035", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="069b", ATTRS{idProduct}=="0777", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="069b", ATTRS{idProduct}=="0774", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="069b", ATTRS{idProduct}=="077c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="069b", ATTRS{idProduct}=="301a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="069b", ATTRS{idProduct}=="3028", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0919", ATTRS{idProduct}=="0100", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="1390", ATTRS{idProduct}=="5455", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="11db", ATTRS{idProduct}=="1000", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="0963", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="000c", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="0009", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="001d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="001a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="0018", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="0011", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="000f", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="0010", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="0019", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="0016", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="0014", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1132", ATTRS{idProduct}=="4337", MODE="l36"
+ATTRS{idVendor}=="1132", ATTRS{idProduct}=="4332", MODE="l36"
+ATTRS{idVendor}=="1132", ATTRS{idProduct}=="4335", MODE="l36"
+ATTRS{idVendor}=="1132", ATTRS{idProduct}=="4334", MODE="l36"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="7100", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="3300", MODE="l36"
+ATTRS{idVendor}=="0d96", ATTRS{idProduct}=="4100", MODE="l36"
+ATTRS{idVendor}=="1e68", ATTRS{idProduct}=="0002", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0402", ATTRS{idProduct}=="0611", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="066f", ATTRS{idProduct}=="842a", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="084d", ATTRS{idProduct}=="0003", MODE="l36"
+ATTRS{idVendor}=="06d6", ATTRS{idProduct}=="002e", MODE="l36"
+ATTRS{idVendor}=="06d6", ATTRS{idProduct}=="002d", MODE="l36"
+ATTRS{idVendor}=="08ca", ATTRS{idProduct}=="0110", MODE="l36"
+ATTRS{idVendor}=="04fc", ATTRS{idProduct}=="504a", MODE="l36"
+ATTRS{idVendor}=="0797", ATTRS{idProduct}=="801a", MODE="l36"
+ATTRS{idVendor}=="0553", ATTRS{idProduct}=="0202", MODE="l36"
+ATTRS{idVendor}=="0d64", ATTRS{idProduct}=="1001", MODE="l36"
+PROGRAM="check-ptp-camera 06/01/01", MODE="l36"
+ATTRS{idVendor}=="2207", ATTRS{idProduct}=="0001", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2207", ATTRS{idProduct}=="0011", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0408", ATTRS{idProduct}=="3899", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="9120", MODE="l36"
+ATTRS{idVendor}=="0979", ATTRS{idProduct}=="0227", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010e", MODE="l36"
+ATTRS{idVendor}=="093a", ATTRS{idProduct}=="010f", MODE="l36"
+ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="800a", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e111", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="c026", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e040", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0531", ATTRS{idProduct}=="2001", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="8001", MODE="l36"
+ATTRS{idVendor}=="1e53", ATTRS{idProduct}=="0007", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="1368", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="1248", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="1240", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="f003", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="9039", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="ff48", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="0368", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="0360", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2717", ATTRS{idProduct}=="0660", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2207", ATTRS{idProduct}=="0006", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2916", ATTRS{idProduct}=="914d", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2916", ATTRS{idProduct}=="f003", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="1ebf", ATTRS{idProduct}=="7f29", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="041e", ATTRS{idProduct}=="6000", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="2770", ATTRS{idProduct}=="905c", MODE="l36"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0343", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="ffce", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0244", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0245", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0306", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0307", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0383", ENV{ID_MEDIA_PLAYER}="1", MODE="l36"
+
+LABEL="libgphoto2_usb_end"
+
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="1908", ATTRS{idProduct}=="1315", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="1908", ATTRS{idProduct}=="1320", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="1908", ATTRS{idProduct}=="0102", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="1908", ATTRS{idProduct}=="3335", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0116", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0108", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0110", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="010e", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0104", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="04b0", ATTRS{idProduct}=="0401", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0105", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0105", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0105", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0109", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0105", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0105", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0105", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0105", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0105", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0109", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0109", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0109", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="07b4", ATTRS{idProduct}=="0109", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="0a17", ATTRS{idProduct}=="0070", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="0a17", ATTRS{idProduct}=="00a1", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="0a17", ATTRS{idProduct}=="006e", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="0a17", ATTRS{idProduct}=="0093", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="0a17", ATTRS{idProduct}=="0091", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="25fb", ATTRS{idProduct}=="0164", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="25fb", ATTRS{idProduct}=="0132", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="25fb", ATTRS{idProduct}=="0102", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="0a17", ATTRS{idProduct}=="0009", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="0a17", ATTRS{idProduct}=="0007", MODE="l36"
+KERNEL=="sd[a-z]*", ATTRS{idVendor}=="1403", ATTRS{idProduct}=="0001", MODE="l36"
+KERNEL=="sg[0-9]*", ATTRS{idVendor}=="0168", ATTRS{idProduct}=="3011", MODE="l36"
+
+LABEL="libgphoto2_rules_end"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.8.bb
new file mode 100644
index 0000000..3de6942
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.8.bb
@@ -0,0 +1,55 @@
+SUMMARY = "libgphoto2 allows you to access digital cameras"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0448d3676bc0de00406af227d341a4d1"
+
+DEPENDS = "libtool jpeg virtual/libusb0 libexif zlib libxml2"
+
+# The .fdi and .rules files were generated with:
+#  libgphoto2-2.5.8/packaging/generic$ qemu-arm -s 1048576 -r 2.6.24 -L /OE/angstrom-dev/staging/armv5te-angstrom-linux-gnueabi/ .libs/print-camera-list
+# They are release specific, so please regen when adding new releases
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/gphoto/libgphoto2-${PV}.tar.bz2;name=libgphoto2 \
+           file://10-camera-libgphoto2-device.fdi \
+           file://10-camera-libgphoto2.fdi \
+           file://40-libgphoto2.rules \
+           file://0001-configure.ac-remove-AM_PO_SUBDIRS.patch \
+"
+
+SRC_URI[libgphoto2.md5sum] = "873ab01aced49c6b92a98e515db5dcef"
+SRC_URI[libgphoto2.sha256sum] = "031a262e342fae43f724afe66787947ce1fb483277dfe5a8cf1fbe92c58e27b6"
+
+inherit autotools pkgconfig gettext lib_package
+
+EXTRA_OECONF = " --with-drivers=all udevscriptdir=/lib/udev ac_cv_lib_ltdl_lt_dlcaller_register=yes"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gd] = ",--without-gdlib,gd"
+PACKAGECONFIG[serial] = "--enable-serial,--disable-serial,lockdev"
+
+do_configure_append() {
+    cp ${STAGING_DATADIR}/gettext/po/Makefile.in.in ${S}/libgphoto2_port/po/
+    cd ${S}/libgphoto2_port/
+    autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths
+    cd ${S}
+}
+
+do_install_append() {
+    install -d ${D}${datadir}/hal/fdi/information/20thirdparty
+    install -m 0644 ${WORKDIR}/*.fdi ${D}${datadir}/hal/fdi/information/20thirdparty/
+
+    install -d ${D}${sysconfdir}/udev/rules.d/
+    install -m 0755 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/
+}
+
+PACKAGES =+ "libgphotoport libgphoto2-camlibs"
+FILES_libgphoto2-camlibs = "${libdir}/libgphoto2*/*/*.so*"
+RRECOMMENDS_${PN} = "libgphoto2-camlibs"
+RDEPENDS_${PN} = "bash"
+
+FILES_libgphotoport = "${libdir}/libgphoto2_port.so.*"
+
+FILES_${PN} += "${nonarch_base_libdir}/udev/* ${datadir}/hal"
+FILES_${PN}-dbg += "${libdir}/*/*/.debug"
+FILES_${PN}-dev += "${libdir}/*/*/*.la"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf/Makevars b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf/Makevars
new file mode 100644
index 0000000..8b09f53
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf/Makevars
@@ -0,0 +1,25 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
new file mode 100644
index 0000000..e404a7a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
@@ -0,0 +1,27 @@
+SUMMARY = "GTK Performance tool"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = "http://prdownloads.sourceforge.net/${BPN}/${BPN}_${PV}.tar.gz \
+           file://Makevars"
+
+SRC_URI[md5sum] = "4331dde4bb83865e15482885fcb0cc53"
+SRC_URI[sha256sum] = "9704344e732038eecbd007dd996a56293a6b027b5b76f3f036273a3fae1ab27b"
+
+DEPENDS = "gtk+"
+
+S = "${WORKDIR}/${BPN}"
+
+inherit autotools binconfig pkgconfig gettext
+
+do_configure_prepend () {
+    rm -f ${S}/m4/init.m4
+    cp -f ${WORKDIR}/Makevars ${S}/po/
+}
+
+do_install_append () {
+    rm -rf ${D}/${exec_prefix}/doc
+}
+
+FILES_${PN} += "${exec_prefix}/share/duck.png"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb
new file mode 100644
index 0000000..2c51319
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Jpeg 2000 implementation"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=baa697d7510288a9cdcce9bd7edaf9bc"
+
+PR = "r1"
+
+SRC_URI = "http://www.ece.uvic.ca/~mdadams/jasper/software/jasper-${PV}.zip"
+
+inherit autotools lib_package
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[jpeg] = "--enable-libjpeg,--disable-libjpeg,jpeg"
+
+EXTRA_OECONF = "--enable-shared"
+
+SRC_URI[md5sum] = "a342b2b4495b3e1394e161eb5d85d754"
+SRC_URI[sha256sum] = "6b905a9c2aca2e275544212666eefc4eb44d95d0a57e4305457b407fe63f9494"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.70.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.70.bb
new file mode 100644
index 0000000..e826e05
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.70.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "A pedagogically-oriented open source site containing software that is broadly useful for image processing and image analysis applications"
+DEPENDS = "jpeg tiff libpng zlib giflib"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://leptonica-license.txt;md5=20cdd3af097ca431b82004c691f406a6"
+
+SRC_URI = "http://leptonica.com/source/leptonica-${PV}.tar.gz"
+SRC_URI[md5sum] = "5ac2a31cf5b4f0e8f5a853a5266c42ef"
+SRC_URI[sha256sum] = "d3d209a1f6d1f7a80119486b5011bc8c6627e582c927ab44ba33c37edb2cfba2"
+
+EXTRA_OECONF += " \
+    --without-libwebp \
+"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/libsexy/libsexy.inc b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libsexy/libsexy.inc
new file mode 100644
index 0000000..5a11ca0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libsexy/libsexy.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Libsexy is a collection of GTK+ widgets that extend the functionality of such standard widgets as GtkEntry and GtkLabel"
+HOMEPAGE = "http://wiki.chipx86.com/wiki/Libsexy"
+AUTHOR = "Christian Hammond <chipx86@chipx86.com>"
+SECTION = "x11/libs"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+DEPENDS = "gtk+ enchant libxml2"
+
+SRC_URI = "http://releases.chipx86.com/libsexy/${BPN}/${BP}.tar.gz \
+           file://libsexy-pkgconfig-fixes.patch"
+
+inherit autotools pkgconfig
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/libsexy/libsexy/libsexy-pkgconfig-fixes.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libsexy/libsexy/libsexy-pkgconfig-fixes.patch
new file mode 100644
index 0000000..61da947
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libsexy/libsexy/libsexy-pkgconfig-fixes.patch
@@ -0,0 +1,15 @@
+Index: libsexy-0.1.11/libsexy.pc.in
+===================================================================
+--- libsexy-0.1.11.orig/libsexy.pc.in	2005-11-10 10:21:18.000000000 +0000
++++ libsexy-0.1.11/libsexy.pc.in	2008-03-05 14:36:39.000000000 +0000
+@@ -6,7 +6,8 @@
+ Name: libsexy
+ Description: Doing naughty things to good widgets
+ Version: @VERSION@
+-Libs: -L${libdir} -lsexy @PACKAGE_LIBS@
+-Cflags: -I${includedir} @PACKAGE_CFLAGS@
+ 
++Requires: pango glib-2.0 gtk+-2.0 libxml-2.0
++Libs: -L${libdir} -lsexy 
++Cflags: -I${includedir}
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/libsexy/libsexy_0.1.11.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libsexy/libsexy_0.1.11.bb
new file mode 100644
index 0000000..86b4958
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libsexy/libsexy_0.1.11.bb
@@ -0,0 +1,6 @@
+require libsexy.inc
+
+PR = "r2"
+
+SRC_URI[md5sum] = "33c079a253270ec8bfb9508e4bb30754"
+SRC_URI[sha256sum] = "8c4101a8cda5fccbba85ba1a15f46f2cf75deaa8b3c525ce5b135b9e1a8fe49e"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver/0001-remove-webclients-build.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver/0001-remove-webclients-build.patch
new file mode 100644
index 0000000..8f4365c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver/0001-remove-webclients-build.patch
@@ -0,0 +1,28 @@
+diff --git a/Makefile.am b/Makefile.am
+index 5c2a94d..f98038a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,7 +1,7 @@
+ ACLOCAL_AMFLAGS = -I m4
+ 
+-SUBDIRS=libvncserver examples libvncclient webclients client_examples test
+-DIST_SUBDIRS=libvncserver examples libvncclient webclients client_examples test
++SUBDIRS=libvncserver examples libvncclient client_examples test
++DIST_SUBDIRS=libvncserver examples libvncclient client_examples test
+ EXTRA_DIST = CMakeLists.txt rfb/rfbint.h.cmake rfb/rfbconfig.h.cmake
+ 
+ bin_SCRIPTS = libvncserver-config
+diff --git a/configure.ac b/configure.ac
+index ca9f3b3..9b464cf 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -600,9 +600,6 @@ AC_CONFIG_FILES([Makefile
+ 	libvncserver/Makefile
+ 	examples/Makefile
+ 	examples/android/Makefile
+-	webclients/Makefile
+-	webclients/java-applet/Makefile
+-	webclients/java-applet/ssl/Makefile
+ 	libvncclient/Makefile
+ 	client_examples/Makefile
+ 	test/Makefile
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver/0002-common-add-sha1.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver/0002-common-add-sha1.patch
new file mode 100644
index 0000000..8b70d2f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver/0002-common-add-sha1.patch
@@ -0,0 +1,524 @@
+diff --git a/common/sha1.c b/common/sha1.c
+new file mode 100644
+index 0000000..988b188
+--- /dev/null
++++ b/common/sha1.c
+@@ -0,0 +1,411 @@
++/*
++ * Copyright (C) The Internet Society (2001).  All Rights Reserved.
++ *
++ * This document and translations of it may be copied and furnished to
++ * others, and derivative works that comment on or otherwise explain it
++ * or assist in its implementation may be prepared, copied, published
++ * and distributed, in whole or in part, without restriction of any
++ * kind, provided that the above copyright notice and this paragraph are
++ * included on all such copies and derivative works.  However, this
++ * document itself may not be modified in any way, such as by removing
++ * the copyright notice or references to the Internet Society or other
++ * Internet organizations, except as needed for the purpose of
++ * developing Internet standards in which case the procedures for
++ * copyrights defined in the Internet Standards process must be
++ * followed, or as required to translate it into languages other than
++ * English.
++ *
++ * The limited permissions granted above are perpetual and will not be
++ * revoked by the Internet Society or its successors or assigns.
++ *
++ * This document and the information contained herein is provided on an
++ * "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
++ * TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
++ * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
++ * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
++ * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
++ */
++
++/*
++ *  sha1.c
++ *
++ *  Description:
++ *      This file implements the Secure Hashing Algorithm 1 as
++ *      defined in FIPS PUB 180-1 published April 17, 1995.
++ *
++ *      The SHA-1, produces a 160-bit message digest for a given
++ *      data stream.  It should take about 2**n steps to find a
++ *      message with the same digest as a given message and
++ *      2**(n/2) to find any two messages with the same digest,
++ *      when n is the digest size in bits.  Therefore, this
++ *      algorithm can serve as a means of providing a
++ *      "fingerprint" for a message.
++ *
++ *  Portability Issues:
++ *      SHA-1 is defined in terms of 32-bit "words".  This code
++ *      uses <stdint.h> (included via "sha1.h" to define 32 and 8
++ *      bit unsigned integer types.  If your C compiler does not
++ *      support 32 bit unsigned integers, this code is not
++ *      appropriate.
++ *
++ *  Caveats:
++ *      SHA-1 is designed to work with messages less than 2^64 bits
++ *      long.  Although SHA-1 allows a message digest to be generated
++ *      for messages of any number of bits less than 2^64, this
++ *      implementation only works with messages with a length that is
++ *      a multiple of the size of an 8-bit character.
++ *
++ */
++
++#include "sha1.h"
++
++/*
++ *  Define the SHA1 circular left shift macro
++ */
++#define SHA1CircularShift(bits,word) \
++                (((word) << (bits)) | ((word) >> (32-(bits))))
++
++/* Local Function Prototyptes */
++void SHA1PadMessage(SHA1Context *);
++void SHA1ProcessMessageBlock(SHA1Context *);
++
++/*
++ *  SHA1Reset
++ *
++ *  Description:
++ *      This function will initialize the SHA1Context in preparation
++ *      for computing a new SHA1 message digest.
++ *
++ *  Parameters:
++ *      context: [in/out]
++ *          The context to reset.
++ *
++ *  Returns:
++ *      sha Error Code.
++ *
++ */
++int SHA1Reset(SHA1Context *context)
++{
++    if (!context)
++    {
++        return shaNull;
++    }
++
++    context->Length_Low             = 0;
++    context->Length_High            = 0;
++    context->Message_Block_Index    = 0;
++
++    context->Intermediate_Hash[0]   = 0x67452301;
++    context->Intermediate_Hash[1]   = 0xEFCDAB89;
++    context->Intermediate_Hash[2]   = 0x98BADCFE;
++    context->Intermediate_Hash[3]   = 0x10325476;
++    context->Intermediate_Hash[4]   = 0xC3D2E1F0;
++
++    context->Computed   = 0;
++    context->Corrupted  = 0;
++    return shaSuccess;
++}
++
++/*
++ *  SHA1Result
++ *
++ *  Description:
++ *      This function will return the 160-bit message digest into the
++ *      Message_Digest array  provided by the caller.
++ *      NOTE: The first octet of hash is stored in the 0th element,
++ *            the last octet of hash in the 19th element.
++ *
++ *  Parameters:
++ *      context: [in/out]
++ *          The context to use to calculate the SHA-1 hash.
++ *      Message_Digest: [out]
++ *          Where the digest is returned.
++ *
++ *  Returns:
++ *      sha Error Code.
++ *
++ */
++int SHA1Result( SHA1Context *context,
++                uint8_t Message_Digest[SHA1HashSize])
++{
++    int i;
++
++    if (!context || !Message_Digest)
++    {
++        return shaNull;
++    }
++
++    if (context->Corrupted)
++    {
++        return context->Corrupted;
++    }
++
++    if (!context->Computed)
++    {
++        SHA1PadMessage(context);
++        for(i=0; i<64; ++i)
++        {
++            /* message may be sensitive, clear it out */
++            context->Message_Block[i] = 0;
++        }
++        context->Length_Low = 0;    /* and clear length */
++        context->Length_High = 0;
++        context->Computed = 1;
++    }
++
++    for(i = 0; i < SHA1HashSize; ++i)
++    {
++        Message_Digest[i] = context->Intermediate_Hash[i>>2]
++                            >> 8 * ( 3 - ( i & 0x03 ) );
++    }
++
++    return shaSuccess;
++}
++
++/*
++ *  SHA1Input
++ *
++ *  Description:
++ *      This function accepts an array of octets as the next portion
++ *      of the message.
++ *
++ *  Parameters:
++ *      context: [in/out]
++ *          The SHA context to update
++ *      message_array: [in]
++ *          An array of characters representing the next portion of
++ *          the message.
++ *      length: [in]
++ *          The length of the message in message_array
++ *
++ *  Returns:
++ *      sha Error Code.
++ *
++ */
++int SHA1Input(    SHA1Context    *context,
++                  const uint8_t  *message_array,
++                  unsigned       length)
++{
++    if (!length)
++    {
++        return shaSuccess;
++    }
++
++    if (!context || !message_array)
++    {
++        return shaNull;
++    }
++
++    if (context->Computed)
++    {
++        context->Corrupted = shaStateError;
++        return shaStateError;
++    }
++
++    if (context->Corrupted)
++    {
++         return context->Corrupted;
++    }
++    while(length-- && !context->Corrupted)
++    {
++    context->Message_Block[context->Message_Block_Index++] =
++                    (*message_array & 0xFF);
++
++    context->Length_Low += 8;
++    if (context->Length_Low == 0)
++    {
++        context->Length_High++;
++        if (context->Length_High == 0)
++        {
++            /* Message is too long */
++            context->Corrupted = 1;
++        }
++    }
++
++    if (context->Message_Block_Index == 64)
++    {
++        SHA1ProcessMessageBlock(context);
++    }
++
++    message_array++;
++    }
++
++    return shaSuccess;
++}
++
++/*
++ *  SHA1ProcessMessageBlock
++ *
++ *  Description:
++ *      This function will process the next 512 bits of the message
++ *      stored in the Message_Block array.
++ *
++ *  Parameters:
++ *      None.
++ *
++ *  Returns:
++ *      Nothing.
++ *
++ *  Comments:
++ *      Many of the variable names in this code, especially the
++ *      single character names, were used because those were the
++ *      names used in the publication.
++ *
++ *
++ */
++void SHA1ProcessMessageBlock(SHA1Context *context)
++{
++    const uint32_t K[] =    {       /* Constants defined in SHA-1   */
++                            0x5A827999,
++                            0x6ED9EBA1,
++                            0x8F1BBCDC,
++                            0xCA62C1D6
++                            };
++    int           t;                 /* Loop counter                */
++    uint32_t      temp;              /* Temporary word value        */
++    uint32_t      W[80];             /* Word sequence               */
++    uint32_t      A, B, C, D, E;     /* Word buffers                */
++
++    /*
++     *  Initialize the first 16 words in the array W
++     */
++    for(t = 0; t < 16; t++)
++    {
++        W[t] = context->Message_Block[t * 4] << 24;
++        W[t] |= context->Message_Block[t * 4 + 1] << 16;
++        W[t] |= context->Message_Block[t * 4 + 2] << 8;
++        W[t] |= context->Message_Block[t * 4 + 3];
++    }
++
++    for(t = 16; t < 80; t++)
++    {
++       W[t] = SHA1CircularShift(1,W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]);
++    }
++
++    A = context->Intermediate_Hash[0];
++    B = context->Intermediate_Hash[1];
++    C = context->Intermediate_Hash[2];
++    D = context->Intermediate_Hash[3];
++    E = context->Intermediate_Hash[4];
++
++    for(t = 0; t < 20; t++)
++    {
++        temp =  SHA1CircularShift(5,A) +
++                ((B & C) | ((~B) & D)) + E + W[t] + K[0];
++        E = D;
++        D = C;
++        C = SHA1CircularShift(30,B);
++        B = A;
++        A = temp;
++    }
++
++    for(t = 20; t < 40; t++)
++    {
++        temp = SHA1CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[1];
++        E = D;
++        D = C;
++        C = SHA1CircularShift(30,B);
++        B = A;
++        A = temp;
++    }
++
++    for(t = 40; t < 60; t++)
++    {
++        temp = SHA1CircularShift(5,A) +
++               ((B & C) | (B & D) | (C & D)) + E + W[t] + K[2];
++        E = D;
++        D = C;
++        C = SHA1CircularShift(30,B);
++        B = A;
++        A = temp;
++    }
++
++    for(t = 60; t < 80; t++)
++    {
++        temp = SHA1CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[3];
++        E = D;
++        D = C;
++        C = SHA1CircularShift(30,B);
++        B = A;
++        A = temp;
++    }
++
++    context->Intermediate_Hash[0] += A;
++    context->Intermediate_Hash[1] += B;
++    context->Intermediate_Hash[2] += C;
++    context->Intermediate_Hash[3] += D;
++    context->Intermediate_Hash[4] += E;
++
++    context->Message_Block_Index = 0;
++}
++
++
++/*
++ *  SHA1PadMessage
++ *
++ *  Description:
++ *      According to the standard, the message must be padded to an even
++ *      512 bits.  The first padding bit must be a '1'.  The last 64
++ *      bits represent the length of the original message.  All bits in
++ *      between should be 0.  This function will pad the message
++ *      according to those rules by filling the Message_Block array
++ *      accordingly.  It will also call the ProcessMessageBlock function
++ *      provided appropriately.  When it returns, it can be assumed that
++ *      the message digest has been computed.
++ *
++ *  Parameters:
++ *      context: [in/out]
++ *          The context to pad
++ *      ProcessMessageBlock: [in]
++ *          The appropriate SHA*ProcessMessageBlock function
++ *  Returns:
++ *      Nothing.
++ *
++ */
++
++void SHA1PadMessage(SHA1Context *context)
++{
++    /*
++     *  Check to see if the current message block is too small to hold
++     *  the initial padding bits and length.  If so, we will pad the
++     *  block, process it, and then continue padding into a second
++     *  block.
++     */
++    if (context->Message_Block_Index > 55)
++    {
++        context->Message_Block[context->Message_Block_Index++] = 0x80;
++        while(context->Message_Block_Index < 64)
++        {
++            context->Message_Block[context->Message_Block_Index++] = 0;
++        }
++
++        SHA1ProcessMessageBlock(context);
++
++        while(context->Message_Block_Index < 56)
++        {
++            context->Message_Block[context->Message_Block_Index++] = 0;
++        }
++    }
++    else
++    {
++        context->Message_Block[context->Message_Block_Index++] = 0x80;
++        while(context->Message_Block_Index < 56)
++        {
++            context->Message_Block[context->Message_Block_Index++] = 0;
++        }
++    }
++
++    /*
++     *  Store the message length as the last 8 octets
++     */
++    context->Message_Block[56] = context->Length_High >> 24;
++    context->Message_Block[57] = context->Length_High >> 16;
++    context->Message_Block[58] = context->Length_High >> 8;
++    context->Message_Block[59] = context->Length_High;
++    context->Message_Block[60] = context->Length_Low >> 24;
++    context->Message_Block[61] = context->Length_Low >> 16;
++    context->Message_Block[62] = context->Length_Low >> 8;
++    context->Message_Block[63] = context->Length_Low;
++
++    SHA1ProcessMessageBlock(context);
++}
+diff --git a/common/sha1.h b/common/sha1.h
+new file mode 100644
+index 0000000..1d49b1b
+--- /dev/null
++++ b/common/sha1.h
+@@ -0,0 +1,101 @@
++/*
++ * Copyright (C) The Internet Society (2001).  All Rights Reserved.
++ *
++ * This document and translations of it may be copied and furnished to
++ * others, and derivative works that comment on or otherwise explain it
++ * or assist in its implementation may be prepared, copied, published
++ * and distributed, in whole or in part, without restriction of any
++ * kind, provided that the above copyright notice and this paragraph are
++ * included on all such copies and derivative works.  However, this
++ * document itself may not be modified in any way, such as by removing
++ * the copyright notice or references to the Internet Society or other
++ * Internet organizations, except as needed for the purpose of
++ * developing Internet standards in which case the procedures for
++ * copyrights defined in the Internet Standards process must be
++ * followed, or as required to translate it into languages other than
++ * English.
++ *
++ * The limited permissions granted above are perpetual and will not be
++ * revoked by the Internet Society or its successors or assigns.
++ *
++ * This document and the information contained herein is provided on an
++ * "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
++ * TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
++ * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
++ * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
++ * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
++ */
++
++/*
++ *  sha1.h
++ *
++ *  Description:
++ *      This is the header file for code which implements the Secure
++ *      Hashing Algorithm 1 as defined in FIPS PUB 180-1 published
++ *      April 17, 1995.
++ *
++ *      Many of the variable names in this code, especially the
++ *      single character names, were used because those were the names
++ *      used in the publication.
++ *
++ *      Please read the file sha1.c for more information.
++ *
++ */
++
++
++#ifndef _SHA1_H_
++#define _SHA1_H_
++
++#include <stdint.h>
++/*
++ * If you do not have the ISO standard stdint.h header file, then you
++ * must typdef the following:
++ *    name              meaning
++ *  uint32_t         unsigned 32 bit integer
++ *  uint8_t          unsigned 8 bit integer (i.e., unsigned char)
++ *  int_least16_t    integer of >= 16 bits
++ *
++ */
++
++#ifndef _SHA_enum_
++#define _SHA_enum_
++enum
++{
++    shaSuccess = 0,
++    shaNull,            /* Null pointer parameter */
++    shaInputTooLong,    /* input data too long */
++    shaStateError       /* called Input after Result */
++};
++#endif
++#define SHA1HashSize 20
++
++/*
++ *  This structure will hold context information for the SHA-1
++ *  hashing operation
++ */
++typedef struct SHA1Context
++{
++    uint32_t Intermediate_Hash[SHA1HashSize/4]; /* Message Digest  */
++
++    uint32_t Length_Low;            /* Message length in bits      */
++    uint32_t Length_High;           /* Message length in bits      */
++
++                               /* Index into message block array   */
++    int_least16_t Message_Block_Index;
++    uint8_t Message_Block[64];      /* 512-bit message blocks      */
++
++    int Computed;               /* Is the digest computed?         */
++    int Corrupted;             /* Is the message digest corrupted? */
++} SHA1Context;
++
++/*
++ *  Function Prototypes
++ */
++int SHA1Reset(  SHA1Context *);
++int SHA1Input(  SHA1Context *,
++                const uint8_t *,
++                unsigned int);
++int SHA1Result( SHA1Context *,
++                uint8_t Message_Digest[SHA1HashSize]);
++
++#endif
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.10.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.10.bb
new file mode 100644
index 0000000..235b17e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.10.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "library for easy implementation of a RDP/VNC server"
+HOMEPAGE = "https://libvnc.github.io"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=361b6b837cad26c6900a926b62aada5f"
+
+DEPENDS += "zlib libsdl jpeg libpng gtk+ libgcrypt nettle gnutls gmp"
+RDEPENDS_${PN} += "libpng gtk+ libgcrypt"
+
+inherit autotools binconfig pkgconfig
+
+SRC_URI  = "\
+	 ${DEBIAN_MIRROR}/main/libv/libvncserver/libvncserver_0.9.10+dfsg.orig.tar.xz \
+	 file://0001-remove-webclients-build.patch \
+	 file://0002-common-add-sha1.patch \
+"
+
+SRC_URI[md5sum] = "e883b6c7bd339a5e1c48645051abe5c4"
+SRC_URI[sha256sum] = "583f28869b82aec57768d7d18cd7ff81bf092ecbbc1209b587c2c2cd68330250"
+
+S = "${WORKDIR}/${BPN}-LibVNCServer-${PV}"
+
+TARGET_LDFLAGS += "-lgcrypt"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0001-lxdm.conf.in-blacklist-root-for-release-images.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0001-lxdm.conf.in-blacklist-root-for-release-images.patch
new file mode 100644
index 0000000..49ecdb8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0001-lxdm.conf.in-blacklist-root-for-release-images.patch
@@ -0,0 +1,29 @@
+From 5038c49c0b61e057dec44c932f02c4bf99cee96e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Mon, 3 Sep 2012 10:02:51 +0200
+Subject: [PATCH] lxdm.conf.in: blacklist root for release images
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ data/lxdm.conf.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/data/lxdm.conf.in b/data/lxdm.conf.in
+index defc082..759e6e5 100644
+--- a/data/lxdm.conf.in
++++ b/data/lxdm.conf.in
+@@ -58,5 +58,5 @@ disable=0
+ white=
+ 
+ ## blacklist user
+-black=
++black=root
+ 
+-- 
+1.7.4.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0002-let-autotools-create-lxdm.conf.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0002-let-autotools-create-lxdm.conf.patch
new file mode 100644
index 0000000..75dc10c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0002-let-autotools-create-lxdm.conf.patch
@@ -0,0 +1,35 @@
+From 0ea0329f2c19a43acdc8444fa89e233ba617973d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Mon, 6 Oct 2014 13:06:24 +0200
+Subject: [PATCH] let autotools create lxdm.conf
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+in out of tree builds lxdm.conf is empty
+
+Upstream-Status: submitted [1]
+
+[1] http://sourceforge.net/p/lxde/mailman/message/32901417/
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ data/lxdm.conf.in | 2 +-
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/data/lxdm.conf.in b/data/lxdm.conf.in
+index d93f280..6206262 100644
+--- a/data/lxdm.conf.in
++++ b/data/lxdm.conf.in
+@@ -19,7 +19,7 @@
+ # skip_password=1
+ 
+ ## greeter used to welcome the user
+-greeter=@FULL_LIBEXECDIR@/lxdm-greeter-gtk
++greeter=@libexecdir@/lxdm-greeter-gtk
+ 
+ [server]
+ ## arg used to start xserver, not fully function
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/lxdm-pam b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/lxdm-pam
new file mode 100644
index 0000000..486621f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/lxdm-pam
@@ -0,0 +1,13 @@
+#%PAM-1.0
+# taken from http://aur.archlinux.org/packages/lx/lxdm-git/lxdm-git.tar.gz
+# further info https://wiki.archlinux.org/index.php/LXDM
+auth            requisite       pam_nologin.so
+auth            required        pam_env.so
+auth            required        pam_unix.so
+# To allow passwordless login comment previous line and uncomment next line
+#auth            required        pam_unix.so nullok
+account         required        pam_unix.so
+session         required        pam_limits.so
+session         required        pam_unix.so
+password        required        pam_unix.so
+-session optional pam_systemd.so
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/lxdm-pam-debug b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/lxdm-pam-debug
new file mode 100644
index 0000000..734949f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/lxdm-pam-debug
@@ -0,0 +1,13 @@
+#%PAM-1.0
+# taken from http://aur.archlinux.org/packages/lx/lxdm-git/lxdm-git.tar.gz
+# further info https://wiki.archlinux.org/index.php/LXDM
+auth            requisite       pam_nologin.so
+auth            required        pam_env.so
+#auth            required        pam_unix.so
+# To deny passwordless login comment next line and uncomment previous line
+auth            required        pam_unix.so nullok
+account         required        pam_unix.so
+session         required        pam_limits.so
+session         required        pam_unix.so
+password        required        pam_unix.so
+-session optional pam_systemd.so
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/lxdm.conf b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/lxdm.conf
new file mode 100644
index 0000000..0a6e672
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/lxdm.conf
@@ -0,0 +1,4 @@
+[base]
+last_session=
+last_lang=
+last_langs=
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
new file mode 100644
index 0000000..407129d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
@@ -0,0 +1,78 @@
+SUMMARY = "LXDM is the lightweight display manager"
+HOMEPAGE = "http://blog.lxde.org/?p=531"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+SRC_URI = " \
+    ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}%20${PV}/${BPN}-${PV}.tar.xz \
+    file://lxdm.conf \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'file://lxdm-pam file://lxdm-pam-debug', '', d)} \
+    ${@bb.utils.contains("DISTRO_TYPE", "debug", "", "file://0001-lxdm.conf.in-blacklist-root-for-release-images.patch",d)} \
+    file://0002-let-autotools-create-lxdm.conf.patch \
+"
+SRC_URI[md5sum] = "061caae432634e6db38bbdc84bc6ffa0"
+SRC_URI[sha256sum] = "4891efee81c72a400cc6703e40aa76f3f3853833d048b72ec805da0f93567f2f"
+
+PE = "1"
+
+DEPENDS = "virtual/libintl intltool-native cairo dbus gdk-pixbuf glib-2.0 gtk+ virtual/libx11 libxcb pango iso-codes"
+DEPENDS += "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "", "consolekit", d)}"
+
+# combine oe-core way with angstrom DISTRO_TYPE
+DISTRO_TYPE ?= "${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", "debug", "",d)}"
+
+inherit autotools pkgconfig gettext systemd distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+CFLAGS_append = " -fno-builtin-fork -fno-builtin-memset -fno-builtin-strstr "
+
+EXTRA_OECONF += "--enable-gtk3=no --enable-password=yes --with-x -with-xconn=xcb \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/ --disable-consolekit', '--without-systemdsystemunitdir', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
+"
+
+do_configure_prepend() {
+    cp ${STAGING_DATADIR}/gettext/po/Makefile.in.in ${S}/po/
+}
+
+do_compile_append() {
+    # default background configured not available / no password field available / no default screensaver
+    sed -i     -e 's,bg=,# bg=,g' \
+        -e 's,# skip_password=,skip_password=,g' \
+        -e 's,# arg=.*,arg=${bindir}/X -s 0,g' \
+        ${S}/data/lxdm.conf.in
+    # add default configuration
+    oe_runmake -C ${B}/data lxdm.conf
+}
+
+do_install_append() {
+    install -d ${D}${localstatedir}/lib/lxdm
+    install -m 644 ${WORKDIR}/lxdm.conf ${D}${localstatedir}/lib/lxdm
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'true', 'false', d)}; then
+        # ArchLinux version of pam config has the following advantages:
+        # * simple setup of passwordless login
+        # * in XFCE powerdown/restart enabled in logoff dialog
+        install -m 644 ${WORKDIR}/${@bb.utils.contains("DISTRO_TYPE", "debug", "lxdm-pam-debug", "lxdm-pam",d)} ${D}${sysconfdir}/pam.d/lxdm
+    fi
+}
+
+# make installed languages choosable
+pkg_postinst_${PN} () {
+langs=""
+for lang in `find $D${libdir}/locale -maxdepth 1 | grep _ | sort`; do
+lang=`basename $lang`
+if [ "x$langs" = "x" ]; then
+    langs="$lang"
+else
+   langs="$langs $lang"
+fi
+done
+sed -i "s:last_langs=.*$:last_langs=$langs:g" $D${localstatedir}/lib/lxdm/lxdm.conf
+}
+
+RDEPENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-loginuid', '', d)} setxkbmap bash librsvg-gtk"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "lxdm.service"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/mesa/mesa-glut_8.0.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/mesa/mesa-glut_8.0.1.bb
new file mode 100644
index 0000000..404ee53
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/mesa/mesa-glut_8.0.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "OpenGL Utility Toolkit"
+LICENSE = "Kilgard"
+LIC_FILES_CHKSUM = "file://include/GL/glut.h;md5=4aab626c830aed79d7b2e5a76dfa2dd6;startline=4;endline=8"
+
+SRC_URI = "git://anongit.freedesktop.org/mesa/glut"
+
+SRCREV = "ee89e9aeb49604b036e06f1df6478d32006b30cd"
+PV = "8.0.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep pkgconfig distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+DEPENDS = "virtual/libx11 libxmu libxi virtual/libgl libglu"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb
new file mode 100644
index 0000000..08d7f5b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Enable NumLock in X11 sessions"
+HOMEPAGE = "http://home.kde.org/~seli/numlockx/"
+SECTION = "x11/apps"
+LICENSE = "MIT-X"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dcb1cc75e21540a4a66b54e38d95b047"
+DEPENDS = "virtual/libx11 libxtst"
+
+SRC_URI = "http://pkgs.fedoraproject.org/repo/pkgs/numlockx/numlockx-${PV}.tar.gz/be9109370447eae23f6f3f8527bb1a67/numlockx-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "be9109370447eae23f6f3f8527bb1a67"
+SRC_URI[sha256sum] = "e468eb9121c94c9089dc6a287eeb347e900ce04a14be37da29d7696cbce772e4"
+
+inherit autotools distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OECONF = "--x-includes=${STAGING_INCDIR} \
+                --x-libraries=${STAGING_LIBDIR}"
+
+do_configure_prepend() {
+    # remove this from acinclude.m4 or build fails
+    sed -i '/_AC_PATH_X_XMKMF/d' ${S}/acinclude.m4
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/openbox/files/0001-Makefile.am-avoid-race-when-creating-autostart-direc.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/openbox/files/0001-Makefile.am-avoid-race-when-creating-autostart-direc.patch
new file mode 100644
index 0000000..2762e1c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/openbox/files/0001-Makefile.am-avoid-race-when-creating-autostart-direc.patch
@@ -0,0 +1,54 @@
+From 6bbde84a2197c97e49d9e64118a979728209e436 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Wed, 23 Sep 2015 23:21:42 +0200
+Subject: [PATCH] Makefile.am: avoid race when creating autostart directories
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fixes:
+
+| make: creating data/xsession/openbox-gnome-session
+| make: creating data/xsession/openbox-session
+| make: creating data/xsession/openbox-kde-session
+| make: creating data/autostart/openbox-autostart
+| make: creating doc/openbox.1
+| make: creating data/autostart/autostart
+| make: creating doc/openbox-session.1
+| make: creating doc/openbox-gnome-session.1
+| make: creating doc/openbox-kde-session.1
+| make: creating doc/obxprop.1
+| mkdir: cannot create directory './data/autostart': File exists
+| Makefile:4329: recipe for target 'data/autostart/autostart' failed
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ Makefile.am | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index f25bf8e..306e77d 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -505,14 +505,12 @@ edit = $(SED) \
+ 
+ data/autostart/autostart: $(top_srcdir)/data/autostart/autostart.in Makefile
+ 	@echo make: creating $@
+-	@test -d $(shell dirname $(top_builddir)/$@) || \
+-	  mkdir $(shell dirname $(top_builddir)/$@)
++	mkdir -p $(shell dirname $(top_builddir)/$@)
+ 	@$(edit) $< >$(top_builddir)/$@
+ 
+ data/autostart/openbox-autostart: $(top_srcdir)/data/autostart/openbox-autostart.in Makefile
+ 	@echo make: creating $@
+-	@test -d $(shell dirname $(top_builddir)/$@) || \
+-	  mkdir $(shell dirname $(top_builddir)/$@)
++	mkdir -p $(shell dirname $(top_builddir)/$@)
+ 	@$(edit) $< >$(top_builddir)/$@
+ 
+ %.desktop: %.desktop.in Makefile
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
new file mode 100644
index 0000000..b354ae7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
@@ -0,0 +1,53 @@
+SUMMARY = "openbox Window Manager"
+SECTION = "x11/wm"
+DEPENDS = "glib-2.0 pango libxml2 virtual/libx11 libcroco librsvg gdk-pixbuf"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = " \
+    http://icculus.org/openbox/releases/openbox-${PV}.tar.gz \
+    file://0001-Makefile.am-avoid-race-when-creating-autostart-direc.patch \
+"
+
+SRC_URI[md5sum] = "b72794996c6a3ad94634727b95f9d204"
+SRC_URI[sha256sum] = "8b4ac0760018c77c0044fab06a4f0c510ba87eae934d9983b10878483bde7ef7"
+
+inherit autotools gettext update-alternatives pkgconfig distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+ALTERNATIVE_${PN}-core = "x-window-manager"
+ALTERNATIVE_TARGET[x-window-manager] = "${bindir}/openbox"
+ALTERNATIVE_PRIORITY[x-window-manager] = "10"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[imlib2] = "--enable-imlib2,--disable-imlib2,imlib2"
+PACKAGECONFIG[startup-notification] = "--enable-startup-notification,--disable-startup-notification,startup-notification"
+PACKAGECONFIG[xrandr] = "--enable-xrandr,--disable-xrandr,libxrandr"
+PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,libxinerama"
+PACKAGECONFIG[xcursor] = "--enable-xcursor,--disable-xcursor,libxcursor"
+
+PACKAGES =+ "${PN}-core ${PN}-lxde ${PN}-gnome ${PN}-config"
+
+PACKAGES_DYNAMIC += "^${PN}-theme-.*"
+
+python populate_packages_prepend() {
+    theme_dir = d.expand('${datadir}/themes/')
+    theme_name = d.expand('${PN}-theme-%s')
+    do_split_packages(d, theme_dir, '(.*)', theme_name, '${PN} theme for %s', extra_depends='', allow_dirs=True)
+}
+
+RDEPENDS_${PN} += "${PN}-core ${PN}-config ${PN}-theme-clearlooks"
+FILES_${PN}-core = "${bindir}/openbox ${libdir}/*${SOLIBS}"
+
+FILES_${PN}-lxde += "${datadir}/lxde/ \
+                     ${datadir}/lxpanel \
+                     ${datadir}/xsessions \
+                     ${datadir}/icons"
+
+FILES_${PN}-gnome += " \
+    ${datadir}/gnome \
+    ${datadir}/gnome-session \
+"
+
+FILES_${PN}-config += "${sysconfdir}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.1.0.bb
new file mode 100644
index 0000000..d28a865
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.1.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "OpenJPEG library is an open-source JPEG 2000 codec"
+HOMEPAGE = "http://www.openjpeg.org/index.php?menu=main"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c648878b4840d7babaade1303e7f108c"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}.mirror/${PV}/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "f6419fcc233df84f9a81eb36633c6db6"
+SRC_URI[sha256sum] = "1232bb814fd88d8ed314c94f0bfebb03de8559583a33abbe8c64ef3fc0a8ff03"
+
+inherit cmake
+
+DEPENDS = "libpng tiff lcms"
+
+# standard path for *.cmake
+EXTRA_OECMAKE += "-DOPENJPEG_INSTALL_PACKAGE_DIR=${baselib}/cmake \
+                  -DOPENJPEG_INSTALL_LIB_DIR:PATH=${libdir}"
+
+FILES_${PN}-dev += "${libdir}/cmake/*.cmake"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/packagegroups/packagegroup-fonts-truetype.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/packagegroups/packagegroup-fonts-truetype.bb
new file mode 100644
index 0000000..632e7d4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/packagegroups/packagegroup-fonts-truetype.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Install one of these tasks to get support for truetype fonts"
+SECTION = "fonts"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+PV = "1.0"
+PR = "r2"
+
+inherit packagegroup allarch
+
+PACKAGES += "\
+    ${PN}-core \
+    ${PN}-chinese \
+    ${PN}-japanese \
+"
+
+RRECOMMENDS_${PN} = "\
+    ${PN}-core \
+    ${PN}-chinese \
+    ${PN}-japanese \
+"
+
+RDEPENDS_${PN}-core = "\
+    fontconfig-utils \
+    \
+    ttf-dejavu-common \
+    ttf-dejavu-sans \
+    ttf-dejavu-sans-mono \
+"
+#  ttf-dejavu-serif
+
+RDEPENDS_${PN}-chinese = "\
+    ${PN}-core \
+    ttf-arphic-uming \
+"
+
+RDEPENDS_${PN}-japanese = "\
+    ${PN}-core \
+    ttf-sazanami-gothic \
+    ttf-sazanami-mincho \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.36.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.36.0.bb
new file mode 100644
index 0000000..f738153
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.36.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "C++ bindings for the pango library"
+SECTION = "libs"
+LICENSE = "LGPLv2.1 & GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
+                    file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "mm-common cairomm glibmm pango"
+
+SHRT_VER = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}"
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/pangomm/${SHRT_VER}/pangomm-${PV}.tar.xz"
+SRC_URI[md5sum] = "62910723211d86ab825b666b479871c9"
+SRC_URI[sha256sum] = "a8d96952c708d7726bed260d693cece554f8f00e48b97cccfbf4f5690b6821f0"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --disable-documentation "
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/*/include/ ${libdir}/pangomm-*/"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb
new file mode 100644
index 0000000..6a159a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb
@@ -0,0 +1,16 @@
+SUMMARY = "C library for encoding data in a QR Code symbol"
+AUTHOR = "Kentaro Fukuchi"
+HOMEPAGE = "http://fukuchi.org/works/qrencode/"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+PV = "3.4.4+git${SRCPV}"
+
+SRCREV = "1b565c7b599029818fc596e7da4371a3083da36c"
+SRC_URI = "git://github.com/fukuchi/libqrencode.git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF += "--without-tools --without-tests"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0002-Fix-image-handling-integer-overflows.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0002-Fix-image-handling-integer-overflows.patch
new file mode 100644
index 0000000..de82d63
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0002-Fix-image-handling-integer-overflows.patch
@@ -0,0 +1,343 @@
+From 24e548a222f0aab4313d5ba8b04f0840b173000f Mon Sep 17 00:00:00 2001
+From: iwamatsu <iwamatsu@7c53e7cc-98ea-0310-8f1f-a0b24da60408>
+Date: Mon, 30 Aug 2010 01:24:54 +0000
+Subject: [PATCH 2/8] Fix image handling integer overflows
+
+Image loading memory allocation is based on the image width and height:
+ malloc(heigth * width * 3).  Providing an image with large height and
+width values can cause the result of this calculation to exceed the
+maximum value of an unsigned int and thus causes an integer overflow.
+The result: too little memory is allocated and an heap overflow occurs.
+
+This patch was based by Niels Heinen <niels@freebsd.org>
+Thanks!
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+git-svn-id: svn://svn.berlios.de/slim/trunk@176 7c53e7cc-98ea-0310-8f1f-a0b24da60408
+---
+ const.h |    3 ++
+ jpeg.c  |   51 +++++++++++++++-----------
+ png.c   |  122 ++++++++++++++++++++++++++++++++------------------------------
+ 3 files changed, 96 insertions(+), 80 deletions(-)
+
+diff --git a/const.h b/const.h
+index df0989c..a18c6f3 100644
+--- a/const.h
++++ b/const.h
+@@ -42,4 +42,7 @@
+ // variables replaced in pre-session_cmd and post-session_cmd
+ #define USER_VAR       "%user"
+ 
++// max height/width for images
++#define MAX_DIMENSION 10000
++
+ #endif
+diff --git a/jpeg.c b/jpeg.c
+index 1cf106c..e1f8352 100644
+--- a/jpeg.c
++++ b/jpeg.c
+@@ -22,16 +22,22 @@
+ #include <string.h>
+ 
+ #include <jpeglib.h>
++#include "const.h"
+ 
+ int
+ read_jpeg(const char *filename, int *width, int *height, unsigned char **rgb)
+ {
++    int ret = 0;
+     struct jpeg_decompress_struct cinfo;
+     struct jpeg_error_mgr jerr;
+     unsigned char *ptr = NULL;
+     unsigned int i, ipos;
+ 
+     FILE *infile = fopen(filename, "rb");
++    if (infile == NULL) {
++        fprintf(stderr, "Can not fopen file: %s\n",filename);
++        return ret;
++    }
+ 
+     cinfo.err = jpeg_std_error(&jerr);
+     jpeg_create_decompress(&cinfo);
+@@ -39,43 +45,39 @@ read_jpeg(const char *filename, int *width, int *height, unsigned char **rgb)
+     jpeg_read_header(&cinfo, TRUE);
+     jpeg_start_decompress(&cinfo);
+ 
++    /* Prevent against integer overflow */
++    if(cinfo.output_width >= MAX_DIMENSION || cinfo.output_height >= MAX_DIMENSION) {
++        fprintf(stderr, "Unreasonable dimension found in file: %s\n",filename);
++        goto close_file;
++    }
++
+     *width = cinfo.output_width;
+     *height = cinfo.output_height;
+ 
+     rgb[0] = malloc(3 * cinfo.output_width * cinfo.output_height);
+-    if (rgb[0] == NULL)
+-    {
++    if (rgb[0] == NULL) {
+         fprintf(stderr, "Can't allocate memory for JPEG file.\n");
+-    fclose(infile);
+-        return(0);
++        goto close_file;
+     }
+ 
+-    if (cinfo.output_components == 3)
+-    {
++    if (cinfo.output_components == 3) {
+         ptr = rgb[0];
+-        while (cinfo.output_scanline < cinfo.output_height) 
+-        {
++        while (cinfo.output_scanline < cinfo.output_height) {
+             jpeg_read_scanlines(&cinfo, &ptr, 1);
+             ptr += 3 * cinfo.output_width;
+         }
+-    }
+-    else if (cinfo.output_components == 1)
+-    {
++    } else if (cinfo.output_components == 1) {
+         ptr = malloc(cinfo.output_width);
+-        if (ptr == NULL)
+-        {
++        if (ptr == NULL) {
+             fprintf(stderr, "Can't allocate memory for JPEG file.\n");
+-        fclose(infile);
+-            return(0);
++            goto rgb_free;
+         }
+ 
+         ipos = 0;
+-        while (cinfo.output_scanline < cinfo.output_height) 
+-        {
++        while (cinfo.output_scanline < cinfo.output_height) {
+             jpeg_read_scanlines(&cinfo, &ptr, 1);
+ 
+-            for (i = 0; i < cinfo.output_width; i++)
+-            {
++            for (i = 0; i < cinfo.output_width; i++) {
+                 memset(rgb[0] + ipos, ptr[i], 3);
+                 ipos += 3;
+             }
+@@ -85,9 +87,16 @@ read_jpeg(const char *filename, int *width, int *height, unsigned char **rgb)
+     }
+ 
+     jpeg_finish_decompress(&cinfo);
+-    jpeg_destroy_decompress(&cinfo);
+ 
++    ret = 1;
++    goto close_file;
++
++rgb_free:
++    free(rgb[0]);
++
++close_file:
++    jpeg_destroy_decompress(&cinfo);
+     fclose(infile);
+ 
+-    return(1);
++    return(ret);
+ }
+diff --git a/png.c b/png.c
+index a2661c6..5c086c6 100644
+--- a/png.c
++++ b/png.c
+@@ -22,12 +22,13 @@
+ #include <stdlib.h>
+ 
+ #include <png.h>
++#include "const.h"
+ 
+ int
+ read_png(const char *filename, int *width, int *height, unsigned char **rgb, 
+      unsigned char **alpha)
+ {
+-    FILE *infile = fopen(filename, "rb");
++    int ret = 0;
+ 
+     png_structp png_ptr;
+     png_infop info_ptr;
+@@ -38,31 +39,27 @@ read_png(const char *filename, int *width, int *height, unsigned char **rgb,
+     int bit_depth, color_type, interlace_type;
+     int i;
+ 
++    FILE *infile = fopen(filename, "rb");
++    if (infile == NULL) {
++        fprintf(stderr, "Can not fopen file: %s\n",filename);
++        return ret;
++    }
++
+     png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 
+                                      (png_voidp) NULL, 
+                                      (png_error_ptr) NULL, 
+                                      (png_error_ptr) NULL);
+-    if (!png_ptr) 
+-    {
+-        fclose(infile);
+-        return(0);
+-    }
++    if (!png_ptr)
++        goto file_close;
+   
+     info_ptr = png_create_info_struct(png_ptr);
+-    if (!info_ptr)
+-    {
++    if (!info_ptr) {
+         png_destroy_read_struct(&png_ptr, (png_infopp) NULL, 
+                                 (png_infopp) NULL);
+-        fclose(infile);
+-        return(0);
+     }
+   
+     if (setjmp(png_ptr->jmpbuf))
+-    {
+-        png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
+-        fclose(infile);
+-        return(0);
+-    }
++        goto png_destroy;
+   
+     png_init_io(png_ptr, infile);
+     png_read_info(png_ptr, info_ptr);
+@@ -70,18 +67,23 @@ read_png(const char *filename, int *width, int *height, unsigned char **rgb,
+     png_get_IHDR(png_ptr, info_ptr, &w, &h, &bit_depth, &color_type,
+                  &interlace_type, (int *) NULL, (int *) NULL);
+ 
++    /* Prevent against integer overflow */
++    if(w >= MAX_DIMENSION || h >= MAX_DIMENSION) {
++        fprintf(stderr, "Unreasonable dimension found in file: %s\n",filename);
++        goto png_destroy;
++    }
++
+     *width = (int) w;
+     *height = (int) h;
+     
+     if (color_type == PNG_COLOR_TYPE_RGB_ALPHA
+-    || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+-    {
+-    alpha[0] = malloc(*width * *height);
+-    if (alpha[0] == NULL)
+-    {
+-        fprintf(stderr, "Can't allocate memory for alpha channel in PNG file.\n");
+-        return(0); 
+-    }
++        || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
++        alpha[0] = malloc(*width * *height);
++        if (alpha[0] == NULL)
++        {
++            fprintf(stderr, "Can't allocate memory for alpha channel in PNG file.\n");
++            goto png_destroy;
++        }
+     }
+ 
+     /* Change a paletted/grayscale image to RGB */
+@@ -94,68 +96,70 @@ read_png(const char *filename, int *width, int *height, unsigned char **rgb,
+         png_set_gray_to_rgb(png_ptr);
+ 
+     /* If the PNG file has 16 bits per channel, strip them down to 8 */
+-    if (bit_depth == 16) png_set_strip_16(png_ptr);
++    if (bit_depth == 16)
++        png_set_strip_16(png_ptr);
+ 
+     /* use 1 byte per pixel */
+     png_set_packing(png_ptr);
+ 
+     row_pointers = malloc(*height * sizeof(png_bytep));
+-    if (row_pointers == NULL)
+-    {
++    if (row_pointers == NULL) {
+         fprintf(stderr, "Can't allocate memory for PNG file.\n");
+-        return(0);
++        goto png_destroy;
+     }
+ 
+-    for (i = 0; i < *height; i++)
+-    {
++    for (i = 0; i < *height; i++) {
+         row_pointers[i] = malloc(4 * *width);
+-        if (row_pointers == NULL)
+-        {
++        if (row_pointers == NULL) {
+             fprintf(stderr, "Can't allocate memory for PNG line.\n");
+-            return(0);
++            goto rows_free;
+         }
+     }
+ 
+     png_read_image(png_ptr, row_pointers);
+ 
+     rgb[0] = malloc(3 * *width * *height);
+-    if (rgb[0] == NULL)
+-    {
++    if (rgb[0] == NULL) {
+         fprintf(stderr, "Can't allocate memory for PNG file.\n");
+-        return(0);
++        goto rows_free;
+     }
+ 
+     if (alpha[0] == NULL)
+     {
+-    ptr = rgb[0];
+-    for (i = 0; i < *height; i++)
+-    {
+-        memcpy(ptr, row_pointers[i], 3 * *width);
+-        ptr += 3 * *width;
+-    }
+-    }
+-    else
+-    {
+-    int j;
+-    ptr = rgb[0];
+-    for (i = 0; i < *height; i++)
+-    {
+-        int ipos = 0;
+-        for (j = 0; j < *width; j++)
+-        {
+-        *ptr++ = row_pointers[i][ipos++];
+-        *ptr++ = row_pointers[i][ipos++];
+-        *ptr++ = row_pointers[i][ipos++];
+-        alpha[0][i * *width + j] = row_pointers[i][ipos++];
++        ptr = rgb[0];
++        for (i = 0; i < *height; i++) {
++            memcpy(ptr, row_pointers[i], 3 * *width);
++            ptr += 3 * *width;
++        }
++    } else {
++        int j;
++        ptr = rgb[0];
++        for (i = 0; i < *height; i++) {
++            int ipos = 0;
++            for (j = 0; j < *width; j++) {
++                *ptr++ = row_pointers[i][ipos++];
++                *ptr++ = row_pointers[i][ipos++];
++                *ptr++ = row_pointers[i][ipos++];
++                alpha[0][i * *width + j] = row_pointers[i][ipos++];
++            }
+         }
+-    }
+     }
+ 
+-    png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
++    ret = 1; /* data reading is OK */
++
++rows_free:
++    for (i = 0; i < *height; i++) {
++        if (row_pointers[i] != NULL ) {
++            free(row_pointers[i]);
++        }
++    }
+ 
+-    for (i = 0; i < *height; i++) free(row_pointers[i]);
+     free(row_pointers);
+ 
++png_destroy:
++    png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
++
++file_close:
+     fclose(infile);
+-    return(1);
++    return(ret);
+ }
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0003-Fix-build-failure-with-ld-as-needed.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0003-Fix-build-failure-with-ld-as-needed.patch
new file mode 100644
index 0000000..471c4f5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0003-Fix-build-failure-with-ld-as-needed.patch
@@ -0,0 +1,37 @@
+From 6aad913ddd5cdb473db9fa21a5e8ecec58de172b Mon Sep 17 00:00:00 2001
+From: iwamatsu <iwamatsu@7c53e7cc-98ea-0310-8f1f-a0b24da60408>
+Date: Wed, 12 Jan 2011 04:41:02 +0000
+Subject: [PATCH 3/8] Fix build failure with ld --as-needed.
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+git-svn-id: svn://svn.berlios.de/slim/trunk@177 7c53e7cc-98ea-0310-8f1f-a0b24da60408
+---
+ Makefile |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 1219de4..fafa0ef 100644
+--- a/Makefile
++++ b/Makefile
+@@ -4,7 +4,7 @@
+ # to fit into your operating system / distribution
+ #######################################################
+ CXX=/usr/bin/g++
+-CC=/usr/bin/gcc
++CC=/usr/bin/gcc-4.5
+ CFLAGS=-Wall -I. -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/libpng12 -I/usr/include
+ CXXFLAGS=$(CFLAGS)
+ LDFLAGS=-lXft -lX11 -lfreetype -lXrender -lfontconfig -lpng12 -lz -lm -lcrypt -lXmu -lpng -ljpeg -lrt
+@@ -33,7 +33,7 @@ endif
+ all: slim
+ 
+ slim: $(OBJECTS)
+-	$(CXX) $(LDFLAGS) $(OBJECTS) -o $(NAME)
++	$(CXX) $(OBJECTS) $(LDFLAGS) -o $(NAME)
+ 
+ .cpp.o:
+ 	$(CXX) $(CXXFLAGS) $(DEFINES) $(CUSTOM) -c $< -o $@
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0004-Add-support-libpng15.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0004-Add-support-libpng15.patch
new file mode 100644
index 0000000..f2087c0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0004-Add-support-libpng15.patch
@@ -0,0 +1,50 @@
+From c2067e8c16bfb721d339718ae0c99c70a994936b Mon Sep 17 00:00:00 2001
+From: iwamatsu <iwamatsu@7c53e7cc-98ea-0310-8f1f-a0b24da60408>
+Date: Fri, 17 Jun 2011 20:35:07 +0000
+Subject: [PATCH 4/8] Add support libpng15
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+git-svn-id: svn://svn.berlios.de/slim/trunk@178 7c53e7cc-98ea-0310-8f1f-a0b24da60408
+---
+ Makefile |    4 ++--
+ png.c    |    6 +++++-
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index fafa0ef..1202614 100644
+--- a/Makefile
++++ b/Makefile
+@@ -5,9 +5,9 @@
+ #######################################################
+ CXX=/usr/bin/g++
+ CC=/usr/bin/gcc-4.5
+-CFLAGS=-Wall -I. -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/libpng12 -I/usr/include
++CFLAGS=-Wall -I. -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include
+ CXXFLAGS=$(CFLAGS)
+-LDFLAGS=-lXft -lX11 -lfreetype -lXrender -lfontconfig -lpng12 -lz -lm -lcrypt -lXmu -lpng -ljpeg -lrt
++LDFLAGS=-lXft -lX11 -lfreetype -lXrender -lfontconfig -lpng -lz -lm -lcrypt -lXmu -lpng -ljpeg -lrt
+ CUSTOM=-DHAVE_SHADOW
+ ifdef USE_PAM
+ LDFLAGS+= -lpam
+diff --git a/png.c b/png.c
+index 5c086c6..aa0f5e5 100644
+--- a/png.c
++++ b/png.c
+@@ -57,8 +57,12 @@ read_png(const char *filename, int *width, int *height, unsigned char **rgb,
+         png_destroy_read_struct(&png_ptr, (png_infopp) NULL, 
+                                 (png_infopp) NULL);
+     }
+-  
++
++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
++	if (setjmp(png_jmpbuf((data->png_ptr))))
++#else
+     if (setjmp(png_ptr->jmpbuf))
++#endif
+         goto png_destroy;
+   
+     png_init_io(png_ptr, infile);
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0005-Remove-path-of-gcc-amd-g-and-version-of-g.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0005-Remove-path-of-gcc-amd-g-and-version-of-g.patch
new file mode 100644
index 0000000..566ae35
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0005-Remove-path-of-gcc-amd-g-and-version-of-g.patch
@@ -0,0 +1,30 @@
+From 4f69eb1aa85fbb395a0474b1f376505fab81ee22 Mon Sep 17 00:00:00 2001
+From: iwamatsu <iwamatsu@7c53e7cc-98ea-0310-8f1f-a0b24da60408>
+Date: Fri, 17 Jun 2011 20:35:10 +0000
+Subject: [PATCH 5/8] Remove path of gcc amd g++, and version of g++
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+git-svn-id: svn://svn.berlios.de/slim/trunk@179 7c53e7cc-98ea-0310-8f1f-a0b24da60408
+---
+ Makefile |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 1202614..5c5fde1 100644
+--- a/Makefile
++++ b/Makefile
+@@ -3,8 +3,8 @@
+ # Edit the following section to adjust the options
+ # to fit into your operating system / distribution
+ #######################################################
+-CXX=/usr/bin/g++
+-CC=/usr/bin/gcc-4.5
++CXX=g++
++CC=gcc
+ CFLAGS=-Wall -I. -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include
+ CXXFLAGS=$(CFLAGS)
+ LDFLAGS=-lXft -lX11 -lfreetype -lXrender -lfontconfig -lpng -lz -lm -lcrypt -lXmu -lpng -ljpeg -lrt
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0006-Remove-localhost-from-Authenticator-of-pam.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0006-Remove-localhost-from-Authenticator-of-pam.patch
new file mode 100644
index 0000000..a5b8125
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0006-Remove-localhost-from-Authenticator-of-pam.patch
@@ -0,0 +1,32 @@
+From e188d5fd3e3c0e40c3e35729fd8b81b138191a75 Mon Sep 17 00:00:00 2001
+From: iwamatsu <iwamatsu@7c53e7cc-98ea-0310-8f1f-a0b24da60408>
+Date: Fri, 17 Jun 2011 20:35:13 +0000
+Subject: [PATCH 6/8] Remove localhost from Authenticator of pam
+
+http://bugs.gentoo.org/346037
+https://developer.berlios.de/bugs/?func=detailbug&bug_id=17757&group_id=2663
+http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/x11-misc/slim/files/346037-stop_setting_host_for_pam_ck_connector_so.patch?view=log
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+git-svn-id: svn://svn.berlios.de/slim/trunk@180 7c53e7cc-98ea-0310-8f1f-a0b24da60408
+---
+ app.cpp |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+diff --git a/app.cpp b/app.cpp
+index c80a73e..7177363 100644
+--- a/app.cpp
++++ b/app.cpp
+@@ -236,8 +236,6 @@ void App::Run() {
+         pam.start("slim");
+         pam.set_item(PAM::Authenticator::TTY, DisplayName);
+         pam.set_item(PAM::Authenticator::Requestor, "root");
+-        pam.set_item(PAM::Authenticator::Host, "localhost");
+-
+     }
+     catch(PAM::Exception& e){
+         cerr << APPNAME << ": " << e << endl;
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0007-Fix-tty-slowness.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0007-Fix-tty-slowness.patch
new file mode 100644
index 0000000..fa2502b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0007-Fix-tty-slowness.patch
@@ -0,0 +1,47 @@
+From da172fd6234b3b2b487ab36d63da72758829cb1d Mon Sep 17 00:00:00 2001
+From: iwamatsu <iwamatsu@7c53e7cc-98ea-0310-8f1f-a0b24da60408>
+Date: Fri, 17 Jun 2011 20:35:15 +0000
+Subject: [PATCH 7/8] Fix tty slowness
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+git-svn-id: svn://svn.berlios.de/slim/trunk@181 7c53e7cc-98ea-0310-8f1f-a0b24da60408
+---
+ app.cpp |   10 ++++++----
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/app.cpp b/app.cpp
+index 7177363..44ab099 100644
+--- a/app.cpp
++++ b/app.cpp
+@@ -278,21 +278,23 @@ void App::Run() {
+         signal(SIGALRM, AlarmSignal);
+ 
+ #ifndef XNEST_DEBUG
+-        OpenLog();
+-        
+         if (!force_nodaemon && cfg->getOption("daemon") == "yes") {
+             daemonmode = true;
+         }
+ 
+         // Daemonize
+         if (daemonmode) {
+-            if (daemon(0, 1) == -1) {
++            if (daemon(0, 0) == -1) {
+                 cerr << APPNAME << ": " << strerror(errno) << endl;
+                 exit(ERR_EXIT);
+             }
+-            UpdatePid();
+         }
+ 
++        OpenLog();
++
++        if (daemonmode)
++            UpdatePid();
++
+         CreateServerAuth();
+         StartServer();
+         alarm(2);
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0008-restart-Xserver-if-killed.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0008-restart-Xserver-if-killed.patch
new file mode 100644
index 0000000..0c5cfb7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/0008-restart-Xserver-if-killed.patch
@@ -0,0 +1,161 @@
+From ee77a3d154443d2823ecbf2141daa1b5924f629f Mon Sep 17 00:00:00 2001
+From: iwamatsu <iwamatsu@7c53e7cc-98ea-0310-8f1f-a0b24da60408>
+Date: Fri, 17 Jun 2011 20:38:34 +0000
+Subject: [PATCH 8/8] restart Xserver if killed
+
+Patch from http://developer.berlios.de/patch/?func=detailpatch&patch_id=2378&group_id=2663.
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+git-svn-id: svn://svn.berlios.de/slim/trunk@182 7c53e7cc-98ea-0310-8f1f-a0b24da60408
+---
+ app.cpp |   36 +++++++++---------------------------
+ app.h   |    2 +-
+ 2 files changed, 10 insertions(+), 28 deletions(-)
+
+diff --git a/app.cpp b/app.cpp
+index 44ab099..358a98f 100644
+--- a/app.cpp
++++ b/app.cpp
+@@ -104,6 +104,11 @@ int conv(int num_msg, const struct pam_message **msg,
+ 
+ extern App* LoginApp;
+ 
++int xioerror(Display *disp) {
++	LoginApp->RestartServer();
++    return 0;
++}
++
+ void CatchSignal(int sig) {
+     cerr << APPNAME << ": unexpected signal " << sig << endl;
+ 
+@@ -114,19 +119,6 @@ void CatchSignal(int sig) {
+     exit(ERR_EXIT);
+ }
+ 
+-
+-void AlarmSignal(int sig) {
+-    int pid = LoginApp->GetServerPID();
+-    if(waitpid(pid, NULL, WNOHANG) == pid) {
+-        LoginApp->StopServer();
+-        LoginApp->RemoveLock();
+-        exit(OK_EXIT);
+-    }
+-    signal(sig, AlarmSignal);
+-    alarm(2);
+-}
+-
+-
+ void User1Signal(int sig) {
+     signal(sig, User1Signal);
+ }
+@@ -275,7 +267,6 @@ void App::Run() {
+         signal(SIGHUP, CatchSignal);
+         signal(SIGPIPE, CatchSignal);
+         signal(SIGUSR1, User1Signal);
+-        signal(SIGALRM, AlarmSignal);
+ 
+ #ifndef XNEST_DEBUG
+         if (!force_nodaemon && cfg->getOption("daemon") == "yes") {
+@@ -297,7 +288,6 @@ void App::Run() {
+ 
+         CreateServerAuth();
+         StartServer();
+-        alarm(2);
+ #endif
+ 
+     }
+@@ -613,6 +603,8 @@ void App::Login() {
+     int status;
+     while (wpid != pid) {
+         wpid = wait(&status);
++		if (wpid == ServerPID)
++			xioerror(Dpy);	// Server died, simulate IO error
+     }
+     if (WIFEXITED(status) && WEXITSTATUS(status)) {
+         LoginPanel->Message("Failed to execute login command");
+@@ -658,9 +650,6 @@ void App::Login() {
+ 
+ 
+ void App::Reboot() {
+-    // Stop alarm clock
+-    alarm(0);
+-
+ #ifdef USE_PAM
+     try{
+         pam.end();
+@@ -683,9 +672,6 @@ void App::Reboot() {
+ 
+ 
+ void App::Halt() {
+-    // Stop alarm clock
+-    alarm(0);
+-
+ #ifdef USE_PAM
+     try{
+         pam.end();
+@@ -771,6 +757,7 @@ void App::RestartServer() {
+ 
+     StopServer(); 
+     RemoveLock();
++	while (waitpid(-1, NULL, WNOHANG) > 0); // Collects all dead childrens
+     Run();
+ } 
+ 
+@@ -841,6 +828,7 @@ int App::WaitForServer() {
+ 
+     for(cycles = 0; cycles < ncycles; cycles++) {
+         if((Dpy = XOpenDisplay(DisplayName))) {
++            XSetIOErrorHandler(xioerror);
+             return 1;
+         } else {
+             if(!ServerTimeout(1, (char *) "X server to begin accepting connections"))
+@@ -925,9 +913,6 @@ int App::StartServer() {
+             ServerPID = -1;
+             break;
+         }
+-        alarm(15);
+-        pause();
+-        alarm(0);
+ 
+         // Wait for server to start up
+         if(WaitForServer() == 0) {
+@@ -962,15 +947,12 @@ int IgnoreXIO(Display *d) {
+ 
+ 
+ void App::StopServer() {
+-    // Stop alars clock and ignore signals
+-    alarm(0);
+     signal(SIGQUIT, SIG_IGN);
+     signal(SIGINT, SIG_IGN);
+     signal(SIGHUP, SIG_IGN);
+     signal(SIGPIPE, SIG_IGN);
+     signal(SIGTERM, SIG_DFL);
+     signal(SIGKILL, SIG_DFL);
+-    signal(SIGALRM, SIG_DFL);
+ 
+     // Catch X error
+     XSetIOErrorHandler(IgnoreXIO);
+diff --git a/app.h b/app.h
+index dd7c281..2db1038 100644
+--- a/app.h
++++ b/app.h
+@@ -34,6 +34,7 @@ public:
+     ~App();
+     void Run();
+     int GetServerPID();
++    void RestartServer();
+     void StopServer();
+ 
+ 	bool serverStarted;
+@@ -49,7 +50,6 @@ private:
+     void Console();
+     void Exit();
+     void KillAllClients(Bool top);
+-    void RestartServer();
+     void ReadConfig();
+     void OpenLog();
+     void CloseLog();
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/Makefile.oe b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/Makefile.oe
new file mode 100644
index 0000000..2ee6934
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/Makefile.oe
@@ -0,0 +1,64 @@
+# Makefile for slim - OpenEmbedded
+#######################################################
+
+
+SLIMLDFLAGS=-lXft -lX11 -lfreetype -lXrender -lfontconfig -lpng12 -lz -lm -lcrypt -lXmu -lpng -ljpeg -lrt -lpthread
+CUSTOM=-DHAVE_SHADOW
+
+USE_PAM=1
+ifdef USE_PAM
+SLIMLDFLAGS+= -lpam
+CUSTOM+= -DUSE_PAM
+endif
+
+#######################################################
+
+NAME=slim
+VERSION=1.3.2
+
+DEFINES=-DPACKAGE=\"$(NAME)\" -DVERSION=\"$(VERSION)\" \
+		-DPKGDATADIR=\"$(PREFIX)/share/slim\" -DSYSCONFDIR=\"$(CFGDIR)\"
+
+OBJECTS=jpeg.o png.o main.o image.o numlock.o cfg.o switchuser.o app.o \
+	panel.o util.o
+ifdef USE_PAM
+OBJECTS+=PAM.o
+endif
+
+all: slim
+
+slim: $(OBJECTS)
+	$(CXX) $(OBJECTS) $(LDFLAGS) $(SLIMLDFLAGS) -o $(NAME)
+
+.cpp.o:
+	$(CXX) $(CXXFLAGS) $(DEFINES) $(CUSTOM) -c $< -o $@
+
+.c.o:
+	$(CC) $(CFLAGS) $(DEFINES) $(CUSTOM) -c $< -o $@
+
+install: slim install-theme
+	install -D -m 755 slim $(DESTDIR)$(PREFIX)/bin/slim
+	install -D -m 644 slim.1 $(DESTDIR)$(MANDIR)/man1/slim.1
+	test -e $(DESTDIR)$(CFGDIR)/slim.conf || \
+		install -D -m 644 slim.conf $(DESTDIR)$(CFGDIR)/slim.conf
+
+clean:
+	@rm -f slim *.o
+
+dist:
+	@rm -rf $(NAME)-$(VERSION)
+	@mkdir $(NAME)-$(VERSION)
+	@cp -r *.cpp *.h *.c Makefile Makefile.* COPYING ChangeLog INSTALL README TODO \
+		xinitrc.sample slim.1 THEMES themes slim.conf $(NAME)-$(VERSION)
+	@rm -rf $(NAME)-$(VERSION)/themes/.svn	$(NAME)-$(VERSION)/themes/default/.svn
+	@tar cvzf $(NAME)-$(VERSION).tar.gz $(NAME)-$(VERSION)
+	@rm -rf $(NAME)-$(VERSION)
+
+
+install-theme:
+	install -D -m 644 themes/default/slim.theme \
+		 $(DESTDIR)$(PREFIX)/share/slim/themes/default/slim.theme
+	install -D -m 644 themes/default/panel.png \
+		 $(DESTDIR)$(PREFIX)/share/slim/themes/default/panel.png
+	install -D -m 644 themes/default/background.jpg \
+		 $(DESTDIR)$(PREFIX)/share/slim/themes/default/background.jpg
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/slim-dynwm b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/slim-dynwm
new file mode 100644
index 0000000..49c9d47
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/slim-dynwm
@@ -0,0 +1,8 @@
+#!/bin/sh
+update_slim_wmlist
+if [ "x$1" = "x-nodaemon" ]; then
+  shift
+  exec slim "$@"
+else
+  slim -d "$@"
+fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/slim.pamd b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/slim.pamd
new file mode 100644
index 0000000..80c34b1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/slim.pamd
@@ -0,0 +1,19 @@
+# Begin /etc/pam.d/slim
+
+auth       required     pam_shells.so
+auth       include      common-auth
+auth       optional     pam_securetty.so
+auth       optional     pam_gnome_keyring.so
+
+account    required     pam_nologin.so
+account    include      common-account
+
+password   include      common-password
+
+session    include      common-session
+session    required     pam_mkhomedir.so skel=/etc/skel/ umask=0022
+session    optional     pam_lastlog.so nowtmp
+session    optional     pam_mail.so dir=/var/mail standard
+session    optional     pam_gnome_keyring.so  auto_start
+
+# End /etc/pam.d/slim
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/slim.service b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/slim.service
new file mode 100644
index 0000000..341351a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/slim.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=SLiM Simple Login Manager
+Requires=dev-tty7.device
+After=dev-tty7.device systemd-user-sessions.service
+
+[Service]
+ExecStart=/usr/bin/slim -nodaemon
+StandardOutput=syslog
+
+[Install]
+WantedBy=graphical.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/update_slim_wmlist b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/update_slim_wmlist
new file mode 100644
index 0000000..0f11653
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim/update_slim_wmlist
@@ -0,0 +1,76 @@
+#!/usr/bin/perl -w
+#
+# update_slim_wmlist, based on:
+# update_wdm_wmlist, (c) 1998 Marcelo Magallón <mmagallo@debian.org>
+# rewriten to use the x-window-manager alternative
+# modified to also use the x-session-manager alternative by Arthur Korn
+# Copyright 2000 Wichert Akkerman <wakkerma@debian.org>
+# Modified to use the freedesktop.org .desktop like kdm and gdm
+#
+# This script will read the list of installed window managers from
+# the freedesktop .desktop files in <etc>/X11/sessions/:<etc>/dm/Sessions/:
+# <share>/xsessions/
+# and update the sessions line in /etc/slim.conf.
+# BEWARE: It doesn't ask any questions about this. It just does it. It
+# takes an optional list of window managers.
+
+use strict;
+use File::DesktopEntry;
+
+my $wm_list='';
+my %desktop_files;
+
+unless (@ARGV) {
+    #my @wm_list = ('default');
+    my @wm_list;
+    foreach my $dir ('/etc/X11/sessions/','/etc/dm/Sessions/','/usr/share/xsessions/') {
+	    next unless (opendir DIR, $dir);
+	    my @files;
+	    @files = grep { /\.desktop$/ && -r "$dir/$_" } readdir(DIR);
+	    foreach my $file (@files) {
+		   push @{$desktop_files{$file}}, "$dir/$file";
+	    }
+    }
+    DESKTOP: foreach my $desktop_file (keys(%desktop_files)) {
+	    foreach my $file (@{$desktop_files{$desktop_file}}) {
+		    my $entry = File::DesktopEntry->new_from_file($file);
+		    next DESKTOP if (defined($entry->get_value('Hidden'))
+			and $entry->get_value('Hidden') eq 'true');
+		    if ($entry->get_value('Name') =~ /^gnome$/i) {
+			    push (@wm_list, 'gnome');
+		    }
+		    elsif ($entry->get_value('Name') =~ /^kde$/i) {
+			    push (@wm_list, 'kde');
+		    }
+		    elsif (defined($entry->get_value('Exec'))) {
+			    push (@wm_list, $entry->get_value('Exec'));
+		    }
+		    else { # not found, go to next file
+			    next;
+		    }
+		    # found, proceed to next destop file
+		    next DESKTOP;
+	    }
+    }
+   $wm_list = join (',', sort @wm_list) . ',custom';
+} else {
+    $wm_list = join (',', sort @ARGV);
+}
+
+open (SLIM_CONFIG_FILE, '</etc/slim.conf')
+    or die "Can't open /etc/slim.conf for reading: $!";
+open (NEW_SLIM_CONFIG_FILE, '>/etc/slim.conf.new')
+    or die "Can't open /etc/slim.conf.new for writing: $!";
+
+while (<SLIM_CONFIG_FILE>) {
+    s|^(sessions\s*).*|$1$wm_list|;
+    print NEW_SLIM_CONFIG_FILE;
+}
+
+close(SLIM_CONFIG_FILE);
+close(NEW_SLIM_CONFIG_FILE);
+
+rename '/etc/slim.conf.new', '/etc/slim.conf'
+    or die "Can't rename /etc/slim.conf.new: $!";
+
+exit 0;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim_1.3.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim_1.3.2.bb
new file mode 100644
index 0000000..71359e0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/slim/slim_1.3.2.bb
@@ -0,0 +1,82 @@
+DESCRIPTION="Simple Login Manager"
+HOMEPAGE="http://slim.berlios.de"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+
+PR = "r1"
+
+DEPENDS = "virtual/libx11 libxmu libpng jpeg freetype sessreg ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+SRC_URI = " \
+    http://download.berlios.de/${BPN}/${BP}.tar.gz \
+    file://0002-Fix-image-handling-integer-overflows.patch \
+    file://0003-Fix-build-failure-with-ld-as-needed.patch \
+    file://0004-Add-support-libpng15.patch \
+    file://0005-Remove-path-of-gcc-amd-g-and-version-of-g.patch \
+    file://0006-Remove-localhost-from-Authenticator-of-pam.patch \
+    file://0007-Fix-tty-slowness.patch \
+    file://0008-restart-Xserver-if-killed.patch \
+    file://slim-dynwm \
+    file://update_slim_wmlist \
+    file://Makefile.oe \
+    file://slim.pamd \
+    file://slim.service \
+"
+
+SRC_URI[md5sum] = "ca1ae6120e6f4b4969f2d6cf94f47b42"
+SRC_URI[sha256sum] = "f1560125005f253b9b88220598fed7a9575ef405716862c6ca3fcc72dbd482b8"
+
+
+EXTRA_OEMAKE += " \
+    USE_PAM=${@bb.utils.contains('DISTRO_FEATURES', 'pam', '1', '0', d)} \
+    PREFIX=${prefix} \
+    CFGDIR=${sysconfdir} \
+    MANDIR=${mandir} \
+    DESTDIR=${D} \
+    CFLAGS+=-I${STAGING_INCDIR}/freetype2 \
+    CXXFLAGS+=-I${STAGING_INCDIR}/freetype2 \
+"
+
+do_compile_prepend() {
+    cp -pP ${WORKDIR}/Makefile.oe ${S}/Makefile
+}
+
+do_install() {
+    oe_runmake install
+    install -d ${D}${bindir}
+    install -m 0755 ${WORKDIR}/slim-dynwm ${D}${bindir}/
+    install -m 0755 ${WORKDIR}/update_slim_wmlist ${D}${bindir}/
+    install -d ${D}${sysconfdir}/pam.d/
+    install -m 0644 ${WORKDIR}/slim.pamd ${D}${sysconfdir}/pam.d/slim
+
+    install -d ${D}${systemd_unitdir}/system/
+    install -m 0644 ${WORKDIR}/*.service ${D}${systemd_unitdir}/system/
+
+    echo 'sessionstart_cmd    /usr/bin/sessreg -a -l $DISPLAY %user' >> ${D}${sysconfdir}/slim.conf
+    echo 'sessionstop_cmd     /usr/bin/sessreg -d -l $DISPLAY %user' >> ${D}${sysconfdir}/slim.conf
+}
+
+
+RDEPENDS_${PN} = "perl xauth freetype sessreg "
+FILES_${PN} += "${systemd_unitdir}/system/"
+
+pkg_postinst_${PN} () {
+if test "x$D" != "x"; then
+    exit 1
+fi
+systemctl enable slim.service
+
+# Register SLiM as default DM
+mkdir -p ${sysconfdir}/X11/
+echo "${bindir}/slim" > ${sysconfdir}/X11/default-display-manager
+}
+
+pkg_postrm_${PN} () {
+if test "x$D" != "x"; then
+    exit 1
+fi
+systemctl disable slim.service
+sed -i /slim/d $D${sysconfdir}/X11/default-display-manager || true
+}
+
+PNBLACKLIST[slim] ?= "does not build with distroless qemuarm as reported in 'State of bitbake world' thread, nobody volunteered to fix them"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/takao-fonts/takao-fonts_003.03.01.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/takao-fonts/takao-fonts_003.03.01.bb
new file mode 100644
index 0000000..d99ff14
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/takao-fonts/takao-fonts_003.03.01.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Takao Fonts are a community developed derivatives of IPA Fonts."
+DESCRIPTION = "Takao Fonts are a community developed derivatives of IPA Fonts."
+
+HOMEPAGE = "https://launchpad.net/takao-fonts"
+SECTION = "User Interface/X"
+
+LICENSE = "IPA"
+LIC_FILES_CHKSUM = "file://IPA_Font_License_Agreement_v1.0.txt;md5=6cd3351ba979cf9db1fad644e8221276"
+SRC_URI = "https://launchpad.net/${BPN}/trunk/15.03/+download/TakaoFonts_00303.01.tar.xz"
+SRC_URI[md5sum] = "8cd3fe724faa5034a9369e98cf108d2d"
+SRC_URI[sha256sum] = "e9871f72ac69acb3e277aebbee7ca01fbebf54800733e29fafdc46133fc3552f"
+
+S = "${WORKDIR}/TakaoFonts_00303.01"
+do_install() {
+    install -m 0755 -d ${D}/${datadir}/fonts
+    install -m 0644 -p ${S}/*.ttf ${D}/${datadir}/fonts/
+}
+
+FILES_${PN} += "${datadir}/fonts/*.ttf"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/terminus-font/terminus-font_4.38.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/terminus-font/terminus-font_4.38.bb
new file mode 100644
index 0000000..e5bea97
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/terminus-font/terminus-font_4.38.bb
@@ -0,0 +1,45 @@
+SUMMARY = "Terminus fonts packages (console and X11)"
+DESCRIPTION = "Terminus Font is a clean, fixed width bitmap font, designed for \
+               long (8 and more hours per day) work with computers."
+HOMEPAGE = "http://terminus-font.sourceforge.net/"
+AUTHOR = "Dimitar Zhekov"
+SECTION = "fonts"
+
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://OFL.TXT;md5=9cadb26f4c5c005618c5ae74f041ec54"
+
+DEPENDS = "hostperl-runtime-native gzip-native"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "a8e792fe6e84c86ed2b6ed3e2a12ba66"
+SRC_URI[sha256sum] = "f6f4876a4dabe6a37c270c20bb9e141e38fb50e0bba200e1b9d0470e5eed97b7"
+
+inherit allarch fontcache
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG[x11] = ""
+
+# Don't use font cache mecanism for console packages
+FONT_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'x11', '${PN}-pcf', '', d)}"
+
+# Hand made configure script. Don't need oe_runconf
+do_configure() {
+    chmod +x ${S}/configure
+    ${S}/configure --prefix=${prefix} \
+                   --psfdir=${datadir}/consolefonts \
+                   --acmdir=${datadir}/consoletrans \
+                   --x11dir=${datadir}/fonts/terminus
+}
+
+do_compile() {
+    oe_runmake DESTDIR=${D} psf txt ${@bb.utils.contains('PACKAGECONFIG', 'x11', 'pcf', '', d)}
+}
+
+do_install() {
+    oe_runmake DESTDIR=${D} install-psf install-acm ${@bb.utils.contains('PACKAGECONFIG', 'x11', 'install-pcf', '', d)}
+}
+
+PACKAGES += "${PN}-consolefonts ${PN}-consoletrans ${PN}-pcf"
+FILES_${PN}-consolefonts = "${datadir}/consolefonts"
+FILES_${PN}-consoletrans = "${datadir}/consoletrans"
+FILES_${PN}-pcf = "${datadir}/fonts/terminus"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-afr_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-afr_3.02.bb
new file mode 100644
index 0000000..0c73a53
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-afr_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "afr"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "16a756bf353896e34386f4509582e487"
+SRC_URI[sha256sum] = "371399ce6700f28d04ccfc12e421f315e356e3aa26575b27d06083c06987784d"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ara_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ara_3.02.bb
new file mode 100644
index 0000000..fb68bdc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ara_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "ara"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "d7b3708f1f1f2898c258209923063f57"
+SRC_URI[sha256sum] = "2c7be319c30e93950c121897969c1bc1eb1d6bdceb75f1184ee34a6f01d66b6a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-aze_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-aze_3.02.bb
new file mode 100644
index 0000000..21ed3d3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-aze_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "aze"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "143044ff7b643b844c2f0b2a170ceda2"
+SRC_URI[sha256sum] = "0f17a06a163d97ec23db3ab14b91b84a67aeba1e441ca5e53a8632b2110a0e79"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-bel_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-bel_3.02.bb
new file mode 100644
index 0000000..5f88301
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-bel_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "bel"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "3bb6dab515166d641ac62e973c868ac5"
+SRC_URI[sha256sum] = "e59e008c542f786f6f7bd14c6608b2c128c9297d6bede647ae357f7421f7a3e7"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ben_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ben_3.02.bb
new file mode 100644
index 0000000..673fd42
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ben_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "ben"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "0b662630eb4b2e0ebf40c38184068fba"
+SRC_URI[sha256sum] = "14a87e0762dcee0cd95acfd3b370b81fd14a003d39328ed97db0b28c55d31e50"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-bul_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-bul_3.02.bb
new file mode 100644
index 0000000..4988fc2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-bul_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "bul"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "91fc34ef041aafe32549a7a6232afad0"
+SRC_URI[sha256sum] = "1b8b4d7b12d896cf9f7e60e8e3274d3891886544253d41681dd9b32d6567e3f3"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-cat_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-cat_3.02.bb
new file mode 100644
index 0000000..ec3fa74
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-cat_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "cat"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "27b77ecc66f8c8d904cd6b87886aca22"
+SRC_URI[sha256sum] = "894af4c718e821cdc4ae3ec65838b174ac8a003e5417a08557698e1576ac3a34"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ces_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ces_3.02.bb
new file mode 100644
index 0000000..d58d0e8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ces_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "ces"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "ae144b9d230267b5ae62804ad7a09dac"
+SRC_URI[sha256sum] = "843522eddcd0e2059a1c7069183b68c2459d527157bc47833a79b6ff56bb09de"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-chi-sim_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-chi-sim_3.02.bb
new file mode 100644
index 0000000..8469801
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-chi-sim_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "chi_sim"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "718779539d3202ae95ae5ff52a3ad5e8"
+SRC_URI[sha256sum] = "f5b196b5bea6917bcbbf15131b4c2afe94d34c2d9e21d08c0ca42dfbe5aa1095"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-chi-tra_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-chi-tra_3.02.bb
new file mode 100644
index 0000000..1c4d98d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-chi-tra_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "chi_tra"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "391ed3fcf014bae777b33dc7a771a00d"
+SRC_URI[sha256sum] = "78742e273a9ca74a6ab5543414e04bcac90d03a317dd35edc634956beafa3d20"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-chr_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-chr_3.02.bb
new file mode 100644
index 0000000..7aa6cc5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-chr_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "chr"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "dd5b4fa247500d7713ab5556af62d9fa"
+SRC_URI[sha256sum] = "27c917ba39898d63752b2a4ecb0cd8f688772bcbbae2bf430a93d894d328a4c1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-dan_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-dan_3.02.bb
new file mode 100644
index 0000000..5af3f79
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-dan_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "dan"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "2f6a93920b3ce55de24ca762a66a5de1"
+SRC_URI[sha256sum] = "deb93f6326aa8a4d353159201681947a808577662084d4060daea7d644e63eb9"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-deu_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-deu_3.02.bb
new file mode 100644
index 0000000..4d68fd9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-deu_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "deu"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "57bdb26ec7c767e126ff97776d8bfb10"
+SRC_URI[sha256sum] = "d03cdd0b00d368ff49ebaf77b8758bcf2ff1b0d39331368987e622ac261443ca"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ell_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ell_3.02.bb
new file mode 100644
index 0000000..be4b90e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ell_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "ell"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "3760cc3dee6489dcc865b31e7a36bd47"
+SRC_URI[sha256sum] = "29745ced8fbfb4ec9abebeb99e4b385821cb5eb0ed81fb1870b93543553b8fba"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-eng_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-eng_3.02.bb
new file mode 100644
index 0000000..ce15a2d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-eng_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "eng"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "3562250fe6f4e76229a329166b8ae853"
+SRC_URI[sha256sum] = "c110029560e7f6d41cb852ca23b66899daa4456d9afeeae9d062204bd271bdf8"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-enm_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-enm_3.02.bb
new file mode 100644
index 0000000..5f1531f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-enm_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "enm"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "d9dc4ad9cbcde78e5be59eb226865661"
+SRC_URI[sha256sum] = "19c9bd89c823451655e3f265b7fcd06727cd36ddec01b8fad9900159b688a1e3"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-epo-alt_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-epo-alt_3.02.bb
new file mode 100644
index 0000000..0469ea6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-epo-alt_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "epo_alt"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "67815529386679223092ddf301bf57d4"
+SRC_URI[sha256sum] = "e516b8362fa060be720d2768a8abbee9cc965b9162249c5914ef1d8159e03dc2"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-epo_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-epo_3.02.bb
new file mode 100644
index 0000000..7f42502
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-epo_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "epo"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "5dc0cf01d21ee43ed834ee947e1e810a"
+SRC_URI[sha256sum] = "22ae681c34ee7aa825994115f927c2e1f8ec1a98c97c01218b98d2549af22252"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-equ_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-equ_3.02.bb
new file mode 100644
index 0000000..f4d81bb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-equ_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "equ"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "94667836c651fc4fd43645efdc34e19a"
+SRC_URI[sha256sum] = "2010e724686171ef2eb3388df00d8d89ba7e50cb2298b0368b847fffb95d804e"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-est_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-est_3.02.bb
new file mode 100644
index 0000000..adfe25c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-est_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "est"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "a067f5975cbe83fea205897187fa256b"
+SRC_URI[sha256sum] = "d5d6b9d4b567a10e2f63cafd2f60bf5b0c994e415470becafd729b20349e2e80"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-eus_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-eus_3.02.bb
new file mode 100644
index 0000000..a22bcac
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-eus_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "eus"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "4c2cee5bf3558f6384e5907aa02ae80c"
+SRC_URI[sha256sum] = "78359d57896623cf8211e17604a9dfa574e2253c9157035f439c5fbe06cd5019"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-fin_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-fin_3.02.bb
new file mode 100644
index 0000000..e8a55e2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-fin_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "fin"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "71f8b343ed2010f775ff474faec5874f"
+SRC_URI[sha256sum] = "e02ff1798960d3af15c0dafafac0de954442cfb13f4eff45c3263c2ff6e59026"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-fra_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-fra_3.02.bb
new file mode 100644
index 0000000..22c9261
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-fra_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "fra"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "2bca200b783fdba2f546063c68740c50"
+SRC_URI[sha256sum] = "74592f5f2ab73a6668934922753be0505fc4333ee790543949f8b70f03eab101"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-frk_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-frk_3.02.bb
new file mode 100644
index 0000000..f75b96a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-frk_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "frk"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "dd734ac212a98a02945760891b657e70"
+SRC_URI[sha256sum] = "a9f4219d6b2ef4ed8b76c86be99ae3c9190509df72ba6f0217a77f7205ec52f8"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-frm_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-frm_3.02.bb
new file mode 100644
index 0000000..d0d1398
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-frm_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "frm"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "e0ca24ca45de83e67057f0e208233ffc"
+SRC_URI[sha256sum] = "f32f774d88e7936f16ff41b832cecfbd71f82c9bf7584330d750da941c07ca79"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-glg_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-glg_3.02.bb
new file mode 100644
index 0000000..b94fd03
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-glg_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "glg"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "ef7b8e13891e08f29b02011a5dd6b630"
+SRC_URI[sha256sum] = "82ffa27c4de17545fa9d46e0fcd5690b1b59bcce9e93f71c0a41d19afbe869ee"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-grc_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-grc_3.02.bb
new file mode 100644
index 0000000..16c9605
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-grc_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "grc"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "ac493e5a49e456f2dd354f5b6449573e"
+SRC_URI[sha256sum] = "586b955eb9fba5a304cfa37bfdd7c89f2db33335d5ae83f2962aed8903266805"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-heb_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-heb_3.02.bb
new file mode 100644
index 0000000..9d7a4fa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-heb_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "heb"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "7ae7f3384083c66f06d63b6c0f0a66c3"
+SRC_URI[sha256sum] = "da47b0cfe241775c9b36339efda6339d59e146fa6143c65a2253eb9f67164811"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-hin_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-hin_3.02.bb
new file mode 100644
index 0000000..d3ed173
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-hin_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "hin"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "186f17b326a58313344c2ea987ea7785"
+SRC_URI[sha256sum] = "91f91da5adc73ee71150865d6598df8a50424350480df2753ca9035320b3c78d"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-hrv_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-hrv_3.02.bb
new file mode 100644
index 0000000..7423687
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-hrv_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "hrv"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "0396a267d894f485b6b534476f3322dc"
+SRC_URI[sha256sum] = "e20575f5b0ec73ff7f3197c112a8dcc24303b64016910399d9127bda42e7d866"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-hun_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-hun_3.02.bb
new file mode 100644
index 0000000..61a9ce6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-hun_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "hun"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "eb1b3537cd664fec48bebac75fac5992"
+SRC_URI[sha256sum] = "edf5cc42b516b2a18681955167d1964dfc7ff8cda642408ebda91b3c4656f9f1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ind_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ind_3.02.bb
new file mode 100644
index 0000000..6776952
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ind_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "ind"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "9f672ea7c90eecbbe35ec353ff45c764"
+SRC_URI[sha256sum] = "337ba4400a798c60dee16070071337c96fc67bcb4e2cc1b4676dcbc340fbbcd7"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-isl_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-isl_3.02.bb
new file mode 100644
index 0000000..7fa188f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-isl_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "isl"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "3f05946a9e57a8ffabb3fccc8a80cfaa"
+SRC_URI[sha256sum] = "6b226366d8d2d87f859d4099e8b715e3ec3890f9317198e7b8c80fba001055f8"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ita-old_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ita-old_3.02.bb
new file mode 100644
index 0000000..be4ad3e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ita-old_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "ita_old"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "989ca558eb05fcf6873dfdd8c692291d"
+SRC_URI[sha256sum] = "caf591be6d4eda9e7627397c3c520d58115c660002ecace680749504348ba104"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ita_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ita_3.02.bb
new file mode 100644
index 0000000..581977a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ita_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "ita"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "fbdba86f34b907f5a709051c01b53f71"
+SRC_URI[sha256sum] = "26453b302c108e08f594c7a19597382314529f648e141805417f9af1e4c99ac2"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-jpn_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-jpn_3.02.bb
new file mode 100644
index 0000000..269bdef
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-jpn_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "jpn"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "e1be2b08e667c3bb0ab0f18c9456bf2f"
+SRC_URI[sha256sum] = "09bf447a29e990c065024b3b720fd70f08d596a7be534312fc9e47d0aabf681f"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-kan_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-kan_3.02.bb
new file mode 100644
index 0000000..2d21085
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-kan_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "kan"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "510016e85d7ea8e1f4ebf98741138909"
+SRC_URI[sha256sum] = "15851cc22058c08cad9ec6058113f76966409061f21f5cde8c9cc1d214298c22"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-kor_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-kor_3.02.bb
new file mode 100644
index 0000000..617d199
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-kor_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "kor"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "fc9125f6652fb661575d6e15c94f88f6"
+SRC_URI[sha256sum] = "7c85c4107a781d90d6d4adb001f2189b113f9db6942618b4bc47f4cc80cd126a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-lav_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-lav_3.02.bb
new file mode 100644
index 0000000..c207504
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-lav_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "lav"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "2095b56c9c6b0dba9b837fd226ed6d29"
+SRC_URI[sha256sum] = "e6a190ee1edf0a58948a9d7b01569fd8a4c05bc678da3a40ad884c0849958c36"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-lit_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-lit_3.02.bb
new file mode 100644
index 0000000..83ad480
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-lit_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "lit"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "801021a1ad6e4aa3ef697f065ff6c798"
+SRC_URI[sha256sum] = "350891a182076df2e8067da04b3b2127a77e48782d9905e8339db4f1d6c7a729"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-mal_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-mal_3.02.bb
new file mode 100644
index 0000000..571385e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-mal_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "mal"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "1f5e8f022d3c2697075bdfc03935f128"
+SRC_URI[sha256sum] = "72b3b23979ae4a6b63518964bf239beae8bb6c02f35a2695f47262178b3fef34"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-mkd_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-mkd_3.02.bb
new file mode 100644
index 0000000..ad1eaff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-mkd_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "mkd"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "b8930c64befcaadbb47951cad4a2f075"
+SRC_URI[sha256sum] = "ea489277e7a588a1b7566a21cbbd647786f16659cae087a4705d4fdabd823ee6"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-mlt_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-mlt_3.02.bb
new file mode 100644
index 0000000..4a6d42d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-mlt_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "mlt"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "90a41ac86375b230980b643b35b88011"
+SRC_URI[sha256sum] = "ba99e8bfc753a274bbea38ef44f5abf81e5f12d09f9d12d267436961270ef2de"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-msa_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-msa_3.02.bb
new file mode 100644
index 0000000..8418ab6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-msa_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "msa"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "cb42ec9504eecdc4f974dbca4387ac34"
+SRC_URI[sha256sum] = "f34e4950ad9079f92965a234253cc16f92deb66f1ce4e9c9a885ad2695c2d136"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-nld_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-nld_3.02.bb
new file mode 100644
index 0000000..412d4a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-nld_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "nld"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "6db5753b3b03296544bbb2c0f59a7178"
+SRC_URI[sha256sum] = "5e2e53499a05282968e5a9699aad66ae52a5abf06ae828e2f4cf2c1f6e674a98"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-nor_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-nor_3.02.bb
new file mode 100644
index 0000000..75d2940
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-nor_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "nor"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "6d979585abb07c13dda003820129461c"
+SRC_URI[sha256sum] = "6b5c42444595a81b5f6fea859d97999895917bcc2f85a505488ea5c2f4efa01a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-pol_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-pol_3.02.bb
new file mode 100644
index 0000000..5858013
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-pol_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "pol"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "90b3f1f4113a9dccd0287e6b5b7512d6"
+SRC_URI[sha256sum] = "62999058bfb609d95d53bd519c6de99620d025b3bfbc54d8679a87b10474ccbb"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-por_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-por_3.02.bb
new file mode 100644
index 0000000..75f0139
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-por_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "por"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "ad490a8091ee329190266f3fd057c511"
+SRC_URI[sha256sum] = "f9b126323757c62da23aab163e2ce5257d137e86be7c37dea13bb0585e1ace3f"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ron_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ron_3.02.bb
new file mode 100644
index 0000000..3c8940a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ron_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "ron"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "9f498e01855a57473af8f083c125455a"
+SRC_URI[sha256sum] = "d7e6454c9cc80c84a654f94283fc06b2df33c5c7fd2d3bff269c3cbdeb0b39e7"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-rus_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-rus_3.02.bb
new file mode 100644
index 0000000..e1dd3f1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-rus_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "rus"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "e8c785df8aaa49e61f3a95aa24066122"
+SRC_URI[sha256sum] = "091cda49489d15f33916263fc78fbf8dcd4e6547012dc7e1a8496a38ab192315"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-slk_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-slk_3.02.bb
new file mode 100644
index 0000000..241b038
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-slk_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "slk"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "991e4771e16abd6a66caeaeeb2a4d4d2"
+SRC_URI[sha256sum] = "cbd5a88e2188ef39ef438c9859dbd7a9b9e2a99c23a823ec310f7f84a012cc82"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-slv_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-slv_3.02.bb
new file mode 100644
index 0000000..0b08210
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-slv_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "slv"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "c7bea975ba663d13e03c29d6cf33b5a8"
+SRC_URI[sha256sum] = "b901507d2901c882f98f6ef5db07dbf74636fba6a1f616c5f094954106791667"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-spa-old_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-spa-old_3.02.bb
new file mode 100644
index 0000000..79be8a3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-spa-old_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "spa_old"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "7838da948e404bb760bef83a5c3d64dd"
+SRC_URI[sha256sum] = "2b980c0eda1572423dd56260b32d748288028fdd45266311c4ab448fcbce5814"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-spa_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-spa_3.02.bb
new file mode 100644
index 0000000..8790ee5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-spa_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "spa"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "fe1385ed203ecd9e0999a44b135069ec"
+SRC_URI[sha256sum] = "f40cc264d037b0c71ecb4a8bb6def8b3ec04b647d8da7fd44d0daa558bfa31b1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-sqi_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-sqi_3.02.bb
new file mode 100644
index 0000000..8e923a9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-sqi_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "sqi"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "372e38617fcc7e25c77996c5499ae063"
+SRC_URI[sha256sum] = "99bfcda3e0c471f63b36cd0db7dea596e59a2219c9275c3ba51e59973555c101"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-srp_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-srp_3.02.bb
new file mode 100644
index 0000000..18676c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-srp_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "srp"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "d8350668fa790b5d4007348a55840bdf"
+SRC_URI[sha256sum] = "b1eeeb2958d0a4e2ba16fb55a98ca4ca8e69fee8b0be8162ff599ba19d0b2404"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-swa_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-swa_3.02.bb
new file mode 100644
index 0000000..2b9960f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-swa_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "swa"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "6c68107a71f82fa42c858e4d6dc70aca"
+SRC_URI[sha256sum] = "2681e59f2a9333259a2de42f3deed46aa7dd84b638e6927f40db0409adff143b"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-swe_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-swe_3.02.bb
new file mode 100644
index 0000000..7fd1c1d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-swe_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "swe"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "46d3a5d7159236edb33272dd8b1090f6"
+SRC_URI[sha256sum] = "ada287d7b64183df906215fe4ca86c3b6fe30dc5121e9a83113c3265ca7fc5ae"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tam_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tam_3.02.bb
new file mode 100644
index 0000000..fcfc1fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tam_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "tam"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "c68b0fdcdf34dd431c25f323673ef1d6"
+SRC_URI[sha256sum] = "75f73362421a23eb955212f7aa19c9a3efdc80a4c6761445869148bfd2a6dc62"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tel_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tel_3.02.bb
new file mode 100644
index 0000000..fb827ed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tel_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "tel"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "349d203ef88864eab8d1201672ca84be"
+SRC_URI[sha256sum] = "f36af3d5ca9f8ff6e606485fe5db835f96b42e7d2380ac5d61af6b41827834fd"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tgl_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tgl_3.02.bb
new file mode 100644
index 0000000..8c84ed9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tgl_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "tgl"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "d458f0719b99e4dcfd4fa2a06e5150a3"
+SRC_URI[sha256sum] = "5c515310df83c9b40e557027e49de6df70e33a9bbabeaf1301ca9e8c13558948"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tha_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tha_3.02.bb
new file mode 100644
index 0000000..06055d1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tha_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "tha"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "3dc5a5028e75da12eaba62669a80acc4"
+SRC_URI[sha256sum] = "7a98e25e0c61dda48cbdb241f0f53c3dfaa7ef574b81799ab2ddac50da6db4fb"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tur_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tur_3.02.bb
new file mode 100644
index 0000000..f5ec76f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-tur_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "tur"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "a8934e0e6496997112cbef2961adef5e"
+SRC_URI[sha256sum] = "fe4657ca3455585a06eb3d02b4a0472fda8ca06efe587be75e175662dc6329d7"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ukr_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ukr_3.02.bb
new file mode 100644
index 0000000..25de06a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-ukr_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "ukr"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "0aa61f18463bb89234a6d06fcbf0c644"
+SRC_URI[sha256sum] = "7862b10c1ff7e02b41c7a50eec7fccd2c30b8162d965fa1ae00510c6d1210762"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-vie_3.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-vie_3.02.bb
new file mode 100644
index 0000000..6bd813e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang-vie_3.02.bb
@@ -0,0 +1,9 @@
+# Copyright (C) 2014, O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license (see meta-openembedded layer's COPYING.MIT)
+
+TESSERACT_LANG = "vie"
+
+require tesseract-lang.inc
+
+SRC_URI[md5sum] = "78a74432848b4c53cc2ccf2eb339c0b6"
+SRC_URI[sha256sum] = "a113254882eac70168aec00544805e7c9cec20527217b98349ed48f6e2d2611e"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang.inc b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang.inc
new file mode 100644
index 0000000..c40c71d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang.inc
@@ -0,0 +1,15 @@
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+SRC_URI = "https://tesseract-ocr.googlecode.com/files/tesseract-ocr-${PV}.${TESSERACT_LANG}.tar.gz"
+
+S = "${WORKDIR}/tesseract-ocr"
+
+inherit allarch
+
+do_install() {
+    install -d ${D}${datadir}/tessdata
+    cp ${S}/tessdata/${TESSERACT_LANG}.traineddata ${D}${datadir}/tessdata
+}
+
+FILES_${PN} += "${datadir}/tessdata"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract_3.02.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract_3.02.02.bb
new file mode 100644
index 0000000..652bcf2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract_3.02.02.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "A commercial quality OCR engine "
+
+DEPENDS = "leptonica"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c0c94b3c86ad0c386bb6dec70ca8a36a"
+
+SRC_URI = "https://tesseract-ocr.googlecode.com/files/tesseract-ocr-${PV}.tar.gz"
+SRC_URI[md5sum] = "26adc8154f0e815053816825dde246e6"
+SRC_URI[sha256sum] = "26cd39cb3f2a6f6f1bf4050d1cc0aae35edee49eb49a92df3cb7f9487caa013d"
+
+EXTRA_OECONF += "LIBLEPT_HEADERSDIR=${STAGING_INCDIR}/leptonica"
+
+S = "${WORKDIR}/tesseract-ocr"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${datadir}/tessdata"
+
+RRECOMMENDS_${PN} += "tesseract-lang-eng"
+
+# http://errors.yoctoproject.org/Errors/Details/35134/
+PNBLACKLIST[tesseract] ?= "BROKEN: QA Issue: tesseract.pc failed sanity test (tmpdir)"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-cn-fonts/44-source-han-sans-cn.conf b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-cn-fonts/44-source-han-sans-cn.conf
new file mode 100644
index 0000000..6855791
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-cn-fonts/44-source-han-sans-cn.conf
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<fontconfig>
+	<!-- 
+	    - Medium variant is used instead of Regular on Qt apps:
+		https://bugs.launchpad.net/ubuntu-font-family/+bug/744812
+		- Medium and Bold looks the same in certain applications:
+		https://bugs.launchpad.net/ubuntu/+source/gnome-specimen/+bug/813373
+	-->
+	<match target="scan">
+		<test name="fullname" compare="eq">
+			<string>Source Han Sans CN Medium</string>
+		</test>
+		<edit name="weight" mode="assign">
+			<const>demibold</const>
+		</edit>
+	</match>
+</fontconfig>
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-cn-fonts_1.004.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-cn-fonts_1.004.bb
new file mode 100644
index 0000000..9fbfc8b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-cn-fonts_1.004.bb
@@ -0,0 +1,34 @@
+require ttf.inc
+
+SUMMARY = "Adobe OpenType Pan-CJK font family for Simplified Chinese"
+HOMEPAGE = "https://github.com/adobe-fonts/source-han-sans"
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=55719faa0112708e946b820b24b14097"
+
+inherit allarch fontcache
+
+# Download tends to break - so - or not?
+#EXCLUDE_FROM_WORLD = "1"
+
+SRC_URI = " \
+    https://github.com/adobe-fonts/source-han-sans/raw/release/SubsetOTF/SourceHanSansCN.zip \
+    file://44-source-han-sans-cn.conf \
+"
+SRC_URI[md5sum] = "d16abc21f6575bb08894efedbed484a2"
+SRC_URI[sha256sum] = "0a0e1d8e52833bc352d454d8242da03b82c0efc41323fb66f7435e5b39734a4f"
+
+S = "${WORKDIR}/SourceHanSansCN"
+
+do_install() {
+    install -d ${D}${sysconfdir}/fonts/conf.d/
+    install -m 0644 ${WORKDIR}/44-source-han-sans-cn.conf ${D}${sysconfdir}/fonts/conf.d/
+
+    install -d ${D}${datadir}/fonts/truetype/
+    find ./ -name '*.otf' -exec install -m 0644 {} ${D}${datadir}/fonts/truetype/ \;
+}
+
+FILES_${PN} = " \
+    ${sysconfdir}/fonts \
+    ${datadir}/fonts \
+"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-jp-fonts/44-source-han-sans-jp.conf b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-jp-fonts/44-source-han-sans-jp.conf
new file mode 100644
index 0000000..a7a93fe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-jp-fonts/44-source-han-sans-jp.conf
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<fontconfig>
+    <!-- 
+        - Medium variant is used instead of Regular on Qt apps:
+        https://bugs.launchpad.net/ubuntu-font-family/+bug/744812
+        - Medium and Bold looks the same in certain applications:
+        https://bugs.launchpad.net/ubuntu/+source/gnome-specimen/+bug/813373
+    -->
+    <match target="scan">
+        <test name="fullname" compare="eq">
+            <string>Source Han Sans JP Medium</string>
+        </test>
+        <edit name="weight" mode="assign">
+            <const>demibold</const>
+        </edit>
+    </match>
+</fontconfig>
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-jp-fonts_1.004.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-jp-fonts_1.004.bb
new file mode 100644
index 0000000..4a26a2f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-jp-fonts_1.004.bb
@@ -0,0 +1,34 @@
+require ttf.inc
+
+SUMMARY = "Adobe OpenType Pan-CJK font family for Japanese"
+HOMEPAGE = "https://github.com/adobe-fonts/source-han-sans"
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=55719faa0112708e946b820b24b14097"
+
+inherit allarch fontcache
+
+# Download tends to break - so - or not?
+#EXCLUDE_FROM_WORLD = "1"
+
+SRC_URI = " \
+    https://github.com/adobe-fonts/source-han-sans/raw/release/SubsetOTF/SourceHanSansJP.zip \
+    file://44-source-han-sans-jp.conf \
+"
+SRC_URI[md5sum] = "908fbf97f3df04a6838708c093f1e900"
+SRC_URI[sha256sum] = "dc6dbae3fba35f220bac88ba7130b826c7efe1282f472788fae3628b79be3f54"
+
+S = "${WORKDIR}/SourceHanSansJP"
+
+do_install() {
+    install -d ${D}${sysconfdir}/fonts/conf.d/
+    install -m 0644 ${WORKDIR}/44-source-han-sans-jp.conf ${D}${sysconfdir}/fonts/conf.d/
+
+    install -d ${D}${datadir}/fonts/truetype/
+    find ./ -name '*.otf' -exec install -m 0644 {} ${D}${datadir}/fonts/truetype/ \;
+}
+
+FILES_${PN} = " \
+    ${sysconfdir}/fonts \
+    ${datadir}/fonts \
+"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-kr-fonts/44-source-han-sans-kr.conf b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-kr-fonts/44-source-han-sans-kr.conf
new file mode 100644
index 0000000..dee73ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-kr-fonts/44-source-han-sans-kr.conf
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<fontconfig>
+    <!-- 
+        - Medium variant is used instead of Regular on Qt apps:
+        https://bugs.launchpad.net/ubuntu-font-family/+bug/744812
+        - Medium and Bold looks the same in certain applications:
+        https://bugs.launchpad.net/ubuntu/+source/gnome-specimen/+bug/813373
+    -->
+    <match target="scan">
+        <test name="fullname" compare="eq">
+            <string>Source Han Sans KR Medium</string>
+        </test>
+        <edit name="weight" mode="assign">
+            <const>demibold</const>
+        </edit>
+    </match>
+</fontconfig>
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-kr-fonts_1.004.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-kr-fonts_1.004.bb
new file mode 100644
index 0000000..c91d167
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-kr-fonts_1.004.bb
@@ -0,0 +1,34 @@
+require ttf.inc
+
+SUMMARY = "Adobe OpenType Pan-CJK font family for Korean"
+HOMEPAGE = "https://github.com/adobe-fonts/source-han-sans"
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=55719faa0112708e946b820b24b14097"
+
+inherit allarch fontcache
+
+# Download tends to break - so - or not?
+#EXCLUDE_FROM_WORLD = "1"
+
+SRC_URI = " \
+    https://github.com/adobe-fonts/source-han-sans/raw/release/SubsetOTF/SourceHanSansKR.zip \
+    file://44-source-han-sans-kr.conf \
+"
+SRC_URI[md5sum] = "f8d1bd6c87d8575afdb25e2f46bd81d4"
+SRC_URI[sha256sum] = "38fd15c80f9980492faaa1af39ff873d8a38e45027023fb17d5b10d4b4b0e6af"
+
+S = "${WORKDIR}/SourceHanSansKR"
+
+do_install() {
+    install -d ${D}${sysconfdir}/fonts/conf.d/
+    install -m 0644 ${WORKDIR}/44-source-han-sans-kr.conf ${D}${sysconfdir}/fonts/conf.d/
+
+    install -d ${D}${datadir}/fonts/truetype/
+    find ./ -name '*.otf' -exec install -m 0644 {} ${D}${datadir}/fonts/truetype/ \;
+}
+
+FILES_${PN} = " \
+    ${sysconfdir}/fonts \
+    ${datadir}/fonts \
+"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-tw-fonts/44-source-han-sans-tw.conf b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-tw-fonts/44-source-han-sans-tw.conf
new file mode 100644
index 0000000..ae28940
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-tw-fonts/44-source-han-sans-tw.conf
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<fontconfig>
+    <!-- 
+        - Medium variant is used instead of Regular on Qt apps:
+        https://bugs.launchpad.net/ubuntu-font-family/+bug/744812
+        - Medium and Bold looks the same in certain applications:
+        https://bugs.launchpad.net/ubuntu/+source/gnome-specimen/+bug/813373
+    -->
+    <match target="scan">
+        <test name="fullname" compare="eq">
+            <string>Source Han Sans TWHK Medium</string>
+        </test>
+        <edit name="weight" mode="assign">
+            <const>demibold</const>
+        </edit>
+    </match>
+</fontconfig>
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-tw-fonts_1.004.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-tw-fonts_1.004.bb
new file mode 100644
index 0000000..7282505
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/source-han-sans-tw-fonts_1.004.bb
@@ -0,0 +1,34 @@
+require ttf.inc
+
+SUMMARY = "Adobe OpenType Pan-CJK font family for Traditional Chinese"
+HOMEPAGE = "https://github.com/adobe-fonts/source-han-sans"
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=55719faa0112708e946b820b24b14097"
+
+inherit allarch fontcache
+
+# Download tends to break - so - or not?
+#EXCLUDE_FROM_WORLD = "1"
+
+SRC_URI = " \
+    https://github.com/adobe-fonts/source-han-sans/raw/release/SubsetOTF/SourceHanSansTW.zip \
+    file://44-source-han-sans-tw.conf \
+"
+SRC_URI[md5sum] = "6533b71b31c19e548768f0fc963202f3"
+SRC_URI[sha256sum] = "92ba161921c5cdec5a8f8d5711676f0865b50cee071c25eb4bd4125b5af59fd0"
+
+S = "${WORKDIR}/SourceHanSansTW"
+
+do_install() {
+    install -d ${D}${sysconfdir}/fonts/conf.d/
+    install -m 0644 ${WORKDIR}/44-source-han-sans-tw.conf ${D}${sysconfdir}/fonts/conf.d/
+
+    install -d ${D}${datadir}/fonts/truetype/
+    find ./ -name '*.otf' -exec install -m 0644 {} ${D}${datadir}/fonts/truetype/ \;
+}
+
+FILES_${PN} = " \
+    ${sysconfdir}/fonts \
+    ${datadir}/fonts \
+"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb
new file mode 100644
index 0000000..522f0fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Unicode Mingti (printed) TrueType Font"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/CJKUnifonts"
+LICENSE = "Arphic-Public-License"
+LIC_FILES_CHKSUM = "file://README;md5=62be011094b7865ddc4d1a648444d31a"
+SRC_DISTRIBUTE_LICENSES += "${PN}"
+RPROVIDES_${PN} = "virtual-chinese-font"
+PR = "r6"
+
+FONT_PACKAGES = "${PN}"
+
+SRC_URI = "http://archive.ubuntu.com/ubuntu/pool/main/t/ttf-arphic-uming/ttf-arphic-uming_0.2.${PV}.1.orig.tar.gz"
+S = "${WORKDIR}"
+
+require ttf.inc
+
+FILES_${PN} = "${datadir}"
+
+SRC_URI[md5sum] = "d219fcaf953f3eb1889399955a00379f"
+SRC_URI[sha256sum] = "8038a6db9e832456d5da5559aff8d15130243be1091bf24f3243503a6f1bda98"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu/30-dejavu-aliases.conf b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu/30-dejavu-aliases.conf
new file mode 100644
index 0000000..9c6e56b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu/30-dejavu-aliases.conf
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+	<alias>
+		<family>DejaVu Serif</family>
+		<default><family>serif</family></default>
+	</alias>
+	<alias>
+		<family>DejaVu Sans</family>
+		<default><family>sans-serif</family></default>
+	</alias>
+ 	<alias>
+		<family>DejaVu Sans Mono</family>
+		<default><family>monospace</family></default>
+	</alias>
+</fontconfig>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.35.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.35.bb
new file mode 100644
index 0000000..3ce791b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.35.bb
@@ -0,0 +1,44 @@
+require ttf.inc
+
+SUMMARY = "DejaVu font - TTF Edition"
+HOMEPAGE = "http://dejavu.sourceforge.net/wiki/"
+LICENSE = "BitstreamVera"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/dejavu-fonts-ttf-${PV}/LICENSE;md5=9f867da7a73fad2715291348e80d0763"
+
+# all subpackages except ${PN}-common itself rdepends on ${PN}-common
+RDEPENDS_${PN}-sans = "${PN}-common"
+RDEPENDS_${PN}-sans-mono = "${PN}-common"
+RDEPENDS_${PN}-sans-condensed = "${PN}-common"
+RDEPENDS_${PN}-serif = "${PN}-common"
+RDEPENDS_${PN}-serif-condensed = "${PN}-common"
+RDEPENDS_${PN}-common = ""
+PR = "r7"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/dejavu/dejavu-fonts-ttf-${PV}.tar.bz2 \
+           file://30-dejavu-aliases.conf"
+
+S = "${WORKDIR}/dejavu-fonts-ttf-${PV}/ttf"
+
+do_install_append () {
+    install -d ${D}${sysconfdir}/fonts/conf.d/
+    install -m 0644 ${WORKDIR}/30-dejavu-aliases.conf ${D}${sysconfdir}/fonts/conf.d/
+}
+
+PACKAGES = "\
+            ${PN}-sans \
+            ${PN}-sans-mono \
+            ${PN}-sans-condensed \
+            ${PN}-serif \
+            ${PN}-serif-condensed \
+            ${PN}-common"
+FONT_PACKAGES = "${PN}-sans ${PN}-sans-mono ${PN}-sans-condensed ${PN}-serif ${PN}-serif-condensed"
+
+FILES_${PN}-sans            = "${datadir}/fonts/truetype/DejaVuSans.ttf ${datadir}/fonts/truetype/DejaVuSans-*.ttf"
+FILES_${PN}-sans-mono       = "${datadir}/fonts/truetype/DejaVuSansMono*.ttf"
+FILES_${PN}-sans-condensed  = "${datadir}/fonts/truetype/DejaVuSansCondensed*.ttf"
+FILES_${PN}-serif           = "${datadir}/fonts/truetype/DejaVuSerif.ttf ${datadir}/fonts/truetype/DejaVuSerif-*.ttf"
+FILES_${PN}-serif-condensed = "${datadir}/fonts/truetype/DejaVuSerifCondensed*.ttf"
+FILES_${PN}-common          = "${sysconfdir}"
+
+SRC_URI[md5sum] = "59eaca5acf5c7c8212e92778e3e01f32"
+SRC_URI[sha256sum] = "f6d7965586101ff3a8a5c3ec503e082bb6a9604ff53413e10702e5917c194d88"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb
new file mode 100644
index 0000000..e62badf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb
@@ -0,0 +1,27 @@
+require ttf.inc
+
+SUMMARY = "Droid fonts - TTF Edition"
+HOMEPAGE = "http://www.droidfonts.com/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.txt;md5=83544262a86f1f1ec761e75897df92bc"
+SRCREV = "21e6e2de1f0062f949fcc52d0b4559dfa3246e0e"
+PV = "0.1+gitr${SRCPV}"
+PR = "r3"
+
+SRC_URI = "git://github.com/android/platform_frameworks_base.git;branch=master"
+
+S = "${WORKDIR}/git/data/fonts"
+
+do_install_prepend() {
+    rm ${S}/Ahem.ttf MTLc3m.ttf DroidSansArabic.ttf DroidSansThai.ttf Clockopia.ttf MTLmr3m.ttf DroidSansHebrew.ttf DroidSansFallbackLegacy.ttf # we're not packaging it
+}
+
+PACKAGES = "ttf-droid-sans ttf-droid-sans-mono \
+            ttf-droid-sans-fallback ttf-droid-sans-japanese ttf-droid-serif"
+FONT_PACKAGES = "ttf-droid-sans ttf-droid-sans-mono ttf-droid-sans-fallback ttf-droid-sans-japanese ttf-droid-serif"
+
+FILES_ttf-droid-sans = "${datadir}/fonts/truetype/DroidSans.ttf ${datadir}/fonts/truetype/DroidSans-Bold.ttf"
+FILES_ttf-droid-sans-mono = "${datadir}/fonts/truetype/DroidSansMono.ttf"
+FILES_ttf-droid-sans-fallback = "${datadir}/fonts/truetype/DroidSansFallback.ttf"
+FILES_ttf-droid-sans-japanese = "${datadir}/fonts/truetype/DroidSansJapanese.ttf"
+FILES_ttf-droid-serif = "${datadir}/fonts/truetype/DroidSerif*.ttf"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb
new file mode 100644
index 0000000..6a6258a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb
@@ -0,0 +1,37 @@
+require ttf.inc
+
+SUMMARY = "Gentium fonts - TTF Version"
+HOMEPAGE = "http://scripts.sil.org/gentium"
+LICENSE = "OFL"
+LICENSE_URL = "http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=OFL"
+LIC_FILES_CHKSUM = "file://OFL;md5=33a5bf7b98a9c0ae87430760ba762295 \
+"
+PR = "r8"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/t/ttf-gentium/ttf-gentium_${PV}.orig.tar.gz "
+
+S = "${WORKDIR}/ttf-sil-gentium-${PV}"
+
+do_install_append() {
+
+    install -d ${D}${datadir}/doc/ttf-gentium/
+    install -d ${D}${datadir}/doc/ttf-gentium-alt/
+
+    install -m 0644 ${S}/OFL ${D}${datadir}/doc/ttf-gentium/
+    install -m 0644 ${S}/OFL ${D}${datadir}/doc/ttf-gentium-alt/
+
+}
+
+PACKAGES = "${PN} ${PN}-alt"
+FONT_PACKAGES = "${PN} ${PN}-alt"
+
+FILES_${PN}-alt = "${datadir}/fonts/truetype/GenAI*.ttf \
+                   ${datadir}/fonts/truetype/GenAR*.ttf \
+                   ${datadir}/doc/ttf-gentium-alt/*"
+
+FILES_${PN} = "${datadir}/fonts/truetype/GenI*.ttf \
+               ${datadir}/fonts/truetype/GenR*.ttf \
+               ${datadir}/doc/ttf-gentium/*"
+
+SRC_URI[md5sum] = "4c3e6ae586be277537ebb68f2a45b883"
+SRC_URI[sha256sum] = "4746c04c9a4ad9e0788a38e0a2f81919a630d8070ceabc89f156b6d41d8ceb37"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.0.bb
new file mode 100644
index 0000000..5cd9935
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.0.bb
@@ -0,0 +1,20 @@
+require ttf.inc
+
+SUMMARY = "Hunky fonts - TTF Version"
+HOMEPAGE = "http://sourceforge.net/projects/hunkyfonts"
+LICENSE = "LGPL"
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=7fbc338309ac38fefcd64b04bb903e34"
+PR = "r7"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/hunkyfonts/hunkyfonts-${PV}.tar.bz2"
+
+S = "${WORKDIR}/hunkyfonts-${PV}/TTF/"
+
+PACKAGES = "ttf-hunky-sans ttf-hunky-serif"
+FONT_PACKAGES = "ttf-hunky-sans ttf-hunky-serif"
+
+FILES_ttf-hunky-sans = "${datadir}/fonts/truetype/HunkySans*.ttf"
+FILES_ttf-hunky-serif = "${datadir}/fonts/truetype/HunkySerif*.ttf"
+
+SRC_URI[md5sum] = "36444795a356fb8a56c63b2840729bab"
+SRC_URI[sha256sum] = "e0b1849c545b6af276407d93025c73094dd74fc259b07c1d91594fdbb9a0b829"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata/OFL.txt b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata/OFL.txt
new file mode 100644
index 0000000..1456c18
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata/OFL.txt
@@ -0,0 +1,97 @@
+Copyright (c) <dates>, <Copyright Holder> (<URL|email>),
+with Reserved Font Name <Reserved Font Name>.
+Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>),
+with Reserved Font Name <additional Reserved Font Name>.
+Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>).
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata_20100526.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata_20100526.bb
new file mode 100644
index 0000000..20041bb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata_20100526.bb
@@ -0,0 +1,26 @@
+require ttf.inc
+
+SUMMARY = "Inconsolata font - TTF Version"
+HOMEPAGE = "http://www.levien.com/type/myfonts/inconsolata.html"
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://../OFL.txt;md5=969851e3a70122069a4d9ee61dd5a2ed"
+
+SRC_URI = "http://levien.com/type/myfonts/Inconsolata.otf \
+    file://OFL.txt"
+
+S = "${WORKDIR}/ttf-inconsolata-${PV}"
+
+FILES_${PN} = "${datadir}/fonts/truetype/Inconsolata.ttf \
+    ${datadir}/doc/ttf-inconsolata/*"
+
+do_configure() {
+    mv ${WORKDIR}/Inconsolata.otf ${S}/Inconsolata.ttf
+}
+
+do_install_append() {
+    install -d ${D}${datadir}/doc/ttf-inconsolata/
+    install -m 0644 ${WORKDIR}/OFL.txt ${D}${datadir}/doc/ttf-inconsolata/
+}
+
+SRC_URI[md5sum] = "0fbe014c1f0fb5e3c71140ff0dc63edf"
+SRC_URI[sha256sum] = "1561e616c414a1b82d6e6dfbd18e5726fd65028913ade191e5fa38b6ec375a1a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb
new file mode 100644
index 0000000..7204c92
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb
@@ -0,0 +1,23 @@
+require ttf.inc
+
+SUMMARY = "Liberation fonts - TTF Version"
+HOMEPAGE = "https://www.redhat.com/promo/fonts/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://License.txt;md5=5b171c5100029d884fcea21d9a2b7543 \
+"
+
+PR = "r7"
+
+SRC_URI = "http://fedorahosted.org/liberation-fonts/export/807b6dfd069b998cd9b4d3158da98817ef23c79d/F-9/liberation-fonts-ttf-3.tar.gz"
+S = "${WORKDIR}/liberation-fonts-${PV}"
+
+PACKAGES = "ttf-liberation-mono ttf-liberation-sans ttf-liberation-serif"
+FONT_PACKAGES = "ttf-liberation-mono ttf-liberation-sans ttf-liberation-serif"
+
+FILES_ttf-liberation-mono  = "${datadir}/fonts/truetype/*Mono*"
+FILES_ttf-liberation-sans  = "${datadir}/fonts/truetype/*Sans*"
+FILES_ttf-liberation-serif = "${datadir}/fonts/truetype/*Serif*"
+
+SRC_URI[md5sum] = "77728078a17e39f7c242b42c3bf6feb8"
+SRC_URI[sha256sum] = "174cf27c57612971434ec8cc4a52bfd37bad8408e9b9219539c6d5113df6ff8f"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb
new file mode 100644
index 0000000..9ad348d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb
@@ -0,0 +1,28 @@
+require ttf.inc
+
+SUMMARY = "MPlus font - TTF Edition"
+HOMEPAGE = "http://dejavu.sourceforge.net/wiki/"
+LICENSE = "${PN}"
+LIC_FILES_CHKSUM = "file://LICENSE_E;md5=ac161e96eda00db9a3aec7870b5d9658 \
+                    file://LICENSE_J;md5=a120ca8d7c8e4a475d5277c9aeb95221 \
+"
+PR = "r4"
+
+SRC_URI = "http://osdn.dl.sourceforge.jp/mplus-fonts/6650/mplus-TESTFLIGHT-${PV}.tar.gz"
+S = "${WORKDIR}/mplus-TESTFLIGHT-${PV}"
+
+PACKAGESPLITFUNCS_prepend = "split_ttf_mplus_packages "
+
+python split_ttf_mplus_packages() {
+    plugindir = d.expand('${datadir}/fonts/ttf-mplus/')
+    packages = do_split_packages(d, plugindir, '^(.*)\.ttf$', 'ttf-%s', 'TTF Font %s')
+    d.setVar('FONT_PACKAGES', ' '.join(packages))
+}
+
+do_install() {
+    install -d ${D}${datadir}/fonts/ttf-mplus
+    install -m 0644 *.ttf ${D}${datadir}/fonts/ttf-mplus/
+}
+
+SRC_URI[md5sum] = "d1400184b51b3871e8d2fca6c50e18ae"
+SRC_URI[sha256sum] = "a20b9b9b03c2a6fb1e2137d29e8a6ce06406ba1e008906ea3c474dc048dc06a6"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-pt-sans_1.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-pt-sans_1.1.bb
new file mode 100644
index 0000000..ac60a36
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-pt-sans_1.1.bb
@@ -0,0 +1,39 @@
+SUMMARY = "PT Sans Fonts"
+DESCRIPTION = "The PT Sans TTF font set"
+HOMEPAGE = "http://www.paratype.com/public/"
+
+SECTION = "x11/fonts"
+
+LICENSE = "ParaTypeFFL-1.3"
+LIC_FILES_CHKSUM = "file://../PT%20Free%20Font%20License_eng.txt;md5=d720f3a281ed81c3f4cfc465e11b1d0d"
+
+inherit allarch fontcache
+
+# Downloading from fedora because upstream doesn't version its zip file
+# and causes hash build failures
+SRC_URI = "http://pkgs.fedoraproject.org/repo/pkgs/paratype-pt-sans-fonts/PTSans.zip/c3f5a0e20a75cf628387510a720924a7/PTSans.zip"
+
+SRC_URI[md5sum] = "c3f5a0e20a75cf628387510a720924a7"
+SRC_URI[sha256sum] = "0164f824e03c32c99e8a225853ec168893a04a09ade132e93a674e85ae033b2e"
+
+do_install () {
+    install -d ${D}${datadir}/fonts/X11/TTF/
+    cd ..
+    for i in *.ttf; do
+        install -m 0644 $i ${D}${prefix}/share/fonts/X11/TTF/${i}
+    done
+}
+
+FILES_${PN} += "${datadir}"
+
+pkg_postinst_${PN} () {
+    set -x
+    for fontdir in `find $D/usr/lib/X11/fonts -type d`; do
+        mkfontdir $fontdir
+        mkfontscale $fontdir
+    done
+    for fontdir in `find $D/usr/share/fonts/X11 -type d`; do
+        mkfontdir $fontdir
+        mkfontscale $fontdir
+    done
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb
new file mode 100644
index 0000000..efdcec8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb
@@ -0,0 +1,35 @@
+require ttf.inc
+
+SUMMARY = "Sazanami Gothic/Mincho Japanese TrueType fonts"
+SUMMARY_ttf-sazanami-gothic = "Sazanami Gothic Japanese TrueType font"
+SUMMARY_ttf-sazanami-mincho = "Sazanami Mincho Japanese TrueType font"
+AUTHOR = "Electronic Font Open Laboratory (/efont/)"
+HOMEPAGE = "http://sourceforge.jp/projects/efont/"
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://README;md5=97d739900be6e852830f55aa3c07d4a0"
+SRC_DISTRIBUTE_LICENSES += "${PN}"
+RPROVIDES_${PN} = "virtual-japanese-font"
+PR = "r9"
+
+SRC_URI = "http://osdn.dl.sourceforge.jp/efont/10087/sazanami-20040629.tar.bz2"
+S = "${WORKDIR}/sazanami-20040629"
+
+PACKAGES = "ttf-sazanami-gothic ttf-sazanami-mincho"
+FONT_PACKAGES = "ttf-sazanami-gothic ttf-sazanami-mincho"
+
+FILES_ttf-sazanami-gothic = "${datadir}/fonts/truetype/sazanami-gothic.ttf \
+                             ${datadir}/doc/ttf-sazanami-gothic/README"
+FILES_ttf-sazanami-mincho = "${datadir}/fonts/truetype/sazanami-mincho.ttf \
+                             ${datadir}/doc/ttf-sazanami-mincho/README"
+
+do_install_append() {
+    # README contains the redistribution license
+    install -d ${D}${datadir}/doc/
+    install -d ${D}${datadir}/doc/ttf-sazanami-gothic
+    install -d ${D}${datadir}/doc/ttf-sazanami-mincho
+    install -m 0644 ${S}/README ${D}${datadir}/doc/ttf-sazanami-gothic
+    install -m 0644 ${S}/README ${D}${datadir}/doc/ttf-sazanami-mincho
+}
+
+SRC_URI[md5sum] = "ceef10579a75c92483171f3bd7f77df2"
+SRC_URI[sha256sum] = "3467ce2f70a9a3fbbf8d4d97355a2f334a6351baa6722251403637a8cbebf6b7"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-tlwg_0.6.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-tlwg_0.6.1.bb
new file mode 100644
index 0000000..06a3fe5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-tlwg_0.6.1.bb
@@ -0,0 +1,27 @@
+require ttf.inc
+
+SUMMARY = "Thai Linux Working Group Fonts"
+AUTHOR = "Thai Linux Working Group"
+HOMEPAGE = "http://linux.thai.net/projects/fonts-tlwg"
+LICENSE = "GPLv2 & TLWG"
+LIC_FILES_CHKSUM = "file://../fonts-tlwg-${PV}/COPYING;md5=3d20cd7eadf4afd5460c0adb32e387fd"
+
+SRC_URI = "http://linux.thai.net/pub/ThaiLinux/software/fonts-tlwg/fonts-tlwg-${PV}.tar.xz;name=source \
+           http://linux.thai.net/pub/ThaiLinux/software/ttf-tlwg/ttf-tlwg-${PV}.tar.xz;name=ttf"
+SRC_URI[source.md5sum] = "5ea5bc964d992df0428f2e0b85f48400"
+SRC_URI[source.sha256sum] = "77fb9832221fde60c9f683ac3fdce7d45ab6e9c0d83df83da969a3fe9faba537"
+SRC_URI[ttf.md5sum] = "1bc51f45a7b661404a944fab6911261c"
+SRC_URI[ttf.sha256sum] = "aa9cd68969b6f704df3e5b1a2e11204c47f118c8ab052f04c111bd5f299f77c8"
+
+do_install_append () {
+    install -d ${D}${sysconfdir}/fonts/conf.d
+
+    for x in ${S}/etc/fonts/conf.avail/*.conf; do
+        install -m 0644 $x ${D}${sysconfdir}/fonts/conf.d/
+    done
+}
+
+PACKAGES = "${PN}"
+FONT_PACKAGES = "${PN}"
+
+FILES_${PN} = "${datadir}/fonts ${sysconfdir}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.80.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.80.bb
new file mode 100644
index 0000000..d5d1b9a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.80.bb
@@ -0,0 +1,20 @@
+require ttf.inc
+
+SUMMARY = "Ubuntu Font Family - TTF Version"
+HOMEPAGE = "http://font.ubuntu.com"
+LICENSE = "UFL"
+LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=325a1a9029112a2405e743c7f816427b"
+PR = "r1"
+
+SRC_URI = "http://font.ubuntu.com/download/ubuntu-font-family-${PV}.zip"
+
+SRC_URI[md5sum] = "a1fc70f5a5b1d096ab8310886cddaa1c"
+SRC_URI[sha256sum] = "107170099bbc3beae8602b97a5c423525d363106c3c24f787d43e09811298e4c"
+
+S = "${WORKDIR}/ubuntu-font-family-${PV}"
+
+PACKAGES = "ttf-ubuntu-mono ttf-ubuntu-sans"
+FONT_PACKAGES = "ttf-ubuntu-mono ttf-ubuntu-sans"
+
+FILES_ttf-ubuntu-mono  = "${datadir}/fonts/truetype/*Mono*"
+FILES_ttf-ubuntu-sans  = "${datadir}/fonts/truetype/Ubuntu-*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.9.45.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.9.45.bb
new file mode 100644
index 0000000..1207a61
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.9.45.bb
@@ -0,0 +1,27 @@
+require ttf.inc
+
+SUMMARY = "WenQuanYi Zen Hei - A Hei-Ti Style Chinese font"
+AUTHOR = "Qianqian Fang and The WenQuanYi Project Contributors"
+HOMEPAGE = "http://wenq.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=cf540fc7d35b5777e36051280b3a911c"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/wqy/wqy-zenhei-${PV}.tar.gz"
+SRC_URI[md5sum] = "4c6c3f4e902dd5ee0a121e8c41d040bd"
+SRC_URI[sha256sum] = "e4b7e306475bf9427d1757578f0e4528930c84c44eaa3f167d4c42f110ee75d6"
+
+S = "${WORKDIR}/wqy-zenhei"
+
+do_install_append () {
+    sed -i -e '/<string>[^W]/d' ${S}/44-wqy-zenhei.conf
+    install -d ${D}${sysconfdir}/fonts/conf.d
+
+    for x in ${S}/*.conf; do
+        install -m 0644 $x ${D}${sysconfdir}/fonts/conf.d/
+    done
+}
+
+PACKAGES = "${PN}"
+FONT_PACKAGES = "${PN}"
+
+FILES_${PN} = "${datadir}/fonts ${sysconfdir}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf.inc b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf.inc
new file mode 100644
index 0000000..c77af39
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf.inc
@@ -0,0 +1,12 @@
+DESCRIPTION ?= "TrueType font package ${PN}"
+SECTION = "fonts"
+
+# we don't need a compiler nor a c library for these fonts
+INHIBIT_DEFAULT_DEPS = "1"
+
+do_install() {
+    install -d ${D}${datadir}/fonts/truetype/
+    find ./ -name '*.tt[cf]' -exec install -m 0644 {} ${D}${datadir}/fonts/truetype/ \;
+}
+
+inherit allarch fontcache
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/wayland/wayland-fits_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/wayland/wayland-fits_git.bb
new file mode 100755
index 0000000..6852fd3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/wayland/wayland-fits_git.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Wayland-fits, the Wayland Functional Integration Test Suite"
+DESCRIPTION = "Wayland-fits is a fully automated functional integration \
+test suite. Its main purpose is to test the functionality and integration of \
+client-side (i.e. toolkit) and server-side (compositor) implementations of \
+the Wayland protocol."
+HOMEPAGE = "https://github.com/01org/wayland-fits"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f8d34cadaf891753c0f00c6cd48f08f5 \
+                    file://src/extensions/weston/weston-wfits.cpp;endline=21;md5=848c81e55cf3a30a9f6ed75f0dba7a97"
+
+SRC_URI = "git://github.com/01org/wayland-fits.git"
+SRCREV = "f108335e374772ae2818a30ae37fe6fcda81980f"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+DEPENDS = "libcheck boost wayland weston"
+RDEPENDS_${PN} = "weston"
+
+EXTRA_OECONF += "--enable-shared --disable-static --with-boost-libdir=${STAGING_LIBDIR}"
+
+PACKAGECONFIG ?= "gtk+3"
+
+PACKAGECONFIG[elementary] = "--enable-efl-tests,--disable-efl-tests,elementary"
+PACKAGECONFIG[gtk+3] = "--enable-gtk-tests,--disable-gtk-tests,gtk+3"
+
+do_install_append() {
+	rm -f ${D}/${libdir}/weston/*.la
+}
+
+FILES_${PN} += "${bindir}/wfits ${libdir}/weston/*.so"
+FILES_${PN}-dbg += "${bindir}/.debug ${libdir}/weston/.debug ${prefix}/src"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/endian-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/endian-fix.patch
new file mode 100644
index 0000000..f2a538b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/endian-fix.patch
@@ -0,0 +1,24 @@
+libvncserver: replace LIBVNCSERVER_WORDS_BIGENDIAN with WORDS_BIGENDIAN
+
+since macro AC_C_BIGENDIAN is used in autoconf and WORDS_BIGENDIAN is
+automatically set for different arch, it is better to use WORDS_BIGENDIAN
+instead of LIBVNCSERVER_WORDS_BIGENDIAN, which cuase issue in mips.
+
+Signed-off-by: Yu Ke <ke.yu@intel.com>
+
+Upstream-Status: Pending
+
+diff --git a/libvncserver/main.c b/libvncserver/main.c
+index b6bd930..8bbb7bf 100644
+--- a/libvncserver/main.c
++++ b/libvncserver/main.c
+@@ -47,7 +47,7 @@ static MUTEX(extMutex);
+ 
+ static int rfbEnableLogging=1;
+ 
+-#ifdef LIBVNCSERVER_WORDS_BIGENDIAN
++#ifdef WORDS_BIGENDIAN
+ char rfbEndianTest = (1==0);
+ #else
+ char rfbEndianTest = (1==1);
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/starting-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/starting-fix.patch
new file mode 100644
index 0000000..f62e405
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/starting-fix.patch
@@ -0,0 +1,25 @@
+"-gui" & "-rfbport" require "wish" installed, or else x11vnc fails to start.
+Removing these 2 parameters makes x11vnc works well on poky sato image.
+
+Add also -skip_lockkeys option to ignore all Caps_Lock, Shift_Lock, Num_Lock,
+Scroll_Lock keysyms received from viewers, in order to leave the lock state on
+the server side unchanged. Yet, the keys will appear correctly.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
+
+Upstream-Status: Inappropriate [configuration]
+
+Index: x11vnc-0.9.12/x11vnc/x11vnc.desktop
+===================================================================
+--- x11vnc-0.9.12.orig/x11vnc/x11vnc.desktop	2011-03-03 10:33:18.000000000 +0800
++++ x11vnc-0.9.12/x11vnc/x11vnc.desktop	2011-03-03 10:35:20.000000000 +0800
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+ Name=X11VNC Server
+ Comment=Share this desktop by VNC
+-Exec=x11vnc -gui tray=setpass -rfbport PROMPT -bg -o %%HOME/.x11vnc.log.%%VNCDISPLAY
++Exec=x11vnc -bg -rfbport 5900 -skip_lockkeys -o %%HOME/.x11vnc.log.%%VNCDISPLAY
+ Icon=computer
+ Terminal=false
+ Type=Application
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.13.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.13.bb
new file mode 100644
index 0000000..7e92965
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.13.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Exports your X session on-the-fly via VNC"
+HOMEPAGE = "http://www.karlrunge.com/x11vnc/"
+
+SECTION = "x11/utils"
+AUTHOR = "Karl Runge"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=361b6b837cad26c6900a926b62aada5f \
+                    file://x11vnc/x11vnc.h;endline=33;md5=6f95dc6535467d7ee1563fd434fb372e"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libvncserver/x11vnc/${PV}/x11vnc-${PV}.tar.gz\
+           file://starting-fix.patch \
+           file://endian-fix.patch "
+
+SRC_URI[md5sum] = "a372ec4fe8211221547b1c108cf56e4c"
+SRC_URI[sha256sum] = "f6829f2e629667a5284de62b080b13126a0736499fe47cdb447aedb07a59f13b"
+
+DEPENDS = "openssl virtual/libx11 libxext jpeg zlib libxfixes libxrandr libxdamage libxtst libtasn1 p11-kit"
+
+inherit autotools-brokensep distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} libvncserver"
+PACKAGECONFIG[avahi] = "--with-avahi,--without-avahi,avahi"
+PACKAGECONFIG[xinerama] = "--with-xinerama,--without-xinerama,libxinerama"
+PACKAGECONFIG[libvncserver] = "--with-system-libvncserver,--without-system-libvncserver,libvncserver"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xcursorgen/xcursorgen_1.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xcursorgen/xcursorgen_1.0.5.bb
new file mode 100644
index 0000000..27a38c1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xcursorgen/xcursorgen_1.0.5.bb
@@ -0,0 +1,12 @@
+LICENSE = "ManishSingh"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bd1fb9ee90eead85f7b171807b3ab4f2"
+
+DEPENDS = "libpng libxcursor"
+
+SRC_URI = "http://xorg.freedesktop.org/archive/individual/app/${BPN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "09f56978a62854534deacc8aa8ff3031"
+SRC_URI[sha256sum] = "bc7171a0fa212da866fca2301241630e2009aea8c4ddb75f21b51a31c2e4c581"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xdotool/xdotool_1.20100416.2809.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xdotool/xdotool_1.20100416.2809.bb
new file mode 100644
index 0000000..474d298
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xdotool/xdotool_1.20100416.2809.bb
@@ -0,0 +1,23 @@
+SUMMARY = "xdotool - command-line X11 automation tool - utilising X11 XTEST interface"
+HOMEPAGE = "http://www.semicomplete.com/projects/xdotool"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=2f9cbf7e9401cec8a38666a08851ce6b"
+SECTION = "x11"
+DEPENDS = "virtual/libx11 libxtst"
+
+PR = "r1"
+
+inherit distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI = "http://semicomplete.googlecode.com/files/xdotool-${PV}.tar.gz"
+SRC_URI[md5sum] = "1d5be641e512c343abfe5f78b39e6f19"
+SRC_URI[sha256sum] = "42d7271fbc796e53db71bb221f311b9ff3c51d90a71c9487a9bd3101ca39894f"
+
+EXTRA_OEMAKE = "PREFIX=${prefix} INSTALLLIB=${libdir} INSTALLMAN=${mandir}"
+
+do_install() {
+    oe_runmake -e install DESTDIR=${D} PREFIX=${prefix}
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/bdftopcf_1.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/bdftopcf_1.0.5.bb
new file mode 100644
index 0000000..35d5002
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/bdftopcf_1.0.5.bb
@@ -0,0 +1,13 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "bdftopcf is a tool to convert BDF fonts to PCF fonts"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/bdftopcf/"
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f9a35333adf75edd1eaef84bca65a490"
+DEPENDS = "libxfont"
+
+SRC_URI[md5sum] = "53a48e1fdfec29ab2e89f86d4b7ca902"
+SRC_URI[sha256sum] = "38f447be0c61f94c473f128cf519dd0cff63b5d7775240a2e895a183a61e2026"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.7.bb
new file mode 100644
index 0000000..f40dec8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.7.bb
@@ -0,0 +1,16 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+
+DESCRIPTION = "A collection of utilities used to tweak and query the runtime configuration\
+of the X server."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=13f70acf3c27f5f834bbc954df775f8e"
+
+BBCLASSEXTEND = "native"
+
+DEPENDS += "libice"
+
+SRC_URI[md5sum] = "25dab02f8e40d5b71ce29a07dc901b8c"
+SRC_URI[sha256sum] = "1216af2dee99b318fcf8bf9a259915273bcb37a7f1e7859af4f15d0ebf6f3f0a"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg/0001-Makefile.am-Error-Fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg/0001-Makefile.am-Error-Fix.patch
new file mode 100644
index 0000000..2072853
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg/0001-Makefile.am-Error-Fix.patch
@@ -0,0 +1,33 @@
+From 088bb4cef2c93bef312b076a8c7a3c798cbf2f19 Mon Sep 17 00:00:00 2001
+From: daicy <daicy@cn.fujitsu.com>
+Date: Tue, 8 Dec 2015 11:45:01 +0900
+Subject: [PATCH] Makefile.am: Error Fix
+
+Do not compile man dir since error always occur.
+ | sed: file filenames.sed line 3: unterminated `s' command
+ | make[2]: *** [sessreg.1] Error 1
+It is not a good way.But can remove it from PNBLACKLIST.
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index cddffd0..94f7048 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -18,7 +18,7 @@
+ #  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ #  PERFORMANCE OF THIS SOFTWARE.
+ 
+-SUBDIRS = man
++#SUBDIRS = man
+ bin_PROGRAMS = sessreg
+ 
+ AM_CFLAGS = $(CWARNFLAGS) $(SESSREG_CFLAGS)
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg_1.1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg_1.1.0.bb
new file mode 100644
index 0000000..2e25b7d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg_1.1.0.bb
@@ -0,0 +1,8 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "a simple program for managing utmp/wtmp entries"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d938a70c8280c265a1ccd2954365d185"
+SRC_URI += "file://0001-Makefile.am-Error-Fix.patch"
+SRC_URI[md5sum] = "e238c89dabc566e1835e1ecb61b605b9"
+SRC_URI[sha256sum] = "551177657835e0902b5eee7b19713035beaa1581bbd3c6506baa553e751e017c"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/setxkbmap_1.3.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/setxkbmap_1.3.1.bb
new file mode 100644
index 0000000..8402753
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/setxkbmap_1.3.1.bb
@@ -0,0 +1,19 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "A program to compile XKB keyboard description"
+
+DESCRIPTION = "The xkbcomp keymap compiler converts a description of an \
+XKB keymap into one of several output formats. The most common use for \
+xkbcomp is to create a compiled keymap file (.xkm extension) which can \
+be read directly by XKB-capable X servers or utilities."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=5feafdbe6dfe9e2bd32325be0cfc86f8"
+
+PE = "1"
+
+DEPENDS += "libxkbfile"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "2c47a1b8e268df73963c4eb2316b1a89"
+SRC_URI[sha256sum] = "a9ddb3963f263ba13f0ea105d8c45a531832140530217cc559587bb94f02d3e1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/twm_1.0.9.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/twm_1.0.9.bb
new file mode 100644
index 0000000..41c804b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/twm_1.0.9.bb
@@ -0,0 +1,15 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+SUMMARY = "tiny window manager"
+DEPENDS += " libxext libxt libxmu bison-native"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4c6d42ef60e8166aa26606524c0b9586"
+
+SRC_URI[md5sum] = "59a6f076cdacb5f6945dac809bcf4906"
+SRC_URI[sha256sum] = "c575167ac33edf3bd1592f1bedfe0559debb128ed5fb4873c1278e3be166310a"
+
+FILES_${PN} += "${datadir}/X11/twm/system.twmrc"
+ALTERNATIVE_NAME = "x-window-manager"
+ALTERNATIVE_PATH = "${bindir}/twm"
+ALTERNATIVE_LINK = "${bindir}/x-window-manager"
+ALTERNATIVE_PRIORITY = "1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xclock_1.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xclock_1.0.5.bb
new file mode 100644
index 0000000..cf970d5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xclock_1.0.5.bb
@@ -0,0 +1,11 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "analog / digital clock for X"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=857759ade8f2ddde5c7b32ef7356ea36"
+
+DEPENDS += " libxaw libxrender libxft libxkbfile libxt"
+
+SRC_URI[md5sum] = "eaf124bbc9d13e1a12a29faaa2ed3612"
+SRC_URI[sha256sum] = "53a9169e24f3814fbfcfee3ca0b98637840a3156ed7c7e36ae03940fabae4c9a"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xfontsel_1.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xfontsel_1.0.5.bb
new file mode 100644
index 0000000..c74b291
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xfontsel_1.0.5.bb
@@ -0,0 +1,13 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "xfontsel provides point and click selection of X11 font names"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xfontsel/"
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4669d2703c60d585cc29ba7e9a69bcb3"
+DEPENDS += " libxaw"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=4669d2703c60d585cc29ba7e9a69bcb3"
+
+SRC_URI[md5sum] = "a40302b88c599b63e3d3d412e02871e6"
+SRC_URI[sha256sum] = "170d8550b96fb47b04db6181b947e6f6b8b97f4df5d691c351a278480cc931bf"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xgamma_1.0.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xgamma_1.0.6.bb
new file mode 100644
index 0000000..4949616
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xgamma_1.0.6.bb
@@ -0,0 +1,15 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+
+DESCRIPTION = "xgamma allows X users to query and alter the gamma \
+correction of a monitor via the X video mode extension."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=ac9801b8423fd7a7699ccbd45cf134d8"
+
+DEPENDS += "libxxf86vm"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "90b4305157c2b966d5180e2ee61262be"
+SRC_URI[sha256sum] = "0ef1c35b5c18b1b22317f455c8df13c0a471a8efad63c89c98ae3ce8c2b222d3"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbevd_1.1.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbevd_1.1.4.bb
new file mode 100644
index 0000000..a6fc9e7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbevd_1.1.4.bb
@@ -0,0 +1,13 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+SUMMARY = "A program to compile XKB keyboard description"
+DESCRIPTION = "The  xkbevd event daemon listens for specified XKB \
+events and executes requested commands if they occur. "
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=208668fa9004709ba22c2b748140956c"
+
+DEPENDS += "libxkbfile"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "c747faf1f78f5a5962419f8bdd066501"
+SRC_URI[sha256sum] = "2430a2e5302a4cb4a5530c1df8cb3721a149bbf8eb377a2898921a145197f96a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbprint_1.0.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbprint_1.0.4.bb
new file mode 100644
index 0000000..26977be
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbprint_1.0.4.bb
@@ -0,0 +1,13 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+SUMMARY = "A program to compile XKB keyboard description"
+DESCRIPTION = "xkbprint generates a printable or encapsulated PostScript \
+description of an XKB keyboard description."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=20f28f97555b220fde762bc2a4406a8f"
+
+DEPENDS += "libxkbfile"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "3c25b40de530112c08bf7d229c5c6a28"
+SRC_URI[sha256sum] = "0b3faab8fefad03dfb7e866f634cf859822801de6b5fc6cf5e0a62857ed93e12"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbutils_1.0.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbutils_1.0.4.bb
new file mode 100644
index 0000000..6a05e98
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbutils_1.0.4.bb
@@ -0,0 +1,19 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "XKeyboard (XKB) extension to the X11 protocol"
+DESCRIPTION = " \
+xkbutils is a collection of small utilities utilizing the XKeyboard (XKB) \
+extension to the X11 protocol. \
+It includes: \
+    xkbbell  - generate XKB bell events \
+    xkbvleds - display the state of LEDs on an XKB keyboard in a window \
+    xkbwatch - reports changes in the XKB keyboard state \
+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=64322fab5239f5c8d97cf6e0e14f1c62"
+
+DEPENDS += "libxaw libxkbfile"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "502b14843f610af977dffc6cbf2102d5"
+SRC_URI[sha256sum] = "d2a18ab90275e8bca028773c44264d2266dab70853db4321bdbc18da75148130"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsatoms_1.1.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsatoms_1.1.2.bb
new file mode 100644
index 0000000..723d4e2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsatoms_1.1.2.bb
@@ -0,0 +1,14 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xlsatoms/"
+DESCRIPTION = "Xlsatoms lists the interned atoms defined on an X11 server"
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2b08d9e2e718ac83e6fe2b974d4b5fd8"
+
+DEPENDS += "libxmu"
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "5dcb6e6c4b28c8d7aeb45257f5a72a7d"
+SRC_URI[sha256sum] = "47e5dc7c3dbda6db2cf8c00cedac1722835c1550aa21cfdbc9ba83906694dea4"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsclients_1.1.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsclients_1.1.3.bb
new file mode 100644
index 0000000..583a531
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsclients_1.1.3.bb
@@ -0,0 +1,14 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xlsclients/"
+DESCRIPTION = "xlsclients is a utility for listing information about the \
+client applications running on a X11 server."
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=350e1b718a56df39cfe8ca9345ea4575"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "9fbf6b174a5138a61738a42e707ad8f5"
+SRC_URI[sha256sum] = "5d9666fcc6c3de210fc70d5a841a404955af709a616fde530fe4e8f7723e3d3d"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsfonts_1.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsfonts_1.0.5.bb
new file mode 100644
index 0000000..9feed75
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsfonts_1.0.5.bb
@@ -0,0 +1,10 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "server font list displayer for X"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xlsfonts/"
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ec74dd7ea4d10c4715a7c44f159a40b"
+
+SRC_URI[md5sum] = "6f5711bef8c765857a0887a91476283b"
+SRC_URI[sha256sum] = "40295bec35077cee93be2e4c26cc00268ed6ace779ae6e97766a866c1e3927fa"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmag_1.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmag_1.0.5.bb
new file mode 100644
index 0000000..d577421
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmag_1.0.5.bb
@@ -0,0 +1,11 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "xmag is a tool to magnify parts of the screen"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xmag/"
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3413fe6832380b44b69b172d2d1b2387"
+DEPENDS += " libxaw libxt"
+
+SRC_URI[md5sum] = "280b81cb09d1903aa868a058d90128ad"
+SRC_URI[sha256sum] = "4ace8795cf756be4ba387f30366045594ce26adda2f5ffe1f8e896825d0932c6"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.4.bb
new file mode 100644
index 0000000..9960706
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.4.bb
@@ -0,0 +1,10 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "Display a message or query in a window"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=73c7f696a728de728d7446cbca814cc5"
+
+DEPENDS += "libxaw"
+
+SRC_URI[md5sum] = "2dd5ae46fa18abc9331bc26250a25005"
+SRC_URI[sha256sum] = "bcdf4b461c439bb3ade6e1e41c47d6218b912da8e9396b7ad70856db2f95ab68"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.0.bb
new file mode 100644
index 0000000..85957e0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.0.bb
@@ -0,0 +1,9 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+SUMMARY = "X server resource database utility"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d1167c4f586bd41f0c62166db4384a69"
+
+DEPENDS += "libxmu"
+
+SRC_URI[md5sum] = "b54c7e3e53b4f332d41ed435433fbda0"
+SRC_URI[sha256sum] = "73827b6bbfc9d27ca287d95a1224c306d7053cd7b8156641698d7dc541ca565b"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.5.bb
new file mode 100644
index 0000000..a2a4941
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.5.bb
@@ -0,0 +1,13 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xrefresh/"
+DESCRIPTION = "xrefresh - refresh all or part of an X screen"
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dad633bce9c3cd0e3abf72a16e0057cf"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "a896382bc53ef3e149eaf9b13bc81d42"
+SRC_URI[sha256sum] = "3213671b0a8a9d1e8d1d5d9e3fd86842c894dd9acc1be2560eda50bc1fb791d6"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetmode_1.0.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetmode_1.0.0.bb
new file mode 100644
index 0000000..b757329
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetmode_1.0.0.bb
@@ -0,0 +1,15 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xsetmode/"
+DESCRIPTION = "xsetmode sets the mode of an XInput device to either absolute \
+or relative."
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9b37e00e7793b667cbc64f9df7b6d733"
+
+DEPENDS += "libxi"
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "d074e79d380b031d2f60e4cd56538c93"
+SRC_URI[sha256sum] = "988b47cd922991c6e6adbce15dc386ac75690b61744b526c3af5a4eaa9afa0aa"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetroot_1.1.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetroot_1.1.1.bb
new file mode 100644
index 0000000..2c79f27
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetroot_1.1.1.bb
@@ -0,0 +1,14 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xsetroot/"
+DESCRIPTION = "xsetroot is a root window parameter setting utility for X"
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6ea29dbee22324787c061f039e0529de"
+
+DEPENDS += "xbitmaps libxcursor"
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "7211b31ec70631829ebae9460999aa0b"
+SRC_URI[sha256sum] = "ba215daaa78c415fce11b9e58c365d03bb602eaa5ea916578d76861a468cc3d9"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xstdcmap_1.0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xstdcmap_1.0.3.bb
new file mode 100644
index 0000000..3f5511e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xstdcmap_1.0.3.bb
@@ -0,0 +1,15 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xstdcmap"
+DESCRIPTION = "The xstdcmap utility can be used to selectively define \
+standard colormap properties."
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2b08d9e2e718ac83e6fe2b974d4b5fd8"
+
+RDEPENDS_${PN} = "libxmu"
+BBCLASSEXTEND = "native"
+
+SRC_URI[md5sum] = "eb5473acaef15a5db9b50df29c6a7f90"
+SRC_URI[sha256sum] = "f648e2b0cf16aa29856de998e2c7204be39dc1f8daeda9464d32288e0b580fc1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_320.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_320.bb
new file mode 100644
index 0000000..f2abc3c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_320.bb
@@ -0,0 +1,30 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+SUMMARY = "xterm is the standard terminal emulator for the X Window System"
+DEPENDS = "libxaw xproto xextproto libxext libxau libxinerama libxpm ncurses"
+
+LIC_FILES_CHKSUM = "file://xterm.h;beginline=3;endline=31;md5=ee6435019d00b884cde8d7ba2b318ff0"
+
+SRC_URI = "http://invisible-mirror.net/archives/${BPN}/${BP}.tgz"
+
+SRC_URI[md5sum] = "0d7f0e6390d132ae59876b3870e5783d"
+SRC_URI[sha256sum] = "a60dbb574334c081425fa30f011cd9f571e3be7a91e2a84e252461798bce24a7"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[xft] = "--enable-freetype,--disable-freetype,libxft fontconfig freetype-native"
+
+EXTRA_OECONF = " --x-includes=${STAGING_INCDIR} \
+                 --x-libraries=${STAGING_LIBDIR} \
+                 FREETYPE_CONFIG=${STAGING_BINDIR_CROSS}/freetype-config \
+                 --disable-imake \
+                 --disable-rpath-hack \
+                 --disable-setuid"
+
+B = "${S}"
+
+do_configure() {
+    gnu-configize --force
+    sed -e "s%/usr/contrib/X11R6%${STAGING_LIBDIR}%g" -i configure
+    oe_runconf
+}
+
+FILES_${PN} += "${libdir}/X11"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwd_1.0.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwd_1.0.6.bb
new file mode 100644
index 0000000..694bf57
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwd_1.0.6.bb
@@ -0,0 +1,11 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "xwd is a tool to capture an X window or screen to file"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xwd/"
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c0cdb783e9a0198237371fdaa26a18bf"
+DEPENDS = "libxmu libxkbfile"
+
+SRC_URI[md5sum] = "6b5d48464c5f366e91efd08b62b12d94"
+SRC_URI[sha256sum] = "3bb396a2268d78de4b1c3e5237a85f7849d3434e87b3cd1f4d57eef614227d79"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwud_1.0.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwud_1.0.4.bb
new file mode 100644
index 0000000..33bd7f0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwud_1.0.4.bb
@@ -0,0 +1,12 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xwud/"
+DESCRIPTION = "xwud allows X users to display in a window an image saved \
+in a specially formatted dump file, such as produced by xwd."
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=31e8892c80b7a0c1c5f37c8e8ae6d794"
+
+SRC_URI[md5sum] = "3025b152b4f13fdffd0c46d0be587be6"
+SRC_URI[sha256sum] = "d6b3a09ccfe750868e26bd2384900ab5ff0d434f7f40cd272a50eda8aaa1f8bd"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xbitmaps_1.1.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xbitmaps_1.1.1.bb
new file mode 100644
index 0000000..8647f03
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xbitmaps_1.1.1.bb
@@ -0,0 +1,11 @@
+require xorg-data-common.inc
+
+SUMMARY = "Common X11 Bitmaps"
+LICENSE = "MIT"
+DEPENDS += "libxmu"
+RDEPENDS_${PN}-dev = ""
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=dbd075aaffa4a60a8d00696f2e4b9a8f"
+
+SRC_URI[md5sum] = "7444bbbd999b53bec6a60608a5301f4c"
+SRC_URI[sha256sum] = "3671b034356bbc4d32d052808cf646c940ec8b2d1913adac51b1453e41aa1e9d"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc
new file mode 100644
index 0000000..b230962
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc
@@ -0,0 +1,10 @@
+HOMEPAGE = "http://www.x.org"
+SECTION = "x11/data"
+LICENSE = "MIT-X"
+
+XORG_PN = "${BPN}"
+
+SRC_URI = "${XORG_MIRROR}/individual/data/${BP}.tar.bz2"
+S = "${WORKDIR}/${XORG_PN}-${PV}"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-doc-common.inc b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-doc-common.inc
new file mode 100644
index 0000000..f4b8b00
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-doc-common.inc
@@ -0,0 +1,12 @@
+DESCRIPTION = "X documentation"
+HOMEPAGE = "http://www.x.org"
+SECTION = "x11/docs"
+LICENSE = "MIT-X"
+
+SRC_URI = "${XORG_MIRROR}/individual/doc/${BPN}-${PV}.tar.bz2"
+
+S = "${WORKDIR}/${BPN}-${PV}"
+
+INC_PR = "r1"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-sgml-doctools_1.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-sgml-doctools_1.7.bb
new file mode 100644
index 0000000..80f1f00
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-sgml-doctools_1.7.bb
@@ -0,0 +1,12 @@
+require xorg-doc-common.inc
+PE = "1"
+PR = "${INC_PR}.0"
+
+DEPENDS += "util-macros"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=c8c6c808cd3c797a07b24e443af1c449"
+
+SRC_URI[md5sum] = "2588efb3f49f7fc6ecf41ce42e0b2e5e"
+SRC_URI[sha256sum] = "84fd94e5c50556e6f77501485f8a48724cf3c95c6d58480bc280258ba14580c8"
+
+FILES_${PN} += " /usr/share/sgml/X11"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-mtev/fix-it.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-mtev/fix-it.patch
new file mode 100644
index 0000000..771a2a8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-mtev/fix-it.patch
@@ -0,0 +1,153 @@
+diff --git a/src/multitouch.c b/src/multitouch.c
+index c55d742..4a8192d 100644
+--- a/src/multitouch.c
++++ b/src/multitouch.c
+@@ -114,7 +114,7 @@ static int init_properties(DeviceIntPtr dev)
+ 	return Success;
+ }
+ 
+-static int device_init(DeviceIntPtr dev, LocalDevicePtr local)
++static int device_init(DeviceIntPtr dev, InputInfoPtr local)
+ {
+ 	struct mtev_mtouch *mt = local->private;
+ 	Atom atom;
+@@ -222,7 +222,7 @@ static int device_init(DeviceIntPtr dev, LocalDevicePtr local)
+ 			xf86InitValuatorAxisStruct(dev, val, axes_labels[val],
+ 						   min,
+ 						   max,
+-						   1, 0, 1);
++						   1, 0, 1,Absolute);
+ 			xf86InitValuatorDefaults(dev, val);
+ 		}
+ 	}
+@@ -232,7 +232,7 @@ static int device_init(DeviceIntPtr dev, LocalDevicePtr local)
+ 	return Success;
+ }
+ 
+-static int device_on(LocalDevicePtr local)
++static int device_on(InputInfoPtr local)
+ {
+ 	struct mtev_mtouch *mt = local->private;
+ 	local->fd = xf86OpenSerial(local->options);
+@@ -248,7 +248,7 @@ static int device_on(LocalDevicePtr local)
+ 	return Success;
+ }
+ 
+-static int device_off(LocalDevicePtr local)
++static int device_off(InputInfoPtr local)
+ {
+ 	struct mtev_mtouch *mt = local->private;
+ 	xf86RemoveEnabledDevice(local);
+@@ -259,12 +259,12 @@ static int device_off(LocalDevicePtr local)
+ 	return Success;
+ }
+ 
+-static int device_close(LocalDevicePtr local)
++static int device_close(InputInfoPtr local)
+ {
+ 	return Success;
+ }
+ 
+-static void process_state(LocalDevicePtr local,
++static void process_state(InputInfoPtr local,
+ 			  const struct mtev_mtouch *mt)
+ {
+ 
+@@ -321,22 +321,22 @@ static void process_state(LocalDevicePtr local,
+ 	}
+ 
+ 	/* Some x-clients assume they get motion events before button down */
++	xf86Msg(X_INFO,"down %d|pdown %d\n", down, pdown);
+ 	if (down)
+ 		xf86PostMotionEventP(local->dev, TRUE,
+ 				     0, down * MT_AXIS_PER_FINGER, valuators);
+-
+ 	if(down && pdown == 0)
+ 		xf86PostButtonEventP(local->dev, TRUE,
+ 				     1, 1,
+ 				     0, down * MT_AXIS_PER_FINGER, valuators);
+-	else if (down == 0 && pdown)
+-		xf86PostButtonEvent(local->dev, TRUE, 1, 0, 0, 0);
+-
++	else if (down == 0 && pdown){
++		xf86PostButtonEvent(local->dev, TRUE, 1, 1, 0, 0);
++	}
+ 	pdown = !!down;
+ }
+ 
+ /* called for each full received packet from the touchpad */
+-static void read_input(LocalDevicePtr local)
++static void read_input(InputInfoPtr local)
+ {
+ 	struct mtev_mtouch *mt = local->private;
+ 	while (mtouch_read_synchronized_event(mt, local->fd)) {
+@@ -346,7 +346,7 @@ static void read_input(LocalDevicePtr local)
+ 
+ static Bool device_control(DeviceIntPtr dev, int mode)
+ {
+-	LocalDevicePtr local = dev->public.devicePrivate;
++	InputInfoPtr local = dev->public.devicePrivate;
+ 	switch (mode) {
+ 	case DEVICE_INIT:
+ 		xf86Msg(X_INFO, "device control: init\n");
+@@ -366,39 +366,29 @@ static Bool device_control(DeviceIntPtr dev, int mode)
+ 	}
+ }
+ 
+-static InputInfoPtr preinit(InputDriverPtr drv, IDevPtr dev, int flags)
++static InputInfoPtr preinit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
+ {
+ 	struct mtev_mtouch *mt;
+-	InputInfoPtr local = xf86AllocateInput(drv, 0);
+-	if (!local)
+-		goto error;
++	int rc;
++
+ 	mt = calloc(1, sizeof(struct mtev_mtouch));
++
+ 	if (!mt)
+ 		goto error;
+ 
+-	local->name = dev->identifier;
+-	local->type_name = XI_TOUCHSCREEN;
+-	local->device_control = device_control;
+-	local->read_input = read_input;
+-	local->private = mt;
+-	local->flags = XI86_POINTER_CAPABLE |
+-		XI86_SEND_DRAG_EVENTS;
+-
+-	local->conf_idev = dev;
+-
+-	xf86CollectInputOptions(local, NULL, NULL);
+-	//xf86OptionListReport(local->options);
+-	xf86ProcessCommonOptions(local, local->options);
++	pInfo->private = mt;
++	pInfo->type_name = "UNKNOWN";
++	pInfo->device_control = device_control;
++	pInfo->read_input = read_input;
+ 
++	mt->swap_xy = xf86SetBoolOption(pInfo->options, "SwapAxes", FALSE);
++	mt->invert_x = xf86SetBoolOption(pInfo->options, "InvertX", FALSE);
++	mt->invert_y = xf86SetBoolOption(pInfo->options, "InvertY", FALSE);
+ 
+-	mt->swap_xy = xf86SetBoolOption(local->options, "SwapAxes", FALSE);
+-	mt->invert_x = xf86SetBoolOption(local->options, "InvertX", FALSE);
+-	mt->invert_y = xf86SetBoolOption(local->options, "InvertY", FALSE);
+-
+-	local->flags |= XI86_CONFIGURED;
++	return Success;
+ 
+ error:
+-	return local;
++	return !Success;
+ }
+ 
+ static void uninit(InputDriverPtr drv, InputInfoPtr local, int flags)
+@@ -415,7 +405,6 @@ static InputDriverRec MTEV = {
+ 	.PreInit = preinit,
+ 	.UnInit = uninit,
+ 	.module = NULL,
+-	.refCount = 0
+ };
+ 
+ static XF86ModuleVersionInfo VERSION = {
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-mtev_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-mtev_git.bb
new file mode 100644
index 0000000..547ec86
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-mtev_git.bb
@@ -0,0 +1,22 @@
+require recipes-graphics/xorg-driver/xorg-driver-input.inc
+SUMMARY = "X.Org X server -- multitouch input driver"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8a71d0475d08eee76d8b6d0c6dbec543"
+
+DEPENDS += "pixman"
+
+PNBLACKLIST[xf86-input-mtev] ?= "BROKEN: doesn't build with B!=S (Makefile without ${S} in sed call)"
+
+SRC_URI = "git://gitorious.org/xorg/xf86-input-mtev.git file://fix-it.patch"
+SRCREV = "1eb469166ffc095c5801475f057f911f97a6e641"
+S = "${WORKDIR}/git"
+PV = "1.0.0+gitr${SRCPV}"
+PR = "${INC_PR}.0"
+
+EXTRA_OEMAKE = "'INCLUDE=-I${STAGING_INCDIR}/xorg -I${STAGING_INCDIR}/pixman-1'"
+
+#skip xorg-driver-common.inc AC_CHECK_FILE mangling
+do_configure_prepend () {
+    sed 's#gcc#${CC}#g' -i Makefile
+    return
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/10-x11-input-tslib.fdi b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/10-x11-input-tslib.fdi
new file mode 100644
index 0000000..9060439
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/10-x11-input-tslib.fdi
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deviceinfo version="0.2">
+  <device>
+    <match key="info.capabilities" contains="input.touchpad">
+      <merge key="input.x11_driver" type="string">tslib</merge>
+    </match>
+    <match key="info.capabilities" contains="input.touchscreen">
+      <merge key="input.x11_driver" type="string">tslib</merge>
+    </match>
+  </device>
+</deviceinfo>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/99-xf86-input-tslib.rules b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/99-xf86-input-tslib.rules
new file mode 100644
index 0000000..ec130c2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/99-xf86-input-tslib.rules
@@ -0,0 +1,5 @@
+# create /dev/input/touchscreenX symlink, tag xf86-input-tslib as driver
+SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen%n", ENV{x11_driver}="tslib"
+SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="ads7846", SYMLINK+="input/touchscreen%n", ENV{x11_driver}="tslib"
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/double-free-crash.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/double-free-crash.patch
new file mode 100644
index 0000000..0775473
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/double-free-crash.patch
@@ -0,0 +1,20 @@
+xorg-server-1.7.3/hw/xfree86/common/xf86Helper.c contains this code
+causing a double free crash on chvt or exit:
+
+    /* This should *really* be handled in drv->UnInit(dev) call instead, but
+     * if the driver forgets about it make sure we free it or at least crash
+     * with flying colors */
+    if (pInp->private)
+	xfree(pInp->private);
+Index: xf86-input-tslib-0.0.6/src/tslib.c
+===================================================================
+--- xf86-input-tslib-0.0.6.orig/src/tslib.c
++++ xf86-input-tslib-0.0.6/src/tslib.c
+@@ -435,6 +435,7 @@ xf86TslibUninit(InputDriverPtr drv, Inpu
+ 	xf86TslibControlProc(pInfo->dev, DEVICE_OFF);
+ 	ts_close(priv->ts);
+ 	xfree(pInfo->private);
++	pInfo->private = NULL;
+ 	xf86DeleteInput(pInfo, 0);
+ }
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-0.0.6-xf86XInputSetScreen.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-0.0.6-xf86XInputSetScreen.patch
new file mode 100644
index 0000000..d16b4a5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-0.0.6-xf86XInputSetScreen.patch
@@ -0,0 +1,31 @@
+Fixes crash when a touchscreen event is received with xserver 1.12 and later:
+X: symbol lookup error: /usr/lib/xorg/modules/input/tslib_drv.so: undefined symbol: xf86XInputSetScreen
+
+Upstream-Status: Pending
+
+Taken from Gentoo:
+https://bugs.gentoo.org/show_bug.cgi?id=446432
+
+diff -ur xf86-input-tslib-0.0.6.orig/src/tslib.c xf86-input-tslib-0.0.6/src/tslib.c
+--- xf86-input-tslib-0.0.6.orig/src/tslib.c	2012-12-05 01:12:16.286597071 +0100
++++ xf86-input-tslib-0.0.6/src/tslib.c	2012-12-05 01:11:02.686598595 +0100
+@@ -75,6 +75,19 @@
+ #define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options))
+ #endif
+ 
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) > 13
++static void
++xf86XInputSetScreen(InputInfoPtr	pInfo,
++		    int			screen_number,
++		    int			x,
++		    int			y)
++{
++    if (miPointerGetScreen(pInfo->dev) !=
++          screenInfo.screens[screen_number]) {
++	miPointerSetScreen(pInfo->dev, screen_number, x, y);
++    }
++}
++#endif
+ 
+ enum { TSLIB_ROTATE_NONE=0, TSLIB_ROTATE_CW=270, TSLIB_ROTATE_UD=180, TSLIB_ROTATE_CCW=90 };
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-port-ABI-12-r48.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-port-ABI-12-r48.patch
new file mode 100644
index 0000000..6a6d5b9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-port-ABI-12-r48.patch
@@ -0,0 +1,196 @@
+Upstream-Status: Pending
+
+Taken from debian:
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=627075
+
+Index: xf86-input-tslib-trunk/src/tslib.c
+===================================================================
+--- xf86-input-tslib-trunk/src/tslib.c	(revision 48)
++++ xf86-input-tslib-trunk/src/tslib.c	(working copy)
+@@ -69,6 +69,13 @@
+ #define DEFAULT_HEIGHT		240
+ #define DEFAULT_WIDTH		320
+ 
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
++#define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options), NULL)
++#else
++#define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options))
++#endif
++
++
+ enum { TSLIB_ROTATE_NONE=0, TSLIB_ROTATE_CW=270, TSLIB_ROTATE_UD=180, TSLIB_ROTATE_CCW=90 };
+ 
+ enum button_state { BUTTON_NOT_PRESSED = 0, BUTTON_1_PRESSED = 1, BUTTON_3_CLICK = 3, BUTTON_3_CLICKED=4, BUTTON_EMULATION_OFF=-1 };
+@@ -106,7 +113,7 @@
+ }
+ 
+ static Bool
+-ConvertProc( LocalDevicePtr local,
++ConvertProc( InputInfoPtr local,
+ 			 int first,
+ 			 int num,
+ 			 int v0,
+@@ -135,7 +142,7 @@
+     return t;
+ }
+ 
+-static void ReadInput (LocalDevicePtr local)
++static void ReadInput (InputInfoPtr local)
+ {
+ 	struct ts_priv *priv = (struct ts_priv *) (local->private);
+ 	struct ts_sample samp;
+@@ -382,7 +389,11 @@
+ 					       axiswidth - 1,	/* max val */
+ 					       axiswidth,	/* resolution */
+ 					       0,		/* min_res */
+-					       axiswidth);	/* max_res */
++					       axiswidth	/* max_res */
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
++					       ,Absolute
++#endif
++					       );
+ 
+ 		InitValuatorAxisStruct(device, 1,
+ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+@@ -392,7 +403,11 @@
+ 					       axisheight - 1,	/* max val */
+ 					       axisheight,	/* resolution */
+ 					       0,		/* min_res */
+-					       axisheight);	/* max_res */
++					       axisheight	/* max_res */
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
++					       ,Absolute
++#endif
++					       );
+ 
+ 		if (InitProximityClassDeviceStruct (device) == FALSE) {
+ 			ErrorF ("Unable to allocate EVTouch touchscreen ProximityClassDeviceStruct\n");
+@@ -434,7 +449,7 @@
+ 	ErrorF("%s\n", __FUNCTION__);
+ 	xf86TslibControlProc(pInfo->dev, DEVICE_OFF);
+ 	ts_close(priv->ts);
+-	xfree(pInfo->private);
++	free(pInfo->private);
+ 	pInfo->private = NULL;
+ 	xf86DeleteInput(pInfo, 0);
+ }
+@@ -444,47 +459,57 @@
+  *
+  * called when the module subsection is found in XF86Config
+  */
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
++static int 
++xf86TslibInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
++#else
+ static InputInfoPtr
+ xf86TslibInit(InputDriverPtr drv, IDevPtr dev, int flags)
++#endif
+ {
+ 	struct ts_priv *priv;
+ 	char *s;
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+ 	InputInfoPtr pInfo;
++#endif
+ 
+-	priv = xcalloc (1, sizeof (struct ts_priv));
++	priv = calloc (1, sizeof (struct ts_priv));
+         if (!priv)
+-                return NULL;
++                return BadValue;
+ 
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+ 	if (!(pInfo = xf86AllocateInput(drv, 0))) {
+-		xfree(priv);
+-		return NULL;
++		free(priv);
++		return BadValue;
+ 	}
+ 
+ 	/* Initialise the InputInfoRec. */
+ 	pInfo->name = dev->identifier;
+-	pInfo->type_name = XI_TOUCHSCREEN;
+ 	pInfo->flags =
+ 	    XI86_KEYBOARD_CAPABLE | XI86_POINTER_CAPABLE |
+ 	    XI86_SEND_DRAG_EVENTS;
+-	pInfo->device_control = xf86TslibControlProc;
+-	pInfo->read_input = ReadInput;
+ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
+ 	pInfo->motion_history_proc = xf86GetMotionEvents;
+ 	pInfo->history_size = 0;
+ #endif
+-	pInfo->control_proc = NULL;
++	pInfo->conf_idev = dev;
+ 	pInfo->close_proc = NULL;
+-	pInfo->switch_mode = NULL;
+ 	pInfo->conversion_proc = ConvertProc;
+ 	pInfo->reverse_conversion_proc = NULL;
+-	pInfo->dev = NULL;
+ 	pInfo->private_flags = 0;
+ 	pInfo->always_core_feedback = 0;
+-	pInfo->conf_idev = dev;
++#endif
++
++	pInfo->type_name = XI_TOUCHSCREEN;
++	pInfo->control_proc = NULL;
++	pInfo->read_input = ReadInput;
++	pInfo->device_control = xf86TslibControlProc;
++	pInfo->switch_mode = NULL;
+ 	pInfo->private = priv;
++	pInfo->dev = NULL;
+ 
+ 	/* Collect the options, and process the common options. */
+-	xf86CollectInputOptions(pInfo, NULL, NULL);
++	COLLECT_INPUT_OPTIONS(pInfo, NULL);
+ 	xf86ProcessCommonOptions(pInfo, pInfo->options);
+ 
+ 	priv->screen_num = xf86SetIntOption(pInfo->options, "ScreenNumber", 0 );
+@@ -510,23 +535,31 @@
+ 		priv->rotate = TSLIB_ROTATE_NONE;
+ 	}
+ 
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+  	s = xf86CheckStrOption(dev->commonOptions, "path", NULL);
++#else
++	s = xf86CheckStrOption(pInfo->options, "path", NULL);
++#endif
+   	if (!s)
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+ 		s = xf86CheckStrOption(dev->commonOptions, "Device", NULL);
++#else
++		s = xf86CheckStrOption(pInfo->options, "Device", NULL);
++#endif
+  
+ 	priv->ts = ts_open(s, 1);
+-	xfree(s);
++	free(s);
+ 
+ 	if (!priv->ts) {
+ 		ErrorF("ts_open failed (device=%s)\n",s);
+ 		xf86DeleteInput(pInfo, 0);
+-		return NULL;
++		return BadValue;
+ 	}
+ 
+ 	if (ts_config(priv->ts)) {
+ 		ErrorF("ts_config failed\n");
+ 		xf86DeleteInput(pInfo, 0);
+-		return NULL;
++		return BadValue;
+ 	}
+ 
+ 	pInfo->fd = ts_fd(priv->ts);
+@@ -536,11 +569,13 @@
+ 		priv->state = BUTTON_EMULATION_OFF;
+ 	}
+ 
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+ 	/* Mark the device configured */
+ 	pInfo->flags |= XI86_CONFIGURED;
++#endif
+ 
+ 	/* Return the configured device */
+-	return (pInfo);
++	return Success;
+ }
+ 
+ _X_EXPORT InputDriverRec TSLIB = {
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xserver-174-XGetPointerControl.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xserver-174-XGetPointerControl.patch
new file mode 100644
index 0000000..a1f6ba8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xserver-174-XGetPointerControl.patch
@@ -0,0 +1,34 @@
+From Grazvydas Ignotas
+
+At least xserver 1.7.4 crashes on XGetPointerControl request because of xf86-input-tslib:
+
+Program received signal SIGSEGV, Segmentation fault.
+#0  0x000355e0 in ProcGetPointerControl (client=0x4a2e58) at devices.c:2122
+#1  0x00062fa8 in Dispatch () at dispatch.c:439
+#2  0x00022444 in main (argc=4, argv=0xbeebedc4, envp=0xbeebedd8) at main.c:285
+
+This happens because ptrfeed field is not set in device structure from tslib.
+To fix this, call InitPtrFeedbackClassDeviceStruct() during DEVICE_INIT to get necessary setup done (as done in other input drivers).
+
+---
+diff -ur xf86-input-tslib-0.0.6/src/tslib.c xf86-input-tslib-0.0.6_/src/tslib.c
+--- xf86-input-tslib-0.0.6/src/tslib.c	2010-02-09 12:23:22.000000000 +0200
++++ xf86-input-tslib-0.0.6_/src/tslib.c	2010-02-09 12:37:33.000000000 +0200
+@@ -103,8 +103,6 @@
+ static void
+ PointerControlProc(DeviceIntPtr dev, PtrCtrl * ctrl)
+ {
+-	ErrorF("%s\n", __FUNCTION__);
+-	return;
+ }
+ 
+ static Bool
+@@ -406,6 +404,8 @@
+ 		xf86MotionHistoryAllocate(pInfo);
+ #endif
+ 
++		if (!InitPtrFeedbackClassDeviceStruct(device, PointerControlProc))
++			return !Success;
+ 		break;
+ 
+ 	case DEVICE_ON:
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.6.bb
new file mode 100644
index 0000000..082c771
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.6.bb
@@ -0,0 +1,35 @@
+require recipes-graphics/xorg-driver/xorg-driver-input.inc
+SUMMARY = "X.Org X server -- tslib input driver"
+DEPENDS += "tslib"
+RRECOMMENDS_${PN} += "tslib-calibrate"
+RSUGGESTS_${PN} += "hal"
+
+# derived from xf86-input-void, that's why I kept MIT-X, but it's not clear, see COPYING
+LIC_FILES_CHKSUM = "file://src/tslib.c;endline=28;md5=bd62eaef222dcf5cd59e490a12bd795e \
+                    file://COPYING;md5=4641deddaa80fe7ca88e944e1fd94a94"
+
+PR = "${INC_PR}.1"
+
+SRC_URI = "http://www.pengutronix.de/software/xf86-input-tslib/download/xf86-input-tslib-${PV}.tar.bz2 \
+           file://double-free-crash.patch \
+           file://10-x11-input-tslib.fdi \
+           file://xserver-174-XGetPointerControl.patch \
+           file://99-xf86-input-tslib.rules \
+           file://xf86-input-tslib-port-ABI-12-r48.patch \
+           file://xf86-input-tslib-0.0.6-xf86XInputSetScreen.patch \
+"
+
+SRC_URI[md5sum] = "b7a4d2f11637ee3fcf432e044b1d017f"
+SRC_URI[sha256sum] = "5f46fdef095a6e44a69e0f0b57c7d665224b26d990d006611236d8332e85b105"
+
+do_configure_prepend() {
+    rm -rf ${S}/m4/ || true
+}
+do_install_append() {
+    install -d ${D}/${datadir}/hal/fdi/policy/20thirdparty
+    install -m 0644 ${WORKDIR}/10-x11-input-tslib.fdi ${D}/${datadir}/hal/fdi/policy/20thirdparty
+    install -d ${D}/lib/udev/rules.d
+    install -m 0644 ${WORKDIR}/99-xf86-input-tslib.rules ${D}/lib/udev/rules.d/
+}
+
+FILES_${PN} += "${datadir}/hal /lib/udev"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-void_1.4.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-void_1.4.1.bb
new file mode 100644
index 0000000..ca0b486
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-void_1.4.1.bb
@@ -0,0 +1,8 @@
+require recipes-graphics/xorg-driver/xorg-driver-input.inc
+SUMMARY = "X.Org X server -- void input driver"
+PR = "${INC_PR}.0"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=4be6a915bfbf111cd88706fc6a6f141b"
+
+SRC_URI[md5sum] = "5227013b52b3ca85d6b7ec8adea988d4"
+SRC_URI[sha256sum] = "f96e4f0a622821bf43a74bd419f2a18423343996c9d243c7e1430ba2d142339c"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_7.6.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_7.6.1.bb
new file mode 100644
index 0000000..f1d06f2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_7.6.1.bb
@@ -0,0 +1,20 @@
+require recipes-graphics/xorg-driver/xorg-driver-video.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=aabff1606551f9461ccf567739af63dc"
+
+SUMMARY = "X.Org X server -- ATI Radeon video driver"
+
+DESCRIPTION = "Open-source X.org graphics driver for ATI Radeon graphics"
+
+DEPENDS += "virtual/libx11 libxvmc drm xf86driproto glproto \
+            virtual/libgl xineramaproto libpciaccess"
+
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
+
+SRC_URI[md5sum] = "ede86cd3d1b1d8882f0aea61d9e924ed"
+SRC_URI[sha256sum] = "2516d9eeb8da8bcd3a01365ed1314919777910fa904ab268af342b5693e1d34c"
+
+EXTRA_OECONF += "--disable-glamor"
+
+RDEPENDS_${PN} += "xserver-xorg-module-exa"
+RRECOMMENDS_${PN} += "linux-firmware"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-geode/0001-Add-config.h-include-to-src-lx_memory.c.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-geode/0001-Add-config.h-include-to-src-lx_memory.c.patch
new file mode 100644
index 0000000..fcd2f68
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-geode/0001-Add-config.h-include-to-src-lx_memory.c.patch
@@ -0,0 +1,41 @@
+From 621d946e56efac2c779b83b1a5c6b645169c4ebd Mon Sep 17 00:00:00 2001
+From: "Brian A. Lloyd" <brian.lloyd@familyhonor.net>
+Date: Wed, 1 Oct 2014 12:35:18 +0300
+Subject: [PATCH] Add config.h include to src/lx_memory.c
+
+The src/lx_memory.c file uses the xf86.h header file.  This file must have
+HAVE_STRNDUP defined before calling it when the building platform has a strndup
+function.  When using config.h, this file doesn't have that define and so fails
+to compile.
+
+The attached patch adds the conditional config.h to this file so it may compile
+on the affected platforms.
+
+The patch is trivial and may be included and used under whatever licensing
+desired.
+
+Closes: Free Desktop Bug #84541
+
+Signed-off-by: Brian A. Lloyd <brian.lloyd@familyhonor.net>
+Upstream-Status: Backport
+---
+ src/lx_memory.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/lx_memory.c b/src/lx_memory.c
+index f26d280..992446f 100644
+--- a/src/lx_memory.c
++++ b/src/lx_memory.c
+@@ -22,6 +22,9 @@
+  * contributors may be used to endorse or promote products derived from this
+  * software without specific prior written permission.
+  */
++#if HAVE_CONFIG_H
++#include "config.h"
++#endif
+ 
+ #include "xf86.h"
+ #include "geode.h"
+-- 
+2.1.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-geode_2.11.16.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-geode_2.11.16.bb
new file mode 100644
index 0000000..d267598
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-geode_2.11.16.bb
@@ -0,0 +1,16 @@
+require recipes-graphics/xorg-driver/xorg-driver-video.inc
+LIC_FILES_CHKSUM = "file://COPYING;md5=e7f3e39474aeea5af381a8e103dafc36"
+
+SUMMARY = "X.org server -- Geode GX2/LX display driver"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://0001-Add-config.h-include-to-src-lx_memory.c.patch"
+SRC_URI[md5sum] = "35fa387f6a33f6b22a56ce4bda424392"
+SRC_URI[sha256sum] = "38fc1f55e29fb7985b90c9021a4b7e5295d42888bd669174f42f3b7f681fc1a7"
+
+COMPATIBLE_HOST = "i.86.*-linux"
+
+RDEPENDS_${PN} += "xserver-xorg-module-exa"
+
+# 2_2.11.16-r21.0/xf86-video-geode-2.11.16/src/gx_driver.c:376:20: error: implicit declaration of function 'xf86MapVidMem' [-Werror=implicit-function-declaration]
+PNBLACKLIST[xf86-video-geode] ?= "BROKEN, fails to build"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0001-fix-build-with-KMS-disabled.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0001-fix-build-with-KMS-disabled.patch
new file mode 100644
index 0000000..25e8320
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0001-fix-build-with-KMS-disabled.patch
@@ -0,0 +1,29 @@
+From f485e878bc8bb0e381a38a30009308c82fa8d672 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Thu, 16 Aug 2012 08:18:56 +0200
+Subject: [PATCH] fix build with KMS disabled
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/glamo.h |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/src/glamo.h b/src/glamo.h
+index d4a2f19..5fd5c04 100644
+--- a/src/glamo.h
++++ b/src/glamo.h
+@@ -37,8 +37,11 @@
+ #include "xf86.h"
+ #include "exa.h"
+ #include <linux/fb.h>
++
++#ifdef HAVE_KMS
+ #include <libdrm/drm.h>
+ #include <libdrm/glamo_bo.h>
++#endif
+ 
+ #define GLAMO_REG_BASE(c)		((c)->attr.address[0])
+ #define GLAMO_REG_SIZE(c)		(0x2400)
+-- 
+1.7.8.6
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0001-glamo-driver-remove-references-to-mibstore.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0001-glamo-driver-remove-references-to-mibstore.patch
new file mode 100644
index 0000000..fab0b23
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0001-glamo-driver-remove-references-to-mibstore.patch
@@ -0,0 +1,48 @@
+From 040ade8bb86a771fa4e71b41d2080254830ca9f3 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sat, 16 Mar 2013 17:44:37 +0100
+Subject: [PATCH] glamo*driver: remove references to mibstore
+
+* fix build with xserver-1.14
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/glamo-driver.c     | 2 --
+ src/glamo-kms-driver.c | 1 -
+ 2 files changed, 3 deletions(-)
+
+diff --git a/src/glamo-driver.c b/src/glamo-driver.c
+index 10b7762..22f57d7 100644
+--- a/src/glamo-driver.c
++++ b/src/glamo-driver.c
+@@ -14,7 +14,6 @@
+ #include "xf86_OSproc.h"
+ 
+ #include "mipointer.h"
+-#include "mibstore.h"
+ #include "micmap.h"
+ #include "colormapst.h"
+ #include "xf86cmap.h"
+@@ -612,7 +611,6 @@ GlamoScreenInit(SCREEN_INIT_ARGS_DECL)
+     }
+ 
+     xf86SetBlackWhitePixels(pScreen);
+-    miInitializeBackingStore(pScreen);
+     xf86SetBackingStore(pScreen);
+ 
+     /* software cursor */
+diff --git a/src/glamo-kms-driver.c b/src/glamo-kms-driver.c
+index c5c7a00..f192398 100644
+--- a/src/glamo-kms-driver.c
++++ b/src/glamo-kms-driver.c
+@@ -415,7 +415,6 @@ Bool GlamoKMSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc,
+ 
+ 	GlamoKMSExaInit(pScrn);
+ 
+-	miInitializeBackingStore(pScreen);
+ 	xf86SetBackingStore(pScreen);
+ 	xf86SetSilkenMouse(pScreen);
+ 	miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
+-- 
+1.8.1.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0001-glamo-kms-driver-drop-unused-xf86_config.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0001-glamo-kms-driver-drop-unused-xf86_config.patch
new file mode 100644
index 0000000..0d63743
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0001-glamo-kms-driver-drop-unused-xf86_config.patch
@@ -0,0 +1,35 @@
+From 963c221aa01be2ea99d39578d91e4aa08ec3ab0a Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Mon, 23 May 2011 14:29:38 +0200
+Subject: [PATCH] glamo-kms-driver: drop unused xf86_config
+
+* gcc-4.6 doesn't like unused variables which are only set and never read
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/glamo-kms-driver.c |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+diff --git a/src/glamo-kms-driver.c b/src/glamo-kms-driver.c
+index ce87caa..c5c7a00 100644
+--- a/src/glamo-kms-driver.c
++++ b/src/glamo-kms-driver.c
+@@ -208,7 +208,6 @@ static const xf86CrtcConfigFuncsRec crtc_config_funcs = {
+ 
+ Bool GlamoKMSPreInit(ScrnInfoPtr pScrn, int flags)
+ {
+-	xf86CrtcConfigPtr xf86_config;
+ 	GlamoPtr pGlamo;
+ 	rgb defaultWeight = { 0, 0, 0 };
+ 	int max_width, max_height;
+@@ -254,7 +253,6 @@ Bool GlamoKMSPreInit(ScrnInfoPtr pScrn, int flags)
+ 
+ 	/* Allocate an xf86CrtcConfig */
+ 	xf86CrtcConfigInit(pScrn, &crtc_config_funcs);
+-	xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+ 
+ 	max_width = 480;
+ 	max_height = 640;
+-- 
+1.7.5.rc3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0003-glamo-driver-adapt-to-xserver-0.13-video-API.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0003-glamo-driver-adapt-to-xserver-0.13-video-API.patch
new file mode 100644
index 0000000..cbdc6e7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0003-glamo-driver-adapt-to-xserver-0.13-video-API.patch
@@ -0,0 +1,279 @@
+From 57e8944e3cced03b9526bd075649d74d97c24899 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 20 Nov 2012 22:18:23 +0100
+Subject: [PATCH 3/3] glamo-driver: adapt to xserver-0.13 video API
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/compat-api.h   | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/glamo-driver.c | 43 ++++++++++++------------
+ 2 files changed, 118 insertions(+), 21 deletions(-)
+ create mode 100644 src/compat-api.h
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+new file mode 100644
+index 0000000..b1591b1
+--- /dev/null
++++ b/src/compat-api.h
+@@ -0,0 +1,96 @@
++/*
++ * Copyright 2012 Red Hat, Inc.
++ *
++ * 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 (including the next
++ * paragraph) 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.
++ *
++ * Author: Dave Airlie <airlied@redhat.com>
++ */
++
++/* this file provides API compat between server post 1.13 and pre it,
++   it should be reused inside as many drivers as possible */
++#ifndef COMPAT_API_H
++#define COMPAT_API_H
++
++#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
++#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
++#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
++#endif
++
++#ifndef XF86_HAS_SCRN_CONV
++#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
++#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
++#endif
++
++#ifndef XF86_SCRN_INTERFACE
++
++#define SCRN_ARG_TYPE int
++#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
++
++#define SCREEN_ARG_TYPE int
++#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
++
++#define SCREEN_INIT_ARGS_DECL int index, ScreenPtr pScreen, int argc, char **argv
++
++#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
++#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
++
++#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
++#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
++
++#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
++
++#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
++
++#define FREE_SCREEN_ARGS_DECL int arg, int flags
++#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0
++
++#define VT_FUNC_ARGS_DECL int arg, int flags
++#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags)
++
++#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex)
++#else
++#define SCRN_ARG_TYPE ScrnInfoPtr
++#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
++
++#define SCREEN_ARG_TYPE ScreenPtr
++#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
++
++#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
++
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
++#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
++
++#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
++#define CLOSE_SCREEN_ARGS pScreen
++
++#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
++#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
++
++#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
++#define FREE_SCREEN_ARGS(x) (x)
++
++#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
++#define VT_FUNC_ARGS(flags) pScrn
++
++#define XF86_ENABLEDISABLEFB_ARG(x) (x)
++
++#endif
++
++#endif
+diff --git a/src/glamo-driver.c b/src/glamo-driver.c
+index b13caae..10b7762 100644
+--- a/src/glamo-driver.c
++++ b/src/glamo-driver.c
+@@ -43,6 +43,7 @@
+ 
+ #include <sys/mman.h>
+ 
++#include "compat-api.h"
+ 
+ static Bool debug = 0;
+ 
+@@ -68,10 +69,10 @@ static Bool
+ GlamoPreInit(ScrnInfoPtr pScrn, int flags);
+ 
+ static Bool
+-GlamoScreenInit(int Index, ScreenPtr pScreen, int argc, char **argv);
++GlamoScreenInit(SCREEN_INIT_ARGS_DECL);
+ 
+ static Bool
+-GlamoCloseScreen(int scrnIndex, ScreenPtr pScreen);
++GlamoCloseScreen(CLOSE_SCREEN_ARGS_DECL);
+ 
+ static Bool
+ GlamoCrtcResize(ScrnInfoPtr scrn, int width, int height);
+@@ -86,10 +87,10 @@ static void
+ GlamoRestoreHW(ScrnInfoPtr pScren);
+ 
+ static Bool
+-GlamoEnterVT(int scrnIndex, int flags);
++GlamoEnterVT(VT_FUNC_ARGS_DECL);
+ 
+ static void
+-GlamoLeaveVT(int scrnIndex, int flags);
++GlamoLeaveVT(VT_FUNC_ARGS_DECL);
+ 
+ static void
+ GlamoLoadColormap(ScrnInfoPtr pScrn, int numColors, int *indices,
+@@ -248,8 +249,8 @@ GlamoUnmapMMIO(ScrnInfoPtr pScrn) {
+ }
+ 
+ static Bool
+-GlamoSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) {
+-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++GlamoSwitchMode(SWITCH_MODE_ARGS_DECL) {
++    SCRN_INFO_PTR(arg);
+     xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (pScrn);
+     xf86OutputPtr output = config->output[config->compat_output];
+     Rotation rotation;
+@@ -286,7 +287,7 @@ GlamoFbdevProbe(DriverPtr drv, GDevPtr *devSections, int numDevSections)
+ 
+ 	for (i = 0; i < numDevSections; i++) {
+ 
+-		dev = xf86FindOptionValue(devSections[i]->options, "Device");
++		dev = (char *) xf86FindOptionValue(devSections[i]->options, "Device");
+ 		if (fbdevHWProbe(NULL, dev, NULL)) {
+ 			int entity;
+ 			pScrn = NULL;
+@@ -430,7 +431,7 @@ GlamoPreInit(ScrnInfoPtr pScrn, int flags)
+ 
+     pGlamo->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
+ 
+-    fb_device = xf86FindOptionValue(pGlamo->pEnt->device->options, "Device");
++    fb_device = (char *) xf86FindOptionValue(pGlamo->pEnt->device->options, "Device");
+ 
+     /* open device */
+     if (!fbdevHWInit(pScrn, NULL, fb_device))
+@@ -523,7 +524,7 @@ GlamoPreInit(ScrnInfoPtr pScrn, int flags)
+ 
+ 
+ static Bool
+-GlamoScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
++GlamoScreenInit(SCREEN_INIT_ARGS_DECL)
+ {
+     ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+     GlamoPtr pGlamo = GlamoPTR(pScrn);
+@@ -545,7 +546,7 @@ GlamoScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ #endif
+ 
+     if (NULL == (pGlamo->fbmem = fbdevHWMapVidmem(pScrn))) {
+-        xf86DrvMsg(scrnIndex, X_ERROR, "mapping of video memory failed\n");
++        xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "mapping of video memory failed\n");
+         return FALSE;
+     }
+ 
+@@ -556,13 +557,13 @@ GlamoScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+     /* mi layer */
+     miClearVisualTypes();
+     if (!miSetVisualTypes(pScrn->depth, TrueColorMask, pScrn->rgbBits, TrueColor)) {
+-        xf86DrvMsg(scrnIndex, X_ERROR,
++        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                    "visual type setup failed for %d bits per pixel [1]\n",
+                    pScrn->bitsPerPixel);
+         return FALSE;
+     }
+     if (!miSetPixmapDepths()) {
+-      xf86DrvMsg(scrnIndex, X_ERROR, "pixmap depth setup failed\n");
++      xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "pixmap depth setup failed\n");
+       return FALSE;
+     }
+ 
+@@ -617,7 +618,7 @@ GlamoScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+     /* software cursor */
+     miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
+ 
+-    GlamoEnterVT(scrnIndex, 0);
++    GlamoEnterVT(VT_FUNC_ARGS(0));
+ 
+     xf86CrtcScreenInit(pScreen);
+ #if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,5,0,0,0)
+@@ -627,7 +628,7 @@ GlamoScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+     /* colormap */
+     pGlamo->colormap = NULL;
+     if (!miCreateDefColormap(pScreen)) {
+-        xf86DrvMsg(scrnIndex, X_ERROR,
++        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                    "internal error: miCreateDefColormap failed "
+                    "in GlamoScreenInit()\n");
+         return FALSE;
+@@ -652,9 +653,9 @@ GlamoScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ }
+ 
+ static Bool
+-GlamoCloseScreen(int scrnIndex, ScreenPtr pScreen)
++GlamoCloseScreen(CLOSE_SCREEN_ARGS_DECL)
+ {
+-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+     GlamoPtr pGlamo = GlamoPTR(pScrn);
+ 
+     if (pGlamo->accel)
+@@ -675,7 +676,7 @@ GlamoCloseScreen(int scrnIndex, ScreenPtr pScreen)
+ 
+     pScreen->CreateScreenResources = pGlamo->CreateScreenResources;
+     pScreen->CloseScreen = pGlamo->CloseScreen;
+-    return (*pScreen->CloseScreen)(scrnIndex, pScreen);
++    return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
+ }
+ 
+ static Bool
+@@ -826,8 +827,8 @@ GlamoRestoreHW(ScrnInfoPtr pScrn) {
+ }
+ 
+ static Bool
+-GlamoEnterVT(int scrnIndex, int flags) {
+-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++GlamoEnterVT(VT_FUNC_ARGS_DECL) {
++    SCRN_INFO_PTR(arg);
+     GlamoPtr pGlamo = GlamoPTR(pScrn);
+ 
+     GlamoSaveHW(pScrn);
+@@ -842,8 +843,8 @@ GlamoEnterVT(int scrnIndex, int flags) {
+ }
+ 
+ static void
+-GlamoLeaveVT(int scrnIndex, int flags) {
+-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++GlamoLeaveVT(VT_FUNC_ARGS_DECL) {
++    SCRN_INFO_PTR(arg);
+     GlamoPtr pGlamo = GlamoPTR(pScrn);
+ 
+     if (pGlamo->accel)
+-- 
+1.8.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0004-glamo.h-use-const-for-jbt6k74_state_path.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0004-glamo.h-use-const-for-jbt6k74_state_path.patch
new file mode 100644
index 0000000..a820371
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo/0004-glamo.h-use-const-for-jbt6k74_state_path.patch
@@ -0,0 +1,29 @@
+From 180a00634f351a09ceabc5695d8e1acc3e585501 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Fri, 12 Dec 2014 12:00:10 +0100
+Subject: [PATCH] glamo.h: use const for jbt6k74_state_path
+
+* fix build issue with xserver 1.16:
+  glamo-driver.c:501:32: error: assignment discards 'const' qualifier from pointer target type [-Werror]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/glamo.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/glamo.h b/src/glamo.h
+index 5fd5c04..5e072be 100644
+--- a/src/glamo.h
++++ b/src/glamo.h
+@@ -148,7 +148,7 @@ typedef struct {
+ #endif
+ 
+ #ifdef JBT6K74_SET_STATE
+-    char *jbt6k74_state_path;
++    const char *jbt6k74_state_path;
+     char saved_jbt6k74_state[14];
+ #endif
+ 
+-- 
+2.1.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo_git.bb
new file mode 100644
index 0000000..78c6564
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-glamo_git.bb
@@ -0,0 +1,23 @@
+require recipes-graphics/xorg-driver/xorg-driver-video.inc
+SUMMARY = "X.Org X server -- Glamo display driver with KMS support"
+DEPENDS += "libdrm"
+RDEPENDS_${PN} += "xserver-xorg-module-exa"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8cbd99fff773f92e844948f74ef0df8"
+
+PE = "2"
+PV = "1.0.0+gitr${SRCPV}"
+PR = "${INC_PR}.4"
+
+SRC_URI = "git://git.openmoko.org/git/xf86-video-glamo.git;branch=master \
+           file://0001-glamo-kms-driver-drop-unused-xf86_config.patch \
+           file://0001-fix-build-with-KMS-disabled.patch \
+           file://0003-glamo-driver-adapt-to-xserver-0.13-video-API.patch \
+           file://0001-glamo-driver-remove-references-to-mibstore.patch \   
+           file://0004-glamo.h-use-const-for-jbt6k74_state_path.patch \
+"
+
+S = "${WORKDIR}/git"
+SRCREV = "cb9ed17035a79e49dde26a1e7e2bc5f10fd8144b"
+
+EXTRA_OECONF = " --disable-kms "
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.12.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.12.bb
new file mode 100644
index 0000000..3a7507c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.12.bb
@@ -0,0 +1,17 @@
+require recipes-graphics/xorg-driver/xorg-driver-video.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=4641deddaa80fe7ca88e944e1fd94a94"
+
+SUMMARY = "X.Org X server -- nouveau video driver"
+
+DESCRIPTION = "Open-source X.org graphics driver for NVIDIA graphics"
+
+DEPENDS += "virtual/libx11 libxvmc drm xf86driproto glproto \
+            virtual/libgl xineramaproto libpciaccess"
+RDEPENDS_${PN} += "xserver-xorg-module-exa"
+
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
+
+SRC_URI[md5sum] = "dc79910c7b9e32321cefc7af250c7765"
+SRC_URI[sha256sum] = "0ea057ad7fc31caba2d4e46c7e418fe2b3c762b04fb8d382f53383397fd8391e"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-100dpi_1.0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-100dpi_1.0.3.bb
new file mode 100644
index 0000000..85a4466
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-100dpi_1.0.3.bb
@@ -0,0 +1,18 @@
+require recipes-graphics/xorg-font/xorg-font-common.inc
+
+SUMMARY = "Adobe 100 DPI fonts"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/font/adobe-100dpi/"
+SECTION = "x11/font"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5dfa0fdf45473b4ca0acf37d854df10e"
+
+DEPENDS = "util-macros-native font-util-native bdftopcf-native"
+RDEPENDS_${PN} = "encodings font-util"
+RDEPENDS_${PN}_class-native = "font-util-native"
+
+inherit distro_features_check
+# depends on bdftopcf-native -> virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[md5sum] = "1347c3031b74c9e91dc4dfa53b12f143"
+SRC_URI[sha256sum] = "b2c08433eab5cb202470aa9f779efefce8d9cab2534f34f3aa4a31d05671c054"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-utopia-100dpi_1.0.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-utopia-100dpi_1.0.4.bb
new file mode 100644
index 0000000..16e3d2c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-utopia-100dpi_1.0.4.bb
@@ -0,0 +1,18 @@
+require recipes-graphics/xorg-font/xorg-font-common.inc
+
+SUMMARY = "Adobe Utopia 100 DPI fonts"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/font/adobe-utopia-100dpi/"
+SECTION = "x11/font"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fa13e704b7241f60ef9105cc041b9732"
+
+DEPENDS = "util-macros-native font-util-native bdftopcf-native"
+RDEPENDS_${PN} = "encodings font-util"
+RDEPENDS_${PN}_class-native = "font-util-native"
+
+inherit distro_features_check
+# depends on bdftopcf-native -> virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[md5sum] = "66fb6de561648a6dce2755621d6aea17"
+SRC_URI[sha256sum] = "d16f5e3f227cc6dd07a160a71f443559682dbc35f1c056a5385085aaec4fada5"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-100dpi_1.0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-100dpi_1.0.3.bb
new file mode 100644
index 0000000..08ed6b6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-100dpi_1.0.3.bb
@@ -0,0 +1,18 @@
+require recipes-graphics/xorg-font/xorg-font-common.inc
+
+SUMMARY = "Bigelow & Holmes 100 DPI fonts"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/font/bh-100dpi/"
+SECTION = "x11/font"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=cffd5e9c4b61b3d74166ca74b99e460e"
+
+DEPENDS = "util-macros-native font-util-native bdftopcf-native"
+RDEPENDS_${PN} = "encodings font-util"
+RDEPENDS_${PN}_class-native = "font-util-native"
+
+inherit distro_features_check
+# depends on bdftopcf-native -> virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[md5sum] = "9f11ade089d689b9d59e0f47d26f39cd"
+SRC_URI[sha256sum] = "23c07162708e4b79eb33095c8bfa62c783717a9431254bbf44863734ea239481"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.3.bb
new file mode 100644
index 0000000..5ded41a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.3.bb
@@ -0,0 +1,18 @@
+require recipes-graphics/xorg-font/xorg-font-common.inc
+
+SUMMARY = "Bigelow & Holmes Lucida Typewriter 100 DPI fonts"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/font/bh-lucidatypewriter-100dpi/"
+SECTION = "x11/font"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0d221a9cd144806cb469735cc4775939"
+
+DEPENDS = "util-macros-native font-util-native bdftopcf-native"
+RDEPENDS_${PN} = "encodings font-util"
+RDEPENDS_${PN}_class-native = "font-util-native"
+
+inherit distro_features_check
+# depends on bdftopcf-native -> virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[md5sum] = "c8b73a53dcefe3e8d3907d3500e484a9"
+SRC_URI[sha256sum] = "62a83363c2536095fda49d260d21e0847675676e4e3415054064cbdffa641fbb"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bitstream-100dpi_1.0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bitstream-100dpi_1.0.3.bb
new file mode 100644
index 0000000..e8cfb61
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bitstream-100dpi_1.0.3.bb
@@ -0,0 +1,18 @@
+require recipes-graphics/xorg-font/xorg-font-common.inc
+
+SUMMARY = "Bitstream 100 DPI fonts"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/font/bitstream-100dpi/"
+SECTION = "x11/font"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=30330812324ff9d9bd9ea645bb944427"
+
+DEPENDS = "util-macros-native font-util-native bdftopcf-native"
+RDEPENDS_${PN} = "encodings font-util"
+RDEPENDS_${PN}_class-native = "font-util-native"
+
+inherit distro_features_check
+# depends on bdftopcf-native -> virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[md5sum] = "6b223a54b15ecbd5a1bc52312ad790d8"
+SRC_URI[sha256sum] = "ebe0d7444e3d7c8da7642055ac2206f0190ee060700d99cd876f8fc9964cb6ce"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-cursor-misc_1.0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-cursor-misc_1.0.3.bb
new file mode 100644
index 0000000..d425ce5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-cursor-misc_1.0.3.bb
@@ -0,0 +1,17 @@
+require recipes-graphics/xorg-font/xorg-font-common.inc
+
+SUMMARY = "X.org cursor fonts"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/font/cursor-misc/"
+SECTION = "x11/font"
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8b32ccac3ad25e75e68478deb7780265"
+
+DEPENDS = "util-macros-native font-util-native bdftopcf-native"
+RDEPENDS_${PN} = "encodings font-util"
+
+inherit distro_features_check
+# depends on bdftopcf-native -> virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[md5sum] = "3e0069d4f178a399cffe56daa95c2b63"
+SRC_URI[sha256sum] = "17363eb35eece2e08144da5f060c70103b59d0972b4f4d77fd84c9a7a2dba635"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-misc-misc_1.1.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-misc-misc_1.1.2.bb
new file mode 100644
index 0000000..a7c284a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-misc-misc_1.1.2.bb
@@ -0,0 +1,17 @@
+require recipes-graphics/xorg-font/xorg-font-common.inc
+
+SUMMARY = "X.org miscellaneous fonts"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/font/misc-misc/"
+SECTION = "x11/font"
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=200c507f595ee97008c7c5c3e94ab9a8"
+
+DEPENDS = "util-macros-native font-util-native bdftopcf-native"
+RDEPENDS_${PN} = "encodings font-util"
+
+inherit distro_features_check
+# depends on bdftopcf-native -> virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[md5sum] = "c88eb44b3b903d79fb44b860a213e623"
+SRC_URI[sha256sum] = "b8e77940e4e1769dc47ef1805918d8c9be37c708735832a07204258bacc11794"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/xorg-fonts-100dpi.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/xorg-fonts-100dpi.bb
new file mode 100644
index 0000000..158416b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-font/xorg-fonts-100dpi.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Xorg 100 DPI font set"
+LICENSE = "Custom"
+
+inherit packagegroup distro_features_check
+# rdepends on font recipes with this restriction
+REQUIRED_DISTRO_FEATURES = "x11"
+
+RDEPENDS_${PN} = "\
+	font-adobe-100dpi \
+	font-adobe-utopia-100dpi \
+	font-bh-100dpi \
+	font-bh-lucidatypewriter-100dpi \
+	font-bitstream-100dpi \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/liblbxutil-1.1.0/mkg3states-1.1.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/liblbxutil-1.1.0/mkg3states-1.1.patch
new file mode 100644
index 0000000..f9f4a63
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/liblbxutil-1.1.0/mkg3states-1.1.patch
@@ -0,0 +1,55 @@
+diff -uNr liblbxutil-1.1.0.orig/configure.ac liblbxutil-1.1.0/configure.ac
+--- liblbxutil-1.1.0.orig/configure.ac	2009-12-04 23:52:04.000000000 +0100
++++ liblbxutil-1.1.0/configure.ac	2009-12-16 10:45:00.000000000 +0100
+@@ -50,4 +50,5 @@
+ 
+ AC_OUTPUT([Makefile
+ 	   src/Makefile
++	   src/image/Makefile
+ 	   lbxutil.pc])
+diff -uNr liblbxutil-1.1.0.orig/src/image/Makefile.am liblbxutil-1.1.0/src/image/Makefile.am
+--- liblbxutil-1.1.0.orig/src/image/Makefile.am	1970-01-01 01:00:00.000000000 +0100
++++ liblbxutil-1.1.0/src/image/Makefile.am	2009-12-16 10:45:00.000000000 +0100
+@@ -0,0 +1,15 @@
++# evil hack
++CFLAGS=$(CFLAGS_FOR_BUILD)
++CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
++LDFLAGS=$(LDFLAGS_FOR_BUILD)
++
++CC=$(CC_FOR_BUILD)
++LIBTOOL = @LIBTOOL@ --tag=CC
++
++noinst_PROGRAMS = mkg3states
++
++mkg3states_SOURCES =				\
++	mkg3states.c
++
++mkg3states_CFLAGS=$(CFLAGS_FOR_BUILD)
++mkg3states_LDFLAGS=$(LDFLAGS_FOR_BUILD)
+diff -uNr liblbxutil-1.1.0.orig/src/Makefile.am liblbxutil-1.1.0/src/Makefile.am
+--- liblbxutil-1.1.0.orig/src/Makefile.am	2009-12-16 10:48:11.000000000 +0100
++++ liblbxutil-1.1.0/src/Makefile.am	2009-12-16 10:46:47.000000000 +0100
+@@ -3,10 +3,7 @@
+ AM_CFLAGS = $(CWARNFLAGS) $(LBXUTIL_CFLAGS)
+ INCLUDES = -I$(top_srcdir)/include
+ 
+-noinst_PROGRAMS = mkg3states
+-
+-mkg3states_SOURCES =				\
+-	$(srcdir)/image/mkg3states.c
++SUBDIRS = image
+ 
+ liblbxutil_la_SOURCES =				\
+ 	$(srcdir)/lbx_zlib/reqstats.h		\
+@@ -38,9 +35,8 @@
+ 
+ $(srcdir)/image/dfaxg42d.c: g3states.h
+ 
+-g3states.h: mkg3states
+-	-rm -f g3states.h
+-	$(AM_V_GEN) ./mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
++g3states.h: image/mkg3states
++	$(AM_V_GEN) ./image/mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
+ 
+ liblbxutil_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/liblbxutil_1.1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/liblbxutil_1.1.0.bb
new file mode 100644
index 0000000..7d26d14
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/liblbxutil_1.1.0.bb
@@ -0,0 +1,14 @@
+require recipes-graphics/xorg-lib/xorg-lib-common.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b0d5bdc98f7ebab3b6c3791d9bf40907"
+
+SUMMARY = "XFIXES Extension"
+DEPENDS += " xextproto xproto zlib"
+PE = "1"
+PR = "r11"
+
+SRC_URI += "file://mkg3states-1.1.patch"
+SRC_URI[md5sum] = "273329a78c2e9ea189ac416c7fde94a1"
+SRC_URI[sha256sum] = "c6b6ff7858ec619cafa8205debca6bf78c5610a2844a782ed643c7fd017cf8ae"
+
+export CC_FOR_BUILD = "gcc"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.13.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.13.bb
new file mode 100644
index 0000000..8ba5ac3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.13.bb
@@ -0,0 +1,28 @@
+require recipes-graphics/xorg-lib/xorg-lib-common.inc
+SUMMARY = "X Athena Widget Set"
+DEPENDS += "xproto virtual/libx11 libxext xextproto libxt libxmu libxpm libxau xmlto-native"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=1c65719d42900bb81b83e8293c20a364"
+
+PE = "1"
+PR = "r2"
+
+SRC_URI[md5sum] = "e5e06eb14a608b58746bdd1c0bd7b8e3"
+SRC_URI[sha256sum] = "8ef8067312571292ccc2bbe94c41109dcf022ea5a4ec71656a83d8cce9edb0cd"
+
+do_install_append () {
+    ln -sf libXaw6.so.6 ${D}${libdir}/libXaw.so.6
+    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so.7
+    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so
+}
+
+PACKAGES =+ "libxaw6 libxaw7 libxaw8"
+
+FILES_libxaw6 = "${libdir}/libXaw*.so.6*"
+FILES_libxaw7 = "${libdir}/libXaw*.so.7*"
+FILES_libxaw8 = "${libdir}/libXaw8.so.8*"
+
+# Avoid dependency on libxaw as it is not build
+RDEPENDS_${PN}-dev = ""
+
+XORG_PN = "libXaw"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxkbui_1.0.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxkbui_1.0.2.bb
new file mode 100644
index 0000000..66a717e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxkbui_1.0.2.bb
@@ -0,0 +1,10 @@
+require recipes-graphics/xorg-lib/xorg-lib-common.inc
+SUMMARY = "X11 keyboard UI presentation library"
+LICENSE = "GPL"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4641deddaa80fe7ca88e944e1fd94a94"
+DEPENDS += "virtual/libx11 libxt libxkbfile"
+PE = "1"
+PR = "r10"
+
+SRC_URI[md5sum] = "1143e456f7429e18e88f2eadb2f2b6b1"
+SRC_URI[sha256sum] = "20c23101d63234ee5f6d696dfa069b29c6c58e39eff433bcd7705b50b3ffa214"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0001-COPYING-add-GPLv2-license-file.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0001-COPYING-add-GPLv2-license-file.patch
new file mode 100644
index 0000000..29dd71a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0001-COPYING-add-GPLv2-license-file.patch
@@ -0,0 +1,364 @@
+From 834fa06920f88ceedf752964c8e296c653d541e4 Mon Sep 17 00:00:00 2001
+From: Yu Ke <ke.yu@intel.com>
+Date: Wed, 11 Apr 2012 14:26:16 +0200
+Subject: [PATCH 01/12] COPYING: add GPLv2 license file
+
+this is a local file recipe and the license file is missing.In order
+to pass the license checksum checking, the license file is needed. So
+this patch add the GPLv2 license file.
+
+Signed-off-by: Yu Ke <ke.yu@intel.com>
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ COPYING |  339 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 339 insertions(+), 0 deletions(-)
+ create mode 100644 COPYING
+
+diff --git a/COPYING b/COPYING
+new file mode 100644
+index 0000000..d511905
+--- /dev/null
++++ b/COPYING
+@@ -0,0 +1,339 @@
++		    GNU GENERAL PUBLIC LICENSE
++		       Version 2, June 1991
++
++ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++			    Preamble
++
++  The licenses for most software are designed to take away your
++freedom to share and change it.  By contrast, the GNU General Public
++License is intended to guarantee your freedom to share and change free
++software--to make sure the software is free for all its users.  This
++General Public License applies to most of the Free Software
++Foundation's software and to any other program whose authors commit to
++using it.  (Some other Free Software Foundation software is covered by
++the GNU Lesser General Public License instead.)  You can apply it to
++your programs, too.
++
++  When we speak of free software, we are referring to freedom, not
++price.  Our General Public Licenses are designed to make sure that you
++have the freedom to distribute copies of free software (and charge for
++this service if you wish), that you receive source code or can get it
++if you want it, that you can change the software or use pieces of it
++in new free programs; and that you know you can do these things.
++
++  To protect your rights, we need to make restrictions that forbid
++anyone to deny you these rights or to ask you to surrender the rights.
++These restrictions translate to certain responsibilities for you if you
++distribute copies of the software, or if you modify it.
++
++  For example, if you distribute copies of such a program, whether
++gratis or for a fee, you must give the recipients all the rights that
++you have.  You must make sure that they, too, receive or can get the
++source code.  And you must show them these terms so they know their
++rights.
++
++  We protect your rights with two steps: (1) copyright the software, and
++(2) offer you this license which gives you legal permission to copy,
++distribute and/or modify the software.
++
++  Also, for each author's protection and ours, we want to make certain
++that everyone understands that there is no warranty for this free
++software.  If the software is modified by someone else and passed on, we
++want its recipients to know that what they have is not the original, so
++that any problems introduced by others will not reflect on the original
++authors' reputations.
++
++  Finally, any free program is threatened constantly by software
++patents.  We wish to avoid the danger that redistributors of a free
++program will individually obtain patent licenses, in effect making the
++program proprietary.  To prevent this, we have made it clear that any
++patent must be licensed for everyone's free use or not licensed at all.
++
++  The precise terms and conditions for copying, distribution and
++modification follow.
++
++		    GNU GENERAL PUBLIC LICENSE
++   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
++
++  0. This License applies to any program or other work which contains
++a notice placed by the copyright holder saying it may be distributed
++under the terms of this General Public License.  The "Program", below,
++refers to any such program or work, and a "work based on the Program"
++means either the Program or any derivative work under copyright law:
++that is to say, a work containing the Program or a portion of it,
++either verbatim or with modifications and/or translated into another
++language.  (Hereinafter, translation is included without limitation in
++the term "modification".)  Each licensee is addressed as "you".
++
++Activities other than copying, distribution and modification are not
++covered by this License; they are outside its scope.  The act of
++running the Program is not restricted, and the output from the Program
++is covered only if its contents constitute a work based on the
++Program (independent of having been made by running the Program).
++Whether that is true depends on what the Program does.
++
++  1. You may copy and distribute verbatim copies of the Program's
++source code as you receive it, in any medium, provided that you
++conspicuously and appropriately publish on each copy an appropriate
++copyright notice and disclaimer of warranty; keep intact all the
++notices that refer to this License and to the absence of any warranty;
++and give any other recipients of the Program a copy of this License
++along with the Program.
++
++You may charge a fee for the physical act of transferring a copy, and
++you may at your option offer warranty protection in exchange for a fee.
++
++  2. You may modify your copy or copies of the Program or any portion
++of it, thus forming a work based on the Program, and copy and
++distribute such modifications or work under the terms of Section 1
++above, provided that you also meet all of these conditions:
++
++    a) You must cause the modified files to carry prominent notices
++    stating that you changed the files and the date of any change.
++
++    b) You must cause any work that you distribute or publish, that in
++    whole or in part contains or is derived from the Program or any
++    part thereof, to be licensed as a whole at no charge to all third
++    parties under the terms of this License.
++
++    c) If the modified program normally reads commands interactively
++    when run, you must cause it, when started running for such
++    interactive use in the most ordinary way, to print or display an
++    announcement including an appropriate copyright notice and a
++    notice that there is no warranty (or else, saying that you provide
++    a warranty) and that users may redistribute the program under
++    these conditions, and telling the user how to view a copy of this
++    License.  (Exception: if the Program itself is interactive but
++    does not normally print such an announcement, your work based on
++    the Program is not required to print an announcement.)
++
++These requirements apply to the modified work as a whole.  If
++identifiable sections of that work are not derived from the Program,
++and can be reasonably considered independent and separate works in
++themselves, then this License, and its terms, do not apply to those
++sections when you distribute them as separate works.  But when you
++distribute the same sections as part of a whole which is a work based
++on the Program, the distribution of the whole must be on the terms of
++this License, whose permissions for other licensees extend to the
++entire whole, and thus to each and every part regardless of who wrote it.
++
++Thus, it is not the intent of this section to claim rights or contest
++your rights to work written entirely by you; rather, the intent is to
++exercise the right to control the distribution of derivative or
++collective works based on the Program.
++
++In addition, mere aggregation of another work not based on the Program
++with the Program (or with a work based on the Program) on a volume of
++a storage or distribution medium does not bring the other work under
++the scope of this License.
++
++  3. You may copy and distribute the Program (or a work based on it,
++under Section 2) in object code or executable form under the terms of
++Sections 1 and 2 above provided that you also do one of the following:
++
++    a) Accompany it with the complete corresponding machine-readable
++    source code, which must be distributed under the terms of Sections
++    1 and 2 above on a medium customarily used for software interchange; or,
++
++    b) Accompany it with a written offer, valid for at least three
++    years, to give any third party, for a charge no more than your
++    cost of physically performing source distribution, a complete
++    machine-readable copy of the corresponding source code, to be
++    distributed under the terms of Sections 1 and 2 above on a medium
++    customarily used for software interchange; or,
++
++    c) Accompany it with the information you received as to the offer
++    to distribute corresponding source code.  (This alternative is
++    allowed only for noncommercial distribution and only if you
++    received the program in object code or executable form with such
++    an offer, in accord with Subsection b above.)
++
++The source code for a work means the preferred form of the work for
++making modifications to it.  For an executable work, complete source
++code means all the source code for all modules it contains, plus any
++associated interface definition files, plus the scripts used to
++control compilation and installation of the executable.  However, as a
++special exception, the source code distributed need not include
++anything that is normally distributed (in either source or binary
++form) with the major components (compiler, kernel, and so on) of the
++operating system on which the executable runs, unless that component
++itself accompanies the executable.
++
++If distribution of executable or object code is made by offering
++access to copy from a designated place, then offering equivalent
++access to copy the source code from the same place counts as
++distribution of the source code, even though third parties are not
++compelled to copy the source along with the object code.
++
++  4. You may not copy, modify, sublicense, or distribute the Program
++except as expressly provided under this License.  Any attempt
++otherwise to copy, modify, sublicense or distribute the Program is
++void, and will automatically terminate your rights under this License.
++However, parties who have received copies, or rights, from you under
++this License will not have their licenses terminated so long as such
++parties remain in full compliance.
++
++  5. You are not required to accept this License, since you have not
++signed it.  However, nothing else grants you permission to modify or
++distribute the Program or its derivative works.  These actions are
++prohibited by law if you do not accept this License.  Therefore, by
++modifying or distributing the Program (or any work based on the
++Program), you indicate your acceptance of this License to do so, and
++all its terms and conditions for copying, distributing or modifying
++the Program or works based on it.
++
++  6. Each time you redistribute the Program (or any work based on the
++Program), the recipient automatically receives a license from the
++original licensor to copy, distribute or modify the Program subject to
++these terms and conditions.  You may not impose any further
++restrictions on the recipients' exercise of the rights granted herein.
++You are not responsible for enforcing compliance by third parties to
++this License.
++
++  7. If, as a consequence of a court judgment or allegation of patent
++infringement or for any other reason (not limited to patent issues),
++conditions are imposed on you (whether by court order, agreement or
++otherwise) that contradict the conditions of this License, they do not
++excuse you from the conditions of this License.  If you cannot
++distribute so as to satisfy simultaneously your obligations under this
++License and any other pertinent obligations, then as a consequence you
++may not distribute the Program at all.  For example, if a patent
++license would not permit royalty-free redistribution of the Program by
++all those who receive copies directly or indirectly through you, then
++the only way you could satisfy both it and this License would be to
++refrain entirely from distribution of the Program.
++
++If any portion of this section is held invalid or unenforceable under
++any particular circumstance, the balance of the section is intended to
++apply and the section as a whole is intended to apply in other
++circumstances.
++
++It is not the purpose of this section to induce you to infringe any
++patents or other property right claims or to contest validity of any
++such claims; this section has the sole purpose of protecting the
++integrity of the free software distribution system, which is
++implemented by public license practices.  Many people have made
++generous contributions to the wide range of software distributed
++through that system in reliance on consistent application of that
++system; it is up to the author/donor to decide if he or she is willing
++to distribute software through any other system and a licensee cannot
++impose that choice.
++
++This section is intended to make thoroughly clear what is believed to
++be a consequence of the rest of this License.
++
++  8. If the distribution and/or use of the Program is restricted in
++certain countries either by patents or by copyrighted interfaces, the
++original copyright holder who places the Program under this License
++may add an explicit geographical distribution limitation excluding
++those countries, so that distribution is permitted only in or among
++countries not thus excluded.  In such case, this License incorporates
++the limitation as if written in the body of this License.
++
++  9. The Free Software Foundation may publish revised and/or new versions
++of the General Public License from time to time.  Such new versions will
++be similar in spirit to the present version, but may differ in detail to
++address new problems or concerns.
++
++Each version is given a distinguishing version number.  If the Program
++specifies a version number of this License which applies to it and "any
++later version", you have the option of following the terms and conditions
++either of that version or of any later version published by the Free
++Software Foundation.  If the Program does not specify a version number of
++this License, you may choose any version ever published by the Free Software
++Foundation.
++
++  10. If you wish to incorporate parts of the Program into other free
++programs whose distribution conditions are different, write to the author
++to ask for permission.  For software which is copyrighted by the Free
++Software Foundation, write to the Free Software Foundation; we sometimes
++make exceptions for this.  Our decision will be guided by the two goals
++of preserving the free status of all derivatives of our free software and
++of promoting the sharing and reuse of software generally.
++
++			    NO WARRANTY
++
++  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
++FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
++OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
++PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
++OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
++TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
++PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
++REPAIR OR CORRECTION.
++
++  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
++REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
++INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
++OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
++TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
++YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
++PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
++POSSIBILITY OF SUCH DAMAGES.
++
++		     END OF TERMS AND CONDITIONS
++
++	    How to Apply These Terms to Your New Programs
++
++  If you develop a new program, and you want it to be of the greatest
++possible use to the public, the best way to achieve this is to make it
++free software which everyone can redistribute and change under these terms.
++
++  To do so, attach the following notices to the program.  It is safest
++to attach them to the start of each source file to most effectively
++convey the exclusion of warranty; and each file should have at least
++the "copyright" line and a pointer to where the full notice is found.
++
++    <one line to give the program's name and a brief idea of what it does.>
++    Copyright (C) <year>  <name of author>
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License along
++    with this program; if not, write to the Free Software Foundation, Inc.,
++    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++
++Also add information on how to contact you by electronic and paper mail.
++
++If the program is interactive, make it output a short notice like this
++when it starts in an interactive mode:
++
++    Gnomovision version 69, Copyright (C) year name of author
++    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
++    This is free software, and you are welcome to redistribute it
++    under certain conditions; type `show c' for details.
++
++The hypothetical commands `show w' and `show c' should show the appropriate
++parts of the General Public License.  Of course, the commands you use may
++be called something other than `show w' and `show c'; they could even be
++mouse-clicks or menu items--whatever suits your program.
++
++You should also get your employer (if you work as a programmer) or your
++school, if any, to sign a "copyright disclaimer" for the program, if
++necessary.  Here is a sample; alter the names:
++
++  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
++  `Gnomovision' (which makes passes at compilers) written by James Hacker.
++
++  <signature of Ty Coon>, 1 April 1989
++  Ty Coon, President of Vice
++
++This General Public License does not permit incorporating your program into
++proprietary programs.  If your program is a subroutine library, you may
++consider it more useful to permit linking proprietary applications with the
++library.  If this is what you want to do, use the GNU Lesser General
++Public License instead of this License.
+-- 
+1.7.8.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0002-add-setdpi-Xinit.d-script.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0002-add-setdpi-Xinit.d-script.patch
new file mode 100644
index 0000000..23b5345
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0002-add-setdpi-Xinit.d-script.patch
@@ -0,0 +1,112 @@
+From 3d1a1a8273112668927a6c6bb3e361e896f5b229 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 11 Apr 2012 14:28:45 +0200
+Subject: [PATCH 02/12] add setdpi Xinit.d script
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/Xinit.d/50setdpi |   92 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 92 insertions(+), 0 deletions(-)
+ create mode 100644 X11/Xinit.d/50setdpi
+
+diff --git a/X11/Xinit.d/50setdpi b/X11/Xinit.d/50setdpi
+new file mode 100644
+index 0000000..04a2edd
+--- /dev/null
++++ b/X11/Xinit.d/50setdpi
+@@ -0,0 +1,92 @@
++#! /bin/sh
++#
++# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
++# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
++#
++# Filename: setDPI.sh
++# Date: 09-Apr-06
++
++# This script configures Xft.dpi dependent on your screens DPI. This insures that the same font-size
++# setting of 7 can be used on all machines.
++
++
++XDEFAULTS="/etc/X11/Xdefaults"
++
++
++
++set_dpi() {
++	
++	CURRENT_SETTING="`cat ${XDEFAULTS} | sed -n "/Xft.dpi\:/s/.*\:\(.*\)/\1/p" | sed -n "s/\ //p"`"	
++
++	if test "$CURRENT_SETTING" != "$1"
++	then
++		echo "Using Xft.dpi of $SET_SCREEN_DPI for your $SCREEN_DPI DPI screen"
++		
++		if grep -q "Xft.dpi" "$XDEFAULTS"
++		then
++			cat "${XDEFAULTS}" | sed "s/^Xft.dpi\:.*/Xft.dpi\: $SET_SCREEN_DPI/" > "${XDEFAULTS}_"
++			mv "${XDEFAULTS}_" "${XDEFAULTS}"
++		else
++			echo -e "Xft.dpi: $SET_SCREEN_DPI\n" >> "$XDEFAULTS"
++		fi
++	else
++		echo "Your $SCREEN_DPI DPI screen is already configured."
++	fi
++}
++
++set_rxvt_font() {
++
++	CURRENT_SETTING="`cat ${XDEFAULTS} | sed  -n "/Rxvt\*font/s/\(.*\pixelsize=\)\(.*\)/\2/p"`"
++
++	if test "$1" -gt 100
++	then
++	
++		# Configure the rxvt font-size for your screen here:
++		test "$1" -gt 180 -a "$1" -lt "221" && RXVT_FONT_SIZE=16
++		
++		if test -z "$RXVT_FONT_SIZE"
++		then
++			echo "WARNING: No rxvt font-size configured for a $SCREEN_DPI DPI screen!"
++			echo "Defaulting to size 9"
++			RXVT_FONT_SIZE=9
++		fi
++		
++		if test "$CURRENT_SETTING" != "$RXVT_FONT_SIZE"
++		then
++			echo "Using a rxvt font-size of $RXVT_FONT_SIZE"
++			cat ${XDEFAULTS} | sed "/Rxvt\*font/s/\(.*\pixelsize\)\(=*.*\)/\1=$RXVT_FONT_SIZE/" > ${XDEFAULTS}_
++			mv ${XDEFAULTS}_ ${XDEFAULTS}
++		else
++			echo "The rxvt font-size is already configured"
++		fi 
++	fi
++}
++
++if test -z "$DISPLAY"
++then
++	echo "DISPLAY is not set, aborting..."
++	exit 0
++fi
++
++SCREEN_DPI="`/usr/bin/xdpyinfo | grep "dots per inch" | awk '{print $2}'| sed -n "s/\(.*\)x\(.*\)/\2/p"`"
++
++if test -z "$SCREEN_DPI"
++then
++	echo "WARNING: Couldn't read your screens DPI, defaulting to 100"
++	SCREEN_DPI=100
++fi
++
++# Configure your screen here:
++test "$SCREEN_DPI" -gt 180 -a "$SCREEN_DPI" -lt "221" && SET_SCREEN_DPI=160
++test "$SCREEN_DPI" -gt 90 -a "$SCREEN_DPI" -lt "121" && SET_SCREEN_DPI=100
++
++
++if test -z "$SET_SCREEN_DPI"
++then
++	echo "WARNING: No default configuration found for your $SCREEN_DPI DPI screen!"
++	echo "Using 100 DPI"
++	SET_SCREEN_DPI=100
++fi
++
++set_dpi "$SET_SCREEN_DPI"
++set_rxvt_font "$SCREEN_DPI"
+-- 
+1.7.8.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0003-add-89xdgautostart-Xsession.d-script.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0003-add-89xdgautostart-Xsession.d-script.patch
new file mode 100644
index 0000000..bf806a9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0003-add-89xdgautostart-Xsession.d-script.patch
@@ -0,0 +1,29 @@
+From a93a86c2ff1ca5eb35615f4e1568409ff342aa7f Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 11 Apr 2012 14:29:41 +0200
+Subject: [PATCH 03/12] add 89xdgautostart Xsession.d script
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/Xsession.d/89xdgautostart |    9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+ create mode 100644 X11/Xsession.d/89xdgautostart
+
+diff --git a/X11/Xsession.d/89xdgautostart b/X11/Xsession.d/89xdgautostart
+new file mode 100644
+index 0000000..9886f9f
+--- /dev/null
++++ b/X11/Xsession.d/89xdgautostart
+@@ -0,0 +1,9 @@
++#!/bin/sh
++
++XDGAUTOSTART=/etc/xdg/autostart
++if [ -d $XDGAUTOSTART ] ; then
++    for SCRIPT in $XDGAUTOSTART/*; do
++        CMD=`grep ^Exec= $SCRIPT | cut -d '=' -f 2`
++        $CMD &
++    done
++fi
+-- 
+1.7.8.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0005-add-XWindowManager-Xsession.d-script.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0005-add-XWindowManager-Xsession.d-script.patch
new file mode 100644
index 0000000..1782665
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0005-add-XWindowManager-Xsession.d-script.patch
@@ -0,0 +1,23 @@
+From b01a532ebb525552e23d7169a2aeb55c42b3ec99 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 11 Apr 2012 14:32:13 +0200
+Subject: [PATCH 05/12] add XWindowManager Xsession.d script
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/Xsession.d/90xXWindowManager |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+ create mode 100644 X11/Xsession.d/90xXWindowManager
+
+Index: xserver-common-1.34/X11/Xsession.d/90xXWindowManager
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ xserver-common-1.34/X11/Xsession.d/90xXWindowManager	2012-06-28 15:02:22.010521773 +0200
+@@ -0,0 +1,7 @@
++if [ -x $HOME/.Xsession ]; then
++    exec $HOME/.Xsession
++elif [ -x /usr/bin/x-session-manager ]; then
++    exec /usr/bin/x-session-manager
++else
++    exec /usr/bin/x-window-manager
++fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0006-add-support-for-etc-X11-xserver-system.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0006-add-support-for-etc-X11-xserver-system.patch
new file mode 100644
index 0000000..7ee8572
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0006-add-support-for-etc-X11-xserver-system.patch
@@ -0,0 +1,26 @@
+From 0c42e1fb84cc2bfe768bed17f3b979aca868cf64 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 11 Apr 2012 14:34:43 +0200
+Subject: [PATCH 06/12] add support for /etc/X11/xserver-system
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/xserver-common |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/X11/xserver-common b/X11/xserver-common
+index 4c7ed6e..6d8c9df 100644
+--- a/X11/xserver-common
++++ b/X11/xserver-common
+@@ -204,3 +204,8 @@ fi
+ if [ "$XSERVER" != "Xorg" ] ; then
+     ARGS="$ARGS $MOUSE $KDRIVEARGS"
+ fi
++
++# let a local script modify the variables                    
++if [ -e /etc/X11/xserver-system ] ; then                    
++       . /etc/X11/xserver-system                    
++fi                    
+-- 
+1.7.8.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0007-use-own-functions-file-instead-etc-init.d-functions.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0007-use-own-functions-file-instead-etc-init.d-functions.patch
new file mode 100644
index 0000000..8791226
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0007-use-own-functions-file-instead-etc-init.d-functions.patch
@@ -0,0 +1,87 @@
+From 63e6b9a54e1f12dbf7ddbfe3376fff4c382421a5 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 11 Apr 2012 14:36:02 +0200
+Subject: [PATCH 07/12] use own functions file instead /etc/init.d/functions
+
+* so we don't have to depend on initscripts
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ Makefile             |    1 +
+ X11/Xinit.d/11zaurus |    2 +-
+ X11/Xinit.d/12keymap |    2 +-
+ X11/functions        |   11 +++++++++++
+ X11/xserver-common   |    2 +-
+ 5 files changed, 15 insertions(+), 3 deletions(-)
+ create mode 100644 X11/functions
+
+diff --git a/Makefile b/Makefile
+index e2d9af9..caa5de1 100644
+--- a/Makefile
++++ b/Makefile
+@@ -23,6 +23,7 @@ install-program:
+ 	install -m 755 X11/Xserver $(DESTDIR)/etc/X11/Xserver
+ 	install -m 755 X11/Xsession $(DESTDIR)/etc/X11/Xsession
+ 	install -m 755 X11/xserver-common $(DESTDIR)/etc/X11/xserver-common
++	install -m 755 X11/functions $(DESTDIR)/etc/X11/functions
+ 	install -d $(DESTDIR)/etc/X11/xmodmap
+ 	install -m 644 X11/xmodmap/*.xmodmap $(DESTDIR)/etc/X11/xmodmap
+ 	install -m 644 X11/xmodmap/xmodmap-* $(DESTDIR)/etc/X11/xmodmap
+diff --git a/X11/Xinit.d/11zaurus b/X11/Xinit.d/11zaurus
+index 54ea6f5..23e7713 100644
+--- a/X11/Xinit.d/11zaurus
++++ b/X11/Xinit.d/11zaurus
+@@ -8,7 +8,7 @@ else
+    CHCK=chkhinge
+ fi
+ 
+-. /etc/init.d/functions
++. /etc/X11/functions
+ 
+ $CHCK -e
+ if [ $? = 12 ]; then
+diff --git a/X11/Xinit.d/12keymap b/X11/Xinit.d/12keymap
+index 7eac296..b7a7f2d 100644
+--- a/X11/Xinit.d/12keymap
++++ b/X11/Xinit.d/12keymap
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+ 
+-. /etc/init.d/functions
++. /etc/X11/functions
+ 
+ # since kdrive 1.4 there is no default keymap in server
+ xmodmap - </etc/X11/xmodmap/default.xmodmap
+diff --git a/X11/functions b/X11/functions
+new file mode 100644
+index 0000000..a1311ad
+--- /dev/null
++++ b/X11/functions
+@@ -0,0 +1,11 @@
++# -*-Shell-script-*-
++#
++# functions     This file contains functions shared by few X11 scripts
++#               machine_id also exists in /etc/init.d/functions but some
++#               people don't use initscripts anymore
++#
++
++machine_id() { # return the machine ID
++	awk 'BEGIN { FS=": " } /Hardware/ \
++		{ gsub(" ", "_", $2); print tolower($2) } ' </proc/cpuinfo
++}
+diff --git a/X11/xserver-common b/X11/xserver-common
+index 6d8c9df..de92bb7 100644
+--- a/X11/xserver-common
++++ b/X11/xserver-common
+@@ -30,7 +30,7 @@ if [ -f /etc/profile ]; then
+   . /etc/profile
+ fi
+ 
+-. /etc/init.d/functions
++. /etc/X11/functions
+ 
+ fallback_screen_arg() {
+     geom=`fbset | grep geometry`
+-- 
+1.7.8.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0008-xserver-common-add-dpi-and-nocursor-params-for-gta01.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0008-xserver-common-add-dpi-and-nocursor-params-for-gta01.patch
new file mode 100644
index 0000000..e35e4a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0008-xserver-common-add-dpi-and-nocursor-params-for-gta01.patch
@@ -0,0 +1,40 @@
+From 0ee7bf87e0c83abc79de3a99dfa3c87dd5c5b229 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 11 Apr 2012 14:37:29 +0200
+Subject: [PATCH 08/12] xserver-common: add dpi and nocursor params for gta01
+ and gta02
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/xserver-common |    8 ++++++--
+ 1 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/X11/xserver-common b/X11/xserver-common
+index de92bb7..f76fa5f 100644
+--- a/X11/xserver-common
++++ b/X11/xserver-common
+@@ -133,15 +133,19 @@ else
+             ARGS="$ARGS -screen ${SCREEN_SIZE}"
+             DPI="225" ;;
+         "gta01" )
+-            DPI="285"
++            DPI="280"
+             if [ "$XSERVER" != "Xorg" ] ; then
+                 ARGS="$ARGS -screen 480x640"
++            else
++                ARGS="$ARGS -dpi ${DPI} -nocursor"
+             fi
+             ;;
+         "gta02")
+-            DPI="285"
++            DPI="280"
+             if [ "$XSERVER" != "Xorg" ] ; then
+                 ARGS="$ARGS -screen ${SCREEN_SIZE}"
++            else
++                ARGS="$ARGS -dpi ${DPI} -nocursor"
+             fi
+             ;;
+         "motorola_ezx_platform")
+-- 
+1.7.8.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0009-xserver-common-add-support-for-n900-alias-nokia_rx-5.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0009-xserver-common-add-support-for-n900-alias-nokia_rx-5.patch
new file mode 100644
index 0000000..1a0bde8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0009-xserver-common-add-support-for-n900-alias-nokia_rx-5.patch
@@ -0,0 +1,32 @@
+From 6d6caecb7172b9b33e7364564b0e6eabf67b6e8b Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 11 Apr 2012 14:40:14 +0200
+Subject: [PATCH 09/12] xserver-common: add support for n900 alias
+ nokia_rx-51_board
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/xserver-common |    7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/X11/xserver-common b/X11/xserver-common
+index f76fa5f..86ed17f 100644
+--- a/X11/xserver-common
++++ b/X11/xserver-common
+@@ -132,6 +132,13 @@ else
+         "nokia_n800" | "nokia_rx-44" | "nokia_n770")
+             ARGS="$ARGS -screen ${SCREEN_SIZE}"
+             DPI="225" ;;
++        "nokia_rx-51_board" )                                     
++            DPI="267"                                    
++            if [ "$XSERVER" != "Xorg" ] ; then                    
++                ARGS="$ARGS -screen ${SCREEN_SIZE}"               
++            else                                                  
++                ARGS="$ARGS -dpi ${DPI} -nocursor"       
++            fi ;;                                                    
+         "gta01" )
+             DPI="280"
+             if [ "$XSERVER" != "Xorg" ] ; then
+-- 
+1.7.8.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0010-xserver-common-add-support-for-nexus-S-alias-herring.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0010-xserver-common-add-support-for-nexus-S-alias-herring.patch
new file mode 100644
index 0000000..688be40
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0010-xserver-common-add-support-for-nexus-S-alias-herring.patch
@@ -0,0 +1,27 @@
+From 52003e6b52b1417c1a0e57243d83349addcdacf6 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 11 Apr 2012 14:40:44 +0200
+Subject: [PATCH 10/12] xserver-common: add support for nexus S alias herring
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/xserver-common |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/X11/xserver-common b/X11/xserver-common
+index 86ed17f..5c9a6eb 100644
+--- a/X11/xserver-common
++++ b/X11/xserver-common
+@@ -126,6 +126,9 @@ else
+         "htc_tornado")
+             ARGS="$ARGS -hide-cursor"
+             DPI="100" ;;
++        "herring")
++            DPI="235"
++            ARGS="$ARGS -dpi ${DPI} -nocursor";;
+         "generic_omap1510/1610/1710")
+             ARGS="$ARGS -screen ${SCREEN_SIZE}"
+             DPI="225" ;;
+-- 
+1.7.8.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0011-xserver-common-add-support-for-nexus-one-alias-mahim.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0011-xserver-common-add-support-for-nexus-one-alias-mahim.patch
new file mode 100644
index 0000000..f80456d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0011-xserver-common-add-support-for-nexus-one-alias-mahim.patch
@@ -0,0 +1,28 @@
+From 0ecc978b7d8cb6867646fb2a29523ebef3afa016 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 11 Apr 2012 14:41:06 +0200
+Subject: [PATCH 11/12] xserver-common: add support for nexus one alias
+ mahimahi
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/xserver-common |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/X11/xserver-common b/X11/xserver-common
+index 5c9a6eb..55594fd 100644
+--- a/X11/xserver-common
++++ b/X11/xserver-common
+@@ -129,6 +129,9 @@ else
+         "herring")
+             DPI="235"
+             ARGS="$ARGS -dpi ${DPI} -nocursor";;
++        "mahimahi")
++            DPI="254"
++            ARGS="$ARGS -dpi ${DPI}";;
+         "generic_omap1510/1610/1710")
+             ARGS="$ARGS -screen ${SCREEN_SIZE}"
+             DPI="225" ;;
+-- 
+1.7.8.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0012-xserver-common-add-support-for-gta04-alias-OpenPhoen.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0012-xserver-common-add-support-for-gta04-alias-OpenPhoen.patch
new file mode 100644
index 0000000..54a0329
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0012-xserver-common-add-support-for-gta04-alias-OpenPhoen.patch
@@ -0,0 +1,33 @@
+From d194f0302582f1ca599f2ea58c15e15f4fd6bdef Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 11 Apr 2012 14:41:52 +0200
+Subject: [PATCH 12/12] xserver-common: add support for gta04 alias
+ OpenPhoenux
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/xserver-common |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/X11/xserver-common b/X11/xserver-common
+index 55594fd..434333e 100644
+--- a/X11/xserver-common
++++ b/X11/xserver-common
+@@ -161,6 +161,14 @@ else
+                 ARGS="$ARGS -dpi ${DPI} -nocursor"
+             fi
+             ;;
++        "gta04")
++            DPI="280"
++            if [ "$XSERVER" != "Xorg" ] ; then
++                ARGS="$ARGS -screen ${SCREEN_SIZE}"
++            else
++                ARGS="$ARGS -dpi ${DPI} -nocursor"
++            fi
++            ;;
+         "motorola_ezx_platform")
+             ARGS="$ARGS -screen 240x320"
+             DPI="170" ;;
+-- 
+1.7.8.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0013-xserver-common-add-support-for-tuna-alias-Galaxy-Nex.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0013-xserver-common-add-support-for-tuna-alias-Galaxy-Nex.patch
new file mode 100644
index 0000000..49321eb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0013-xserver-common-add-support-for-tuna-alias-Galaxy-Nex.patch
@@ -0,0 +1,33 @@
+From 176c3bd3d86c223fd44b0f15b62d38526bb3b0d2 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Fri, 17 Aug 2012 13:00:56 +0200
+Subject: [PATCH 13/13] xserver-common: add support for tuna alias Galaxy
+ Nexus
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/xserver-common |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/X11/xserver-common b/X11/xserver-common
+index d9325dd..017e5ae 100644
+--- a/X11/xserver-common
++++ b/X11/xserver-common
+@@ -169,6 +169,14 @@ else
+                 ARGS="$ARGS -dpi ${DPI} -nocursor"
+             fi
+             ;;
++        "tuna")
++            DPI="316"
++            if [ "$XSERVER" != "Xorg" ] ; then
++                ARGS="$ARGS -screen ${SCREEN_SIZE}"
++            else
++                ARGS="$ARGS -dpi ${DPI} -nocursor"
++            fi
++            ;;
+         "motorola_ezx_platform")
+             ARGS="$ARGS -screen 240x320"
+             DPI="170" ;;
+-- 
+1.7.8.6
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0014-Xserver-Start-Xsession-like-x11-common-does.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0014-Xserver-Start-Xsession-like-x11-common-does.patch
new file mode 100644
index 0000000..5a75964
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0014-Xserver-Start-Xsession-like-x11-common-does.patch
@@ -0,0 +1,26 @@
+From 8171f89944969a081be1ac193b2a59016e39a345 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 29 Oct 2013 17:07:21 +0100
+Subject: [PATCH 14/14] Xserver: Start Xsession like x11-common does
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ X11/Xserver | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/X11/Xserver b/X11/Xserver
+index 559f059..4b88637 100755
+--- a/X11/Xserver
++++ b/X11/Xserver
+@@ -4,6 +4,6 @@
+ . /etc/X11/xserver-common
+ 
+ echo "tslib: $TSLIB_TSDEVICE"
+-echo "exec $XSERVER $ARGS -dpi $DPI $*"
+-exec $XSERVER $ARGS -dpi $DPI $*
++echo "exec xinit /etc/X11/Xsession -- $BINDIR/$XSERVER $ARGS -dpi $DPI $*"
+ 
++exec xinit /etc/X11/Xsession -- $BINDIR/$XSERVER $ARGS -dpi $DPI $*
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0015-xserver-common-disable-TCP-connections.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0015-xserver-common-disable-TCP-connections.patch
new file mode 100644
index 0000000..06df261
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common-1.34/0015-xserver-common-disable-TCP-connections.patch
@@ -0,0 +1,24 @@
+From: Javier Viguera <javier.viguera@digi.com>
+Date: Wed, 26 Nov 2014 09:24:44 +0100
+Subject: [PATCH] xserver-common: disable TCP connections
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Javier Viguera <javier.viguera@digi.com>
+---
+ X11/xserver-common | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/X11/xserver-common b/X11/xserver-common
+index 017e5aee1ab0..4dc48c412741 100644
+--- a/X11/xserver-common
++++ b/X11/xserver-common
+@@ -44,7 +44,7 @@ SCREEN_SIZE=`fallback_screen_arg`
+ export USER=root
+ export XSERVER_DEFAULT_ORIENTATION=normal
+ 
+-ARGS="-br -pn $INPUT_EXTRA_ARGS"
++ARGS="-br -pn -nolisten tcp $INPUT_EXTRA_ARGS"
+ DPI="100"
+ MOUSE=""
+ KDRIVEARGS=""
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
new file mode 100644
index 0000000..0315ed7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
@@ -0,0 +1,45 @@
+SUMMARY = "Common X11 scripts and support files"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+PR = "r8"
+
+# we are using a gpe-style Makefile
+inherit gpe
+
+SRC_URI[md5sum] = "82f2f84cd96610e8f7b92c700cd31c14"
+SRC_URI[sha256sum] = "cd04c33418f776b1e13fcc7af3d6bd0c7cccd03fbabd7dbcd97f88166cc34210"
+
+SRC_URI_append = " \
+    file://0001-COPYING-add-GPLv2-license-file.patch \
+    file://0002-add-setdpi-Xinit.d-script.patch \
+    file://0003-add-89xdgautostart-Xsession.d-script.patch \
+    file://0005-add-XWindowManager-Xsession.d-script.patch \
+    file://0006-add-support-for-etc-X11-xserver-system.patch \
+    file://0007-use-own-functions-file-instead-etc-init.d-functions.patch \
+    file://0008-xserver-common-add-dpi-and-nocursor-params-for-gta01.patch \
+    file://0009-xserver-common-add-support-for-n900-alias-nokia_rx-5.patch \
+    file://0010-xserver-common-add-support-for-nexus-S-alias-herring.patch \
+    file://0011-xserver-common-add-support-for-nexus-one-alias-mahim.patch \
+    file://0012-xserver-common-add-support-for-gta04-alias-OpenPhoen.patch \
+    file://0013-xserver-common-add-support-for-tuna-alias-Galaxy-Nex.patch \
+    file://0014-Xserver-Start-Xsession-like-x11-common-does.patch \
+    file://0015-xserver-common-disable-TCP-connections.patch \
+"
+
+do_install_append() {
+    sed -i 's:^BINDIR=.*$:BINDIR=${bindir}:' ${D}/etc/X11/xserver-common
+    # Rename all Xsession files not ending with .sh
+    # Unfortunatelly when xinput-calibrator was moved to oe-core
+    # its Xsession file got name 30xinput_calibrate.sh and ls -X sorts it
+    # last, not respecting numbers for sorting them
+    for i in ${D}/${sysconfdir}/X11/Xsession.d/*; do
+        echo $i | grep '.sh$' || mv $i $i.sh
+    done
+}
+
+RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo fbset xinput-calibrator"
+
+RCONFLICTS_${PN} = "xserver-kdrive-common x11-common"
+RREPLACES_${PN} = "xserver-kdrive-common x11-common"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/gplv2-license.patch b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/gplv2-license.patch
new file mode 100644
index 0000000..ec93253
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/gplv2-license.patch
@@ -0,0 +1,353 @@
+COPYING: add GPLv2 license file
+
+this is a local file recipe and the license file is missing.In order
+to pass the license checksum checking, the license file is needed. So
+this patch add the GPLv2 license file.
+
+Signed-off-by: Yu Ke <ke.yu@intel.com>
+
+diff --git a/COPYING b/COPYING
+new file mode 100644
+index 0000000..d511905
+--- /dev/null
++++ b/COPYING
+@@ -0,0 +1,339 @@
++		    GNU GENERAL PUBLIC LICENSE
++		       Version 2, June 1991
++
++ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++			    Preamble
++
++  The licenses for most software are designed to take away your
++freedom to share and change it.  By contrast, the GNU General Public
++License is intended to guarantee your freedom to share and change free
++software--to make sure the software is free for all its users.  This
++General Public License applies to most of the Free Software
++Foundation's software and to any other program whose authors commit to
++using it.  (Some other Free Software Foundation software is covered by
++the GNU Lesser General Public License instead.)  You can apply it to
++your programs, too.
++
++  When we speak of free software, we are referring to freedom, not
++price.  Our General Public Licenses are designed to make sure that you
++have the freedom to distribute copies of free software (and charge for
++this service if you wish), that you receive source code or can get it
++if you want it, that you can change the software or use pieces of it
++in new free programs; and that you know you can do these things.
++
++  To protect your rights, we need to make restrictions that forbid
++anyone to deny you these rights or to ask you to surrender the rights.
++These restrictions translate to certain responsibilities for you if you
++distribute copies of the software, or if you modify it.
++
++  For example, if you distribute copies of such a program, whether
++gratis or for a fee, you must give the recipients all the rights that
++you have.  You must make sure that they, too, receive or can get the
++source code.  And you must show them these terms so they know their
++rights.
++
++  We protect your rights with two steps: (1) copyright the software, and
++(2) offer you this license which gives you legal permission to copy,
++distribute and/or modify the software.
++
++  Also, for each author's protection and ours, we want to make certain
++that everyone understands that there is no warranty for this free
++software.  If the software is modified by someone else and passed on, we
++want its recipients to know that what they have is not the original, so
++that any problems introduced by others will not reflect on the original
++authors' reputations.
++
++  Finally, any free program is threatened constantly by software
++patents.  We wish to avoid the danger that redistributors of a free
++program will individually obtain patent licenses, in effect making the
++program proprietary.  To prevent this, we have made it clear that any
++patent must be licensed for everyone's free use or not licensed at all.
++
++  The precise terms and conditions for copying, distribution and
++modification follow.
++
++		    GNU GENERAL PUBLIC LICENSE
++   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
++
++  0. This License applies to any program or other work which contains
++a notice placed by the copyright holder saying it may be distributed
++under the terms of this General Public License.  The "Program", below,
++refers to any such program or work, and a "work based on the Program"
++means either the Program or any derivative work under copyright law:
++that is to say, a work containing the Program or a portion of it,
++either verbatim or with modifications and/or translated into another
++language.  (Hereinafter, translation is included without limitation in
++the term "modification".)  Each licensee is addressed as "you".
++
++Activities other than copying, distribution and modification are not
++covered by this License; they are outside its scope.  The act of
++running the Program is not restricted, and the output from the Program
++is covered only if its contents constitute a work based on the
++Program (independent of having been made by running the Program).
++Whether that is true depends on what the Program does.
++
++  1. You may copy and distribute verbatim copies of the Program's
++source code as you receive it, in any medium, provided that you
++conspicuously and appropriately publish on each copy an appropriate
++copyright notice and disclaimer of warranty; keep intact all the
++notices that refer to this License and to the absence of any warranty;
++and give any other recipients of the Program a copy of this License
++along with the Program.
++
++You may charge a fee for the physical act of transferring a copy, and
++you may at your option offer warranty protection in exchange for a fee.
++
++  2. You may modify your copy or copies of the Program or any portion
++of it, thus forming a work based on the Program, and copy and
++distribute such modifications or work under the terms of Section 1
++above, provided that you also meet all of these conditions:
++
++    a) You must cause the modified files to carry prominent notices
++    stating that you changed the files and the date of any change.
++
++    b) You must cause any work that you distribute or publish, that in
++    whole or in part contains or is derived from the Program or any
++    part thereof, to be licensed as a whole at no charge to all third
++    parties under the terms of this License.
++
++    c) If the modified program normally reads commands interactively
++    when run, you must cause it, when started running for such
++    interactive use in the most ordinary way, to print or display an
++    announcement including an appropriate copyright notice and a
++    notice that there is no warranty (or else, saying that you provide
++    a warranty) and that users may redistribute the program under
++    these conditions, and telling the user how to view a copy of this
++    License.  (Exception: if the Program itself is interactive but
++    does not normally print such an announcement, your work based on
++    the Program is not required to print an announcement.)
++
++These requirements apply to the modified work as a whole.  If
++identifiable sections of that work are not derived from the Program,
++and can be reasonably considered independent and separate works in
++themselves, then this License, and its terms, do not apply to those
++sections when you distribute them as separate works.  But when you
++distribute the same sections as part of a whole which is a work based
++on the Program, the distribution of the whole must be on the terms of
++this License, whose permissions for other licensees extend to the
++entire whole, and thus to each and every part regardless of who wrote it.
++
++Thus, it is not the intent of this section to claim rights or contest
++your rights to work written entirely by you; rather, the intent is to
++exercise the right to control the distribution of derivative or
++collective works based on the Program.
++
++In addition, mere aggregation of another work not based on the Program
++with the Program (or with a work based on the Program) on a volume of
++a storage or distribution medium does not bring the other work under
++the scope of this License.
++
++  3. You may copy and distribute the Program (or a work based on it,
++under Section 2) in object code or executable form under the terms of
++Sections 1 and 2 above provided that you also do one of the following:
++
++    a) Accompany it with the complete corresponding machine-readable
++    source code, which must be distributed under the terms of Sections
++    1 and 2 above on a medium customarily used for software interchange; or,
++
++    b) Accompany it with a written offer, valid for at least three
++    years, to give any third party, for a charge no more than your
++    cost of physically performing source distribution, a complete
++    machine-readable copy of the corresponding source code, to be
++    distributed under the terms of Sections 1 and 2 above on a medium
++    customarily used for software interchange; or,
++
++    c) Accompany it with the information you received as to the offer
++    to distribute corresponding source code.  (This alternative is
++    allowed only for noncommercial distribution and only if you
++    received the program in object code or executable form with such
++    an offer, in accord with Subsection b above.)
++
++The source code for a work means the preferred form of the work for
++making modifications to it.  For an executable work, complete source
++code means all the source code for all modules it contains, plus any
++associated interface definition files, plus the scripts used to
++control compilation and installation of the executable.  However, as a
++special exception, the source code distributed need not include
++anything that is normally distributed (in either source or binary
++form) with the major components (compiler, kernel, and so on) of the
++operating system on which the executable runs, unless that component
++itself accompanies the executable.
++
++If distribution of executable or object code is made by offering
++access to copy from a designated place, then offering equivalent
++access to copy the source code from the same place counts as
++distribution of the source code, even though third parties are not
++compelled to copy the source along with the object code.
++
++  4. You may not copy, modify, sublicense, or distribute the Program
++except as expressly provided under this License.  Any attempt
++otherwise to copy, modify, sublicense or distribute the Program is
++void, and will automatically terminate your rights under this License.
++However, parties who have received copies, or rights, from you under
++this License will not have their licenses terminated so long as such
++parties remain in full compliance.
++
++  5. You are not required to accept this License, since you have not
++signed it.  However, nothing else grants you permission to modify or
++distribute the Program or its derivative works.  These actions are
++prohibited by law if you do not accept this License.  Therefore, by
++modifying or distributing the Program (or any work based on the
++Program), you indicate your acceptance of this License to do so, and
++all its terms and conditions for copying, distributing or modifying
++the Program or works based on it.
++
++  6. Each time you redistribute the Program (or any work based on the
++Program), the recipient automatically receives a license from the
++original licensor to copy, distribute or modify the Program subject to
++these terms and conditions.  You may not impose any further
++restrictions on the recipients' exercise of the rights granted herein.
++You are not responsible for enforcing compliance by third parties to
++this License.
++
++  7. If, as a consequence of a court judgment or allegation of patent
++infringement or for any other reason (not limited to patent issues),
++conditions are imposed on you (whether by court order, agreement or
++otherwise) that contradict the conditions of this License, they do not
++excuse you from the conditions of this License.  If you cannot
++distribute so as to satisfy simultaneously your obligations under this
++License and any other pertinent obligations, then as a consequence you
++may not distribute the Program at all.  For example, if a patent
++license would not permit royalty-free redistribution of the Program by
++all those who receive copies directly or indirectly through you, then
++the only way you could satisfy both it and this License would be to
++refrain entirely from distribution of the Program.
++
++If any portion of this section is held invalid or unenforceable under
++any particular circumstance, the balance of the section is intended to
++apply and the section as a whole is intended to apply in other
++circumstances.
++
++It is not the purpose of this section to induce you to infringe any
++patents or other property right claims or to contest validity of any
++such claims; this section has the sole purpose of protecting the
++integrity of the free software distribution system, which is
++implemented by public license practices.  Many people have made
++generous contributions to the wide range of software distributed
++through that system in reliance on consistent application of that
++system; it is up to the author/donor to decide if he or she is willing
++to distribute software through any other system and a licensee cannot
++impose that choice.
++
++This section is intended to make thoroughly clear what is believed to
++be a consequence of the rest of this License.
++
++  8. If the distribution and/or use of the Program is restricted in
++certain countries either by patents or by copyrighted interfaces, the
++original copyright holder who places the Program under this License
++may add an explicit geographical distribution limitation excluding
++those countries, so that distribution is permitted only in or among
++countries not thus excluded.  In such case, this License incorporates
++the limitation as if written in the body of this License.
++
++  9. The Free Software Foundation may publish revised and/or new versions
++of the General Public License from time to time.  Such new versions will
++be similar in spirit to the present version, but may differ in detail to
++address new problems or concerns.
++
++Each version is given a distinguishing version number.  If the Program
++specifies a version number of this License which applies to it and "any
++later version", you have the option of following the terms and conditions
++either of that version or of any later version published by the Free
++Software Foundation.  If the Program does not specify a version number of
++this License, you may choose any version ever published by the Free Software
++Foundation.
++
++  10. If you wish to incorporate parts of the Program into other free
++programs whose distribution conditions are different, write to the author
++to ask for permission.  For software which is copyrighted by the Free
++Software Foundation, write to the Free Software Foundation; we sometimes
++make exceptions for this.  Our decision will be guided by the two goals
++of preserving the free status of all derivatives of our free software and
++of promoting the sharing and reuse of software generally.
++
++			    NO WARRANTY
++
++  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
++FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
++OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
++PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
++OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
++TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
++PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
++REPAIR OR CORRECTION.
++
++  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
++REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
++INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
++OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
++TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
++YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
++PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
++POSSIBILITY OF SUCH DAMAGES.
++
++		     END OF TERMS AND CONDITIONS
++
++	    How to Apply These Terms to Your New Programs
++
++  If you develop a new program, and you want it to be of the greatest
++possible use to the public, the best way to achieve this is to make it
++free software which everyone can redistribute and change under these terms.
++
++  To do so, attach the following notices to the program.  It is safest
++to attach them to the start of each source file to most effectively
++convey the exclusion of warranty; and each file should have at least
++the "copyright" line and a pointer to where the full notice is found.
++
++    <one line to give the program's name and a brief idea of what it does.>
++    Copyright (C) <year>  <name of author>
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License along
++    with this program; if not, write to the Free Software Foundation, Inc.,
++    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++
++Also add information on how to contact you by electronic and paper mail.
++
++If the program is interactive, make it output a short notice like this
++when it starts in an interactive mode:
++
++    Gnomovision version 69, Copyright (C) year name of author
++    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
++    This is free software, and you are welcome to redistribute it
++    under certain conditions; type `show c' for details.
++
++The hypothetical commands `show w' and `show c' should show the appropriate
++parts of the General Public License.  Of course, the commands you use may
++be called something other than `show w' and `show c'; they could even be
++mouse-clicks or menu items--whatever suits your program.
++
++You should also get your employer (if you work as a programmer) or your
++school, if any, to sign a "copyright disclaimer" for the program, if
++necessary.  Here is a sample; alter the names:
++
++  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
++  `Gnomovision' (which makes passes at compilers) written by James Hacker.
++
++  <signature of Ty Coon>, 1 April 1989
++  Ty Coon, President of Vice
++
++This General Public License does not permit incorporating your program into
++proprietary programs.  If your program is a subroutine library, you may
++consider it more useful to permit linking proprietary applications with the
++library.  If this is what you want to do, use the GNU Lesser General
++Public License instead of this License.
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/xserver-nodm b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/xserver-nodm
new file mode 100755
index 0000000..5d7e8a2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/xserver-nodm
@@ -0,0 +1,60 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: xserver
+# Required-Start: $local_fs $remote_fs dbus
+# Required-Stop: $local_fs $remote_fs
+# Default-Start:     5
+# Default-Stop:      0 1 2 3 6
+### END INIT INFO
+
+
+. /etc/init.d/functions
+
+for x in $(cat /proc/cmdline); do
+        case $x in
+        x11=false)
+		echo "X Server disabled" 
+		exit 0;
+                ;;
+        esac
+done
+
+case "$1" in
+  start)
+    # We don't want this script to block the rest of the boot process
+    if [ "$2" != "background" ]; then
+      $0 $1 background &
+    else
+       # work around from /etc/X11/Xinit
+       export USER=root
+       export HOME=/home/root
+       if [ ! -d $HOME ] && [ -d /root ]; then
+         HOME=/root
+       fi
+
+       . /etc/profile
+
+       echo "Starting Xserver"
+       . /etc/X11/xserver-common
+       xinit /etc/X11/Xsession -- `which $XSERVER` $ARGS >/var/log/Xsession.log 2>&1
+    fi 
+  ;;
+
+  stop)
+        echo "Stopping XServer"
+        killproc xinit
+  ;;
+
+  restart)
+	$0 stop
+        sleep 1
+        $0 start
+  ;;
+
+  *)
+        echo "usage: $0 { start | stop | restart }"
+  ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/xserver-nodm.conf b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/xserver-nodm.conf
new file mode 100644
index 0000000..3c0582a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/xserver-nodm.conf
@@ -0,0 +1 @@
+HOME=/home/root
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/xserver-nodm.service b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/xserver-nodm.service
new file mode 100644
index 0000000..94d221e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init-2.0/xserver-nodm.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Xserver startup with a display manager
+
+[Service]
+EnvironmentFile=/etc/default/xserver-nodm
+ExecStart=/etc/X11/Xserver
+
+[Install]
+Alias=display-manager.service
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init_2.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init_2.0.bb
new file mode 100644
index 0000000..95a07d1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-graphics/xserver-nodm-init/xserver-nodm-init_2.0.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Simple Xserver Init Script (no dm)"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+SECTION = "x11"
+
+PR = "r22"
+
+SRC_URI = "file://xserver-nodm \
+           file://gplv2-license.patch \
+           file://xserver-nodm.service \
+           file://xserver-nodm.conf \
+"
+S = "${WORKDIR}"
+
+inherit update-rc.d systemd
+
+INITSCRIPT_NAME = "xserver-nodm"
+INITSCRIPT_PARAMS = "start 01 5 . stop 01 0 1 2 3 6 ."
+INITSCRIPT_PARAMS_shr = "start 90 5 . stop 90 0 1 2 3 6 ."
+
+do_install() {
+    install -d ${D}${sysconfdir}/init.d
+    install xserver-nodm ${D}${sysconfdir}/init.d
+
+    install -d ${D}${sysconfdir}/default
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install xserver-nodm.conf ${D}${sysconfdir}/default/xserver-nodm
+        install -m 0644 ${WORKDIR}/xserver-nodm.service ${D}${systemd_unitdir}/system
+    fi
+}
+
+RDEPENDS_${PN} = "xserver-common (>= 1.30) xinit"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "xserver-nodm.service"
+
+FILES_${PN} += "${sysconfdir}/default/xserver-nodm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/0001-cross_add_configure_option.patch b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/0001-cross_add_configure_option.patch
new file mode 100644
index 0000000..229647f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/0001-cross_add_configure_option.patch
@@ -0,0 +1,34 @@
+From cbaaa42933bb27b1bcff4c7d71d54c913201ee88 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Fri, 9 Jan 2015 11:51:18 +0900
+Subject: [PATCH] cross_add_configure_option
+
+---
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 9c44633..39bebd0 100644
+--- a/Makefile
++++ b/Makefile
+@@ -229,7 +229,7 @@ gdb_merge: force
+ 	@echo "../../${PROGRAM} ../../${PROGRAM}lib.a" > ${GDB}/gdb/mergeobj
+ 	@rm -f ${PROGRAM}
+ 	@if [ ! -f ${GDB}/config.status ]; then \
+-	  (cd ${GDB}; ./configure ${GDB_CONF_FLAGS} --with-separate-debug-dir=/usr/lib/debug \
++	  (cd ${GDB}; ./configure --host=${GDB_TARGET} --build=${GDB_HOST} --with-separate-debug-dir=/usr/lib/debug \
+ 	    --with-bugurl="" --with-expat=no --with-python=no; \
+ 	  make --no-print-directory CRASH_TARGET=${TARGET}; echo ${TARGET} > crash.target) \
+ 	else make --no-print-directory rebuild; fi
+@@ -277,7 +277,7 @@ force:
+ 
+ make_configure: force
+ 	@rm -f configure
+-	@${CC} ${CONF_FLAGS} -o configure configure.c ${WARNING_ERROR} ${WARNING_OPTIONS}
++	@cc ${CONF_FLAGS} -o configure configure.c ${WARNING_ERROR} ${WARNING_OPTIONS}
+ 
+ clean: make_configure
+ 	@./configure ${CONF_TARGET_FLAG} -q -b
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/7001force_define_architecture.patch b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/7001force_define_architecture.patch
new file mode 100644
index 0000000..0d44c7f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/7001force_define_architecture.patch
@@ -0,0 +1,13 @@
+diff -uprN crash-5.1.8.org/configure.c crash-5.1.8/configure.c
+--- crash-5.1.8.org/configure.c	2011-09-17 04:01:12.000000000 +0900
++++ crash-5.1.8/configure.c	2012-09-13 13:28:45.393344108 +0900
+@@ -391,6 +391,9 @@ get_current_configuration(struct support
+ 			arch_mismatch(sp);
+ 	}
+ 
++	/** Force define archtecture */
++	target_data.target = FORCE_DEFINE_ARCH;
++
+         if ((fp = fopen("Makefile", "r")) == NULL) {
+ 		perror("Makefile");
+ 		goto get_release;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/7003cross_ranlib.patch b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/7003cross_ranlib.patch
new file mode 100644
index 0000000..d567fa0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/7003cross_ranlib.patch
@@ -0,0 +1,10 @@
+--- crash-5.1.8/Makefile.orig	2011-12-27 11:21:58.220652105 +0900
++++ crash-5.1.8/Makefile	2011-12-27 11:22:29.563651593 +0900
+@@ -285,6 +285,7 @@
+ 
+ library: make_build_data ${OBJECT_FILES}
+ 	ar -rs ${PROGRAM}lib.a ${OBJECT_FILES}
++	${RANLIB} ${PROGRAM}lib.a 
+ 
+ gdb: force
+ 	rm -f ${GDB_OFILES}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/config-site.crash-7.0.9 b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/config-site.crash-7.0.9
new file mode 100644
index 0000000..d6fc22f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/config-site.crash-7.0.9
@@ -0,0 +1 @@
+bash_cv_have_mbstate_t=yes
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/donnot-extract-gdb-during-do-compile.patch b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/donnot-extract-gdb-during-do-compile.patch
new file mode 100644
index 0000000..e254fe8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/donnot-extract-gdb-during-do-compile.patch
@@ -0,0 +1,32 @@
+Put gdb source tarball in SRC_URI and don't fetch and extract it during
+do_compile.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/Makefile b/Makefile
+index bb0a34e..5eb7604 100644
+--- a/Makefile
++++ b/Makefile
+@@ -226,7 +226,7 @@ all: make_configure
+ #	@make --no-print-directory extensions
+ 
+ gdb_merge: force
+-	@if [ ! -f ${GDB}/README ]; then \
++	@if [ ! -f ${GDB}/${GDB}.patch ]; then \
+ 	  make --no-print-directory gdb_unzip; fi
+ 	@echo "${LDFLAGS} -lz -ldl -rdynamic" > ${GDB}/gdb/mergelibs
+ 	@echo "../../${PROGRAM} ../../${PROGRAM}lib.a" > ${GDB}/gdb/mergeobj
+@@ -253,11 +253,6 @@ gdb_unzip:
+ 	@rm -f gdb.files
+ 	@for FILE in ${GDB_FILES} dummy; do\
+ 	  echo $$FILE >> gdb.files; done
+-	@if [ ! -f ${GDB}.tar.gz ] && [ ! -f /usr/bin/wget ]; then \
+-	  echo /usr/bin/wget is required to download ${GDB}.tar.gz; echo; exit 1; fi
+-	@if [ ! -f ${GDB}.tar.gz ] && [ -f /usr/bin/wget ]; then \
+-	  wget http://ftp.gnu.org/gnu/gdb/${GDB}.tar.gz; fi
+-	@tar --exclude-from gdb.files -xvzmf ${GDB}.tar.gz
+ 	@make --no-print-directory gdb_patch
+ 
+ gdb_patch:
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/gdb_build_jobs_and_not_write_crash_target.patch b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/gdb_build_jobs_and_not_write_crash_target.patch
new file mode 100644
index 0000000..3f4d1bc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/gdb_build_jobs_and_not_write_crash_target.patch
@@ -0,0 +1,26 @@
+This enables parallel building (multiple jobs in gdb) by reading the
+value from GDB_MAKE_JOBS.
+
+Signed-off-by: Amy Fong <amy.fong@windriver.com>
+
+Upstream-Status: Pending
+
+Don't write ${TARGET} to crash.target which causes rebuild fails.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+--
+diff --git a/Makefile b/Makefile
+index 27a1d47..bcf2d2f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -232,8 +232,8 @@ gdb_merge: force
+ 	@if [ ! -f ${GDB}/config.status ]; then \
+ 	  (cd ${GDB}; ./configure --host=${GDB_TARGET} --build=${GDB_HOST} --with-separate-debug-dir=/usr/lib/debug \
+ 	    --with-bugurl="" --with-expat=no --with-python=no; \
+-	  make --no-print-directory CRASH_TARGET=${TARGET}; echo ${TARGET} > crash.target) \
+-	else make --no-print-directory rebuild; fi
++	  make --no-print-directory CRASH_TARGET=${TARGET} ${GDB_MAKE_JOBS}; ) \
++	else make --no-print-directory ${GDB_MAKE_JOBS} rebuild; fi
+ 	@if [ ! -f ${PROGRAM} ]; then \
+ 	  echo; echo "${PROGRAM} build failed"; \
+ 	  echo; exit 1; fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/remove-unrecognized-gcc-option-m32-for-mips.patch b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/remove-unrecognized-gcc-option-m32-for-mips.patch
new file mode 100644
index 0000000..c24db10
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/remove-unrecognized-gcc-option-m32-for-mips.patch
@@ -0,0 +1,33 @@
+Upstream-Status: Pending
+
+It fails to build crash for mips with error:
+
+| mips-wrs-linux-gcc: error: unrecognized command line option '-m32'
+| Makefile:291: recipe for target 'make_build_data' failed
+
+So remove the unrecognized option '-m32' for mips.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/configure.c b/configure.c
+index cf1973b..71e97b3 100644
+--- a/configure.c
++++ b/configure.c
+@@ -148,7 +148,7 @@ void add_extra_lib(char *);
+ #define TARGET_CFLAGS_PPC64_ON_X86_64  "TARGET_CFLAGS="
+ #define TARGET_CFLAGS_MIPS            "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
+ #define TARGET_CFLAGS_MIPS_ON_X86     "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
+-#define TARGET_CFLAGS_MIPS_ON_X86_64  "TARGET_CFLAGS=-m32 -D_FILE_OFFSET_BITS=64"
++#define TARGET_CFLAGS_MIPS_ON_X86_64  "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
+ 
+ #define GDB_TARGET_DEFAULT        "GDB_CONF_FLAGS="
+ #define GDB_TARGET_ARM_ON_X86     "GDB_CONF_FLAGS=--target=arm-elf-linux"
+@@ -158,7 +158,7 @@ void add_extra_lib(char *);
+ #define GDB_TARGET_ARM64_ON_X86_64  "GDB_CONF_FLAGS=--target=aarch64-elf-linux"   /* TBD */
+ #define GDB_TARGET_PPC64_ON_X86_64  "GDB_CONF_FLAGS=--target=powerpc64le-unknown-linux-gnu"
+ #define GDB_TARGET_MIPS_ON_X86     "GDB_CONF_FLAGS=--target=mipsel-elf-linux"
+-#define GDB_TARGET_MIPS_ON_X86_64  "GDB_CONF_FLAGS=--target=mipsel-elf-linux CFLAGS=-m32"
++#define GDB_TARGET_MIPS_ON_X86_64  "GDB_CONF_FLAGS=--target=mipsel-elf-linux"
+      
+ /*
+  *  The original plan was to allow the use of a particular version
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/sim-common-sim-arange-fix-extern-inline-handling.patch b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/sim-common-sim-arange-fix-extern-inline-handling.patch
new file mode 100644
index 0000000..0185b57
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/sim-common-sim-arange-fix-extern-inline-handling.patch
@@ -0,0 +1,79 @@
+Upstream-Status: Backport
+
+https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=92fc615
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+--
+From 92fc6153a6fdf2a027d9780f5945712aafad4a9e Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sun, 29 Mar 2015 15:59:01 -0400
+Subject: [PATCH] sim: common: sim-arange: fix extern inline handling
+
+With newer versions of gcc (5.x), the extern inline we're using with the
+sim-arange module no longer works.  Since this code really wants the gnu
+inline semantics, use that attribute explicitly.
+
+Reported-by: DJ Delorie <dj@redhat.com>
+Reported-by: Joel Sherrill <joel.sherrill@oarcorp.com>
+---
+ gdb-7.6/sim/common/sim-arange.h | 20 ++++++++++++--------
+ gdb-7.6/sim/common/sim-inline.h |  4 +++-
+ 2 files changed, 15 insertions(+), 9 deletions(-)
+
+diff --git a/gdb-7.6/sim/common/sim-arange.h b/gdb-7.6/sim/common/sim-arange.h
+index 73117f3..de842c9 100644
+--- a/gdb-7.6/sim/common/sim-arange.h
++++ b/gdb-7.6/sim/common/sim-arange.h
+@@ -60,22 +60,26 @@ extern void sim_addr_range_delete (ADDR_RANGE * /*ar*/,
+ 				   address_word /*start*/,
+ 				   address_word /*end*/);
+ 
++/* TODO: This should get moved into sim-inline.h.  */
++#ifdef HAVE_INLINE
++#ifdef SIM_ARANGE_C
++#define SIM_ARANGE_INLINE INLINE
++#else
++#define SIM_ARANGE_INLINE EXTERN_INLINE
++#endif
++#else
++#define SIM_ARANGE_INLINE EXTERN
++#endif
++
+ /* Return non-zero if ADDR is in range AR, traversing the entire tree.
+    If no range is specified, that is defined to mean "everything".  */
+-extern INLINE int
++SIM_ARANGE_INLINE int
+ sim_addr_range_hit_p (ADDR_RANGE * /*ar*/, address_word /*addr*/);
+ #define ADDR_RANGE_HIT_P(ar, addr) \
+   ((ar)->range_tree == NULL || sim_addr_range_hit_p ((ar), (addr)))
+ 
+ #ifdef HAVE_INLINE
+-#ifdef SIM_ARANGE_C
+-#define SIM_ARANGE_INLINE INLINE
+-#else
+-#define SIM_ARANGE_INLINE EXTERN_INLINE
+-#endif
+ #include "sim-arange.c"
+-#else
+-#define SIM_ARANGE_INLINE
+ #endif
+ #define SIM_ARANGE_C_INCLUDED
+ 
+diff --git a/gdb-7.6/sim/common/sim-inline.h b/gdb-7.6/sim/common/sim-inline.h
+index af75562..8a9c286 100644
+--- a/gdb-7.6/sim/common/sim-inline.h
++++ b/gdb-7.6/sim/common/sim-inline.h
+@@ -303,7 +303,9 @@
+ /* ??? Temporary, pending decision to always use extern inline and do a vast
+    cleanup of inline support.  */
+ #ifndef INLINE2
+-#if defined (__GNUC__)
++#if defined (__GNUC_GNU_INLINE__) || defined (__GNUC_STDC_INLINE__)
++#define INLINE2 __inline__ __attribute__ ((__gnu_inline__))
++#elif defined (__GNUC__)
+ #define INLINE2 __inline__
+ #else
+ #define INLINE2 /*inline*/
+-- 
+2.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/sim-ppc-drop-LIBS-from-psim-dependency.patch b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/sim-ppc-drop-LIBS-from-psim-dependency.patch
new file mode 100644
index 0000000..77a287f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash/sim-ppc-drop-LIBS-from-psim-dependency.patch
@@ -0,0 +1,37 @@
+Upstream-Status: Backport
+
+https://sourceware.org/git/?p=binutils-gdb.git;h=0d8a6ab
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+From 0d8a6ab7d39d28fb1557e2a62e9e4b336341ab34 Mon Sep 17 00:00:00 2001
+From: Aaro Koskinen <aaro.koskinen@iki.fi>
+Date: Mon, 17 Feb 2014 17:12:59 -0500
+Subject: [PATCH] sim: ppc: drop $(LIBS) from psim dependency
+
+When cross-compiling GDB for PPC, there's a prerequisite "-lz" for psim
+that results in a build failure. With such prerequisite, GNU Make will
+try to search the library from build machine's /usr/lib which is wrong.
+On 64-bit Linux build machines the compilation will fail because of this.
+
+URL: https://sourceware.org/bugzilla/show_bug.cgi?id=12202
+---
+ sim/ppc/Makefile.in | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/gdb-7.6/sim/ppc/Makefile.in b/gdb-7.6/sim/ppc/Makefile.in
+index b811f6f..740bdb0 100644
+--- a/gdb-7.6/sim/ppc/Makefile.in
++++ b/gdb-7.6/sim/ppc/Makefile.in
+@@ -552,7 +552,7 @@ PACKAGE_SRC = @sim_pk_src@
+ PACKAGE_OBJ = @sim_pk_obj@
+ 
+ 
+-psim: $(TARGETLIB) main.o $(LIBIBERTY_LIB) $(BFD_LIB) $(LIBS) $(LIBINTL_DEP)
++psim: $(TARGETLIB) main.o $(LIBIBERTY_LIB) $(BFD_LIB) $(LIBINTL_DEP)
+ 	$(CC) $(CFLAGS) $(SIM_CFLAGS) $(LDFLAGS) -o psim$(EXEEXT) main.o $(TARGETLIB) $(BFD_LIB) $(LIBINTL) $(LIBIBERTY_LIB) $(LIBS)
+ 
+ run: psim
+-- 
+1.9.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.1.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.1.3.bb
new file mode 100644
index 0000000..b787f02
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.1.3.bb
@@ -0,0 +1,112 @@
+SUMMARY = "Kernel analysis utility for live systems, netdump, diskdump, kdump, LKCD or mcore dumpfiles"
+DESCRIPTION = "The core analysis suite is a self-contained tool that can be used to\
+investigate either live systems, kernel core dumps created from the\
+netdump, diskdump and kdump packages from Red Hat Linux, the mcore kernel patch\
+offered by Mission Critical Linux, or the LKCD kernel patch."
+
+HOMEPAGE = "http://people.redhat.com/anderson"
+SECTION = "devel"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING3;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "zlib readline"
+
+SRC_URI = "https://github.com/crash-utility/${BPN}/archive/${PV}.tar.gz;downloadfilename=${BP}.tar.gz \
+           http://ftp.gnu.org/gnu/gdb/gdb-7.6.tar.gz;name=gdb;subdir=${BP} \
+           file://7001force_define_architecture.patch \ 
+           file://7003cross_ranlib.patch \
+           file://0001-cross_add_configure_option.patch \
+           file://sim-ppc-drop-LIBS-from-psim-dependency.patch \
+           file://sim-common-sim-arange-fix-extern-inline-handling.patch \
+           file://donnot-extract-gdb-during-do-compile.patch \
+           file://gdb_build_jobs_and_not_write_crash_target.patch \
+           file://remove-unrecognized-gcc-option-m32-for-mips.patch \
+           "
+
+SRC_URI[md5sum] = "155889a233c5230ef1d387858091d294"
+SRC_URI[sha256sum] = "ae98529d42b843f07d795b86b8f8529f64cc607ee3c58affc5a8aa8a506e183d"
+
+SRC_URI[gdb.md5sum] = "a9836707337e5f7bf76a009a8904f470"
+SRC_URI[gdb.sha256sum] = "8070389a5dcc104eb0be483d582729f98ed4d761ad19cedd3f17b5d2502faa36"
+
+inherit gettext
+
+BBCLASSEXTEND = "native cross"
+
+# crash 7.1.3 and before don't support mips64
+COMPATIBLE_HOST = "^(?!mips64).*"
+
+EXTRA_OEMAKE = 'RPMPKG="${PV}" \
+                GDB_TARGET="${TARGET_SYS}" \
+                GDB_HOST="${BUILD_SYS}" \
+                GDB_MAKE_JOBS="${PARALLEL_MAKE}" \
+                '
+
+EXTRA_OEMAKE_class-cross = 'RPMPKG="${PV}" \
+                            GDB_TARGET="${BUILD_SYS} \
+                                        \${GDB_CONF_FLAGS} \
+                                        --target=${TARGET_SYS}" \
+                            GDB_HOST="${BUILD_SYS}" \
+                            GDB_MAKE_JOBS="${PARALLEL_MAKE}" \
+                            '
+
+EXTRA_OEMAKE_append_class-native = " LDFLAGS='${BUILD_LDFLAGS}'"
+EXTRA_OEMAKE_append_class-cross = " LDFLAGS='${BUILD_LDFLAGS}'"
+
+REMOVE_M32 = "sed -i -e 's/#define TARGET_CFLAGS_ARM_ON_X86_64.*/#define TARGET_CFLAGS_ARM_ON_X86_64\t\"TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64\"/g' ${S}/configure.c"
+
+REMOVE_M32_class-cross = ""
+
+do_configure() {
+    :
+}
+
+do_compile_prepend() {
+    case ${TARGET_ARCH} in
+        aarch64*)    ARCH=ARM64 ;;
+        arm*)        ARCH=ARM ;;
+        i*86*)       ARCH=X86 ;;
+        x86_64*)     ARCH=X86_64 ;;
+        powerpc64*)  ARCH=PPC64 ;;
+        powerpc*)    ARCH=PPC ;;
+        mips*)       ARCH=MIPS ;;
+    esac
+
+    sed -i s/FORCE_DEFINE_ARCH/"${ARCH}"/g ${S}/configure.c
+    ${REMOVE_M32}
+    sed -i 's/&gt;/>/g' ${S}/Makefile
+}
+
+do_compile() {
+    oe_runmake ${EXTRA_OEMAKE}
+}
+
+do_install_prepend () {
+    install -d ${D}${bindir}
+    install -d ${D}/${mandir}/man8
+    install -d ${D}${includedir}/crash
+
+    install -m 0644 ${S}/crash.8 ${D}/${mandir}/man8/
+    install -m 0644 ${S}/defs.h ${D}${includedir}/crash
+}
+
+do_install_class-target () {
+    oe_runmake DESTDIR=${D} install
+}
+
+do_install_class-native () {
+    oe_runmake DESTDIR=${D}${STAGING_DIR_NATIVE} install
+}
+
+do_install_class-cross () {
+    install -m 0755 ${S}/crash ${D}/${bindir}
+}
+
+RDEPENDS_${PN} += "liblzma"
+RDEPENDS_${PN}_class-native = ""
+RDEPENDS_${PN}_class-cross = ""
+
+# Causes gcc to get stuck and eat all available memory in qemuarm builds
+# jenkins  15161  100 12.5 10389596 10321284 ?   R    11:40  28:17 /home/jenkins/oe/world/shr-core/tmp-glibc/sysroots/x86_64-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/cc1 -quiet -I . -I . -I ./common -I ./config -I ./../include/opcode -I ./../opcodes/.. -I ./../readline/.. -I ../bfd -I ./../bfd -I ./../include -I ../libdecnumber -I ./../libdecnumber -I ./gnulib/import -I build-gnulib/import -isysroot /home/jenkins/oe/world/shr-core/tmp-glibc/sysroots/qemuarm -MMD eval.d -MF .deps/eval.Tpo -MP -MT eval.o -D LOCALEDIR="/usr/local/share/locale" -D CRASH_MERGE -D HAVE_CONFIG_H -D TUI=1 eval.c -quiet -dumpbase eval.c -march=armv5te -mthumb -mthumb-interwork -mtls-dialect=gnu -auxbase-strip eval.o -g -O2 -Wall -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wmissing-prototypes -Wdeclaration-after-statement -Wempty-body -feliminate-unused-debug-types -o -
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/ktap/ktap-module_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-kernel/ktap/ktap-module_git.bb
new file mode 100644
index 0000000..cb91327
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/ktap/ktap-module_git.bb
@@ -0,0 +1,22 @@
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+require ktap.inc
+
+SUMMARY = "KTAP is a scripting dynamic tracing tool for Linux"
+
+inherit module
+
+# See https://github.com/ktap/ktap/issues/80
+PNBLACKLIST[ktap-module] ?= "Not compatible with 3.19 kernel"
+
+# Only build the module
+MAKE_TARGETS = "mod"
+
+# Kernel module packages MUST begin with 'kernel-module-', otherwise
+# multilib image generation can fail.
+#
+# The following line is only necessary if the recipe name does not begin
+# with kernel-module-.
+#
+PKG_${PN} = "kernel-module-${PN}"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/ktap/ktap.inc b/import-layers/meta-openembedded/meta-oe/recipes-kernel/ktap/ktap.inc
new file mode 100644
index 0000000..c214a02
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/ktap/ktap.inc
@@ -0,0 +1,26 @@
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+HOMEPAGE = "http://www.ktap.org"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE-GPL;md5=eb723b61539feef013de476e68b5c50a"
+
+PV = "0.4+gitr${SRCPV}"
+SRCREV = "c8401e07c89cdec9a5f673da4ddb12b7982b522b"
+SRC_URI = "git://github.com/ktap/ktap.git"
+
+S = "${WORKDIR}/git"
+
+# Package config is abused as a general compile time configuration tool.
+
+# Only supports x86_64 for now!. Needs to be enabled for ktap-module too.
+PACKAGECONFIG[ffi] = ""
+
+# Needed to resolve symbols in DSO and for sdt
+PACKAGECONFIG[libelf] = ",,elfutils"
+
+PACKAGECONFIG ?= "libelf"
+
+EXTRA_OEMAKE = " \
+    ${@bb.utils.contains('PACKAGECONFIG', 'libelf', '', 'NO_LIBELF=1', d)} \
+    ${@bb.utils.contains('PACKAGECONFIG', 'ffi', 'FFI=1', '', d)} \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/ktap/ktap_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-kernel/ktap/ktap_git.bb
new file mode 100644
index 0000000..248e7bd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/ktap/ktap_git.bb
@@ -0,0 +1,19 @@
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+require ktap.inc
+
+SUMMARY = "KTAP is a scripting dynamic tracing tool for Linux"
+DEPENDS = "ktap-module"
+
+PNBLACKLIST[ktap] ?= "Depends on blacklisted kernel-module-ktapvm"
+
+# Only build the userspace app
+EXTRA_OEMAKE += "ktap"
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 ${S}/ktap ${D}${bindir}/
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+RRECOMMENDS_${PN} = "kernel-module-ktapvm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-kernel/linux/linux.inc b/import-layers/meta-openembedded/meta-oe/recipes-kernel/linux/linux.inc
new file mode 100644
index 0000000..e200127
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-kernel/linux/linux.inc
@@ -0,0 +1,131 @@
+DESCRIPTION = "Linux Kernel"
+SECTION = "kernel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
+INC_PR = "r0"
+
+inherit kernel siteinfo
+
+# Enable OABI compat for people stuck with obsolete userspace
+ARM_KEEP_OABI ?= "0"
+
+# Set the verbosity of kernel messages during runtime
+# You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour
+CMDLINE_DEBUG ?= "loglevel=3"
+
+# Kernel bootlogo is distro-specific (default is OE logo).
+# Logo resolution (qvga, vga, ...) is machine-specific.
+LOGO_SIZE ?= '${@base_conditional("MACHINE_GUI_CLASS", "bigscreen", "vga", "qvga", d)}'
+# To use this, add file://${LOGO_SIZE}/logo_linux_clut224.ppm.bz2 or similar
+# to your kernel recipe, and then structure your logos for each resolution
+# accordingly.
+
+LOCALVERSION ?= ""
+
+#kernel_conf_variable CMDLINE "\"${CMDLINE} ${CMDLINE_DEBUG}\""
+kernel_conf_variable() {
+    CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;"
+    if test "$2" = "n"
+    then
+        echo "# CONFIG_$1 is not set" >> ${B}/.config
+    else
+        echo "CONFIG_$1=$2" >> ${B}/.config
+    fi
+}
+
+do_configure_prepend() {
+    echo "" > ${B}/.config
+    CONF_SED_SCRIPT=""
+
+    #
+    # logo support, if you supply logo_linux_clut224.ppm in SRC_URI, then it's going to be used
+    #
+    if [ -e ${WORKDIR}/logo_linux_clut224.ppm ]; then
+        install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+        kernel_conf_variable LOGO y
+        kernel_conf_variable LOGO_LINUX_CLUT224 y
+    fi
+
+    #
+    # oabi / eabi support
+    #
+    kernel_conf_variable AEABI y
+    if [ "${ARM_KEEP_OABI}" = "1" ] ; then
+        kernel_conf_variable OABI_COMPAT y
+    else
+        kernel_conf_variable OABI_COMPAT n
+    fi
+
+    # When enabling thumb for userspace we also need thumb support in the kernel
+    if [ "${ARM_INSTRUCTION_SET}" = "thumb" ] ; then
+        kernel_conf_variable ARM_THUMB y
+    fi
+
+    kernel_conf_variable CMDLINE "\"${CMDLINE} ${CMDLINE_DEBUG}\""
+
+    kernel_conf_variable LOCALVERSION "\"${LOCALVERSION}\""
+    kernel_conf_variable LOCALVERSION_AUTO n
+
+    kernel_conf_variable SYSFS_DEPRECATED n
+    kernel_conf_variable SYSFS_DEPRECATED_V2 n
+    kernel_conf_variable HOTPLUG y
+    kernel_conf_variable UEVENT_HELPER_PATH \"\"
+    kernel_conf_variable UNIX y
+    kernel_conf_variable SYSFS y
+    kernel_conf_variable PROC_FS y
+    kernel_conf_variable TMPFS y
+    kernel_conf_variable INOTIFY_USER y
+    kernel_conf_variable SIGNALFD y
+    kernel_conf_variable TMPFS_POSIX_ACL y
+    kernel_conf_variable BLK_DEV_BSG y
+    kernel_conf_variable DEVTMPFS y
+    kernel_conf_variable DEVTMPFS_MOUNT y
+
+    # Newer inits like systemd need cgroup support
+    if [ "${KERNEL_ENABLE_CGROUPS}" = "1" ] ; then
+        kernel_conf_variable CGROUP_SCHED y
+        kernel_conf_variable CGROUPS y
+        kernel_conf_variable CGROUP_NS y
+        kernel_conf_variable CGROUP_FREEZER y
+        kernel_conf_variable CGROUP_DEVICE y
+        kernel_conf_variable CPUSETS y
+        kernel_conf_variable PROC_PID_CPUSET y
+        kernel_conf_variable CGROUP_CPUACCT y
+        kernel_conf_variable RESOURCE_COUNTERS y
+    fi
+
+    #
+    # root-over-nfs-over-usb-eth support. Limited, but should cover some cases.
+    # Enable this by setting a proper CMDLINE_NFSROOT_USB.
+    #
+    if [ ! -z "${CMDLINE_NFSROOT_USB}" ]; then
+        bbnote "Configuring the kernel for root-over-nfs-over-usb-eth with CMDLINE ${CMDLINE_NFSROOT_USB}"
+        kernel_conf_variable INET y
+        kernel_conf_variable IP_PNP y
+        kernel_conf_variable USB_GADGET y
+        kernel_conf_variable USB_GADGET_SELECTED y
+        kernel_conf_variable USB_ETH y
+        kernel_conf_variable NFS_FS y
+        kernel_conf_variable ROOT_NFS y
+        kernel_conf_variable CMDLINE \"${CMDLINE_NFSROOT_USB} ${CMDLINE_DEBUG}\"
+    fi
+
+    sed -e "${CONF_SED_SCRIPT}" \
+    < '${WORKDIR}/defconfig' >>'${B}/.config'
+
+    yes '' | oe_runmake -C ${S} O=${B} oldconfig
+}
+
+do_configure_append() {
+    if test -e scripts/Makefile.fwinst ; then
+        sed -i -e "s:-m0644:-m 0644:g" scripts/Makefile.fwinst
+    fi
+}
+
+do_install_append() {
+    oe_runmake headers_install INSTALL_HDR_PATH=${D}${exec_prefix}/src/linux-${KERNEL_VERSION} ARCH=$ARCH
+}
+
+PACKAGES =+ "kernel-headers"
+FILES_kernel-headers = "${exec_prefix}/src/linux*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss-1.0.17/libio.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss-1.0.17/libio.patch
new file mode 100644
index 0000000..a053e4c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss-1.0.17/libio.patch
@@ -0,0 +1,43 @@
+Index: alsa-oss-1.0.15/alsa/stdioemu.c
+===================================================================
+--- alsa-oss-1.0.15.orig/alsa/stdioemu.c	2007-10-15 10:50:40.000000000 +0200
++++ alsa-oss-1.0.15/alsa/stdioemu.c	2008-07-21 22:17:06.303161438 +0200
+@@ -37,7 +37,9 @@
+ #endif
+ 
+ #include <stdio.h>
++#ifdef HAVE_LIBIO_H
+ #include <libio.h>
++#endif
+ 
+ struct fd_cookie {
+ 	int fd;
+@@ -99,7 +101,11 @@
+ 
+ 	if (open_mode && fdc->fd > 0) {
+ 		result = fopencookie (fdc,"w", fns);
++#ifdef HAVE_FILENO
+ 		result->_fileno = fdc->fd;		/* ugly patchy slimy kludgy hack */
++#else
++		result->__filedes = fdc->fd;
++#endif
+ 	}
+ 	return result;
+ }
+Index: alsa-oss-1.0.15/configure.in
+===================================================================
+--- alsa-oss-1.0.15.orig/configure.in	2007-10-15 10:50:40.000000000 +0200
++++ alsa-oss-1.0.15/configure.in	2008-07-21 22:16:11.719837298 +0200
+@@ -33,6 +33,12 @@
+   LIBS="$OLD_LIBS"
+ fi
+ 
++AC_CHECK_HEADERS_ONCE([libio.h])
++
++AC_CHECK_MEMBER([struct _IO_FILE._fileno],
++		[AC_DEFINE([HAVE_FILENO], [1],[Define if _fileno exists.])],
++		[],[])
++
+ AC_OUTPUT(Makefile alsa/Makefile alsa/aoss alsa/aoss.old \
+ 	  oss-redir/Makefile test/Makefile \
+           alsa/testaoss test/testaoss)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.0.17.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.0.17.bb
new file mode 100644
index 0000000..8966dbb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.0.17.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Alsa OSS Compatibility Package"
+SECTION = "libs/multimedia"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
+DEPENDS = "alsa-lib"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-${PV}.tar.bz2 \
+    file://libio.patch \
+"
+
+inherit autotools
+
+LEAD_SONAME = "libaoss.so.0"
+
+do_configure_prepend () {
+    touch NEWS README AUTHORS ChangeLog
+    sed -i "s/libaoss.so/${LEAD_SONAME}/" ${S}/alsa/aoss.in
+}
+
+SRC_URI[md5sum] = "1b1850c2fc91476a73d50f537cbd402f"
+SRC_URI[sha256sum] = "8d009e23e2cbee1691ec3c95d1838056a804d98440eae7715d6c3aebc710f9ca"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/audiofile/audiofile_0.2.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/audiofile/audiofile_0.2.7.bb
new file mode 100644
index 0000000..6188659
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/audiofile/audiofile_0.2.7.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "The Audio File Library provides a uniform and elegant \
+API for accessing a variety of audio file formats, such as AIFF/AIFF-C, \
+WAVE, NeXT/Sun .snd/.au, Berkeley/IRCAM/CARL Sound File, Audio Visual \
+Research, Amiga IFF/8SVX, and NIST SPHERE."
+HOMEPAGE = "http://www.68k.org/~michael/audiofile/"
+SECTION = "libs"
+LICENSE = "LGPLv2 & GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+                    file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+SRC_URI = "${GNOME_MIRROR}/audiofile/0.2/${BP}.tar.gz"
+SRC_URI[md5sum] = "a39be317a7b1971b408805dc5e371862"
+SRC_URI[sha256sum] = "a61c4036c2600a645843f16bec4be166093a9df5f15b02c85291213aa9cf15a2"
+
+inherit autotools lib_package binconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/cdrkit/cdrkit_1.1.11.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/cdrkit/cdrkit_1.1.11.bb
new file mode 100644
index 0000000..554b89f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/cdrkit/cdrkit_1.1.11.bb
@@ -0,0 +1,18 @@
+SUMMARY = "CD/DVD command line tools"
+HOMEPAGE = "http://cdrkit.org/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b30d3b2750b668133fc17b401e1b98f8"
+
+# While writing download from cdrkit.org was broken so get sources from debian
+SRC_URI = " \
+    ${DEBIAN_MIRROR}/main/c/${BPN}/${BPN}_${PV}.orig.tar.gz \
+    file://0001-do-not-create-a-run-test-to-determine-order-of-bitfi.patch \
+"
+SRC_URI[md5sum] = "efe08e2f3ca478486037b053acd512e9"
+SRC_URI[sha256sum] = "d1c030756ecc182defee9fe885638c1785d35a2c2a297b4604c0e0dcc78e47da"
+
+inherit cmake
+
+DEPENDS = "libcap file bzip2"
+RDEPENDS_${PN} = "perl"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/cdrkit/files/0001-do-not-create-a-run-test-to-determine-order-of-bitfi.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/cdrkit/files/0001-do-not-create-a-run-test-to-determine-order-of-bitfi.patch
new file mode 100644
index 0000000..c9725cb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/cdrkit/files/0001-do-not-create-a-run-test-to-determine-order-of-bitfi.patch
@@ -0,0 +1,53 @@
+From a702cd1bb5eba5a05d1098862b5b863a3f6dd558 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Thu, 10 Sep 2015 09:39:13 +0200
+Subject: [PATCH] do not create a run test to determine order of bitfields
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+taken from [1]
+
+Upstream-Status: Inappropriate [cross compile specific]
+
+[1] http://cgit.openembedded.org/openembedded/tree/recipes/cdrkit/cdrkit/xconfig.patch
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ include/CMakeLists.txt | 2 --
+ include/xconfig.h.in   | 6 +++++-
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
+index 99a69fd..e5ba8a7 100644
+--- a/include/CMakeLists.txt
++++ b/include/CMakeLists.txt
+@@ -35,8 +35,6 @@ endif(VA_LIST_IS_ARRAY)
+ INCLUDE(TestBigEndian)
+ TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
+ 
+-TRY_RUN(BITFIELDS_HTOL TEST_DUMMY ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test_BITFIELDS_HTOL.c)
+-
+ INCLUDE(CheckIncludeFiles)
+ 
+ #SET(CMAKE_REQUIRED_INCLUDES "/usr/include;/usr/local/include")
+diff --git a/include/xconfig.h.in b/include/xconfig.h.in
+index c130600..476c00b 100644
+--- a/include/xconfig.h.in
++++ b/include/xconfig.h.in
+@@ -233,7 +233,11 @@
+ /* If using network byte order             */
+ #cmakedefine WORDS_BIGENDIAN
+ /* If high bits come first in structures   */
+-#cmakedefine BITFIELDS_HTOL
++#ifdef WORDS_BIGENDIAN
++#define BITFIELDS_HTOL
++#else
++#define BITFIELDS_LTOH
++#endif
+ #define	HAVE_C_BIGENDIAN	/* Flag that WORDS_BIGENDIAN test was done */
+ #define	HAVE_C_BITFIELDS	/* Flag that BITFIELDS_HTOL test was done  */
+ 
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/configure-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/configure-fix.patch
new file mode 100644
index 0000000..8fdc35a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/configure-fix.patch
@@ -0,0 +1,10 @@
+--- /tmp/configure.ac	2008-06-02 16:46:55.640793306 +0200
++++ esound-0.2.36/configure.ac	2008-06-02 16:47:26.030793494 +0200
+@@ -29,6 +29,7 @@
+ AC_SUBST(pkgdocdir)
+ 
+ AC_PROG_CC
++AC_PROG_CXX
+ AC_PROG_CPP
+ AC_LIBTOOL_WIN32_DLL
+ AM_PROG_LIBTOOL
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/esound_0.2.36-1ubuntu5.diff.gz b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/esound_0.2.36-1ubuntu5.diff.gz
new file mode 100644
index 0000000..719f5d0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/esound_0.2.36-1ubuntu5.diff.gz
Binary files differ
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/no-docs.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/no-docs.patch
new file mode 100644
index 0000000..fc69f1a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/no-docs.patch
@@ -0,0 +1,11 @@
+Index: esound-0.2.36/Makefile.am
+===================================================================
+--- esound-0.2.36.orig/Makefile.am
++++ esound-0.2.36/Makefile.am
+@@ -1,5 +1,5 @@
+ 
+-SUBDIRS = docs
++SUBDIRS = 
+ 
+ ACLOCAL_FLAGS = -I m4
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound_0.2.36.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound_0.2.36.bb
new file mode 100644
index 0000000..035358d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/esound/esound_0.2.36.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Enlightened Sound Daemon"
+SECTION = "gpe/base"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
+DEPENDS = "audiofile"
+
+inherit gnome binconfig
+
+PR = "r1"
+
+SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/esound/0.2/esound-0.2.36.tar.bz2;name=archive \
+           file://esound_0.2.36-1ubuntu5.diff.gz \
+           file://no-docs.patch \
+           file://configure-fix.patch"
+
+SRC_URI[archive.md5sum] = "3facb5aa0115cc1c31771b9ad454ae76"
+SRC_URI[archive.sha256sum] = "68bf399fcbd45c5e9ba99cd13a3a479e4ef2bc5dc52e540ffa00aef1e1b19a76"
+
+EXTRA_OECONF = " \
+    --disable-alsa \
+    --disable-arts \
+    --disable-artstest \
+"
+do_configure_prepend() {
+    sed -i -e 's:/usr/include/mme:${STAGING_INCDIR}/mme:g' ${S}/configure.ac
+}
+
+PACKAGES =+ "esddsp esd esd-utils"
+
+FILES_esddsp = "${bindir}/esddsp ${libdir}/libesddsp.so.*"
+FILES_esd = "${bindir}/esd"
+FILES_esd-utils = "${bindir}/*"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb
new file mode 100644
index 0000000..63e590c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Library for reading some sort of media format"
+SECTION = "libs"
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=381c8cbe277a7bc1ee2ae6083a04c958"
+
+PR = "r1"
+
+inherit autotools
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/faac/faad2-src/faad2-${PV}/${BP}.tar.bz2;name=faad2 \
+"
+
+SRC_URI[faad2.md5sum] = "4c332fa23febc0e4648064685a3d4332"
+SRC_URI[faad2.sha256sum] = "14561b5d6bc457e825bfd3921ae50a6648f377a9396eaf16d4b057b39a3f63b5"
+
+PACKAGES =+ "libfaad libfaad-dev libmp4ff libmp4ff-dev"
+
+FILES_${PN} = "${bindir}/faad"
+
+FILES_libfaad = "${libdir}/libfaad.so.*"
+FILES_libfaad-dev = "${libdir}/libfaad.so ${libdir}/libfaad.la ${includedir}/faad.h"
+FILES_libfaad-staticdev = "${libdir}/libfaad.a"
+
+FILES_libmp4ff = "${libdir}/libmp4ff.so.*"
+FILES_libmp4ff-dev = "${libdir}/libmp4ff.so ${libdir}/libmp4ff.la ${includedir}/mp4ff.h"
+FILES_libmp4ff-staticdev = "${libdir}/libmp4ff.a"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib/acdefine.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib/acdefine.patch
new file mode 100644
index 0000000..09edecc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib/acdefine.patch
@@ -0,0 +1,42 @@
+Add a description to the AC_DEFINE statements so that it appears in config.h and silences a fatal warning.
+
+Upstream-Status:Pending
+Signed-off-by: Matthieu Crapet <Matthieu.Crapet@ingenico.com>
+---
+ configure.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index abfe4cd..ce0d380 100644
+--- a/configure.in
++++ b/configure.in
+@@ -168,7 +168,7 @@ if test $has_iconv = 1; then
+ 		iconv_oldstyle=1, iconv_oldstyle=0)
+   if test $iconv_oldstyle = 1; then
+     AC_MSG_RESULT(const char **)
+-    AC_DEFINE(ID3LIB_ICONV_OLDSTYLE)
++    AC_DEFINE(ID3LIB_ICONV_OLDSTYLE,[1],[Old iconv prototype definition in iconv.h])
+     #we'll check out the need of
+     #typecast in the call of iconv_open
+     AC_MSG_CHECKING(whether to typecast in iconv)
+@@ -184,7 +184,7 @@ if test $has_iconv = 1; then
+                    iconv_cast=0, iconv_cast=1)
+     if test $iconv_cast = 1; then
+       AC_MSG_RESULT(yes)
+-      AC_DEFINE(ID3LIB_ICONV_CAST_OK)
++      AC_DEFINE(ID3LIB_ICONV_CAST_OK,[1],[Accepting const char ** in iconv prototype])
+     else
+       AC_MSG_RESULT(no)
+     fi
+@@ -206,7 +206,7 @@ if test $has_iconv = 1; then
+                    iconv_cast=0, iconv_cast=1)
+     if test $iconv_cast = 1; then
+       AC_MSG_RESULT(yes)
+-      AC_DEFINE(ID3LIB_ICONV_CAST_OK)
++      AC_DEFINE(ID3LIB_ICONV_CAST_OK,[1],[Accepting const char ** in iconv prototype])
+     else
+       AC_MSG_RESULT(no)
+     fi
+-- 
+2.0.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
new file mode 100644
index 0000000..fc80cc0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Library for interacting with ID3 tags"
+SECTION = "libs/multimedia"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+DEPENDS = "zlib"
+
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/id3lib/id3lib-${PV}.tar.gz;name=archive \
+           http://ftp.de.debian.org/debian/pool/main/i/id3lib3.8.3/id3lib3.8.3_3.8.3-7.2.diff.gz;name=patch \
+           file://acdefine.patch \
+"
+SRC_URI[archive.md5sum] = "19f27ddd2dda4b2d26a559a4f0f402a7"
+SRC_URI[archive.sha256sum] = "2749cc3c0cd7280b299518b1ddf5a5bcfe2d1100614519b68702230e26c7d079"
+SRC_URI[patch.md5sum] = "805c0320a2efb21c40ce06fa13cd7c4b"
+SRC_URI[patch.sha256sum] = "9f03b59ccc8826a5be55a3dcde2f889067d58bdc72bf846416a198c9b933704c"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/jack_fix_TWL4030_alsa_capture.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/jack_fix_TWL4030_alsa_capture.patch
new file mode 100644
index 0000000..77337ff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/jack_fix_TWL4030_alsa_capture.patch
@@ -0,0 +1,31 @@
+--- a/drivers/alsa/alsa_driver.c	2009-05-06 06:36:08.000000000 +1000
++++ b/drivers/alsa/alsa_driver.c	2010-07-28 21:02:57.238101024 +1000
+@@ -2388,7 +2388,7 @@
+ 	strcpy (params[i].name, "period");
+ 	params[i].character  = 'p';
+ 	params[i].type       = JackDriverParamUInt;
+-	params[i].value.ui   = 1024U;
++	params[i].value.ui   = 256U;            /* TWL4030 capture. */
+ 	strcpy (params[i].short_desc, "Frames per period");
+ 	strcpy (params[i].long_desc, params[i].short_desc);
+ 
+@@ -2396,7 +2396,7 @@
+ 	strcpy (params[i].name, "nperiods");
+ 	params[i].character  = 'n';
+ 	params[i].type       = JackDriverParamUInt;
+-	params[i].value.ui   = 2U;
++	params[i].value.ui   = 4U;              /* TWL4030 capture. */
+ 	strcpy (params[i].short_desc, "Number of periods of playback latency");
+ 	strcpy (params[i].long_desc, params[i].short_desc);
+ 
+@@ -2518,8 +2518,8 @@
+ driver_initialize (jack_client_t *client, const JSList * params)
+ {
+         jack_nframes_t srate = 48000;
+-	jack_nframes_t frames_per_interrupt = 1024;
+-	unsigned long user_nperiods = 2;
++	jack_nframes_t frames_per_interrupt = 256;      /* TWL4030 needs small number of frames here. */
++	unsigned long user_nperiods = 4;                /* TWL4030 needs 4 periods to avoid XRuns. */
+ 	char *playback_pcm_name = "hw:0";
+ 	char *capture_pcm_name = "hw:0";
+ 	int hw_monitoring = FALSE;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/remove-wrong-host-test.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/remove-wrong-host-test.patch
new file mode 100644
index 0000000..b41c98f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/remove-wrong-host-test.patch
@@ -0,0 +1,68 @@
+From be5f1439a1f36c0bc714411d20186045bd3e9539 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Tue, 12 Jul 2011 12:48:14 +0200
+Subject: [PATCH] remove bogus check for host-side jack installs, we are crosscompiling and don't care about these misguided checks
+
+---
+ configure.ac |   45 ---------------------------------------------
+ 1 files changed, 0 insertions(+), 45 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0a7e6bc..4033c21 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3,51 +3,6 @@ dnl $Id: configure.ac 4467 2011-06-23 15:10:03Z paul $
+ 
+ AC_INIT(jackd/jackd.c)
+ 
+-
+-dnl
+-dnl Check for existing JACK installs
+-dnl 
+-
+-AC_MSG_CHECKING([existing, conflicting JACK installs])
+-not_overwriting=0
+-installs=
+-for dir in /usr/lib /usr/local/lib /opt/lib ; do
+-    if test -d $dir ; then
+-	if test $(find $dir/ -name 'libjack.so.*' 2>/dev/null | wc -l) -gt 0 ; then
+-	    if echo $prefix/lib | grep -vs $dir >/dev/null 2>&1 ; then
+-		not_overwriting=$(expr $not_overwriting + 1)
+-	    fi
+-	    installs="$installs $dir"
+-	fi	    
+-    fi
+-done
+-
+-if test $not_overwriting -gt 0 ; then
+-    echo 
+-    echo
+-    echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+-    echo "You appear to have at least one existing installation of JACK."
+-    echo
+-    echo "Complete or partial JACK installs exist in:$installs"
+-    echo 
+-    echo "Installing this version will leave at least one of these"
+-    echo "existing installations installed and this will probably break"
+-    echo "JACK on your machine. "
+-    echo
+-    echo "Before building, you should first remove the existing JACK"
+-    echo "installation(s). "
+-    echo
+-    echo "Alternatively use ./configure --prefix=... to force overwriting"
+-    echo "the existing install."
+-    echo
+-    echo "WARNING: ON ANY DEBIAN-DERIVED DISTRIBUTION (Debian, Ubuntu etc)"
+-    echo "CHANGING THE INSTALLATION PREFIX WILL NOT PRODUCE A WORKING JACK"
+-    echo "INSTALL. Please contact the distribution packager for JACK and"
+-    echo "ask them to fix their packaging."
+-    echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+-    exit 1
+-fi
+-
+ AC_CONFIG_AUX_DIR(config)
+ AC_CANONICAL_TARGET
+ 
+-- 
+1.6.6.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_0.121.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_0.121.0.bb
new file mode 100644
index 0000000..7b33927
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_0.121.0.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "JACK is a low-latency audio server. It can \
+connect a number of different applications to an audio \
+device, as well as allowing them to share audio between \
+themselves."
+SECTION = "libs/multimedia"
+
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c030468238b2cf89925a57f2780396a7 \
+                    file://COPYING.GPL;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://COPYING.LGPL;md5=e77fe93202736b47c07035910f47974a \
+"
+
+DEPENDS = "alsa-lib libsamplerate0 readline"
+
+SRCREV = "91a688c602b7ce1711d8ad10fb07ebcf2e530a64"
+SRC_URI = "git://github.com/jackaudio/jack1.git \
+           file://remove-wrong-host-test.patch \
+           file://jack_fix_TWL4030_alsa_capture.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-timestamps \
+                --disable-capabilities \
+                --disable-oldtrans \
+                --disable-portaudio \
+                --disable-coreaudio \
+                --disable-oss \
+                --enable-alsa"
+
+EXTRA_OEMAKE = 'transform="s,^,,"'
+
+PACKAGES =+ "libjack jack-server jack-utils"
+
+FILES_libjack = "${libdir}/*.so.* ${libdir}/jack/*.so"
+FILES_jack-server = "${bindir}/jackd"
+FILES_jack-utils = "${bindir}/*"
+FILES_${PN}-doc += " ${datadir}/jack-audio-connection-kit/reference/html/* "
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libass/libass.inc b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libass/libass.inc
new file mode 100644
index 0000000..328cd14
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libass/libass.inc
@@ -0,0 +1,28 @@
+DESCRIPTION = "libass is a portable subtitle renderer for the ASS/SSA (Advanced Substation Alpha/Substation Alpha) subtitle format. It is mostly compatible with VSFilter."
+HOMEPAGE = "http://code.google.com/p/libass/"
+SECTION = "libs/multimedia"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ae98663bac55afe5d989919d296f28a"
+
+DEPENDS = "enca fontconfig freetype libpng fribidi"
+
+INC_PR = "r1"
+
+SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.gz"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[harfbuzz] = "--enable-harfbuzz,--disable-harfbuzz,harfbuzz"
+
+EXTRA_OECONF = " \
+    --enable-enca \
+    --enable-fontconfig \
+"
+
+PACKAGES =+ "${PN}-tests"
+
+FILES_${PN}-tests = " \
+    ${libdir}/test/test \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libass/libass_0.10.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libass/libass_0.10.1.bb
new file mode 100644
index 0000000..0b32276
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libass/libass_0.10.1.bb
@@ -0,0 +1,5 @@
+require ${PN}.inc
+PR = "${INC_PR}.0"
+
+SRC_URI[md5sum] = "6cace482a013a3c4bf3b31a68ac66026"
+SRC_URI[sha256sum] = "629a7e81fff92dea8d0399b818a41fd1b61e381c67a5961b1eaec2efadb14c6c"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.4.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.4.0.bb
new file mode 100644
index 0000000..91fe693
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.4.0.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Library for reading, mastering and writing optical discs"
+HOMEPAGE = "http://libburnia-project.org/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
+
+SRC_URI = "http://files.libburnia-project.org/releases/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "82ff94bb04e78eac9b12c7546f005d6f"
+SRC_URI[sha256sum] = "6c975abae4ae1f80e47fc5d1e235f85157f73e954c84627a5ef85d8b1b95ae94"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_0.93.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_0.93.bb
new file mode 100644
index 0000000..f21f914
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_0.93.bb
@@ -0,0 +1,25 @@
+ESCRIPTION = "The GNU Compact Disc Input and Control library (libcdio) contains a library for CD-ROM and CD image access."
+HOMEPAGE = "http://www.gnu.org/software/libcdio/"
+SECTION = "libs"
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "ncurses"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz"
+SRC_URI[md5sum] = "d154476feaac5a7b5f180e83eaf3d689"
+SRC_URI[sha256sum] = "4972cd22fd8d0e8bff922d35c7a645be0db0ab0e7b3dfaecc9cd8272429d6975"
+
+inherit autotools pkgconfig
+
+PACKAGES += "${PN}-utils"
+
+FILES_${PN} = "${libdir}/${PN}${SOLIB}"
+FILES_${PN}-utils = "${bindir}/*"
+
+python populate_packages_prepend () {
+    glibdir = d.expand('${libdir}')
+    do_split_packages(d, glibdir, '^lib(.*)\.so\..*', 'lib%s', 'gstreamer %s library', extra_depends='', allow_links=True)
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_5.0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_5.0.3.bb
new file mode 100644
index 0000000..0506725
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_5.0.3.bb
@@ -0,0 +1,13 @@
+SUMMARY = "DVD access multimeda library"
+SECTION = "libs/multimedia"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=64e753fa7d1ca31632bc383da3b57c27"
+SRC_URI = "http://download.videolan.org/pub/videolan/libdvdread/${PV}/libdvdread-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "b7b7d2a782087ed2a913263087083715"
+SRC_URI[sha256sum] = "321cdf2dbdc83c96572bc583cd27d8c660ddb540ff16672ecb28607d018ed82b"
+
+inherit autotools lib_package binconfig pkgconfig
+
+CONFIGUREOPTS_remove = "--disable-silent-rules"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb
new file mode 100644
index 0000000..831394e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb
@@ -0,0 +1,12 @@
+SUMMARY = "MMS stream protocol library"
+HOMEPAGE = "http://sourceforge.net/projects/libmms/"
+SECTION = "libs/multimedia"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=fad9b3332be894bab9bc501572864b29"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}/${PV}/${BP}.tar.gz"
+SRC_URI[md5sum] = "d6b665b335a6360e000976e770da7691"
+SRC_URI[sha256sum] = "3c05e05aebcbfcc044d9e8c2d4646cd8359be39a3f0ba8ce4e72a9094bee704f"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libmodplug/libmodplug_0.8.8.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libmodplug/libmodplug_0.8.8.5.bb
new file mode 100644
index 0000000..1070246
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libmodplug/libmodplug_0.8.8.5.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Library for reading mod-like audio files"
+HOMEPAGE = "http://modplug-xmms.sf.net"
+
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c9182faa1f7c316f7b97d404bcbe3685"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/modplug-xmms/libmodplug-${PV}.tar.gz"
+SRC_URI[md5sum] = "5f30241db109d647781b784e62ddfaa1"
+SRC_URI[sha256sum] = "77462d12ee99476c8645cb5511363e3906b88b33a6b54362b4dbc0f39aa2daad"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-option-checking"
+
+# NOTE: autotools_stage_all does nothing here, we need to do it manually
+do_install_append() {
+    install -d ${D}${includedir}/libmodplug
+    install -m 0644 ${S}/src/modplug.h ${D}${includedir}/libmodplug
+    install -m 0644 ${S}/src/modplug.h ${D}${includedir}/
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.1.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.1.2.bb
new file mode 100644
index 0000000..9d9a634
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.1.2.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Opus Audio Codec"
+DESCRIPTION = "The Opus codec is designed for interactive \
+speech and audio transmission over the Internet. It is \
+designed by the IETF Codec Working Group and incorporates \
+technology from Skype's SILK codec and Xiph.Org's CELT codec."
+HOMEPAGE = "http://www.opus-codec.org/"
+SECTION = "libs/multimedia"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e304cdf74c2a1b0a33a5084c128a23a3"
+
+SRC_URI = "http://downloads.xiph.org/releases/opus/opus-${PV}.tar.gz"
+SRC_URI[md5sum] = "1f08a661bc72930187893a07f3741a91"
+SRC_URI[sha256sum] = "0e290078e31211baa7b5886bcc8ab6bc048b9fc83882532da4a1a45e58e907fd"
+
+S = "${WORKDIR}/opus-${PV}"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[fixed-point] = "--enable-fixed-point,,"
+PACKAGECONFIG[float-approx] = "--enable-float-approx,,"
+
+EXTRA_OECONF = "--with-NE10-includes=${STAGING_DIR_TARGET}${includedir} \
+                --with-NE10-libraries=${STAGING_DIR_TARGET}${libdir} \
+                --enable-asm \
+                --enable-intrinsics \
+               "
+
+python () {
+    if d.getVar('TARGET_FPU', True) in [ 'soft' ]:
+        d.appendVar('PACKAGECONFIG', ' fixed-point')
+
+    # Ne10 is only available for armv7 and aarch64
+    if any((t.startswith('armv7') or t.startswith('aarch64')) for t in d.getVar('TUNE_FEATURES', True).split()):
+        d.appendVar('DEPENDS', ' ne10')
+}
+
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:389: Error: selected processor does not support Thumb mode `smull r5,r7,r1,r4'
+#| {standard input}:418: Error: selected processor does not support Thumb mode `smull r5,r6,r4,r1'
+#| {standard input}:448: Error: selected processor does not support Thumb mode `smull r4,r5,r1,r0'
+#| {standard input}:474: Error: selected processor does not support Thumb mode `smull r0,r4,r8,r1'
+#| {standard input}:510: Error: selected processor does not support Thumb mode `smull fp,r0,r10,r1'
+#| {standard input}:553: Error: selected processor does not support Thumb mode `smull fp,r1,r10,r3'
+#| {standard input}:741: Error: selected processor does not support Thumb mode `smull r3,r0,r6,r10'
+#| {standard input}:761: Error: selected processor does not support Thumb mode `smull fp,r2,r3,r9'
+#| {standard input}:773: Error: selected processor does not support Thumb mode `smull fp,r3,r5,r8'
+#| make[2]: *** [celt/celt.lo] Error 1
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl-image/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl-image/configure.patch
new file mode 100644
index 0000000..5299d37
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl-image/configure.patch
@@ -0,0 +1,43 @@
+Index: SDL_image-1.2.12/configure.in
+===================================================================
+--- SDL_image-1.2.12.orig/configure.in	2012-01-21 01:51:33.000000000 +0000
++++ SDL_image-1.2.12/configure.in	2014-07-18 06:56:56.853466678 +0000
+@@ -1,5 +1,4 @@
+ dnl Process this file with autoconf to produce a configure script.
+-AC_INIT(README)
+ 
+ dnl Set various version strings - taken gratefully from the GTk sources
+ 
+@@ -11,12 +10,19 @@
+ # if backwards compatibility has been broken,
+ # set BINARY_AGE and INTERFACE_AGE to 0.
+ 
+-MAJOR_VERSION=1
+-MINOR_VERSION=2
+-MICRO_VERSION=12
++m4_define([sdlimage_major_version],[1])
++m4_define([sdlimage_minor_version],[2])
++m4_define([sdlimage_micro_version],[12])
++m4_define([sdlimage_version], [sdlimage_major_version.sdlimage_minor_version.sdlimage_micro_version])
++
++AC_INIT([SDL_image], [sdlimage_version])
++
++MAJOR_VERSION=sdlimage_major_version
++MINOR_VERSION=sdlimage_minor_version
++MICRO_VERSION=sdlimage_micro_version
+ INTERFACE_AGE=4
+ BINARY_AGE=12
+-VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION
++VERSION=sdlimage_version
+ 
+ AC_SUBST(MAJOR_VERSION)
+ AC_SUBST(MINOR_VERSION)
+@@ -42,7 +48,7 @@
+ AC_CANONICAL_HOST
+ 
+ dnl Setup for automake
+-AM_INIT_AUTOMAKE(SDL_image, $VERSION)
++AM_INIT_AUTOMAKE([foreign])
+ 
+ dnl Check for tools
+ AC_PROG_LIBTOOL
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl-image_1.2.12.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl-image_1.2.12.bb
new file mode 100644
index 0000000..ea8e9ea
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl-image_1.2.12.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Simple DirectMedia Layer image library"
+SECTION = "libs"
+
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://COPYING;md5=613734b7586e1580ef944961c6d62227"
+
+DEPENDS = "tiff zlib libpng jpeg virtual/libsdl"
+
+SRC_URI = "http://www.libsdl.org/projects/SDL_image/release/SDL_image-${PV}.tar.gz \
+           file://configure.patch"
+SRC_URI[md5sum] = "a0f9098ebe5400f0bdc9b62e60797ecb"
+SRC_URI[sha256sum] = "0b90722984561004de84847744d566809dbb9daf732a9e503b91a1b5a84e5699"
+
+S = "${WORKDIR}/SDL_image-${PV}"
+
+inherit autotools pkgconfig
+
+export SDL_CONFIG = "${STAGING_BINDIR_CROSS}/sdl-config"
+
+# Disable the run-time loading of the libs and bring back the soname dependencies.
+EXTRA_OECONF += "--disable-jpg-shared --disable-png-shared -disable-tif-shared"
+
+do_configure_prepend() {
+    # Removing these files fixes a libtool version mismatch.
+    rm -f ${S}/acinclude/libtool.m4
+    rm -f ${S}/acinclude/sdl.m4
+    rm -f ${S}/acinclude/pkg.m4
+    rm -f ${S}/acinclude/lt~obsolete.m4
+    rm -f ${S}/acinclude/ltoptions.m4
+    rm -f ${S}/acinclude/ltsugar.m4
+    rm -f ${S}/acinclude/ltversion.m4
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl2-image_2.0.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl2-image_2.0.1.bb
new file mode 100644
index 0000000..1f9c794
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl2-image_2.0.1.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Simple DirectMedia Layer image library v2"
+SECTION = "libs"
+
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=ec65b9778f5584a0bd8dfc17d6340ba0"
+
+DEPENDS = "tiff zlib libpng jpeg virtual/libsdl2 libwebp"
+
+SRC_URI = "http://www.libsdl.org/projects/SDL_image/release/SDL2_image-${PV}.tar.gz"
+SRC_URI[md5sum] = "d94b94555ba022fa249a53a021dc3606"
+SRC_URI[sha256sum] = "3a3eafbceea5125c04be585373bfd8b3a18f259bd7eae3efc4e6d8e60e0d7f64"
+
+S = "${WORKDIR}/SDL2_image-${PV}"
+
+inherit autotools pkgconfig
+
+# Disable the run-time loading of the libs and bring back the soname dependencies.
+EXTRA_OECONF += "--disable-jpg-shared --disable-png-shared -disable-tif-shared"
+
+do_configure_prepend() {
+    # make autoreconf happy
+    touch ${S}/NEWS ${S}/README ${S}/AUTHORS ${S}/ChangeLog
+    # Removing these files fixes a libtool version mismatch.
+    rm -f ${S}/acinclude/libtool.m4
+    rm -f ${S}/acinclude/sdl2.m4
+    rm -f ${S}/acinclude/pkg.m4
+    rm -f ${S}/acinclude/lt~obsolete.m4
+    rm -f ${S}/acinclude/ltoptions.m4
+    rm -f ${S}/acinclude/ltsugar.m4
+    rm -f ${S}/acinclude/ltversion.m4
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl-mixer/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl-mixer/configure.patch
new file mode 100644
index 0000000..4c9e8d0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl-mixer/configure.patch
@@ -0,0 +1,21 @@
+diff -Nurd SDL_mixer-1.2.12/configure.in SDL_mixer-1.2.12/configure.in
+--- SDL_mixer-1.2.12/configure.in	2012-01-16 00:01:05.000000000 +0200
++++ SDL_mixer-1.2.12/configure.in	2012-12-15 04:08:04.627871456 +0200
+@@ -1,6 +1,5 @@
+ dnl Process this file with autoconf to produce a configure script.
+ AC_INIT(README)
+-AC_CONFIG_AUX_DIR(build-scripts)
+ 
+ dnl Set various version strings - taken gratefully from the GTk sources
+ 
+@@ -40,10 +39,6 @@
+ AC_SUBST(LT_REVISION)
+ AC_SUBST(LT_AGE)
+ 
+-dnl Detect the canonical build and host environments
+-AC_CONFIG_AUX_DIRS($srcdir/build-scripts)
+-dnl AC_CANONICAL_HOST
+-
+ dnl Check for tools
+ AC_PROG_LIBTOOL
+ AC_PROG_CC
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl-mixer_1.2.12.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl-mixer_1.2.12.bb
new file mode 100644
index 0000000..f1a01b9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl-mixer_1.2.12.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Simple DirectMedia Layer mixer library"
+SECTION = "libs"
+DEPENDS = "virtual/libsdl flac libmikmod libvorbis"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a37a47a0e579e461474cd03b9e05199d"
+
+SRC_URI = "http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-${PV}.tar.gz \
+           file://configure.patch \
+"
+
+SRC_URI[md5sum] = "e03ff73d77a55e3572ad0217131dc4a1"
+SRC_URI[sha256sum] = "1644308279a975799049e4826af2cfc787cad2abb11aa14562e402521f86992a"
+
+S = "${WORKDIR}/SDL_mixer-${PV}"
+
+inherit autotools-brokensep
+
+EXTRA_AUTORECONF += "--include=acinclude"
+EXTRA_OECONF = "--disable-music-mp3 --enable-music-ogg --enable-music-ogg-tremor LIBS=-L${STAGING_LIBDIR}"
+
+PACKAGECONFIG[mad] = "--enable-music-mp3-mad-gpl,--disable-music-mp3-mad-gpl,libmad"
+
+do_configure () {
+    # Remove old libtool macros.
+    MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4"
+    for i in ${MACROS}; do
+        rm -f acinclude/$i
+    done
+    cp build-scripts/* . || true
+    rm -rf build-scripts/
+    export SYSROOT=$PKG_CONFIG_SYSROOT_DIR
+
+    autotools_do_configure
+
+    rm config.log
+    for i in $(find -name "Makefile") ; do
+        sed -i -e 's:-L/usr/lib:-L${STAGING_LIBDIR}:g' $i
+    done
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl2-mixer_2.0.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl2-mixer_2.0.1.bb
new file mode 100644
index 0000000..2dc48e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl2-mixer_2.0.1.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Simple DirectMedia Layer mixer library V2"
+SECTION = "libs"
+DEPENDS = "virtual/libsdl2 flac libmikmod libvorbis"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=29d8bc7c38aa44b1cf3a633a46589917"
+
+SRC_URI = "http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "c6c4f556d4415871f526248f5c9a627d"
+SRC_URI[sha256sum] = "5a24f62a610249d744cbd8d28ee399d8905db7222bf3bdbc8a8b4a76e597695f"
+
+S = "${WORKDIR}/SDL2_mixer-${PV}"
+
+inherit autotools-brokensep
+
+EXTRA_AUTORECONF += "--include=acinclude"
+EXTRA_OECONF = "--disable-music-mp3 --enable-music-ogg --enable-music-ogg-tremor LIBS=-L${STAGING_LIBDIR}"
+
+PACKAGECONFIG[mad] = "--enable-music-mp3-mad-gpl,--disable-music-mp3-mad-gpl,libmad"
+
+do_configure_prepend () {
+    # Remove old libtool macros.
+    MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4"
+    for i in ${MACROS}; do
+        rm -f acinclude/$i
+    done
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/live555/files/config.linux-cross b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/live555/files/config.linux-cross
new file mode 100644
index 0000000..d1277da
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/live555/files/config.linux-cross
@@ -0,0 +1,17 @@
+COMPILE_OPTS =		$(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_STRSTREAM=1 -D_LARGEFILE_SOURCE=1
+C =			c
+C_COMPILER =		$(CC)
+C_FLAGS =		$(COMPILE_OPTS)
+CPP =			cpp
+CPLUSPLUS_COMPILER =	$(CXX)
+CPLUSPLUS_FLAGS =	$(COMPILE_OPTS) -Wall -DBSD=1
+OBJ =			o
+LINK =			$(CXX) -o
+LINK_OPTS =		-L.
+CONSOLE_LINK_OPTS =	$(LINK_OPTS)
+LIBRARY_LINK =		$(LD) -o
+LIBRARY_LINK_OPTS =	$(LINK_OPTS) -r -Bstatic
+LIB_SUFFIX =			a
+LIBS_FOR_CONSOLE_APPLICATION =
+LIBS_FOR_GUI_APPLICATION =
+EXE =
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/live555/live555.inc b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/live555/live555.inc
new file mode 100644
index 0000000..0d11de9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/live555/live555.inc
@@ -0,0 +1,58 @@
+# live555 OE build file
+# Copyright (C) 2005, Koninklijke Philips Electronics NV.  All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION = "LIVE555 Streaming Media libraries"
+HOMEPAGE = "http://live.com/"
+LICENSE = "LGPLv3"
+SECTION = "devel"
+
+INC_PR = "r1"
+
+URLV = "${@d.getVar('PV',1)[0:4]}.${@d.getVar('PV',1)[4:6]}.${@d.getVar('PV',1)[6:8]}"
+SRC_URI = "http://www.live555.com/liveMedia/public/live.${URLV}.tar.gz \
+           file://config.linux-cross"
+# only latest live version stays on http://www.live555.com/liveMedia/public/, add mirror for older
+MIRRORS += "http://www.live555.com/liveMedia/public/ http://distcache.FreeBSD.org/ports-distfiles/ \n"
+
+S = "${WORKDIR}/live"
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_configure() {
+    cp ${WORKDIR}/config.linux-cross .
+    echo "COMPILE_OPTS+=" -fPIC "" >> config.linux-cross
+    ./genMakefiles linux-cross
+}
+
+do_compile() {
+    make
+}
+
+do_install() {
+    install -d ${D}${includedir}/BasicUsageEnvironment
+    install -d ${D}${includedir}/groupsock
+    install -d ${D}${includedir}/liveMedia
+    install -d ${D}${includedir}/UsageEnvironment
+    install -d ${D}${libdir}
+    cp -R --no-dereference --preserve=mode,links -v ${S}/BasicUsageEnvironment/include/*.hh ${D}${includedir}/BasicUsageEnvironment/
+    cp -R --no-dereference --preserve=mode,links -v ${S}/groupsock/include/*.h ${D}${includedir}/groupsock/
+    cp -R --no-dereference --preserve=mode,links -v ${S}/groupsock/include/*.hh ${D}${includedir}/groupsock/
+    cp -R --no-dereference --preserve=mode,links -v ${S}/liveMedia/include/*.hh ${D}${includedir}/liveMedia/
+    cp -R --no-dereference --preserve=mode,links -v ${S}/UsageEnvironment/include/*.hh ${D}${includedir}/UsageEnvironment/
+    # Find all the headers
+    for i in $(find . -name "*.hh") $(find . -name "*.h") ; do
+        install ${i} ${D}${includedir}
+    done
+    cp ${S}/*/*.a ${D}${libdir}
+    install -d ${D}${bindir}
+    for i in MPEG2TransportStreamIndexer openRTSP playSIP sapWatch testMPEG1or2AudioVideoToDarwin testMPEG1or2ProgramToTransportStream testMPEG1or2Splitter testMPEG1or2VideoReceiver testMPEG2TransportStreamTrickPlay testMPEG4VideoToDarwin testOnDemandRTSPServer testRelay testAMRAudioStreamer testDVVideoStreamer testMP3Receiver testMP3Streamer testMPEG1or2AudioVideoStreamer testMPEG1or2VideoStreamer testMPEG2TransportStreamer testMPEG4VideoStreamer testWAVAudioStreamer vobStreamer; do
+        install -m 0755 ${S}/testProgs/${i} ${D}${bindir}/
+    done
+    install -m 0755 ${S}/mediaServer/live555MediaServer ${D}${bindir}/
+}
+
+PACKAGES =+ " live555-openrtsp live555-playsip live555-mediaserver"
+FILES_${PN} = "${bindir}/sapWatch ${bindir}/testMPEG1or2AudioVideoToDarwin ${bindir}/testMPEG1or2ProgramToTransportStream ${bindir}/testMPEG1or2Splitter ${bindir}/testMPEG1or2VideoReceiver ${bindir}/testMPEG2TransportStreamTrickPlay ${bindir}/testMPEG4VideoToDarwin ${bindir}/testOnDemandRTSPServer ${bindir}/testRelay ${bindir}/testAMRAudioStreamer ${bindir}/testDVVideoStreamer ${bindir}/testMP3Receiver ${bindir}/testMP3Streamer ${bindir}/testMPEG1or2AudioVideoStreamer ${bindir}/testMPEG1or2VideoStreamer ${bindir}/testMPEG2TransportStreamer ${bindir}/testMPEG4VideoStreamer ${bindir}/testWAVAudioStreamer ${bindir}/vobStreamer ${bindir}/MPEG2TransportStreamIndexer"
+FILES_live555-openrtsp = "${bindir}/openRTSP"
+FILES_live555-playsip = "${bindir}/playSIP"
+FILES_live555-mediaserver = "${bindir}/live555MediaServer"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20130430.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20130430.bb
new file mode 100644
index 0000000..f83285c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20130430.bb
@@ -0,0 +1,7 @@
+require live555.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=68ad62c64cc6c620126241fd429e68fe"
+
+SRC_URI[md5sum] = "95533d91bd196e42fd748076dc244b09"
+SRC_URI[sha256sum] = "e549af608c9961d85cb647bc3b99804fec0fbaf5338c1b72d057558ae5cd2aea"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.6.bb
new file mode 100644
index 0000000..2e1b9bf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.6.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "libmikmod is a module player library supporting many formats, including mod, s3m, it, and xm."
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "alsa-lib texinfo pulseaudio"
+
+SRC_URI = "\
+    ${SOURCEFORGE_MIRROR}/project/mikmod/${BPN}/${PV}/${BPN}-${PV}.tar.gz \
+"
+SRC_URI[md5sum] = "9dd9bed30c6f7607a55480234606071b"
+SRC_URI[sha256sum] = "3f363e03f7b1db75b9b6602841bbd440ed275a548e53545f980df8155de4d330"
+
+inherit autotools binconfig lib_package
+
+EXTRA_OECONF = "\
+    --disable-af \
+    --enable-alsa \
+    --disable-esd \
+    --enable-oss \
+    --disable-sam9407 \
+    --disable-ultra \
+    --disable-esdtest \
+    --enable-threads \
+"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna.inc b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna.inc
new file mode 100644
index 0000000..ebca755
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna.inc
@@ -0,0 +1,39 @@
+DESCRIPTION = "MiniDLNA (aka ReadyDLNA) is server software with the aim of \
+being fully compliant with DLNA/UPnP-AV clients."
+LICENSE = "GPL-2.0|BSD"
+DEPENDS = "ffmpeg flac libav jpeg sqlite3 libexif libogg libid3tag libvorbis"
+
+# because it depends on libav which has commercial flag
+LICENSE_FLAGS = "commercial"
+
+inherit gettext autotools-brokensep update-rc.d systemd
+
+SRC_URI = "git://git.code.sf.net/p/minidlna/git;branch=master;module=git \
+           file://minidlna-daemon.init.d \
+           file://minidlna.service "
+
+S = "${WORKDIR}/git"
+
+# This remove "--exclude=autopoint" option from autoreconf argument to avoid
+# configure.ac:30: error: required file './ABOUT-NLS' not found
+EXTRA_AUTORECONF = ""
+
+do_install_append(){
+	install -d ${D}${sysconfdir}
+	install -m 0755 minidlna.conf ${D}${sysconfdir}
+
+# Systemd script
+	install -d ${D}${nonarch_base_libdir}/systemd/system
+	install -m 0755 ${WORKDIR}/minidlna.service ${D}${nonarch_base_libdir}/systemd/system
+
+# Sysvinit script
+	install -d ${D}${sysconfdir}/init.d
+	install -m 0755 ${WORKDIR}/minidlna-daemon.init.d ${D}${sysconfdir}/init.d/minidlna
+
+}
+
+SYSTEMD_SERVICE_${PN} = "minidlna.service"
+
+INITSCRIPT_NAME = "minidlna"
+INITSCRIPT_PARAMS = "defaults 90"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna-daemon.init.d b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna-daemon.init.d
new file mode 100644
index 0000000..9e64a20
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna-daemon.init.d
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+NAME="minidlna"
+DAEMON=/usr/sbin/minidlnad
+SCRIPTNAME=/etc/init.d/$NAME
+PIDFILE=/var/run/$NAME.pid
+CONF=/etc/$NAME.conf
+ARGS="-f $CONF"
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+start_function() {
+
+    export PATH=$PWD:$PATH
+
+    if [ -f ${PIDFILE} ]; then
+        echo "$SCRIPTNAME already running with PID #`cat $PIDFILE` ( according to ${PIDFILE} )";
+        exit 0
+    fi
+    
+    $DAEMON $ARGS
+ 
+    pid=$!
+
+    if [ "$pid" != "" ]; then
+        echo -n "$pid" > ${PIDFILE}
+    fi
+}
+
+stop_function() {
+
+    export PATH=$PWD:$PATH
+
+    if [ ! -e "${PIDFILE}" ]; then
+        echo "${SCRIPTNAME} not running ( according to ${PIDFILE} )";
+        exit 1;
+    fi
+    PID=`cat ${PIDFILE}`
+    kill -INT ${PID}
+    rm -f ${PIDFILE}
+}
+
+case $1 in
+    "start")
+        start_function
+        ;;
+    "stop")
+        stop_function
+        ;;
+    *)
+    echo "Usage: $0 {start | stop}"
+
+esac
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna.service b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna.service
new file mode 100644
index 0000000..656100b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Minidlna Daemon
+After=network.target
+
+[Service]
+Type=notify
+ExecStart=/usr/sbin/minidlnad -f /etc/minidlna.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna_1.1.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna_1.1.5.bb
new file mode 100644
index 0000000..7c6db62
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna_1.1.5.bb
@@ -0,0 +1,4 @@
+require ${BPN}.inc
+
+SRCREV = "v1_1_5"
+LIC_FILES_CHKSUM = "file://LICENCE.miniupnpd;md5=b0dabf9d8e0f871554e309d62ead8d2b"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer-common.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer-common.bb
new file mode 100644
index 0000000..829c3b2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer-common.bb
@@ -0,0 +1,23 @@
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: MIT (see COPYING.MIT)
+
+SUMMARY = "Preconfigured mplayer preferences"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+PV = "0.0.1"
+PR = "r1"
+
+SRC_URI = "file://mplayer.conf"
+
+# Yes, really /usr/etc!!!
+do_install() {
+    install -d "${D}/usr${sysconfdir}/mplayer"
+
+    install -m 0644 ${WORKDIR}/mplayer.conf "${D}/usr${sysconfdir}/mplayer"
+}
+
+FILES_${PN} = "/usr${sysconfdir}/mplayer"
+
+inherit allarch
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer-common/mplayer.conf b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer-common/mplayer.conf
new file mode 100644
index 0000000..37ad65f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer-common/mplayer.conf
@@ -0,0 +1,15 @@
+
+# You probably shouldn't touch these
+ac=mad,
+ao=alsa,
+
+# Required on SL-Cxxxx for correct rotation in the *VT*,
+# breaks rotation in X!
+# vf=rotate=1
+
+# Enable fullscreen display by default
+# fs=true
+
+# Drop frames to keep audio and video in sync
+framedrop=true
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-configure-don-t-disable-ASS-support-when-explicitly-.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-configure-don-t-disable-ASS-support-when-explicitly-.patch
new file mode 100644
index 0000000..e232595
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-configure-don-t-disable-ASS-support-when-explicitly-.patch
@@ -0,0 +1,26 @@
+From 3541649b711a773aa2e42ac80d9b4c1b36fce23f Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Thu, 27 Mar 2014 00:08:54 +0100
+Subject: [PATCH] configure: don't disable ASS support when explicitly enabled
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure b/configure
+index 60fd308..2f7df3b 100755
+--- a/configure
++++ b/configure
+@@ -4346,7 +4346,7 @@ fi
+ 
+ 
+ echocheck "SSA/ASS support"
+-if test "$_ass" = auto ; then
++if test "$_ass" = auto -o "$_ass" = yes ; then
+     if pkg_config_add libass ; then
+         _ass=yes
+         def_ass='#define CONFIG_ASS 1'
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-demux_ogg-partially-port-libtheora-glue-code-to-Theo.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-demux_ogg-partially-port-libtheora-glue-code-to-Theo.patch
new file mode 100644
index 0000000..b4d9841
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-demux_ogg-partially-port-libtheora-glue-code-to-Theo.patch
@@ -0,0 +1,136 @@
+From 0571bb4f1a6e1934ee7e093ce7aa517b9bac8e6a Mon Sep 17 00:00:00 2001
+From: Awais Belal <awais_belal@mentor.com>
+Date: Sun, 17 Jan 2016 14:46:10 +0500
+Subject: [PATCH] demux_ogg: partially port libtheora glue code to Theora 1.0
+ API
+
+This partially backports the following commit to allow building
+with gcc-5.x and otherwise fails to find the definition of
+the _ilog function the way it is used.
+
+https://github.com/pigoz/mplayer-svn/commit/85e51408cd00979fc209da8e3a39b6f0e7f325bc
+
+Signed-off-by: Awais Belal <awais_belal@mentor.com>
+---
+ libmpdemux/demux_ogg.c | 52 ++++++++++++++++++++++++++------------------------
+ 1 file changed, 27 insertions(+), 25 deletions(-)
+
+diff --git a/libmpdemux/demux_ogg.c b/libmpdemux/demux_ogg.c
+index 9eea061..9144426 100644
+--- a/libmpdemux/demux_ogg.c
++++ b/libmpdemux/demux_ogg.c
+@@ -50,8 +50,7 @@
+ #endif
+ 
+ #ifdef CONFIG_OGGTHEORA
+-#include <theora/theora.h>
+-int _ilog (unsigned int); /* defined in many places in theora/lib/ */
++#include <theora/theoradec.h>
+ #endif
+ 
+ #define BLOCK_SIZE 4096
+@@ -62,9 +61,10 @@ int _ilog (unsigned int); /* defined in many places in theora/lib/ */
+  */
+ #ifdef CONFIG_OGGTHEORA
+ typedef struct theora_struct_st {
+-    theora_state   st;
+-    theora_comment cc;
+-    theora_info    inf;
++    th_setup_info *tsi;
++    th_dec_ctx    *tctx;
++    th_comment     tc;
++    th_info        ti;
+ } theora_struct_t;
+ #endif
+ 
+@@ -117,7 +117,7 @@ typedef struct ogg_stream {
+     float   samplerate; /// granulpos 2 time
+     int64_t lastpos;
+     int32_t lastsize;
+-    int     keyframe_frequency_force;
++    int     keyframe_granule_shift;
+ 
+     // Logical stream state
+     ogg_stream_state stream;
+@@ -300,11 +300,10 @@ static unsigned char *demux_ogg_read_packet(ogg_stream_t *os, ogg_packet *pack,
+            have theora_state st, until all header packets were passed to the
+            decoder. */
+         if (!pack->bytes || !(*data&0x80)) {
+-            int keyframe_granule_shift = _ilog(os->keyframe_frequency_force - 1);
+-            int64_t iframemask = (1 << keyframe_granule_shift) - 1;
++            int64_t iframemask = iframemask = (1 << os->keyframe_granule_shift) - 1;
+ 
+             if (pack->granulepos >= 0) {
+-                os->lastpos  = pack->granulepos >> keyframe_granule_shift;
++                os->lastpos  = pack->granulepos >> os->keyframe_granule_shift;
+                 os->lastpos += pack->granulepos & iframemask;
+                 *keyframe = (pack->granulepos & iframemask) == 0;
+             } else {
+@@ -888,14 +887,15 @@ int demux_ogg_open(demuxer_t *demuxer)
+ #ifdef CONFIG_OGGTHEORA
+         } else if (pack.bytes >= 7 && !strncmp (&pack.packet[1], "theora", 6)) {
+             int errorCode = 0;
+-            theora_info inf;
+-            theora_comment cc;
++            th_info ti;
++            th_comment tc;
++            th_setup_info *tsi = NULL;
+ 
+-            theora_info_init (&inf);
+-            theora_comment_init (&cc);
++            th_info_init (&ti);
++            th_comment_init (&tc);
+ 
+-            errorCode = theora_decode_header (&inf, &cc, &pack);
+-            if (errorCode) {
++            errorCode = th_decode_headerin(&ti, &tc, &tsi, &pack);
++            if (errorCode < 0) {
+                 mp_msg(MSGT_DEMUX, MSGL_ERR,
+                        "Theora header parsing failed: %i \n", errorCode);
+             } else {
+@@ -904,30 +904,32 @@ int demux_ogg_open(demuxer_t *demuxer)
+                 sh_v->bih = calloc(1, sizeof(*sh_v->bih));
+                 sh_v->bih->biSize        = sizeof(*sh_v->bih);
+                 sh_v->bih->biCompression = sh_v->format = FOURCC_THEORA;
+-                sh_v->fps = ((double)inf.fps_numerator) / (double)inf.fps_denominator;
+-                sh_v->frametime = ((double)inf.fps_denominator) / (double)inf.fps_numerator;
+-                sh_v->disp_w = sh_v->bih->biWidth  = inf.frame_width;
+-                sh_v->disp_h = sh_v->bih->biHeight = inf.frame_height;
++                sh_v->fps = ((double)ti.fps_numerator) / (double)ti.fps_denominator;
++                sh_v->frametime = ((double)ti.fps_denominator) / (double)ti.fps_numerator;
++                sh_v->i_bps  = ti.target_bitrate / 8;
++                sh_v->disp_w = sh_v->bih->biWidth  = ti.frame_width;
++                sh_v->disp_h = sh_v->bih->biHeight = ti.frame_height;
+                 sh_v->bih->biBitCount  = 24;
+                 sh_v->bih->biPlanes    = 3;
+                 sh_v->bih->biSizeImage = ((sh_v->bih->biBitCount / 8) * sh_v->bih->biWidth * sh_v->bih->biHeight);
+                 ogg_d->subs[ogg_d->num_sub].samplerate               = sh_v->fps;
+                 ogg_d->subs[ogg_d->num_sub].theora                   = 1;
+-                ogg_d->subs[ogg_d->num_sub].keyframe_frequency_force = inf.keyframe_frequency_force;
++                ogg_d->subs[ogg_d->num_sub].keyframe_granule_shift   = ti.keyframe_granule_shift;
+                 ogg_d->subs[ogg_d->num_sub].id                       = n_video;
+                 n_video++;
+                 mp_msg(MSGT_DEMUX, MSGL_INFO,
+                        "[Ogg] stream %d: video (Theora v%d.%d.%d), -vid %d\n",
+                        ogg_d->num_sub,
+-                       (int)inf.version_major,
+-                       (int)inf.version_minor,
+-                       (int)inf.version_subminor,
++                       (int)ti.version_major,
++                       (int)ti.version_minor,
++                       (int)ti.version_subminor,
+                        n_video - 1);
+                 if (mp_msg_test(MSGT_HEADER, MSGL_V))
+                     print_video_header(sh_v->bih, MSGL_V);
+             }
+-            theora_comment_clear(&cc);
+-            theora_info_clear(&inf);
++            th_comment_clear(&tc);
++            th_info_clear(&ti);
++            th_setup_free(tsi);
+ #endif /* CONFIG_OGGTHEORA */
+         } else if (pack.bytes >= 4 && !strncmp (&pack.packet[0], "fLaC", 4)) {
+             sh_a = new_sh_audio_aid(demuxer, ogg_d->num_sub, n_audio);
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb
new file mode 100644
index 0000000..145497a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb
@@ -0,0 +1,159 @@
+SUMMARY = "Open Source multimedia player"
+SECTION = "multimedia"
+HOMEPAGE = "http://www.mplayerhq.hu/"
+DEPENDS = "libvpx libdvdread libtheora virtual/libsdl ffmpeg xsp zlib \
+           libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses \
+           libxv virtual/libx11 libass speex faad2 libxscrnsaver"
+
+RDEPENDS_${PN} = "mplayer-common"
+PROVIDES = "mplayer"
+RPROVIDES_${PN} = "mplayer"
+RCONFLICTS_${PN} = "mplayer"
+
+# Depends on xsp, libxv, virtual/libx11, libxscrnsaver
+REQUIRED_DISTRO_FEATURES = "x11"
+
+# because it depends on libpostproc/libav which has commercial flag
+LICENSE_FLAGS = "${@bb.utils.contains('PACKAGECONFIG', 'postproc', 'commercial', '', d)}"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "git://repo.or.cz/mplayer.git \
+    file://0001-configure-don-t-disable-ASS-support-when-explicitly-.patch \
+    file://0001-demux_ogg-partially-port-libtheora-glue-code-to-Theo.patch \
+"
+
+SRCREV = "2c378c71a4d9b1df382db9aa787b646628b4e3f9"
+
+ARM_INSTRUCTION_SET = "arm"
+
+PV = "2.0+gitr${SRCPV}"
+PR = "r13"
+
+PARALLEL_MAKE = ""
+
+S = "${WORKDIR}/git"
+
+FILES_${PN} = "${bindir}/mplayer ${libdir} /usr/etc/mplayer/"
+CONFFILES_${PN} += "/usr/etc/mplayer/input.conf \
+                    /usr/etc/mplayer/example.conf \
+                    /usr/etc/mplayer/codecs.conf \
+"
+
+inherit autotools-brokensep pkgconfig python3native
+
+EXTRA_OECONF = " \
+    --prefix=/usr \
+    --mandir=${mandir} \
+    --target=${SIMPLE_TARGET_SYS} \
+    \
+    --disable-lirc \
+    --disable-lircc \
+    --disable-joystick \
+    --disable-vm \
+    --disable-xf86keysym \
+    --enable-tv \
+    --enable-tv-v4l2 \
+    --disable-tv-bsdbt848 \
+    --enable-rtc \
+    --enable-networking \
+    --disable-smb \
+    --disable-dvdnav \
+    --enable-dvdread \
+    --disable-dvdread-internal \
+    --disable-libdvdcss-internal \
+    --disable-enca \
+    --disable-ftp \
+    --disable-vstream \
+    \
+    --disable-gif \
+    --enable-png \
+    --enable-jpeg \
+    --disable-libcdio \
+    --disable-qtx \
+    --disable-xanim \
+    --disable-real \
+    --disable-xvid \
+    \
+    --enable-speex \
+    --enable-theora \
+    --disable-ladspa \
+    --disable-libdv \
+    --enable-mad \
+    --disable-xmms \
+    --disable-musepack \
+    \
+    --disable-gl \
+    --enable-sdl \
+    --disable-caca \
+    --disable-directx \
+    --disable-dvb \
+    --enable-xv \
+    --disable-vm \
+    --disable-xinerama \
+    --enable-x11 \
+    --disable-directfb \
+    --disable-tga \
+    --disable-pnm \
+    --disable-md5sum \
+    \
+    --enable-alsa \
+    --enable-ossaudio \
+    --disable-pulse \
+    --disable-jack \
+    --disable-openal \
+    --enable-select \
+    --enable-libass \
+    \
+    --extra-libs=' -lXext -lX11 -lvorbis -ltheoradec -lasound ' \
+"
+# -ltheoradec is missing in:
+# libmpcodecs/vd_theora.o: undefined reference to symbol 'theora_decode_init@@libtheora.so.1.0'
+
+EXTRA_OECONF_append_armv6 = " --enable-armv6"
+EXTRA_OECONF_append_armv7a = " --enable-armv6 --enable-neon"
+
+PACKAGECONFIG ??= "vorbis postproc"
+PACKAGECONFIG[mad] = "--enable-mad,--disable-mad,libmad"
+PACKAGECONFIG[a52] = "--enable-liba52,--disable-liba52,liba52"
+PACKAGECONFIG[lame] = ",,lame"
+PACKAGECONFIG[postproc] = ",--disable-libpostproc,libpostproc"
+PACKAGECONFIG[vorbis] = ",--disable-libvorbis,libvorbis"
+PACKAGECONFIG[portaudio] = ",--disable-portaudio,portaudio-v19"
+PACKAGECONFIG[mpg123] = ",--disable-mpg123,mpg123"
+PACKAGECONFIG[directfb] = "--enable-directfb,--disable-directfb,directfb"
+
+FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O4 -ffast-math"
+BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
+
+CFLAGS_append = " -I${S}/libdvdread4 "
+
+do_configure() {
+    sed -i 's|/usr/include|${STAGING_INCDIR}|g' ${S}/configure
+    sed -i 's|/usr/lib|${STAGING_LIBDIR}|g' ${S}/configure
+    sed -i 's|/usr/\S*include[\w/]*||g' ${S}/configure
+    sed -i 's|/usr/\S*lib[\w/]*||g' ${S}/configure
+    sed -i 's|_install_strip="-s"|_install_strip=""|g' ${S}/configure
+    sed -i 's|HOST_CC|BUILD_CC|' ${S}/Makefile
+    sed -i 's|extra_cflags="-I. $extra_cflags"|extra_cflags="-I. -I${STAGING_INCDIR}/directfb $extra_cflags"|g' ${S}/configure
+    export SIMPLE_TARGET_SYS="$(echo ${TARGET_SYS} | sed s:${TARGET_VENDOR}::g)"
+    ./configure ${EXTRA_OECONF}
+    
+}
+
+do_compile () {
+    oe_runmake
+}
+
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install-no-man
+    install -d ${D}/usr/etc/mplayer
+    install ${S}/etc/input.conf ${D}/usr/etc/mplayer/
+    install ${S}/etc/example.conf ${D}/usr/etc/mplayer/
+    install ${S}/etc/codecs.conf ${D}/usr/etc/mplayer/
+    [ -e ${D}/usr/lib ] && rmdir ${D}/usr/lib
+}
+
+# http://errors.yoctoproject.org/Errors/Details/40734/
+PNBLACKLIST[mplayer2] ?= "Not compatible with currently used ffmpeg 3"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/opus-tools/opus-tools_0.1.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/opus-tools/opus-tools_0.1.8.bb
new file mode 100644
index 0000000..ff63111
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/opus-tools/opus-tools_0.1.8.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Opus Audio Tools"
+HOMEPAGE = "http://www.opus-codec.org/"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=843a066da9f1facfcc6ea6f616ffecb1"
+
+SRC_URI = "http://downloads.xiph.org/releases/opus/opus-tools-${PV}.tar.gz"
+SRC_URI[md5sum] = "b424790eda9357a4df394e2d7ca19eac"
+SRC_URI[sha256sum] = "e4e188579ea1c4e4d5066460d4a7214a7eafe3539e9a4466fdc98af41ba4a2f6"
+
+S = "${WORKDIR}/opus-tools-${PV}"
+
+DEPENDS = "libopus flac"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_3.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_3.0.bb
new file mode 100644
index 0000000..84227b4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_3.0.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "PulseAudio Volume Control (pavucontrol) is a simple GTK based volume control tool ("mixer") for the PulseAudio sound server."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "intltool gtkmm libcanberra pulseaudio"
+
+inherit gnome
+
+SRC_URI = "http://freedesktop.org/software/pulseaudio/${BPN}/${BP}.tar.xz"
+SRC_URI[md5sum] = "176308d2c03f8f3a7b2bd4f4d284fe71"
+SRC_URI[sha256sum] = "b3d2ea5a25fc88dcee80c396014f72df1b4742f8cfbbc5349c39d64a0d338890"
+
+EXTRA_OECONF = " --disable-gtk3 --disable-lynx "
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb
new file mode 100644
index 0000000..098b08d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Freedesktop sound theme"
+HOMEPAGE = "http://freedesktop.org/wiki/Specifications/sound-theme-spec"
+LICENSE = "GPLv2+ & CC-BY-3.0 & CC-BY-SA-3.0"
+LIC_FILES_CHKSUM = "file://CREDITS;md5=3213e601ce34bb42ddc3498903ac4e69"
+
+# glib-2.0 for glib-gettext.m4 which provides AM_GLIB_GNU_GETTEXT
+# intltool for intltool.m4 which provides IT_PROG_INTLTOOL
+DEPENDS = "glib-2.0 intltool-native"
+
+inherit autotools gettext
+
+DEPENDS += "glib-2.0-native intltool-native"
+
+SRC_URI = "http://people.freedesktop.org/~mccann/dist/${BPN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "d7387912cfd275282d1ec94483cb2f62"
+SRC_URI[sha256sum] = "cb518b20eef05ec2e82dda1fa89a292c1760dc023aba91b8aa69bafac85e8a14"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch
new file mode 100644
index 0000000..4b3de3c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch
@@ -0,0 +1,41 @@
+From 4ee15a8a69b84526ece1180a288a37db077bcd9b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 27 Feb 2015 21:55:36 +0000
+Subject: [PATCH] Revert "media-ctl: Don't install libmediactl and
+ libv4l2subdev"
+
+This reverts commit 0911dce53b08b0df3066be2c75f67e8a314d8729.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Conflicts:
+	utils/media-ctl/Makefile.am
+---
+ utils/media-ctl/Makefile.am | 11 +++--------
+ 1 file changed, 3 insertions(+), 8 deletions(-)
+
+diff --git a/utils/media-ctl/Makefile.am b/utils/media-ctl/Makefile.am
+index a3931fb..fe1fea5 100644
+--- a/utils/media-ctl/Makefile.am
++++ b/utils/media-ctl/Makefile.am
+@@ -1,14 +1,9 @@
+-noinst_LTLIBRARIES = libmediactl.la libv4l2subdev.la
+-
++lib_LTLIBRARIES = libmediactl.la libv4l2subdev.la
+ libmediactl_la_SOURCES = libmediactl.c mediactl-priv.h
+-libmediactl_la_CFLAGS = -static $(LIBUDEV_CFLAGS)
+-libmediactl_la_LDFLAGS = -static $(LIBUDEV_LIBS)
+-
++libmediactl_la_CFLAGS = $(LIBUDEV_CFLAGS)
++libmediactl_la_LDFLAGS = $(LIBUDEV_LIBS)
+ libv4l2subdev_la_SOURCES = libv4l2subdev.c
+ libv4l2subdev_la_LIBADD = libmediactl.la
+-libv4l2subdev_la_CFLAGS = -static
+-libv4l2subdev_la_LDFLAGS = -static
+-
+ mediactl_includedir=$(includedir)/mediactl
+ noinst_HEADERS = mediactl.h v4l2subdev.h
+ 
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/export-mediactl-headers.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/export-mediactl-headers.patch
new file mode 100644
index 0000000..c610e7e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/export-mediactl-headers.patch
@@ -0,0 +1,15 @@
+Index: v4l-utils-1.6.2/utils/media-ctl/Makefile.am
+===================================================================
+--- v4l-utils-1.6.2.orig/utils/media-ctl/Makefile.am
++++ v4l-utils-1.6.2/utils/media-ctl/Makefile.am
+@@ -4,8 +4,8 @@ libmediactl_la_CFLAGS = $(LIBUDEV_CFLAGS
+ libmediactl_la_LDFLAGS = $(LIBUDEV_LIBS)
+ libv4l2subdev_la_SOURCES = libv4l2subdev.c
+ libv4l2subdev_la_LIBADD = libmediactl.la
+-mediactl_includedir=$(includedir)/mediactl
+-noinst_HEADERS = mediactl.h v4l2subdev.h
++otherincludedir = $(includedir)/mediactl
++otherinclude_HEADERS = mediactl.h v4l2subdev.h
+ 
+ pkgconfig_DATA = libmediactl.pc
+ bin_PROGRAMS = media-ctl
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/mediactl-pkgconfig.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/mediactl-pkgconfig.patch
new file mode 100644
index 0000000..34fb3cf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/mediactl-pkgconfig.patch
@@ -0,0 +1,12 @@
+Index: v4l-utils-1.6.2/utils/media-ctl/Makefile.am
+===================================================================
+--- v4l-utils-1.6.2.orig/utils/media-ctl/Makefile.am
++++ v4l-utils-1.6.2/utils/media-ctl/Makefile.am
+@@ -7,6 +7,7 @@ libv4l2subdev_la_LIBADD = libmediactl.la
+ mediactl_includedir=$(includedir)/mediactl
+ noinst_HEADERS = mediactl.h v4l2subdev.h
+ 
++pkgconfig_DATA = libmediactl.pc
+ bin_PROGRAMS = media-ctl
+ media_ctl_SOURCES = media-ctl.c options.c options.h tools.h
+ media_ctl_LDADD = libmediactl.la libv4l2subdev.la
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.6.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.6.2.bb
new file mode 100644
index 0000000..75a42a2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.6.2.bb
@@ -0,0 +1,45 @@
+SUMMARY = "v4l2 and IR applications"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=48da9957849056017dc568bbc43d8975 \
+                    file://COPYING.libv4l;md5=d749e86a105281d7a44c2328acebc4b0"
+PROVIDES = "libv4l media-ctl"
+
+DEPENDS = "jpeg \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/libx11', '', d)}"
+
+inherit autotools gettext pkgconfig
+
+PACKAGECONFIG ??= "media-ctl"
+PACKAGECONFIG[media-ctl] = "--enable-v4l-utils,--disable-v4l-utils,,"
+
+SRC_URI = "http://linuxtv.org/downloads/v4l-utils/v4l-utils-${PV}.tar.bz2 \
+           file://0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch \
+           file://mediactl-pkgconfig.patch \
+           file://export-mediactl-headers.patch \
+          "
+SRC_URI[md5sum] = "9cb3c178f937954e65bf30920af433ef"
+SRC_URI[sha256sum] = "d3d6eb1f0204fb11f3d318bfca35d5f73cc077f88fac7665a47856a16496be7d"
+
+EXTRA_OECONF = "--disable-qv4l2 --enable-shared --with-udevdir=${base_libdir}/udev"
+
+VIRTUAL-RUNTIME_ir-keytable-keymaps ?= "rc-keymaps"
+
+PACKAGES =+ "media-ctl ir-keytable rc-keymaps libv4l libv4l-dbg libv4l-dev"
+
+FILES_media-ctl = "${bindir}/media-ctl ${libdir}/libmediactl.so.*"
+
+FILES_ir-keytable = "${bindir}/ir-keytable ${base_libdir}/udev/rules.d/*-infrared.rules"
+RDEPENDS_ir-keytable += "${VIRTUAL-RUNTIME_ir-keytable-keymaps}"
+
+FILES_rc-keymaps = "${sysconfdir}/rc* ${base_libdir}/udev/rc*"
+
+FILES_${PN} = "${bindir} ${sbindir}"
+
+FILES_libv4l += "${libdir}/libv4l*${SOLIBS} ${libdir}/libv4l/*.so ${libdir}/libv4l/plugins/*.so \
+                 ${libdir}/libdvbv5*${SOLIBS} \
+                 ${libdir}/libv4l/*-decomp"
+
+FILES_libv4l-dbg += "${libdir}/libv4l/.debug ${libdir}/libv4l/plugins/.debug"
+FILES_libv4l-dev += "${includedir} ${libdir}/pkgconfig \
+                     ${libdir}/libv4l*${SOLIBSDEV} ${libdir}/*.la \
+                     ${libdir}/v4l*${SOLIBSDEV} ${libdir}/libv4l/*.la ${libdir}/libv4l/plugins/*.la"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta/0001-Add-stdout-mode-to-allow-streaming-over-the-network-.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta/0001-Add-stdout-mode-to-allow-streaming-over-the-network-.patch
new file mode 100644
index 0000000..41a5dbf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta/0001-Add-stdout-mode-to-allow-streaming-over-the-network-.patch
@@ -0,0 +1,961 @@
+From 141d3b3593722eb3d588e7c4b1542f810bc25853 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Thu, 5 Jun 2014 11:29:20 -0500
+Subject: [PATCH] Add stdout mode to allow streaming over the network with nc
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+Signed-off-by: Chase Maupin <Chase.Maupin@ti.com>
+---
+ yavta.c |  315 ++++++++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 169 insertions(+), 146 deletions(-)
+
+diff --git a/yavta.c b/yavta.c
+index 32adc26..b398da0 100644
+--- a/yavta.c
++++ b/yavta.c
+@@ -309,7 +309,7 @@ static bool video_has_fd(struct device *dev)
+ static int video_set_fd(struct device *dev, int fd)
+ {
+ 	if (video_has_fd(dev)) {
+-		printf("Can't set fd (already open).\n");
++		fprintf(stderr, "Can't set fd (already open).\n");
+ 		return -1;
+ 	}
+ 
+@@ -321,18 +321,18 @@ static int video_set_fd(struct device *dev, int fd)
+ static int video_open(struct device *dev, const char *devname)
+ {
+ 	if (video_has_fd(dev)) {
+-		printf("Can't open device (already open).\n");
++		fprintf(stderr, "Can't open device (already open).\n");
+ 		return -1;
+ 	}
+ 
+ 	dev->fd = open(devname, O_RDWR);
+ 	if (dev->fd < 0) {
+-		printf("Error opening device %s: %s (%d).\n", devname,
++		fprintf(stderr, "Error opening device %s: %s (%d).\n", devname,
+ 		       strerror(errno), errno);
+ 		return dev->fd;
+ 	}
+ 
+-	printf("Device %s opened.\n", devname);
++	fprintf(stderr, "Device %s opened.\n", devname);
+ 
+ 	dev->opened = 1;
+ 
+@@ -352,7 +352,7 @@ static int video_querycap(struct device *dev, unsigned int *capabilities)
+ 	*capabilities = cap.capabilities & V4L2_CAP_DEVICE_CAPS
+ 		     ? cap.device_caps : cap.capabilities;
+ 
+-	printf("Device `%s' on `%s' is a video %s (%s mplanes) device.\n",
++	fprintf(stderr, "Device `%s' on `%s' is a video %s (%s mplanes) device.\n",
+ 		cap.card, cap.bus_info,
+ 		video_is_capture(dev) ? "capture" : "output",
+ 		video_is_mplane(dev) ? "with" : "without");
+@@ -370,7 +370,7 @@ static int cap_get_buf_type(unsigned int capabilities)
+ 	} else if (capabilities & V4L2_CAP_VIDEO_OUTPUT) {
+ 		return V4L2_BUF_TYPE_VIDEO_OUTPUT;
+ 	} else {
+-		printf("Device supports neither capture nor output.\n");
++		fprintf(stderr, "Device supports neither capture nor output.\n");
+ 		return -EINVAL;
+ 	}
+ 
+@@ -440,7 +440,7 @@ static int get_control(struct device *dev, unsigned int id, int type,
+ 		}
+ 	}
+ 
+-	printf("unable to get control 0x%8.8x: %s (%d).\n",
++	fprintf(stderr, "unable to get control 0x%8.8x: %s (%d).\n",
+ 		id, strerror(errno), errno);
+ 	return -1;
+ }
+@@ -484,12 +484,12 @@ static void set_control(struct device *dev, unsigned int id, int type,
+ 			val = old.value;
+ 	}
+ 	if (ret == -1) {
+-		printf("unable to set control 0x%8.8x: %s (%d).\n",
++		fprintf(stderr, "unable to set control 0x%8.8x: %s (%d).\n",
+ 			id, strerror(errno), errno);
+ 		return;
+ 	}
+ 
+-	printf("Control 0x%08x set to %" PRId64 ", is %" PRId64 "\n",
++	fprintf(stderr, "Control 0x%08x set to %" PRId64 ", is %" PRId64 "\n",
+ 	       id, old_val, val);
+ }
+ 
+@@ -504,7 +504,7 @@ static int video_get_format(struct device *dev)
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_G_FMT, &fmt);
+ 	if (ret < 0) {
+-		printf("Unable to get format: %s (%d).\n", strerror(errno),
++		fprintf(stderr, "Unable to get format: %s (%d).\n", strerror(errno),
+ 			errno);
+ 		return ret;
+ 	}
+@@ -514,7 +514,7 @@ static int video_get_format(struct device *dev)
+ 		dev->height = fmt.fmt.pix_mp.height;
+ 		dev->num_planes = fmt.fmt.pix_mp.num_planes;
+ 
+-		printf("Video format: %s (%08x) %ux%u field %s, %u planes: \n",
++	    fprintf(stderr, "Video format: %s (%08x) %ux%u field %s, %u planes: \n",
+ 			v4l2_format_name(fmt.fmt.pix_mp.pixelformat), fmt.fmt.pix_mp.pixelformat,
+ 			fmt.fmt.pix_mp.width, fmt.fmt.pix_mp.height,
+ 			v4l2_field_name(fmt.fmt.pix_mp.field),
+@@ -527,7 +527,7 @@ static int video_get_format(struct device *dev)
+ 					fmt.fmt.pix_mp.plane_fmt[i].bytesperline ?
+ 						fmt.fmt.pix_mp.plane_fmt[i].sizeimage : 0;
+ 
+-			printf(" * Stride %u, buffer size %u\n",
++			fprintf(stderr, " * Stride %u, buffer size %u\n",
+ 				fmt.fmt.pix_mp.plane_fmt[i].bytesperline,
+ 				fmt.fmt.pix_mp.plane_fmt[i].sizeimage);
+ 		}
+@@ -539,7 +539,7 @@ static int video_get_format(struct device *dev)
+ 		dev->plane_fmt[0].bytesperline = fmt.fmt.pix.bytesperline;
+ 		dev->plane_fmt[0].sizeimage = fmt.fmt.pix.bytesperline ? fmt.fmt.pix.sizeimage : 0;
+ 
+-		printf("Video format: %s (%08x) %ux%u (stride %u) field %s buffer size %u\n",
++		fprintf(stderr, "Video format: %s (%08x) %ux%u (stride %u) field %s buffer size %u\n",
+ 			v4l2_format_name(fmt.fmt.pix.pixelformat), fmt.fmt.pix.pixelformat,
+ 			fmt.fmt.pix.width, fmt.fmt.pix.height, fmt.fmt.pix.bytesperline,
+ 			v4l2_field_name(fmt.fmt.pix_mp.field),
+@@ -581,25 +581,25 @@ static int video_set_format(struct device *dev, unsigned int w, unsigned int h,
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_S_FMT, &fmt);
+ 	if (ret < 0) {
+-		printf("Unable to set format: %s (%d).\n", strerror(errno),
++		fprintf(stderr, "Unable to set format: %s (%d).\n", strerror(errno),
+ 			errno);
+ 		return ret;
+ 	}
+ 
+ 	if (video_is_mplane(dev)) {
+-		printf("Video format set: %s (%08x) %ux%u field %s, %u planes: \n",
++		fprintf(stderr, "Video format set: %s (%08x) %ux%u field %s, %u planes: \n",
+ 			v4l2_format_name(fmt.fmt.pix_mp.pixelformat), fmt.fmt.pix_mp.pixelformat,
+ 			fmt.fmt.pix_mp.width, fmt.fmt.pix_mp.height,
+ 			v4l2_field_name(fmt.fmt.pix_mp.field),
+ 			fmt.fmt.pix_mp.num_planes);
+ 
+ 		for (i = 0; i < fmt.fmt.pix_mp.num_planes; i++) {
+-			printf(" * Stride %u, buffer size %u\n",
++			fprintf(stderr, " * Stride %u, buffer size %u\n",
+ 				fmt.fmt.pix_mp.plane_fmt[i].bytesperline,
+ 				fmt.fmt.pix_mp.plane_fmt[i].sizeimage);
+ 		}
+ 	} else {
+-		printf("Video format set: %s (%08x) %ux%u (stride %u) field %s buffer size %u\n",
++		fprintf(stderr, "Video format set: %s (%08x) %ux%u (stride %u) field %s buffer size %u\n",
+ 			v4l2_format_name(fmt.fmt.pix.pixelformat), fmt.fmt.pix.pixelformat,
+ 			fmt.fmt.pix.width, fmt.fmt.pix.height, fmt.fmt.pix.bytesperline,
+ 			v4l2_field_name(fmt.fmt.pix.field),
+@@ -619,16 +619,16 @@ static int video_set_framerate(struct device *dev, struct v4l2_fract *time_per_f
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_G_PARM, &parm);
+ 	if (ret < 0) {
+-		printf("Unable to get frame rate: %s (%d).\n",
++		fprintf(stderr, "Unable to get frame rate: %s (%d).\n",
+ 			strerror(errno), errno);
+ 		return ret;
+ 	}
+ 
+-	printf("Current frame rate: %u/%u\n",
++	fprintf(stderr, "Current frame rate: %u/%u\n",
+ 		parm.parm.capture.timeperframe.numerator,
+ 		parm.parm.capture.timeperframe.denominator);
+ 
+-	printf("Setting frame rate to: %u/%u\n",
++	fprintf(stderr, "Setting frame rate to: %u/%u\n",
+ 		time_per_frame->numerator,
+ 		time_per_frame->denominator);
+ 
+@@ -637,19 +637,19 @@ static int video_set_framerate(struct device *dev, struct v4l2_fract *time_per_f
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_S_PARM, &parm);
+ 	if (ret < 0) {
+-		printf("Unable to set frame rate: %s (%d).\n", strerror(errno),
++		fprintf(stderr, "Unable to set frame rate: %s (%d).\n", strerror(errno),
+ 			errno);
+ 		return ret;
+ 	}
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_G_PARM, &parm);
+ 	if (ret < 0) {
+-		printf("Unable to get frame rate: %s (%d).\n", strerror(errno),
++		fprintf(stderr, "Unable to get frame rate: %s (%d).\n", strerror(errno),
+ 			errno);
+ 		return ret;
+ 	}
+ 
+-	printf("Frame rate set: %u/%u\n",
++	fprintf(stderr, "Frame rate set: %u/%u\n",
+ 		parm.parm.capture.timeperframe.numerator,
+ 		parm.parm.capture.timeperframe.denominator);
+ 	return 0;
+@@ -674,7 +674,7 @@ static int video_buffer_mmap(struct device *dev, struct buffer *buffer,
+ 		buffer->mem[i] = mmap(0, length, PROT_READ | PROT_WRITE, MAP_SHARED,
+ 				      dev->fd, offset);
+ 		if (buffer->mem[i] == MAP_FAILED) {
+-			printf("Unable to map buffer %u/%u: %s (%d)\n",
++			fprintf(stderr, "Unable to map buffer %u/%u: %s (%d)\n",
+ 			       buffer->idx, i, strerror(errno), errno);
+ 			return -1;
+ 		}
+@@ -682,7 +682,7 @@ static int video_buffer_mmap(struct device *dev, struct buffer *buffer,
+ 		buffer->size[i] = length;
+ 		buffer->padding[i] = 0;
+ 
+-		printf("Buffer %u/%u mapped at address %p.\n",
++		fprintf(stderr, "Buffer %u/%u mapped at address %p.\n",
+ 		       buffer->idx, i, buffer->mem[i]);
+ 	}
+ 
+@@ -697,7 +697,7 @@ static int video_buffer_munmap(struct device *dev, struct buffer *buffer)
+ 	for (i = 0; i < dev->num_planes; i++) {
+ 		ret = munmap(buffer->mem[i], buffer->size[i]);
+ 		if (ret < 0) {
+-			printf("Unable to unmap buffer %u/%u: %s (%d)\n",
++			fprintf(stderr, "Unable to unmap buffer %u/%u: %s (%d)\n",
+ 			       buffer->idx, i, strerror(errno), errno);
+ 		}
+ 
+@@ -725,7 +725,7 @@ static int video_buffer_alloc_userptr(struct device *dev, struct buffer *buffer,
+ 		ret = posix_memalign(&buffer->mem[i], page_size,
+ 				     length + offset + padding);
+ 		if (ret < 0) {
+-			printf("Unable to allocate buffer %u/%u (%d)\n",
++			fprintf(stderr, "Unable to allocate buffer %u/%u (%d)\n",
+ 			       buffer->idx, i, ret);
+ 			return -ENOMEM;
+ 		}
+@@ -734,7 +734,7 @@ static int video_buffer_alloc_userptr(struct device *dev, struct buffer *buffer,
+ 		buffer->size[i] = length;
+ 		buffer->padding[i] = padding;
+ 
+-		printf("Buffer %u/%u allocated at address %p.\n",
++		fprintf(stderr, "Buffer %u/%u allocated at address %p.\n",
+ 		       buffer->idx, i, buffer->mem[i]);
+ 	}
+ 
+@@ -809,12 +809,12 @@ static int video_alloc_buffers(struct device *dev, int nbufs,
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_REQBUFS, &rb);
+ 	if (ret < 0) {
+-		printf("Unable to request buffers: %s (%d).\n", strerror(errno),
++		fprintf(stderr, "Unable to request buffers: %s (%d).\n", strerror(errno),
+ 			errno);
+ 		return ret;
+ 	}
+ 
+-	printf("%u buffers requested.\n", rb.count);
++	fprintf(stderr, "%u buffers requested.\n", rb.count);
+ 
+ 	buffers = malloc(rb.count * sizeof buffers[0]);
+ 	if (buffers == NULL)
+@@ -835,12 +835,12 @@ static int video_alloc_buffers(struct device *dev, int nbufs,
+ 
+ 		ret = ioctl(dev->fd, VIDIOC_QUERYBUF, &buf);
+ 		if (ret < 0) {
+-			printf("Unable to query buffer %u: %s (%d).\n", i,
++			fprintf(stderr, "Unable to query buffer %u: %s (%d).\n", i,
+ 				strerror(errno), errno);
+ 			return ret;
+ 		}
+ 		get_ts_flags(buf.flags, &ts_type, &ts_source);
+-		printf("length: %u offset: %u timestamp type/source: %s/%s\n",
++		fprintf(stderr, "length: %u offset: %u timestamp type/source: %s/%s\n",
+ 		       buf.length, buf.m.offset, ts_type, ts_source);
+ 
+ 		buffers[i].idx = i;
+@@ -899,12 +899,12 @@ static int video_free_buffers(struct device *dev)
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_REQBUFS, &rb);
+ 	if (ret < 0) {
+-		printf("Unable to release buffers: %s (%d).\n",
++		fprintf(stderr, "Unable to release buffers: %s (%d).\n",
+ 			strerror(errno), errno);
+ 		return ret;
+ 	}
+ 
+-	printf("%u buffers released.\n", dev->nbufs);
++	fprintf(stderr, "%u buffers released.\n", dev->nbufs);
+ 
+ 	free(dev->buffers);
+ 	dev->nbufs = 0;
+@@ -974,7 +974,7 @@ static int video_queue_buffer(struct device *dev, int index, enum buffer_fill_mo
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_QBUF, &buf);
+ 	if (ret < 0)
+-		printf("Unable to queue buffer: %s (%d).\n",
++		fprintf(stderr, "Unable to queue buffer: %s (%d).\n",
+ 			strerror(errno), errno);
+ 
+ 	return ret;
+@@ -987,7 +987,7 @@ static int video_enable(struct device *dev, int enable)
+ 
+ 	ret = ioctl(dev->fd, enable ? VIDIOC_STREAMON : VIDIOC_STREAMOFF, &type);
+ 	if (ret < 0) {
+-		printf("Unable to %s streaming: %s (%d).\n",
++		fprintf(stderr, "Unable to %s streaming: %s (%d).\n",
+ 			enable ? "start" : "stop", strerror(errno), errno);
+ 		return ret;
+ 	}
+@@ -1009,10 +1009,10 @@ static void video_query_menu(struct device *dev, struct v4l2_queryctrl *query,
+ 			continue;
+ 
+ 		if (query->type == V4L2_CTRL_TYPE_MENU)
+-			printf("  %u: %.32s%s\n", menu.index, menu.name,
++			fprintf(stderr, "  %u: %.32s%s\n", menu.index, menu.name,
+ 			       menu.index == value ? " (*)" : "");
+ 		else
+-			printf("  %u: %lld%s\n", menu.index, menu.value,
++			fprintf(stderr, "  %u: %lld%s\n", menu.index, menu.value,
+ 			       menu.index == value ? " (*)" : "");
+ 	};
+ }
+@@ -1043,7 +1043,7 @@ static void video_list_controls(struct device *dev)
+ 			continue;
+ 
+ 		if (query.type == V4L2_CTRL_TYPE_CTRL_CLASS) {
+-			printf("--- %s (class 0x%08x) ---\n", query.name, query.id);
++			fprintf(stderr, "--- %s (class 0x%08x) ---\n", query.name, query.id);
+ 			continue;
+ 		}
+ 
+@@ -1053,7 +1053,7 @@ static void video_list_controls(struct device *dev)
+ 		else
+ 			sprintf(value, "%" PRId64, val64);
+ 
+-		printf("control 0x%08x `%s' min %d max %d step %d default %d current %s.\n",
++		fprintf(stderr, "control 0x%08x `%s' min %d max %d step %d default %d current %s.\n",
+ 			query.id, query.name, query.minimum, query.maximum,
+ 			query.step, query.default_value, value);
+ 
+@@ -1065,9 +1065,9 @@ static void video_list_controls(struct device *dev)
+ 	}
+ 
+ 	if (nctrls)
+-		printf("%u control%s found.\n", nctrls, nctrls > 1 ? "s" : "");
++		fprintf(stderr, "%u control%s found.\n", nctrls, nctrls > 1 ? "s" : "");
+ 	else
+-		printf("No control found.\n");
++		fprintf(stderr, "No control found.\n");
+ }
+ 
+ static void video_enum_frame_intervals(struct device *dev, __u32 pixelformat,
+@@ -1088,30 +1088,30 @@ static void video_enum_frame_intervals(struct device *dev, __u32 pixelformat,
+ 			break;
+ 
+ 		if (i != ival.index)
+-			printf("Warning: driver returned wrong ival index "
++			fprintf(stderr, "Warning: driver returned wrong ival index "
+ 				"%u.\n", ival.index);
+ 		if (pixelformat != ival.pixel_format)
+-			printf("Warning: driver returned wrong ival pixel "
++			fprintf(stderr, "Warning: driver returned wrong ival pixel "
+ 				"format %08x.\n", ival.pixel_format);
+ 		if (width != ival.width)
+-			printf("Warning: driver returned wrong ival width "
++			fprintf(stderr, "Warning: driver returned wrong ival width "
+ 				"%u.\n", ival.width);
+ 		if (height != ival.height)
+-			printf("Warning: driver returned wrong ival height "
++			fprintf(stderr, "Warning: driver returned wrong ival height "
+ 				"%u.\n", ival.height);
+ 
+ 		if (i != 0)
+-			printf(", ");
++			fprintf(stderr, ", ");
+ 
+ 		switch (ival.type) {
+ 		case V4L2_FRMIVAL_TYPE_DISCRETE:
+-			printf("%u/%u",
++			fprintf(stderr, "%u/%u",
+ 				ival.discrete.numerator,
+ 				ival.discrete.denominator);
+ 			break;
+ 
+ 		case V4L2_FRMIVAL_TYPE_CONTINUOUS:
+-			printf("%u/%u - %u/%u",
++			fprintf(stderr, "%u/%u - %u/%u",
+ 				ival.stepwise.min.numerator,
+ 				ival.stepwise.min.denominator,
+ 				ival.stepwise.max.numerator,
+@@ -1119,7 +1119,7 @@ static void video_enum_frame_intervals(struct device *dev, __u32 pixelformat,
+ 			return;
+ 
+ 		case V4L2_FRMIVAL_TYPE_STEPWISE:
+-			printf("%u/%u - %u/%u (by %u/%u)",
++			fprintf(stderr, "%u/%u - %u/%u (by %u/%u)",
+ 				ival.stepwise.min.numerator,
+ 				ival.stepwise.min.denominator,
+ 				ival.stepwise.max.numerator,
+@@ -1149,23 +1149,23 @@ static void video_enum_frame_sizes(struct device *dev, __u32 pixelformat)
+ 			break;
+ 
+ 		if (i != frame.index)
+-			printf("Warning: driver returned wrong frame index "
++			fprintf(stderr, "Warning: driver returned wrong frame index "
+ 				"%u.\n", frame.index);
+ 		if (pixelformat != frame.pixel_format)
+-			printf("Warning: driver returned wrong frame pixel "
++			fprintf(stderr, "Warning: driver returned wrong frame pixel "
+ 				"format %08x.\n", frame.pixel_format);
+ 
+ 		switch (frame.type) {
+ 		case V4L2_FRMSIZE_TYPE_DISCRETE:
+-			printf("\tFrame size: %ux%u (", frame.discrete.width,
++			fprintf(stderr, "\tFrame size: %ux%u (", frame.discrete.width,
+ 				frame.discrete.height);
+ 			video_enum_frame_intervals(dev, frame.pixel_format,
+ 				frame.discrete.width, frame.discrete.height);
+-			printf(")\n");
++			fprintf(stderr, ")\n");
+ 			break;
+ 
+ 		case V4L2_FRMSIZE_TYPE_CONTINUOUS:
+-			printf("\tFrame size: %ux%u - %ux%u (",
++			fprintf(stderr, "\tFrame size: %ux%u - %ux%u (",
+ 				frame.stepwise.min_width,
+ 				frame.stepwise.min_height,
+ 				frame.stepwise.max_width,
+@@ -1173,11 +1173,11 @@ static void video_enum_frame_sizes(struct device *dev, __u32 pixelformat)
+ 			video_enum_frame_intervals(dev, frame.pixel_format,
+ 				frame.stepwise.max_width,
+ 				frame.stepwise.max_height);
+-			printf(")\n");
++			fprintf(stderr, ")\n");
+ 			break;
+ 
+ 		case V4L2_FRMSIZE_TYPE_STEPWISE:
+-			printf("\tFrame size: %ux%u - %ux%u (by %ux%u) (\n",
++			fprintf(stderr, "\tFrame size: %ux%u - %ux%u (by %ux%u) (\n",
+ 				frame.stepwise.min_width,
+ 				frame.stepwise.min_height,
+ 				frame.stepwise.max_width,
+@@ -1187,7 +1187,7 @@ static void video_enum_frame_sizes(struct device *dev, __u32 pixelformat)
+ 			video_enum_frame_intervals(dev, frame.pixel_format,
+ 				frame.stepwise.max_width,
+ 				frame.stepwise.max_height);
+-			printf(")\n");
++			fprintf(stderr, ")\n");
+ 			break;
+ 
+ 		default:
+@@ -1211,19 +1211,19 @@ static void video_enum_formats(struct device *dev, enum v4l2_buf_type type)
+ 			break;
+ 
+ 		if (i != fmt.index)
+-			printf("Warning: driver returned wrong format index "
++			fprintf(stderr, "Warning: driver returned wrong format index "
+ 				"%u.\n", fmt.index);
+ 		if (type != fmt.type)
+-			printf("Warning: driver returned wrong format type "
++			fprintf(stderr, "Warning: driver returned wrong format type "
+ 				"%u.\n", fmt.type);
+ 
+-		printf("\tFormat %u: %s (%08x)\n", i,
++		fprintf(stderr, "\tFormat %u: %s (%08x)\n", i,
+ 			v4l2_format_name(fmt.pixelformat), fmt.pixelformat);
+-		printf("\tType: %s (%u)\n", v4l2_buf_type_name(fmt.type),
++		fprintf(stderr, "\tType: %s (%u)\n", v4l2_buf_type_name(fmt.type),
+ 			fmt.type);
+-		printf("\tName: %.32s\n", fmt.description);
++		fprintf(stderr, "\tName: %.32s\n", fmt.description);
+ 		video_enum_frame_sizes(dev, fmt.pixelformat);
+-		printf("\n");
++		fprintf(stderr, "\n");
+ 	}
+ }
+ 
+@@ -1241,13 +1241,13 @@ static void video_enum_inputs(struct device *dev)
+ 			break;
+ 
+ 		if (i != input.index)
+-			printf("Warning: driver returned wrong input index "
++			fprintf(stderr, "Warning: driver returned wrong input index "
+ 				"%u.\n", input.index);
+ 
+-		printf("\tInput %u: %s.\n", i, input.name);
++		fprintf(stderr, "\tInput %u: %s.\n", i, input.name);
+ 	}
+ 
+-	printf("\n");
++	fprintf(stderr, "\n");
+ }
+ 
+ static int video_get_input(struct device *dev)
+@@ -1257,7 +1257,7 @@ static int video_get_input(struct device *dev)
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_G_INPUT, &input);
+ 	if (ret < 0) {
+-		printf("Unable to get current input: %s (%d).\n",
++		fprintf(stderr, "Unable to get current input: %s (%d).\n",
+ 			strerror(errno), errno);
+ 		return ret;
+ 	}
+@@ -1272,7 +1272,7 @@ static int video_set_input(struct device *dev, unsigned int input)
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_S_INPUT, &_input);
+ 	if (ret < 0)
+-		printf("Unable to select input %u: %s (%d).\n", input,
++		fprintf(stderr, "Unable to select input %u: %s (%d).\n", input,
+ 			strerror(errno), errno);
+ 
+ 	return ret;
+@@ -1291,14 +1291,14 @@ static int video_set_quality(struct device *dev, unsigned int quality)
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_S_JPEGCOMP, &jpeg);
+ 	if (ret < 0) {
+-		printf("Unable to set quality to %u: %s (%d).\n", quality,
++		fprintf(stderr, "Unable to set quality to %u: %s (%d).\n", quality,
+ 			strerror(errno), errno);
+ 		return ret;
+ 	}
+ 
+ 	ret = ioctl(dev->fd, VIDIOC_G_JPEGCOMP, &jpeg);
+ 	if (ret >= 0)
+-		printf("Quality set to %u\n", jpeg.quality);
++		fprintf(stderr, "Quality set to %u\n", jpeg.quality);
+ 
+ 	return 0;
+ }
+@@ -1313,7 +1313,7 @@ static int video_load_test_pattern(struct device *dev, const char *filename)
+ 	if (filename != NULL) {
+ 		fd = open(filename, O_RDONLY);
+ 		if (fd == -1) {
+-			printf("Unable to open test pattern file '%s': %s (%d).\n",
++			fprintf(stderr, "Unable to open test pattern file '%s': %s (%d).\n",
+ 				filename, strerror(errno), errno);
+ 			return -errno;
+ 		}
+@@ -1331,7 +1331,7 @@ static int video_load_test_pattern(struct device *dev, const char *filename)
+ 		if (filename != NULL) {
+ 			ret = read(fd, dev->pattern[plane], size);
+ 			if (ret != (int)size && dev->plane_fmt[plane].bytesperline != 0) {
+-				printf("Test pattern file size %u doesn't match image size %u\n",
++				fprintf(stderr, "Test pattern file size %u doesn't match image size %u\n",
+ 					ret, size);
+ 				ret = -EINVAL;
+ 				goto done;
+@@ -1341,7 +1341,7 @@ static int video_load_test_pattern(struct device *dev, const char *filename)
+ 			unsigned int i;
+ 
+ 			if (dev->plane_fmt[plane].bytesperline == 0) {
+-				printf("Compressed format detected for plane %u and no test pattern filename given.\n"
++				fprintf(stderr, "Compressed format detected for plane %u and no test pattern filename given.\n"
+ 					"The test pattern can't be generated automatically.\n", plane);
+ 				ret = -EINVAL;
+ 				goto done;
+@@ -1410,7 +1410,7 @@ static void video_verify_buffer(struct device *dev, struct v4l2_buffer *buf)
+ 
+ 		if (dev->plane_fmt[plane].sizeimage &&
+ 		    dev->plane_fmt[plane].sizeimage != length)
+-			printf("Warning: bytes used %u != image size %u for plane %u\n",
++			fprintf(stderr, "Warning: bytes used %u != image size %u for plane %u\n",
+ 			       length, dev->plane_fmt[plane].sizeimage, plane);
+ 
+ 		if (buffer->padding[plane] == 0)
+@@ -1424,16 +1424,16 @@ static void video_verify_buffer(struct device *dev, struct v4l2_buffer *buf)
+ 		}
+ 
+ 		if (errors) {
+-			printf("Warning: %u bytes overwritten among %u first padding bytes for plane %u\n",
++			fprintf(stderr, "Warning: %u bytes overwritten among %u first padding bytes for plane %u\n",
+ 			       errors, dirty, plane);
+ 
+ 			dirty = (dirty + 15) & ~15;
+ 			dirty = dirty > 32 ? 32 : dirty;
+ 
+ 			for (i = 0; i < dirty; ++i) {
+-				printf("%02x ", data[i]);
++				fprintf(stderr, "%02x ", data[i]);
+ 				if (i % 16 == 15)
+-					printf("\n");
++					fprintf(stderr, "\n");
+ 			}
+ 		}
+ 	}
+@@ -1481,18 +1481,32 @@ static void video_save_image(struct device *dev, struct v4l2_buffer *buf,
+ 
+ 		ret = write(fd, dev->buffers[buf->index].mem[i], length);
+ 		if (ret < 0) {
+-			printf("write error: %s (%d)\n", strerror(errno), errno);
++			fprintf(stderr, "write error: %s (%d)\n", strerror(errno), errno);
+ 			break;
+ 		} else if (ret != (int)length)
+-			printf("write error: only %d bytes written instead of %u\n",
++			fprintf(stderr, "write error: only %d bytes written instead of %u\n",
+ 			       ret, length);
+ 	}
+ 	close(fd);
+ }
+ 
++static void video_stdout_image(struct device *dev, struct v4l2_buffer *buf)
++{
++    int ret;
++
++    fprintf(stderr, "stdout");
++    ret = fwrite(dev->buffers[buf->index].mem, buf->bytesused, 1, stdout);
++
++    if (ret < 0)
++        fprintf(stderr, "write error: %s (%d)\n", strerror(errno), errno);
++    else if (ret != (int)buf->bytesused)
++        fprintf(stderr, "write error: only %d bytes written instead of %u\n",
++                ret, buf->bytesused);
++}
++
+ static int video_do_capture(struct device *dev, unsigned int nframes,
+ 	unsigned int skip, unsigned int delay, const char *pattern,
+-	int do_requeue_last, enum buffer_fill_mode fill)
++	int do_requeue_last, enum buffer_fill_mode fill, int do_stdout)
+ {
+ 	struct v4l2_plane planes[VIDEO_MAX_PLANES];
+ 	struct v4l2_buffer buf;
+@@ -1529,7 +1543,7 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
+ 		ret = ioctl(dev->fd, VIDIOC_DQBUF, &buf);
+ 		if (ret < 0) {
+ 			if (errno != EIO) {
+-				printf("Unable to dequeue buffer: %s (%d).\n",
++				fprintf(stderr, "Unable to dequeue buffer: %s (%d).\n",
+ 					strerror(errno), errno);
+ 				goto done;
+ 			}
+@@ -1550,7 +1564,7 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
+ 
+ 		clock_gettime(CLOCK_MONOTONIC, &ts);
+ 		get_ts_flags(buf.flags, &ts_type, &ts_source);
+-		printf("%u (%u) [%c] %s %u %u B %ld.%06ld %ld.%06ld %.3f fps ts %s/%s\n", i, buf.index,
++		fprintf(stderr, "%u (%u) [%c] %s %u %u B %ld.%06ld %ld.%06ld %.3f fps ts %s/%s\n", i, buf.index,
+ 			(buf.flags & V4L2_BUF_FLAG_ERROR) ? 'E' : '-',
+ 			v4l2_field_name(buf.field),
+ 			buf.sequence, buf.bytesused, buf.timestamp.tv_sec,
+@@ -1563,6 +1577,9 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
+ 		if (video_is_capture(dev) && pattern && !skip)
+ 			video_save_image(dev, &buf, pattern, i);
+ 
++		if (video_is_capture(dev) && do_stdout && !skip)
++			video_stdout_image(dev, &buf);
++
+ 		if (skip)
+ 			--skip;
+ 
+@@ -1577,7 +1594,7 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
+ 
+ 		ret = video_queue_buffer(dev, buf.index, fill);
+ 		if (ret < 0) {
+-			printf("Unable to requeue buffer: %s (%d).\n",
++			fprintf(stderr, "Unable to requeue buffer: %s (%d).\n",
+ 				strerror(errno), errno);
+ 			goto done;
+ 		}
+@@ -1587,7 +1604,7 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
+ 	video_enable(dev, 0);
+ 
+ 	if (nframes == 0) {
+-		printf("No frames captured.\n");
++		fprintf(stderr, "No frames captured.\n");
+ 		goto done;
+ 	}
+ 
+@@ -1604,7 +1621,7 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
+ 	bps = size/(ts.tv_nsec/1000.0+1000000.0*ts.tv_sec)*1000000.0;
+ 	fps = i/(ts.tv_nsec/1000.0+1000000.0*ts.tv_sec)*1000000.0;
+ 
+-	printf("Captured %u frames in %lu.%06lu seconds (%f fps, %f B/s).\n",
++	fprintf(stderr, "Captured %u frames in %lu.%06lu seconds (%f fps, %f B/s).\n",
+ 		i, ts.tv_sec, ts.tv_nsec/1000, fps, bps);
+ 
+ done:
+@@ -1616,42 +1633,42 @@ done:
+ 
+ static void usage(const char *argv0)
+ {
+-	printf("Usage: %s [options] device\n", argv0);
+-	printf("Supported options:\n");
+-	printf("-B, --buffer-type		Buffer type (\"capture\", \"output\",\n");
+-	printf("                                \"capture-mplane\" or \"output-mplane\")\n");
+-	printf("-c, --capture[=nframes]		Capture frames\n");
+-	printf("-C, --check-overrun		Verify dequeued frames for buffer overrun\n");
+-	printf("-d, --delay			Delay (in ms) before requeuing buffers\n");
+-	printf("-f, --format format		Set the video format\n");
+-	printf("-F, --file[=name]		Read/write frames from/to disk\n");
+-	printf("\tFor video capture devices, the first '#' character in the file name is\n");
+-	printf("\texpanded to the frame sequence number. The default file name is\n");
+-	printf("\t'frame-#.bin'.\n");
+-	printf("-h, --help			Show this help screen\n");
+-	printf("-i, --input input		Select the video input\n");
+-	printf("-I, --fill-frames		Fill frames with check pattern before queuing them\n");
+-	printf("-l, --list-controls		List available controls\n");
+-	printf("-n, --nbufs n			Set the number of video buffers\n");
+-	printf("-p, --pause			Pause before starting the video stream\n");
+-	printf("-q, --quality n			MJPEG quality (0-100)\n");
+-	printf("-r, --get-control ctrl		Get control 'ctrl'\n");
+-	printf("-R, --realtime=[priority]	Enable realtime RR scheduling\n");
+-	printf("-s, --size WxH			Set the frame size\n");
+-	printf("-t, --time-per-frame num/denom	Set the time per frame (eg. 1/25 = 25 fps)\n");
+-	printf("-u, --userptr			Use the user pointers streaming method\n");
+-	printf("-w, --set-control 'ctrl value'	Set control 'ctrl' to 'value'\n");
+-	printf("    --enum-formats		Enumerate formats\n");
+-	printf("    --enum-inputs		Enumerate inputs\n");
+-	printf("    --fd                        Use a numeric file descriptor insted of a device\n");
+-	printf("    --field			Interlaced format field order\n");
+-	printf("    --no-query			Don't query capabilities on open\n");
+-	printf("    --offset			User pointer buffer offset from page start\n");
+-	printf("    --requeue-last		Requeue the last buffers before streamoff\n");
+-	printf("    --timestamp-source		Set timestamp source on output buffers [eof, soe]\n");
+-	printf("    --skip n			Skip the first n frames\n");
+-	printf("    --sleep-forever		Sleep forever after configuring the device\n");
+-	printf("    --stride value		Line stride in bytes\n");
++	fprintf(stderr, "Usage: %s [options] device\n", argv0);
++	fprintf(stderr, "Supported options:\n");
++	fprintf(stderr, "-B, --buffer-type		Buffer type (\"capture\", \"output\",\n");
++	fprintf(stderr, "                                \"capture-mplane\" or \"output-mplane\")\n");
++	fprintf(stderr, "-c, --capture[=nframes]		Capture frames\n");
++	fprintf(stderr, "-C, --check-overrun		Verify dequeued frames for buffer overrun\n");
++	fprintf(stderr, "-d, --delay			Delay (in ms) before requeuing buffers\n");
++	fprintf(stderr, "-f, --format format		Set the video format\n");
++	fprintf(stderr, "-F, --file[=name]		Read/write frames from/to disk\n");
++	fprintf(stderr, "\tFor video capture devices, the first '#' character in the file name is\n");
++	fprintf(stderr, "\texpanded to the frame sequence number. The default file name is\n");
++	fprintf(stderr, "\t'frame-#.bin'.\n");
++	fprintf(stderr, "-h, --help			Show this help screen\n");
++	fprintf(stderr, "-i, --input input		Select the video input\n");
++	fprintf(stderr, "-I, --fill-frames		Fill frames with check pattern before queuing them\n");
++	fprintf(stderr, "-l, --list-controls		List available controls\n");
++	fprintf(stderr, "-n, --nbufs n			Set the number of video buffers\n");
++	fprintf(stderr, "-p, --pause			Pause before starting the video stream\n");
++	fprintf(stderr, "-q, --quality n			MJPEG quality (0-100)\n");
++	fprintf(stderr, "-r, --get-control ctrl		Get control 'ctrl'\n");
++	fprintf(stderr, "-R, --realtime=[priority]	Enable realtime RR scheduling\n");
++	fprintf(stderr, "-s, --size WxH			Set the frame size\n");
++	fprintf(stderr, "-t, --time-per-frame num/denom	Set the time per frame (eg. 1/25 = 25 fps)\n");
++	fprintf(stderr, "-u, --userptr			Use the user pointers streaming method\n");
++	fprintf(stderr, "-w, --set-control 'ctrl value'	Set control 'ctrl' to 'value'\n");
++	fprintf(stderr, "    --enum-formats		Enumerate formats\n");
++	fprintf(stderr, "    --enum-inputs		Enumerate inputs\n");
++	fprintf(stderr, "    --fd                        Use a numeric file descriptor insted of a device\n");
++	fprintf(stderr, "    --field			Interlaced format field order\n");
++	fprintf(stderr, "    --no-query			Don't query capabilities on open\n");
++	fprintf(stderr, "    --offset			User pointer buffer offset from page start\n");
++	fprintf(stderr, "    --requeue-last		Requeue the last buffers before streamoff\n");
++	fprintf(stderr, "    --timestamp-source		Set timestamp source on output buffers [eof, soe]\n");
++	fprintf(stderr, "    --skip n			Skip the first n frames\n");
++	fprintf(stderr, "    --sleep-forever		Sleep forever after configuring the device\n");
++	fprintf(stderr, "    --stride value		Line stride in bytes\n");
+ }
+ 
+ #define OPT_ENUM_FORMATS	256
+@@ -1665,6 +1682,7 @@ static void usage(const char *argv0)
+ #define OPT_FD			264
+ #define OPT_TSTAMP_SRC		265
+ #define OPT_FIELD		266
++#define OPT_STDOUT		267
+ 
+ static struct option opts[] = {
+ 	{"buffer-type", 1, 0, 'B'},
+@@ -1677,6 +1695,7 @@ static struct option opts[] = {
+ 	{"field", 1, 0, OPT_FIELD},
+ 	{"file", 2, 0, 'F'},
+ 	{"fill-frames", 0, 0, 'I'},
++	{"stdout", 0, 0, OPT_STDOUT},
+ 	{"format", 1, 0, 'f'},
+ 	{"help", 0, 0, 'h'},
+ 	{"input", 1, 0, 'i'},
+@@ -1717,7 +1736,8 @@ int main(int argc, char *argv[])
+ 	int do_list_controls = 0, do_get_control = 0, do_set_control = 0;
+ 	int do_sleep_forever = 0, do_requeue_last = 0;
+ 	int do_rt = 0;
+-	int no_query = 0;
++	int no_query = 0; 
++	int do_stdout = 0;
+ 	char *endptr;
+ 	int c;
+ 
+@@ -1755,7 +1775,7 @@ int main(int argc, char *argv[])
+ 		case 'B':
+ 			ret = v4l2_buf_type_from_string(optarg);
+ 			if (ret == -1) {
+-				printf("Bad buffer type \"%s\"\n", optarg);
++				fprintf(stderr, "Bad buffer type \"%s\"\n", optarg);
+ 				return 1;
+ 			}
+ 			video_set_buf_type(&dev, ret);
+@@ -1775,7 +1795,7 @@ int main(int argc, char *argv[])
+ 			do_set_format = 1;
+ 			info = v4l2_format_by_name(optarg);
+ 			if (info == NULL) {
+-				printf("Unsupported video format '%s'\n", optarg);
++				fprintf(stderr, "Unsupported video format '%s'\n", optarg);
+ 				return 1;
+ 			}
+ 			pixelformat = info->fourcc;
+@@ -1812,7 +1832,7 @@ int main(int argc, char *argv[])
+ 		case 'r':
+ 			ctrl_name = strtol(optarg, &endptr, 0);
+ 			if (*endptr != 0) {
+-				printf("Invalid control name '%s'\n", optarg);
++				fprintf(stderr, "Invalid control name '%s'\n", optarg);
+ 				return 1;
+ 			}
+ 			do_get_control = 1;
+@@ -1826,12 +1846,12 @@ int main(int argc, char *argv[])
+ 			do_set_format = 1;
+ 			width = strtol(optarg, &endptr, 10);
+ 			if (*endptr != 'x' || endptr == optarg) {
+-				printf("Invalid size '%s'\n", optarg);
++				fprintf(stderr, "Invalid size '%s'\n", optarg);
+ 				return 1;
+ 			}
+ 			height = strtol(endptr + 1, &endptr, 10);
+ 			if (*endptr != 0) {
+-				printf("Invalid size '%s'\n", optarg);
++				fprintf(stderr, "Invalid size '%s'\n", optarg);
+ 				return 1;
+ 			}
+ 			break;
+@@ -1839,12 +1859,12 @@ int main(int argc, char *argv[])
+ 			do_set_time_per_frame = 1;
+ 			time_per_frame.numerator = strtol(optarg, &endptr, 10);
+ 			if (*endptr != '/' || endptr == optarg) {
+-				printf("Invalid time per frame '%s'\n", optarg);
++				fprintf(stderr, "Invalid time per frame '%s'\n", optarg);
+ 				return 1;
+ 			}
+ 			time_per_frame.denominator = strtol(endptr + 1, &endptr, 10);
+ 			if (*endptr != 0) {
+-				printf("Invalid time per frame '%s'\n", optarg);
++				fprintf(stderr, "Invalid time per frame '%s'\n", optarg);
+ 				return 1;
+ 			}
+ 			break;
+@@ -1854,12 +1874,12 @@ int main(int argc, char *argv[])
+ 		case 'w':
+ 			ctrl_name = strtol(optarg, &endptr, 0);
+ 			if (*endptr != ' ' || endptr == optarg) {
+-				printf("Invalid control name '%s'\n", optarg);
++				fprintf(stderr, "Invalid control name '%s'\n", optarg);
+ 				return 1;
+ 			}
+ 			ctrl_value = strtol(endptr + 1, &endptr, 0);
+ 			if (*endptr != 0) {
+-				printf("Invalid control value '%s'\n", optarg);
++				fprintf(stderr, "Invalid control value '%s'\n", optarg);
+ 				return 1;
+ 			}
+ 			do_set_control = 1;
+@@ -1873,16 +1893,16 @@ int main(int argc, char *argv[])
+ 		case OPT_FD:
+ 			ret = atoi(optarg);
+ 			if (ret < 0) {
+-				printf("Bad file descriptor %d\n", ret);
++				fprintf(stderr, "Bad file descriptor %d\n", ret);
+ 				return 1;
+ 			}
+-			printf("Using file descriptor %d\n", ret);
++			fprintf(stderr, "Using file descriptor %d\n", ret);
+ 			video_set_fd(&dev, ret);
+ 			break;
+ 		case OPT_FIELD:
+ 			field = v4l2_field_from_string(optarg);
+ 			if (field == (enum v4l2_field)-1) {
+-				printf("Invalid field order '%s'\n", optarg);
++				fprintf(stderr, "Invalid field order '%s'\n", optarg);
+ 				return 1;
+ 			}
+ 			break;
+@@ -1907,22 +1927,25 @@ int main(int argc, char *argv[])
+ 			} else if (!strcmp(optarg, "soe")) {
+ 				dev.buffer_output_flags |= V4L2_BUF_FLAG_TSTAMP_SRC_SOE;
+ 			} else {
+-				printf("Invalid timestamp source %s\n", optarg);
++				fprintf(stderr, "Invalid timestamp source %s\n", optarg);
+ 				return 1;
+ 			}
+ 			break;
+ 		case OPT_USERPTR_OFFSET:
+ 			userptr_offset = atoi(optarg);
+ 			break;
++		case OPT_STDOUT:
++			do_stdout = 1;
++			break;
+ 		default:
+-			printf("Invalid option -%c\n", c);
+-			printf("Run %s -h for help.\n", argv[0]);
++			fprintf(stderr, "Invalid option -%c\n", c);
++			fprintf(stderr, "Run %s -h for help.\n", argv[0]);
+ 			return 1;
+ 		}
+ 	}
+ 
+ 	if ((fill_mode & BUFFER_FILL_PADDING) && memtype != V4L2_MEMORY_USERPTR) {
+-		printf("Buffer overrun can only be checked in USERPTR mode.\n");
++		fprintf(stderr, "Buffer overrun can only be checked in USERPTR mode.\n");
+ 		return 1;
+ 	}
+ 
+@@ -1959,7 +1982,7 @@ int main(int argc, char *argv[])
+ 		ret = get_control(&dev, ctrl_name,
+ 				  get_control_type(&dev, ctrl_name), &val);
+ 		if (ret >= 0)
+-			printf("Control 0x%08x value %" PRId64 "\n", ctrl_name, val);
++			fprintf(stderr, "Control 0x%08x value %" PRId64 "\n", ctrl_name, val);
+ 	}
+ 
+ 	if (do_set_control)
+@@ -1970,7 +1993,7 @@ int main(int argc, char *argv[])
+ 		video_list_controls(&dev);
+ 
+ 	if (do_enum_formats) {
+-		printf("- Available formats:\n");
++		fprintf(stderr, "- Available formats:\n");
+ 		video_enum_formats(&dev, V4L2_BUF_TYPE_VIDEO_CAPTURE);
+ 		video_enum_formats(&dev, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+ 		video_enum_formats(&dev, V4L2_BUF_TYPE_VIDEO_OUTPUT);
+@@ -1979,14 +2002,14 @@ int main(int argc, char *argv[])
+ 	}
+ 
+ 	if (do_enum_inputs) {
+-		printf("- Available inputs:\n");
++		fprintf(stderr, "- Available inputs:\n");
+ 		video_enum_inputs(&dev);
+ 	}
+ 
+ 	if (do_set_input) {
+ 		video_set_input(&dev, input);
+ 		ret = video_get_input(&dev);
+-		printf("Input %d selected\n", ret);
++		fprintf(stderr, "Input %d selected\n", ret);
+ 	}
+ 
+ 	/* Set the video format. */
+@@ -2028,7 +2051,7 @@ int main(int argc, char *argv[])
+ 	}
+ 
+ 	if (do_pause) {
+-		printf("Press enter to start capture\n");
++		fprintf(stderr, "Press enter to start capture\n");
+ 		getchar();
+ 	}
+ 
+@@ -2037,12 +2060,12 @@ int main(int argc, char *argv[])
+ 		sched.sched_priority = rt_priority;
+ 		ret = sched_setscheduler(0, SCHED_RR, &sched);
+ 		if (ret < 0)
+-			printf("Failed to select RR scheduler: %s (%d)\n",
++			fprintf(stderr, "Failed to select RR scheduler: %s (%d)\n",
+ 				strerror(errno), errno);
+ 	}
+ 
+ 	if (video_do_capture(&dev, nframes, skip, delay, filename,
+-			     do_requeue_last, fill_mode) < 0) {
++			     do_requeue_last, fill_mode, do_stdout) < 0) {
+ 		video_close(&dev);
+ 		return 1;
+ 	}
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb
new file mode 100644
index 0000000..a192d1a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Yet Another V4L2 Test Application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "git://git.ideasonboard.org/yavta.git \
+           file://0001-Add-stdout-mode-to-allow-streaming-over-the-network-.patch"
+SRCREV = "7e9f28bedc1ed3205fb5164f686aea96f27a0de2"
+
+PV = "0.0"
+PR = "r2"
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+# The yavta sources include copies of the headers required to build in the
+# include directory.  The Makefile uses CFLAGS to include these, but since
+# we override the CFLAGS then we need to add this include path back in.
+CFLAGS += "-I${S}/include"
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 yavta ${D}${bindir}
+}
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/wavpack/wavpack_4.60.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/wavpack/wavpack_4.60.1.bb
new file mode 100644
index 0000000..cc5b844
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/wavpack/wavpack_4.60.1.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "WavPack is a completely open audio compression format providing lossless, high-quality lossy, and a unique hybrid compression mode."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://license.txt;md5=f596650807588c61fcab60bec8242df8"
+
+SRC_URI = "http://wavpack.com/wavpack-${PV}.tar.bz2"
+SRC_URI[md5sum] = "7bb1528f910e4d0003426c02db856063"
+SRC_URI[sha256sum] = "175ee4f2effd6f51e6ec487956f41177256bf892c2e8e07de5d27ed4ee6888c5"
+
+inherit autotools lib_package
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx/libvpx-configure-support-blank-prefix.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx/libvpx-configure-support-blank-prefix.patch
new file mode 100644
index 0000000..c7a6e51
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx/libvpx-configure-support-blank-prefix.patch
@@ -0,0 +1,43 @@
+Upstream: not yet
+
+Fix configure to accept "--prefix=" (a blank prefix).
+
+--- libvpx-0.9.1/build/make/configure.sh.orig	2010-06-17 09:08:56.000000000 -0400
++++ libvpx-0.9.1/build/make/configure.sh	2010-09-23 14:27:48.000000000 -0400
+@@ -444,6 +444,8 @@
+         ;;
+         --prefix=*)
+         prefix="${optval}"
++        # Distinguish between "prefix not set" and "prefix set to ''"
++        prefixset=1
+         ;;
+         --libdir=*)
+         libdir="${optval}"
+@@ -587,13 +587,23 @@ process_cmdline() {
+ }
+ 
+ post_process_common_cmdline() {
+-  prefix="${prefix:-/usr/local}"
++  if [ "$prefixset" != "1" ]
++  then
++      prefix=/usr/local
++  fi
++
++  # Strip trailing slash
+   prefix="${prefix%/}"
++
+   libdir="${libdir:-${prefix}/lib}"
+   libdir="${libdir%/}"
+-  if [ "${libdir#${prefix}}" = "${libdir}" ]; then
+-    die "Libdir ${libdir} must be a subdirectory of ${prefix}"
+-  fi
++
++  case "$libdir" in
++      "${prefix}/"*) ;;
++      *)
++          die "Libdir ${libdir} must be a subdirectory of ${prefix}"
++          ;;
++  esac
+ }
+ 
+ post_process_cmdline() {
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx_1.5.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx_1.5.0.bb
new file mode 100644
index 0000000..648818e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx_1.5.0.bb
@@ -0,0 +1,49 @@
+SUMMARY = "VPX multi-format codec"
+DESCRIPTION = "The BSD-licensed libvpx reference implementation provides en- and decoders for VP8 and VP9 bitstreams."
+HOMEPAGE = "http://www.webmproject.org/code/"
+BUGTRACKER = "http://code.google.com/p/webm/issues/list"
+SECTION = "libs/multimedia"
+LICENSE = "BSD"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d5b04755015be901744a78cc30d390d4"
+
+SRC_URI += "http://storage.googleapis.com/downloads.webmproject.org/releases/webm/${BP}.tar.bz2 \
+            file://libvpx-configure-support-blank-prefix.patch \
+           "
+SRC_URI[md5sum] = "49e59dd184caa255886683facea56fca"
+SRC_URI[sha256sum] = "306d67908625675f8e188d37a81fbfafdf5068b09d9aa52702b6fbe601c76797"
+
+# ffmpeg links with this and fails
+# sysroots/armv4t-oe-linux-gnueabi/usr/lib/libvpx.a(vpx_encoder.c.o)(.text+0xc4): unresolvable R_ARM_THM_CALL relocation against symbol `memcpy@@GLIBC_2.4'
+ARM_INSTRUCTION_SET = "arm"
+
+CFLAGS += "-fPIC"
+
+export CC
+export LD = "${CC}"
+
+VPXTARGET_armv5te = "armv5te-linux-gcc"
+VPXTARGET_armv6 = "armv6-linux-gcc"
+VPXTARGET_armv7a = "armv7-linux-gcc"
+VPXTARGET ?= "generic-gnu"
+
+CONFIGUREOPTS = " \
+    --target=${VPXTARGET} \
+    --enable-vp9 \
+    --enable-libs \
+    --disable-install-docs \
+    --disable-static \
+    --enable-shared \
+    --prefix=${prefix} \
+    --libdir=${libdir} \
+    --size-limit=16384x16384 \
+"
+
+do_configure() {
+    ${S}/configure ${CONFIGUREOPTS}
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+    chown -R root:root ${D}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext/auxdir.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext/auxdir.patch
new file mode 100644
index 0000000..da5841a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext/auxdir.patch
@@ -0,0 +1,13 @@
+--- configure.ac.old	2005-06-03 12:53:28.000000000 +0200
++++ configure.ac	2005-06-03 12:54:29.000000000 +0200
+@@ -25,9 +25,9 @@
+ 
+ AC_PREREQ([2.57])
+ AC_INIT([spext], [1.0], [lauri.leukkunen@nokia.com], spext)
++AC_CONFIG_AUX_DIR(.)
+ AM_INIT_AUTOMAKE([dist-bzip2])
+ AM_MAINTAINER_MODE
+-AC_CONFIG_AUX_DIR(.)
+ 
+ dnl PKG_CHECK_MODULES(FIXESEXT, fixesext)
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext_1.0-5.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext_1.0-5.bb
new file mode 100644
index 0000000..d65546d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext_1.0-5.bb
@@ -0,0 +1,17 @@
+LICENSE= "MIT"
+SUMMARY = "X Server Nokia 770 extensions library"
+SECTION = "x11/libs"
+DEPENDS = "virtual/libx11 libxext"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=db043791349ba57ad1169e1c92477cb6"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/x/${BPN}/${BPN}_${PV}.tar.gz \
+           file://auxdir.patch;striplevel=0"
+S = "${WORKDIR}/xpext-1.0"
+
+inherit autotools pkgconfig distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[md5sum] = "1b0cb67b6f2bd7c4abef17648b062896"
+SRC_URI[sha256sum] = "a3b06f5188fd9effd0799ae31352b3cd65cb913b964e2c1a923ffa9d3c08abbe"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp/xsp-fix-pc.patch b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp/xsp-fix-pc.patch
new file mode 100644
index 0000000..18bc67c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp/xsp-fix-pc.patch
@@ -0,0 +1,10 @@
+--- Xsp/xsp.pc.in~	2009-01-07 13:06:07.000000000 +0100
++++ Xsp/xsp.pc.in	2009-01-07 13:06:07.000000000 +0100
+@@ -6,5 +6,5 @@
+ Name: Xsp
+ Description: X Sputnik Library
+ Version: @PACKAGE_VERSION@
+-Cflags: -I${includedir}  @XSP_CFLAGS@ @X_CFLAGS@
+-Libs: -L${libdir} -lXsp @XSP_LIBS@ @X_LIBS@
++Cflags: -I${includedir}
++Libs: -L${libdir} -lXsp -lX11
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp_1.0.0-8.bb b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp_1.0.0-8.bb
new file mode 100644
index 0000000..c7a068d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp_1.0.0-8.bb
@@ -0,0 +1,15 @@
+LICENSE= "MIT"
+SUMMARY = "X Server Nokia 770 extensions library"
+SECTION = "x11/libs"
+DEPENDS = "virtual/libx11 libxext xpext"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ea2bda168c508c7cd8afa567b2fcc549"
+SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/x/xsp/${BPN}_${PV}.tar.gz \
+           file://xsp-fix-pc.patch"
+S = "${WORKDIR}/Xsp"
+
+inherit autotools pkgconfig distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[md5sum] = "2a0d8d02228d4cbd28b6e07bb7c17cf5"
+SRC_URI[sha256sum] = "8b722b952b64841d996c70c3278499886c81bb5012991beed5f66f4158418f59"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/foxtrotgps/foxtrotgps_1.1.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/foxtrotgps/foxtrotgps_1.1.1.bb
new file mode 100644
index 0000000..d91cbcb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/foxtrotgps/foxtrotgps_1.1.1.bb
@@ -0,0 +1,26 @@
+SUMMARY = "FoxtrotGPS is a map and GPS application using OpenStreetMap"
+AUTHOR = "Joshua Judson Rosen <rozzin@geekspace.com>"
+HOMEPAGE = "http://www.foxtrotgps.org/"
+SECTION = "x11/applications"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+DEPENDS = "curl gtk+ libglade sqlite3 libexif gpsd bluez4 intltool-native"
+
+PNBLACKLIST[foxtrotgps] ?= "${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez5 conflicts with bluez4 and bluez5 is selected in DISTRO_FEATURES', '', d)}"
+
+SRC_URI = "http://www.foxtrotgps.org/releases/${BP}.tar.gz"
+SRC_URI[md5sum] = "6777d448ee9d3ba195f9d26ea90e3163"
+SRC_URI[sha256sum] = "ae9706285510554cc0813ac92522e0d1672b0ddb065307bfacfcff3c328f6adb"
+
+inherit autotools pkgconfig perlnative gconf
+
+PR = "r2"
+
+do_configure_prepend() {
+    if [ -f ${S}/configure.in ] ; then
+    mv ${S}/configure.in ${S}/configure.ac
+    fi
+}
+
+RDEPENDS_${PN} += "python perl"
+RRECOMMENDS_${PN} = "gpsd"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gdal/gdal_1.11.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gdal/gdal_1.11.1.bb
new file mode 100644
index 0000000..012806a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gdal/gdal_1.11.1.bb
@@ -0,0 +1,114 @@
+SUMMARY = "GDAL is a translator library for raster geospatial data formats"
+HOMEPAGE = "http://www.gdal.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=0952e17969fab12227096b5228f23149"
+
+DEPENDS = "proj sqlite3 tiff json-c"
+
+SRC_URI = "ftp://download.osgeo.org/gdal/${PV}/${BP}.tar.xz"
+
+SRC_URI[md5sum] = "2e126d7c6605691d38f3e71b945f5c73"
+SRC_URI[sha256sum] = "20e1042cff15a71038459a299732fb342428aea9912f32df30c85790fcab6302"
+
+inherit autotools-brokensep lib_package binconfig
+
+EXTRA_OECONF = "--without-perl \
+                --without-php \
+                --without-ruby \
+                --without-python \
+                \
+                --without-grass \
+                --without-libgrass \
+                --without-cfitsio \
+                --without-dds \
+                --without-gta \
+                --without-pcidsk \
+                --without-ogdi \
+                --without-fme \
+                --without-hdf4 \
+                --without-hdf5 \
+                --without-pg \
+                --without-jpeg12 \
+                --without-ogdi \
+                --without-netcdf \
+                --without-openjpeg \
+                --without-fgdb \
+                --without-ecw \
+                --without-kakadu \
+                --without-mrsid \
+                --without-jp2mrsid \
+                --without-mrsid_lidar \
+                --without-msg \
+                --without-bsb \
+                --without-grib \
+                --without-mysql \
+                --without-ingres \
+                --without-odbc \
+                --without-dods_root \
+                --without-xml2 \
+                --without-spatialite \
+                --without-pcre \
+                --without-dwgdirect \
+                --without-dwgdirect \
+                --without-idb \
+                --without-sde \
+                --without-sde-version \
+                --without-epsilon \
+                --without-webp \
+                --without-opencl \
+                --without-opencl-include \
+                --without-opencl-lib \
+                --without-freexl \
+                --without-pam \
+                --without-poppler \
+                --without-podofo \
+                --without-podofo-lib \
+                --without-podofo-extra-lib-for-test \
+                --without-static_proj4 \
+                --without-perl \
+                --without-php \
+                --without-ruby \
+                --without-python \
+                --without-java \
+                --without-mdb \
+                --without-jvm-lib \
+                --without-jvm-lib-add-rpath \
+                --without-rasdaman \
+                --without-armadillo \
+                \
+                --with-pcraster=internal \
+                --with-geotiff=internal \
+                \
+                --with-sqlite3=${STAGING_EXECPREFIXDIR} \
+                --with-libtiff=${STAGING_EXECPREFIXDIR} \
+                --with-libjson-c=${STAGING_EXECPREFIXDIR} \
+                --with-expat=${STAGING_EXECPREFIXDIR} \
+"
+
+EXTRA_OEMAKE += "INST_DATA="${datadir}/gdal""
+
+PACKAGECONFIG ?= "geos png jasper"
+PACKAGECONFIG[geos] = "--with-geos,--without-geos,geos"
+PACKAGECONFIG[lzma] = "--with-liblzma,--without-liblzma,xz"
+PACKAGECONFIG[png] = "--with-png,--without-png,libpng"
+PACKAGECONFIG[gif] = "--with-gif,--without-gif,giflib"
+PACKAGECONFIG[jpeg] = "--with-jpeg,--without-jpeg,jpeg"
+PACKAGECONFIG[z] = "--with-libz,--without-libz,zlib"
+PACKAGECONFIG[jasper] = "--with-jasper,--without-jasper,jasper"
+PACKAGECONFIG[curl] = "--with-curl,--without-curl,curl"
+
+do_configure_prepend () {
+    # The configure script has many hardcoded paths to search
+    # for the library headers when using external libraries,
+    # workaround it.
+    sed -e 's,/usr/include,NON_EXISTENT_DIR,g' \
+        -e 's,/usr/lib,NON_EXISTENT_DIR,g' \
+        -i ${S}/configure.in
+}
+
+FILES_${PN} += "${libdir}/gdalplugins"
+
+# | gdalserver.c:124:21: error: storage size of 'sHints' isn't known
+# |      struct addrinfo sHints;
+# |                      ^
+PNBLACKLIST[gdal] ?= "BROKEN: fails to build with gcc-5"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/geoclue/files/soup-session-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/geoclue/files/soup-session-fix.patch
new file mode 100644
index 0000000..70fe3f5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/geoclue/files/soup-session-fix.patch
@@ -0,0 +1,30 @@
+Upstream-Status: Upstream-Status: Inappropriate [poky 9.0 has older libsoup]
+
+Signed-off-by: Felipe F. Tonello <eu@felipetonello.com>
+
+diff --git a/src/gclue-ipclient.c b/src/gclue-ipclient.c
+index 09add30..1771d5c 100644
+--- a/src/gclue-ipclient.c
++++ b/src/gclue-ipclient.c
+@@ -83,7 +83,7 @@ gclue_ipclient_init (GClueIpclient *ipclient)
+ {
+         ipclient->priv = G_TYPE_INSTANCE_GET_PRIVATE ((ipclient), GCLUE_TYPE_IPCLIENT, GClueIpclientPrivate);
+ 
+-        ipclient->priv->soup_session = soup_session_new ();
++        ipclient->priv->soup_session = soup_session_sync_new ();
+ }
+ 
+ /**
+diff --git a/src/geoip-server/geoip-update.c b/src/geoip-server/geoip-update.c
+index 6cce7b2..ef672ba 100644
+--- a/src/geoip-server/geoip-update.c
++++ b/src/geoip-server/geoip-update.c
+@@ -214,7 +214,7 @@ main (int argc, char **argv)
+                         path = GEOIP_DATABASE_PATH;
+         }
+ 
+-        session = soup_session_new ();
++        session = soup_session_sync_new ();
+ 
+         for (i = 0; i < G_N_ELEMENTS (db_info_map); i++) {
+                 SoupMessage *msg = NULL;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.0.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.0.0.bb
new file mode 100644
index 0000000..5e3d04e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.0.0.bb
@@ -0,0 +1,33 @@
+SUMMARY = "The Geolocation Service"
+DESCRIPTION = "Geoclue is a D-Bus service that provides location information. \
+The primary goal of the Geoclue project is to make creating location-aware applications \
+as simple as possible, while the secondary goal is to ensure that no application \
+can access location information without explicit permission from user."
+LICENSE = "GPLv2.0+"
+SECTION = "console/network"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8114b83a0435d8136b47bd70111ce5cd"
+
+DEPENDS = "glib-2.0 dbus dbus-glib json-glib libsoup-2.4"
+
+inherit autotools pkgconfig gtk-doc
+
+SRC_URI = " \
+  http://www.freedesktop.org/software/geoclue/releases/2.0/geoclue-${PV}.tar.xz \
+  file://soup-session-fix.patch \
+"
+
+SRC_URI[md5sum] = "401ff99d530b177c62afacef0a33efd9"
+SRC_URI[sha256sum] = "4a82f184e55a163d86e0ad69bbe1bba9960bb5094220fe1f01350bceda8c67a1"
+
+PACKAGECONFIG[geoip] = "--enable-geoip-server,--disable-geoip-server,geoip"
+
+EXTRA_OECONF += " \
+  --with-dbus-service-user=root \
+  --with-dbus-sys-dir=${sysconfdir}/dbus-1/system.d \
+"
+
+FILES_${PN} += " \
+  ${datadir}/dbus-1/system-services/org.freedesktop.GeoClue2.service \
+  ${datadir}/geoclue-2.0/geoclue-interface.xml \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/geos/files/geos-config-Add-includedir-variable.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/geos/files/geos-config-Add-includedir-variable.patch
new file mode 100644
index 0000000..645e6f6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/geos/files/geos-config-Add-includedir-variable.patch
@@ -0,0 +1,39 @@
+From 9d51027c228dafd7db2d0cffca1f0fc695e950fd Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Mon, 2 Dec 2013 11:33:26 -0200
+Subject: [PATCH] geos-config: Add includedir variable
+
+This fixes cross-compile as it is easier to mangle the includedir
+during sysroot generation.
+
+Upstream-Status: Pending
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ tools/geos-config.in |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/tools/geos-config.in b/tools/geos-config.in
+index 9b45b5f..1749892 100644
+--- a/tools/geos-config.in
++++ b/tools/geos-config.in
+@@ -1,6 +1,7 @@
+ #!/bin/sh
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
++includedir=@includedir@
+ libdir=@libdir@
+ 
+ usage()
+@@ -38,7 +39,7 @@ case $1 in
+     echo @VERSION@
+      ;;
+     --cflags)
+-    echo -I${prefix}/include 
++    echo -I${includedir}
+       ;;
+     --libs)
+       # TODO: make an alias for --clibs
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc b/import-layers/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc
new file mode 100644
index 0000000..2e308b4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc
@@ -0,0 +1,21 @@
+DESCRIPTION = "GEOS - Geometry Engine, Open Source"
+HOMEPAGE = "http://trac.osgeo.org/geos/"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+SRC_URI = "http://download.osgeo.org/geos/geos-${PV}.tar.bz2"
+
+inherit autotools pkgconfig binconfig
+
+PACKAGES =+ "geoslib ${PN}-c1"
+
+DESCRIPTION_${PN}lib = "Geometry engine for Geographic Information Systems - C++ Library"
+FILES_${PN}lib += "${libdir}/libgeos-${PV}.so"
+
+DESCRIPTION_${PN}-c1 = "Geometry engine for Geographic Information Systems - C Library"
+FILES_${PN}-c1 += "${libdir}/libgeos_c.so.*"
+
+ALLOW_EMPTY_${PN} = "1"
+RDEPENDS_${PN} += "geoslib ${PN}-c1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.2.bb
new file mode 100644
index 0000000..3a9a028e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.2.bb
@@ -0,0 +1,6 @@
+require geos.inc
+
+SRC_URI += "file://geos-config-Add-includedir-variable.patch"
+
+SRC_URI[md5sum] = "fc5df2d926eb7e67f988a43a92683bae"
+SRC_URI[sha256sum] = "15e8bfdf7e29087a957b56ac543ea9a80321481cef4d4f63a7b268953ad26c53"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-Check-for-__STDC_NO_ATOMICS__-before-using-stdatomic.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-Check-for-__STDC_NO_ATOMICS__-before-using-stdatomic.patch
new file mode 100644
index 0000000..82ac5aa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-Check-for-__STDC_NO_ATOMICS__-before-using-stdatomic.patch
@@ -0,0 +1,25 @@
+From c30716be9e615513fe66993fd3cdc818c3d70410 Mon Sep 17 00:00:00 2001
+From: "Gary E. Miller" <gem@rellim.com>
+Date: Sun, 15 Mar 2015 11:51:45 -0700
+Subject: [PATCH 1/3] Check for __STDC_NO_ATOMICS__ before using stdatomic.h
+
+---
+ SConstruct | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/SConstruct b/SConstruct
+index adf473d..566c14a 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -633,7 +633,7 @@ else:
+         announce("You do not have kernel CANbus available.")
+         env["nmea2000"] = False
+ 
+-    if config.CheckHeader("stdatomic.h"):
++    if not config.CheckCompilerDefines("__STDC_NO_ATOMICS__") and config.CheckHeader("stdatomic.h"):
+         confdefs.append("#define HAVE_STDATOMIC_H 1\n")
+     else:
+ 	confdefs.append("/* #undef HAVE_STDATOMIC_H */\n")
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-Include-stdatomic.h-only-in-C-mode.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-Include-stdatomic.h-only-in-C-mode.patch
new file mode 100644
index 0000000..bc9167e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-Include-stdatomic.h-only-in-C-mode.patch
@@ -0,0 +1,43 @@
+From 79f6d9133378325d70a92e66f7352c1becefbb88 Mon Sep 17 00:00:00 2001
+From: Gleb Smirnoff <glebius@FreeBSD.org>
+Date: Sat, 16 May 2015 02:47:28 +0300
+Subject: [PATCH] Include <stdatomic.h> only in C mode.
+
+Upstream-Status: Backport from 3.15
+
+Without this build with gcc-5.2 fails with:
+| arm-oe-linux-gnueabi-g++ -march=armv4t -mthumb -mthumb-interwork -mtune=arm920t --sysroot=/OE/build/shr-core/tmp-glibc/sysroots/om-gta02 -o clock_gettime-qt.os -c -O2 -pipe -g -feliminate-unused-debug-types --sysroot=/OE/build/shr-core/tmp-glibc/sysroots/om-gta02 -Wextra -Wall -Wno-uninitialized -Wno-missing-field-initializers -Wcast-align -Wmissing-declarations -Wpointer-arith -Wreturn-type -pthread -Wmissing-declarations -g -O0 -pthread -fPIC -DUSE_QT -DQT_SHARED -I/OE/build/shr-core/tmp-glibc/sysroots/om-gta02/usr/include/dbus-1.0 -I/OE/build/shr-core/tmp-glibc/sysroots/om-gta02/usr/lib/dbus-1.0/include -I/OE/build/shr-core/tmp-glibc/sysroots/om-gta02/usr/include/qt4/QtNetwork -I/OE/build/shr-core/tmp-glibc/sysroots/om-gta02/usr/include/qt4 -I/OE/build/shr-core/tmp-glibc/sysroots/om-gta02/usr/include/qt4/QtCore clock_gettime.c
+| In file included from compiler.h:50:0,
+|                  from clock_gettime.c:10:
+| /OE/build/shr-core/tmp-glibc/sysroots/x86_64-linux/usr/lib/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/5.2.0/include/stdatomic.h:40:9: error: '_Atomic' does not name a type
+|  typedef _Atomic _Bool atomic_bool;
+|          ^
+....
+
+More info:
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60932
+
+Signed-off-by: Gary E. Miller <gem@rellim.com>
+---
+ compiler.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/compiler.h b/compiler.h
+index 837c935..03430c0 100644
+--- a/compiler.h
++++ b/compiler.h
+@@ -66,9 +66,9 @@
+     } while (0)
+ 
+ #ifdef HAVE_STDATOMIC_H
+-#ifndef __COVERITY__	/* Coverity is confused by a GNU typedef */
++#if !defined(__COVERITY__) && !defined(__cplusplus)
+ #include <stdatomic.h>
+-#endif /* __COVERITY__ */
++#endif /* __COVERITY__ || __cplusplus */
+ #endif /* HAVE_STDATOMIC_H */
+ 
+ #ifdef HAVE_OSATOMIC_H
+-- 
+2.5.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch
new file mode 100644
index 0000000..2ea3226
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch
@@ -0,0 +1,75 @@
+From 1e2cea8945bc2183fbe1a012dcd633a352125952 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 24 Apr 2012 18:45:14 +0200
+Subject: [PATCH] SConstruct: prefix includepy with sysroot and drop sysroot
+ from python_lib_dir
+
+* without PYTHONPATH, distutil's sysconfig returns INCLUDEPY without sysroot prefix
+  and with PYTHONPATH from OE it's pointing to native python dir
+
+    $ export PYTHONPATH=/OE/shr-core/tmp-eglibc/sysroots/om-gta02/usr/lib/python2.7/
+    $ python
+    Python 2.7.2 (default, Apr 18 2012, 09:19:59)
+    [GCC 4.6.2] on linux2
+    Type "help", "copyright", "credits" or "license" for more information.
+    >>> from distutils import sysconfig
+    >>> sysconfig.get_config_vars('INCLUDEPY')
+    ['/OE/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/include/python2.7']
+    >>>
+    $ unset PYTHONPATH
+    $ python
+    Python 2.7.2 (default, Apr 18 2012, 09:19:59)
+    [GCC 4.6.2] on linux2
+    Type "help", "copyright", "credits" or "license" for more information.
+    >>> from distutils import sysconfig
+    >>> sysconfig.get_config_vars('INCLUDEPY')
+    ['/python2.7']
+    >>> import sysconfig
+    >>> sysconfig.get_config_vars('INCLUDEPY')
+    ['/OE/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/include/python2.7']
+* python_lib_dir = python_lib_dir.replace(env['sysroot'], '')
+  returns path to target sysroot
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Peter A. Bigot <pab@pabigot.com>
+---
+ SConstruct | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/SConstruct b/SConstruct
+index 6c93311..cde8b3d 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -1148,6 +1148,12 @@ else:
+         basecflags += ' -coverage'
+         ldflags += ' -coverage'
+         ldshared += ' -coverage'
++
++    if env['sysroot']:
++        print "Prefixing includepy '%s' with sysroot prefix" % includepy
++        includepy = os.path.normpath("%s/%s/%s/%s" % (env['sysroot'], env['prefix'], env['includedir'], includepy))
++        print "'%s'" % includepy
++
+     # in case CC/CXX was set to the scan-build wrapper,
+     # ensure that we build the python modules with scan-build, too
+     if env['CC'] is None or env['CC'].find('scan-build') < 0:
+@@ -1408,11 +1414,14 @@ if not env['python']:
+     python_install = []
+ else:
+     python_lib_dir = env['python_libdir']
++    python_lib_dir = python_lib_dir.replace(env['sysroot'], '')
+     python_module_dir = python_lib_dir + os.sep + 'gps'
+     python_extensions_install = python_env.Install( DESTDIR + python_module_dir,
+                                                     python_built_extensions)
+     if not env['debug'] and not env['profiling'] and not env['nostrip'] and not sys.platform.startswith('darwin'):
+         python_env.AddPostAction(python_extensions_install, '$STRIP $TARGET')
++    env.AddPostAction(python_extensions_install, '$CHRPATH -r "%s" "$TARGET"' \
++                     % (python_lib_dir, ))
+ 
+     python_modules_install = python_env.Install( DESTDIR + python_module_dir,
+                                                 python_modules)
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-SConstruct-respect-sysroot-also-in-SPLINTOPTS.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-SConstruct-respect-sysroot-also-in-SPLINTOPTS.patch
new file mode 100644
index 0000000..c4134f4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-SConstruct-respect-sysroot-also-in-SPLINTOPTS.patch
@@ -0,0 +1,33 @@
+From 3c5fb3a8691ac711ea93edf8e0b42bffc62b197e Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 24 Apr 2012 11:52:35 +0200
+Subject: [PATCH 1/4] SConstruct: respect sysroot also in SPLINTOPTS
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
+Signed-off-by: Peter A. Bigot <pab@pabigot.com>
+---
+ SConstruct | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/SConstruct b/SConstruct
+index 14e2f59..f0cafa8 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -1414,7 +1414,10 @@ def Utility(target, source, action):
+ # Report splint warnings
+ # Note: test_bits.c is unsplintable because of the PRI64 macros.
+ # If you get preprocessor or fatal errors, add +showscan.
+-splintopts = "-I/usr/include/libusb-1.0 +quiet"
++if not env['sysroot']:
++    splintopts = "-I/usr/include/libusb-1.0 +quiet"
++else:
++    splintopts = "-I%s/usr/include/libusb-1.0 +quiet" % env['sysroot']
+ # splint does not know about multi-arch, work around that
+ ma_status, ma = _getstatusoutput('dpkg-architecture -qDEB_HOST_MULTIARCH')
+ if ma_status == 0:
+-- 
+1.8.5.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-libgpsd-core-Fix-issue-with-ACTIVATE-hook-not-being-.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-libgpsd-core-Fix-issue-with-ACTIVATE-hook-not-being-.patch
new file mode 100644
index 0000000..7a06795
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0001-libgpsd-core-Fix-issue-with-ACTIVATE-hook-not-being-.patch
@@ -0,0 +1,35 @@
+From 6ff099b1ba8de74df9ddeb61e3825264b96ef692 Mon Sep 17 00:00:00 2001
+From: Moritz Fischer <moritz.fischer@ettus.com>
+Date: Tue, 22 Dec 2015 19:38:31 -0800
+Subject: [PATCH] libgpsd-core: Fix issue with ACTIVATE hook not being called.
+
+In the current system session->mode seemed to ignore the
+O_OPTIMIZE flag, leading to the ACTIVATE hook being ignored.
+
+Another way to fix this would be to keep the session->mode
+condition pull up the check for O_CONTINUE.
+
+Upstream-Status: Backported
+This patch is in upstream git
+
+Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
+---
+ libgpsd_core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libgpsd_core.c b/libgpsd_core.c
+index 31fec2a..a84e85f 100644
+--- a/libgpsd_core.c
++++ b/libgpsd_core.c
+@@ -543,7 +543,7 @@ int gpsd_open(struct gps_device_t *session)
+ int gpsd_activate(struct gps_device_t *session, const int mode)
+ /* acquire a connection to the GPS device */
+ {
+-    if (session->mode == O_OPTIMIZE)
++    if (mode == O_OPTIMIZE)
+ 	gpsd_run_device_hook(&session->context->errout,
+ 			     session->gpsdata.dev.path, "ACTIVATE");
+     session->gpsdata.gps_fd = gpsd_open(session);
+-- 
+2.4.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0002-Add-a-test-for-C11-and-check-we-have-C11-before-usin.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0002-Add-a-test-for-C11-and-check-we-have-C11-before-usin.patch
new file mode 100644
index 0000000..22ee1bd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0002-Add-a-test-for-C11-and-check-we-have-C11-before-usin.patch
@@ -0,0 +1,57 @@
+From 99444b3d2c4a4f7fd7128e60461005780d0c5c83 Mon Sep 17 00:00:00 2001
+From: "Gary E. Miller" <gem@rellim.com>
+Date: Sun, 15 Mar 2015 12:05:15 -0700
+Subject: [PATCH 2/3] Add a test for C11 and check we have C11 before using
+ stdatomic.h
+
+---
+ SConstruct | 19 ++++++++++++++++++-
+ 1 file changed, 18 insertions(+), 1 deletion(-)
+
+diff --git a/SConstruct b/SConstruct
+index 566c14a..faa8651 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -473,6 +473,20 @@ def CheckCompilerDefines(context, define):
+     context.Result(ret)
+     return ret
+ 
++# Check if this compiler is C11 or better
++def CheckC11(context):
++    context.Message( 'Checking if compiler is C11 ...' )
++    ret = context.TryLink("""
++	#if (__STDC_VERSION__ < 201112L) 
++        #error Not C11
++        #endif
++        int main(int argc, char **argv) {
++            return 0;
++        }
++    """,'.c')
++    context.Result(ret)
++    return ret
++
+ def GetLoadPath(context):
+     context.Message("Getting system load path ...")
+ 
+@@ -491,6 +505,7 @@ else:
+                                              'CheckXsltproc' : CheckXsltproc,
+                                              'CheckCompilerOption' : CheckCompilerOption,
+                                              'CheckCompilerDefines' : CheckCompilerDefines,
++                                             'CheckC11' : CheckC11,
+                                              'CheckHeaderDefines' : CheckHeaderDefines})
+ 
+ 
+@@ -633,7 +648,9 @@ else:
+         announce("You do not have kernel CANbus available.")
+         env["nmea2000"] = False
+ 
+-    if not config.CheckCompilerDefines("__STDC_NO_ATOMICS__") and config.CheckHeader("stdatomic.h"):
++    # check for C11 or better, and __STDC__NO_ATOMICS__ is no defined
++    # before looking for stdatomic.h
++    if not config.CheckC11() and  not config.CheckCompilerDefines("__STDC_NO_ATOMICS__") and config.CheckHeader("stdatomic.h"):
+         confdefs.append("#define HAVE_STDATOMIC_H 1\n")
+     else:
+ 	confdefs.append("/* #undef HAVE_STDATOMIC_H */\n")
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0002-SConstruct-remove-rpath.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0002-SConstruct-remove-rpath.patch
new file mode 100644
index 0000000..083a662
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0002-SConstruct-remove-rpath.patch
@@ -0,0 +1,45 @@
+From d090638ff983e509162d5e3b62aa4918de4aa5fa Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 24 Apr 2012 16:24:35 +0200
+Subject: [PATCH 2/4] SConstruct: remove rpath
+
+* even with correct prefix (without DESTDIR) included it's redundant
+  WARNING: QA Issue: libgps:
+  /work/armv4t-oe-linux-gnueabi/gpsd/gpsd-3.5-r0/packages-split/libgps/usr/lib/libgps.so.20.0
+  contains probably-redundant RPATH /usr/lib
+* and with prefix from scons.bbclass it's invalid
+  WARNING: QA Issue: package libgps contains bad RPATH
+  /OE/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd/gpsd-3.5-r0/image/usr/lib
+  in file
+  /OE/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd/gpsd-3.5-r0/packages-split/libgps/usr/lib/libgps.so.20.0
+
+Upstream-Status: Inapppropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
+Signed-off-by: Peter A. Bigot <pab@pabigot.com>
+---
+ SConstruct | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index f0cafa8..ff46713 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -1340,8 +1340,11 @@ if qt_env:
+     binaryinstall.append(LibraryInstall(qt_env, installdir('libdir'), compiled_qgpsmmlib))
+ 
+ if env["shared"] and env["chrpath"]:
+-    env.AddPostAction(binaryinstall, '$CHRPATH -r "%s" "$TARGET"' \
+-                      % (installdir('libdir', False), ))
++    if not env['sysroot']:
++        env.AddPostAction(binaryinstall, '$CHRPATH -r "%s" "$TARGET"' \
++                          % (installdir('libdir', False), ))
++    else:
++        env.AddPostAction(binaryinstall, '$CHRPATH -d "$TARGET"')
+ 
+ if not env['debug'] and not env['profiling'] and env['strip']:
+     env.AddPostAction(binaryinstall, '$STRIP $TARGET')
+-- 
+1.8.5.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0003-Whoops-check-for-C11-not-for-not-C11-in-stdatomic.h-.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0003-Whoops-check-for-C11-not-for-not-C11-in-stdatomic.h-.patch
new file mode 100644
index 0000000..8bb0928
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0003-Whoops-check-for-C11-not-for-not-C11-in-stdatomic.h-.patch
@@ -0,0 +1,26 @@
+From 674c50ee54fd7cd304e8b3c4b33d3ff1272ed191 Mon Sep 17 00:00:00 2001
+From: "Gary E. Miller" <gem@rellim.com>
+Date: Sun, 15 Mar 2015 12:17:51 -0700
+Subject: [PATCH 3/3] Whoops, check for C11, not for not C11 in stdatomic.h
+ test.
+
+---
+ SConstruct | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/SConstruct b/SConstruct
+index faa8651..f4ea145 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -650,7 +650,7 @@ else:
+ 
+     # check for C11 or better, and __STDC__NO_ATOMICS__ is no defined
+     # before looking for stdatomic.h
+-    if not config.CheckC11() and  not config.CheckCompilerDefines("__STDC_NO_ATOMICS__") and config.CheckHeader("stdatomic.h"):
++    if config.CheckC11() and  not config.CheckCompilerDefines("__STDC_NO_ATOMICS__") and config.CheckHeader("stdatomic.h"):
+         confdefs.append("#define HAVE_STDATOMIC_H 1\n")
+     else:
+ 	confdefs.append("/* #undef HAVE_STDATOMIC_H */\n")
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0004-SConstruct-disable-html-and-man-docs-building-becaus.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0004-SConstruct-disable-html-and-man-docs-building-becaus.patch
new file mode 100644
index 0000000..8527f0d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.14/0004-SConstruct-disable-html-and-man-docs-building-becaus.patch
@@ -0,0 +1,52 @@
+From 697e2e9ff97487266d817cdd41bacc83f681e3d7 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sun, 29 Apr 2012 00:05:59 +0200
+Subject: [PATCH 4/4] SConstruct: disable html and man docs building because
+ xmlto-native from OE is broken
+
+It will try to load dtd and fail:
+| xmlto man gpsctl.xml; mv `basename gpsctl.1` gpsctl.1
+| xmlto: /var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd-3.4-r2/gpsd-3.4/gpsctl.xml does not validate (status 3)
+| xmlto: Fix document syntax or use --skip-validation option
+| I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
+| /var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd-3.4-r2/gpsd-3.4/gpsctl.xml:8: warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
+|    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+|                                                               ^
+| I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
+| warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
+| validity error : Could not load the external subset "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
+| Document /var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd-3.4-r2/gpsd-3.4/gpsctl.xml does not validate
+| mv: cannot stat `gpsctl.1': No such file or directory
+| scons: *** [gpsctl.1] Error 1
+| scons: building terminated because of errors.
+
+Upstream-Status: Inappropriate [disable feature]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Peter A. Bigot <pab@pabigot.com>
+---
+ SConstruct | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index 0e518e7..c01a71b 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -704,12 +704,12 @@ size_t strlcpy(/*@out@*/char *dst, /*@in@*/const char *src, size_t size);
+ 
+     manbuilder = mangenerator = htmlbuilder = None
+     if env['manbuild']:
+-        if config.CheckXsltproc():
++        if False and config.CheckXsltproc():
+             mangenerator = 'xsltproc'
+             build = "xsltproc --nonet %s $SOURCE >$TARGET"
+             htmlbuilder = build % docbook_html_uri
+             manbuilder = build % docbook_man_uri
+-        elif WhereIs("xmlto"):
++        elif False and WhereIs("xmlto"):
+             mangenerator = 'xmlto'
+             xmlto = "xmlto %s $SOURCE || mv `basename $TARGET` `dirname $TARGET`"
+             htmlbuilder = xmlto % "html-nochunks"
+-- 
+1.8.5.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-machine-conf_1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-machine-conf_1.0.bb
new file mode 100644
index 0000000..d023c5d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-machine-conf_1.0.bb
@@ -0,0 +1,7 @@
+SUMMARY = "Machine specific gpsd config"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD;md5=3775480a712fc46a69647678acb234cb"
+
+# empty by default
+# BSP layers can add stuff like meta-openmoko example:
+# 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/60-gpsd.rules b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/60-gpsd.rules
new file mode 100644
index 0000000..61143b8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/60-gpsd.rules
@@ -0,0 +1,47 @@
+# udev rules for gpsd
+# $Id$
+#
+# GPSes don't have their own USB device class.  They're serial-over-USB
+# devices, so what you see is actually the ID of the serial-over-USB chip.
+# Fortunately, just two of these account for over 80% of consumer-grade
+# GPS sensors.  The gpsd.hotplug.wrapper script will tell a running gpsd
+# that it should look at the device that just went active, because it
+# might be a GPS.
+#
+# The following setup works on Debian - something similar will apply on 
+# other distributions:
+# 
+#   /etc/udev/gpsd.rules
+#   /etc/udev/rules.d/025_gpsd.rules -> ../gpsd.rules
+#   /lib/udev/gpsd.hotplug.wrapper
+#   /lib/udev/gpsd.hotplug
+# 
+# Setting the link in /etc/udev/rules.d activates the rule and determines
+# when to run it on boot (similar to init.d processing).
+
+SUBSYSTEM!="tty", GOTO="gpsd_rules_end"
+
+# Prolific Technology, Inc. PL2303 Serial Port
+ATTR{idVendor}=="067b", ATTR{idProduct}=="2303", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+# ATEN International Co., Ltd UC-232A Serial Port [pl2303]
+ATTR{idVendor}=="0557", ATTR{idProduct}=="2008", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+# FTDI 8U232AM
+ATTR{idVendor}=="0403", ATTR{idProduct}=="6001", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+# Cypress M8/CY7C64013 (DeLorme uses these)
+ATTR{idVendor}=="1163", ATTR{idProduct}=="0100", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+# PS-360 OEM (Microsoft GPS sold with Street and Trips 2005)
+ATTR{idVendor}=="067b", ATTR{idProduct}=="aaa0", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+# Garmin International GPSmap, various models (tested with Garmin GPS 18 USB)
+ATTR{idVendor}=="091e", ATTR{idProduct}=="0003", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+# Cygnal Integrated Products, Inc. CP210x Composite Device (Used by Holux m241)
+ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea60", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+# u-blox AG, u-blox 5 (tested with Navilock NL-402U)
+ATTR{idVendor}=="1546", ATTR{idProduct}=="01a5", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+# FTDI FT232
+ATTR{idVendor}=="0403", ATTR{idProduct}=="6001", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+# u-blox 4
+ATTR{idVendor}=="1546", ATTR{idProduct}=="01a4", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+
+ACTION=="remove", RUN+="/lib/udev/gpsd.hotplug.wrapper"
+
+LABEL="gpsd_rules_end"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/gpsd b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/gpsd
new file mode 100755
index 0000000..ba73daf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/gpsd
@@ -0,0 +1,136 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          gpsd
+# Required-Start:    $remote_fs $network
+# Should-Start:      bluetooth dbus udev
+# Required-Stop:     $remote_fs $network
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: GPS (Global Positioning System) daemon start/stop script
+# Description:       Start/Stop script for the gpsd service daemon,
+#                    which is able to monitor one or more GPS devices
+#                    connected to a host computer, making all data on
+#                    the location and movements of the sensors available
+#                    to be queried on TCP port 2947.
+### END INIT INFO
+
+# Author: Bernd Zeimetz <bzed@debian.org>
+#
+# Please remove the "Author" lines above and replace them
+# with your own name if you copy and modify this script.
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="GPS (Global Positioning System) daemon"
+NAME=gpsd
+DAEMON=/usr/sbin/$NAME
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration, if present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+if [ -z "$GPSD_SOCKET" ] && [ -z "$DEVICES" ]; then
+	GPSD_SOCKET=/var/run/gpsd.sock
+fi
+
+if [ -n "$GPSD_SOCKET" ]; then
+        GPSD_OPTIONS="$GPSD_OPTIONS -F $GPSD_SOCKET"
+fi
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+	# Return
+	#   0 if daemon has been started
+	#   1 if daemon was already running
+	#   2 if daemon could not be started
+	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test \
+        -- $GPSD_OPTIONS -P $PIDFILE $GPS_DEVICES > /dev/null \
+		|| return 1
+	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+		$GPSD_OPTIONS -P $PIDFILE $GPS_DEVICES \
+		|| return 2
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+	# Return
+	#   0 if daemon has been stopped
+	#   1 if daemon was already stopped
+	#   2 if daemon could not be stopped
+	#   other if a failure occurred
+	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+	RETVAL="$?"
+	[ "$RETVAL" = 2 ] && return 2
+	# Many daemons don't delete their pidfiles when they exit.
+	rm -f $PIDFILE
+	return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+	#
+	# If the daemon can reload its configuration without
+	# restarting (for example, when it is sent a SIGHUP),
+	# then implement that here.
+	#
+	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+	return 0
+}
+
+case "$1" in
+  start)
+		echo "Starting $DESC" "$NAME"
+		do_start
+		exit $?
+	;;
+  stop)
+	echo "Stopping $DESC" "$NAME"
+	do_stop
+	exit $?
+	;;
+  status)
+       ;;
+  reload|force-reload)
+	echo "Reloading $DESC" "$NAME"
+	do_reload
+	exit $?
+	;;
+  restart)
+	#
+	# If the "reload" option is implemented then remove the
+	# 'force-reload' alias
+	#
+	echo "Restarting $DESC" "$NAME"
+	do_stop
+	case "$?" in
+	  0|1)
+		do_start
+		exit $?
+		;;
+	  *)
+	 	# Failed to stop
+		exit 1
+		;;
+	esac
+	;;
+  *)
+	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+	exit 3
+	;;
+esac
+
+:
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/gpsd-default b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/gpsd-default
new file mode 100644
index 0000000..0ceff03
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/gpsd-default
@@ -0,0 +1,5 @@
+# If you must specify a non-NMEA driver, uncomment and modify the next line
+GPSD_SOCKET="/var/run/gpsd.sock"
+GPSD_OPTIONS="" 
+GPS_DEVICES=""
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/gpsd.service b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/gpsd.service
new file mode 100644
index 0000000..7131a58
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/gpsd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=GPS (Global Positioning System) Daemon
+Requires=gpsd.socket
+
+[Service]
+EnvironmentFile=/etc/default/gpsd
+ExecStart=/usr/sbin/gpsd -N $GPS_DEVICES
+
+[Install]
+Also=gpsd.socket
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.14.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.14.bb
new file mode 100644
index 0000000..aef9b13
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.14.bb
@@ -0,0 +1,145 @@
+SUMMARY = "A TCP/IP Daemon simplifying the communication with GPS devices"
+SECTION = "console/network"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d217a23f408e91c94359447735bc1800"
+DEPENDS = "dbus dbus-glib ncurses python libusb1 chrpath-replacement-native pps-tools"
+PROVIDES = "virtual/gpsd"
+
+EXTRANATIVEPATH += "chrpath-native"
+
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/${BPN}/${BP}.tar.gz \
+    file://0001-SConstruct-respect-sysroot-also-in-SPLINTOPTS.patch \
+    file://0002-SConstruct-remove-rpath.patch \
+    file://0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch \
+    file://0004-SConstruct-disable-html-and-man-docs-building-becaus.patch \
+    file://0001-Check-for-__STDC_NO_ATOMICS__-before-using-stdatomic.patch \
+    file://0002-Add-a-test-for-C11-and-check-we-have-C11-before-usin.patch \
+    file://0003-Whoops-check-for-C11-not-for-not-C11-in-stdatomic.h-.patch \
+    file://0001-Include-stdatomic.h-only-in-C-mode.patch \
+    file://0001-libgpsd-core-Fix-issue-with-ACTIVATE-hook-not-being-.patch \
+    file://gpsd-default \
+    file://gpsd \
+    file://60-gpsd.rules \
+    file://gpsd.service \
+"
+SRC_URI[md5sum] = "bc7467009b99e07ba461377b5da6c039"
+SRC_URI[sha256sum] = "504fc812f3c1525a1a48e04bf4d77f9a8066c201448d98089df89d58ef53a8cb"
+
+inherit scons update-rc.d python-dir pythonnative systemd bluetooth
+
+INITSCRIPT_NAME = "gpsd"
+INITSCRIPT_PARAMS = "defaults 35"
+
+SYSTEMD_OESCONS = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false',d)}"
+
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)}"
+PACKAGECONFIG[bluez] = "bluez='true',bluez='false',${BLUEZ}"
+PACKAGECONFIG[qt] = "qt='yes',qt='no',qt4-x11-free"
+EXTRA_OESCONS = " \
+    sysroot=${STAGING_DIR_TARGET} \
+    libQgpsmm='false' \
+    debug='true' \
+    strip='false' \
+    chrpath='yes' \
+    systemd='${SYSTEMD_OESCONS}' \
+    ${EXTRA_OECONF} \
+"
+DISABLE_STATIC = ""
+# this cannot be used, because then chrpath is not found and only static lib is built
+# target=${HOST_SYS}
+
+do_compile_prepend() {
+    export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
+    export PKG_CONFIG="PKG_CONFIG_SYSROOT_DIR=\"${PKG_CONFIG_SYSROOT_DIR}\" pkg-config"
+    export STAGING_PREFIX="${STAGING_DIR_HOST}/${prefix}"
+
+    export BUILD_SYS="${BUILD_SYS}"
+    export HOST_SYS="${HOST_SYS}"
+}
+
+do_install() {
+    export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
+    export PKG_CONFIG="PKG_CONFIG_SYSROOT_DIR=\"${PKG_CONFIG_SYSROOT_DIR}\" pkg-config"
+    export STAGING_PREFIX="${STAGING_DIR_HOST}/${prefix}"
+
+    export BUILD_SYS="${BUILD_SYS}"
+    export HOST_SYS="${HOST_SYS}"
+
+    export DESTDIR="${D}"
+    # prefix is used for RPATH and DESTDIR/prefix for instalation
+    ${STAGING_BINDIR_NATIVE}/scons prefix=${prefix} install ${EXTRA_OESCONS}|| \
+      bbfatal "scons install execution failed."
+}
+
+do_install_append() {
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/gpsd ${D}/${sysconfdir}/init.d/
+    install -d ${D}/${sysconfdir}/default
+    install -m 0644 ${WORKDIR}/gpsd-default ${D}/${sysconfdir}/default/gpsd.default
+
+    #support for udev
+    install -d ${D}/${sysconfdir}/udev/rules.d
+    install -m 0644 ${WORKDIR}/60-gpsd.rules ${D}/${sysconfdir}/udev/rules.d
+    install -d ${D}${base_libdir}/udev/
+    install -m 0755 ${S}/gpsd.hotplug ${D}${base_libdir}/udev/
+
+    #support for python
+    install -d ${D}/${PYTHON_SITEPACKAGES_DIR}/gps
+    install -m 755 ${S}/gps/*.py ${D}/${PYTHON_SITEPACKAGES_DIR}/gps
+
+    #support for systemd
+    install -d ${D}${systemd_unitdir}/system/
+    install -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_unitdir}/system/${BPN}.service
+    install -m 0644 ${S}/systemd/${BPN}.socket ${D}${systemd_unitdir}/system/${BPN}.socket
+}
+
+pkg_postinst_${PN}-conf() {
+    update-alternatives --install ${sysconfdir}/default/gpsd gpsd-defaults ${sysconfdir}/default/gpsd.default 10
+}
+
+pkg_postrm_${PN}-conf() {
+    update-alternatives --remove gpsd-defaults ${sysconfdir}/default/gpsd.default
+}
+
+PACKAGES =+ "libgps libgpsd python-pygps-dbg python-pygps gpsd-udev gpsd-conf gpsd-gpsctl gps-utils"
+
+FILES_${PN}-dev += "${libdir}/pkgconfdir/libgpsd.pc ${libdir}/pkgconfdir/libgps.pc \
+                    ${libdir}/libQgpsmm.prl"
+
+FILES_python-pygps-dbg += " ${libdir}/python*/site-packages/gps/.debug"
+
+RDEPENDS_${PN} = "gpsd-gpsctl"
+RRECOMMENDS_${PN} = "gpsd-conf gpsd-udev gpsd-machine-conf"
+
+SUMMARY_gpsd-udev = "udev relevant files to use gpsd hotplugging"
+FILES_gpsd-udev = "${base_libdir}/udev ${sysconfdir}/udev/*"
+RDEPENDS_gpsd-udev += "udev gpsd-conf"
+
+SUMMARY_libgpsd = "C service library used for communicating with gpsd"
+FILES_libgpsd = "${libdir}/libgpsd.so.*"
+
+SUMMARY_libgps = "C service library used for communicating with gpsd"
+FILES_libgps = "${libdir}/libgps.so.*"
+
+SUMMARY_gpsd-conf = "gpsd configuration files and init scripts"
+FILES_gpsd-conf = "${sysconfdir}"
+CONFFILES_gpsd-conf = "${sysconfdir}/default/gpsd.default"
+
+SUMMARY_gpsd-gpsctl = "Tool for tweaking GPS modes"
+FILES_gpsd-gpsctl = "${bindir}/gpsctl"
+
+SUMMARY_gps-utils = "Utils used for simulating, monitoring,... a GPS"
+FILES_gps-utils = "${bindir}/*"
+RDEPENDS_gps-utils = "python-pygps"
+
+SUMMARY_python-pygps = "Python bindings to gpsd"
+FILES_python-pygps = "${PYTHON_SITEPACKAGES_DIR}/*"
+RDEPENDS_python-pygps = "python-core python-curses gpsd python-json"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "${PN}.socket"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/files/0001-g_type_init-is-deprecated-for-glib-2.35.0.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/files/0001-g_type_init-is-deprecated-for-glib-2.35.0.patch
new file mode 100644
index 0000000..063bea6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/files/0001-g_type_init-is-deprecated-for-glib-2.35.0.patch
@@ -0,0 +1,114 @@
+From 5b859b6e7c82f49d967c25398a8e75b61af9bcc0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 12 Jun 2013 20:58:51 -0700
+Subject: [PATCH] g_type_init() is deprecated for glib >= 2.35.0
+
+Call it for old versions.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ examples/list-known-gps-devices.c |    4 ++--
+ examples/simple-gps-dbus.c        |    3 ++-
+ examples/simple-gps-gypsy.c       |    4 ++--
+ examples/simple-gps-satellites.c  |    4 ++--
+ gypsy/gypsy-marshal.c             |    2 +-
+ src/main.c                        |    4 ++--
+ 6 files changed, 11 insertions(+), 10 deletions(-)
+
+diff --git a/examples/list-known-gps-devices.c b/examples/list-known-gps-devices.c
+index c7c4059..0a8b04b 100644
+--- a/examples/list-known-gps-devices.c
++++ b/examples/list-known-gps-devices.c
+@@ -20,9 +20,9 @@ main (int argc,
+     GError *error = NULL;
+     GPtrArray *known_devices;
+     int i;
+-
++#if !GLIB_CHECK_VERSION(2,35,0)
+     g_type_init ();
+-
++#endif
+     discovery = gypsy_discovery_new ();
+     known_devices = gypsy_discovery_list_devices (discovery, &error);
+ 
+diff --git a/examples/simple-gps-dbus.c b/examples/simple-gps-dbus.c
+index f7044e6..76b18aa 100644
+--- a/examples/simple-gps-dbus.c
++++ b/examples/simple-gps-dbus.c
+@@ -121,8 +121,9 @@ main (int    argc,
+ 	DBusConnection *conn;
+ 	DBusError error;
+ 	GMainLoop *mainloop;
+-
++#if !GLIB_CHECK_VERSION(2,35,0)
+ 	g_type_init ();
++#endif
+ 	conn = get_connection ();
+ 
+ 	dbus_error_init (&error);
+diff --git a/examples/simple-gps-gypsy.c b/examples/simple-gps-gypsy.c
+index 0b6b7a6..86033d9 100644
+--- a/examples/simple-gps-gypsy.c
++++ b/examples/simple-gps-gypsy.c
+@@ -67,9 +67,9 @@ main (int    argc,
+ 		g_print ("Usage: %s device\n", argv[0]);
+ 		return 0;
+ 	}
+-
++#if !GLIB_CHECK_VERSION(2,35,0) 
+ 	g_type_init ();
+-
++#endif
+ 	control = gypsy_control_get_default ();
+ 	path = gypsy_control_create (control, argv[1], &error);
+ 	if (path == NULL) {
+diff --git a/examples/simple-gps-satellites.c b/examples/simple-gps-satellites.c
+index 140c98f..9a3f95a 100644
+--- a/examples/simple-gps-satellites.c
++++ b/examples/simple-gps-satellites.c
+@@ -42,9 +42,9 @@ main (int    argc,
+ 		g_print ("Usage: %s device\n", argv[0]);
+ 		return 0;
+ 	}
+-
++#if !GLIB_CHECK_VERSION(2,35,0)
+ 	g_type_init ();
+-
++#endif
+ 	control = gypsy_control_get_default ();
+ 	path = gypsy_control_create (control, argv[1], &error);
+ 	if (path == NULL) {
+diff --git a/gypsy/gypsy-marshal.c b/gypsy/gypsy-marshal.c
+index 6964644..9ac0095 100644
+--- a/gypsy/gypsy-marshal.c
++++ b/gypsy/gypsy-marshal.c
+@@ -5,7 +5,7 @@
+ 
+ #ifdef G_ENABLE_DEBUG
+ #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
+-#define g_marshal_value_peek_char(v)     g_value_get_char (v)
++#define g_marshal_value_peek_char(v)     g_value_get_schar (v)
+ #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
+ #define g_marshal_value_peek_int(v)      g_value_get_int (v)
+ #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
+diff --git a/src/main.c b/src/main.c
+index 3e8a794..ec980e5 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -187,9 +187,9 @@ main (int    argc,
+ 	g_option_context_free (context);
+ 
+ 	umask (022);
+-
++#if !GLIB_CHECK_VERSION(2,35,0)
+ 	g_type_init ();
+-
++#endif
+ 	mainloop = g_main_loop_new (NULL, FALSE);
+ 
+ 	conn = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/files/fixups.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/files/fixups.patch
new file mode 100644
index 0000000..de4d92e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/files/fixups.patch
@@ -0,0 +1,21 @@
+Upstream-Status: Inappropriate [configuration]
+
+---
+ docs/reference/Makefile.am |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- gypsy.orig/docs/reference/Makefile.am
++++ gypsy/docs/reference/Makefile.am
+@@ -81,10 +81,12 @@ expand_content_files=
+ # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
+ 
+ INCLUDES=-I$(top_srcdir) $(GYPSY_CFLAGS)
+ GTKDOC_LIBS=$(top_builddir)/gypsy/libgypsy.la $(GYPSY_LIBS)
+ 
++EXTRA_DIST =
++CLEANFILES =
+ # This includes the standard gtk-doc make rules, copied by gtkdocize.
+ include $(top_srcdir)/gtk-doc.make
+ 
+ # Other files to distribute
+ # e.g. EXTRA_DIST += version.xml.in
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/gypsy.inc b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/gypsy.inc
new file mode 100644
index 0000000..9efd356
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/gypsy.inc
@@ -0,0 +1,25 @@
+SUMMARY = "GPS Multiplexing Daemon"
+DESCRIPTION = "Gypsy is a GPS multiplexing daemon which allows \
+multiple clients to access GPS data from multiple GPS sources \
+concurrently.  Gypsy also hides the details of parsing NMEA from the \
+client applications, passing the data as simple values for the clients \
+to use."
+LICENSE = "GPLv2.0 & LGPLv2.1"
+SECTION = "console/network"
+DEPENDS = "glib-2.0 dbus bluez4 dbus-glib libxslt-native libxslt"
+
+PNBLACKLIST[gypsy] ?= "${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez5 conflicts with bluez4 and bluez5 is selected in DISTRO_FEATURES', '', d)}"
+
+inherit autotools pkgconfig gtk-doc
+PACKAGES += "libgypsy"
+
+FILES_${PN} = " \
+  ${sysconfdir}/gypsy.conf \
+  ${sysconfdir}/dbus-1 \
+  ${libexecdir}/gypsy-daemon \
+  ${datadir}/dbus-1 \
+"
+
+FILES_libgypsy = " \
+  ${libdir}/libgypsy${SOLIBS} \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/gypsy_0.9.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/gypsy_0.9.bb
new file mode 100644
index 0000000..24c8987
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/gypsy_0.9.bb
@@ -0,0 +1,15 @@
+require gypsy.inc
+
+PR = "r2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+                    file://COPYING.lib;md5=7fbc338309ac38fefcd64b04bb903e34 \
+                    file://src/main.c;beginline=1;endline=25;md5=3fe64e27e61b289b77383a54a982cbdd \
+                    file://gypsy/gypsy-time.h;beginline=1;endline=24;md5=06432ea19a7b6607428d04d9dadc37fd"
+
+SRC_URI += "http://gypsy.freedesktop.org/releases/gypsy-${PV}.tar.gz \
+           file://0001-g_type_init-is-deprecated-for-glib-2.35.0.patch \
+          "
+
+SRC_URI[md5sum] = "e2d186df9c2cc3b70a027043e22acf1a"
+SRC_URI[sha256sum] = "14e1cbe17351f408538e033ca370b4bf51ccf9c88744e236ddfb271904f154d6"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/gypsy_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/gypsy_git.bb
new file mode 100644
index 0000000..6ab16e6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/gypsy/gypsy_git.bb
@@ -0,0 +1,22 @@
+require gypsy.inc
+
+DEFAULT_PREFERENCE = "-1"
+
+SRCREV = "be8c9c382d2d1d37b51d29b0843045121ec90213"
+PV = "0.9+git${SRCPV}"
+PR = "r2"
+
+S = "${WORKDIR}/git"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+                    file://COPYING.lib;md5=7fbc338309ac38fefcd64b04bb903e34 \
+                    file://src/main.c;beginline=1;endline=25;md5=3fe64e27e61b289b77383a54a982cbdd \
+                    file://gypsy/gypsy-time.h;beginline=1;endline=24;md5=06432ea19a7b6607428d04d9dadc37fd"
+
+SRC_URI += "git://anongit.freedesktop.org/gypsy \
+            file://fixups.patch"
+
+do_configure_prepend() {
+  # from patch 563716fc596d53f1085949a9dd11a62f39b2d624
+  test -d ${S}/m4 || mkdir -p ${S}/m4
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite-4.2.0/geos-config.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite-4.2.0/geos-config.patch
new file mode 100644
index 0000000..28bd7da
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite-4.2.0/geos-config.patch
@@ -0,0 +1,17 @@
+https://www.gaia-gis.it/fossil/libspatialite/tktview?name=abeeaad448
+
+Upstream-Status: Submitted [rpm5-devel@rpm5.org]
+
+Index: libspatialite-4.2.0/configure.ac
+===================================================================
+--- libspatialite-4.2.0.orig/configure.ac
++++ libspatialite-4.2.0/configure.ac
+@@ -260,7 +260,7 @@ if test x"$enable_geos" != "xno"; then
+   fi
+   # Extract the linker and include flags
+   GEOS_LDFLAGS=`$GEOSCONFIG --ldflags`
+-  GEOS_CFLAGS=-I`$GEOSCONFIG --includes`
++  GEOS_CFLAGS=`$GEOSCONFIG --cflags`
+   AC_SUBST([GEOS_LDFLAGS])
+   AC_SUBST([GEOS_CFLAGS])	
+   # Ensure that we can parse geos_c.h
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.2.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.2.0.bb
new file mode 100644
index 0000000..d66dc87
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.2.0.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Library extending the SQLite core to support fully fledged Spatial SQL capabilities"
+HOMEPAGE = "https://www.gaia-gis.it/fossil/libspatialite/"
+SECTION = "libs"
+DEPENDS = "proj geos sqlite3 libxml2 zlib"
+
+LICENSE = "MPLv1.1 & GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0e92e1a36cc384b60f5b31dde0bdd39e"
+
+SRC_URI = "http://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-freexl=no"
+
+# package plugins for SQLite3
+PACKAGES += "${PN}-plugin"
+INSANE_SKIP_${PN}-plugin = "dev-so"
+FILES_${PN}-plugin += "${libdir}/mod_*"
+
+SRC_URI[md5sum] = "83305ed694a77152120d1f74c5151779"
+SRC_URI[sha256sum] = "9f138a6854740c7827fdee53845eb1485fce3e805a7aa9fc9151f8046ebd312d"
+
+SRC_URI += "file://geos-config.patch"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit-fpu.inc b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit-fpu.inc
new file mode 100644
index 0000000..d963702
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit-fpu.inc
@@ -0,0 +1,6 @@
+
+def get_navit_fpu_setting(bb, d):
+    if d.getVar('TARGET_FPU', 1) in [ 'soft' ]:
+        return "--enable-avoid-float"
+    return ""
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit.inc b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit.inc
new file mode 100644
index 0000000..1c0bfda
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit.inc
@@ -0,0 +1,95 @@
+DESCRIPTION = "Navit is a car navigation system with routing engine."
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ed539d099d6ce08de6ea0dfed9ecb333 \
+                    file://LGPL-2;md5=3214f080875748938ba060314b4f727d \
+                    file://GPL-2;md5=751419260aa954499f7abaabaa882bbe \
+"
+
+SECTION = "x11/applications"
+DEPENDS = "glib-2.0 gd gypsy librsvg-native"
+RDEPENDS_${PN} = " ${PN}-icons ${PN}-config "
+RRECOMMENDS_${PN} = "gpsd ${PN}-dbus ${PN}-speech-cmdline ${PN}-gui-internal ${PN}-graphics-gtk"
+RSUGGESTS_${PN} = "flite-alsa espeak ${PN}-speech-dbus ${PN}-gui-gtk ${PN}-gui-qml ${PN}-graphics-sdl ${PN}-graphics-qt ${PN}-maptool"
+
+PE = "1"
+INC_PR = "r11"
+
+# Depends on gypsy
+PNBLACKLIST[navit] ?= "${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez5 conflicts with bluez4 and bluez5 is selected in DISTRO_FEATURES', '', d)}"
+
+inherit autotools gettext pkgconfig
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[fribidi] = "--enable-fribidi,--disable-fribidi,fribidi"
+PACKAGECONFIG[imlib2] = "--enable-imlib2,--disable-imlib2,imlib2"
+PACKAGECONFIG[sdl] = "--enable-graphics-sdl,--disable-graphics-sdl,libsdl"
+PACKAGECONFIG[gtk] = "--enable-graphics-gtk-drawing-area --enable-gui-gtk,--disable-graphics-gtk-drawing-area --disable-gui-gtk,gtk+"
+PACKAGECONFIG[qt] = "--enable-graphics-qt-qpainter --enable-gui-qml,--disable-graphics-qt-qpainter --disable-gui-qml,qt4-x11-free,qt4-plugin-imageformat-svg"
+
+EXTRA_OECONF += " \
+    --disable-binding-python \
+    --disable-samplemap \
+    --enable-avoid-unaligned \
+    --enable-svg2png-scaling-flag=32 \
+    --disable-speech-speech-dispatcher \
+    --enable-cache-size=20971520 \
+"
+
+#  --enable-avoid-float \
+#check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points
+require navit-fpu.inc
+EXTRA_OECONF += "${@get_navit_fpu_setting(bb, d)}"
+
+PACKAGES =+ "${PN}-maptool ${PN}-config ${PN}-dbus ${PN}-speech-cmdline ${PN}-speech-dbus ${PN}-gui-gtk ${PN}-gui-internal ${PN}-gui-qml ${PN}-graphics-sdl ${PN}-graphics-gtk ${PN}-graphics-qt ${PN}-icons"
+
+EXTRA_AUTORECONF = " -I m4"
+
+CONFFILES_${PN}-config += "${datadir}/navit/navit.default.xml \
+    ${datadir}/navit/navit.xml \
+    ${datadir}/navit/maps.xml \
+    ${datadir}/navit/osd.xml \
+    ${datadir}/navit/speech.xml \
+    ${datadir}/navit/plugins.xml \
+"
+
+SRC_URI += "file://navit.xml \
+            file://maps.xml \
+            file://osd.xml \
+            file://speech.xml \
+            file://plugins.xml \
+"
+
+FILES_${PN} += "${libdir}/${BPN}/*/*.so ${datadir}/icons"
+FILES_${PN}-dbg += "${libdir}/${BPN}/*/.debug"
+FILES_${PN}-maptool = " ${bindir}/maptool "
+FILES_${PN}-config = " ${datadir}/navit/*.xml "
+FILES_${PN}-dbus = " ${datadir}/dbus-1/services/ ${libdir}/${BPN}/binding/libbinding_dbus.so "
+FILES_${PN}-speech-cmdline = " ${libdir}/${BPN}/speech/libspeech_cmdline.so "
+FILES_${PN}-speech-dbus = " ${libdir}/${BPN}/speech/libspeech_dbus.so "
+FILES_${PN}-gui-gtk = " ${libdir}/${BPN}/gui/libgui_gtk.so "
+FILES_${PN}-gui-qml = " ${libdir}/${BPN}/gui/libgui_qml.so ${datadir}/navit/skins/ "
+FILES_${PN}-gui-internal = " ${libdir}/${BPN}/gui/libgui_internal.so "
+FILES_${PN}-graphics-sdl = " ${libdir}/${BPN}/graphics/libgraphics_sdl.so "
+FILES_${PN}-graphics-qt = " ${libdir}/${BPN}/graphics/libgraphics_qt_qpainter.so "
+FILES_${PN}-graphics-gtk = " ${libdir}/${BPN}/graphics/libgraphics_gtk_drawing_area.so "
+FILES_${PN}-icons = "/usr/share/navit/xpm/"
+
+do_configure_prepend() {
+    # MOC=`$PKG_CONFIG QtGui --variable=moc_location` returns only /usr/bin/moc4 which is not available on hosts without Qt
+    sed -i "s#MOC=#MOC=${STAGING_DIR_NATIVE}#g" ${S}/configure.in
+}
+
+do_install_append() {
+    # fix QA issue
+    sed -i 's#Categories=GTK;Utility;Geography;#Categories=Graphics;#g' ${D}${datadir}/applications/navit.desktop
+
+    rm ${D}${libdir}/${BPN}/*/*.la
+
+    #Use split config
+    mv ${D}${datadir}/navit/navit.xml ${D}${datadir}/navit/navit.default.xml
+    install -m 0644 ${WORKDIR}/navit.xml ${D}${datadir}/navit/navit.xml
+    install -m 0644 ${WORKDIR}/maps.xml ${D}${datadir}/navit/maps.xml
+    install -m 0644 ${WORKDIR}/osd.xml ${D}${datadir}/navit/osd.xml
+    install -m 0644 ${WORKDIR}/speech.xml ${D}${datadir}/navit/speech.xml
+    install -m 0644 ${WORKDIR}/plugins.xml ${D}${datadir}/navit/plugins.xml
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/configure.add.imlib2.option.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/configure.add.imlib2.option.patch
new file mode 100644
index 0000000..be41792
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/configure.add.imlib2.option.patch
@@ -0,0 +1,16 @@
+--- a/configure.in.orig	2014-05-10 15:57:18.146362110 +0200
++++ b/configure.in	2014-05-10 15:59:27.859358845 +0200
+@@ -498,10 +498,13 @@
+ AC_SUBST(FRIBIDI_CFLAGS)
+ AC_SUBST(FRIBIDI_LIBS)
+ 
++AC_ARG_ENABLE(imlib2, [  --disable-imlib2  disable imlib2 support], imlib2=$enableval;imlib2_reason="configure parameter", imlib2=yes)
++if test x"${imlib2}" = "xyes"; then
+ PKG_CHECK_MODULES(IMLIB2, [imlib2], [imlib2_pkgconfig=yes], [imlib2_pkgconfig=no])
+ if test "x$imlib2_pkgconfig" = "xyes"; then
+    AC_DEFINE(HAVE_IMLIB2, 1, [Define to 1 if you have imlib2])
+ fi
++fi
+ AC_SUBST(IMLIB2_CFLAGS)
+ AC_SUBST(IMLIB2_LIBS)
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/freetype-include-path.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/freetype-include-path.patch
new file mode 100644
index 0000000..288997b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/freetype-include-path.patch
@@ -0,0 +1,28 @@
+Description: Fix FTBFS caused by freetype headers path change.
+Author: Gilles Filippini <pini@debian.org>
+Bug-Debian: http://bugs.debian.org/733378
+Index: navit/navit/font/freetype/font_freetype.c
+===================================================================
+--- navit.orig/navit/font/freetype/font_freetype.c	2013-09-23 10:43:32.000000000 +0200
++++ navit/navit/font/freetype/font_freetype.c	2013-12-30 19:54:45.000000000 +0100
+@@ -32,7 +32,7 @@
+ #if USE_FRIBIDI
+ #include <fribidi.h>
+ #endif
+-#include <freetype/ftglyph.h>
++#include <ftglyph.h>
+ #include "point.h"
+ #include "graphics.h"
+ #include "debug.h"
+diff -uNr navit.orig/navit/graphics/sdl/graphics_sdl.c navit/navit/graphics/sdl/graphics_sdl.c
+--- navit.orig/navit/graphics/sdl/graphics_sdl.c	2012-06-22 14:16:01.000000000 +0200
++++ navit/navit/graphics/sdl/graphics_sdl.c	2014-01-01 22:31:10.892948164 +0100
+@@ -84,7 +84,7 @@
+ #else
+ #include <ft2build.h>
+ #include FT_FREETYPE_H
+-#include <freetype/ftglyph.h>
++#include <ftglyph.h>
+ #endif
+ #include <event.h>
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/maps.xml b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/maps.xml
new file mode 100644
index 0000000..6f59f20
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/maps.xml
@@ -0,0 +1,24 @@
+                <!-- If you have the reiseplaner maps installed, set enabled="yes" in the next line and set the path correctly -->
+                <mapset enabled="no">
+                        <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map"/>
+                        <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map/smp1.smp"/>
+                        <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map/smp2.smp"/>
+                        <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map/smp3.smp"/>
+                        <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map/smp4.smp"/>
+                        <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map/smp5.smp"/>
+                </mapset>
+
+                <!-- If you dont want to use the sample map, either set enabled="no" in the next line or remove the xml file from the maps directory -->
+                <mapset enabled="no">
+                        <xi:include href="$NAVIT_SHAREDIR/maps/*.xml"/>
+                </mapset>
+
+                <!-- Mapset template for openstreetmaps -->
+                <mapset enabled="yes">
+                        <map type="binfile" enabled="yes" data="/media/mmc2/MapsNavit/osm_europe.bin"/>
+                </mapset>
+
+                <!-- Mapset template for garmin maps -->
+                <mapset enabled="no">
+                        <map type="garmin" enabled="yes" data="/path/to/img" debug="4"/>
+                </mapset>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/navit.xml b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/navit.xml
new file mode 100644
index 0000000..58c8c22
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/navit.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE config SYSTEM "navit.dtd">
+<config xmlns:xi="http://www.w3.org/2001/XInclude">
+	<xi:include href="/usr/share/navit/plugins.xml"/>
+	<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/debug)"/>
+
+	<navit center="4808 N 1134 E" zoom="256" tracking="1" orientation="-1" recent_dest="10" drag_bitmap="1">
+		<graphics type="gtk_drawing_area"/>
+		<gui type="gtk" enabled="no" menubar="1" toolbar="1" statusbar="1"/>
+		<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/navit/gui[@type='internal'])"/>
+		<!-- or comment gtk version above and try:
+		opkg install navit-graphics-qt
+		opkg install navit-gui-qml
+		<graphics type="qt_qpainter"/>
+		<gui type="qml" enabled="yes" menubar="1" toolbar="1" statusbar="1"/>
+		-->
+		<xi:include href="/usr/share/navit/osd.xml"/>
+		<log enabled="no" type="textfile_debug" data="debug_%Y%m%d-%i.txt" flush_size="1000" flush_time="30"/>
+		<vehicle name="Local GPS" profilename="car" enabled="yes" active="1" source="gpsd://localhost" gpsd_query="w+xj">
+			<!-- <log type="gpx" attr_types="position_time_iso8601,position_direction,position_speed,profilename,position_radius" data="track_%Y%m%d-%i.gpx" flush_size="1000" flush_time="30"/> -->
+		</vehicle>
+
+		<vehicle name="Demo" profilename="car" enabled="no" active="yes" source="demo://"/>
+
+		<!-- For the cumulative displacement filter to be enabled, set cdf_histsize="x" here, with x being an integer somewhere around 4 -->
+		<tracking cdf_histsize="0"/>
+
+		<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/navit/vehicleprofile[@name='car'])"/>
+		<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/navit/vehicleprofile[@name='bike'])"/>
+		<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/navit/vehicleprofile[@name='pedestrian'])"/>
+		<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/navit/vehicleprofile[@name='horse'])"/>
+
+		<route destination_distance="50"/>
+
+		<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/navit/navigation)"/>
+
+		<xi:include href="/usr/share/navit/speech.xml"/>
+		<xi:include href="/usr/share/navit/maps.xml"/>
+
+		<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/navit/layout[@name='Car'])"/>
+		<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/navit/layout[@name='Car-dark'])"/>
+		<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/navit/layout[@name='Bike'])"/>
+		<xi:include href="/usr/share/navit/navit.default.xml" xpointer="xpointer(/config/navit/layout[@name='T@H'])"/>
+	</navit>
+</config>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/osd.xml b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/osd.xml
new file mode 100644
index 0000000..2d0f9ff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/osd.xml
@@ -0,0 +1,15 @@
+                <!-- osd items allow to position display and control items directly on top of the map: -->
+                <osd enabled="no" type="compass"/>
+                <osd enabled="no" type="eta"/>
+                <osd enabled="no" type="navigation_distance_to_target"/>
+                <osd enabled="no" type="navigation"/>
+                <osd enabled="no" type="navigation_distance_to_next"/>
+                <osd enabled="no" type="navigation_next_turn"/>
+
+                <!-- Commands include gui_internal_menu, gui_internal_fullscreen, zoom_in and zoom_out.
+                         Usage of negative values change the button origins. x="0" y="0" specifies the top left, x="-0" y="-0" the bottom right corner.
+                         It's always the top left corner of the icon, so you need to consider the icon's size when you enter the values. -->
+                <osd enabled="no" type="button" x="0" y="0" command="gui.fullscreen()" src="toggle_fullscreen.xpm"/>
+                <osd enabled="no" type="button" x="-96" y="0" command="gui.menu()" src="menu.xpm"/>
+                <osd enabled="no" type="button" x="-96" y="-96" command="zoom_in()" src="zoom_in.xpm"/>
+                <osd enabled="no" type="button" x="0" y="-96" command="zoom_out()" src="zoom_out.xpm"/>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/plugins.xml b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/plugins.xml
new file mode 100644
index 0000000..015b055
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/plugins.xml
@@ -0,0 +1,6 @@
+<plugins>
+	<plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}lib*.so" ondemand="yes"/>
+	<plugin path="$NAVIT_LIBDIR/autoload/${NAVIT_LIBPREFIX}lib*.so"/>
+	<plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}libbinding_dbus.so" active="yes"/>
+	<plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}libgraphics_null.so" active="no"/>
+</plugins>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/speech.xml b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/speech.xml
new file mode 100644
index 0000000..28c4990
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit/speech.xml
@@ -0,0 +1,8 @@
+                <!-- Navit provides speech output in text format.
+                         If you have a speech synthesizer like festival lite installed, you can get turn by turn directions out of navit. Please set the "cps"-value to how many characters your tts engine approximately speaks per second.
+                         The default is text output to the shell -->
+                <!-- <speech type="cmdline" data="echo 'Fix the speech tag in navit.xml to let navit say:' '%s'" cps="15"/> -->
+                <!-- <speech type="cmdline" data="espeak -s 150 -v czech '%s' &amp;"/> -->
+                <!-- <speech type="cmdline" data="flite -t '%s'"/> -->
+                <!-- <speech type="cmdline" data="/usr/local/bin/say.sh '%s'"/> -->
+                <speech type="cmdline" data="espeak '%s' &amp;"/>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit_svn.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit_svn.bb
new file mode 100644
index 0000000..bdfbb4b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/navit/navit_svn.bb
@@ -0,0 +1,11 @@
+require navit.inc
+
+SRCREV = "5310"
+PV = "0.2.0+svnr${SRCPV}"
+PR = "${INC_PR}.3"
+
+S = "${WORKDIR}/${BPN}"
+SRC_URI += "svn://anonymous@navit.svn.sourceforge.net/svnroot/navit/trunk;module=navit;protocol=http \
+    file://freetype-include-path.patch \
+    file://configure.add.imlib2.option.patch \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/orrery.png b/import-layers/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/orrery.png
new file mode 100644
index 0000000..d9865b7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/orrery.png
Binary files differ
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/use.GdkPixbuf.patch b/import-layers/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/use.GdkPixbuf.patch
new file mode 100644
index 0000000..92d194d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/use.GdkPixbuf.patch
@@ -0,0 +1,59 @@
+From: Benjamin Deering
+Subject: orrery crashing X
+Date: Thursday, September 2, 2010 - 5:25 pm
+Link: http://kerneltrap.org/mailarchive/openmoko-community/2010/9/3/13218
+
+diff -uNr orrery.orig//orrery.c orrery/orrery.c
+--- orrery.orig//orrery.c	2009-11-30 06:59:44.000000000 +0100
++++ orrery/orrery.c	2010-11-15 22:33:17.000000000 +0100
+@@ -1238,12 +1238,44 @@
+     }
+     currentEntry = currentEntry->forwardPointer;
+   }
+-  if (nDarkGreyPoints > 0)
+-    gdk_draw_points(pixmap, darkGreyGC, darkGreyPoints, nDarkGreyPoints);
+-  if (nGreyPoints > 0)
+-    gdk_draw_points(pixmap, greyGC, greyPoints, nGreyPoints);
+-  if (nWhitePoints > 0)
+-    gdk_draw_points(pixmap, whiteGC, whitePoints, nWhitePoints);
++  GdkPixbuf* starDrawingBuf = gdk_pixbuf_get_from_drawable( NULL,
++                                                            pixmap,
++                                                            gdk_colormap_get_system()
++                                                            , 0, 0, 0, 0, displayWidth, displayHeight);
++  g_assert (gdk_pixbuf_get_bits_per_sample (starDrawingBuf) == 8);
++  guchar* p;
++  int rowstride = gdk_pixbuf_get_rowstride (starDrawingBuf);
++  guchar* pixels = gdk_pixbuf_get_pixels (starDrawingBuf);
++  int n_channels = gdk_pixbuf_get_n_channels (starDrawingBuf);
++  GdkGCValues starGCval;
++  GdkColor starColor;
++  int pointNum;
++  gdk_gc_get_values(darkGreyGC, &starGCval);
++  gdk_colormap_query_color( gdk_gc_get_colormap(darkGreyGC),starGCval.foreground.pixel, &starColor );
++  for( pointNum = 0; pointNum < nDarkGreyPoints; pointNum++) {
++    p = pixels + darkGreyPoints[pointNum].y * rowstride + darkGreyPoints[pointNum].x * n_channels;
++    p[0] = starColor.red & 0xff;
++    p[1] = starColor.green & 0xff;
++    p[2] = starColor.blue & 0xff;
++  }
++  gdk_gc_get_values(greyGC, &starGCval);
++  gdk_colormap_query_color( gdk_gc_get_colormap(greyGC), starGCval.foreground.pixel, &starColor );
++  for( pointNum = 0; pointNum < nGreyPoints; pointNum++) {
++    p = pixels + greyPoints[pointNum].y * rowstride + greyPoints[pointNum].x * n_channels;
++    p[0] = starColor.red & 0xff;
++    p[1] = starColor.green & 0xff;
++    p[2] = starColor.blue & 0xff;
++  }
++  gdk_gc_get_values(whiteGC, &starGCval);
++  gdk_colormap_query_color( gdk_gc_get_colormap(whiteGC), starGCval.foreground.pixel, &starColor );
++  for( pointNum = 0; pointNum < nWhitePoints; pointNum++) {
++    p = pixels + whitePoints[pointNum].y * rowstride + whitePoints[pointNum].x * n_channels;
++    p[0] = starColor.red & 0xff;
++    p[1] = starColor.green & 0xff;
++    p[2] = starColor.blue & 0xff;
++  }
++  gdk_draw_pixbuf ( pixmap , NULL , starDrawingBuf,
++            0, 0, 0, 0, displayWidth, displayHeight, GDK_RGB_DITHER_NORMAL, 0, 0 ) ;
+ }
+ 
+ void makeTimeString(char *string)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb
new file mode 100644
index 0000000..40a6df3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Astronomical application which displays the night sky"
+HOMEPAGE    = "http://projects.openmoko.org/projects/orrery/"
+SECTION = "x11/scientific"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://orrery.c;endline=25;md5=d792bdf2b591972da175aecc38d88cfe"
+DEPENDS = "gtk+"
+
+inherit autotools-brokensep pkgconfig
+
+SRC_URI = "http://projects.openmoko.org/frs/download.php/923/orrery_2.7_clean.tar.gz \
+           file://orrery.png \
+           file://use.GdkPixbuf.patch \
+"
+
+SRC_URI[md5sum]    = "bd62a33e7554ee1030313dfcdefcda8b"
+SRC_URI[sha256sum] = "645166a5e05b2064ab630534a514697fc47b681951e7fe1d635c259cbdf7a5e6"
+
+S = "${WORKDIR}/${BPN}"
+
+do_configure_prepend() {
+    # fix DSO issue with binutils-2.22
+    sed -i 's/ -lrt/ -lrt -lm/g' ${S}/Makefile.am
+}
+do_install_append() {
+    install -d ${D}${datadir}/orrery
+    cp -R --no-dereference --preserve=mode,links -v ${S}/data/* ${D}${datadir}/orrery
+    chown -R root:root ${D}${datadir}/orrery
+    install -d ${D}${datadir}/icons
+    install -m 0755 ${WORKDIR}/orrery.png ${D}${datadir}/icons
+}
+
+FILES_${PN} += "${datadir}/icons/orrery.png"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.8.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.8.0.bb
new file mode 100644
index 0000000..b4bfaf4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.8.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "PROJ.4 - Cartographic Projections library"
+HOMEPAGE = "http://trac.osgeo.org/proj/"
+SECTION = "libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=74d9aaec5fa0cd734341e8c4dc91b608"
+
+SRC_URI = "http://download.osgeo.org/proj/proj-${PV}.tar.gz"
+SRC_URI[md5sum] = "d815838c92a29179298c126effbb1537"
+SRC_URI[sha256sum] = "2db2dbf0fece8d9880679154e0d6d1ce7c694dd8e08b4d091028093d87a9d1b5"
+
+inherit autotools pkgconfig lib_package
+
+FILES_${PN} += "${datadir}/proj"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-mail_3.9.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-mail_3.9.0.bb
new file mode 100644
index 0000000..938af2e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-mail_3.9.0.bb
@@ -0,0 +1,56 @@
+SECTION = "x11/network"
+SUMMARY = "Mail user agent"
+DEPENDS = "gtk+ libetpan openssl aspell curl libgcrypt"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e059bde2972c1790af786f3e86bac22e"
+
+PNBLACKLIST[claws-mail] ?= "depends on blacklisted libetpan"
+
+inherit autotools pkgconfig gettext
+
+# translation patch: http://www.thewildbeast.co.uk/claws-mail/bugzilla/show_bug.cgi?id=1774
+SRC_URI = "\
+        ${SOURCEFORGE_MIRROR}/project/claws-mail/Claws%20Mail/${PV}/claws-mail-${PV}.tar.bz2;name=archive "
+SRC_URI[archive.md5sum] = "4c5ac7b21f0ed17d0f6404124c2229a4"
+SRC_URI[archive.sha256sum] = "ed70975a5056b3ffc4fe6e977f0d9606febc1499763c090241b029a73ff24e65"
+
+do_configure_append() {
+    cd ${S}/po ; for PO in *.po ; do MO=`echo $PO | sed s/\\.po//`.gmo ; if ! test -f $MO ; then msgfmt $PO -o $MO ; fi ; done; cd ${B}
+}
+
+PACKAGECONFIG ??= "startup-notification dbus"
+PACKAGECONFIG[enchant] = "--enable-enchant,--disable-enchant,enchant"
+PACKAGECONFIG[startup-notification] = "--enable-startup-notification,--disable-startup-notification,startup-notification"
+PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus dbus-glib"
+PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,openldap"
+
+# FIXME: maemo builds may want --enable-maemo
+# FIXME: some platforms may want --enable-generic-umpc
+EXTRA_OECONF = " \
+    --disable-manual \
+    --disable-crash-dialog \
+    --disable-jpilot \
+    --disable-trayicon-plugin \
+    --disable-spamassassin-plugin \
+    --disable-bogofilter-plugin \
+    --disable-pgpcore-plugin \
+    --disable-pgpmime-plugin \
+    --disable-pgpinline-plugin \
+    --disable-dillo-viewer-plugin \
+    --disable-valgrind \
+"
+
+# Remove enchant references:
+do_install_prepend() {
+    sed -i -e 's:${STAGING_INCDIR}:${includedir}:g;s:${STAGING_LIBDIR}:${libdir}:g' claws-mail.pc
+}
+
+# Work-around broken GPE icon lookup:
+do_install_append() {
+    rm -r ${D}${datadir}/icons
+    install -d ${D}${datadir}/pixmaps
+    install -m 0644 ${S}/claws-mail.png ${D}${datadir}/pixmaps/
+    sed -i 's/Icon=[^.]*$/&.png/' ${D}${datadir}/applications/claws-mail.desktop
+}
+
+RSUGGESTS_${PN} = "claws-plugin-gtkhtml2-viewer claws-plugin-mailmbox claws-plugin-rssyl"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-gtkhtml2-viewer/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-gtkhtml2-viewer/configure.patch
new file mode 100644
index 0000000..222a796
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-gtkhtml2-viewer/configure.patch
@@ -0,0 +1,52 @@
+Index: gtkhtml2_viewer-0.31/configure.ac
+===================================================================
+--- gtkhtml2_viewer-0.31.orig/configure.ac	2011-08-27 08:08:55.000000000 +0000
++++ gtkhtml2_viewer-0.31/configure.ac	2014-07-18 07:28:42.769518618 +0000
+@@ -1,33 +1,27 @@
+ AC_PREREQ(2.60)
+-AC_INIT(src/gtkhtml2_viewer.c)
++
++dnl plugin version
++m4_define([plugin_major_version],[0])
++m4_define([plugin_minor_version],[31])
++m4_define([plugin_micro_version],[0])
++m4_define([plugin_version], [plugin_major_version.plugin_minor_version.plugin_micro_version])
++
++AC_INIT(gtkhml2_viewer, plugin_version)
++AC_CONFIG_SRCDIR(src/gtkhtml2_viewer.c)
+ AC_CONFIG_AUX_DIR(config)
+ AM_MAINTAINER_MODE
+ 
+ PACKAGE=gtkhtml2_viewer
+ 
+-dnl plugin version
+-MAJOR_VERSION=0
+-MINOR_VERSION=31
+-MICRO_VERSION=0
++MAJOR_VERSION=plugin_major_version
++MINOR_VERSION=plugin_minor_version
++MICRO_VERSION=plugin_micro_version
+ EXTRA_VERSION=0
+-
+-if test \( $EXTRA_VERSION -eq 0 \); then
+-    if test \( $MICRO_VERSION -eq 0 \); then
+-        VERSION=${MAJOR_VERSION}.${MINOR_VERSION} 
+-    else
+-		VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}
+-    fi
+-else
+-    if test \( $MICRO_VERSION -eq 0 \); then
+-        VERSION=${MAJOR_VERSION}.${MINOR_VERSION}cvs${EXTRA_VERSION}
+-    else
+-		VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}cvs${EXTRA_VERSION}
+-    fi
+-fi
++VERSION=plugin_version
+ 
+ AC_CANONICAL_SYSTEM
+ 
+-AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
++AM_INIT_AUTOMAKE([foreign no-define])
+ AC_CONFIG_HEADERS(config.h)
+ AC_DEFINE_UNQUOTED(PLUGINVERSION, "$VERSION", [plugin version])
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-gtkhtml2-viewer_0.31.bb b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-gtkhtml2-viewer_0.31.bb
new file mode 100644
index 0000000..c252573
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-gtkhtml2-viewer_0.31.bb
@@ -0,0 +1,24 @@
+SECTION = "x11/network"
+SUMMARY = "Mail user agent plugins"
+DEPENDS = "claws-mail gtkhtml2 curl"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=977f04a8048c04684e521c06e2844a94"
+
+PNBLACKLIST[claws-plugin-gtkhtml2-viewer] ?= "depends on blacklisted claws-mail"
+
+PR = "r1"
+
+SRC_URI = "http://www.claws-mail.org/downloads/plugins_obsolete/gtkhtml2_viewer-${PV}.tar.gz \
+           file://configure.patch"
+SRC_URI[md5sum] = "a6c9dfa6f969ccd844796a5724b52167"
+SRC_URI[sha256sum] = "4d41f6d961efaac0f51705e5052bac732bc0bdafee2ef2082a9cf9d89f183ae5"
+
+inherit autotools pkgconfig gettext
+
+S = "${WORKDIR}/gtkhtml2_viewer-${PV}"
+
+FILES_${PN} = "${libdir}/claws-mail/plugins/*.so"
+FILES_${PN}-dbg += "${libdir}/claws-mail/plugins/.debug"
+FILES_${PN}-dev += "${libdir}/claws-mail/plugins/*.la"
+FILES_${PN}-staticdev = "${libdir}/claws-mail/plugins/*.a"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-mailmbox_1.15.bb b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-mailmbox_1.15.bb
new file mode 100644
index 0000000..b132177
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-mailmbox_1.15.bb
@@ -0,0 +1,20 @@
+SECTION = "x11/network"
+SUMMARY = "Mail user agent plugins"
+DEPENDS = "claws-mail"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+PNBLACKLIST[claws-plugin-mailmbox] ?= "depends on blacklisted claws-mail"
+
+SRC_URI = "http://www.claws-mail.org/downloads/plugins_obsolete/mailmbox-${PV}.tar.gz"
+SRC_URI[md5sum] = "7f72c68e6e1a8768f1247f455fd20b62"
+SRC_URI[sha256sum] = "633f7835261c88a0aa06de38553ac935a1799a7128120963a7fa87ace01dac18"
+
+inherit autotools pkgconfig
+
+S = "${WORKDIR}/mailmbox-${PV}"
+
+FILES_${PN} = "${libdir}/claws-mail/plugins/*.so"
+FILES_${PN}-dbg += "${libdir}/claws-mail/plugins/.debug"
+FILES_${PN}-dev += "${libdir}/claws-mail/plugins/*.la"
+FILES_${PN}-staticdev = "${libdir}/claws-mail/plugins/*.a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-rssyl/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-rssyl/configure.patch
new file mode 100644
index 0000000..a7a38f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-rssyl/configure.patch
@@ -0,0 +1,53 @@
+Index: rssyl-0.34/configure.ac
+===================================================================
+--- rssyl-0.34.orig/configure.ac	2014-07-18 07:37:28.981532959 +0000
++++ rssyl-0.34/configure.ac	2014-07-18 07:39:45.881536690 +0000
+@@ -1,5 +1,13 @@
++
++dnl plugin version
++m4_define([plugin_major_version],[0])
++m4_define([plugin_minor_version],[34])
++m4_define([plugin_micro_version],[0])
++m4_define([plugin_version], [plugin_major_version.plugin_minor_version.plugin_micro_version])
++
+ AC_PREREQ(2.60)
+-AC_INIT(src/plugin.c)
++AC_INIT(rssyl, plugin_version)
++AC_CONFIG_SRCDIR(src/plugin.c)
+ AC_CONFIG_AUX_DIR(config)
+ AM_MAINTAINER_MODE
+ AC_CONFIG_HEADERS(config.h)
+@@ -7,28 +15,15 @@
+ PACKAGE=rssyl
+ 
+ dnl plugin version
+-MAJOR_VERSION=0
+-MINOR_VERSION=34
+-MICRO_VERSION=0
++MAJOR_VERSION=plugin_major_version
++MINOR_VERSION=plugin_minor_version
++MICRO_VERSION=plugin_micro_version
+ EXTRA_VERSION=0
+-
+-if test \( $EXTRA_VERSION -eq 0 \); then
+-    if test \( $MICRO_VERSION -eq 0 \); then
+-        VERSION=${MAJOR_VERSION}.${MINOR_VERSION} 
+-    else
+-		VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}
+-    fi
+-else
+-    if test \( $MICRO_VERSION -eq 0 \); then
+-        VERSION=${MAJOR_VERSION}.${MINOR_VERSION}cvs${EXTRA_VERSION}
+-    else
+-		VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}cvs${EXTRA_VERSION}
+-    fi
+-fi
++VERSION=plugin_version
+ 
+ AC_CANONICAL_SYSTEM
+ 
+-AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
++AM_INIT_AUTOMAKE([foreign no-define])
+ AC_DEFINE_UNQUOTED(PLUGINVERSION, "$VERSION", [plugin version])
+ 
+ AC_PROG_CC
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-rssyl_0.34.bb b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-rssyl_0.34.bb
new file mode 100644
index 0000000..7da460c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/claws-plugin-rssyl_0.34.bb
@@ -0,0 +1,20 @@
+SECTION = "x11/network"
+SUMMARY = "Mail user agent plugins"
+DEPENDS = "claws-mail libxml2 curl glib-2.0 gtk+"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0c2348e0a084e573f0220f5e45d8097e"
+
+PNBLACKLIST[claws-plugin-rssyl] ?= "depends on blacklisted claws-mail"
+
+SRC_URI = "http://www.claws-mail.org/downloads/plugins_obsolete/rssyl-${PV}.tar.gz \
+           file://configure.patch"
+SRC_URI[md5sum] = "49b45608e8d160b3625d3d50016ec2ca"
+SRC_URI[sha256sum] = "2e96a1cd6a1a5bb7f86cd2eb48f6e174665957fafe1f3b1e8361aac3bb967f79"
+inherit autotools pkgconfig gettext
+
+S = "${WORKDIR}/rssyl-${PV}"
+
+FILES_${PN} = "${libdir}/claws-mail/plugins/*.so"
+FILES_${PN}-dbg += "${libdir}/claws-mail/plugins/.debug"
+FILES_${PN}-dev += "${libdir}/claws-mail/plugins/*.la"
+FILES_${PN}-staticdev = "${libdir}/claws-mail/plugins/*.a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/sylpheed/glib-2.32.patch b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/sylpheed/glib-2.32.patch
new file mode 100644
index 0000000..1520e57
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/sylpheed/glib-2.32.patch
@@ -0,0 +1,11 @@
+--- sylpheed-2.7.1.orig/libsylph/defs.h	2009-06-10 09:55:46.000000000 +0200
++++ sylpheed-2.7.1/libsylph/defs.h	2012-05-06 08:28:27.514746256 +0200
+@@ -24,8 +24,6 @@
+ #  include "config.h"
+ #endif
+ 
+-#include <glibconfig.h>
+-
+ #ifdef G_OS_WIN32
+ #  include <glib/gwin32.h>
+ #endif
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/sylpheed_2.7.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/sylpheed_2.7.1.bb
new file mode 100644
index 0000000..304b654
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-sato/claws-mail/sylpheed_2.7.1.bb
@@ -0,0 +1,31 @@
+SECTION = "x11/network"
+SUMMARY = "Mail user agent"
+DEPENDS = "gtk+ gpgme gnutls"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4 \
+                    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+PR = "r2"
+
+SRC_URI = "http://sylpheed.sraoss.jp/sylpheed/v2.7/sylpheed-${PV}.tar.bz2 \
+    file://glib-2.32.patch \
+"
+SRC_URI[md5sum] = "1f470525c1fbe53253813a0978c18228"
+SRC_URI[sha256sum] = "8bb6457db4e2eea1877b487d9ac8513546372db9a6a2e4271d11229f4af84e23"
+
+FILES_${PN} += "${datadir}/pixmaps ${datadir}/applications"
+FILES_${PN}-doc += "${datadir}"
+
+EXTRA_OECONF = "--disable-ssl"
+
+CFLAGS += "-D_GNU_SOURCE"
+
+do_configure_prepend() {
+    mkdir -p m4
+    for i in $(find ${S} -name "Makefile.am") ; do
+        sed -i s:'-I$(includedir)'::g $i
+    done
+}
+
+inherit autotools pkgconfig
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/2ch_t.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/2ch_t.patch
new file mode 100644
index 0000000..bf9bdb6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/2ch_t.patch
@@ -0,0 +1,5062 @@
+source: shamelessly stolen from debian ;-)
+purpose: add some entries particularly useful in Japanese 2channel anonymous website
+         (at least that is my understanding ;-))
+
+--- anthy-5414.orig/mkanthydic/2ch.t
++++ anthy-5414/mkanthydic/2ch.t
+@@ -0,0 +1,5055 @@
++# 2chÍѸì¤ÎCanna·Á¼°¼­½ñ
++# HARUYAMA Seigo haruyama@unixuser.org
++# ¸í¤ê¤äÉÊ»ì¤Ï¤³¤¦¤¹¤Ù¤­ ¤Ê¤É ¤¤¤Ã¤Ñ¤¤¤¢¤ë¤Ï¤º¤Ê¤Î¤Ç
++# ¤´»ØŦ¤è¤í¤·¤¯
++# »²¹Í: http://freezone.kakiko.com/jiten/index.html
++#       http://members.tripod.co.jp/maruheso/aadic/index.html
++#       http://isweb33.infoseek.co.jp/computer/gikosite/ (403 Forbidden)
++#       http://cannadic.oucrc.org/
++#       http://www.kyoto.trans-nt.com/anthy/
++#       http://www.media-k.co.jp/jiten/
++# »²¹Í¤Ë¤·¤Æ¤¤¤ë¼­½ñ¤ÎÇÛÉե饤¥»¥ó¥¹¤¬¤Ï¤Ã¤­¤ê¤·¤Þ¤»¤ó¤¬
++# ¼ýÏ¿¤µ¤ì¤¿¸ì¤Ë´Ø¤·¤Æ¤Ï¥Ñ¥Ö¥ê¥Ã¥¯¥É¥á¥¤¥ó¤È²ò¤·¤ÆÌäÂê¤Ê¤¤
++# ¤ÈȽÃǤ·¤Æ¤¤¤Þ¤¹.
++#
++# ¤³¤Î¼­½ñ¤Ï̵ÊݾڤǤ¹¡£
++# 
++# 2004/5/19ÈÇ
++#
++1¤Î¤¤¤·¤å¤¦¤«¤ó #T35 >>1¤Î°ì½µ´Ö
++1¤Î¤¤¤Ã¤·¤å¤¦¤«¤ó #JN >>1¤Î°ì½µ´Ö
++1¤Î¤ª¤µ¤Ê¤Ê¤¸¤ß #JN 1¤ÎÍĤʤ¸¤ß
++2¤Á¤ã¤ó¤»¤¤¤·¤ó¤Ó¤ç¤¦¤¤¤ó #JN 2chÀº¿Àɱ¡
++911¤¸¤±¤ó #T35 911»ö·ï
++¤¢¡¼¤¦¡¼ #CJ ¤¢¡Á¤¦¡Á
++¤¢¡¼¤¸¤å #KK ¥¢¡¼¥¸¥å
++¤¢¡¼¤¸¤å #T35 ¥¢¡¼¥¸¥å
++¤¢¡¼¤ë¤¢¡¼¤ë #T35 RR
++¤¢¡¼¤í¤ó¤â¤é¤é¡¼ #JN ¥¢¡¼¥í¥ó¥â¥é¥é¡¼
++¤¢¤¢¤¤¤¨¤Ð¤¸¤ç¤¦¤æ¤¦ #CJ ¤¢¤¢¸À¤¨¤Ð¾åÍ´
++¤¢¤¢¤¦¤¦ #CJ ¤¢¡Á¤¦¡Á
++¤¢¤¢¤¬¤à¤ä¤ë¤è #CJ ¤¢¤¢¡¢¥¬¥à¤ä¤ë¤è¡£
++¤¢¤¢¤¸¤å #T35 ¥¢¡¼¥¸¥å
++¤¢¤¢¤Ï¤Ï #CJ ¥¢¡¼¥Ï¥Ï
++¤¢¤¢¤Ï¤Ï #CJ Ž±Ž°ŽÊŽÊ
++¤¢¤¢¤ë¤¢¤¢¤ë #T35 RR
++¤¢¤¢¤ë¤¨¤¤¤¢¤¢¤ë #T35 RAR
++¤¢¤¤ #JN ¤¢¤¤
++¤¢¤¤¤¢¡¼¤ë #T35 IR
++¤¢¤¤¤³¤é #T35 ¥¢¥¤¥³¥é
++¤¢¤¤¤´ #T35 °¦¸í
++¤¢¤¤¤´¡¼ #CJ ¥¢¥¤¥´¡Á¡ª
++¤¢¤¤¤»¤ó #T35 ¤¢¤¤¤»¤ó
++¤¢¤¤¤Æ¤£¡¼¤Ñ¤ï¡¼ #T35 £É£Ô¥Ñ¥ï¡¼
++¤¢¤¤¤Ç¤£¡¼ #T35 £É£Ä
++¤¢¤¤¤É¤ë #T35 °¥¡ð
++¤¢¤¤¤Ê¤Ö¤ê¤Ã¤¸ #T35 ¥¢¥¤¥Ê¥Ö¥ê¥Ã¥¸
++¤¢¤¤¤Ë¤Á¤ã¤ó¤Í¤ë #T35 i¡Ý2¤Á¤ã¤ó¤Í¤ë
++¤¢¤¤¤Î¤¿¤Í #CN °¦¤Î¼ï
++¤¢¤¤¤Î¤¿¤Í #T35 °¦¤Î¼ï
++¤¢¤¤¤Ô¡¼ #T35 £É£Ð
++¤¢¤¤¤Ô¤¤ #T35 ip!
++¤¢¤¤¤Ö #KK °¦Éï
++¤¢¤¤¤Ö #T35 °¦Éï
++¤¢¤¤¤Ü¤ó #JN ¤¢¤¤¤Ü¤ó
++¤¢¤¤¤Ü¤ó #T35 ¤¢¤¤¤Ü¤ó
++¤¢¤¤¤á¤Ë¤å¤¦¤Ï¤¸¤­ #T35 ime.nuÃƤ­
++¤¢¤¤¤â¤Ê #T35 iMona
++¤¢¤¤¤â¤Ê¡¼ #JN ¥¢¥¤¥â¥Ê¡¼
++¤¢¤¤¤â¤Ê¡¼ #JN ¥¢¥¤¥â¥Ê¡¼ 
++¤¢¤¤¤é¤ó¤É #T35 °¥¤é¤ó¤É
++¤¢¤¤¤ë #KK ¥¢¥¤¥ë
++¤¢¤¤¤ë #T35 ¥¢¥¤¥ë
++¤¢¤¤¤ï¤¤¤æ¡¼¤¼¤í¤ï¤ó #JN IYU-01
++¤¢¤¦ #KK ¤¢¤¦
++¤¢¤¦ #T35 ¤¢¤¦
++¤¢¤¦¡¼ #JN ¥¢¥¦¡¼
++¤¢¤¦¤È¤í¡¼ #T35 ¥¢¥¦¥È¥í¡¼
++¤¢¤¦¤È¤í¤¦ #T35 ¥¢¥¦¥È¥í¡¼
++¤¢¤¦¤ò¤¿ #T35 ¤¢¤¦¥ò¥¿
++¤¢¤ª #R5r Àú
++¤¢¤ª¤¹¤® #KSr ÀĤ¹¤®
++¤¢¤ª¤¹¤® #T35 ÀĤ¹¤®
++¤¢¤ª¤¾¤é #KK ÀĶõ
++¤¢¤ª¤¾¤é #T35 ÀĶõ
++¤¢¤ª¤Ð #T35 ÀÄ»õ
++¤¢¤ª¤ê #T35 Àú¤ê
++¤¢¤ª¤ê¤³¤Æ¤¤ #T35 Àú¤ê¸ÇÄê
++¤¢¤ª¤ê¤³¤Ô¤Ú #T35 Àú¤ê¥³¥Ô¥Ú
++¤¢¤ª¤ê¤ó #JN ¥¢¥ª¥ê¥ó
++¤¢¤« #T35 ¹¤
++¤¢¤«¤¤¤¯¤Ë¤ß¤Á #T35 ÀÖ°æˮƻ
++¤¢¤«¤¤¤Û¤¦¤É¤¦ #T35 ÀÖ°æˮƻ
++¤¢¤«¤­¤ã¤Ã¤× #T35 ÀÖ¥­¥ã¥Ã¥×
++¤¢¤«¤À¤ó¤·¤ã¤¯ #T35 ÀÖÃ˼ß
++¤¢¤«¤Ò #KK ¥¢¥«Æü
++¤¢¤«¤Ò #T35 ¥¢¥«Æü
++¤¢¤«¤Þ¤Õ¤é¡¼ #T35 À֥ޥե顼
++¤¢¤«¤Þ¤Õ¤é¤¢ #T35 À֥ޥե顼
++¤¢¤¬ #R5 aga
++¤¢¤¬¤È¤¦ #CJ ¤¢¤¬¤È¤¦
++¤¢¤­¤·¤Î¤Î¤ß¤ä¤«¤³¤Ê¤¤¤·¤ó¤Î¤¦ #JN ½©¼ÄµÜ²Â»ÒÆâ¿Æ²¦
++¤¢¤­¤Ï¤Ð¤é¤Ò¤ç¤¦¤¸¤å¤ó¤·¤è¤¦ #T35 ½©ÍÕ¸¶É¸½à»ÅÍÍ
++¤¢¤­¤Ò¤í¤â¤Ê¡¼ #JN ¥¢¥­¥Ò¥í¥â¥Ê¡¼
++¤¢¤­¤Ò¤í¤â¤Ê¡¼ #T35 ¥¢¥­¥Ò¥í¥â¥Ê¡¼
++¤¢¤­¤Ò¤í¤â¤Ê¤¢ #T35 ¥¢¥­¥Ò¥í¥â¥Ê¡¼
++¤¢¤­¤ì¤¹ #JN ¥¢¥­¥ì¥¹
++¤¢¤¯¤­¤ó #T35 ¥¢¥¯¶Ø
++¤¢¤¯¤»¤¹¤­¤»¤¤ #T30 ¥¢¥¯¥»¥¹µ¬À©
++¤¢¤¯¤»¤¹¤­¤»¤¤ #T35 ¥¢¥¯¥»¥¹µ¬À©
++¤¢¤¯¤Þ #JN °­Ëâ
++¤¢¤¯¤Þ #T35 °­Ëâ
++¤¢¤°¤Í¤¹¤¹¤Ú¤·¤ã¤ë #T35 ¥¢¥°¥Í¥¹¥¹¥Ú¥·¥ã¥ë
++¤¢¤±¤¤¤¿ #CN ¥¢¥±ÈÄ
++¤¢¤±¤¤¤¿ #T35 ¥¢¥±ÈÄ
++¤¢¤² #CJ ¤¢¤²
++¤¢¤² #CN ¾å¥²
++¤¢¤² #KSr ¤¢¤²
++¤¢¤² #R5 age
++¤¢¤² #T35 age
++¤¢¤² #T35 ¤¢¤²
++¤¢¤² #T35 ¾å¤²
++¤¢¤² #T35 ¾å¥²
++¤¢¤²¤¢¤é¤· #T35 age¹Ó¤é¤·
++¤¢¤²¤¢¤é¤· #T35 ¤¢¤²¹Ó¤é¤·
++¤¢¤²¤Á¤å¤¦ #T35 ¤¢¤²¿ß
++¤¢¤²¤Ñ¤½¤Þ¤½ #JN ageŽÊŽßŽ¿ŽÏŽ¿
++¤¢¤²¤Ö¤é¤¶¡¼¤º #JN age¥Ö¥é¥¶¡¼¥º
++¤¢¤²¤â¤Ê¡¼ #JN age¥â¥Ê¡¼
++¤¢¤²¤ì #CJ age¤ì
++¤¢¤²¤ì¤¹ #T35 age¥ì¥¹
++¤¢¤²¤ó¤Ê¤Ü¤± #CJ ¤¢¤²¤ó¤Ê¥Ü¥±¡ª
++¤¢¤´ #JN ¥¢¥´
++¤¢¤´ #T35 ¥¢¥´
++¤¢¤´¤¢¤Ë¤á #T35 ¥¢¥´¥¢¥Ë¥á
++¤¢¤´¤ª¤¿ #JN ¥¢¥´¥ª¥¿
++¤¢¤´¤ª¤¿ #T35 ¥¢¥´¥ª¥¿
++¤¢¤´¤Ï¤º¤·¤â¤Á #T30 ¤¢¤´¥Ï¥º¥·»ý¤Á
++¤¢¤´¤Ï¤º¤·¤â¤Á #T35 ¤¢¤´¥Ï¥º¥·»ý¤Á
++¤¢¤µ¤Á¤å¤ó #T35 Ä«¥Á¥å¥ó
++¤¢¤µ¤Ì¤Þ¤Ê¤ß¤»¤ó¤»¤¤ #JN Àõ¾ÂÆàÈþÀèÀ¸
++¤¢¤µ¤Ï¤é¡¼ #JN ¥¢¥µ¥Ï¥é¡¼
++¤¢¤µ¤Ò¤¤¤Á¤Ë¤¤¤Á¤¼¤í #T35 Ä«Æü12.10
++¤¢¤µ¤Ô¡¼ #JN ¥¢¥µ¥Ô¡¼¡¡
++¤¢¤¸¤Ý¤ó #T35 Ì£¥Ý¥ó
++¤¢¤¹¤«¤â¤Ê¡¼ #JN ÈôÄ»¥â¥Ê¡¼
++¤¢¤¹¤­¡¼¤¢¡¼¤È #T35 ¥¢¥¹¥­¡¼¥¢¡¼¥È
++¤¢¤¹¤­¡¼¤¢¡¼¤È¤«¤¤¤»¤­ #JN £Á£Á²òÀÏ
++¤¢¤¹¤­¤¤¤¢¤¢¤È #T35 ¥¢¥¹¥­¡¼¥¢¡¼¥È
++¤¢¤º¤Þ¤ó¤¬¤À¤¤¤ª¤¦ #T35 ¤¢¤º¤Þ¤ó¤¬Â粦
++¤¢¤½¤¦ #JN Ž±Ž¿Ž³
++¤¢¤½¤Ñ¤½¤Þ¤½ #JN ¥¢¥½¥Ñ¥½¥Þ¥½
++¤¢¤½¤Ñ¤½¤ï¤Ã¤·¤ç¤¤ #JN ¥¢¥½¥Ñ¥½¥ï¥Ã¥·¥ç¥¤
++¤¢¤½¤Þ¤½¤Ñ¤½¤Ô¡¼¤·¡¼ #JN Ž±Ž¿ŽÊŽßŽ¿ŽÏŽ¿PC
++¤¢¤Ã¤­¤¤ #JN ¥¢¥Ã¥­¡¼
++¤¢¤Ã¤¶¤à #JN ¥¢¥Ã¥¶¥à
++¤¢¤Ã¤½ #JN ¤¢¤Ã¤½
++¤¢¤Ã¤½¡¼ #CJ ¤¢¤Ã¤½¡¼
++¤¢¤Ã¤½¡¼ #JN ¤¢¤Ã¤½¡¼
++¤¢¤Ã¤Á¤³¤Ã¤Á¤¤¤¤¤È¤â #JN ¥¢¥Ã¥Á¥³¥Ã¥Á¥¤¥¤¥È¥â
++¤¢¤Ã¤×¤·¤ç¤¯¤Ë¤ó #T35 ¤¦£ð¿¦¿Í
++¤¢¤Ã¤×¤·¤ç¤¯¤Ë¤ó #T35 ¤¦£ð¿¦¿Í 
++¤¢¤Ã¤×¤º #T35 Appz
++¤¢¤Ã¤×¤ë¤ª¤ä¤¸ #T35 ¥¢¥Ã¥×¥ë¥ª¥ä¥¸
++¤¢¤Ã¤×¤ë¤­¤Ã¤É #JN ¥¢¥Ã¥×¥ë¥­¥Ã¥É
++¤¢¤Ã¤×¤í¡¼¤À¡¼ #T35 ¥¢¥Ã¥×¥í¡¼¥À¡¼
++¤¢¤Ä¡¼ #JN (ŽßAŽß;)Ž±ŽÂŽ°
++¤¢¤Ä¡¼ #JN Ž±ŽÂŽ°
++¤¢¤Ä¤²¤·¤ç¤¦¤¸¤µ¤¯¤¸¤¨¤ó #JN ¡ÚŽ¥¢ÏŽ¥¡Û
++¤¢¤Ä¤²¤·¤ç¤¦¤¸¤µ¤¯¤¸¤¨¤ó #JN Ž±ŽÂŽ¹ŽÞŽ¼Ž®Ž³Ž¼ŽÞŽ»Ž¸Ž¼ŽÞŽ´ŽÝ
++¤¢¤È¤Ô¡¼ #T35 @p
++¤¢¤Ê¤¶¡¼¤¢¤®¤³ #JN ¥¢¥Ê¥¶¡¼¥¢¥®¥³
++¤¢¤Ê¤¿¤ò¤Ï¤ó¤Ë¤ó¤Ç¤¹ #CJ ¤¢¤Ê¤¿¤ò¡¢ÈȿͤǤ¹
++¤¢¤Ê¤¿¤ò¤Ï¤ó¤Ë¤ó¤Ç¤¹ #JN ¡Ê'¢Ï`¡Ë¡ã¤¢¤Ê¤¿¤ò¡¢ÈȿͤǤ¹
++¤¢¤Ê¤¿¤ò¤Ï¤ó¤Ë¤ó¤Ç¤¹ #JN ¤¢¤Ê¤¿¤ò¡¢ÈȿͤǤ¹
++¤¢¤Ê¤í¤°¤Õ¤¡¤¯¤È¤ê¤¤ #T35 ¥¢¥Ê¥í¥°¥Õ¥¡¥¯¥È¥ê¡¼
++¤¢¤Ê¤ò¤¿ #T35 ¥¢¥Ê¥ò¥¿
++¤¢¤Ë #T35 ·»
++¤¢¤Ë¤ª¤¿ #T35 ¥¢¥Ë¥ª¥¿
++¤¢¤Ë¤­ #T35 ¥¢¥Ë¥­
++¤¢¤Ë¤¸¤ã #T35 ·»¼Ô
++¤¢¤Ë¤×¤ê #T35 ¥¢¥Ë¥×¥ê
++¤¢¤Ë¤ò¤¿ #T35 ¥¢¥Ë¥ò¥¿
++¤¢¤Î¤¯¤Ë #T35 ¤¢¤Î¹ñ
++¤¢¤Î¤¯¤Ë¤Î¤¢¤Î¤Û¤¦¤½¤¯ #T35 ¤¢¤Î¹ñ¤Î¤¢¤Îˡ§
++¤¢¤Ï¤¡ #JN (*¡­§Õ`*)Ž±ŽÊŽ§&#9829;
++¤¢¤Ï¤¡ #JN (*¡­§Õ`;)¡Ä
++¤¢¤Ï¤¡ #JN ¡Ä(*¡­§Õ`)Ž±ŽÊŽ§¡Ä&#9829;
++¤¢¤Ï¤¡ #JN ¦²(*Žß§¥`;)Ž±¡ÄŽ±¡ÄŽ±Ž¯ŽÊŽ§Ž§Ž§Ž§Ž§Ž§Ž§Ž§&#9829;!!!!
++¤¢¤Ï¤¡ #JN ¦²(Žß§Õ`*;)Ž±Ž¯,Ž±ŽÊŽ§&#9829;
++¤¢¤Ï¤¡ #JN Ž±ŽÊŽ§&#9829;
++¤¢¤Ñ¤à #T35 ¥¢¥Ñ¥à
++¤¢¤Ñ¤à¤¿¤Þ¤â¤Ã¤Æ¤³¤¤ #JN ¥¢¥Ñ¥à¡ªÃÆ»ý¤Ã¤Æ¤³¤¤
++¤¢¤Ò¤ã #CJ ¥¢¥Ò¥ã
++¤¢¤Ò¤ã #CJ Ž±ŽËŽ¬
++¤¢¤Ò¤ã #JN ¥¢¥Ò¥ã
++¤¢¤Ò¤ã #JN Ž±ŽËŽ¬
++¤¢¤Ò¤ã¤¢¤¶¤é¤· #JN ¥¢¥Ò¥ã¥¢¥¶¥é¥·¡¡
++¤¢¤Ò¤ã¤¬¤ß¤Ï¤«¤» #JN ¥¢¥Ò¥ã¿ÀÇî»Î
++¤¢¤Ó¤ã #CJ ¤¢¤Ó¤ã
++¤¢¤Ô¤Ã¤·¤ã¡¼ #JN ¥¢¥Ô¥Ã¥·¥ã¡¼
++¤¢¤Õ¤¡¡¼¤à¤É¤¨¤Ã¤¯¤¹ #JN ¥¢¥Õ¥¡¡¼¥à¥É£Ø
++¤¢¤Õ¤© #T35 ¥¢¥Õ¥©
++¤¢¤Õ¤¬¤ó¤³¤¦¤¯¤¦¤º¤â¤¦ #T35 ¥¢¥Õ¥¬¥ó¹Ò¶õÁêËÐ
++¤¢¤Õ¤í¤Ë¤À¡¼ #JN ¥¢¥Õ¥í¥Ë¥À¡¼
++¤¢¤Ö¤¤¤¿ #T35 ¥¢¥ÖÈÄ
++¤¢¤Ö¤¥¤ë¤â¤Ê¡¼ #JN ¥¢¥ô¥É¥¥¥ë¥â¥Ê¡¼
++¤¢¤× #T30 ¤¢¤×
++¤¢¤× #T30 ¥¢¥×
++¤¢¤×¤í¤À #T35 ¤¢¤×¤í¤À
++¤¢¤Ù #JN ¤Ê¤Ã¤Á
++¤¢¤Ù #JN °ÂÇÜ
++¤¢¤Û¤¹¤± #T35 ¤¢¤Û½õ
++¤¢¤Û¤¿¤ó #JN ¤¢¤Û¤¿¤ó
++¤¢¤Û¤ë¤À¡¼ #T35 ¥¢¥Û¥ë¥À¡¼
++¤¢¤Û¤ë¤À¤¢ #T35 ¥¢¥Û¥ë¥À¡¼
++¤¢¤Ü¡¼¤ó #JN ¤¢¤Ü¡¼¤ó
++¤¢¤Ü¡¼¤ó #T30 ¤¢¤Ü¡¼¤ó
++¤¢¤Ü¡¼¤ó #T30 ¤¢¤Ü¡Á¤ó
++¤¢¤Ü¡¼¤ó¤Í¤Ã¤È¤ï¡¼¤¯ #T35 ¥¢¥Ü¡¼¥ó¥Í¥Ã¥È¥ï¡¼¥¯
++¤¢¤Ü¡¼¤ó¤Ð¤¯¤é¤¤ #JN Ž±ŽÎŽÞŽ°ŽÝÇúÍë
++¤¢¤Ü¤ª¤·¤ç¤ó #T35 ¥¢¥Ü¡¼¥·¥ç¥ó
++¤¢¤Ü¤ª¤ó #T35 ¤¢¤Ü¡Á¤ó
++¤¢¤Ü¤ª¤ó¤Í¤Ã¤È¤ï¤¢¤¯ #T35 ¥¢¥Ü¡¼¥ó¥Í¥Ã¥È¥ï¡¼¥¯
++¤¢¤Ý¡¼ #KK ¥¢¥Ý¡¼
++¤¢¤Ý¡¼ #T35 ¥¢¥Ý¡¼
++¤¢¤Ý¤ª #T35 ¥¢¥Ý¡¼
++¤¢¤Þ¡¼ #JN ¡Ê&hearts;¢Ï;&hearts;¡ËŽ±ŽÏŽ°
++¤¢¤Þ¡¼ #JN ¥¢¥Þ¡¼
++¤¢¤ß #T35 ÌÖ
++¤¢¤à¤í¤Ë¤ã¤ß¤¨ #JN °Â¼¼ŽÆŽ¬ŽÐŽ´
++¤¢¤á¤¶¡¼ #T35 ¤¢¤á¤¶¡¼
++¤¢¤á¤¶¡¼¤Í¤Ã¤È¤Ä¡¼ #CN ¤¢¤á¤¶¡¼¤Í¤Ã¤È£²
++¤¢¤á¤¶¡¼¤Í¤Ã¤È¤Ä¡¼ #T35 ¤¢¤á¤¶¡¼¤Í¤Ã¤È£²
++¤¢¤á¤¶¤¢ #T35 ¤¢¤á¤¶¡¼
++¤¢¤á¤¶¤¢¤Í¤Ã¤È¤Ä¤¦ #T35 ¤¢¤á¤¶¡¼¤Í¤Ã¤È£²
++¤¢¤á¤¾¤¦ #CN ¤¢¤á¤¾¤¦
++¤¢¤á¤¾¤¦ #JN ¤¢¤á¤¾¤¦
++¤¢¤á¤¾¤¦ #T35 ¤¢¤á¤¾¤¦
++¤¢¤á¤¾¤¦¤«¤ê #JN ¤¢¤á¤¾¤¦¡Ê²¾¡Ë
++¤¢¤á¤¾¤¦¤«¤ê #T35 ¤¢¤á¤¾¤¦¡Ê²¾¡Ë
++¤¢¤á¤Ë¤â¤Þ¤±¤Æ #T35 ¥¢¥á¥Ë¥â¥Þ¥±¥Æ
++¤¢¤á¤Í¤³ #JN ¤¢¤á¤Í¤³
++¤¢¤ä¤·¤£¤ï¡¼¤ë¤É #CN ¤¢¤ä¤·¤£¤ï¡¼¤ë¤É
++¤¢¤ä¤·¤¤ #T35 ¤¡¤ã¦É¤£
++¤¢¤ä¤·¤¤¤¸¤å¤¦¤Ë¤ó #T35 ¤¡¤ã¦É¤£½»¿Í
++¤¢¤ä¤·¤¤¤ï¡¼¤ë¤É #CN ¤¡¤ã¦É¤£¤ï¡¼¤ë¤É
++¤¢¤ä¤·¤¤¤ï¡¼¤ë¤É #T35 ¤¡¤ã¦É¤£¤ï¡¼¤ë¤É
++¤¢¤ä¤·¤¤¤ï¤¢¤ë¤É #T35 ¤¡¤ã¦É¤£¤ï¡¼¤ë¤É
++¤¢¤ä¤Ê¤ß¤ì¤¤ #JN ¤¡¤ã¤Ê¤ß¥ì¥¤
++¤¢¤æ #JN ¤¢¤æ
++¤¢¤æ #T35 ¤¢¤æ
++¤¢¤æ #T35 °¾
++¤¢¤æ¤â¤Ê¡¼ #JN ¤¢¤æ¥â¥Ê¡¼
++¤¢¤è¤Í #T35 ¤¢¤è¤Í
++¤¢¤é #S5r ¹Ó¤é
++¤¢¤é¤¢¤­¤¤ #T35 ¥¢¥é¡¼¥­¡¼
++¤¢¤é¤¯¤ì #JN ¤¢¤é¤¯¤ì
++¤¢¤é¤¯¤ì¤ï¤Ã¤·¤ç¤¤ #JN ¤¢¤é¤¯¤ì¥ï¥Ã¥·¥ç¥¤
++¤¢¤é¤µ¡¼ #T35 ¹Ó¤µ¡¼
++¤¢¤é¤µ¤¢ #T35 ¹Ó¤µ¡¼
++¤¢¤é¤· #T35 ¹Ó¤é¤·
++¤¢¤é¤· #T35 ¹Ó¤é»á
++¤¢¤é¤· #T35 ¹Ó»á
++¤¢¤é¤· #T35 ¿·»á
++¤¢¤é¤· #T35 Íò
++¤¢¤é¤·¤¤¤é¤¤ #T30 ¹Ó¤é¤·°ÍÍê
++¤¢¤é¤·¤¤¤é¤¤ #T35 ¹Ó¤é¤·°ÍÍê
++¤¢¤é¤·¤³¤Æ¤¤ #T30 ¹Ó¤é¤·¸ÇÄê
++¤¢¤é¤·¤³¤Æ¤¤ #T35 ¹Ó¤é¤·¸ÇÄê
++¤¢¤é¤·¤½¤¦¤´¤¦¤»¤ó¤¿¡¼ #JN ¹Ó¤é¤·Áí¹ç¥»¥ó¥¿¡¼
++¤¢¤é¤¹ #S5r ¹Ó¤é
++¤¢¤é¤Ó¤¢¤´¤¢¤é¤· #T35 ¥¢¥é¥Ó¥¢¸ì¹Ó¤é¤·
++¤¢¤é¤ä¤À #CJ ¤¢¤é¤ä¤À
++¤¢¤é¤ä¤À #JN (¡¬§Õ¡¬)¡ã¤¢¤é¤ä¤À¡ª
++¤¢¤é¤ä¤À #JN ¤¢¤é¤ä¤À
++¤¢¤é¤ä¤À¤«¤ó¤¼¤ó¤¿¤¤ #JN ¤¢¤é¤ä¤À´°Á´ÂÎ
++¤¢¤ê¤¨¡¼¤ë #CJ ¥¢¥ê¥¨¡¼¥ë
++¤¢¤ê¤¨¡¼¤ë #T35 ¥¢¥ê¥¨¡¼¥ë
++¤¢¤ê¤¨¡¼¤ë #T35 Ž±ŽØŽ´Ž°ŽÙ
++¤¢¤ê¤¨¤¨¤ë #T35 ¥¢¥ê¥¨¡¼¥ë
++¤¢¤ê¤¨¤¨¤ë #T35 Ž±ŽØŽ´Ž°ŽÙ
++¤¢¤ê¤¬¤È¤¦ #JN ¤¢¤ê¤¬¤È¤¦
++¤¢¤ê¤¹ #JN ¤¢¤ê¤¹
++¤¢¤ë¤«¤â¤Ê¤º¤±¤¤¤à¤·¤ç #JN ¥¢¥ë¥«¥â¥Ê¥º·ºÌ³½ê
++¤¢¤ë¤¯¤­¤Î¤³ #JN Ê⤯¥­¥Î¥³
++¤¢¤ë¤¯¤á #JN Ê⤯²ê
++¤¢¤ì¤ó¤¸ #JN ¥¢¥ì¥ó¥¸
++¤¢¤í¤¨¤ê¡¼¤Ê #JN ¥¢¥í¥¨¥ê¡¼¥Ê
++¤¢¤ó¤¬¤È¤Ê¤â¡¼ #JN ¤¢¤ó¤¬¤È¥Ê¥â¡¼
++¤¢¤ó¤°¤é #T35 ¥¢¥ó¥°¥é
++¤¢¤ó¤±¤ó¤µ¤Ä #JN °Å¡¦·õ¡¦»¦
++¤¢¤ó¤·¤ã¤¹¤Í¤³ #JN ¥¢¥ó¥·¥ã¥¹Ç­
++¤¢¤ó¤¿¤¬¤Ê¡¼ #JN ¥¢¥ó¥¿¥¬¥Ê¡¼
++¤¢¤ó¤¿¤â¤Í¡¼ #JN ¥¢¥ó¥¿¥â¥Í¡¼
++¤¢¤ó¤À¡¼¤°¤é¤¦¤ó¤É #T35 ¥¢¥ó¥À¡¼¥°¥é¥¦¥ó¥É
++¤¢¤ó¤Á¤Ç¤£¤¤¤Æ¤£¤¤ #T35 ¥¢¥ó¥ÁDT
++¤¢¤ó¤Ê¤«¤Ï¤ë¤Ê #CN °ÂÃ濺̾
++¤¢¤ó¤Ê¤«¤Ï¤ë¤Ê #T35 °ÂÃ濺̾
++¤£¤ç¤¥ #JN ¤£¤ç¤¥
++¤¤ #C5r ÀÂ
++¤¤¡¼¤¸¤¤ #T35 £ÅÌì
++¤¤¡¼¤Ú¡¼¤³¡¼ #JN ¥¤¡¼¥Ú¡¼¥³¡¼
++¤¤¡¼¤ó¤¸¤ã¤Ê¤¤¤Î #JN ¤¤¡¼¤ó¤¸¤ã¤Ê¤¤¤Î
++¤¤¤¤ #CJ  (Ž¥¢ÏŽ¥)Ž²Ž²!!
++¤¤¤¤ #CJ  ¡Ê¡¦¢Ï¡¦¡Ë¥¤¥¤!!
++¤¤¤¤ #CJ  ¡Ê¡¦¢Ï¡¦¡ËŽ²Ž²!!
++¤¤¤¤ #CJ ¥¤¥¤
++¤¤¤¤¤¢¤¸¤ã¤ó #JN ¤¤¤¤¤¢¤¸¤ã¤ó
++¤¤¤¤¤¸¤Þ #T35 ÈÓÅè
++¤¤¤¤¤¿¤¤¤À¤±¤Á¤ã¤¦¤ó¤«¤È #CJ ¸À¤¤¤¿¤¤¤À¤±¤Á¤ã¤¦¤ó¤«¤È¡£
++¤¤¤¤¤À #T35 ÈÓÅÄ
++¤¤¤¨¤¤¤³¤é #T35 °ä±Æ¥³¥é
++¤¤¤¨¤Ï¤ä¤É¤Ç¤â¤¬¤Ã¤·¤å¤¯¤¸¤ç¤Ç¤â¤Í¤§¤¾ #T35 ²È¤Ï½É¤Ç¤â¹ç½É½ê¤Ç¤â¤Í¤§¤¾¡ª
++¤¤¤« #T35 ¤¤¤«
++¤¤¤«¤¬¤Ê¤â¤Î¤« #JN Ž²Ž¶Ž¶ŽÞŽÅŽÓŽÉŽ¶
++¤¤¤«¤¯¤»¤¨ #CJ ¤¤¤«¤¯¤»¡¼
++¤¤¤«¤·¤ç¤¦¤ê¤ã¤¯ #CJ ¡Ê°Ê²¼¾Êά
++¤¤¤«¤·¤ç¤¦¤ê¤ã¤¯ #CJ °Ê²¼¾Êά
++¤¤¤«¤ê¤Î¤¤¤Þ¤Î¤¦¤Á #JN Åܤê¤Î¥¤¥Þ¥Î¥¦¥Á
++¤¤¤«¤ê¤ò¤Ö¤Ä¤±¤ë¤â¤Ê¡¼ #JN Åܤê¤ò¤Ö¤Ä¤±¤ë¥â¥Ê¡¼
++¤¤¤­¤¸¤ë¤·¤®¤å¤¦¤Ë¤å¤¦ #JN À°õµíÆý
++¤¤¤­¤Î¤¤¤¤¤®¤³¤¦¤ê #JN À¤­¤Î¤¤¤¤¥®¥³Çä¤ê
++¤¤¤­¤Î¤¤¤¤¤Ë¤»¤®¤³ #JN À¤­¤ÎÎɤ¤µ¶¥®¥³
++¤¤¤¯ #C5r À¤¯
++¤¤¤¯¤Ê¤¤ #CJ ¥¤¥¯¥Ê¥¤¡ª¡ª
++¤¤¤¯¤Ê¤¤ #CJ Ž²Ž¸ŽÅŽ²!!
++¤¤¤±¤Ì¤Þ #T35 ÃÓ¾Â
++¤¤¤±¤Í¡¼¤è #JN ¥¤¥±¥Í¡¼¥è
++¤¤¤±¤á¤ó #T35 ÃÓÌÍ
++¤¤¤±¤á¤ó¤¦¤ó¤³ #JN ¤¤¤±¤á¤ó¥¦¥ó¥³
++¤¤¤³¡¼¤¯¤³¤Æ¤Ê¡¼¤³¤â¤Ò¤ã #JN ¥¤¥³¡¼¥¯¡¦¥³¥Æ¥Ê¡¼¡¦¥³¥â¥Ò¥ã
++¤¤¤³¤ª¤ë¤Ð¤« #T35 ¥¤¥³¡¼¥ë¥Ð¥«
++¤¤¤³¤¯¤®¤³ #JN °Û¹ñµ¼¸Å
++¤¤¤·¤«¤ï #T35 ÀÐÀî
++¤¤¤·¤«¤ï¤Ã¤Æ¤¦¤ó¤³¤¹¤ë¤Î #CJ ÀÐÀî¤Ã¤Æ¥¦¥ó¥³¤¹¤ë¤Î¡©
++¤¤¤·¤ã #T35 °å¼Ô
++¤¤¤·¤ä¤­¤¤¤â¤¦¤ê #JN ÀоƤ¤¤âÇä¤ê
++¤¤¤¸¤á¤Ê¤¤¡¼¤Ç¤Í #JN ¥¤¥¸¡¦¥á¡¦¥Ê¥¤¥Ç¡¼¥Í
++¤¤¤¸¤ç¤¦¤¸¤µ¤¯¤¸¤¨¤ó¤Ç¤·¤¿ #CJ (Ž¥¢ÏŽ¥)Ž²Ž¼ŽÞŽ®Ž³Ž¼ŽÞŽ»Ž¸Ž¼ŽÞŽ´ŽÝŽÃŽÞŽ¼ŽÀ
++¤¤¤¸¤ç¤¦¤¸¤µ¤¯¤¸¤¨¤ó¤Ç¤·¤¿ #CJ ¡Ê¡¦¢Ï¡¦¡ËŽ²Ž¼ŽÞŽ®Ž³Ž¼ŽÞŽ»Ž¸Ž¼ŽÞŽ´ŽÝŽÃŽÞŽ¼ŽÀ
++¤¤¤¹ #T35 °Ø»Ò
++¤¤¤¹¤É¤ó #T35 ¥¤¥¹¥É¥ó
++¤¤¤¿ #T35 ÈÄ
++¤¤¤¿¤¤ #T35 °äÂÎ
++¤¤¤¿¤«¤ó #T35 ÄË´É
++¤¤¤¿¤¬¤ª¤Á¤ë #CJ ÈĤ¬Íî¤Á¤ë
++¤¤¤¿¤¬¤­ #KK Ä˲
++¤¤¤¿¤¬¤­ #T35 Ä˲
++¤¤¤¿¤¬¤È¤Ö #CJ ÈĤ¬Èô¤Ö
++¤¤¤¿¤¯¤Í¡¼¤è #JN ¥¤¥¿¥¯¥Í¡¼¥è
++¤¤¤¿¤³¤¦¤¿¤¤¤¹¤± #T35 ÈűÂà½õ
++¤¤¤¿¤´¤Ð¤¯ #T30 ÈĸíÇú
++¤¤¤¿¤Á¤¬ #W5r ÈÄ°ã
++¤¤¤¿¤Á¤¬¤¤ #T35 Èİ㤤
++¤¤¤¿¤È¤Ð¤· #T35 ÈĤȤФ·
++¤¤¤¿¤Ë¤¤¤± #CJ ÈĤËÀ¤±¡ª
++¤¤¤¿¤á¤¤ #T35 ÈÄ̾
++¤¤¤¿¤ë¤ê¤¢¤ê¤Æ¤£ #T35 ¤¤¤¿¤ë¥ê¥¢¥ê¥Æ¥£
++¤¤¤Á #T35 1
++¤¤¤Á¤¤ #JNS »Ô°æ
++¤¤¤Á¤¤ #T35 »Ô°æ
++¤¤¤Á¤´¤»¤ó¤½¤¦ #T35 çõÀïÁè
++¤¤¤Á¤´¤Þ¤«¤¤ #T35 çõË⳦
++¤¤¤Á¤µ¤ó #JN £±¤µ¤ó
++¤¤¤Á¤µ¤ó¤Î¤ª¤«¤¢¤µ¤Þ¤Ø #CJ 1¤µ¤ó¤Î¤ªÊìÍͤØ
++¤¤¤Á¤µ¤ó¤Î¤´¤¦¤«¤¯¤Ï¤Ã¤Ô¤ç¤¦ #JN £±¤µ¤ó¤Î¹ç³Êȯɽ
++¤¤¤Á¤µ¤ó¤ò¤È¤ê¤Þ¤¯¤½¤¦¤«¤ó¤º #JN £±¤µ¤ó¤ò¼è¤ê´¬¤¯Áê´Ø¿Þ
++¤¤¤Á¤µ¤ó¤ò¤È¤ê¤Þ¤¯¤½¤¦¤«¤ó¤º #T35 £±¤µ¤ó¤ò¼è¤ê´¬¤¯Áê´Ø¿Þ
++¤¤¤Á¤Ã¤Æ¤¦¤¶¤¤¤è¤Í #JN £±¤Ã¤Æ¤¦¤¶¤¤¤è¤Í¡Á
++¤¤¤Á¤Î¤Ä¤¦¤Á¤Ò¤ç¤¦ #JN £±¤ÎÄÌÃÎɽ
++¤¤¤Á¤Î¤Ï¤« #JN £±¤ÎÊè
++¤¤¤Á¤Ï¤Ï¤ä¤¯¤·¤Í #JN £±¤ÏÁ᤯»à¤Í¡ª¡ª
++¤¤¤Á¤Ó¤Ã¤È¤µ¤Ð #T35 1bit»ª
++¤¤¤Á¤â¤¸¤Å¤Ä¤Ä¤¯¤Ã¤Æ¤Õ¤ä¤·¤¿¤¢¤¹¤­¡¼¤¢¡¼¤È #JN °ìʸ»ú¤º¤Ä¤Õ¤ä¤·¤Æºî¤Ã¤¿£Á£Á
++¤¤¤Ã¤­¤³¤¦ #T35 °ì´ü¹»
++¤¤¤Ã¤¿¤ó¤³¤ê¤ó¤º #JN Ž²Ž¯ŽÀŽÝŽºŽØŽÝŽ½ŽÞ
++¤¤¤Ã¤Á¤ã¤Ã¤Æ¤¯¤À¤µ¤¤ #JN À¤äÁ¤ã¤Ã¤Æ¤¯¤À¤µ¤¤
++¤¤¤Ã¤Á¤ã¤ó #CJ 1ch
++¤¤¤Ã¤Á¤ã¤ó #CJ 1ch.tv
++¤¤¤Ã¤Á¤ã¤ó #CJ £±¤Á¤ã¤ó
++¤¤¤Ã¤Á¤ã¤ó #T35 1ch
++¤¤¤Ã¤Á¤ã¤ó #T35 1ch.tv
++¤¤¤Ã¤Á¤ã¤ó #T35 £±¤Á¤ã¤ó
++¤¤¤Ã¤Á¤ã¤ó¤Í¤ë #CJ 1ch
++¤¤¤Ã¤Á¤ã¤ó¤Í¤ë #CJ 1ch.tv
++¤¤¤Ã¤Á¤ã¤ó¤Í¤ë #CJ £±¤Á¤ã¤ó
++¤¤¤Ã¤Á¤ã¤ó¤Í¤ë #T35 1ch
++¤¤¤Ã¤Á¤ã¤ó¤Í¤ë #T35 1ch.tv
++¤¤¤Ã¤Á¤ã¤ó¤Í¤ë #T35 £±¤Á¤ã¤ó
++¤¤¤Ã¤Æ¤¯¤ë #CJ À¤äƤ¯¤ë
++¤¤¤Ã¤Æ¤¯¤ë #kxuru À¤äƤ¯¤ë
++¤¤¤Ã¤Æ¤è¤· #CJ ¤£¤Ã¦Ó¤ç¦É
++¤¤¤Ã¤Æ¤è¤· #CJ À¤äƤ褷
++¤¤¤Ã¤Æ¤è¤·¤³¤¬¤¿¤Ò¤³¤¦¤Æ¤¤ #JN À¤äƤ褷¾®·¿Èô¹ÔÄú
++¤¤¤Ã¤Æ¤è¤·¤Ë¤ó¤Æ¤¤¤¤¤¤¤ó¤«¤¤ #JN À¤äƤ褷ǧÄê°Ñ°÷²ñ
++¤¤¤Ã¤Æ¤è¤·¤Ë¤ó¤Æ¤¤¤¤¤¤¤ó¤«¤¤ #JN À¤äƤ褷ǧÄê°Ñ°÷²ñ 
++¤¤¤Ã¤Æ¤è¤¹ #CJ À¤äƥ襹
++¤¤¤Ã¤È¤¦¤¸¤ç¤æ¤¦ #T35 °ìÅù½÷Í¥
++¤¤¤Ã¤Ñ¤Ä¤À¤±¤Ê¤é¤´¤·¤ã #CJ °ìȯ¤À¤±¤Ê¤é¸í¼Í
++¤¤¤Ã¤Ñ¤ó¤­¤ã¤¯ #T35 °ìÈ̵Ò
++¤¤¤Ã¤Ñ¤ó¤¸¤ó #T35 °ìÈÌ¿Í
++¤¤¤Ä¤â¤³¤³¤«¤é #JN ¤¤¤Ä¤â¤³¤³¤«¤é
++¤¤¤Æ¤ó¤·¤Þ¤·¤¿ #CJ °Üž¤·¤Þ¤·¤¿
++¤¤¤Æ¤ó¤·¤Þ¤·¤¿ #T35 °Üž¤·¤Þ¤·¤¿
++¤¤¤Ç¤Û¤½ #JN ÅÁÀâµð¿ÀŽ²ŽÃŽÞŽÎŽ¿
++¤¤¤Ç¤Û¤½ #JN Ž²ŽÃŽÞŽÎŽ¿
++¤¤¤È¤¦¤¯¤ó #JN °ËÆ£·¯
++¤¤¤È¤¦¤¯¤ó #JN °ËÆ£·¯ 
++¤¤¤Ê¤«¤â¤Ê¡¼ #JN Åļ˥â¥Ê¡¼
++¤¤¤Ê¤¬¤­¤á¤ó¤Ð¡¼ #T35 °ð³À¥á¥ó¥Ð¡¼
++¤¤¤Ê¤¬¤­¤á¤ó¤Ð¤¢ #T35 °ð³À¥á¥ó¥Ð¡¼
++¤¤¤Ê¤´ #T35 175
++¤¤¤Ê¤´ #T35 ¥¤¥Ê¥´
++¤¤¤Ê¤´ #T35 éû
++¤¤¤Ë¤Í¤³ #JN ini¤Í¤³
++¤¤¤Ì #CN ¸¤
++¤¤¤Ì #KK ¸¤
++¤¤¤Ì #T35 ¸¤
++¤¤¤Ì¤³¤¦¤Ü¤¦ #JN ¸¤¸ø˾
++¤¤¤Ì¤»¤ó¤»¤¤ #T35 ¸¤ÀèÀ¸
++¤¤¤Ì¤Á¤å¤¦ #T35 ¸¤¿ß
++¤¤¤Ì¤ä¤Þ¤Ð¤· #JN ¸¤»³¶¶
++¤¤¤Î¤¨¤â¤ó #T35 ¤¤¤Î¤¨¤â¤ó
++¤¤¤Î¤¬¤·¤é¡¼ #JN ¥¤¥Î¥¬¥·¥é¡¼
++¤¤¤Î¤­¤¹¤ì #T35 ÃöÌÚ¥¹¥ì
++¤¤¤Î¤­¤Î¤Ç¤ó¤ï #JN ¤¤¤Î¤­¤ÎÅÅÏÃ
++¤¤¤Î¤±¤ó #JN ¥¤¥Î¥±¥ó
++¤¤¤Î¤Á¤Î¤Ç¤ó¤ï #JN ¤¤¤Î¤Á¤ÎÅÅÏÃ
++¤¤¤Ð¤·¤ç¤Í¡¼¤è #JN µï¾ì½ê¥Í¡¼¥è
++¤¤¤Ñ¡¼¤¤ #T15 ¥¤¥Ñ¡¼¥¤
++¤¤¤Ñ¡¼¤¤ #T35 ¥¤¥Ñ¡¼¥¤
++¤¤¤Þ¤¤¤°¤ó¤À¤ó #JN º£°æ·³ÃÄ
++¤¤¤Þ¤¤¤â¤Ê¡¼ #JN º£°æ¥â¥Ê¡¼
++¤¤¤Þ¤ª¤«¤â¤Ê¡¼ #JN ¥¤¥Þ¥ª¥«¥â¥Ê¡¼
++¤¤¤Þ¤ª¤«¤â¤Ê¡¼ #T35 ¥¤¥Þ¥ª¥«¥â¥Ê¡¼
++¤¤¤Þ¤ª¤«¤â¤Ê¤¢ #T35 ¥¤¥Þ¥ª¥«¥â¥Ê¡¼
++¤¤¤Þ¤½¤«¤ê #CJ ¤¤¤Þ¤½¤«¤ê
++¤¤¤Þ¤Î¤¦¤Á #JN ¥¤¥Þ¥Î¥¦¥Á
++¤¤¤Þ¤Î¤¦¤Á¤ª¤Ë¤®¤ê¤Ð¡¼¤¸¤ç¤ó #JN ¥¤¥Þ¥Î¥¦¥Á¡¦¤ª¤Ë¤®¤ê¥Ð¡¼¥¸¥ç¥ó
++¤¤¤Þ¤Î¤¦¤Á¤Ô¤«¤¡ #JN Ž²ŽÏŽÉŽ³ŽÁ¥Ô¥«¥¡!
++¤¤¤á¤Ì¤Ï¤¸¤­ #T35 ime.nuÃƤ­
++¤¤¤â #CN °ò
++¤¤¤â #T35 °ò
++¤¤¤â¤¦¤È #T35 Ëå
++¤¤¤ä¤·¤±¤¤ #JN Ìþ¤··Ï
++¤¤¤ä¤É¤ó #CJ ¡Ê¡¦£Á¡¦¡ËŽ²ŽÔŽÄŽÞŽÝ!!
++¤¤¤ä¤Þ¤Ã¤¿¤¯ #JN ¨¬Ï¯À¸
++¤¤¤ä¤Þ¤Ã¤¿¤¯ #JN Ž¨Ž¬ŽÏŽ¯ŽÀŽ¸
++¤¤¤è¤¦ #JN ¤£¤ç¤¥
++¤¤¤è¤¦ #JN ¥¤¤ç¤¥
++¤¤¤é¤Ê¤¤¤ï #JN ¥¤¥é¥Ê¥¤¥ï
++¤¤¤é¤Í #JN ¡ÊŽß­ùŽß¡ËŽ²Ž×ŽÈ
++¤¤¤é¤Í #JN Ž²Ž×ŽÈ
++¤¤¤é¤Í¡¼¤è #JN ¥¤¥é¥Í¡¼¥è
++¤¤¤é¤Í¡¼¤è¤«¤¹¤¿¤à #JN ¥¤¥é¥Í¡¼¥è¥«¥¹¥¿¥à
++¤¤¤é¤Í¡¼¤ë #JN ¥¤¥é¥Í¡¼¥ë
++¤¤¤é¤Í¤¸¤å¤Ë¤¢ #JN ¥¤¥é¥Í¥¸¥å¥Ë¥¢
++¤¤¤ê¤¢¤µ¤ó #JN Iria¤µ¤ó
++¤¤¤ë¤Í #JN ¡ÊŽß§ØŽß)Ž²ŽÙŽÈ
++¤¤¤ë¤Í #JN Ž²ŽÙŽÈ
++¤¤¤ë¤Ó¤Í #T35 ¤¤¤ë¤Ó¤Í
++¤¤¤ì¤°¤¤ #T35 Æþ¤ì¶ô¤¤
++¤¤¤í¤Á¤ó¤À¤ó #T35 ¿§ÄÁÃÄ
++¤¤¤ó¤³¤«¤¤¤¸¤ó #JN ¥¤¥ó¥³²ø¿Í
++¤¤¤ó¤³¤«¤¤¤¸¤ó #T35 ¥¤¥ó¥³²ø¿Í
++¤¤¤ó¤· #T35 °ü»à
++¤¤¤ó¤Ô¤ª #T35 ¥¤¥ó¥Ô¥ª
++¤¤¤ó¤Ü¤¦ #T35 ±¢ËÅ
++¤¦¡«¤¡¡¼ #CJ ¥ô¥¡¡¼
++¤¦¡«¤¡¡¼ #CJ ¥ô¥¢¡¼
++¤¦¡«¤¡¤¤¤é¤¹ #T35 ¥ô¥¡¥¤¥é¥¹
++¤¦¡«¤¡¤« #T35 ¥ô¥¡¥«
++¤¦¡«¤¡¤«¤À #KK ¥ô¥¡¥«ÂÌ
++¤¦¡«¤¡¤«¤À #T35 ¥ô¥¡¥«ÂÌ
++¤¦¡«¤£ #JN £Ö
++¤¦¡«¤£¤¯¤È¤ê¡¼¤¾¤Ë¤Ã¤¯ #JN ¥ô¥£¥¯¥È¥ê¡¼¥¾¥Ë¥Ã¥¯
++¤¦¡«¤£¤¸¤å¤¤¤¿ #T35 ¥ô¥£¥¸¥åÈÄ
++¤¦¡«¤£¤ê¤¤ #T35 virii
++¤¦¤£¤Ê #T35 ¥¦¥£¥Ê
++¤¦¤£¤ó¤¨¤à¤¨¤Ã¤¯¤¹ #T35 WinMX
++¤¦¤£¤ó¤Ç¤£ #T35 Windy
++¤¦¤£¤ó¤É¤¥¡¼¤¯ #T35 winduke
++¤¦¤£¤ó¤É¤¦¤º #T35 Windoz
++¤¦¤§ #JN ³ª
++¤¦¤§ #JN Ž³Žª
++¤¦¤§¤¤¤È #T35 wait
++¤¦¤§¤¨¤Ï¤Ã¤Ï¤Ã¤Ï #CJ ¥¦¥§¡¼¡¢¥Ï¥Ã¥Ï¥Ã¥Ï 
++¤¦¤§¤¶¡¼¤ê¤Ý¡¼¤È #JN ¥¦¥§¥¶¡¼¡¦¥ê¥Ý¡¼¥È
++¤¦¤¨¤Î¤¯¤ê¤Ë¤Ã¤¯¤Î¤ª¤È¤³ #T35 ¾åÌ¥ê¥Ë¥Ã¥¯¤ÎÃË
++¤¦¤©¤¬ #T35 ¥¦¥©¥¬
++¤¦¤ª¡¼¤ó #T35 ¤¦¤ª¡¼¤ó
++¤¦¤ª¤ª¤ó #T35 ¤¦¤ª¡¼¤ó
++¤¦¤ª¤Ê¤ó¤«¤¹¤´¤¤¤È¤³¤í¤Ë¤Þ¤è¤¤¤³¤ó¤¸¤Þ¤Ã¤¿¤¾¤´¤ë¤¡ #JN ¤¦¤ª¡ª¤Ê¤ó¤«¤¹¤´¤¤¤È¤³¤í¤Ë̤¤¹þ¤ó¤¸¤Þ¤Ã¤¿¤¾¥´¥ë¥¡¡ª
++¤¦¤ª¤Ê¤ó¤«¤¹¤´¤¤¤È¤³¤í¤Ë¤Þ¤è¤¤¤³¤ó¤¸¤Þ¤Ã¤¿¤¾¤´¤ë¤¡ #JN ¤¦¤ª¡ª¤Ê¤ó¤«¤¹¤´¤¤¤È¤³¤í¤Ë̤¤¹þ¤ó¤¸¤Þ¤Ã¤¿¤¾ŽºŽÞŽÙŽ§¡ª 
++¤¦¤µ¤Þ¡¼ #JN (Žß§ÕŽß)Ž³Ž»ŽÏŽ°
++¤¦¤µ¤Þ¡¼ #JN ³»|
++¤¦¤µ¤Þ¡¼ #JN Ž³Ž»ŽÏ¡Ý
++¤¦¤¶ #KYT ¤¦¤¶
++¤¦¤¶¤¬¤­ #T35 ¥¦¥¶¥¬¥­
++¤¦¤·¤ª¤ó¤Ê #JN µí½÷
++¤¦¤¼¡¼ #JN (`»®¡­)Ž³Ž¾ŽÞŽ°
++¤¦¤¼¡¼ #JN ¥¦¥¼¡¼
++¤¦¤¼¡¼ #JN Ž³Ž¾ŽÞŽ°
++¤¦¤¼¡¼¤è #JN ¥¦¥¼¡¼¥è
++¤¦¤¼¤§ #CJ ¤¦¤¼¤§
++¤¦¤¼¤§¡¼ #CJ uzeeee!
++¤¦¤¼¤§¤­¤¨¤í #JN ¥¦¥¼¥§¤­¤¨¤í¡¦¡¦¡¦
++¤¦¤½¤³¡¼ #JN ¥¦¥½¥³¡¼!
++¤¦¤½¤³¡¼ #JN Ž³Ž¿ŽºŽ°!
++¤¦¤½¤Ï¤¦¤½¤Ç¤¢¤ë¤È¤ß¤Ì¤±¤ë¤Ò¤È¤Ç¤Ê¤¤¤È #CJ ¤¦¤½¤Ï¤¦¤½¤Ç¤¢¤ë¤È¸«È´¤±¤ë¿Í¤Ç¤Ê¤¤¤È
++¤¦¤½¤ä #T35 ±³²°
++¤¦¤¿¤Ë¤Ä¤Ã¤³¤ó¤Ç¤¯¤ì #JN ²Î¤Ë¥Ä¥Ã¥³¤ó¤Ç¤¯¤ì
++¤¦¤Á¤å¤¦¤«¤¤¤Ï¤Ä #T30 ±§Ã賫ȯ
++¤¦¤Á¤å¤¦¤«¤¤¤Ï¤Ä #T35 ±§Ã賫ȯ
++¤¦¤Á¤å¤¦¤ä¤Ð¤¤ #CJ ±§Ãè¥ä¥Ð¥¤
++¤¦¤Ã¤µ¤¤ #JN ¥¦¥Ã¥µ¥¤
++¤¦¤Ã¤µ¤¤¤Ï¤² #CJ ¤¦¤Ã¤µ¤¤¥Ï¥²
++¤¦¤Ã¤¿¤¨¤ë¤ê¤¢¤ë¤â¤Ê¡¼ #JN Áʤ¨¤ë¥ê¥¢¥ë¥â¥Ê¡¼
++¤¦¤Ä¤¦¤¿ #T35 ݵ²Î
++¤¦¤Ä¤¨¤â¤ó #JN ¤¦¤Ä¥¨¥â¥ó
++¤¦¤Ä¤À #KK ݵÂÇ
++¤¦¤Ä¤À #T35 ݵÂÇ
++¤¦¤Ä¤À¤·¤Î¤¦ #CJ ¤¦¤Ä¤À¤·¤Î¤¦
++¤¦¤Ä¤À¤·¤Î¤¦ #CJ ¤óÂǤĤÀ»áǾ 
++¤¦¤Ä¤À¤·¤Î¤¦ #CJ ݵ¤À»á¤Î¤¦
++¤¦¤Ä¤À¤·¤Î¤¦ #CJ ݵ¤À½ÁÇ» 
++¤¦¤Ä¤À¤·¤Î¤¦ #CJ ݵÂÇ»íǹ 
++¤¦¤Ä¤À¤·¤Î¤¦ #CJ ݵÂÌ»áǾ 
++¤¦¤Ä¤ä¤­ #JN ݵ¾Æ¤­
++¤¦¤Æ¤· #T35 ¥¦¥Æ¥·
++¤¦¤È #T35 ¥¦¥È
++¤¦¤Ê¡¼ #JN ¢º(Žß¡ýŽß)¢»Ž³ŽÅŽ°
++¤¦¤Ê¡¼ #JN Ž³ŽÅŽ°
++¤¦¤Ë #T35 ¥¦¥Ë
++¤¦¤Ë¤¯¤í #T35 ¥¦¥Ë¥¯¥í
++¤¦¤Ë¤¯¤í #T35 ¥¦¥Ë¹õ
++¤¦¤Ë¤ã¡¼ #JN ¤¦¤Ë¤ã¡Á
++¤¦¤Ë¤å¤¦ #JN ¤¦¤Ë¤å¤¦
++¤¦¤Ò¤ç¡¼ #JN ¥¦¥Ò¥ç¡¼
++¤¦¤Ò¤ç¤¹¤ì #T35 ¥¦¥Ò¥ç¥¹¥ì
++¤¦¤× #T30 ¤¦£ð
++¤¦¤× #T30 ¤¦¤×
++¤¦¤× #T35 up
++¤¦¤× #T35 ¤¦¤×
++¤¦¤×¤·¤ç¤¯¤Ë¤ó #T35 ¤¦£ð¿¦¿Í
++¤¦¤Ü¤¡¡¼ #JN ¡ÊŽß§¥Žß¡ËŽ³ŽÎŽÞŽ§Ž°
++¤¦¤Ü¤¡¡¼ #JN ¥¦¥Ü¥¡¡¼
++¤¦¤Þ¡¼ #CJ (Žß§ÕŽß)Ž³ŽÏŽ°
++¤¦¤Þ¡¼ #CJ ¡Ê¡¬§Õ¡¬¡Ë¥¦¥Þ¡¼
++¤¦¤Þ¡¼ #CJ ¡Ê¡¬§Õ¡¬¡ËŽ³ŽÏŽ°
++¤¦¤Þ¡¼ #CJ ¥¦¥Þ¡¼
++¤¦¤Þ¡¼ #JN (Žß§ÕŽß)Ž³ŽÏŽ°
++¤¦¤Þ¡¼ #JN Ž³ŽÏŽ°
++¤¦¤Þ¤¢ #CJ ¥¦¥Þ¡¼
++¤¦¤Þ¤¤¤Ü¤¦ #JN ¤¦¤Þ¤¤¤Ü¤¦
++¤¦¤Þ¤¤¤Ü¤¦ #KK ¤¦¤Þ¤¤ËÀ
++¤¦¤Þ¤¤¤Ü¤¦ #T35 ¤¦¤Þ¤¤ËÀ
++¤¦¤Þ¤Ê¤ê #T35 ÇÏÌé
++¤¦¤â¤¦¤è¤ê¤â¤«¤ë¤¯¤Á¤â¤«¤è¤Ã¤Æ¤¤¤Ê¤¤ #CJ ±©ÌÓ¤è¤ê¤â·Ú¤¯¡¢·ì¤âÄ̤äƤ¤¤Ê¤¤
++¤¦¤â¤©¡¼ #JN ¥¦¥â¥©¡¼
++¤¦¤â¤©¡¼ #JN Ž³ŽÓŽ«Ž°
++¤¦¤è #T35 ¥¦¥è
++¤¦¤è¤Ã¤Æ¤ë #T35 ±¦Íã¤Ã¤Æ¤ë
++¤¦¤é¤¢¤ª #T35 ΢ÀÄ
++¤¦¤é¤¢¤¯¤Þ¤Á¤ç¤¦¤¸¤ó #T35 ΢°­ËâĶ¿Í
++¤¦¤é¤¨¤í #T35 ¥¦¥é¥¨¥í
++¤¦¤é¤Ë¤Á¤ã¤ó #KK ΢£²¤Á¤ã¤ó
++¤¦¤é¤Ë¤Á¤ã¤ó #T35 ΢2¤Á¤ã¤ó
++¤¦¤é¤Ë¤Á¤ã¤ó #T35 ΢£²¤Á¤ã¤ó
++¤¦¤é¤Ï¤é #T35 ΢ʢ
++¤¦¤é¤Ü¤ó #T35 ΢ËÞ
++¤¦¤é¤Ü¤ó #T35 ΢Ëß
++¤¦¤é¤Ü¤ó #T35 â³ÍöËß
++¤¦¤é¤é¡¼ #JN ¥¦¥é¥é¡¼
++¤¦¤ê¤¸¤Ê¤ë #T35 ¥¦¥ê¥¸¥Ê¥ë
++¤¦¤ê¤Ê¤é #T35 ¥¦¥ê¥Ê¥é
++¤¦¤ê¤Ê¤é¤µ¤¤¤Ð¡¼¤Æ¤í¤À¤ó #JN ¥¦¥ê¥Ê¥é¥µ¥¤¥Ð¡¼¥Æ¥íÃÄ
++¤¦¤ê¤Ê¤é¤µ¤¤¤Ð¡¼¤Æ¤í¤À¤ó #JN Ž³ŽØŽÅŽ×Ž»Ž²ŽÊŽÞŽ°ŽÃŽÛÃÄ
++¤¦¤ê¤Ê¤é¤µ¤¤¤Ð¡¼¤Æ¤í¤À¤ó #JN Ž³ŽØŽÅŽ×Ž»Ž²ŽÊŽÞŽ°ŽÃŽÛÃÄ¡¡
++¤¦¤ë¤µ¤¤¤Ï¤¨¤À¤Ê¤¢ #JN ¤¦¤ë¤µ¤¤Çè¤À¤Ê¤¡
++¤¦¤ë¤»¡¼¤Ð¤« #JN ¤¦¤ë¤»¡¼Çϼ¯¡ª
++¤¦¤ë¤»¤¨¤Ð¤« #CJ ¤¦¤ë¤»¡¼Çϼ¯
++¤¦¤ë¤È¤é¤Þ¤½ #JN Ž³ŽÙŽÄŽ×ŽÏŽ¿
++¤¦¤ë¤Þ¤é¤Þ¤ó #JN ¥¦¥ë¥Þ¥é¥Þ¥ó
++¤¦¤ë¤â¤é¤Þ¤ó #JN ¥¦¥ë¥â¥é¥Þ¥ó
++¤¦¤í¡¼¤ó #JN ¥¦¥í¡¼¥ó
++¤¦¤ï¤¡¤¡¤ó #CJ ¥¦¥ï¥¡¥¡¥ó
++¤¦¤ï¤¡¤¡¤ó #CJ Ž³ŽÜŽ§Ž§ŽÝ
++¤¦¤ï¤Ê¤Ë #CJ ¤¦¤ï¡¢¤Ê¤Ë¡©
++¤¦¤ó¤³ #T35 ¥¦¥ó»Ò
++¤¦¤ó¤³¡¼ #JN ¥¦¥ó¥³¡¼!
++¤¦¤ó¤³¡¼ #JN Ž³ŽÝŽºŽ°!
++¤¦¤ó¤³¤¤¤¿ #CN ¥¦¥ó¥³ÈÄ
++¤¦¤ó¤³¤¤¤¿ #T35 ¥¦¥ó¥³ÈÄ
++¤¦¤ó¤³¤Ç¤­¤¿¤è¡¼ #JN ¥¦¥ó¥³¤Ç¤­¤¿¤è¡¼¡ª¡ª
++¤¨¡¼ #JN ¥¨¡¼
++¤¨¡¼¤¨¡¼ #T35 £Á£Á
++¤¨¡¼¤¸¤ã¤Ê¤¤¤« #T35 ¤ñ~¤Â¤ã¤Ê¤ð¤«
++¤¨¤¢¤¨¤Ã¤¸¤¬¤á #JN airH"Ž¶ŽÞŽÒ
++¤¨¤¢¤À¤ó #T35 ¥¨¥¢¥À¥ó
++¤¨¤¤¤¨¤ó #T35 ¤¨¤¤¤¨¤ó
++¤¨¤¤¤®¤ç¤¦¤â¤Ê¡¼ #JN ±Ä¶È¥â¥Ê¡¼
++¤¨¤¤¤±¤Ë¤¹¤È #T35 ¥¨¥¤¥±¥Ë¥¹¥È
++¤¨¤¤¤»¤¤ #T35 ±ÊÀÂ
++¤¨¤¤¤Á¤Æ¤£¡¼¤¨¤à¤¨¤ë¤« #T30 html²½
++¤¨¤¤¤Á¤Æ¤£¤Æ¤£¤Ô¤£¤ì¡¼¤¶¡¼ #JN http¥ì¡¼¥¶¡¼
++¤¨¤¤¤Ù¤Ã¤¯¤½ #KK ¥¨¥¤¥Ù¥Ã¥¯¥½
++¤¨¤¤¤Ù¤Ã¤¯¤½ #KK ¥¨¥¤¥Ù¥Ãʵ
++¤¨¤¤¤ê¤¦¤ï¤¡¤¡¤ó #JN ¥¨¥¤¥ê¥¦¥ï¥¢¥¡¥ó
++¤¨¤¤¤ê¤¦¤ï¤¡¤¡¤ó #JN Ž´Ž²ŽØŽ³ŽÜŽ±Ž§ŽÝ
++¤¨¤¤¤ê¤¦¤ï¤¡¤¡¤ó #JN Ž´Ž²ŽØŽ³ŽÜŽ±Ž§ŽÝ 
++¤¨¤¨¤¸¤ã¤Ê¤¤¤« #T35 ¤ñ~¤Â¤ã¤Ê¤ð¤«
++¤¨¤­¤Ù¤½ #CN ¥¨¥­¥Ù¥½
++¤¨¤­¤Ù¤½ #T35 ¥¨¥­¥Ù¥½
++¤¨¤­¤Ù¤ó #CN ±ÕÊØ
++¤¨¤­¤Ù¤ó #CN ±ÖÊØ
++¤¨¤­¤Ù¤ó #CN ±ØÊÛ
++¤¨¤­¤Ù¤ó #T35 ±ÕÊØ
++¤¨¤­¤Ù¤ó #T35 ±ÖÊØ
++¤¨¤­¤Ù¤ó #T35 ±ØÊÛ
++¤¨¤­¤Ù¤ó¤À¤¤¤¬¤¯ #CN ±ØÊÛÂç³Ø
++¤¨¤­¤Ù¤ó¤À¤¤¤¬¤¯ #T35 ±ØÊÛÂç³Ø
++¤¨¤¯¤·¡¼¤É¤®¤ë¤¹ #JN ¥¨¥¯¥·¡¼¥É¥®¥ë¥¹
++¤¨¤¯¤¹¤×¤í¤¤¤Æ¤Ã¤É #JN exploited
++¤¨¤°¤¼¤Í¤³ #JN exe¤Í¤³
++¤¨¤¸¤ê¤¿¤ó #JN ¥¨¥Â¥ê¤¿¤ó
++¤¨¤¹¤¨¤à¤¤¤¤ #T35 $ME
++¤¨¤¹¤«¤ì¤¿¡¼ #T35 ¥¨¥¹¥«¥ì¥¿¡¼
++¤¨¤¹¤È¤·¡¼¤â¤¢¤¢¤é¤· #JN ¥¨¥¹¥È¥·¡¼¥â¥¢¹Ó¤é¤·
++¤¨¤À¤²¤ó¤Ê #CJ »ÞÌÓ¤ó¤Ê
++¤¨¤Ã¤¯¤¹¤®¤³ #JN X¥®¥³¡¡
++¤¨¤Ä¤³ #JN ¥¨¥Ä¥³
++¤¨¤È¤¦ #JN ¹¾ÆÚ
++¤¨¤È¤¦ #JNS ¹¾ÆÚ
++¤¨¤È¤ó #JN ¹¾ÆÚ
++¤¨¤È¤ó #JNS ¹¾ÆÚ
++¤¨¤Ê¤ê #JN ¤¨¤Ê¤ê
++¤¨¤Ê¤ê¤«¤º¤­ #JN ¤¨¤Ê¤ê¤«¤º¤­
++¤¨¤Ë¤¯¤½ #KK ¥¨¥Ë¥¯¥½
++¤¨¤Ë¤¯¤½ #T35 ¥¨¥Ë¥¯¥½
++¤¨¤Ì¤¸¤¤¤ï¤¢¤É #T35 NG¥ï¡¼¥É
++¤¨¤Ì¤¹¤Æ #T35 £Î¥¹¥Æ
++¤¨¤Ì¤Ë¤Á¤ë¤¦¤ë #T35 nÆü¥ë¡¼¥ë
++¤¨¤Ì¤ï¤¤¤Á¤å¤¦ #T35 ny¿ß
++¤¨¤Ò¤á #CN °¦É²
++¤¨¤Ó¤Õ¤é¤¤¤ï¤Ã¤·¤ç¤¤ #JN ¥¨¥Ó¥Õ¥é¥¤¥ï¥Ã¥·¥ç¥¤¡ª¡ª
++¤¨¤Õ¤¨¤¤ #CJ FA
++¤¨¤Õ¤¨¤¤ #CJ FA?
++¤¨¤Õ¤é¤ó¤¯ #T35 F¥é¥ó¥¯
++¤¨¤Ö¡¼¤¤ #T35 ¤¨¤Ö¡¼¤¤
++¤¨¤Ö¤¦¤¤ #T35 ¤¨¤Ö¡¼¤¤
++¤¨¤ß¤å #T35 ¤¨¤ß¤å
++¤¨¤à¤¨¤¨¤¯¤¹ #KK ¥¨¥à¥¨¡¼¥¯¥¹
++¤¨¤à¤¨¤¨¤¯¤¹ #KK Ž´ŽÑŽ´Ž°Ž¸Ž½
++¤¨¤à¤¨¤Ã¤¯¤¹ #T35 MX
++¤¨¤à¤¨¤Ã¤¯¤¹¤µ¤ó #JN £Í£Ø¤µ¤ó
++¤¨¤à¤¨¤Ã¤¯¤¹¤µ¤ó¤È¤³¤Þ¤ë #JN £Í£Ø¤µ¤ó¤È¥³¥Þ¥ë
++¤¨¤à¤¨¤Ã¤¯¤¹¤Á¤å¤¦ #T35 MX¿ß
++¤¨¤à¤¨¤à¤¢¤¢¤ë #T35 MMR
++¤¨¤à¤¨¤à¤¢¤¢¤ë¤³¤Ô¤Ú #CJ MMR¥³¥Ô¥Ú
++¤¨¤à¤¹¤Æ #T35 M¥¹¥Æ
++¤¨¤à¤Ö¤Á¤ç¤¦ #JN £ÍÉôĹ
++¤¨¤â¤é #JN ¥ñ¥â¥é
++¤¨¤ê #JN ¶ß
++¤¨¤ê #T35 ¶ß
++¤¨¤ê¤Á¤ó #JN ¥¨¥ê¥Ä¥£¥ó
++¤¨¤ê¤Ä¤£¤ó #JN ¤¨¤êÄÁ
++¤¨¤ì¤¯¤½ #T35 ¥¨¥ìʵ
++¤¨¤ì¤¯¤½ #T35 ¥¨¥ìʵ¡¼¥ó
++¤¨¤ì¤¯¤½¤ª¤ó #T35 ¥¨¥ìʵ
++¤¨¤ì¤¯¤½¤ª¤ó #T35 ¥¨¥ìʵ¡¼¥ó
++¤¨¤í¤¨¤í¤»¤ó¤¿¤¤¤º¤ê¤»¤ó¤¸¤ã¤¢ #T35 ¥¨¥í¥¨¥íÀïÂ⥺¥ê¥»¥ó¥¸¥ã¡¼
++¤¨¤í¤² #T30 ¥¨¥í¥²
++¤¨¤í¤² #T35 ¥¨¥í¥²
++¤¨¤í¤²¤ª¤¿¤¤¤Ä¤Ä¤Î¤Á¤«¤¤ #T35 ¥¨¥í¥²¥ª¥¿£µ¤Ä¤ÎÀÀ¤¤
++¤¨¤í¤²¤ò¤¿¤Ü¤¯¤á¤Ä¤¦¤ó¤É¤¦¤« #KK ¥¨¥í¥²¥ò¥¿ËÐÌDZ¿Æ°²È
++¤¨¤í¤²¤ó¤¬¡¼ #T35 ¥¨¥í¥²¥ó¥¬¡¼
++¤¨¤í¤²¤ó¤¬¤¢ #T35 ¥¨¥í¥²¥ó¥¬¡¼
++¤¨¤í¤º¤ê¡¼ #JN ¥¨¥í¥º¥ê¡¼
++¤¨¤í¤Ã¤¯¤¹ #T35 erox
++¤¨¤í¤Ü¤¯ #KK ¥¨¥íËÐ
++¤¨¤ó¤¤¡¼ #T30 ¤¨¤ó¤¤¡¼
++¤¨¤ó¤¤¡¼ #T35 ¤¨¤ó¤¤¡¼
++¤¨¤ó¤¤¤¤ #T35 ¤¨¤ó¤¤¡¼
++¤¨¤ó¤«¤«¤·¤å¤·¤£¤Á¤ã¤ó #JN ±é²Î²Î¼ê¤·¤£¤Á¤ã¤ó
++¤¨¤ó¤³¤¦¤É #T35 ±ç¸ò¡î
++¤¨¤ó¤¸¤ó¤ª¤¦ #JN ¥¨¥ó¥¸¥ó²¦
++¤ª¡¼¤¨¤¤¤Á¤Ô¡¼ #T35 £Ï£È£Ð
++¤ª¤¢¤¤¤½¤æ¡¼¤Û¡¼ #JN ¤ª¤¢¤¤¤½¥æ¡¼¥Û¡¼
++¤ª¤¤¤ª¤¤¤Ë¤å¡¼¤¹¤ß¤¿ #CJ ¤ª¤¤¤ª¤¤¡¢¥Ë¥å¡¼¥¹¸«¤¿¡©
++¤ª¤¤¤ª¤Þ¤¨¤é #CJ ¤ª¤¤¡¢¤ªÁ°¤é
++¤ª¤¤¤¹¤¿¡¼¤µ¤¯¤»¤ó #T35 ¥ª¥¤¥¹¥¿¡¼ºîÀï
++¤ª¤¤¤¹¤¿¤¢¤µ¤¯¤»¤ó #T35 ¥ª¥¤¥¹¥¿¡¼ºîÀï
++¤ª¤¤¤Ê¤ê¤â¤Ê¡¼ #JN ¤ª¤¤¤Ê¤ê¥â¥Ê¡¼
++¤ª¤¤¤à #T35 ¥ª¥¤¥à
++¤ª¤¤¤é #T35 ¤ª¤¤¤é
++¤ª¤¦¤´¤ó¤Á¤å¤¦ #T35 ²«¶â¿ß
++¤ª¤¦¤É¤¦¤á¤¬¤ß #KK ²¦Æ»½÷¿À
++¤ª¤ª¤®¤³¤Ö¤Á¤ç¤¦ #JN Â祮¥³ÉôĹ
++¤ª¤ª¤³¤ß¤ß¤Ï¤ó¤Æ¤ó #JN Âç¾®¼ªÈÓŹ
++¤ª¤ª¤Ã #JN ŽµŽµ¥Ã¡ª
++¤ª¤ª¤Ä¤­ #JN ¥ª¥ª¥Ä¥­
++¤ª¤ª¤Ä¤­ #JN ŽµŽµŽÂŽ·
++¤ª¤ª¤Ç¤£¤¨¤ó¤¹ #T35 ¥ª¡¼¥Ç¥£¥¨¥ó¥¹
++¤ª¤ª¤È¤³¤ó¤×¤ê¤¤¤È #T35 ¥ª¡¼¥È¥³¥ó¥×¥ê¡¼¥È
++¤ª¤ª¤È¤ê #KK ˱
++¤ª¤ª¤È¤ê #T35 ˱
++¤ª¤ª¤ß¤ß¤â¤Ê¡¼ #JN Â缪¥â¥Ê¡¼
++¤ª¤ª¤ß¤ß¤â¤Ê¤ß #JN Â缪˨ÆàÈþ
++¤ª¤ª¤ß¤ß¤â¤é¤é¡¼ #JN Â缪¥â¥é¥é¡¼
++¤ª¤ª¤â¤ê¤³¤¤¤ó #T35 Â翹¥³¥¤¥ó
++¤ª¤«¤®¤³¤­¤ç¤¦¤¸¤å #JN ¥ª¥«¥®¥³¶µ¼ø
++¤ª¤«¤·¤¤¤Ç¤¹¤è¤«¤Æ¤¸¤Ê¤µ¤ó #CJ ¤ª¤«¤·¤¤¤Ç¤¹¤è¡ª¥«¥Æ¥¸¥Ê¤µ¤ó¡ª¡ª
++¤ª¤«¤ß #JN ¤ª¤«¤ß
++¤ª¤«¤ä¤ó #JN µ¶ÔÝ¡¡
++¤ª¤«¤ä¤ó #JN ŽµŽ¶ŽÔŽÝ¡¡
++¤ª¤«¤ì¤¹ #T35 ²¬¥ì¥¹
++¤ª¤¬¤ï #T35 ¾®Àî
++¤ª¤¯ #T35 ±ü
++¤ª¤¯¤ì¤¹ #T35 Ã٥쥹
++¤ª¤°¤ê #T35 ¾®·ª
++¤ª¤±¤¤¤Ï¤ó #JN ¤ª¤±¤¤¤Ï¤ó
++¤ª¤±¤¤¤Ï¤ó #T35 ¤ª¤±¤¤¤Ï¤ó
++¤ª¤²¤Þ¤ó #T35 ¥ª¥²¥Þ¥ó
++¤ª¤³¤Î¤ß¤¸¤ç¤¦¤æ #JN ¤ª¹¥¤ß¾ßÌý
++¤ª¤µ¤·¤ß¤â¤Ê¡¼ #JN ¤ª¤µ¤·¤ß¥â¥Ê¡¼
++¤ª¤µ¤Õ¤Í¡¼¤è¤«¤Ã¤³¤¦¤£¤º¤â¤Æ¤Í¡¼¤è¤È¤¸¤«¤Ã¤³ #JN ¥ª¥µ¥Õ¥Í¡¼¥è¡Êwith¡¡¥â¥Æ¥Í¡¼¥è¡Ë
++¤ª¤µ¤Þ¤Ó¤ó¤é¤Ç¤£¤ó #JN ¥ª¥µ¥Þ¥Ó¥ó¥é¥Ç¥£¥ó
++¤ª¤µ¤é¡¼ #JN ¤ª»®¡¼
++¤ª¤µ¤é¡¼ #JN ¤ª»®¡¼ 
++¤ª¤µ¤ì #T30 ¥ª¥µ¥ì
++¤ª¤¶¤ï¤â¤Ê¤« #JN ¾®Âô¥â¥Ê¥«
++¤ª¤·¤¨¤Æ¤¯¤ó #T35 ¶µ¤¨¤Æ·¯
++¤ª¤·¤ª #JN ¤ª±ö
++¤ª¤·¤ª #T35 ¤ª±ö
++¤ª¤·¤ê¤¹ #JN ¥ª¥·¥ê¥¹
++¤ª¤·¤ê¤Ú¤ó¤Ú¤ó #CJ ¥ª¥·¥ê¥Ú¥ó¥Ú¥ó! 
++¤ª¤·¤ê¤Ú¤ó¤Ú¤ó #CJ ŽµŽ¼ŽØŽÍŽßŽÝŽÍŽßŽÝ! 
++¤ª¤·¤ê¤ò¤ª¤¬¤à¤¤¤¤¤ó¤«¤¤ #JN ¡ú¡ú¡ú¤ª¿¬¤òÇÒ¤à°Ñ°÷²ñ¡ú¡ú¡ú
++¤ª¤·¤ê¤ò¤ª¤¬¤à¤¤¤¤¤ó¤«¤¤ #JN ¡ú¡ú¡ú¤ª¿¬¤òÇÒ¤à°Ñ°÷²ñ¡ú¡ú¡ú 
++¤ª¤¸¤ã¤Þ¤¸¤ç #JN ¤ª¥¸¥ãËâ½÷
++¤ª¤¸¤ó¤¬¡¼¤¼¤Ã¤È #JN ¥ª¥¸¥ó¥¬¡¼Z
++¤ª¤¸¤ó¤¬¤¢¤¼¤Ã¤È #JN ¥ª¥¸¥ó¥¬¡¼Z
++¤ª¤¹¤® #T35 ¤ª¿ù
++¤ª¤»¡¼¤í #CJ ¤ª¤»¡¼¤í
++¤ª¤»¤¨¤í #CJ ¤ª¤»¡¼¤í
++¤ª¤»¤í¤Ç¤â¤·¤è¤¦¤è #CJ ¥ª¥»¥í¤Ç¤â¤·¤è¤¦¤è
++¤ª¤½¤ì¤¹ #T35 Ã٥쥹
++¤ª¤¿¤¬¤ê #T35 ¥ª¥¿¼í¤ê
++¤ª¤¿¤­¤å¤¦ #KK ¥ò¥¿µÞ
++¤ª¤¿¤­¤å¤¦ #T35 ¥ò¥¿µÞ
++¤ª¤¿¤·¤å¤¦ #T35 ¥ª¥¿½­
++¤ª¤¿¤À¤¤¤·¤å¤¦¤´¤¦ #JN ¥ª¥¿Â罸¹ç
++¤ª¤¿¤ë¤Ã¤¯ #T35 ¥ª¥¿¥ë¥Ã¥¯
++¤ª¤À¤®¤ê¤â¤Ê¡¼ #JN ¥ª¥À¥®¥ê¥â¥Ê¡¼
++¤ª¤Á¤ã¤Î¤Þ #JN ¤ªÃã¤Î´Ö
++¤ª¤Ã¤È¡¼¤Á¤ã¤ó #JN ¥ª¥Ã¥È¡¼¤Á¤ã¤ó
++¤ª¤Ä #T35 ²µ
++¤ª¤Ä¤«¤¤ #KK ²µ²ñ
++¤ª¤Ä¤«¤ì¡¼ #CJ ²µ¥«¥ì¡¼
++¤ª¤Ä¤«¤ì¡¼ #T35 ²µ¥«¥ì¡¼
++¤ª¤Ä¤«¤ì¤¨ #T35 ²µ¥«¥ì¡¼
++¤ª¤Ä¤È¤«¤¤¤Ã¤¿¤ä¤Ä¤·¤Í #CJ ²µ¤È¤«¸À¤Ã¤¿ÅÛ»à¤Í
++¤ª¤Å¤é #JN ¥ª¥Å¥é
++¤ª¤Ç¤¸¡¼¤É #JN ¥ª¥Ç¥¸¡¼¥É
++¤ª¤Ç¤ó #T35 ¤ª¤Ç¤ó
++¤ª¤Ç¤ó¤Þ¤ó #JN ¤ª¤Ç¤ó¥Þ¥ó
++¤ª¤Ç¤ó¤Þ¤ó #T35 ¤ª¤Ç¤ó¤Þ¤ó
++¤ª¤È¡¼¤Á¤ã¤ó¤Ü¤Ã¤­¤·¤ç¤¦¤¬¤¤ #JN ¤ª¤È¡¼¤Á¤ã¤óËÖµ¯¾ã³²
++¤ª¤È¤¦¤Õ #JN ¤ª¤È¤¦¤Õ
++¤ª¤È¤³¤É¤ó #T35 ´ÁЧ
++¤ª¤È¤¸¤ã #T35 Äï¼Ô
++¤ª¤È¤¿¤± #JN £ÚÉð
++¤ª¤È¤¿¤± #JNS ¥ª¥È¥¿¥±
++¤ª¤È¤¿¤± #T35 £Ú¼°
++¤ª¤È¤¿¤± #T35 £ÚÉð
++¤ª¤È¤¿¤±¤¤ #JN ¥ª¥È¥¿·º
++¤ª¤È¤¿¤±¤¤ #T30 ¥ª¥È¥¿·º
++¤ª¤È¤¿¤±¤¤ #T35 ¥ª¥È¥¿·º
++¤ª¤È¤¿¤±¤²¤ó¤¹¤¤ #JN ¥ª¥È¥¿¥±¸µ¿ã
++¤ª¤È¤Ê #T35 ¤ò¤È¤Ê
++¤ª¤È¤Ê¤Î¤®¤³¤®¤³¤¿ #JN Âç¿Í¤Îµ¼¸Å¥®¥³ÂÀ
++¤ª¤È¤Þ¤ë #JN £Ú´Ý
++¤ª¤È¤á #T35 ´Á½÷
++¤ª¤É¤ê #T35 ¤ª¤É¤ê
++¤ª¤Ê #CJ ¤ª¤Ê
++¤ª¤Ê¡¼¤Ë #T30 ¥ª¥Ê¡¼¥Ë
++¤ª¤Ê¡¼¤Ë #T30 ŽµŽÅŽ°ŽÆ
++¤ª¤Ê¤¬¤¤¤·¤Þ¤¹ #CJ ¤ª¤Ê¤¬¤¤¤·¤Þ¤¹
++¤ª¤Ê¤¬¤¤¤·¤Þ¤¹ #JN ¤ª¤Ê¤¬¤¤¤·¤Þ¤¹¡¡
++¤ª¤Ê¤·¤å¤ß #CJ ¤ª¤Ê¼ñÌ£
++¤ª¤Ê¤·¤å¤ß #T35 ¤ª¤Ê¼ñÌ£
++¤ª¤Ê¤Ë¡¼ #T30 ¥ª¥Ê¥Ë¡¼
++¤ª¤Ê¤Ë¤¤¤¹¤ì #T35 ¥ª¥Ê¥Ë¡¼¥¹¥ì
++¤ª¤Ê¤Ë¤¹¤È #T35 ¥ª¥Ê¥Ë¥¹¥È
++¤ª¤Ê¤Ì¡¼ #T30 ¥ª¥Ê¥Ì¡¼
++¤ª¤Ê¤Ì¡¼ #T30 ŽµŽÅŽÇŽ°
++¤ª¤Ë¤¤¤Ë¤ï¤Ã¤Á¤ç¤¤ #JN ¤ª¤Ë¡¼¤Ë¥ï¥Ã¥Á¥ç¥¤
++¤ª¤Ë¤®¤ê #JN ¤ª¤Ë¤®¤ê
++¤ª¤Ë¤®¤ê¤¦¤À¤¤¤¸¤ó #JN ¤ª¤Ë¤®¤ê±¦Âç¿Ã
++¤ª¤Ë¤®¤ê¤¬¤Ê¡¼ #JN ¤ª¤Ë¤®¤ê¥¬¥Ê¡¼
++¤ª¤Ë¤®¤ê¤¸¤¤¤µ¤ó #JN ¤ª¤Ë¤®¤ê¤¸¤¤¤µ¤ó
++¤ª¤Ë¤®¤ê¤¸¤ã¤® #JN ¤ª¤Ë¤®¤ê¥¸¥ã¥®
++¤ª¤Ë¤®¤ê¤¹¤é¤¤¤à #JN ¤ª¤Ë¤®¤ê¥¹¥é¥¤¥à
++¤ª¤Ë¤®¤ê¤»¤¤¤È #JN ¤ª¤Ë¤®¤êÀ¸ÅÌ
++¤ª¤Ë¤®¤ê¤»¤ó¤è¤¦¤¢¤Ã¤¬¤¤ #JN ¤ª¤Ë¤®¤êÀìÍÑ¥¢¥Ã¥¬¥¤
++¤ª¤Ë¤®¤ê¤¿¤â¤ê #JN ¤ª¤Ë¤®¤ê¥¿¡û¥ê
++¤ª¤Ë¤®¤ê¤À¤ó #JN ¤ª¤Ë¤®¤êÃÄ
++¤ª¤Ë¤®¤ê¤Æ¤ó¤· #JN ¤ª¤Ë¤®¤êÅ·»È
++¤ª¤Ë¤®¤ê¤È¤¦ #JN ¤ª¤Ë¤®¤êÅÞ
++¤ª¤Ë¤®¤ê¤È¤¦ #JN ¤ª¤Ë¤®¤êÅÞ 
++¤ª¤Ë¤®¤ê¤Ð¤ó¤É #JN ¤ª¤Ë¤®¤ê¥Ð¥ó¥É
++¤ª¤Ë¤®¤ê¤Ò¤Ã¤­¡¼ #JN ¤ª¤Ë¤®¤ê¥Ò¥Ã¥­¡¼
++¤ª¤Ë¤®¤ê¤Û¤ó¤Ý #JN ¤ª¤Ë¤®¤êËÜÊÞ
++¤ª¤Ë¤®¤ê¤à¤­¤à¤­ #JN ¤ª¤Ë¤®¤ê¥à¥­¥à¥­
++¤ª¤Ë¤®¤ê¤â¤Ê¡¼ #JN ¤ª¤Ë¤®¤ê¥â¥Ê¡¼
++¤ª¤Ë¤®¤ê¤ï¤Ã¤Á¤ç¤¤ #JN ¥ª¥Ë¥®¥ê¥ï¥Ã¥Á¥ç¥¤
++¤ª¤Ë¤ï¤ê¡¼¤Ê #T35 ¥ª¥Ë¥ï¥ê¡¼¥Ê
++¤ª¤Ë¤ï¤ê¤¤¤Ê #T35 ¥ª¥Ë¥ï¥ê¡¼¥Ê
++¤ª¤Í #T35 ¤ª¤Í
++¤ª¤Í¤¤¤µ¤ó #T35 ¤ª¤Í¤¤¤µ¤ó
++¤ª¤Ï¤Ê¤Ð¤¿¤± #T35 ¤ª²ÖȪ
++¤ª¤Ï¤è¤¦¤¸¤ç #T35 ¤ª¤Ï¤ç¤¥¦É¡«¤ç 
++¤ª¤Ð¤Á¤ã¤ó #T35 ŽµŽÊŽÞŽÁŽ¬ŽÝ
++¤ª¤Ð¤Á¤ã¤ó #T35 ¥ª¥Ð¥Á¥ã¥ó
++¤ª¤Ð¤Á¤å¤¦ #T35 ¤ª¤Ð¿ß
++¤ª¤Ð¤Á¤å¤¦ #T35 ¥ª¥Ð¿ß
++¤ª¤Ñ¡¼¤¤ #T35 ¥ª¥Ñ¡¼¥¤
++¤ª¤Ñ¤¢¤¤ #T35 ¥ª¥Ñ¡¼¥¤
++¤ª¤Ó¤¿¤Ë¤Ý¤Ã¤È #JN ÂÓë¥Ý¥Ã¥È
++¤ª¤Õ¤«¤¤ #T30 ¥ª¥Õ²ñ
++¤ª¤Õ¤é¤¤¤ó¤Ó¤å¡¼¤ï #KK ¥ª¥Õ¥é¥¤¥ó¥Ó¥å¡¼¥ï
++¤ª¤Ö¤Ä #T35 ±øʪ
++¤ª¤Ù¤ä¤ê¡¼¤Ê #T35 ¥ª¥Ù¥ä¥ê¡¼¥Ê
++¤ª¤Ù¤ä¤ê¤¤¤Ê #T35 ¥ª¥Ù¥ä¥ê¡¼¥Ê
++¤ª¤Ù¤é¤ê¡¼¤Ê #T35 ¥ª¥Ù¥é¥ê¡¼¥Ê
++¤ª¤Ù¤é¤ê¤¤¤Ê #T35 ¥ª¥Ù¥é¥ê¡¼¥Ê
++¤ª¤Ù¤ó¤È¤¦¤¦¤¤¤ó¤Ê¤¢ #T35 ¤ªÊÛÅö¥¦¥¤¥ó¥Ê¡¼
++¤ª¤Þ¡¼¤é #T35 ¤ª¤Þ¡¼¤é
++¤ª¤Þ¤¤¤ê #JN ¤ª»²¤ê
++¤ª¤Þ¤¨¤«¤Ë¡¼ #JN ¥ª¥Þ¥¨¥«¥Ë¡¼
++¤ª¤Þ¤¨¤¬¤Æ¤Û¤ó¤ò¤ß¤»¤í¤è #CJ ¤ªÁ°¤¬¼êËܤò¸«¤»¤í¤è¡Ê¡÷£÷¹Ó
++¤ª¤Þ¤¨¤¬¤Ê¡¼ #JN ¥ª¥Þ¥¨¥¬¥Ê¡¼
++¤ª¤Þ¤¨¤¯¤Þ¡¼ #JN ¥ª¥Þ¥¨¥¯¥Þ¡¼
++¤ª¤Þ¤¨¤·¤Í¡¼ #JN ¥ª¥Þ¥¨¥·¥Í¡¼
++¤ª¤Þ¤¨¤¸¤ã¤¬¡¼ #JN ¥ª¥Þ¥¨¥¸¥ã¥¬¡¼
++¤ª¤Þ¤¨¤¸¤ã¤¬¡¼ #JN ¥ª¥Þ¥¨¥¸¥ã¥¬¡¼ 
++¤ª¤Þ¤¨¤¸¤ã¤Í¡¼¤¾ #JN ¥ª¥Þ¥¨¥¸¥ã¥Í¡¼¥¾
++¤ª¤Þ¤¨¤À¤± #JN ¥ª¥Þ¥¨¥À¥±
++¤ª¤Þ¤¨¤À¤± #JN ¥ª¥Þ¥¨¥À¥±(¸æÁ°Âû)
++¤ª¤Þ¤¨¤À¤± #JN ¸æÁ°Âû
++¤ª¤Þ¤¨¤À¤Ê¡¼ #JN ¤ª¤Þ¤¨¤À¤Ê¡¼
++¤ª¤Þ¤¨¤À¤Ë #JN ¥ª¥Þ¥¨Ã«
++¤ª¤Þ¤¨¤Ï¤¿¤ó¤í¤ó¤« #CJ ¤ªÁ°¤Ï¥¿¥ó¡¦¥í¥ó¤«¡©
++¤ª¤Þ¤¨¤â¤«¡¼ #JN ¥ª¥Þ¥¨¥â¥«¡¼
++¤ª¤Þ¤¨¤â¤Â¤ã¡¼ #JN ¥ª¥Þ¥¨¥â¥Â¥ã¡¼
++¤ª¤Þ¤¨¤â¤Ê¡¼ #CJ ¥ª¥Þ¥¨¥â¥Ê¡¼
++¤ª¤Þ¤¨¤â¤Ê¡¼¤Ï¤ó #JN ¥ª¥Þ¥¨¥â¥Ê¡¼´À
++¤ª¤Þ¤¨¤â¤Ê¤¢ #CJ ¥ª¥Þ¥¨¥â¥Ê¡¼
++¤ª¤Þ¤¨¤â¤Ê¤´¤¦ #JN OMAEMONA¹æ
++¤ª¤Þ¤¨¤â¤Ë¤ã¡¼ #JN ¤ª¤Þ¤¨¤â¤Ë¤ã¡¼
++¤ª¤Þ¤¨¤â¤Ò¤ã #JN ¥ª¥Þ¥¨¥â¥Ò¥ã
++¤ª¤Þ¤ó¤¸¤å¤¦ #T35 ¤ªñ½Æ¬
++¤ª¤ß¤¢¤¤¤¹¤ë¤â¤é¤é¡¼ #JN ¤ª¸«¹ç¤¤¤¹¤ë¥â¥é¥é¡¼
++¤ª¤ß¤È¤í¤ó #T35 ¥ª¥ß¥È¥í¥ó
++¤ª¤à¤¹¤Ó #JN ¤ª¤à¤¹¤Ó
++¤ª¤á¡¼¤é #T35 ¤ª¤á¡¼¤é
++¤ª¤á¤¤¤Ð¤ó¤«¤¤ #CJ ±ø̾ÈÔ²ó
++¤ª¤á¤¬ #T35 ¥ª¥á¥¬
++¤ª¤á¤¬¤¢¤é¤· #T35 ¦Ø¹Ó¤é¤·
++¤ª¤á¤¬¤Á¤ó #T35 ¦ØÄÁ
++¤ª¤â¤Õ #CJ »×¤Õ
++¤ª¤â¤é¤¿¤«¤Ò¤í #JN Èø¥â¥éδ¹°
++¤ª¤â¤ï¤ì #CJ »×¤ï¤ì¡£
++¤ª¤â¤ï¤ì #T35 »×¤ï¤ì
++¤ª¤ä¤³¤Ú¤ó¤®¤ó #JN ¿Æ»Ò¥Ú¥ó¥®¥ó
++¤ª¤ê #KK Ý£
++¤ª¤ê #T35 Ý£
++¤ª¤ê¤­ #T35 ¥ª¥ê¥­
++¤ª¤ê¤Å¤ë14¤Þ¤ó¤Ð¤×¤í¤¸¤§¤¯¤È #CJ ÀÞ¤êÄá14Ëü±©¥×¥í¥¸¥§¥¯¥È
++¤ª¤ê¤Ï¤é¤Ö¤é #T35 ÀÞ¸¶¥Ö¥é
++¤ª¤ê¤Ù¤í¤Ó¡¼ #T35 ¿¥Éô¥í¥Ó¡¼
++¤ª¤ê¤Ù¤í¤Ó¤¤ #T35 ¿¥Éô¥í¥Ó¡¼
++¤ª¤ê¤ç¤¦¤ê¤ª¤Í¤¨¤µ¤ó #JN ¤ªÎÁÍý¤ª»Ð¤µ¤ó
++¤ª¤ë¤¹¤Æ¤Ã¤É #JN ¥ª¥ë¥¹¥Æ¥Ã¥É
++¤ª¤ì¤ª¤ó¤Ê #T35 ²¶½÷
++¤ª¤ì¤µ¤Þ #T35 ²¶ÍÍ
++¤ª¤ì¤µ¤Þ¤è¤¦¤·¤ª¤ê #T35 ²¶ÍÍÍѤ·¤ª¤ê
++¤ª¤ì¤À¡¼ #JN ²¶¤À¡¼
++¤ª¤ì¤Ë¤µ¤ï¤°¤ª¤Õ #T35 ²¶¤ËÁû¤°¥ª¥Õ
++¤ª¤ì¤Ï¤Þ¤Á¤¬¤¤¤Ê¤¯¤¤¤Ã¤Ñ¤ó¤¸¤ó #T35 ²¶¤Ï´Ö°ã¤¤¤Ê¤¯°ìÈÌ¿Í
++¤ª¤ì¤â¤Ê¡¼ #CJ ¥ª¥ì¥â¥Ê¡¼
++¤ª¤ì¤â¤ì¤â #T35 ²¶Ï³¤ì¤â
++¤ª¤ï¤Ã¤¿¤Ê #JN (¡¦¡¼¡¦¡ËŽµŽÜŽ¯ŽÀŽÅŽ¥Ž¥Ž¥
++¤ª¤ï¤Ã¤¿¤Ê #JN ¥ª¥ï¥Ã¥¿¥Ê¡¦¡¦¡¦
++¤ª¤ï¤Ã¤¿¤Ê #JN ŽµŽÜŽ¯ŽÀŽÅŽ¥Ž¥Ž¥
++¤ª¤ó¤¿¤¤ #T35 ²¹ÂÓ
++¤ª¤ó¤¿¤¤ #T35 ¸æÂç
++¤ª¤ó¤ß¤ç¤¦¤¸ #JN ±¢ÍÛ»Õ
++¤ª¤ó¤ê¤¨¤ó #T35 Onlien
++¤« #R5r ¼í
++¤«¡¼¤É¤­¤ã¤×¤¿¡¼¤â¤Ê¡¼ #JN CC¥â¥Ê¡¼
++¤«¤¤¤³¤·¤å¤® #T35 ²û¸Å¼çµÁ
++¤«¤¤¤»¤ó #T35 áÎáý
++¤«¤¤¤»¤ó¤­¤Ã¤Æ¤¯¤Ó¤Ä¤Ã¤Æ¤·¤Í #CJ ²óÀþÀڤäƼóÄߤäƻá¤Í
++¤«¤¤¤»¤ó¤­¤Ã¤Æ¤¯¤Ó¤Ä¤Ã¤Æ¤·¤Í #JN ²óÀþÀڤäƼóÄߤäƻá¤Í
++¤«¤¤¤Æ¤­¤Ö¤é¤¦¤¶¡¼ #KK ²÷Ŭ¥Ö¥é¥¦¥¶¡¼
++¤«¤¤¤É¤¦ #KK ²ñƱ
++¤«¤¤¤É¤¦ #KK ²øƸ
++¤«¤¤¤É¤¦ #KK ³¹Æ»
++¤«¤¤¤É¤¦ #T35 ²ñƱ
++¤«¤¤¤É¤¦ #T35 ²øƸ
++¤«¤¤¤É¤¦ #T35 ³¹Æ»
++¤«¤¤¤Õ¤¯¤¹¤Ñ¤¹¤Ñ¤â¤Ê¡¼¤¬¤¯ #JN ²óÉü¥¹¥Ñ¥¹¥Ñ¥â¥Ê¡¼³Ø
++¤«¤¤¤Ø¤¤¤µ¤ó #JN ³«ÊĤµ¤ó
++¤«¤¤¤ï¤ì #T35 ¥«¥¤¥ï¥ì
++¤«¤¨ #CJ ¤«¤¨
++¤«¤¨¤Ç¤ä¤Ä¤é #T35 ¤«¤¨¤Ç¤ä¤Ä¤é
++¤«¤¨¤ì #CJ (Ž¥¢ÏŽ¥)Ž¶Ž´ŽÚ!
++¤«¤¨¤ì #CJ ¡Ê¡¦¢Ï¡¦¡ËŽ¶Ž´ŽÚ!
++¤«¤¨¤ì #CJ ¥«¥¨¥ì
++¤«¤¨¤ì #CJ ¥«¥¨¥ì!
++¤«¤¨¤ì #CJ Ž¶Ž´ŽÚ!
++¤«¤¨¤ì #T35 ¥«¥¨¥ì
++¤«¤ª¤â¤¸ #T35 ´éʸ»ú
++¤«¤ª¤â¤¸¤µ¤¯¤»¤¤¤¤¤é¤¤ #T30 ´éʸ»úºîÀ®°ÍÍê
++¤«¤¬¤ä #K5r µ±
++¤«¤¬¤ä¤± #CJ µ±¤±
++¤«¤¬¤ä¤± #T35 µ±¤±
++¤«¤¬¤ï #T35 ¹áÀî
++¤«¤­¤³ #M5r ½ñ¤­¹þ
++¤«¤­¤³ #T30 ¥«¥­¥³
++¤«¤­¤ç¤¦¤¤¤ó¤Î¤ê¤¢¤­¤È¤Ï¤ó¤«¤Á¤Î¤Á¤ç¤¦¤»¤ó¤¸¤ç¤¦ #JN ²Öµþ±¡ÅµÌÀ¤È¥Ï¥ó¥«¥Á¤ÎÄ©Àï¾õ
++¤«¤® #KK ¸°
++¤«¤® #T35 ¸°
++¤«¤®¤Ã¤³ #T35 ¸°¤Ã»Ò
++¤«¤¯¤É¤È¤« #CJ ³ÑÅ٤Ȥ«
++¤«¤¯¤Ë¤¤¤¿ #CN ³Ñ¼ÑÈÄ
++¤«¤¯¤Ø¤ó #T30 ³ÎÊÑ
++¤«¤¯¤Ø¤ó #T35 ³ÎÊÑ
++¤«¤¯¤è¤¦ #T35 ÄáÂë
++¤«¤¯¤ê #T30 ³ÖÎ¥
++¤«¤¯¤ê¤¤¤¿ #CN ³ÖÎ¥ÈÄ
++¤«¤¯¤ê¤¤¤¿ #T35 ³ÖÎ¥ÈÄ
++¤«¤¯¤ê¤¤¤¿¤Î¤«¤¯¤ê¤¤¤¿ #T35 ³ÖÎ¥ÈĤγÖÎ¥ÈÄ
++¤«¤°¤· #T35 ¹á¶ñ»Õ
++¤«¤² #T35 kage
++¤«¤³¤¤ #KY ¥«¥³¥¤
++¤«¤³¤¤¤¤ #T35 ¥«¥³¥¤¥¤
++¤«¤³¤í¤° #T35 ²áµî¥í¥°
++¤«¤³¤ï¤ë #KY ¥«¥³¥ï¥ë
++¤«¤³¤ï¤ë¤¤ #T35 ¥«¥³¥ï¥ë¥¤
++¤«¤´ #JN ¤¢¤¤¤Ü¤ó
++¤«¤´ #JN ²Ã¸î
++¤«¤µ #JN »±
++¤«¤µ #T35 »±
++¤«¤µ¡¼¤ê #JN ¥«¥µ¡¼¥ê
++¤«¤µ¤«¤µ #JN ¥«¥µ¥«¥µ
++¤«¤·¤ï¤â¡¼¤Á #JN ¥«¥·¥ï¥â¡¼¥Á
++¤«¤¹¤Æ¤ë #KK ¥«¥¹¥Æ¥ë
++¤«¤¹¤Æ¤ë #T35 ¥«¥¹¥Æ¥ë
++¤«¤º #T35 ¿ô¢ª
++¤«¤º¤¸¤µ¤ó #T35 ¿ô»ú¤µ¤ó
++¤«¤º¤ä¤¸¤ë¤· #T35 ¿ô¢ª
++¤«¤»¤­¤¹¤ì #T35 ²½ÀÐ¥¹¥ì
++¤«¤½¤¤¤¿ #T35 ²áÁÂÈÄ
++¤«¤½¤¦¤â¤Ê¡¼ #JN ²ÐÁò¥â¥Ê¡¼
++¤«¤¿ #R5 ñÙ
++¤«¤¿ #R5r ñÙ
++¤«¤¿¤¬¤Á #T30 ÊÒ¥¬¥Á
++¤«¤¿¤ä¤ª #T30 Êҥ䥪
++¤«¤¿¤ê #T35 ñÙ¤ê
++¤«¤¿¤ï¤é¡¼ #JN ¥«¥¿¥ï¥é¡¼
++¤«¤Á¤°¤ß¤é¤¤¤ó #T35 ¾¡ÁȤߥ饤¥ó
++¤«¤Á¤å¡¼¤·¤ã #KK ¤«¤Á¤å¡Á¤·¤ã
++¤«¤Á¤å¡¼¤·¤ã #T35 ¤«¤Á¤å¡Á¤·¤ã
++¤«¤Á¤å¡¼¤·¤ã¤µ¤ó #JN ¤«¤Á¤å¡Á¤·¤ã¤µ¤ó
++¤«¤Á¤å¤¦¤·¤ã #T35 ¤«¤Á¤å¡Á¤·¤ã
++¤«¤Á¤ç¤¦ #T35 ²ÝĹ
++¤«¤Ã¤±¡¼ #CJ ¤«¤Ã¤±¡¼
++¤«¤Ã¤±¡¼ #T35 ¤«¤Ã¤±¡¼
++¤«¤Ã¤±¤¨ #CJ ¤«¤Ã¤±¡¼
++¤«¤Ã¤³¤¤¤¤ #T35 ¥«¥Ã¥³¥¤¥¤
++¤«¤Ã¤È¤â¤Ê¡¼ #JN ¥«¥Ã¥È¥â¥Ê¡¼
++¤«¤Ã¤Ñ #KK ²ÏƸ
++¤«¤Ã¤Ñ #T35 ²ÏƸ
++¤«¤Ã¤Ñ¤¸¤ã¤Ê¤¤¤è #JN ¥«¥Ã¥Ñ¤¸¤ã¤Ê¤¤¤è
++¤«¤Ã¤Ñ¤Ã¤Ñ¡¼ #JN ¥«¥Ã¥Ñ¥Ã¥Ñ¡¼
++¤«¤Ä #JN ¹î
++¤«¤Ä #T35 ¹î
++¤«¤Ä¤Þ¤¿ #T35 ¾¡Ëó
++¤«¤Ä¤ó #T35 ¥«¥Ä¥ó
++¤«¤Æ¤´¤ê #T35 ¥«¥Æ¥´¥ê
++¤«¤È¤¦¤¸¤å¤ê #JN ²ÃÆ£¥¸¥å¥ê
++¤«¤È¤¦¤¸¤ç¤æ¤¦ #T35 ²¼Åù½÷Í¥
++¤«¤È¤¦¤æ¤« #JN ²Ãƣͳ¹á
++¤«¤É¤Þ¤ï¤ó #KK ¥«¥É¥Þ¥ï¥ó
++¤«¤É¤Þ¤ï¤ó #T35 ¥«¥É¥Þ¥ï¥ó
++¤«¤Ê¡¼ #JN ¥«¥Ê¡¼
++¤«¤Ë #KK ³ª
++¤«¤Ë #T35 ³ª
++¤«¤Ë¤Ð¤ë #JN (¡¦Æù¡¦)
++¤«¤Ë¤Ð¤ë #JN ¥«¥Ë¥Ð¥ë
++¤«¤Í¤Í¡¼¤è #JN ¥«¥Í¥Í¡¼¥è
++¤«¤Ó¤ª¤Ë¤®¤ê #KK ¥«¥Ó¥ª¥Ë¥®¥ê
++¤«¤Ó¤ª¤Ë¤®¤ê #T35 ¥«¥Ó¥ª¥Ë¥®¥ê
++¤«¤Ó¤ó¤¿¤ó #JN ²ÖÉÓ¤¿¤ó
++¤«¤Õ¤§¡¼ #JN ¥«¥Õ¥§¡¼
++¤«¤Ö #R5 ¤«¤Ö
++¤«¤Ö¤·¤­¤¬¤¤¤·¤ã¤ä¤ª¤­¤ó #KK ³ô¼°²ñ¼Ò¥ä¥ª¥­¥ó
++¤«¤Ö¤·¤­¤¬¤¤¤·¤ã¤ä¤ª¤­¤ó #T35 ³ô¼°²ñ¼Ò¥ä¥ª¥­¥ó
++¤«¤Ö¤È¤à¤· #T35 ¥«¥Ö¥È¥à¥·
++¤«¤×¡¼¤ë¤¤¤¿ #CN ¥«¥×¡¼¥ëÈÄ
++¤«¤×¡¼¤ë¤¤¤¿ #T35 ¥«¥×¡¼¥ëÈÄ
++¤«¤×¡¼¤ë¤¤¤¿ #T35 Ž¶ŽÌŽßŽ°ŽÙÈÄ
++¤«¤×¤¦¤ë¤¤¤¿ #T35 ¥«¥×¡¼¥ëÈÄ
++¤«¤×¤¦¤ë¤¤¤¿ #T35 Ž¶ŽÌŽßŽ°ŽÙÈÄ
++¤«¤×¤ó¤³ #JN (Ž¥¢ÏŽ¥)¥Î¡¡
++¤«¤×¤ó¤³ #JN ¥«¥×¥ó¥³¡ª
++¤«¤Ù #T35 ÊÉ
++¤«¤Þ¤É¤¦¤Þ¤¢¤é¤· #JN ¥«¥Þ¥É¥¦¥Þ¹Ó¤é¤·
++¤«¤ß #JN »æ
++¤«¤ß #T35 ¿À
++¤«¤ß¤«¤¼¤È¤Ã¤³¤¦¤¿¤¤ #JN ¿ÀÉ÷Æù¶Ââ
++¤«¤ß¤³¤¦¤ê¤ó #T35 ¿À¹ßÎ×
++¤«¤ß¤µ¤¯¤¬ #T35 ¿Àºî²è
++¤«¤ß¤Ê¤ê¤°¤ë¡¼¤× #JN Í륰¥ë¡¼¥×
++¤«¤ß¤Ê¤ê¤°¤ë¡¼¤× #T35 Í륰¥ë¡¼¥×
++¤«¤ß¤Ê¤ê¤°¤ë¤¦¤× #T35 Í륰¥ë¡¼¥×
++¤«¤ß¤Î¤¸¤¤¤Æ¤£¤¤¤ª¤¦ #T35 ¿À¤ÎGTO
++¤«¤ß¤Î¤Ê¤ä¤ß¤Ï¤ê¡¼¤Ö¤Ë¤¸¤å¤¦¤¤¤Á #JN ȱ¤ÎǺ¤ß¤Ï¥ê¡¼¥Ö£²£±
++¤«¤á #T35 µµ
++¤«¤á #T35 µµ¥Þ¥Þ
++¤«¤á¤Þ¤Þ #T35 µµ¥Þ¥Þ
++¤«¤á¤â¤Ê¡¼ #JN ¥«¥á¥â¥Ê¡¼
++¤«¤á¤â¤Ê¡¼¤°¤ì¡¼¤È #JN ¥«¥á¥â¥Ê¡¼¥°¥ì¡¼¥È
++¤«¤á¤ì¤¹ #T35 µµ¥ì¥¹
++¤«¤á¤ó¤é¤¤¤À¡¼¤¢¤®¤³ #JN ²¾Ì̥饤¥À¡¼¥¢¥®¥³
++¤«¤á¤ó¤é¤¤¤À¡¼¤¢¤®¤³ #JN ²¾Ì̥饤¥À¡¼¥¢¥®¥³ 
++¤«¤á¤ó¤é¤¤¤À¡¼¤¢¤Þ¤¾¤ó #JN ²¾Ì̥饤¥À¡¼¥¢¥Þ¥¾¥ó
++¤«¤á¤ó¤é¤¤¤À¡¼¤®¤ë¤¹ #JN ²¾Ì̥饤¥À¡¼¥®¥ë¥¹
++¤«¤á¤ó¤é¤¤¤À¡¼¤®¤ë¤¹ #JN ²¾Ì̥饤¥À¡¼¥®¥ë¥¹ 
++¤«¤á¤ó¤é¤¤¤À¡¼¤´¤ë¤¡¤Ã¤¯ #JN ²¾Ì̥饤¥À¡¼GOLACK
++¤«¤á¤ó¤é¤¤¤À¡¼¤·¤£¤¹¤ê¡¼ #JN ²¾Ì̥饤¥À¡¼¤·¤££³
++¤«¤á¤ó¤é¤¤¤À¡¼¤·¤£¤¹¤ê¡¼ #JN ²¾Ì̥饤¥À¡¼¤·¤££³ 
++¤«¤á¤ó¤é¤¤¤À¡¼¤·¤£¤¹¤ê¡¼¤¨¤Ã¤¯¤¹ #JN ²¾Ì̥饤¥À¡¼¤·¤££³¡Ý£Ø
++¤«¤á¤ó¤é¤¤¤À¡¼¤·¤£¤¹¤ê¡¼¤¨¤Ã¤¯¤¹ #JN ²¾Ì̥饤¥À¡¼¤·¤££³¡Ý£Ø 
++¤«¤á¤ó¤é¤¤¤À¡¼¤¹¤È¤í¤ó¤¬¡¼ #JN ²¾Ì̥饤¥À¡¼¥¹¥È¥í¥ó¥¬¡¼
++¤«¤á¤ó¤é¤¤¤À¡¼¤â¤¦¤Ê #JN ²¾Ì̥饤¥À¡¼¥â¥¦¥Ê
++¤«¤â¤¹ #S5 ¾ú¤¹
++¤«¤â¤á #T35 ²ª
++¤«¤é¤¢¤®¤ã¤ó¤° #T35 ¥«¥é¡¼¥®¥ã¥ó¥°
++¤«¤é¤¢¤² #T35 ÅâÍȤ²
++¤«¤é¤­¤Þ¤·¤¿ #CJ ¤«¤éÍè¤Þ¤·¤¿
++¤«¤é¤¹ #JN ±¨
++¤«¤ë¤¿¤ó #JN ¥«¥ë¥¿¥ó
++¤«¤ì¡¼¤Ñ¤½¤Þ¤½ #JN ¥«¥ì¡¼¥Ñ¥½¥Þ¥½
++¤«¤ì¡¼¤Ñ¤ó¤Þ¤ó #JN ¥«¥ì¡¼¥Ñ¥ó¥Þ¥ó
++¤«¤ì¡¼¤Ñ¤ó¤Þ¤ó #JN Ž¶ŽÚŽ°ŽÊŽßŽÝŽÏŽÝ
++¤«¤ì¤¤¤·¤å¤¦¤¿¤À¤è¤¦ #CJ ²ÃÎð½­Éº¤¦
++¤«¤ì¤Ï #T35 ¸ÏÍÕ
++¤«¤ï¤µ¤® #T35 Àµ½
++¤«¤ï¤·¤Þ¤¢¤Å¤ß #JN ÀîÅçÏÂÄżÂ
++¤«¤ó #T35 ´°
++¤«¤ó¤«¤ó¤É¤¦¤ê¤Ä #KK ´Ø´ØƱΩ
++¤«¤ó¤«¤ó¤É¤¦¤ê¤Ä #T35 ´Ø´ØƱΩ
++¤«¤ó¤¬¤¯¤´¤­¤Ö¤ê #JN ´Ø³Ø¥´¥­¥Ö¥ê
++¤«¤ó¤¬¤ë¡¼¤â¤Ê¡¼ #JN ¥«¥ó¥¬¥ë¡¼¥â¥Ê¡¼
++¤«¤ó¤¯¤í¤¦ #JN ¥«¥ó£¹£¶
++¤«¤ó¤¯¤í¤¦ #JN ´ª¶ìÏ«
++¤«¤ó¤¯¤í¤¦ #T35 ¥«¥ó£¹£¶
++¤«¤ó¤¯¤í¤¦ #T35 ´ª¶ìÏ«
++¤«¤ó¤³ #R5 ¥«¥ó¥³
++¤«¤ó¤³ #R5r ¥«¥ó¥³
++¤«¤ó¤³¤¯ #KK ´¯¹ñ
++¤«¤ó¤³¤¯ #KK ´¯¹ó
++¤«¤ó¤³¤¯ #KK Õ¡¹ñ
++¤«¤ó¤³¤¯ #T35 ´¯¹ñ
++¤«¤ó¤³¤¯ #T35 ´¯¹ó
++¤«¤ó¤³¤¯ #T35 Õ¡¹ñ
++¤«¤ó¤³¤¯¤È¤ê #T35 ´Ú¹ñ¤È¤ê
++¤«¤ó¤³¤¯¤È¤ê #T35 ´Ú¹ñ¤È¤ê 
++¤«¤ó¤³¤Ã¤¯ #KK ¥«¥ó¥³¥Ã¥¯
++¤«¤ó¤³¤Ã¤¯ #T35 ¥«¥ó¥³¥Ã¥¯
++¤«¤ó¤³¤É¤ê #JN ´×¸ÅÄ»
++¤«¤ó¤µ¤¤¤Õ¤¡¤¤¤Ö¤¹¤¿¤¢ #T35 ´ØÀ¾¥Õ¥¡¥¤¥Ö¥¹¥¿¡¼
++¤«¤ó¤µ¤ó¤È¤·¤¿¤Ç¤ó¤·¤ã #JN ´×»¶¤È¤·¤¿ÅżÖ
++¤«¤ó¤·¤ã¤Ï¤à¤Ë¤À #CJ ´¶¼Õ¥Ï¥à¥Ë¥À
++¤«¤ó¤¸¤ï¤ë¤¤ #T35 ´¶¤¸°­¤¤
++¤«¤ó¤Á¤ç¤¯¤Ë¤ó #T35 ´Éľ¿Í
++¤«¤ó¤Æ¤¤¤· #T35 ´ÕÄê»Î
++¤«¤ó¤Æ¤¤¤¹¤ì #T35 ´ÕÄꥹ¥ì
++¤«¤ó¤Æ¤¤¤È¤ê¤ª #T35 ´ÕÄê¥È¥ê¥ª
++¤«¤ó¤Æ¤¤¤Ë¤ó¤¯¤ß¤¢¤¤ #T35 ´ÕÄê¿ÍÁȹç
++¤«¤ó¤Æ¤¤¤è¤¦¤´ #T35 ´ÕÄêÍѸì
++¤«¤ó¤È¤¦¤Ï¤À¤«¤«¤¤ #JN ´ØÅìÍç²ñ
++¤«¤ó¤È¤ó #KK ¥«¥ó¥È¥ó
++¤«¤ó¤È¤ó #T35 ¥«¥ó¥È¥ó
++¤«¤ó¤Ê¤ª¤È #JN ´¯Ä¾¿Í
++¤«¤ó¤Ê¤ª¤È #JN ´¯Ì¾²»
++¤«¤ó¤Ê¤ª¤È #JN ´Úľ¿Í
++¤«¤ó¤Ê¤ª¤È #JN ¿ûľ¿Í
++¤«¤ó¤Ê¤ª¤È #T35 ´¯Ä¾¿Í
++¤«¤ó¤Ê¤ª¤È #T35 ´¯Ì¾²»
++¤«¤ó¤Ê¤ª¤È #T35 ´Úľ¿Í
++¤«¤ó¤Ê¤ª¤È #T35 ¿ûľ¿Í
++¤«¤ó¤Í¤¤¤³¤¦¤Ï #JN ´ÅÇ«¶½ÇÆ
++¤«¤ó¤Þ¤ó¤»¤¤¤È #JN ´³ËþÀ¸ÅÌ
++¤«¤ó¤ê¤·¤ã¤µ¤ó¤Ç¤¹¤« #CJ ´ÉÍý¼Ô¤µ¤ó¤Ç¤¹¤«¡©£÷
++¤«¤ó¤ê¤Ë¤ó¤Õ¤¡¤ä¤ä #T35 &quot;´ÉÍý&quot;¿Í¥Õ¥¡¥ä¥ä
++¤«¤ó¤ì¤ó¤¹¤ì¤Ã¤É #T35 ´ØÏ¢¥¹¥ì¥Ã¥É
++¤«¤ó¤ì¤ó¤ê¤ó¤¯ #T35 ´ØÏ¢¥ê¥ó¥¯
++¤¬¡¼¤ó #CJ ¥¬¨¬¨¬¨¬¡Ê_§¥_;¡Ë¨¬¨¬¥ó¡ª
++¤¬¡¼¤ó #JN ¥¬¡¼¥ó
++¤¬¡¼¤ó #JN ¥¬¨¬¨¬¡ÊŽß§¥Žß;)¨¬¨¬¥ó¡ª
++¤¬¡¼¤ó #JN ¦²¡ÊŽß§ÕŽßlll¡ËŽ¶ŽÞŽ°ŽÝ
++¤¬¤¤¤¤¤³¤È¤ò¤¤¤Ã¤¿ #CJ ¤¬¤¤¤¤¤³¤È¤ò¸À¤Ã¤¿
++¤¬¤¤¤­¤Á #T35 ¥¬¥¤¥­¥Á
++¤¬¤¤¤·¤å¤Ä #T35 ¤¬¤¤¤·¤å¤Ä
++¤¬¤¤¤·¤å¤Ä #T35 ³°½Ð
++¤¬¤¤¤·¤å¤Ä¤­¤Ã¤É #JN ´û½Ð¥­¥Ã¥É
++¤¬¤¤¤·¤å¤Ä¤¯¤ó #JN ¥¬¥¤¥·¥å¥Ä·¯
++¤¬¤¤¤¿ #T35 ¥¬ÈÄ
++¤¬¤¤¤É¤é¤¤¤Ê¤¢ #T35 ¥¬¥¤¥É¥é¥¤¥Ê¡¼
++¤¬¤¤¤É¤é¤¤¤ó¤¤¤¿ #T35 ¥¬¥¤¥É¥é¥¤¥óÈÄ
++¤¬¤¯¤¬¤¯¤Ö¤ë¤Ö¤ë #CJ ¥¬¥¯¥¬¥¯¥Ö¥ë¥Ö¥ë
++¤¬¤¯¤¬¤¯¤Ö¤ë¤Ö¤ë #CJ Ž¶ŽÞŽ¸Ž¶ŽÞŽ¸ŽÌŽÞŽÙŽÌŽÞŽÙ
++¤¬¤¯¤¬¤¯¤Ö¤ë¤Ö¤ë #T30 ¥¬¥¯¥¬¥¯¥Ö¥ë¥Ö¥ë
++¤¬¤¯¤¬¤¯¤Ö¤ë¤Ö¤ë¤­¤ç¤¦¤³¤¦¤ê¤ó #T30 ¥¬¥¯¥¬¥¯¥Ö¥ë¥Ö¥ë¶µ¹ßÎ×
++¤¬¤¯¤ì¤­¤¢¤¶¤é¤· #T35 ³ØÎò¥¢¥¶¥é¥·
++¤¬¤¯¤ì¤­¤¸¤å¤ó¤¤ #T35 ³ØÎò½ç°Ì
++¤¬¤¯¤ì¤­¤Á¤å¤¦¤É¤¯¤·¤ã #T35 ³ØÎòÃæÆǼÔ
++¤¬¤¯¤ì¤­¤í¤ó¤À¤ê¤ó¤° #T35 ³ØÎò¥í¥ó¥À¥ê¥ó¥°
++¤¬¤³¤Î¤¹¤ì¤Ë¤­¤ç¤¦¤ß¤ò¤â¤Ã¤¿¤è¤¦¤Ç¤¹ #CJ ¤¬¤³¤Î¥¹¥ì¤Ë¶½Ì£¤ò»ý¤Ã¤¿¤è¤¦¤Ç¤¹
++¤¬¤¾¤¦¤¢¤Ã¤×¤í¡¼¤À #T35 ²èÁü¥¢¥Ã¥×¥í¡¼¥À
++¤¬¤Á #T30 ¥¬¥Á
++¤¬¤Á #T35 ¥¬¥Á
++¤¬¤Á¤ã¤Ô¤ó #JN ¥¬¥Á¥ã¥Ô¥ó
++¤¬¤Ã¤¯¤· #CJ ¡²|¡±|¡û
++¤¬¤Ã¤¯¤· #CJ orz
++¤¬¤Ã¤¯¤· #CJ _no
++¤¬¤Ã¤¯¤· #CJ OTL
++¤¬¤Ã¤¯¤· #CJ OTZ
++¤¬¤Ã¤¯¤· #CJ JTO
++¤¬¤Ã¤· #JN ¥¬¥Ã¥·
++¤¬¤Ã¤·¤å¤¯¤¸¤ç #T35 ¹ç½É½ê
++¤¬¤Ã¤Á¤å¤ó #T35 ¤¬¤Ã¤Á¤å¤ó¡ù
++¤¬¤Ã¤Ä #KK ¥¬¥Ã¥Ä
++¤¬¤Ã¤Ä #T35 ¥¬¥Ã¥Ä
++¤¬¤Ê¡¼ #JN ¥¬¥Ê¡¼
++¤¬¤Ê¡¼¤«¤Ã¤³¤¸¤Ä¤è¤¦¤¬¤¿¤«¤Ã¤³¤È¤¸¤ë #JN ¥¬¥Ê¡¼¡Ê¼ÂÍÑ·¿¡Ë
++¤¬¤Ê¡¼¤¿¤¤¤Æ¤¤ #JN ¥¬¥Ê¡¼ÂçÄë
++¤¬¤Ê¡¼¤¿¤¤¤Æ¤¤ #JN ¥¬¥Ê¡¼ÂçÄë 
++¤¬¤Ê¤² #CJ ¥¬¥Ê¥²
++¤¬¤Ê¤² #CJ Ž¶ŽÞŽÅŽ¹ŽÞ
++¤¬¤Î¤¿ #T35 ¥¬¥Î¥¿
++¤¬¤Ï¤¯ #T35 ²èÇì
++¤¬¤á¤µ¤Ð #KK µµ»ª
++¤¬¤á¤µ¤Ð #T35 µµ»ª
++¤¬¤ê¤¬¤ê¤¯¤ó #T35 ¥¬¥ê¥¬¥ê·¯
++¤¬¤ê¤Ù¤ó #JN ¥¬¥êÊÙ
++¤¬¤ê¤Ù¤ó¤â¤é¤é¡¼ #JN ¤¬¤êÊÙ¥â¥é¥é¡¼
++¤¬¤ó¤¬¤ë #R5r ¤¬¤ó¤¬¤ë
++¤¬¤ó¤¬¤ë #T35 ¥¬¥ó¥¬¥ë
++¤¬¤ó¤Ð¤ë¤â¤Ê¡¼ #JN ¥¬¥ó¥Ð¥ë¥â¥Ê¡¼
++¤¬¤ó¤Ü #R5 ¤¬¤ó¤Ü
++¤¬¤ó¤Ü #R5r ¤¬¤ó¤Ü
++¤¬¤ó¤à¤Ï¤ó¤É¤ë¤Í¤¨¤à¤â¤ó¤À¤¤ #T35 ½ÆÌ´HNÌäÂê
++¤­¤¤ #KK ¸°
++¤­¤¤¤Æ¤¢¤í¤¨¤ê¡¼¤Ê #CJ ¤­¤¤¤Æ¥¢¥í¥¨¥ê¡¼¥Ê¢ö
++¤­¤¤¤Æ¤¢¤í¤¨¤ê¡¼¤Ê #T35 ¤­¤¤¤Æ¥¢¥í¥¨¥ê¡¼¥Ê¢ö
++¤­¤¤¤Ë¤·¤­ #T35 ¥­¡¼¥Ë¥·¥­
++¤­¤¤¤í #T35 ²«¿§
++¤­¤¦¤¤ #T35 ¥­¥¦¥¤
++¤­¤¨¤¤¤Ü¤¹¤ì¤¸¤±¤ó #T35 ¥­¥¨¡¼¥Ü¥¹¥ì»ö·ï
++¤­¤« #JN µ¢²½
++¤­¤«¤¤¤«¤±¤¤¤Û¤¦ #JN µ¡³£²½·ÙÊó
++¤­¤¬¡¼ #JN ¥­¥¬¡¼
++¤­¤­¡¼¤ó #JN ¥­¥­¡¼¥ó
++¤­¤¯ #T35 µÆ
++¤­¤±¤¤¤ª¤Ë¤®¤ê #JN ´ñ·Á¤ª¤Ë¤®¤ê
++¤­¤±¤¤¤â¤é¤é¡¼ #JN ´ñ·Á¥â¥é¥é¡¼
++¤­¤´¤Ê¤Ó #KK ¥®¥³¥Ê¥Ó
++¤­¤µ¤Þ¤´¤È¤­¤¬¤È¤Ê¤ß¤ò¤«¤¿¤ë¤Ê #JN µ®ÍÍÇ¡¤­¤¬¥È¥Ê¥ß¤ò¸ì¤ë¤Ê
++¤­¤µ¤Þ¤¸¤ã¤Ê¡¼ #JN ¥­¥µ¥Þ¥¸¥ã¥Ê¡¼
++¤­¤·¤ã #T35 µ­¼Ô
++¤­¤·¤å¤¤¤½¤ó¤â¤¸ #T35 µ¡¼ï°Í¸ʸ»ú
++¤­¤·¤å¤¤¤¾¤ó¤â¤¸ #T35 µ¡¼ï°Í¸ʸ»ú
++¤­¤·¤å¤¦ #T30 ´ñ½±
++¤­¤·¤å¤¦ #T35 ´ñ½±
++¤­¤·¤å¤Ä #T35 ´û½Ð
++¤­¤·¤ç #CJ ¥­¥·¥ç
++¤­¤·¤ç #KYT ¥­¥·¥ç
++¤­¤·¤ç¤¤ #T35 ¥­¥·¥ç¥¤
++¤­¤·¤ç¤ª¤¿ #T35 ¥­¥·¥ç¥ª¥¿
++¤­¤·¤ç¤ò¤¿ #T35 ¥­¥·¥ç¥ò¥¿
++¤­¤¿¡¼ #CJ ¥­¥¿¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬(¡¬¢Ï¡¬)¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¡ª¡ª
++¤­¤¿¡¼ #CJ ¥­¥¿¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬(Žß¢ÏŽß)¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¡ª¡ª
++¤­¤¿¡¼ #CJ Ž·ŽÀ¨¬¨¬¨¬¨¬(¡¬¢Ï¡¬¢á(¡¬¢Ï¡¬¢á¡¬¢Ï¡¬)¢á¡¬¢Ï¡¬)¨¬¨¬¨¬¨¬!!!
++¤­¤¿¡¼ #CJ Ž·ŽÀ¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬(Žß¢ÏŽß)¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬!!!
++¤­¤¿¡¼ #JN ¥­¥¿¡¼!!!!
++¤­¤¿¡¼ #JN Ž·ŽÀ¨¬¨¬¨¬¨¬¨¬(Žß¢ÏŽß)¨¬¨¬¨¬¨¬¨¬!!!!
++¤­¤¿¤¢ #CJ ¥­¥¿¡¼
++¤­¤¿¤¢ #CJ Ž·ŽÀŽ°
++¤­¤¿¤¤¤¢¤² #T35 ´üÂÔage
++¤­¤¿¤­¤å¤¦ #T35 ËÌ£Ñ
++¤­¤¿¤µ¤Ð¤¸¤À¤¤ #T35 ËÌ»ª»þÂå
++¤­¤¿¤Á¤ç¤ó #T35 ËÌ¥Á¥ç¥ó
++¤­¤¿¤Í¡¼¤è #JN ¥­¥¿¥Í¡¼¥è
++¤­¤¿¤Í¡¼¤ó¤À¤è #JN ¥­¥¿¥Í¡¼¥ó¥À¥è
++¤­¤¿¤Í¤Ã¤È #KK Ë̥ͥåÈ
++¤­¤¿¤â¤ê #KK ËÌ¿¹
++¤­¤¿¤â¤ê #T35 ËÌ¿¹
++¤­¤À #KK ÌÚÅÄ
++¤­¤À #T35 ÌÚÅÄ
++¤­¤Á #T35 ¥­¥Á
++¤­¤Á #T35 ´ðÃÏ
++¤­¤Á¡¼¤ê #JN ¥­¥Á¡¼¥ê
++¤­¤Á¡¼¤ê #JN ¥à¥«¡¼¥Ç¡Ú¤à¤«¡¼¤Ç¡ÛÊÌ̾¥­¥Á¡¼¥ê
++¤­¤Á¤¬¤¤ #T35 ¥­¥Á¥¬¥¤
++¤­¤Á¤¬¤¤ #T35 ´ðÃϳ°
++¤­¤Á¤¬¤¤ #T35 ´ðÃϳ²
++¤­¤Á¤¬¤¤¤±¤¤¤Û¤¦ #JN ´ðÃϳ°·ÙÊó
++¤­¤Á¤¬¤¤¤±¤¤¤Û¤¦ #T35 ¥­¥Á¥¬¥¤·ÙÊó
++¤­¤Ã¤³¡¼¤Þ¤½ #JN ¥­¥Ã¥³¡¼¥Þ¥½
++¤­¤Ã¤Á¤ó #T35 ¥­¥Ã¥Á¥ó
++¤­¤Æ¤£ #T35 ¥­¥Æ¥£
++¤­¤Æ¤£¤­¤å¤¦ #T35 ¥­¥Æ¥£µÞ
++¤­¤Æ¤Ê¤¤ #JN Ž·ŽÃŽÅŽ²
++¤­¤Æ¤Ê¤¤ #JN Ž·ŽÃŽÅŽ²¨¬¨¬¨¬¨¬¨¬¨¬¡ÊŽß_Žß¡Ë¨¬¨¬¨¬¨¬¨¬¨¬!!!!!
++¤­¤È¡¼ #JN ¥­¥È¡¼
++¤­¤Ë¤¤¤é¤Í¡¼¤è #JN ¥­¥Ë¥¤¥é¥Í¡¼¥è
++¤­¤Ë¤·¤Ê¤¤ #JN ¡ÊŽß¦ÅŽß¡ËŽ·ŽÆŽ¼ŽÅŽ²!!
++¤­¤Ë¤·¤Ê¤¤ #JN ¥­¥Ë¥·¥Ê¥¤!!
++¤­¤Ë¤·¤Ê¤¤ #JN Ž·ŽÆŽ¼ŽÅŽ²!!
++¤­¤Ì¤¦¤é¤ê¤ó¤«¤¤¤Æ¤Ä¤É¤¦ #JN °á±ºÎ׳¤Å´Æ»
++¤­¤Í¤ó¤«¤­¤³ #T30 µ­Ç°¥«¥­¥³
++¤­¤Í¤ó¤«¤­¤³ #T35 µ­Ç°¥«¥­¥³
++¤­¤Í¤ó¤Ñ¤Ô¤³ #T35 µ­Ç°¥Ñ¥Ô¥³
++¤­¤Í¤ó¤Þ¤­¤³ #T35 µ­Ç°âõª»Ò
++¤­¤Î¤³ #T35 ¥­¥Î¥³
++¤­¤Î¤³ #T35 Âû
++¤­¤Î¤»¡¼¤Ë¤ã #JN ¡¡¡¡(¡¼§×°ì)
++¤­¤Î¤»¡¼¤Ë¤ã #JN ¥­¥Î¥»¡¼¥Ë¥ã
++¤­¤Ï¤Ò¤ã¤¯¤Ë¤¸¤å¤¦ #JN ¥­¥Ï£±£²£°
++¤­¤Ð¤ó #T35 ÌÚÈÖ
++¤­¤Ü¡¼¤ó #CJ ¤­¤Ü¡¼¤ó
++¤­¤Ü¡¼¤ó #T35 ¤­¤Ü¡¼¤ó
++¤­¤Ü¤ó #CJ ¤­¤Ü¤ó
++¤­¤Ü¤ó #CJ ¥­¥Ü¥ó
++¤­¤Ü¤ó¤Ì #CJ ¤­¤Ü¤ó¤Ì
++¤­¤Ü¤ó¤Ì #CJ ¥­¥Ü¥ó¥Ì
++¤­¤ß¤Ï¤ï¤À¤µ¤ó¤´¤Î¤ß #CJ ·¯¤Ï¥ï¥À¥µ¥ó¹¥¤ß
++¤­¤à #KK ¤­¤à
++¤­¤à #KY ¤­¤à
++¤­¤à¤³ #T35 ¥­¥à¥³
++¤­¤à¤µ¤ï #KK ¥­¥àÂô
++¤­¤à¤µ¤ï #T35 ¥­¥àÂô
++¤­¤à¤µ¤ï #T35 ʧÂô
++¤­¤à¤Á #JN ¥­¥à¥Á
++¤­¤à¤Á #T35 ¥­¥à¥Á
++¤­¤à¤Á¤â¤ó #JN ¥­¥à¥Á¥â¥ó
++¤­¤à¤è¤ó¤¸¤ó #JN ¶â±Ëï¯
++¤­¤à¤è¤ó¤¸¤ó #T35 ¶â±Ëï¯
++¤­¤â #KYT ¥­¥â
++¤­¤â¤¤ #T35 ¥­¥â¥¤
++¤­¤â¤Á¤¤¤¤¤³¤È¤·¤è¤¦ #CJ µ¤»ý¤Á¤¤¤¤¤³¤È¤·¤è¤¦
++¤­¤ã¤Ã¤È¤­¤é¡¼ #JN ¥­¥ã¥Ã¥È¥­¥é¡¼
++¤­¤ã¤Ã¤È¤­¤é¡¼ #T35 ¥­¥ã¥Ã¥È¥­¥é¡¼
++¤­¤ã¤Ã¤È¤­¤é¤¢ #T35 ¥­¥ã¥Ã¥È¥­¥é¡¼
++¤­¤ã¤Ã¤Ï¤º¤«¤· #JN ¥­¥ã¥Ã¡¢¥Ï¥º¥«¥·
++¤­¤ã¤Ã¤Ï¤º¤«¤· #JN Ž·Ž¬Ž¯¡¢ŽÊŽ½ŽÞŽ¶Ž¼¡Ê-ŽÉŽÉ¡Ë
++¤­¤ã¤Ã¤× #T35 ¥­¥ã¥Ã¥×
++¤­¤ã¤Ã¤×¤â¤ì #T35 ¥­¥ã¥Ã¥×ϳ¤ì
++¤­¤ã¤Ï #T35 ¡ù
++¤­¤ã¤Ô¤¤ #CJ ¥­¥ã¥Ô¡¼
++¤­¤ã¤×¤Æ¤½ #JN ¥­¥ã¥×¥Æ¥½
++¤­¤ã¤×¤Æ¤½ #T35 ¥­¥ã¥×¥Æ¥½
++¤­¤ã¤×¤Æ¤½ #T35 Ž·Ž¬ŽÌŽßŽÃŽ¿
++¤­¤ã¤é¤Ï¤ó #T35 ¥­¥ã¥é¥Ï¥ó
++¤­¤å¤¦ #T35 Q
++¤­¤å¤¦¤µ¤¤¤«¤¤ #T35 µßºÑ²ñ
++¤­¤å¤¦¤· #JN µë»Å
++¤­¤å¤¦¤·¤å¤¦ #T35 µÛ¼ý
++¤­¤å¤¦¤·¤å¤¦ #T35 µÞ½±
++¤­¤å¤¦¤¹¤ì #T35 µì¥¹¥ì
++¤­¤å¤¦¤À¤¤ #T35 QÂç
++¤­¤å¤¦¤Á¤ã¤ó¤Í¤ë #T35 ¶å¥Á¥ã¥ó¥Í¥ë
++¤­¤å¤¦¤Æ¤£¤¤ #T35 QT
++¤­¤å¤¦¤Æ¤¤ #KK µìÄë
++¤­¤å¤¦¤Æ¤¤ #T35 µÜÄî
++¤­¤å¤¦¤Æ¤¤ #T35 µìÄë
++¤­¤å¤¦¤Æ¤ó¤¤¤Á¤´¤¸¤±¤ó #T35 9¡¦15»ö·ï
++¤­¤å¤¦¤Æ¤ó¤­¤å¤¦¤Ô¤ó¤¯¤¬¤Ø¤ó #T35 9¡¦9pink¤¬ÊÑ
++¤­¤å¤¦¤Ë¤­¤Î¤­¤ç¤¦¤¤¤¯¤é¤ó¤¾¤¦ #T35 µìÆó´ü¤Î¶µ°é¡¦Íô¤¸øΩ¡¦¹ñ¸øΩÌë´ÖÉô
++¤­¤å¤¦¤Þ¤Ã¤¯¤¤¤¿ #CN µì£Í£á£ãÈÄ
++¤­¤å¤¦¤Þ¤Ã¤¯¤¤¤¿ #T35 µì£Í£á£ãÈÄ
++¤­¤å¤¦¤í¤¯ #KK µìÏ»
++¤­¤å¤¦¤í¤¯ #T35 µìÏ»
++¤­¤æ #JN ¥­¥æ
++¤­¤æ #T35 ¥­¥æ
++¤­¤æ¤á¤¤¤²¤ó #JN ¥­¥æ̸À
++¤­¤ç¤¦ #T35 ¶§
++¤­¤ç¤¦¤®¤å¤¦¤Ó¤ç¤¦¤·¤ó¤¸¤ã #T35 ¶¸µíÉ¿®¼Ô
++¤­¤ç¤¦¤µ¤ó #T35 ¶¯»À
++¤­¤ç¤¦¤µ¤ó¤·¤å¤® #T35 ¶¸»´¼çµÁ
++¤­¤ç¤¦¤µ¤ó¤·¤å¤® #T35 ¶¸»º¼çµÁ
++¤­¤ç¤¦¤»¤¤¤¢¤¤¤Ç¤£¤¤ #T35 ¶¯À©ID
++¤­¤ç¤¦¤»¤¤¤·¤å¤¦¤ê¤ç¤¦ #JN ¶¯À©½ªÎ»
++¤­¤ç¤¦¤À¤¤¤Î¤Û¤´¤·¤ã #JN ¡Ê¡¦¡¼¡¦¡ËŽÝ¡£
++¤­¤ç¤¦¤À¤¤¤Î¤Û¤´¤·¤ã #JN ·»Äï¤ÎÊݸî¼Ô
++¤­¤ç¤¦¤À¤¤¤â¤Ê¡¼ #JN ·»Äï¥â¥Ê¡¼
++¤­¤ç¤¦¤À¤¤¤â¤Ê¡¼¤Î¤Ï¤Ï #JN ·»Äï¥â¥Ê¡¼¤ÎÊì
++¤­¤ç¤¦¤È¤¦¤»¤ó¤»¤¤ #JN ¶µÆ¬ÀèÀ¸
++¤­¤ç¤¦¤È¤±¤ó #CN µþÅÔ¸©
++¤­¤ç¤¦¤È¤±¤ó #CNS µþÅÔ¸©
++¤­¤ç¤¦¤È¤±¤ó #T35 µþÅÔ¸©
++¤­¤ç¤¦¤È¤·¤ª¤ª¤Ä¤¯ #CN µþÅÔ»ÔÂçÄŶè
++¤­¤ç¤¦¤È¤·¤ª¤ª¤Ä¤¯ #CNS µþÅÔ»ÔÂçÄŶè
++¤­¤ç¤¦¤È¤·¤ª¤ª¤Ä¤¯ #T35 µþÅÔ»ÔÂçÄŶè
++¤­¤ç¤¦¤È¤ì¤ó¤¸¤ã¡¼ #JN µþÅÔ¥ì¥ó¥¸¥ã¡¼
++¤­¤ç¤¦¤Ï¤ó #T35 ¶¦¥Ï¥ó
++¤­¤ç¤¦¤æ¤¦¤­¤ã¤Ã¤× #T35 ¶¦Í­¥­¥ã¥Ã¥×
++¤­¤ç¤¦¤æ¤¦¤³¤Æ¤Ï¤ó #T35 ¶¦Í­¥³¥Æ¥Ï¥ó
++¤­¤ç¤¦¤æ¤¦¤È¤ê¤Ã¤× #T35 ¶¦Í­¥È¥ê¥Ã¥×
++¤­¤ç¤¸¤ó #T35 µõ¿Ð
++¤­¤ç¤À¤¤¤±¤¤¤¸¤Ð¤ó #T35 µðÂç·Ç¼¨ÈÄ
++¤­¤ç¤À¤¤¤±¤¤¤¸¤Ð¤ó¤°¤ó #T35 µðÂç·Ç¼¨ÈÄ·²
++¤­¤ç¤ß¤ß¤â¤Ê¡¼ #JN µð¼ª¥â¥Ê¡¼
++¤­¤é¤ê #JN ¡Ê¡±¡¼+¡±¡ËŽ·Ž×ŽØ
++¤­¤é¤ê #JN ¥­¥é¥ê
++¤­¤é¤ê #JN Ž·Ž×ŽØ
++¤­¤ê¤³¤ß¤¿¤¤¤Á¤ç¤¦ #JN ÀÚ¹þÂâĹ
++¤­¤ê¤³¤ß¤¿¤¤¤Á¤ç¤¦¤È¤Ò¤í¤æ¤­ #JN ÀÚ¹þÂâĹ¤È¤Ò¤í¤æ¤­
++¤­¤ê¤Ð¤ó #T35 ¥­¥ê¥Ð¥ó
++¤­¤ê¤Ð¤ó #T35 ¥­¥êÈÖ
++¤­¤ê¤Ð¤ó¤²¤Ã¤¿¡¼ #T35 ¥­¥êÈÖ¥²¥Ã¥¿¡¼
++¤­¤ê¤Ð¤ó¤²¤Ã¤¿¤¢ #T35 ¥­¥êÈÖ¥²¥Ã¥¿¡¼
++¤­¤ó #T35 ¶â
++¤­¤ó¤­¤¸¤É¤¦ #JN ¶áµ¦»ùƸ
++¤­¤ó¤­¤¸¤É¤¦ #T35 ¶áµ¦»ùƸ
++¤­¤ó¤°¤â¤Ê¤ê¤¾¤ó #JN ¥­¥ó¥°¥â¥Ê¥ê¥¾¥ó
++¤­¤ó¤°¤ì¤ª¤â¤ê¤è¤·¤í¤¦ #JN ¥­¥ó¥°¥ì¥ª¿¹Á±Ï¯
++¤­¤ó¤À¤¤ #T35 ¶áÂå
++¤­¤ó¤Þ¤ó¤³ #JN ¥­¥ó¥Þ¥ó¥³
++¤­¤ó¤Þ¤ó¤³ #T35 ¥­¥ó¥Þ¥ó¥³
++¤­¤ó¤Þ¤ó¤³¤­¤ç¤¦ #KK ¥­¥ó¥Þ¥ó¥³¶µ
++¤­¤ó¤Þ¤ó¤³¤­¤ç¤¦ #T35 ¥­¥ó¥Þ¥ó¥³¶µ
++¤®¤¬ #JN ¥®¥¬
++¤®¤¬¤á¤¹ #JN ¥®¥¬¥á¥¹
++¤®¤³ #CJ ¥®¥³
++¤®¤³ #JN ¥®¥³
++¤®¤³¡¼¤° #JN ¥®¥³¡¼¥°
++¤®¤³¤¢¤¤¤¹ #JN ¥®¥³¥¢¥¤¥¹
++¤®¤³¤¤¤Ì #JN ¥®¥³¸¤
++¤®¤³¤¦¤µ #JN ¥®¥³¥¦¥µ
++¤®¤³¤¨¤â¤ó #JN ¥®¥³¤¨¤â¤ó
++¤®¤³¤¨¤ë #JN ¥®¥³¥¨¥ë
++¤®¤³¤«¤ï¤À¤ó¤· #JN ¥®¥³ÀîÃÌ»Ö
++¤®¤³¤¬¤¨¤ë #JN ¥®¥³¥¬¥¨¥ë
++¤®¤³¤­¤ç¤¦¤¸¤å #JN ¥®¥³¶µ¼ø
++¤®¤³¤®¤³ #CJ ¥®¥³¥®¥³
++¤®¤³¤®¤³¤¹¤± #JN µ¼¸Å¥®¥³½õ
++¤®¤³¤®¤³¤¿ #JN µ¼¸Å¥®¥³ÂÀ
++¤®¤³¤¯¤µ #JN ¥®¥³Áð
++¤®¤³¤±¤ó¤­¤å¤¦¤¤¤ó #JN ¥®¥³¸¦µæ°÷
++¤®¤³¤³ #JN ¡¡¡¡¢¬¥â¥Ê»Ò¡Ú¤â¤Ê¤³¡Û¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢¬¥®¥³»Ò
++¤®¤³¤³ #JN ¥®¥³»Ò
++¤®¤³¤¸¤É¤¦¤·¤ã¤¬¤Ã¤³¤¦ #JN ¥®¥³¼«Æ°¼Ö³Ø¹»
++¤®¤³¤¹¤¿¡¼¤°¤ó #JN ¥®¥³¥¹¥¿¡¼·³
++¤®¤³¤¹¤¿¡¼¤°¤ó #JN Ž·ŽÞŽºŽ½ŽÀŽ°·³
++¤®¤³¤¹¤¿¡¼¤°¤ó #JN ŽÓŽÅŽ°ŽÑŽ°ŽÝ·³
++¤®¤³¤»¤ó¤È¤¦¤¤¤ó #JN ¥®¥³ÀïÆ®°÷
++¤®¤³¤¿¤¯ #JN ¥®¥³¥¿¥¯
++¤®¤³¤¿¤Þ¤³ #JN µ¼¸Å¶Ì»Ò
++¤®¤³¤Á¤ã¤ó¤â¤Ê¤Á¤ã¤ó #JN ¥®¥³¤Á¤ã¤ó¥â¥Ê¤Á¤ã¤ó
++¤®¤³¤Á¤å¤¦ #JN ¥®¥³¥Á¥å¥¦
++¤®¤³¤Á¤å¤¦ #JN ¥®¥³¿ß
++¤®¤³¤Ä¤ê¡¼ #JN ¥®¥³¥Ä¥ê¡¼
++¤®¤³¤Æ¤ó¤ª¤ª¤®¤ê #JN ¥®¥³ÅÀ¡¡Âç´îÍø¡¡
++¤®¤³¤Ê¤Ó #KK ¥®¥³¥Ê¥Ó
++¤®¤³¤Ê¤Ó #T35 ¥®¥³¥Ê¥Ó
++¤®¤³¤Í¤³ #JN ¥®¥³¥Í¥³
++¤®¤³¤Í¤³ #JN ¥®¥³Ç­
++¤®¤³¤Í¤³ #JN ¥®¥³Ç­¡¡
++¤®¤³¤Í¤³ #T35 ¥®¥³Ç­
++¤®¤³¤Í¤³¤ê¤ç¤À¤ó¤¢¤Ã¤È¤À¤ó¤Á¤ç¡¼ #JN ¥®¥³Ç­Î¹ÃÄ¡÷ÃÄĹ
++¤®¤³¤Î¤»¤ó¤¾ #JN ¥®¥³¤ÎÀèÁÄ
++¤®¤³¤Ï¤Á #JN ¥®¥³È­
++¤®¤³¤Ï¤Ë¤ã¡¼¤ó #CJ ¥®¥³¥Ï¥Ë¥ã¡¼¥ó
++¤®¤³¤Ï¤Ë¤ã¡¼¤ó #JN ¥®¥³¥Ï¥Ë¥ã¡¼¥ó
++¤®¤³¤Ï¤Ï¤Ï #CJ ¥®¥³¥Ï¥Ï¥Ï
++¤®¤³¤Ñ¤í #JN ¥®¥³¥Ñ¥í
++¤®¤³¤Ñ¤í #KK ¥®¥³¥Ñ¥í
++¤®¤³¤Ñ¤í #T35 ¥®¥³¥Ñ¥í
++¤®¤³¤Õ¤¦¤Õ #JN µ¼¸ÅÉ×ÉØ
++¤®¤³¤Õ¤µ¤ê¤ª¤ë¤·¤ç¤¦¤°¤ó #JN ¥®¥³¡¦¥Õ¥µ¥ê¥ª¥ë¾­·³
++¤®¤³¤Ù¡¼¤À¡¼ #JN ¥®¥³¥Ù¡¼¥À¡¼
++¤®¤³¤Ú #KK ¥®¥³¥Ú
++¤®¤³¤Ú #T35 ¥®¥³¥Ú
++¤®¤³¤Þ¤ë¤µ¤ó¤¢¤¤¤¨¤¹ #JN G503is
++¤®¤³¤ß #JN ¥®¥³¥ß
++¤®¤´¤Á¤ã¤ó¤â¤Ê¤Á¤ã¤ó #JN ¥®¥³¤Á¤ã¤ó¥â¥Ê¤Á¤ã¤ó
++¤®¤¸¤ó¤«¤£¤ç¤¥ #JN µ¼¿Í²½¤£¤ç¤¥
++¤®¤¸¤ó¤«¤¸¤µ¤¯¤¸¤¨¤ó #JN µ¼¿Í²½¥¸¥µ¥¯¥¸¥¨¥ó
++¤®¤¸¤ó¤«¤â¤é¤é¡¼ #JN µ¼¿Í²½¥â¥é¥é¡¼
++¤®¤Ã¤³¤·¤§¤ë¤Õ #KK ¥®¥Ã¥³¥·¥§¥ë¥Õ
++¤®¤Ã¤³¤ê #CJ ¥®¥Ã¥³¥ê
++¤®¤Î¤³ #JN ¥®¥Î¥³
++¤®¤Î¤³ #JN ¥®¥Î¥³ 
++¤®¤ã¤¯¤®¤ì¤ß¤º¤«¤±¤â¤Ê¡¼ #JN µÕ¥®¥ì¿å³Ý¤±¥â¥Ê¡¼
++¤®¤ã¤¯¤®¤ì¤ß¤º¤«¤±¤â¤Ê¡¼¤Ñ¡¼¤Õ¤§¤¯¤È¤Ð¤ó #JN µÕ¥®¥ì¿å³Ý¤±¥â¥Ê¡¼¥Ñ¡¼¥Õ¥§¥¯¥ÈÈÇ
++¤®¤ã¤¯¤µ¤Ä¤Á¤å¤¦ #T35 µÔ»¦¿ß
++¤®¤ã¤¯¤µ¤Ä¤Á¤ó #T35 µÔ»¦ÄÁ
++¤®¤ã¤¯¤¿¤¤¤®¤ã¤¯¤µ¤Ä¤¢¤¹¤­¤¤¤¢¤¢¤È #T35 µÔÂÔ¡¦µÔ»¦AA
++¤®¤ã¤¯¤¿¤¤¤·¤ç¤¯¤Ë¤ó #T35 µÔÂÔ¿¦¿Í
++¤®¤ã¤¯¤¿¤¤¤¹¤ì #T35 µÔÂÔ¥¹¥ì
++¤®¤ã¤¯¤Ï¤Ä¤É¤¦ #T30 µÕȯư
++¤®¤ã¤ó #JN ¥®¥ã¥ó
++¤®¤ç¤¯¤ä¤í¤¦ #T35 ¥®¥ç¥¯ÌîϺ
++¤®¤ë¤¡¤â¤Ê #JN ¥®¥ë¥¡¥â¥Ê
++¤®¤ë¤Ë¤ã¡¼¤Î #JN ¥®¥ë¥Ë¥ã¡Á¥Î
++¤®¤í¤ó¤«¤ó¤½¤¦¤¹¤ì¤Ã¤É #T35 µÄÏÀ¡¦´¶ÁÛ¥¹¥ì¥Ã¥É
++¤®¤í¤ó¤¹¤­¡¼ #T35 ¥®¥í¥ó¥¹¥­¡¼
++¤®¤í¤ó¤¹¤­¤¤ #T35 ¥®¥í¥ó¥¹¥­¡¼
++¤®¤ó¤¨¤ó¤Þ¤ó¤»¤¨ #T35 ¶ä±öËüºÐ
++¤¯¤¤¤º¤ß¤ê¤â¤Í¤¢ #JN ¡ð¡ð¡ð¡ð¥¯¥¤¥º¡¦¥ß¥ê¥â¥Í¥¢¡ð¡ð¡ð¡ð
++¤¯¤¦¤­ #T35 ¶õµ¤
++¤¯¤¦¤­¤³¤Æ¤¤ #T35 ¶õµ¤¸ÇÄê
++¤¯¤¦¤­¤è¤á¤Æ¤Í¡¼¤è #JN ¥¯¥¦¥­¥è¥á¥Æ¥Í¡¼¥è
++¤¯¤¦¤¸¤ç¤¦¤â¤Ê¤¿¤í¤¦ #JN ¶õ¾ò¥â¥ÊÂÀϺ
++¤¯¤¦¤¸¤ç¤¦¤â¤Ê¤ê¡¼¤ó #JN ¶õ¾ò¥â¥Ê¥ê¡¼¥ó
++¤¯¤¦¤Æ¤¤¤â¤Ê¡¼ #JN ¶õÄò¥â¥Ê¡¼
++¤¯¤ª¤© #CJ ¤¯¤ª¤©
++¤¯¤µ #T35 ¥¯¥µ
++¤¯¤µ #T35 Áð
++¤¯¤µ¡¼ #JN ¡ÊŽß§×Žß¡ËŽ¸Ž»Ž°
++¤¯¤µ¡¼ #JN ¥¯¥µ¡¼
++¤¯¤µ¡¼ #JN Ž¸Ž»Ž°
++¤¯¤µ¤¤¤¿¤Þ #T35 ¥¯¥µ¥¤¥¿¥Þ
++¤¯¤µ¤Á¤å¡¼¤´ #KK ¥¯¥µ¥Á¥å¡¼¸ì
++¤¯¤µ¤Á¤å¡¼¤´ #T35 ¥¯¥µ¥Á¥å¡¼¸ì
++¤¯¤µ¤Á¤å¤¦¤´ #T35 ¥¯¥µ¥Á¥å¡¼¸ì
++¤¯¤· #T35 ¶ú
++¤¯¤·¤¶¤·¤ª¤Í¤¨¤µ¤ó #JN ¶ú»É¤·¤ª»Ð¤µ¤ó
++¤¯¤»¤¤¤¸¤¤¤¤¤Á¤¾¤¯ #T35 ¥¯¥»¥¤¥¸¡¼°ì²
++¤¯¤½¤²¡¼¤â¤Ê¡¼ #JN ¥¯¥½¥²¡¼¥â¥Ê¡¼
++¤¯¤½¤³¤Æ #T35 ʵ¥³¥Æ
++¤¯¤½¤µ¤ó¤Ó¤ã¤¯¤È¤ó #JN KuSo300t 
++¤¯¤½¤¹¤ì #T35 ¥¯¥½¥¹¥ì
++¤¯¤½¤¹¤ì #T35 ʵ¥¹¥ì
++¤¯¤½¤¹¤ì¤ª¤È¤³ #JN ¥¯¥½¥¹¥ìÃË
++¤¯¤½¤¹¤ì¤«¤¤¤·¤å¤¦¤®¤ç¤¦¤·¤ã #JN ʵ¥¹¥ì²ó¼ý¶È¼Ô
++¤¯¤½¤¹¤ì¤±¤ó¤»¤Ä¤¤¤¤¤ó¤«¤¤ #T35 ʵ¥¹¥ì·úÀß°Ñ°÷²ñ
++¤¯¤½¤¹¤ì¤·¤¹¤¦¤Û¤¦¤³¤¯¤¤¤¤¤ó¤«¤¤ #JN ʵ¥¹¥ì»Ø¿ôÊó¹ð°Ñ°÷²ñ
++¤¯¤½¤¹¤ì¤·¤ó #JN ¥¯¥½¥¹¥ì¿À
++¤¯¤½¤¹¤ì¤Ï #JN ʵ¥¹¥ì¤ÏΩ¤Æ¤ó¤Ê¤Ã¤Æ¸À¤Ã¤¿¤í¤¦¤¬¥ô¥©¥±¤¬¡¼¡¼¡ª
++¤¯¤½¤¹¤ì¤â¤Ê¡¼ #JN ¥¯¥½¥¹¥ì¥â¥Ê¡¼
++¤¯¤½¤¹¤ì¤ï¤Ã¤·¤ç¤¤ #JN ¥¯¥½¥¹¥ì¥ï¥Ã¥·¥ç¥¤
++¤¯¤½¤Á¤å¤¦¤Ü¤¦¤Ç¤ó¤Ñ¤À¤³¤ê¤ã #JN ʵ¿ß˼ÅÅÇȤÀ¤³¤ê¤ã¡ª
++¤¯¤½¤Ç¤«¤¤¤¢¤¹¤­¡¼¤¢¡¼¤È #JN ʵ¤Ç¤«¤¤£Á£Á
++¤¯¤½¤Ð¤³ #T35 ʵȢ
++¤¯¤½¤Ü¤Ã¤¯¤¹ #T35 ʵ¥Ü¥Ã¥¯¥¹
++¤¯¤½¤ê¤×¤È #T35 ¥¯¥½¥ê¥×¥È
++¤¯¤½¤ì¤¹ #T30 ʵ¥ì¥¹
++¤¯¤½¤ì¤¹ #T35 ʵ¥ì¥¹
++¤¯¤À¤·¤Ä #T35 ¤¯¤À¼Á
++¤¯¤À¤é¤Ê¤¤¤·¤Ä¤â¤ó #T35 ¤¯¤À¤é¤Ê¤¤¼ÁÌä
++¤¯¤À¤é¤Ê¤¤¤·¤Ä¤â¤ó¤¹¤ì #T35 ¤¯¤À¤é¤Ê¤¤¼ÁÌ䥹¥ì
++¤¯¤À¤é¤Í¡¼¤è #JN ¥¯¥À¥é¥Í¡¼¥è
++¤¯¤Á¤¯¤Á #T35 ¸ý¸ý
++¤¯¤Á¤Ó¤ë¤² #T35 ¥¯¥Á¥Ó¥ë¥²
++¤¯¤Ã¤­¡¼ #T35 ¥¯¥Ã¥­¡¼
++¤¯¤Ã¤­¤¤ #T35 ¥¯¥Ã¥­¡¼
++¤¯¤Ã¤¯¤ë¤É¤¥¤É¤¥¤É¤¥ #JN Ž¸Ž¯Ž¸ŽÙŽÄŽÞŽ©ŽÄŽÞŽ©ŽÄŽÞŽ©
++¤¯¤É¤¦¤â¤Ê #JN ¹©Æ£¥â¥Ê
++¤¯¤Ë¤ª #JNM ¥¯¥Ë¥ò
++¤¯¤Ë¤ª #T35 ¥¯¥Ë¥ò
++¤¯¤Ë¤ª¤¯¤ó¤¯¤í¤¹¤«¤ó¤È¤ê¡¼¤Ø¤ó #JN ¤¯¤Ë¤ª¤¯¤ó¥¯¥í¥¹¥«¥ó¥È¥ê¡¼ÊÔ¡¡
++¤¯¤Ë¤µ¤ï¤Í¤Ã¤È¤Ë¤¤¤± #CJ kunisawa.net¤ËÀ¤±
++¤¯¤Ó¤Ä¤ê¤®¤³ #JN ¼óÄߤꥮ¥³
++¤¯¤Þ¤µ¤ó¤³¤ª¤¹ #T35 ¤¯¤Þ¤µ¤ó¥³¡¼¥¹
++¤¯¤á¡¼¤ë #T35 ·©¡¼¥ë
++¤¯¤á¤¨¤ë #T35 ·©¡¼¥ë
++¤¯¤á¤â¤Ê¡¼ #JN ·©¥â¥Ê¡¼
++¤¯¤é #T35 ÁÒ
++¤¯¤é #T35 ¢
++¤¯¤é¤¤¤¿ #T35 ¥¯¥éÈÄ
++¤¯¤é¤¨¤Ï¤¤¤Ö¤ê¤¹ #JN ¤¯¤é¤¨¥Ï¥¤¥Ö¥ê¥¹
++¤¯¤é¤¯ #T30 ¥¯¥é¥¯
++¤¯¤é¤² #T35 ¥¯¥é¥²
++¤¯¤é¤² #T35 ³¤·î
++¤¯¤é¤Ã¤«¡¼ #T35 ¥¯¥é¥Ã¥«¡¼
++¤¯¤é¤Ã¤«¤¢ #T35 ¥¯¥é¥Ã¥«¡¼
++¤¯¤é¤Ã¤¯ #T30 ¥¯¥é¥Ã¥¯
++¤¯¤é¤é¤¬¤¿¤Ã¤¿ #JN ¥¯¥é¥é¤¬Î©¤Ã¤¿
++¤¯¤é¤ò¤¿ #T35 ¥¯¥é¥ò¥¿
++¤¯¤ê¡¼¤ó¤Ò¤Ã¤È #T30 ¥¯¥ê¡¼¥ó¥Ò¥Ã¥È
++¤¯¤ê¤³ #JN ¤¯¤ê»Ò
++¤¯¤ê¤Á¤å¤¦ #T35 ·ª¿ß
++¤¯¤ì¤¢¤é¤·¤ë #KK ¥¯¥ì¥¢¥é¥·¥ë
++¤¯¤ì¤¤¤¸¤¤¤´¤¦¤¹¤È #T35 ¥¯¥ì¥¤¥¸¡¼¥´¡¼¥¹¥È
++¤¯¤ì¤¯¤ì¤¯¤ó #T35 ¤¯¤ì¤¯¤ì·¯
++¤¯¤ì¤¯¤ì¤Á¤å¤¦¤Ü¤¦¤Ü¤¯¤á¤Ä¤¹¤¤¤·¤ó¤¤¤¤¤ó¤«¤¤ #JN ¤¯¤ì¤¯¤ì¿ß˼ËÐÌÇ¿ä¿Ê°Ñ°÷²ñ
++¤¯¤í¤·¤ç¤¦¤¾¤¯ #T35 ¹õÁõ«
++¤¯¤í¤·¤ç¤¦¤¾¤¯¤ª¤Õ #T35 ¹õÁõ«OFF
++¤¯¤í¤Þ¤é¤é¡¼ #JN ¹õ¥Þ¥é¥é¡¼
++¤¯¤í¤ß¤ß¤â¤Ê¡¼ #JN ¹õ¼ª¥â¥Ê¡¼
++¤¯¤í¤à¤Ä #T35 ¹õ¥à¥Ä
++¤¯¤ï¤é #CJ ¥¯¥ï¥é
++¤¯¤ï¤é #CJ Ž¸ŽÜŽ×
++¤° #T35 ¶ñ
++¤°¤¢¤ï¤» #T35 ¶ñ¹ç¤ï¤»
++¤°¤Ã¤¸¤ç¤Ö #CJ ¥°¥Ã¥¸¥ç¥Ö
++¤°¤Ã¤¸¤ç¤Ö #CJ Ž¸ŽÞŽ¯Ž¼ŽÞŽ®ŽÌŽÞ
++¤°¤Ã¤É¤Õ¤£¤¤¤ê¤ó¤° #CJ ¥°¥Ã¥É¥Õ¥£¡¼¥ê¥ó¥°
++¤°¤â¤Ã¤Á¤å¤¤¤¤¤ó #T35 ¥°¥â¥Ã¥Á¥å¥¤¡¼¥ó
++¤°¤ê¡¼¤ó #T35 ¥°¥ê¡¼¥½
++¤°¤ê¡¼¤ó #T35 ¥°¥ê¡¼¥ó
++¤°¤ê¤¤¤ó¤Í¤¨¤µ¤ó #T35 ¥°¥ê¡¼¥ó°¹¤µ¤ó
++¤°¤ê¤¤¤ó¤Í¤¨¤µ¤ó #T35 ¥°¥ê¡¼¥ó»Ð¤µ¤ó
++¤°¤ì¡¼¤È¤¬¤ó¤Ð¤ë¤â¤Ê¡¼ #JN ¥°¥ì¡¼¥È¥¬¥ó¥Ð¥ë¥â¥Ê¡¼
++¤°¤ì¤Á¤ã¤ó #JN ¥°¥ì¤Á¤ã¤ó 
++¤°¤í #T35 ¥°¥í
++¤°¤ó¤È¤¦¤®¤³ #JN ·³Å᥮¥³
++¤°¤ó¤Þ¤±¤ó #CN ·²Çϸ©
++¤±¡¼ #T35 £Ë
++¤±¡¼¤­¤ä¤Ý¤ó¤É #JN ¥±¡¼¥­²°¡ò
++¤±¤¤¤ª¤¦ #T35 KO
++¤±¤¤¤­¤å¤¦ #T35 KQ
++¤±¤¤¤³¤¯¤Ö¤ó #T35 ·Ù¹ðʸ
++¤±¤¤¤·¤Á¤ç¤¦ #JN ·Ù»ëÄ£
++¤±¤¤¤¸¤Ð¤ó #T35 ·Ç¼¨ÈÄ
++¤±¤¤¤¸¤Ð¤ó¤¤¤Á¤é¤ó #T35 ·Ç¼¨ÈÄ°ìÍ÷
++¤±¤¤¤¸¤Ð¤ó¤È¤Ã¤×¤Ø #CJ ·Ç¼¨ÈĥȥåפØ
++¤±¤¤¤¿¤¤¤Ç¤ó¤ï¤â¤Ê¡¼ #JN ·ÈÂÓÅÅÏÃ¥â¥Ê¡¼
++¤±¤¬¤Ë #JN ÌÓ¤¬¤Ë
++¤±¤³¡¼¤ó #T30 ¥±¥³¡¼¥ó
++¤±¤³¡¼¤ó #T30 Ž¹ŽºŽ°ŽÝ
++¤±¤Ã¤³¤ó #T30 ·ëº§
++¤±¤Ã¤Ú¤­ #T35 ·éÊÊ
++¤±¤Ã¤Ú¤­¤¯¤ó #T35 ·éÊÊ·¯
++¤±¤Ä¤¬¤ó #T35 ÊÇ´ä
++¤±¤Ä¤² #T35 ¤±¤ÄÌÓ
++¤±¤Æ¤ë #CJ ¤±¤Æ¤ë
++¤±¤í¤Ô¡¼ #JN ¥±¥í¤Ô¡¼
++¤±¤í¤ê¤ó¤²¤ë¤Ó¤È¤¦ #T35 ¥±¥í¥ê¥ó¥²¥ëÈøÆ£
++¤±¤ó #JNM ¤±¤ó
++¤±¤ó¤«¤Ï¤ä¤á¤Æ #JN ¤±¤ó¤«¤Ï¤ä¤á¤Æ¡Ê¡ü¡­¡¼¡®¡ü¡Ë
++¤±¤ó¤«¤ó¤Á¤å¤¦ #T35 ·ù´Ú¿ß
++¤±¤ó¤±¤ó¤«¤ó¤Á¤å¤¦ #T35 ·ù·ù´Ú¿ß
++¤²¡¼¤Ï¡¼¤¤¤¿ #CN ¥²¡¼¥Ï¡¼ÈÄ
++¤²¤­¤¦¤é¤¸¤ç¤¦¤Û¤¦ #T35 ·ã΢¾ðÊó
++¤²¤­¤¸¤ç¤¦ #T35 ·à¾ì
++¤²¤¹¤È¤²¤¹¤È #CJ guestguest
++¤²¤½¤ª¤½ #T35 ¥²¥½¥ª¥½
++¤²¤½¤ª¤½ #T35 Ž¹ŽÞŽ¿ŽµŽ¿
++¤²¤Ã¤³¤¦ #T35 ·î¸÷
++¤²¤Ã¤¿¡¼¤â¤Ê¤Þ¤Þ #JN ¥²¥Ã¥¿¡¼¥â¥Ê¥Þ¥Þ
++¤²¤Ã¤Ä #T35 ¥²¥Ã¥Ä
++¤²¤Ã¤×¡¼ #JN ¥²¥Ã¥×¡¼
++¤²¤É¤¦¤»¤ó¤»¤¤ #JN ³°Æ»ÀèÀ¸
++¤²¤é #JN ¥²¥é
++¤²¤é #JN ¥²¥é¥é¡¼
++¤²¤é¤é¡¼ #JN ¥²¥é
++¤²¤é¤é¡¼ #JN ¥²¥é¥é¡¼
++¤²¤í¤¤¤¿ #CN ¥²¥íÈÄ
++¤²¤í¤¤¤¿ #T35 ¥²¥íÈÄ
++¤²¤í¤â¤Ê¡¼ #JN ¥²¥í¥â¥Ê¡¼
++¤²¤ó¤ª¤ó #T35 ¥²¥½¥ª¥½
++¤²¤ó¤ª¤ó #T35 Ž¹ŽÞŽ¿ŽµŽ¿
++¤²¤ó¤·¤ª¤¦ #JN ¸¶»Ò²¦
++¤²¤ó¤·¤Ð¤¯¤À¤ó #JN ¸¶»ÒÇúÃÆ
++¤²¤ó¤¸¤ó #T35 ¸¶¿Í
++¤³¡¼¤Û¡¼ #T35 ¥³¡¼¥Û¡¼
++¤³¡¼¤Û¡¼ #T35 ¹ªÊò
++¤³¡¼¤Û¡¼ #T35 ¹âÊò
++¤³¤¢¤ê #T35 »ÒµÂ
++¤³¤¤¤Á¤¸¤«¤ó¤È¤¤¤Ä¤á¤¿¤¤ #CJ ¾®°ì»þ´ÖÌ䤤¤Ä¤á¤¿¤¤
++¤³¤¦¡«¤¡ #T35 ¥³¥ô¥¡
++¤³¤¦¡«¤¡¤¤¤¿ #CN ¥³¥ô¥¡ÈÄ
++¤³¤¦¡«¤¡¤¤¤¿ #T35 ¥³¥ô¥¡ÈÄ
++¤³¤¦¤¨¤¤¤Ø¤¤ #JN ¹È±Òʼ
++¤³¤¦¤«¤¤¤·¤ç¤±¤¤ #T35 ¸ø³«½è·º
++¤³¤¦¤«¤ó¤Á¤å¤¦ #T35 ¹¥´Ú¿ß
++¤³¤¦¤°¤· #T35 ¹©¶ñ»Õ
++¤³¤¦¤°¤· #T35 ¹á¶ñ»Õ
++¤³¤¦¤³¤¯¤Á¤å¤¦¤Ü¤¦ #T35 ¹­¹ð¿ß˼
++¤³¤¦¤³¤¯¤è¤± #T35 ¹­¹ð½ü¤±
++¤³¤¦¤µ¤¯¤¤¤ó #T35 ¹©ºî°÷
++¤³¤¦¤·¤­¤»¤Ã¤Æ¤¤ #T35 ¸ø¼°ÀßÄê
++¤³¤¦¤¿¤¤¤·¤µ¤Þ #JN ¹ÄÂÀ»ÒÍÍ
++¤³¤¦¤À¤ó¤®¤³ #JN ¹ÖÃ̵¼¸Å
++¤³¤¦¤Á¤ç¤¦¤· #T35 ¤³¤¦¤Á¤ç¤¦¤·
++¤³¤¦¤Ä¤¦¤¤¤Ï¤ó¤Î¤â¤ß¤±¤·¤«¤¿ #KK ¸òÄÌ°ãÈ¿¤ÎÙæ¤ß¾Ã¤·Êý
++¤³¤¦¤Ê¤Ã¤Æ¤ë¤Ï¤º¤¬¤³¤¦¤Ê¤Ã¤Æ¤ë¤ó¤Ç¤¹ #CJ ¤³¤¦¤Ê¤Ã¤Æ¤ë¤Ï¤º¤¬¡¢¤³¤¦¤Ê¤Ã¤Æ¤ë¤ó¤Ç¤¹¡£
++¤³¤¦¤Î¤è¤¦¤Ø¤¤ #JN ¹¾¤ÎÍÃʼ
++¤³¤¦¤Î¤è¤¦¤Ø¤¤ #T35 ¹¾¤ÎÍÃʼ
++¤³¤¦¤Ð¤· #KY ¹á¤Ð¤·
++¤³¤¦¤Ð¤· #KYmi ¹á¤Ð¤·
++¤³¤¦¤Ù #KK ¼ó
++¤³¤¦¤Ù #T35 ¼ó
++¤³¤¦¤Û¤¦ #T35 ¥³¡¼¥Û¡¼
++¤³¤¦¤Û¤¦ #T35 ¹ªÊò
++¤³¤¦¤Û¤¦ #T35 ¹âÊò
++¤³¤¦¤Ü¤¦ #T35 ¹©Ë¼
++¤³¤¦¤â¤ê¤â¤Ê¡¼ #JN ¥³¥¦¥â¥ê¥â¥Ê¡¼
++¤³¤¦¤â¤ó¤¤¤Ã¤Æ¤è¤· #CJ æêÌçÀ¤äƤ褷
++¤³¤¦¤ê¤Ä¤Á¤å¤¦ #T35 ¸øΩÃî
++¤³¤¦¤ê¤ó #T30 ¸÷Î×
++¤³¤¦¤ê¤ó #T30 ¹ßÎ×
++¤³¤¯¤ê¤Ä¤¨¤­¤Ù¤ó¤«¤Ö #T35 ¹ñΩ±ØÊۡʳô¡Ë
++¤³¤¯¤ê¤Ä¤Ï¤¦¤Ä¤¯¤·¤¤¤·¤ê¤Ä¤Ï¤ß¤Ë¤¯¤¤ #CJ ¹ñΩ¤ÏÈþ¤·¤¤¡¢¿¬ÄŤϽ¹¤¤
++¤³¤¯¤ì¤ó¤Ê¤Ê¤·¤µ¤ó #T35 ¹ñÏ¢¤ÊÀ®¤·¤µ¤ó
++¤³¤³¤Ç¤¢¤² #CJ ¤³¤³¤Ç¤¢¤²
++¤³¤³¤Ï¤´¤¸¤ã¡¼¤¹¤Ê¤¹¤ì¤Ã¤É¤À¤è #JN (¡¦¢Ï¡¦)ŽºŽºŽÊŽºŽÞŽ¼ŽÞŽ¬Ž°Ž½ŽÅŽ½ŽÚŽ¯ŽÄŽÞŽÀŽÞŽÖ
++¤³¤³¤Ï¤´¤¸¤ã¡¼¤¹¤Ê¤¹¤ì¤Ã¤É¤À¤è #JN ¥³¥³¥Ï¥´¥¸¥ã¡¼¥¹¥Ê¥¹¥ì¥Ã¥É¥À¥è
++¤³¤³¤Ï¤´¤¸¤ã¡¼¤¹¤Ê¤¹¤ì¤Ã¤É¤À¤è #JN ŽºŽºŽÊŽºŽÞŽ¼ŽÞŽ¬Ž°Ž½ŽÅŽ½ŽÚŽ¯ŽÄŽÞŽÀŽÞŽÖ
++¤³¤³¤Ï¤É¤³¤¸¤ã #JN ¤³¤³¤Ï¤É¤³¤¸¤ã
++¤³¤³¤Ï¤É¤³¤¸¤ã #JN ¥³¥³¥Ï¥É¥³¥¸¥ã
++¤³¤³¤Ï¤É¤³¤¸¤ã #JN ŽºŽºŽÊŽÄŽÞŽºŽ¼ŽÞŽ¬
++¤³¤³¤Ï¤Ò¤É¤¤¤¤¤ó¤¿¤¢¤Í¤Ã¤È¤Ç¤¹¤Í #CJ ¤³¤³¤Ï¤Ò¤É¤¤¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤Ç¤¹¤Í
++¤³¤³¤Ï¤ï¤»¤À¤¸¤ã¤Ê¤¤¤è #CJ ¤³¤³¤ÏÁá°ðÅĤ¸¤ã¤Ê¤¤¤è
++¤³¤³¤Ï¤ï¤ë¤¤¤¤¤ó¤¿¤¢¤Í¤Ã¤È¤Ç¤¹¤Í #CJ ¤³¤³¤Ï°­¤¤¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤Ç¤¹¤Í
++¤³¤³¤Þ¤Ç¤è¤ó¤À #CJ --------¤³¤³¤Þ¤ÇÆɤó¤À-------
++¤³¤·¤ª #T35 ¾®±ö
++¤³¤·¤Ì¤± #KK ¹øÈ´¤±
++¤³¤·¤Ì¤± #T35 ¹øÈ´¤±
++¤³¤¸¤­¤â¤Ê¡¼ #JN ¸ð¿©¥â¥Ê¡¼
++¤³¤¹¤×¤ì¤Æ¤ó #T35 ¥³¥¹¥×¥ìŹ
++¤³¤¾¤¦ #JN ¾®ÁÎ
++¤³¤¾¤¦ #T35 ¾®ÁÎ
++¤³¤Ã¤¯¤â¤é¤é¡¼ #JN ¥³¥Ã¥¯¥â¥é¥é¡¼
++¤³¤Ã¤½¤ê¤µ¤ó #JN ¤³¤Ã¤½¤ê¤µ¤ó
++¤³¤Æ #T35 ¥³¥Æ
++¤³¤Æ¤¤ #T35 ¸ÇÄê
++¤³¤Æ¤¤¤¿¤¿¤­ #T30 ¸ÇÄê᤭
++¤³¤Æ¤¤¤Ï¤ó¤É¤ë #T35 ¸ÇÄê¥Ï¥ó¥É¥ë
++¤³¤Æ¤¤¤Ï¤ó¤É¤ë¤¹¤ì¤Ã¤É #T35 ¸ÇÄê¥Ï¥ó¥É¥ë¥¹¥ì¥Ã¥É
++¤³¤Æ¤¤¤Õ¤¡¤ó #T35 ¸ÇÄê¥Õ¥¡¥ó
++¤³¤Æ¤Ï¤ó #T35 ¥³¥Æ¥Ï¥ó
++¤³¤Æ¤Ï¤ó¤«¡¼¤Ë¤Ð¤ë #T35 ¥³¥Æ¥Ï¥ó¥«¡¼¥Ë¥Ð¥ë
++¤³¤Æ¤Ï¤ó¤«¤¢¤Ë¤Ð¤ë #T35 ¥³¥Æ¥Ï¥ó¥«¡¼¥Ë¥Ð¥ë
++¤³¤Æ¤Ï¤ó¤¹¤ì¤Ã¤É #T35 ¥³¥Æ¥Ï¥ó¥¹¥ì¥Ã¥É
++¤³¤É¤â¤Ê¡¼ #JN ¤³¤É¥â¥Ê¡¼
++¤³¤Ê¤· #T35 »ÒÍü
++¤³¤Ë¡¼ #T35 ¥³¥Ë¡¼
++¤³¤Ë¤¤ #T35 ¥³¥Ë¡¼
++¤³¤Î¤¦¤Ã¤¿¤¨¤Ï¤Þ¤¤¤Ë¤Á¤·¤Æ¤¤¤¯¤Ä¤â¤ê¤Ç¤¹ #CJ ¤³¤ÎÁʤ¨¤ÏËèÆü¤·¤Æ¤¤¤¯¤Ä¤â¤ê¤Ç¤¹
++¤³¤Î¤¹¤ì¤Ï¤¨¤í¤¤¤Ê #CJ ¤³¤Î¥¹¥ì¤Ï¥¨¥í¤¤¤Ê
++¤³¤Î¤¿¤³ #JN ¤³¤Î¥¿Žº
++¤³¤Î¤ä¤í¤¦ #CJ ¤³¤ÎÌîϺ¡ª
++¤³¤Ô¤Ú #T30 ¥³¥Ô¥Ú
++¤³¤Ô¤Ú¤¢¤é¤· #T35 ¥³¥Ô¥Ú¹Ó¤é¤·
++¤³¤Ô¤Ú¤¦¤¶ #KYT ¥³¥Ô¥Ú¤¦¤¶
++¤³¤Ô¤Ú¤Á¤å¤¦ #T35 ¥³¥Ô¥Ú¿ß
++¤³¤Ô¤Ú¤Ï¤«¤Á¤å¡¼¤·¤ã¤Ç¤¢¤Ü¡¼¤ó¤À¤è #JN ¤³¤Ô¤Ú¤Ï¤«¤Á¤å¡Á¤·¤ã¤Ç¤¢¤Ü¡Á¤ó¤À¤è
++¤³¤Ü¤æ¤­¡¼ #JN ¡ÊŽÒ¡¦¤ó¡¦¡Ë
++¤³¤Ü¤æ¤­¡¼ #JN ¥³¥Ü¥æ¥­¡¼
++¤³¤Þ¤Ä¤Ð¤é¤³¤¦¤³¤¦ #KK ¾®¾¾¸¶¹â¹»
++¤³¤Þ¤Ä¤Ð¤é¤³¤¦¤³¤¦ #T35 ¾®¾¾¸¶¹â¹»
++¤³¤Þ¤ë #JN ¥³¥Þ¥ë
++¤³¤ß¤± #KK ¥³¥ß¥±
++¤³¤ß¤Ñ #KK ¤³¤ß¥Ñ
++¤³¤ß¤Ñ #T35 ¤³¤ß¥Ñ
++¤³¤ß¤ß¤â¤Ê¡¼ #JN ¾®¼ª¥â¥Ê¡¼
++¤³¤á #T35 ¢¨
++¤³¤á¤·¤ª #KK ÊƱö
++¤³¤á¤·¤ª #T35 ÊƱö
++¤³¤á¤¸¤ª #KK ÊƱö
++¤³¤á¤¸¤ª #T35 ÊƱö
++¤³¤é #RT ¥³¥é
++¤³¤é #T35 ¥³¥é
++¤³¤ê¤ã¤Þ¡¼ #CN ¥³¥ê¥ã¥Þ¡¼
++¤³¤ê¤ã¤Þ¡¼ #T35 ¥³¥ê¥ã¥Þ¡¼
++¤³¤ê¤ã¤Þ¤¢ #T35 ¥³¥ê¥ã¥Þ¡¼
++¤³¤ê¤ó¤º #JN ¥³¥ê¥ó¥º
++¤³¤ê¤ó¤º¤¢¤é¤· #JN ¥³¥ê¥ó¥º¹Ó¤é¤·¡¡
++¤³¤ê¤ó¤º¤­¤é¡¼ #JN ¥³¥ê¥ó¥º¥­¥é¡¼
++¤³¤ê¤ó¤º¤À¡¼¤¯ #JN ¥³¥ê¥ó¥º¥À¡¼¥¯
++¤³¤ì¤ª¤â¤í¤¤ #CJ ¤³¤ì¤ª¤â¤í¤¤¡ª
++¤³¤ì¤Ï¤·¤å¤¦¤»¤¤¤µ¤ì¤ë¤Í #CJ ¤³¤ì¤Ï½¤À°¤µ¤ì¤ë¤Íwwww
++¤³¤í¤Ã¤± #T35 ¥³¥í¥Ã¥±
++¤³¤í¤Ã¤±¤µ¤¤ #T35 ¥³¥í¥Ã¥±º×
++¤³¤í¤Ã¤±¤ï¤Ã¤·¤ç¤¤ #JN ¥³¥í¥Ã¥±¥ï¥Ã¥·¥ç¥¤
++¤³¤í¤Ì #CJ  ¥³¥í¥Ì
++¤³¤í¤Ì #CJ ¥³¥í¥Ì
++¤³¤í¤Ì #N5 ¥³¥í¥Ì
++¤³¤ï¤¤¤³¤ï¤¤¤Ò¡¼ #CJ ¥³¥ï¥¤¥³¥ï¥¤¥Ò¡¼
++¤³¤ó¤·¤å¤¦¤Î¤Ó¤Ã¤¯¤ê¤É¤Ã¤­¤ê¤¾¤Ì #JN º£½µ¤Î¥Ó¥Ã¥¯¥ê¥É¥Ã¥­¥ê¤¾¤Ì
++¤³¤ó¤É¡¼¤à¤Þ¤é¤é¡¼ #JN ¥³¥ó¥É¡¼¥à¥Þ¥é¥é¡¼
++¤³¤ó¤Î¤¦ #T35 º®Ç¾
++¤´¡¼ #KK ¥´¡¼
++¤´¡¼¤´¡¼¤Ë¡¼¤Ö¤ó¤·¤ç #T35 552ʸ½ñ
++¤´¡¼¤´¡¼¤Ë¡¼¤â¤ó¤¸¤ç #T35 552ʸ½ñ
++¤´¤¤¤ó¤­¤ç #T35 ¸æ±£µï
++¤´¤¦¤Á¤ó¤­¤ã¤é¤µ¤ó¤Ë¤ó¤°¤ß #JN ¹ìÄÀ¥­¥ã¥é»°¿ÍÁÈ
++¤´¤¦¤Á¤ó¤­¤ã¤é¤µ¤ó¤Ë¤ó¤°¤ß¤«¤Ã¤³¤À¤¤¤µ¤ó¤­¤È¤¸¤«¤Ã¤³ #JN ¹ìÄÀ¥­¥ã¥é»°¿ÍÁÈ¡ÊÂè»°´ü¡Ë
++¤´¤¦¤Á¤ó¤­¤ã¤é¤µ¤ó¤Ë¤ó¤°¤ß¤«¤Ã¤³¤À¤¤¤Ë¤­¤È¤¸¤«¤Ã¤³ #JN ¹ìÄÀ¥­¥ã¥é»°¿ÍÁÈ¡ÊÂèÆó´ü¡Ë
++¤´¤¦¤Ï¤é #JNS ¶ÈÊ¢
++¤´¤¦¤Ï¤é #T35 ¶ÈÊ¢
++¤´¤¦¤Ï¤é¤â¤Ê¡¼ #JN ¥´¡Ê°Ê²¼Î¬¡Ë¥â¥Ê¡¼ 
++¤´¤¦¤Þ¤ë¤µ¤ó¤é¤¦¤ó¤¸ #T35 503¥é¥¦¥ó¥¸
++¤´¤­¤Ö¤ê¤Ã¤Ä #JN ¥´¥­¥Ö¥ê¥Ã¥Ä
++¤´¤­¤Ö¤ê¤Ã¤Ä #KK ¥´¥­¥Ö¥ê¥Ã¥Ä
++¤´¤­¤Ö¤ê¤Ã¤Ä #T35 ¥´¥­¥Ö¥ê¥Ã¥Ä
++¤´¤­¤Ö¤ê¤è¤³¤Ï¤Þ¤¸¤ó #JN ¥´¥­¥Ö¥ê²£ÉÍ¿Í
++¤´¤­¤í¤ª #T35 ¥´¥­¥í¡¼
++¤´¤®¤³¤µ¡¼¤Æ¤£¡¼¤ó #JN ¥´¥®¥³£±£³
++¤´¤¯¤¦ #T35 ¸ç¶õ
++¤´¤¯¤Ö¤È¤Ð¤¤¤Ö¡¼ #T35 ¶ËÂÀ¥Ð¥¤¥Ö¡¼¡ª¡ª
++¤´¤µ¤ó¤± #T35 ¸æ»°²È
++¤´¤¸¤ã¡¼¤¹¤Þ¤é¤é¡¼ #JN ¥´¥¸¥ã¡¼¥¹¥Þ¥é¥é¡¼
++¤´¤¸¤ã¡¼¤¹¤â¤é¤é¡¼ #JN ¥´¥¸¥ã¡¼¥¹¥â¥é¥é¡¼
++¤´¤¹¤é #JN ¥´¥¹¥é
++¤´¤Ã¤É¤Ï¤ó¤É #T35 ¥´¥Ã¥É¥Ï¥ó¥É
++¤´¤Ë¤ã¤¢ #JN ¤´¤Ë¤ã¤¢
++¤´¤Ë¤ã¤¢ #JN ¥´¥Ë¥ã¥¢
++¤´¤Ð¤¯ #T35 ¸íÇú
++¤´¤Ð¤¯¤¢¤é¤· #T35 ¸íÇú¹Ó¤é¤·
++¤´¤Ð¤¯¤¹¤Þ¤½ #CJ ¸íÇú¥¹¥Þ¥½
++¤´¤Þ¤â¤É¤­ #JN ¥´¥Þ¤â¤É¤­
++¤´¤ß¤Ð¤³ #T35 ¥´¥ßÈ¢
++¤´¤ß¤ó #T35 ¤´¤ß¤ó
++¤´¤á¤½ #CJ ¥´¥á¥½
++¤´¤é¡¼ #JN ¥´¥é¡¼
++¤´¤é¤¡ #JN ¡ÔŽß§¥Žß¡ÕŽºŽÞŽ×Ž§Ž§Ž§Ž§Ž§Ž§Ž§Ž§Ž§Ž§Ž§Ž§Ž§Ž±!!!!!
++¤´¤é¤¡ #JN ¥´¥é¥¡
++¤´¤ê¤ç¤¦¤â¤¨ #T35 ¸æÎî˨
++¤´¤ë¤¡ #CJ (Žß§¥Žß)ŽºŽÞŽÙŽ§¡ª
++¤´¤ë¤¡ #CJ ¥´¥ë¥¡
++¤´¤ë¤¡ #CJ ¥´¥ë¥¡!
++¤´¤ë¤¡ #CJ ŽºŽÞŽÙŽ§¡ª
++¤´¤ë¤¡ #JN  ¡³(*¡®§¥¡­)¥ÎŽºŽÞŽÙŽ§
++¤´¤ë¤¡ #JN (Žß§¥Žß)ŽºŽÞŽÙŽ§
++¤´¤ë¤¡ #JN ¥´¥ë¥¡
++¤´¤ë¤¡ #JN ŽºŽÞŽÙŽ§
++¤´¤ë¤¡ #T35 goluah!
++¤´¤ë¤¡¤È¤é¤Þ¤ó #JN ¥´¥ë¥¡¥È¥é¥Þ¥ó
++¤´¤ë¤¢ #CJ ¥´¥ë¥¡!
++¤´¤í¤í¤¦ #T35 ¥´¥í¥í¡¼
++¤µ¡¼¤Ð¤«¤ó¤·¤¸¤ç #T35 ¥µ¡¼¥Ð´Æ»ë½ê
++¤µ¡¼¤Ð¤À¤¤¤­¤ó #T35 ¥µ¡¼¥ÐÂå¶â
++¤µ¤¢¤¤¤³¤¦¤« #JN ¤µ¤¢¡Å¡¡À¤³¤¦¤«¡Å¡Å
++¤µ¤¢¤²¤¨¤à¤Î¤Ï¤¸¤Þ¤ê¤Ç¤¹ #CJ ¤µ¤¢¥²¡¼¥à¤Î»Ï¤Þ¤ê¤Ç¤¹
++¤µ¤¢¤µ¤¢¤ª¤­¤ã¤¯¤µ¤ó¤¬¤¯¤ë¤è  #JN ¤µ¤¢¤µ¤¢¡¢¤ªµÒ¤µ¤ó¤¬Íè¤ë¤è!!! 
++¤µ¤¢¤µ¤¢¤ª¤­¤ã¤¯¤µ¤ó¤¬¤¯¤ë¤è #JN ¤µ¤¢¤µ¤¢¡¢¤ªµÒ¤µ¤ó¤¬Íè¤ë¤è!!!
++¤µ¤¤¤³¤¦ #T35 ºÇ¹â
++¤µ¤¤¤³¤¦¤­¤ç¤¦ #T35 ºÇ¹â¶µ
++¤µ¤¤¤³¤¦¤¼¡¼¤è #JN ¥µ¥¤¥³¥¦¥¼¡¼¥è
++¤µ¤¤¤³¤Õ¤Ã¤µ¡¼¤ë #JN ¥µ¥¤¥³¡¦¥Õ¥Ã¥µ¡¼¥ë
++¤µ¤¤¤·¤ó¤ì¤¹ #T35 ºÇ¿·¥ì¥¹
++¤µ¤¤¤¼¤ó¤»¤ó¤¯¤ó #T35 ºÇÁ°Àþ·¯
++¤µ¤¤¤¿¤Þ #JN ¤µ¤¤¤¿¤Þ
++¤µ¤¤¤¿¤Þ #T35 ¤µ¤¤¤¿¤Þ
++¤µ¤¤¤À¤¤¤­¤å¤¦¤­¤Á¤¬¤¤¤±¤¤¤Û¤¦ #JN ºÇÂçµé¥­¥Á¥¬¥¤·ÙÊó
++¤µ¤¤¤É¤ê¤­¤¤¤Á #JN º¸°æ¸ÍÎÏ°ì
++¤µ¤¤¤Ð¡¼¤¨¡¼¤¸¤§¤ó¤È #KK ¥µ¥¤¥Ð¡¼¥¨¡¼¥¸¥§¥ó¥È
++¤µ¤¤¤â¤¨¤È¡¼¤Ê¤á¤ó¤È #T35 ºÇ˨¥È¡¼¥Ê¥á¥ó¥È
++¤µ¤¤¤â¤¨¤È¤¦¤Ê¤á¤ó¤È #T35 ºÇ˨¥È¡¼¥Ê¥á¥ó¥È
++¤µ¤«¡¼¤Ê #JN ¥µ¥«¡¼¥Ê
++¤µ¤«¤­¤Ð¤é¤»¤¤¤È #T35 ¼òµ´é¬é¯À»ÅÍ
++¤µ¤«¤Ê #JN µû
++¤µ¤«¤Ê #T35 µû
++¤µ¤«¤Ë¤Ã¤Ý #T35 ¤µ¤«¤Ë¤Ã¤Ý
++¤µ¤¬¤±¤ó¤µ¤¬¤·¤¸¤å¤¦¤Ê¤Ê¤µ¤¤ #JN º´²ì¸©º´²ì»Ô½½¼·ºÐ
++¤µ¤¯¤¸¤ç #T30 ºï½ü
++¤µ¤¯¤¸¤ç¤¤¤é¤¤ #T30 ºï½ü°ÍÍê
++¤µ¤¯¤¸¤ç¤¤¤é¤¤ #T35 ºï½ü°ÍÍê
++¤µ¤¯¤¸¤ç¤¬¤¤¤É¤é¤¤¤ó #T35 ºï½ü¥¬¥¤¥É¥é¥¤¥ó
++¤µ¤¯¤¸¤ç¤Ë¤ó #T35 ºï½ü¿Í
++¤µ¤¯¤»¤¤¤¤¤é¤¤ #T30 ºîÀ®°ÍÍê
++¤µ¤¯¤¿¤ó #T35 ¥µ¥¯¤¿¤ó
++¤µ¤¯¤Å¤± #T30 ¤µ¤¯¤Å¤±
++¤µ¤¯¤Å¤± #T30 ¥µ¥¯¥º¤±
++¤µ¤¯¤é¤¬¤ª¤«¤¬¤¯¤¨¤ó #KK ºùµÖ³Ø±à
++¤µ¤¯¤é¤¬¤ª¤«¤³¤¦¤³¤¦ #KK ºùµÖ¹â¹»
++¤µ¤¯¤é¤¬¤ª¤«¤Á¤å¤¦¤¬¤Ã¤³¤¦ #KK ºùµÖÃæ³Ø¹»
++¤µ¤¯¤é¤¿¤ó¤«¤ê #T35 ¤µ¤¯¤é¤¿¤ó¡Ê²¾¡Ë
++¤µ¤¯¤é¤¿¤ó¤Á¤å¤¦ #T35 ¤µ¤¯¤é¤¿¤ó¿ß
++¤µ¤¯¤é¤Á¤å¤¦ #T35 ºù¿ß
++¤µ¤¯¤é¤Ã¤Á #T35 ¥µ¥¯¥é¤Ã¤Á
++¤µ¤¯¤é¤Ã¤Á #T35 ºùÙÇÃ×
++¤µ¤¯¤é¤Ë¤³ #JN ¤µ¤¯¤é¥Ë¥³
++¤µ¤¯¤é¤Í¤Ã¤È #KK ¤µ¤¯¤é¤Í¤Ã¤È
++¤µ¤¯¤é¤á¤ó¤È #JN ¥µ¥¯¥é¥á¥ó¥È
++¤µ¤±¤È¤®¤³¤È¤Ï¤Ë¤ã¡¼¤ó¤È #JN ¼ò¤È¥®¥³¤È¤Ï¤Ë¤ã¡¼¤ó¤È
++¤µ¤±¤Ë¤®¤ê¤ï¤Ã¤·¤ç¤¤ #JN ºú¤Ë¤®¤ê¥ï¥Ã¥·¥ç¥¤
++¤µ¤² #KS sage
++¤µ¤² #KSr ¤µ¤²
++¤µ¤² #T35 sage
++¤µ¤²¤¢¤ª¤ê #T35 sageÀú¤ê
++¤µ¤²¤¢¤é¤· #T35 sage¹Ó¤é¤·
++¤µ¤²¤·¤ó¤³¤¦ #T30 ¤µ¤²¿Ê¹Ô
++¤µ¤²¤·¤ó¤³¤¦ #T35 sage¿Ê¹Ô
++¤µ¤²¤Ã¤Æ¤£ #JN sageŽ¯ŽÃŽ¨
++¤µ¤²¤ì¤¹ #T30 sage¥ì¥¹
++¤µ¤³¤Ä #JN ¥µ¹ü
++¤µ¤µ¤­¤±¤ó¤¹¤± #JN º´¡¹ÌÚ·ò²ð
++¤µ¤¶¤¨¤µ¤ó #JN ¥µ¥¶¥¨¤µ¤ó
++¤µ¤¶¤¨¤µ¤ó #JN ¥µ¥¶¥¨¤µ¤ó¡¡
++¤µ¤¹¤µ¤¹ #JN ¤µ¤¹¤µ¤¹
++¤µ¤¿¤ó #JN ¥µ¥¿¥ó
++¤µ¤¿¤ó #JN Ž»ŽÀŽÝ
++¤µ¤Ã¤Á¡¼¤Þ¤Ä¤ê #T35 ¥µ¥Ã¥Á¡¼º×¤ê
++¤µ¤Ã¤Á¤å¤¦¤¶¤¤¤´¤¸¤ã¡¼¤¹ #JN »¦¿ßºÞ¥´¥¸¥ã¡¼¥¹
++¤µ¤Ã¤Ý¤í #CN »¦ŽÎŽßŽÛ
++¤µ¤Ã¤Ý¤í #KK »¦¥Ý¥í
++¤µ¤Ã¤Ý¤í #T35 »¦¥Ý¥í
++¤µ¤Ã¤Ý¤í #T35 »¦ŽÎŽßŽÛ
++¤µ¤Ä¤¨¤¤¤­¤ó¤· #T35 »£±Æ¶Ø»ß
++¤µ¤È¤é¤ì #T35 ¥µ¥È¥é¥ì
++¤µ¤Ð #T35 »ª
++¤µ¤Ð¤ª¤Á #T30 »ªÍî¤Á
++¤µ¤Ð¤¬¤ª¤Á¤ë #CJ »ª¤¬Íî¤Á¤ë
++¤µ¤Ð¤¬¤È¤Ö #CJ »ª¤¬Èô¤Ö
++¤µ¤Ö¤Ð¤Ã¤¯¤¨¤¤¤Á¤Æ¤£¡¼¤¨¤à¤¨¤ë #T35 subback.html
++¤µ¤á¤¸¤Þ¤¸¤±¤ó #T35 »­Åç»ö·ï
++¤µ¤è #T35 ¥µ¥è
++¤µ¤è¤Ã¤Æ¤ë #T35 º¸Íã¤Ã¤Æ¤ë
++¤µ¤è¤ó¤Ü #T35 ¥µ¥è¥ó¥Ü
++¤µ¤é¤·¤¢¤² #KSr ¤µ¤é¤·age
++¤µ¤é¤·¤¢¤² #KSr ¤µ¤é¤·¤¢¤²
++¤µ¤é¤·¤¢¤² #KSr »¯¤·age
++¤µ¤é¤·¤¢¤² #T35 SALA¤·age
++¤µ¤é¤·¤¢¤² #T35 SALA»Å¾å¤²
++¤µ¤é¤·¤¢¤² #T35 £Ó£Á£Ì£Á»Å¾å¤²
++¤µ¤é¤·¤¢¤² #T35 ¤µ¤é¤·age
++¤µ¤é¤·¤¢¤² #T35 »¯¤·age
++¤µ¤é¤·¤¢¤²¤â¤Ê¡¼ #JN »¯¤·¾å¤²¥â¥Ê¡¼
++¤µ¤é¤Ö¤ì¤Ã¤È #JN ¥µ¥é¥Ö¥ì¥Ã¥È
++¤µ¤é¤Ö¤ì¤Ã¤É #JN ¥µ¥é¥Ö¥ì¥Ã¥É
++¤µ¤ë¤¶¤È¤¦ #T35 ±îº½Åü
++¤µ¤ë¤Ù¡¼¤¸ #T30 ¥µ¥ë¥Ù¡¼¥¸
++¤µ¤ì¤Ä¤Þ #T35 ¤µ¤ìºÊ
++¤µ¤ì¤Å¤Þ #T35 ¤µ¤ìºÊ
++¤µ¤ï¤¿¤ê¤Þ¤³¤È¤Ï¤ï¤¬¤¤¤Î¤Á #CJ ÂôÅÏ¿¿¶×¤Ï²æ¤¬Ì¿
++¤µ¤ï¤ä¤« #JN Á֤䤫¡ª
++¤µ¤ó¤¬¤Ä¤¦¤µ¤® #JN £³·î¥¦¥µ¥®
++¤µ¤ó¤­¤ã¤¯ #KK »°µÓ
++¤µ¤ó¤­¤ã¤¯ #T35 »°µÓ
++¤µ¤ó¤¯¤¹¤³ #CJ ¥µ¥ó¥¯¥¹¥³
++¤µ¤ó¤¯¤¹¤³ #CJ Ž»ŽÝŽ¸Ž½Žº
++¤µ¤ó¤±¡¼ #JN ¥µ¥ó¥±¡¼
++¤µ¤ó¤±¡¼¤·¤ó¤Ö¤ó #T35 £³£Ë¿·Ê¹
++¤µ¤ó¤²¤Ã¤È #JN £³¥²¥Ã¥È¤©¤©¤©¤©¡ª¡ª
++¤µ¤ó¤´ #T35 »¹¸ê
++¤µ¤ó¤º¤Î¤«¤ï #JN »°ÅÓ¤ÎÀî
++¤µ¤ó¤¿¤â¤Ë¤« #JN ¥µ¥ó¥¿¡á¥â¥Ë¥«
++¤µ¤ó¤À¤ó¤â¤Ê¡¼ #JN £³ÃÊ¥â¥é¥é¡¼
++¤µ¤ó¤É¤¤¤Ã¤Á #JN ¥µ¥ó¥É¥¤¥Ã¥Á
++¤µ¤ó¤á¡¼¤È¤ë¤Î¤¦¤Á¤å¤¦¤¸¤ó #JN £³£í¤Î±§Ãè¿Í¡¡
++¤µ¤ó¤â¤¸¤µ¤¯¤¬ #T35 »°Ê¸»úºî²è
++¤¶¡¼¤Ü¤ó #JN ¥¶¡¼¥Ü¥ó
++¤¶¤¢¤á¤ó¤¿¤¤¤·¤Ä #T35 ¥¶¡¼ÌÌÂμÁ
++¤¶¤¤¤¢¤½ #JN ¥¶¥¤¥¢¥½
++¤¶¤¤¤¢¤½ #JN ¥¶¥¤¥¢¥½ 
++¤¶¤¤¤³ #JN ¥¶¥¤»Ò
++¤¶¤¤¤³¤·¤ç¤ê¤Ï¤ó #JN ºß¸Ë½èÍýÈÉ
++¤¶¤¤¤Ë¤Á¤¤¤·¤ì¤Ã¤É #T35 ºßÆü°å»ÕRED
++¤¶¤¤¤Ë¤Á¤Ë¤ó¤Æ¤¤ #T30 ºßÆüǧÄê
++¤¶¤¤¤ê¤ç¤¦¤Ö¤Ã¤»¤¤¤¤¤¿ #CN ºàÎÁʪÀ­ÈÄ
++¤¶¤¤¤ê¤ç¤¦¤Ö¤Ã¤»¤¤¤¤¤¿ #T35 ºàÎÁʪÀ­ÈÄ
++¤¶¤­ #T35 ¥¶¥­
++¤¶¤Ã¤·¤å¤»¤ó¤»¤¤ #JN »¨¼ïÀèÀ¸
++¤¶¤Ä¤À¤ó¤³¤Æ¤¤ #T35 »¨Ã̸ÇÄê
++¤¶¤Ö¤È¤ó¤¢¤é¤· #JN ¤¶¤Ö¤È¤ó¹Ó¤é¤·
++¤¶¤ï¤¶¤ï #T30 ¤¶¤ï¤¶¤ï
++¤· #M5 ¤·
++¤· #N5 ¤·
++¤· #N5 »Ô
++¤· #N5 »á
++¤· #R5 ¤·
++¤·¡¼¤Ë¤ã¤ó #JN ¤·¡¼¤Ë¤ã¤ó
++¤·¤¢¡¼¤ë #KK ¤·R
++¤·¤¢¡¼¤ë #T35 ¤·R
++¤·¤¢¤¢¤ë #T35 ¤·R
++¤·¤¢¤ï¤»¤µ¤ó¤× #JN ¹¬¤»»¶ÉÛ
++¤·¤£ #JN ¤·¤£
++¤·¤£ #T35 ¤·¤£
++¤·¤£¤¢ #JN ¤·¤£¤¢
++¤·¤£¤¤¤¤¤ó¤Á¤ç¤¦ #JN ¤·¤£°Ñ°÷Ĺ
++¤·¤£¤«¤Á¤ã¤ó #JN ¤·¤£¤«¤Á¤ã¤ó
++¤·¤£¤¸¤ç¤­¤ç¤¦¤¸¤å #JN ¤·¤£½õ¶µ¼ø
++¤·¤£¤¹¤ê¡¼¤Þ¤¿¡¼¤ê #JN ¤·¤££³ÏÀ°Ø
++¤·¤£¤¹¤ê¡¼¤Þ¤¿¡¼¤ê #JN ¤·¤££³ŽÏŽÀŽ°ŽØ
++¤·¤£¤¿¤± #JN ¤·¤£¤¿¤±
++¤·¤£¤¿¤± #JN ¤·¤£¤¿¤± 
++¤·¤£¤Ò¤á #JN ¤·¤£É±
++¤·¤£¤Ò¤í¤Õ¤ß #JN ¤·¤£ÍÎʸ
++¤·¤£¤Þ¤Þ #JN ¤·¤£¥Þ¥Þ
++¤·¤¤¤µ¤¢ #T35 ¥·¡¼¥µ¡¼
++¤·¤¤¤¿¤± #T35 ¤·¤¤¤¿¤±
++¤·¤¨¤ó #T35 »Ù±ç
++¤·¤ª #JN ±ö
++¤·¤ª #T35 ±ö
++¤·¤ª¤«¤ó #KK ¤·¤ª´Ú
++¤·¤ª¤«¤ó #T35 ¤·¤ª´Ú
++¤·¤ª¤¿ #T35 ±öÅÄ
++¤·¤ª¤Ë¤Á #T35 ±öÆü
++¤·¤«¤¯ #KK »Í³Ñ
++¤·¤«¤¯ #T35 ¢£
++¤·¤«¤¯¤·¤«¤¯ #T35 ¢¢¢¢
++¤·¤«¤¯¤·¤ó¤¸¤ã #T35 »Í³Ñ¿®¼Ô
++¤·¤¬¤µ¤¯ #T35 ¼¢²ìºî
++¤·¤­¤¬¤ß¤´¤é¤¡ #JN ¼°¿ÀŽºŽÞŽ×Ž§
++¤·¤­¤¬¤ß¤Ê¤á¤¯¤¸ #JN ¼°¿ÀéÝê¡
++¤·¤±¤ó¤«¤ó #JN »î¸³´É
++¤·¤²¤ò #JNM ¥·¥²¥ò
++¤·¤²¤ò #T35 ¥·¥²¥ò
++¤·¤³¤¯ #CN »à¹ñ
++¤·¤³¤¯ #T35 »à¹ñ
++¤·¤³¤¿¤Û¤ï¤¢ #CJ ¥·¥³¥¿¥Û¥ï¡¼
++¤·¤¸¤ß #T35 ¥·¥¸¥ß
++¤·¤¹¤¿¡¼¤¶¡¼¤Ü¤ó #JN ¥·¥¹¥¿¡¼¥¶¡¼¥Ü¥ó
++¤·¤¹¤×¤ê #KK ¥·¥¹¥×¥ê
++¤·¤¹¤×¤ê #T35 ¥·¥¹¥×¥ê
++¤·¤¿¤¤¤¬¤¾¤¦ #T35 »àÂβèÁü
++¤·¤¿¤é¤Ð¤¯¤ó #JN ¤·¤¿¤é¤Ð·¯¡Ê²¾¡Ë
++¤·¤¿¤é¤Ð¤³¤¦¤Ä¤¦¤ä¤³¤¦¤³¤¦¤½¤¯¤Ð¤¹ #JN ¤·¤¿¤é¤Ð¸òÄÌÌë¹Ô¹â®¥Ð¥¹
++¤·¤¿¤é¤Ð¤Ê¡¼ #JN ¥·¥¿¥é¥Ð¥Ê¡¼
++¤·¤Á¤¸¤å¤¦¤¯ #T35 ¼·½Å¶ì
++¤·¤Á¤Ë¤ó¤Î¤µ¤Ö #T35 ¼·¿Í¤Î¥µ¥Ö
++¤·¤Ã¤¿¤« #T35 ÃΤ俤«
++¤·¤Ã¤¿¤«¤¯¤ó #T35 ÃΤ俤«·¯
++¤·¤Ã¤¿¤«¤Á¤å¤¦¤Ü¤¦ #T35 ÃΤ俤«¿ß˼
++¤·¤Ã¤Æ¤ë¤Ê¤é¤Ê¤¼¤·¤Æ¤­¤·¤Æ¤¯¤ì¤Ê¤«¤Ã¤¿¤Î¤Ç¤¹¤« #CJ ÃΤäƤë¤Ê¤é¡¢¤Ê¤¼»ØŦ¤·¤Æ¤¯¤ì¤Ê¤«¤Ã¤¿¤Î¤Ç¤¹¤«¡©
++¤·¤È¤Ë¤é¤Á¤ã¤¨¤ë #JN »ÈḀ̊˥é¥Á¥ã¥¨¥ë
++¤·¤Ê #CJ ¥·¥Ê
++¤·¤Ê¡¼ #JN ¥·¥Ê¡¼
++¤·¤Ê¤¢ #T35 ¥·¥Ê¡¼
++¤·¤Ê¤½¤Ð¤ä¤Î¤µ¤Î¤â¤Ê¡¼ #JN »ÙÆᶾÇþ²°¤Îº´Ìî¥â¥Ê¡¼
++¤·¤Ê¤Í¡¼¤è #JN »á¥Ê¥Í¡¼¥è
++¤·¤Ë¤¬¤ß¤È¤ê¤Ã¤×¤ª¤Ö¤Ç¤¹ #JN »à¿À¥È¥ê¥Ã¥×¥ª¥Ö¥Ç¥¹
++¤·¤Ë¤¬¤ß¤ß¤Ê¤é¤¤¤·¤§¤ê¡¼ #JN »à¿À¸«½¬¡¡¥·¥§¥ê¡¼
++¤·¤Ë¤¬¤ß¤ß¤Ê¤é¤¤¤·¤§¤ê¡¼ #JN »à¿À¸«½¬¥·¥§¥ê¡¼
++¤·¤Í #CJ ¤·¤Í
++¤·¤Í #CJ »Ô¤Í
++¤·¤Í #CJ »á¤Í
++¤·¤Í¡¼¤è #JN »á¥Í¡¼¥è
++¤·¤Í¤Ð¡¼ #JN ¥·¥Í¥Ð¡¼
++¤·¤Í¤Ð¡¼ #JN ¥Á¥Í¥Ð¡¼
++¤·¤Í¤è¤ª¤á¡¼¤é #JN »á¤Í¤è¤ª¤á¡¼¤é
++¤·¤Î¤Ö¤é¤¤¤ó #T35 Ǧ¥é¥¤¥ó
++¤·¤Ð¤¤¤Ì #T35 ¼Æ¸¤
++¤·¤Ð¤±¤ó #T35 ¼Æ¸¤
++¤·¤Ð¤¹ #T35 »à¥Ð¥¹
++¤·¤Ö¤µ¤ï¤µ¤ó #JN ½Âß·¤µ¤ó
++¤·¤Û¤½ #T35 ¤·¥Û¥½
++¤·¤Û¤ó #T35 ¤·¥Û¥ó
++¤·¤Ü¤¦¤¸¤å¤¦ #JN ¡Ê`)¢Ï(¡­¡Ë¡Ê¡­)§¥(`¡Ë
++¤·¤Ü¤¦¤¸¤å¤¦ #JN »éËýÃ
++¤·¤à¤â¤Ê¡¼ #JN ¥·¥à¡¦¥â¥Ê¡¼
++¤·¤á¤¸ #T35 (Žß§ÕŽß)Ž¼ŽÒŽ¼ŽÞ
++¤·¤á¤Ä¤±¤Á¤«¤ó¤Ó¤¤¤à #T35 Äù¤áÉÕ¤±ÃÔ´Á¥Ó¡¼¥à
++¤·¤â¤Ä¤· #JN ¥·¥â¥Ä¥·
++¤·¤â¤È #T35 ¥·¥â¥È
++¤·¤â¤È #T35 Ž¼ŽÓŽÄ
++¤·¤ã¤¡¤»¤ó¤è¤¦¤®¤³¤ó¤°¤È¤¬¤ó¤â¤Ê #JN ¥·¥ã¥¡ÀìÍÑ¥®¥³¥ó¥°¤È¥¬¥ó¥â¥Ê
++¤·¤ã¤¢¤»¤ó¤è¤¦¤¤¤¿ #CN ¥·¥ã¥¢ÀìÍÑÈÄ
++¤·¤ã¤¢¤»¤ó¤è¤¦¤¤¤¿ #T35 ¥·¥ã¥¢ÀìÍÑÈÄ
++¤·¤ã¤¤¤¢¤¸¤ó #T35 ¥·¥ã¥¤¥¢¿Í
++¤·¤ã¤¤¤ó #T35 ¥·¥ã¥¤¥ó
++¤·¤ã¤­¤¤¤ó #CJ (¡®Ž¥¦ØŽ¥¡­)Ž¼Ž¬Ž·Ž°ŽÝ
++¤·¤ã¤­¤¤¤ó #CJ ¥·¥ã¥­¡¼¥ó
++¤·¤ã¤¯¤ì¤­¤ê¤·¤¿¤ó #T35 ¥·¥ã¥¯¥ì¥­¥ê¥·¥¿¥ó
++¤·¤ã¤·¤ç¤¦ #JN ¼Ö¾¸
++¤·¤ã¤Ð¤¤¤Î¤© #CJ ¥·¥ã¥Ð¥¤¥Î¥©
++¤·¤ã¤Ð¤¤¤Î¤© #CJ Ž¼Ž¬ŽÊŽÞŽ²ŽÉŽ«
++¤·¤ã¤Ð¤¾¤¦ #T35 ¥·¥ã¥ÐÁþ
++¤·¤ã¤Ù¤ë¤Ä¤¯¤¨ #JN ¤·¤ã¤Ù¤ë´ù
++¤·¤ã¤ó¤Æ¤£ #JN ¡ÊŽ¥¢ÏŽ¥¡ËŽ¼Ž¬ŽÝŽÃŽ¨¢ö
++¤·¤ã¤ó¤Æ¤£ #JN ¥·¥ã¥ó¥Æ¥£
++¤·¤ä¤¢ #T35 ¤·§Á
++¤·¤å¤¦ #JN ¤·¤å¤¥
++¤·¤å¤¦¤«¤ó¤¢¤¹¤­¡¼ #KK ½µ´©¥¢¥¹¥­¡¼
++¤·¤å¤¦¤­¤ç¤¦ #T35 ½¡¶µ
++¤·¤å¤¦¤µ¤¤¤â¤é¤é¡¼ #JN ½¨ºÍ¥â¥é¥é¡¼
++¤·¤å¤¦¤È¤¦ #T30 ½ªÅß
++¤·¤å¤¦¤È¤¦ #T35 ½ªÅß
++¤·¤å¤¦¤Õ¤æ #T30 ½ªÅß
++¤·¤å¤¦¤Õ¤æ #T35 ½ªÅß
++¤·¤å¤¦¤é¤¯ #T35 ¤·¤å¤¦¤é¤¯¡Ê½°Íî¡Ë
++¤·¤å¤¦¤ê¤ç¤¦ #CJ --------½ªÎ»-------
++¤·¤å¤¦¤ê¤ç¤¦ #CJ ¡á¡á¡á¡á¡á¡á½ªÎ»¡á¡á¡á¡á¡á¡á
++¤·¤å¤¦¤ê¤ç¤¦ #T30 ½ªÎ»
++¤·¤å¤¦¤ê¤ç¤¦¤Á¤å¤¦¤Ü¤¦ #T35 ½ªÎ»¿ß˼
++¤·¤å¤· #T35 ¼ñ»Ý
++¤·¤å¤·¤å #JN ¤·¤å¤·¤å
++¤·¤å¤¸¤¤ #T35 ¼ç¼£°å
++¤·¤å¤Ã¤Á¤ç¤¦ #T30 ½ÐÄ¥
++¤·¤å¤Ô¤¤¤ó¤·¤ã #T35 ¥·¥å¥Ô¡¼¥ó¼Ô
++¤·¤ç¡¼¤â¤Ê¡¼ #JN ¥·¥ç¡¼¥â¥Ê¡¼
++¤·¤ç¡¼¤â¤Ê¡¼ #JN ¥·¥ç¡¼¥â¥Ê¡¼ 
++¤·¤ç¡¼¤æ¤Í¤¯¤¹¤È #KK ¥·¥ç¡¼¥æ¥Í¥¯¥¹¥È
++¤·¤ç¤¦¤«¤ó #T30 ¾¤´­
++¤·¤ç¤¦¤«¤ó #T30 ¾¤´Ô
++¤·¤ç¤¦¤¬¤É¤­¤å¤ó #T35 À¸ÕªDQN
++¤·¤ç¤¦¤°¤ó¤µ¤Þ #T35 ¾­·³ÍÍ
++¤·¤ç¤¦¤¸¤­¤¹¤Þ¤ó¤«¤Ã¤¿ #CJ ÀµÄ¾¡¢¥¹¥Þ¥ó¥«¥Ã¥¿
++¤·¤ç¤¦¤¸¤­¤¹¤Þ¤ó¤«¤Ã¤¿ #CJ ÀµÄ¾¡¢¥¹¥Þ¥ó¥«¥Ã¥¿¡ª
++¤·¤ç¤¦¤Á¤å¤¦ #T35 Àµ¿ß
++¤·¤ç¤¦¤Ü¤¦ #T35 ¾ÃËÉ
++¤·¤ç¤¦¤Ü¤¦¤¤¤¿ #T35 ¾ÃËÉÈÄ
++¤·¤ç¤¦¤æ¤»¤ó¤·¤­¤Ã¤³¤¦¤Þ¤½ #T35 ¾ßÌýÀï»Î¥­¥Ã¥³¡¼¥Þ¥½
++¤·¤ç¤¦¤æ¤»¤ó¤·¤­¤Ã¤³¤¦¤Þ¤ó #T35 ¾ßÌýÀï»Î¥­¥Ã¥³¡¼¥Þ¥½
++¤·¤ç¤¦¤æ¤Ê¤×¤­¤ó #T35 ¾ßÌý¥Ê¥×¥­¥ó
++¤·¤ç¤¦¤æ¤Í¤¯¤¹¤È #T35 ¥·¥ç¡¼¥æ¥Í¥¯¥¹¥È
++¤·¤ç¤¯¤Ë¤ó #T35 ¿¦¿Í
++¤·¤ç¤¯¤Ë¤ó¤µ¤ó #T35 ¿¦¿Í¤µ¤ó
++¤·¤ç¤¯¤Í¡¼¤è #JN ¿¦¥Í¡¼¥è
++¤·¤ç¤¯¤è¤¦¤â¤Ê¡¼ #JN ¿©ÍÑ¥â¥Ê¡¼
++¤·¤ç¤¸¤ç¤­¤é¡¼¤¢¤Ù¤ë #JN ½è½÷¥­¥é¡¼¥¢¥Ù¥ë
++¤·¤ç¤¿ #T35 ¥·¥ç¥¿
++¤·¤ç¤¿¤³¤ó #T35 ¥·¥ç¥¿¥³¥ó
++¤·¤ç¤À¤¤¤µ¤ó¤É¤¤¤Ã¤Á #JN ½éÂ奵¥ó¥É¥¤¥Ã¥Á
++¤·¤ç¤À¤¤¤·¤Í¤Ð¡¼ #JN ½éÂ奷¥Í¥Ð¡¼
++¤·¤ç¤À¤¤¤Þ¤¸¤ì¤¹¤Þ¤ó #JN ½éÂå¥Þ¥¸¥ì¥¹¥Þ¥ó
++¤·¤ç¤À¤¤¤â¤Ê¡¼ #JN ½éÂå¥â¥Ê¡¼
++¤·¤ç¤À¤¤¤â¤Í¡¼ #JN ½éÂå¥â¥Í¡¼
++¤·¤ç¤Ü #JN ¥·¥ç¥Ü
++¤·¤ç¤Ü #JN Ž¼Ž®ŽÎŽÞ
++¤·¤ç¤Ü¡¼¤ó #CJ Ž¼Ž®ŽÎŽÞŽ°ŽÝ
++¤·¤ç¤Ü¡¼¤ó #JN (¡­¡¦¦Ø¡¦`)¥·¥ç¥Ü¡¼¥ó
++¤·¤ç¤Ü¡¼¤ó #JN (¡­Ž¥¦ØŽ¥`)Ž¼Ž®ŽÎŽÞŽ°ŽÝ
++¤·¤ç¤Ü¡¼¤ó #JN ¥·¥ç¥Ü-¥ó
++¤·¤ç¤Ü¡¼¤ó #JN Ž¼Ž®ŽÎŽÞ-ŽÝ
++¤·¤ç¤Ü¤ª¤ó #CJ ¥·¥ç¥Ü¡¼¥ó
++¤·¤ç¤Ü¤ª¤ó #CJ Ž¼Ž®ŽÎŽÞŽ°ŽÝ
++¤·¤ç¤Ü¤®¤³ #JN Ž¼Ž®ŽÎŽÞŽ·ŽÞŽº
++¤·¤ç¤é¤Í¡¼¤è #JN ¥·¥ç¥é¥Í¡¼¥è
++¤·¤è¤ª¤¦¤è #SUC ¥·¥è¡¼¥¦¥è
++¤·¤è¤ª¤¦¤è #SUC Ž¼ŽÖŽ°Ž³ŽÖ
++¤·¤é¤Ê¤¤¤ï #JN ¥·¥é¥Ê¥¤¥ï
++¤·¤é¤Í¡¼¤è #JN ¥·¥é¥Í¡¼¥è
++¤·¤é¤Í¤¨¤è #T35 ¥·¥é¥Í¡¼¥è
++¤·¤é¤Í¤Î¤ª¤í¤Á #JN ¥·¥é¥Í¥Î¥ª¥í¥Á
++¤·¤é¤Ò¡¼¤² #JN ¥·¥é¥Ò¡¼¥²
++¤·¤ê #T35 ¿¬
++¤·¤ê¤Ä #T35 ¿¬ÄÅ
++¤·¤ê¤È¤ê¤¤¤¿ #T35 ¤·¤ê¤È¤êÈÄ
++¤·¤ê¤È¤ê¤¶¤à¤é¤¤ #JN ¤·¤ê¤È¤ê»ø
++¤·¤ë #SUC ¤·¤ë
++¤·¤ë #SUC ½Á
++¤·¤í¤¦¤È¤Ë¤Ï¤ª¤¹¤¹¤á¤Ç¤­¤Ê¤¤ #CJ ÁǿͤˤϤªÁ¦¤á½ÐÍè¤Ê¤¤¡£
++¤·¤í¤Í¤³ #KK ÇòÇ­
++¤·¤í¤Í¤³ #T35 ÇòÇ­
++¤·¤í¤à¤Ä #T35 Çò¥à¥Ä
++¤·¤ó¤«¤á¤â¤Ê¡¼ #JN ¿¿¡¦¥«¥á¥â¥Ê¡¼¡¡
++¤·¤ó¤­¤í¤¯¤¿¤Ã¤»¤¤¤Ë¤ó¤Æ¤¤¤·¤ç¤¦ #JN ¿·µ­Ï¿Ã£À®Ç§Äê¾Ú
++¤·¤ó¤±¤¤¤»¤¤ #T35 ¿À·ÐÀ­
++¤·¤ó¤¶¤ó¤Ï¤«¤«¤º¤Ë¤Ï¤ó¤È¤·¤í¤à¤Ã¤Æ¤í #CJ ¿·»²¤Ï½ñ¤«¤º¤ËȾǯ£Ò£Ï£Í¤Ã¤Æ¤í
++¤·¤ó¤· #T35 ¿Â»Î
++¤·¤ó¤·¤å¤Î1¤µ¤ó #JN ¿·¼ï¤Î£±¤µ¤ó
++¤·¤ó¤¸¤Ä¤«¤¯¤É #T35 ¿¿¼Â³ÑÅÙ
++¤·¤ó¤¸¤ã #T35 ¿®¼Ô
++¤·¤ó¤¸¤å¤¯¤´¤¸¤å¤¦ #T35 ¿·½É50
++¤·¤ó¤¸¤å¤¯¤ß¤Ê¤ß¤°¤Á¤®¤å¤¦¤Ë¤å¤¦¤½¤Õ¤È¤¯¤ê¡¼¤à¤Î¤Í¤¨¤Á¤ã¤ó #JN ¿·½ÉÆî¸ý¡ÖµíÆý¥½¥Õ¥È¥¯¥ê¡¼¥à¡×¤Î¤Í¤¨¤Á¤ã¤ó
++¤·¤ó¤¹¤ì #T35 ¿·¥¹¥ì
++¤·¤ó¤¹¤ì¤ª¤á¤Ç¤È¤¦¤´¤¶¤¤¤Þ¡¼¤¹ #JN ¡À¡Ê¡°¢¦¡°¡Ë¡¿¿·¥¹¥ì¤ª¤á¤Ç¤È¤¦¤´¤¶¤¤¤Þ¡Ý¤¹¢ö
++¤·¤ó¤¹¤ì¤ª¤á¤Ç¤È¤¦¤´¤¶¤¤¤Þ¡¼¤¹ #JN ¿·¥¹¥ì¤ª¤á¤Ç¤È¤¦¤´¤¶¤¤¤Þ¡Ý¤¹
++¤·¤ó¤¹¤ì¤Ã¤É¤¹¤È¤Ã¤Ñ¡¼ #T35 ¿¿¡¦¥¹¥ì¥Ã¥É¥¹¥È¥Ã¥Ñ¡¼
++¤·¤ó¤¹¤ì¤Ã¤É¤¹¤È¤Ã¤Ñ¤¢ #T35 ¿¿¡¦¥¹¥ì¥Ã¥É¥¹¥È¥Ã¥Ñ¡¼
++¤·¤ó¤»¤¤ #PRE ¿¿À­
++¤·¤ó¤»¤¤ #T35 ¿¿À­
++¤·¤ó¤»¤¤¤Á¤å¤¦¤Ü¤¦ #T35 ¿¿À­¿ß˼
++¤·¤ó¤»¤ó #T35 ¿·Á¯
++¤·¤ó¤½¤³¤É¤¦¤Ç¤â¤¤ #KY ¿´Äì¤É¤¦¤Ç¤â¤¤
++¤·¤ó¤½¤³¤É¤¦¤Ç¤â¤¤ #KY ¿´Äì¤É¤¦¤Ç¤âÎÉ 
++¤·¤ó¤½¤³¤É¤¦¤Ç¤â¤è #KY ¿´Äì¤É¤¦¤Ç¤âÎÉ 
++¤·¤ó¤Á¤ç¤¦¤¹¤ì #KK ¿ÈĹ¥¹¥ì
++¤·¤ó¤Á¤ç¤¦¤¹¤ì #T35 ¿ÈĹ¥¹¥ì
++¤·¤ó¤É #T35 ¿¼ÅÙ
++¤·¤ó¤Ë¤Á¤ª¤¿ #T35 ¿·Æü¥ª¥¿
++¤·¤ó¤Í¡¼¤è¤ª¤Ö¤Í¡¼¤è #JN ¿¿¡¦¥Í¡¼¥è¡¦¥ª¥Ö¡¦¥Í¡¼¥è
++¤¸¡¼ #T35 £Ç
++¤¸¡¼¤¨¤à #T35 £Ç£Í
++¤¸¡¼¤µ¤¯¤È¤¸¤§¡¼¤ó #JN Gºî¤È¥¸¥§¡¼¥ó
++¤¸¡¼¤µ¤¯¤È¤¸¤§¡¼¤ó #JN Gºî¤È¥¸¥§¡¼¥ó¡ÊñÂΤÀ¤È²¿¤À¤«È½¤é¤Ê¤¤¤Î¤Ç£²É¤Ž¾Ž¯ŽÄ¡Ë 
++¤¸¡¼¤µ¤¯¤È¤¸¤§¡¼¤ó #JN ¡Ê¡¦¢Ï¡¦¡Ë¡¡¡Ê¡¦¢Ï¡¦¢é¢é
++¤¸¤£ #JN ¤¸¤£
++¤¸¤¤¤³ #T35 ¼«°Ö¸Å
++¤¸¤§¤¤¤¦¤è¤¯ #T35 J±¦Íã
++¤¸¤§¤¤¤Ó¤¤¤Ó¤¤¤¨¤¹ #T35 JBBS
++¤¸¤§¤Î¤µ¤¤¤É¤«¤Ã¤¿¡¼ #JN ¥¸¥§¥Î¥µ¥¤¥É¥«¥Ã¥¿¡¼
++¤¸¤§¤ó¤È¤ë¤â¤Ê #JN ¥¸¥§¥ó¥È¥ë¥â¥Ê
++¤¸¤§¤ó¤È¤ë¤â¤é¤é¡¼¤È¤®¤³ #JN ¥¸¥§¥ó¥È¥ë¥â¥é¥é¡¼¤È¥®¥³
++¤¸¤¨¤¤¤«¤ó¤¨¤é¤¤ #CJ ¥¸¥¨¥¤¥«¥ó¥¨¥é¥¤
++¤¸¤¨¤¤¤«¤ó¤¨¤é¤¤ #CJ Ž¼ŽÞŽ´Ž²Ž¶ŽÝŽ´Ž×Ž²
++¤¸¤ª #KK ¥¸¥ª
++¤¸¤ª #KK ±ö
++¤¸¤ª #T35 ¥¸¥ª
++¤¸¤ª #T35 ±ö
++¤¸¤¯¤¦¤Þ¤ª¤¦ #JN »þ¶õËⲦ
++¤¸¤²¤ó #JN ¼¡¸µ
++¤¸¤´¤¦¤¸¤È¤¯ #JN (¡­¢Ï¡®)Ž¼ŽÞŽºŽÞŽ³Ž¼ŽÞŽÄŽ°Ž¸
++¤¸¤´¤¦¤¸¤È¤¯ #JN ¥¸¥´¥¦¥¸¥È¥¯
++¤¸¤´¤¯¤Î¤´¤¦¤« #JN ÃϹö¤Î¶È²Ð
++¤¸¤µ¤¯¤¸¤¨¡¼¤ó #JN ¥¸¥µ¥¯¥¸¥¨¡¼¥ó
++¤¸¤µ¤¯¤¸¤¨¤ó #JN (Ž¥¢ÏŽ¥)Ž¼ŽÞŽ»Ž¸Ž¼ŽÞŽ´Ž°ŽÝ
++¤¸¤µ¤¯¤¸¤¨¤ó #JN ¡Î¡Ê¡¦¢Ï¡¦¡Ë¡Ï
++¤¸¤µ¤¯¤¸¤¨¤ó #JN ¥¸¥µ¥¯¥¸¥¨¥ó
++¤¸¤µ¤¯¤¸¤¨¤ó #JN ¥¸¥µ¥¯¥¸±ß
++¤¸¤µ¤¯¤¸¤¨¤ó #JN ŽµŽÆŽ°ŽÁŽ¬ŽÝ(*¡¦¢Ï¡¦*)Ž´Ž¯ŽÁŽ°!!
++¤¸¤µ¤¯¤¸¤¨¤ó #T30 QQQQ
++¤¸¤µ¤¯¤¸¤¨¤ó #T30 ¼«ºî¼«±é
++¤¸¤µ¤¯¤¸¤¨¤ó #T35 ¥¸¥µ¥¯¥¸¥¨¥ó
++¤¸¤µ¤¯¤¸¤¨¤ó #T35 ¼«ºî¼«±é
++¤¸¤µ¤¯¤¸¤»¤ó #JN ¡Ê¡¦À顦¡Ë
++¤¸¤µ¤¯¤¸¤»¤ó #JN ¥¸¥µ¥¯¥¸¥»¥ó
++¤¸¤µ¤¯¤¸¤»¤ó #JN ¼Þ»¸¼Þ¾Ý
++¤¸¤µ¤¯¤¸¤»¤ó #JN Ž¼ŽÞŽ»Ž¸Ž¼ŽÞŽ¾ŽÝ
++¤¸¤µ¤Ä¤¸¤¨¤ó #JN ¡Ê-»á-¡Ë
++¤¸¤µ¤Ä¤¸¤¨¤ó #JN ¥¸¥µ¥Ä¥¸¥¨¥ó
++¤¸¤µ¤Ä¤¸¤¨¤ó #JN ¼Þ»Â¼Þ´Ý
++¤¸¤µ¤Ä¤¸¤¨¤ó #JN Ž¼ŽÞŽ»ŽÂŽ¼ŽÞŽ´ŽÝ
++¤¸¤·¤ó¤»¤¤¤È #JN ÃÏ¿ÌÀ¸ÅÌ
++¤¸¤·¤ó¤À #CJ ¼«¿®¤À¡ª¡ª¡ª¡ª
++¤¸¤·¤ó¤À #CJ ÃϿ̤À¡ª¡ª¡ª¡ª
++¤¸¤»¤¤¤Ê¤É¤­¤«¤Ê¤¤¤Ã #CJ ¼«À©¤Ê¤ÉÍø¤«¤Ê¤¤¤Ã
++¤¸¤Á¤¹¤ì #T35 ¼«¼£¥¹¥ì
++¤¸¤Á¤Á¤å¤¦ #T35 ¼«¼£¿ß
++¤¸¤Á¤ó¤µ¤¤ #T35 ÃÏÄú×
++¤¸¤Ã¤­¤ç¤¦¤¹¤ì #T35 ¼Â¶·¥¹¥ì
++¤¸¤Ã¤Ñ¤Ò¤È¤«¤ê¤² #JN ¥¸¥Ã¥Ñ¥Ò¥È¥«¥ê¥²
++¤¸¤Ä¤ï¤ò¤«¤¯¤Ê¤È¤¢¤ì¤Û¤É #CJ ¼ÂÏäò½ñ¤¯¤Ê¤È¤¢¤ì¤Û¤É¡Ä
++¤¸¤É¤¦¤ª¤¦¤À¤½¤¦¤Á #T35 ¼«Æ°²¥ÂÇÁõÃÖ
++¤¸¤Ï¤¢¤É #T35 ¥¸¥Ï¡¼¥É
++¤¸¤Ð¤¯ #T35 ¼«Çú
++¤¸¤Ò¤ã¤¯¤¸¤¨¤ó #JN ¡Ê¡¦É´¡¦¡Ë
++¤¸¤Ò¤ã¤¯¤¸¤¨¤ó #JN ¥¸¥Ò¥ã¥¯¥¸¥¨¥ó
++¤¸¤Ò¤ã¤¯¤¸¤¨¤ó #JN Ž¼ŽÞŽËŽ¬Ž¸Ž¼ŽÞŽ´ŽÝ
++¤¸¤×¤·¡¼ #T35 ¥¸¥×¥·¡¼
++¤¸¤×¤·¤¤ #T35 ¥¸¥×¥·¡¼
++¤¸¤Ø¤¤¤Ý¤ó #KK ¼«ÊĤݤó
++¤¸¤Ø¤¤¤Ý¤ó #T35 ¼«ÊĤݤó
++¤¸¤ß¤ó¤È¤¦¤â¤Ê¡¼ #JN ¼«Ì±ÅÞ¥â¥Ê¡Ý
++¤¸¤ß¤ó¤È¤¦¤â¤Ê¡¼ #JN ¼«Ì±ÅÞ¥â¥Ê¡Ý 
++¤¸¤à #JN GM
++¤¸¤á¤ó¤ò¤ª¤è¤°¤®¤³ #JN ÃÏÌ̤ò±Ë¤°¥®¥³
++¤¸¤ã¡¼¤Ë¡¼ #JN ¥¸¥ã¡¼¥Ë¡¼
++¤¸¤ã¤¬¤â¤Ê¡¼ #JN ¤¸¤ã¤¬¥â¥Ê¡¼
++¤¸¤ã¤·¤ó #T35 ¼Ù¿À
++¤¸¤ã¤Ã¤«¤ë #T35 ¥¸¥ã¥Ã¥«¥ë
++¤¸¤ã¤Ã¤­¡¼ #JN ¥¸¥ã¥Ã¥­¡¼
++¤¸¤ã¤Ã¤­¡¼ #T35 ¥¸¥ã¥Ã¥­¡¼
++¤¸¤ã¤Ã¤­¤¤ #T35 ¥¸¥ã¥Ã¥­¡¼
++¤¸¤ã¤Ë¤¤ #T35 ¼Ø·»
++¤¸¤ã¤Ë¤¤ #T35 ¼Ù·»
++¤¸¤ã¤Ó #JN Ž¼ŽÞŽ¬ŽËŽÞ
++¤¸¤ã¤Þ¤µ¤­ #T35 ¼ÙËâºê
++¤¸¤ã¤ß¤í¤¯¤¤ #JN ¥¸¥ã¥ß¥í¥¯¥¤
++¤¸¤ã¤ë #T35 JA¥ÎL
++¤¸¤ã¤ó¤¬¤ê¤¢¤ó¤Ï¤à¤¹¤¿¡¼ #JN ¥¸¥ã¥ó¥¬¥ê¥¢¥ó¥Ï¥à¥¹¥¿¡¼
++¤¸¤ã¤ó¤¯¤¯¤é¤Ã¤«¡¼¤¯¤é¤Ã¤·¤ã¡¼ #JN ¥¸¥ã¥ó¥¯¡¦¥¯¥é¥Ã¥«¡¼¡¦¥¯¥é¥Ã¥·¥ã¡¼
++¤¸¤ã¤ó¤°¤ë¤Ý¤±¤Ã¤È¤Î¤Á¤Á¤Ï¤Õ¤¸¤­¤»¤­ #CJ ¥¸¥ã¥ó¥°¥ë¥Ý¥±¥Ã¥È¤ÎÉã¤Ï¥Õ¥¸¥­¥»¥­
++¤¸¤å¤¦¤·¤ç¤¯ #JN ½»¿¦
++¤¸¤å¤¦¤·¤ç¤¯ #T35 ½»¿¦
++¤¸¤å¤¦¤Ê¤Ê¤¹¤¯¤ê¤×¤È #T35 17¥¹¥¯¥ê¥×¥È
++¤¸¤å¤¦¤Ë¤ó #T35 ½»¿Í
++¤¸¤å¤¦¤Ï¤Á¤¸¤Ë¤¸¤å¤¦¤¸¤â¤ó¤À¤¤ #T35 18»þ¡¦20»þÌäÂê
++¤¸¤å¤¦¤Õ¤¯¤¹¤ì #T35 ½ÅÊ£¥¹¥ì
++¤¸¤å¤¦¤Õ¤¯¤¹¤ì¤Ã¤É #T35 ½ÅÊ£¥¹¥ì¥É
++¤¸¤å¤¦¤Þ¤ó¤¨¤ó #JN ­ª¡¡
++¤¸¤å¤¦¤Þ¤ó¤¨¤ó #JN ½½Ëü±ß
++¤¸¤å¤¦¤ß¤ó #T35 ½»Ì±
++¤¸¤å¤¦¤è¤ó #JN £±£´
++¤¸¤å¤«¤¤ #CN ¼ù³¤
++¤¸¤å¤«¤¤ #T35 ¼ù³¤
++¤¸¤å¤Æ¡¼¤à #JN ¥¸¥å¥Æ¡¼¥à
++¤¸¤å¤ó¤«¤¤ #T30 ½ä²ó
++¤¸¤å¤ó¤­¤ó¤¤¤¿ #CN ½ã¶âÈÄ
++¤¸¤å¤ó¤­¤ó¤¤¤¿ #T35 ½ã¶âÈÄ
++¤¸¤æ¤¦¤ò¤ß¤®¤Æ¤Ë¤¢¤¤¤Ê¤é¤Ò¤À¤ê¤Æ¤Ë #JN ¥¸¥æ¥¦¥ò¥ß¥®¥Æ¥Ë¥¢¥¤¥Ê¥é¥Ò¥À¥ê¥Æ¥Ë
++¤¸¤æ¤¦¤ò¤ß¤®¤Æ¤Ë¤¢¤¤¤Ê¤é¤Ò¤À¤ê¤Æ¤Ë #JN ¼ÞÕ³¦Ð·ÞÃƱ²Å×ËÀÞØÃÆ
++¤¸¤æ¤¦¤ò¤ß¤®¤Æ¤Ë¤¢¤¤¤Ê¤é¤Ò¤À¤ê¤Æ¤Ë #JN Ž¼ŽÞŽÕŽ³Ž¦ŽÐŽ·ŽÞŽÃŽÆŽ±Ž²ŽÅŽ×ŽËŽÀŽÞŽØŽÃŽÆ
++¤¸¤ç¤¤¤Ã¤Æ #KS JOY¤Ã¤Æ
++¤¸¤ç¤¦¤­¤ª¤¦ #JN ¾øµ¤²¦
++¤¸¤ç¤¦¤Á¤å¤¦ #T30 ¾ïÃó
++¤¸¤ç¤¦¤È¤¦¤¸¤ç¤æ¤¦ #T35 ¾åÅù½÷Í¥
++¤¸¤ç¤¦¤È¤Á¤å¤¦ #T35 ¾ùÅÏ¿ß
++¤¸¤ç¤¦¤ì¤ó #T35 ¾ïÏ¢
++¤¸¤ç¤»¤Õ¤È¤¢¤Ö¤É¤¥¤ë #JN ¥¸¥ç¥»¥Õ¤È¥¢¥ô¥É¥¥¥ë
++¤¸¤ç¤Æ¤¤ #T35 ½÷Äë
++¤¸¤ç¤Æ¤¤¤¨¤¹¤«¤ê¡¼¤Ì #JN ½÷Ä륨¥¹¥«¥ê¡¼¥Ì
++¤¸¤ç¤Ë¡¼ #JN ¥¸¥ç¥Ë¡¼
++¤¸¤ç¤ó #JN ¥¸¥ç¥ó
++¤¸¤ç¤ó #T35 ¥¸¥ç¥ó
++¤¸¤ç¤ó¤¸¤ç #JN ¥¸¥ç¥ó¥¸¥ç
++¤¸¤ç¤ó¤Õ¡¼¤ó #JN ¥¸¥ç¥ó¡¦¥Õ¡¼¥ó
++¤¸¤é¤¤ #T35 ÃÏÍë
++¤¸¤é¤¤¤²¤ó¤·¤ç¤ê¤·¤ã #JN ÃÏÍ븶½èÍý¼Ö
++¤¸¤é¤Í¡¼¤è #JN ¥¸¥é¥Í¡¼¥è
++¤¸¤ì¤¹ #T30 ¼«¥ì¥¹
++¤¸¤ó #SUC ¿Ð
++¤¸¤ó¤¸¤ã¡¼ #JN ¥¸¥ó¥¸¥ã¡¼
++¤¸¤ó¤Ë¤¯ #T35 ¿ÍÆù
++¤¸¤ó¤Ë¤¯ #T35 ¿ÍÆù»Ô¾ì
++¤¸¤ó¤Ë¤¯¤¤¤Á¤Ð #T35 ¿ÍÆù
++¤¸¤ó¤Ë¤¯¤¤¤Á¤Ð #T35 ¿ÍÆù»Ô¾ì
++¤¸¤ó¤ß¤ó¤°¤ó¤°¤ó¤«¤ó #JN ¿Í̱·³·³´±
++¤¸¤ó¤á¤ó¤´¤­¤Ö¤ê¤Ã¤Ä #JN ¿ÍÌÌ¥´¥­¥Ö¥ê¥Ã¥Ä
++¤¹¡¼¤Ñ¡¼¤´¤ê¤ª #JN ¥¹¡¼¥Ñ¡¼¥´¥ê¥ª
++¤¹¡¼¤Ñ¡¼¤â¤Ê¤®¤³¤¿¤¤¤»¤ó #JN ¥¹¡¼¥Ñ¡¼¥â¥Ê¥®¥³ÂçÀï
++¤¹¡¼¤Ñ¡¼¤ê¤¢¤ë¤Á¤å¤¦¤Ü¤¦ #T35 ¥¹¡¼¥Ñ¡¼¥ê¥¢¥ë¿ß˼
++¤¹¤¤¤»¤ó¤«¤ó¤¹¤ì #KK ¿åÀö´É¥¹¥ì
++¤¹¤¤¤»¤ó¤«¤ó¤¹¤ì #T35 ¿åÀö´É¥¹¥ì
++¤¹¤¤¤½¤¦ #T35 ¿åÁå
++¤¹¤¤¤¿¤£¤ç¤¥ #JN µÛ¤¤¤¿¤£¤ç¤¥¡¡
++¤¹¤¤¤¿¤¤¤è¤¦ #JN µÛ¤¤¤¿¤£¤ç¤¥¡¡
++¤¹¤¦¤Ñ¤¢¤Î¤¦¡«¤¡ #T35 ¥¹¡¼¥Ñ¡¼¥Î¥ô¥¡
++¤¹¤¦¤Ñ¤¢¤Ï¤«¤¢ #T35 ¥¹¡¼¥Ñ¡¼¥Ï¥«¡¼
++¤¹¤¦¤Ñ¤¢¤ê¤¢¤ë¤Á¤å¤¦¤Ü¤¦ #T35 ¥¹¡¼¥Ñ¡¼¥ê¥¢¥ë¿ß˼
++¤¹¤¦¤â¤¸¤â¤¸¤º¤Ä¤Ä¤¯¤Ã¤Æ¤Õ¤ä¤·¤¿¤¢¤¹¤­¡¼¤¢¡¼¤È #JN ¿ôʸ»ú¤º¤ÄÁý¤ä¤·¤Æºî¤Ã¤¿£Á£Á
++¤¹¤¨¤Ã¤³ #JN Ëö¤Ã»Ò
++¤¹¤¨¤Ã¤³ #T35 Ëö¤Ã»Ò
++¤¹¤« #T35 ¿Ü²Ã
++¤¹¤«¤¤¤é¡¼¤¯¤¼¤ó¤Ö #CJ ¥¹¥«¥¤¥é¡¼¥¯Á´Éô
++¤¹¤«¤é¤¢¤Ï #T35 ¥¹¥«¥é¡¼ÇÈ
++¤¹¤® #SUC ¿ù
++¤¹¤¯¤¦¤§¤¢ #T35 ¢£
++¤¹¤¯¤¦¤§¤¢¤Û¤ó¤·¤ã #JN ¥¹¥¯¥¦¥§¥¢ËܼÒ
++¤¹¤¯¤½¤×¤È #T35 ¥¹¥¯¥½¥×¥È
++¤¹¤¯¤Ä #T35 ¤¹¤¯¤Ä
++¤¹¤¯¤ê¤×¤È #T35 ¥¹¥¯¥ê¥×¥È
++¤¹¤´¤Þ¤¸¤¤ #CJ ¤¹¤´¤Þ¤¸¤¤
++¤¹¤¶¤±¤ë¤Ê #CJ ¤¹¤¶¤±¤ë¤Ê¡ª
++¤¹¤¹¤º #T35 ¥¹¥¹¥º
++¤¹¤º¤­¤à¤Í¤ª¤Ç¤·¤¿ #JN ¡Ê¡¦¢Ï¡¦¡ËÎëÌÚ½¡ÃˎÎގ¼ŽÀ
++¤¹¤º¤­¤à¤Í¤ª¤Ç¤·¤¿ #JN ÎëÌÚ½¡Ã˥ǥ·¥¿
++¤¹¤º¤­¤à¤Í¤ª¤Ç¤·¤¿ #JN ÎëÌÚ½¡ÃˎÎގ¼ŽÀ
++¤¹¤¿¡¼¤Þ¤ó #JN ¥¹¥¿¡¼¥Þ¥ó
++¤¹¤¿¤¸¤ª¤Ë¤Á¤ã¤ó¤Í¤ë¤Ï¤¸¤Þ¤ë¤è #JN ¥¹¥¿¥¸¥ª2ch»Ï¤Þ¤ë¤è¢ö
++¤¹¤Á¤º #JN ÁÇÃÏ¿Þ
++¤¹¤Á¤º #T35 ÁÇÃÏ¿Þ
++¤¹¤Ã¤´¤¯¤«¤ï¤¤¤¤¤â¤Ê¡¼ #JN ¡ù¤¹¤Ã¤´¤¯¡ù¤«¤ï¤¤¤¤(^o^)¥â¥Ê¡¼
++¤¹¤Ã¤É¤ì #JN ¡Ê¡¦¢Ï¡¦¡ËŽ½Ž¯ŽÄŽÞŽÚ!
++¤¹¤Ã¤É¤ì #JN ¥¹¥Ã¥É¥ì
++¤¹¤Ã¤É¤ì #JN Ž½Ž¯ŽÄŽÞŽÚ
++¤¹¤Ã¤É¤ì #T35 ¥¹¥Ã¥É¥ì
++¤¹¤Æ¤­¤¿¤¤¤à #T35 ¥¹¥Æ¥­¥¿¥¤¥à
++¤¹¤Æ¤Ï¤ó #T35 ¼Î¤Æ¥Ï¥ó
++¤¹¤È¡¼¤«¤á¤³ #T35 ¥¹¥È¡¼¥«¥á¥³
++¤¹¤È¤¦¤«¤á¤³ #T35 ¥¹¥È¡¼¥«¥á¥³
++¤¹¤È¤ê¤Ã¤× #T35 Áǥȥê¥Ã¥×
++¤¹¤Ê¤¤¤× #T30 ¥¹¥Ê¥¤¥×
++¤¹¤Ê¤«¤±¤Ð¤Ð¤¢ #JN º½¤«¤±ÇÌ
++¤¹¤Í¤«¤¸¤ê #T35 ¥¹¥Í¤«¤¸¤ê
++¤¹¤Î¡¼ #T35 £Ó£Î£Ï£×
++¤¹¤Î¤¦ #T35 SNOW
++¤¹¤Ñ #KS ¥¹¥Ñ
++¤¹¤Ñ¡¼¤¯¤â¤Ê¡¼ #JN ¥¹¥Ñ¡¼¥¯¥â¥Ê¡¼
++¤¹¤Ñ¤·¡¼¤Ü #T35 ¡Ê¡¦¢Ï¡¦¡Ë¥¹¥Ñ¥·¡¼¥Ü!!¡é 
++¤¹¤Ñ¤·¡¼¤Ü #T35 ¡Ê¡¦¢Ï¡¦¡ËŽ½ŽÊŽßŽ¼Ž°ŽÎŽÞ!!¡é 
++¤¹¤Ñ¤·¡¼¤Ü #T35 ¥¹¥Ñ¥·¡¼¥Ü
++¤¹¤Ñ¤·¡¼¤Ü #T35 Ž½ŽÊŽßŽ¼Ž°ŽÎŽÞ
++¤¹¤Ñ¤·¡¼¤Ü¤³¤¦¤« #T35 ¥¹¥Ñ¥·¡¼¥Ü¸ú²Ì
++¤¹¤Ñ¤·¤¤¤Ü #T35 ¡Ê¡¦¢Ï¡¦¡ËŽ½ŽÊŽßŽ¼Ž°ŽÎŽÞ!!¡é 
++¤¹¤Ñ¤·¤¤¤Ü #T35 Ž½ŽÊŽßŽ¼Ž°ŽÎŽÞ
++¤¹¤Ñ¤·¤¤¤Ü¤³¤¦¤« #T35 ¥¹¥Ñ¥·¡¼¥Ü¸ú²Ì
++¤¹¤Ñ¤Á¤å¤¦ #T35 ¥¹¥Ñ¿ß
++¤¹¤Ñ¤à #T30 ¥¹¥Ñ¥à
++¤¹¤Ñ¤à #T35 spam
++¤¹¤Ñ¤à #T35 ¥¹¥Ñ¥à
++¤¹¤Ñ¤ó #JN SPAN
++¤¹¤Ô¤Þ¤¹ #T35 ¥¹¥Ô¥Þ¥¹
++¤¹¤Õ¤£¤ó¤¯¤¹ #JN ¥¹¥Õ¥£¥ó¥¯¥¹¡¡
++¤¹¤Ö¤¿¤ó #T35 ¥¹¥Ö¥¿¥ó
++¤¹¤Ú¤é¤ó¤«¡¼ #KK ¥¹¥Ú¥é¥ó¥«¡¼
++¤¹¤Ú¤é¤ó¤«¡¼ #T35 ¥¹¥Ú¥é¥ó¥«¡¼
++¤¹¤Ú¤é¤ó¤«¤¢ #T35 ¥¹¥Ú¥é¥ó¥«¡¼
++¤¹¤Þ #JN ¿ÜËá
++¤¹¤Þ #T35 ¿ÜËá
++¤¹¤Þ¤½ #CJ ¥¹¥Þ¥½
++¤¹¤à¤é¤Ã¤È #T35 SMART
++¤¹¤à¤é¤Ã¤È #T35 £Ó£Í£Ò£Á£Ô
++¤¹¤è #JN ¥¹¥è
++¤¹¤é¤¤¤à #JN ¥¹¥é¥¤¥à
++¤¹¤ë¤Ã¤È¤Á¤ã¤ó #JN ¥¹¥ë¥Ã¥È¤Á¤ã¤ó
++¤¹¤ì #T35 ¥¹¥ì
++¤¹¤ì¤´¤Ð¤¯ #T30 ¥¹¥ì¸íÇú
++¤¹¤ì¤µ¤¯¤¸¤ç #T30 ¥¹¥ìºï½ü
++¤¹¤ì¤¹¤È #T35 ¥¹¥ì¥¹¥È
++¤¹¤ì¤¿¤¤ #T35 ¥¹¥ì¥¿¥¤
++¤¹¤ì¤Á¤¬¤¤ #T35 ¥¹¥ì°ã¤¤
++¤¹¤ì¤Ã¤É #T35 ¤¹¤ì¤Ã¤É
++¤¹¤ì¤Ã¤É #T35 ¥¹¥ì¥Ã¥É
++¤¹¤ì¤Ã¤É¤¢¤Ã¤·¤å¤¯ #T30 ¥¹¥ì¥Ã¥É°µ½Ì
++¤¹¤ì¤Ã¤É¤¢¤Ã¤·¤å¤¯ #T35 ¥¹¥ì¥Ã¥É°µ½Ì
++¤¹¤ì¤Ã¤É¤¤¤Á¤é¤ó #T35 ¥¹¥ì¥Ã¥É°ìÍ÷
++¤¹¤ì¤Ã¤É¤¹¤È¤Ã¤Ñ¡¼ #T35 ¥¹¥ì¥Ã¥É¥¹¥È¥Ã¥Ñ¡¼
++¤¹¤ì¤Ã¤É¤¹¤È¤Ã¤Ñ¡¼¤¹¤Æ¡¼¤·¤ç¤ó #JN ¥¹¥ì¥Ã¥É¥¹¥È¥Ã¥Ñ¡¼¥¹¥Æ¡¼¥·¥ç¥ó
++¤¹¤ì¤Ã¤É¤¹¤È¤Ã¤Ñ¤¢ #T35 ¥¹¥ì¥Ã¥É¥¹¥È¥Ã¥Ñ¡¼
++¤¹¤ì¤Ã¤É¤Ò¤ç¤¦¤«¤Ë¤ó¤Æ¤¤¤¤¤¤¤ó¤«¤¤ #JN ¥¹¥ì¥Ã¥Éɾ²ÁǧÄê°Ñ°÷²ñ
++¤¹¤ì¤Ã¤É¤Õ¤í¡¼¤È¤Û¤¦¤·¤­ #T35 ¥¹¥ì¥Ã¥É¥Õ¥í¡¼¥ÈÊý¼°
++¤¹¤ì¤Ã¤É¤Õ¤í¤¦¤È¤Û¤¦¤·¤­ #T35 ¥¹¥ì¥Ã¥É¥Õ¥í¡¼¥ÈÊý¼°
++¤¹¤ì¤Ã¤É¤ì¤¤¤× #T30 ¥¹¥ì¥Ã¥É¥ì¥¤¥×
++¤¹¤ì¤Ë¤ó¤Æ¤¤¤·¤ç¤¦ #JN ¥¹¥ìǧÄê¾Ú
++¤¹¤ì¤Ò¤ç¤¦¤«¤¸¤ç¤¦ #JN ¥¹¥ìɾ²Á¾î
++¤¹¤ì¤ò¤è¤´ #S5 ¥¹¥ì¤ò±ø
++¤¹¤ì¤ò¤è¤´¤¹ #CJ ¥¹¥ì¤ò±ø¤¹
++¤¹¤í¤Ã¤È¤ª¤Ü¤¨¤¿¤Æ¤Ç #CJ ¥¹¥í¥Ã¥È³Ð¤¨¤¿¤Æ¤Ç
++¤¹¤ó¤¹¤ó¤¹¤¦¤ó #CJ (¡¦¢Ï¡¦)Ž½ŽÝŽ½ŽÝŽ½Ž°ŽÝ¢ö
++¤¹¤ó¤¹¤ó¤¹¤¦¤ó #CJ ¥¹¥ó¥¹¥ó¥¹¡¼¥ó¢ö
++¤¹¤ó¤Þ¤½ #CJ ¤¹¤ó¤Þ¤½
++¤º¤´¤ª¤Þ¤° #JN ¥º¡¦¥´¥ª¥Þ¡¦¥°
++¤º¤µ¤®¤³ #JN ¥º¥¶¥®¥³
++¤º¤¶¤Ê¤Þ¤Ï¤²¤µ¤Þ #JN ¡Ê¥º¥¶¡Ë¥Ê¥Þ¥Ï¥²ÍÍ
++¤º¤é¤é¡¼ #JN ¥º¥é¥é¡¼
++¤º¤ê¤»¤½ #T35 ¥º¥ê¥»¥ó
++¤º¤ë¤¤¤ª¤ó¤Ê #KK ¤º¤ë¤¤½÷
++¤º¤ë¤¤¤ª¤ó¤Ê #T35 ¤º¤ë¤¤½÷
++¤º¤ì #T35 ¥º¥ì
++¤º¤ì¤¬¤¹¤¯¤Ê¤¤¤Î¤Ç¤·¤å¤¦¤»¤¤¤·¤Æ¤ª¤­¤Þ¤·¤¿ #JN ¥º¥ì¤¬¾®¤µ¤¤¤Î¤Ç½¤Àµ¤·¤Æ¤ª¤­¤Þ¤·¤¿¡£
++¤º¤ì¤¬¤¹¤¯¤Ê¤¤¤Î¤Ç¤·¤å¤¦¤»¤¤¤·¤Þ¤·¤¿ #JN ¥º¥ì¤¬¾¯¤Ê¤¤¤Î¤Ç½¤Àµ¤·¤Þ¤·¤¿
++¤º¤ì¤¬¤¹¤¯¤Ê¤¤¤Î¤Ç¤·¤å¤¦¤»¤¤¤·¤Þ¤¹ #JN ¥º¥ì¤¬¾¯¤Ê¤¤¤Î¤Ç½¤Àµ¤·¤Þ¤¹
++¤»¡¼¤é¤à¤ª¤¦¤³¤¯ #JN ¤»¡¼¤é¤à¤ª¤¦¤³¤¯
++¤»¤¤¤«¤¤ #T35 À­²ô
++¤»¤¤¤®¤³ #JN ¥»¥¤¥®¥³
++¤»¤¤¤®¤³ #JN ¥»¥¤¥®¥³ 
++¤»¤¤¤´ #JNM À¬¸ã
++¤»¤¤¤´¤¦ #JN À­¹ë
++¤»¤¤¤´¤¦ #T35 À­¹ë
++¤»¤¤¤·¤å¤ó #JN ÀĽÕ
++¤»¤¤¤·¤ó¤Æ¤­¤Ö¤é¤¯¤é #T35 Àº¿ÀŪ¥Ö¥é¥¯¥é
++¤»¤¤¤»¤ó¤·¤ç¤¯¤Ò¤ó¤â¤é¤Þ¤µ #JN À¸Á¯¿©ÉÊ¥â¥é¥Þ¥µ
++¤»¤¤¤½¤¦¤Á¤å¤¦ #T35 À¶ÁÝ¿ß
++¤»¤¤¤Á #T35 À»ÃÏ
++¤»¤¤¤È #JN À¸ÅÌ
++¤»¤¤¤È #JN À¸ÅÌ¡©
++¤»¤¤¤È2 #JN À¸ÅÌ£Ö£å£ò£²
++¤»¤¤¤È3 #JN À¸ÅÌ£Ö£å£ò£³
++¤»¤¤¤È¤¤¤é¤Í¡¼¤è #JN À¸ÅÌ¥¤¥é¥Í¡¼¥è
++¤»¤¤¤È¤¦¤· #JN À¸Å̵í
++¤»¤¤¤È¤«¤ª¤À¤± #JN (¡¨¡­§¥¡®)¡¿ÀèÀ¸¡ª¡¦¡¦¡¦¡¦
++¤»¤¤¤È¤«¤ª¤À¤± #JN À¸ÅÌ´é¤À¤±
++¤»¤¤¤È¤µ¤¤¤·¤ç¤¦ #JN À¸Å̺Ǿ®
++¤»¤¤¤È¤¸¤ª¤ó¤° #JN À¸ÅÌ¥¸¥ª¥ó¥°
++¤»¤¤¤È¤¸¤å¤¦¤í¤¯¤¯¤ó #JN À¸ÅÌ£±£¶·¯
++¤»¤¤¤È¤¹¤Õ¤£¤ó¤¯¤¹ #JN À¸ÅÌ¥¹¥Õ¥£¥ó¥¯¥¹
++¤»¤¤¤È¤º¤´¤ª¤Þ¤° #JN À¸ÅÌ¥º¡¦¥´¥ª¥Þ¡¦¥°
++¤»¤¤¤È¤À¤¤¤¤¤Á¤Õ¤Ã¤µ¡¼¤ë #JN À¸ÅÌÂè°ì¥Õ¥Ã¥µ¡¼¥ë
++¤»¤¤¤È¤À¤¤¤¤¤Á¤Õ¤Ã¤µ¡¼¤ë¤Ð¡¼¤¸¤ç¤ó2 #JN À¸ÅÌÂè°ì¥Õ¥Ã¥µ¡¼¥ëver£²
++¤»¤¤¤È¤À¤¤¤¤¤Á¤Õ¤Ã¤µ¡¼¤ë¤Ð¡¼¤¸¤ç¤ó3 #JN À¸ÅÌÂè°ì¥Õ¥Ã¥µ¡¼¥ëver£³
++¤»¤¤¤È¤Î¤Î #JN À¸Å̤ΤÎ
++¤»¤¤¤È¤Ï¤é¤Þ¤­¤Ð¡¼¤¸¤ç¤ó1 #JN À¸ÅÌÊ¢´¬¤­£Ö£å£ò£±
++¤»¤¤¤È¤Ï¤é¤Þ¤­¤Ð¡¼¤¸¤ç¤ó2 #JN À¸ÅÌÊ¢´¬¤­£Ö£å£ò£²
++¤»¤¤¤È¤Õ¡¼¤ó #JN À¸Å̤ա¼¤ó
++¤»¤¤¤È¤Õ¤µ¤Ö¤Ä #JN À¸Å̤դµ¤Ö¤Ä
++¤»¤¤¤È¤Ö¤Ä¤Ö¤Ä #JN À¸Å̤֤Ĥ֤Ä
++¤»¤¤¤È¤Ö¤Ä¤Ö¤Ä¤¸¤å¤¦¤í¤¯¤¯¤ó #JN À¸Å̤֤Ĥ֤ģ±£¶·¯
++¤»¤¤¤È¤Ö¤Ä¤Ö¤Ä¤É¤¦¤è #JN À¸Å̤֤Ĥ֤Ĥɤ¦¤è
++¤»¤¤¤È¤Ö¤Ä¤Ö¤Ä¤É¤¦¤è¤Ð¡¼¤¸¤ç¤ó2 #JN À¸Å̤֤Ĥ֤Ĥɤ¦¤è£Ö£å£ò£²
++¤»¤¤¤È¤à¤Ã¤¯ #JN À¸ÅÌ¥à¥Ã¥¯
++¤»¤¤¤È¤á¤¿¤é¡¼¤Ð¡¼¤¸¤ç¤ó1 #JN À¸Ḁ̊᥿¥é¡¼ver£±
++¤»¤¤¤È¤á¤¿¤é¡¼¤Ð¡¼¤¸¤ç¤ó2 #JN À¸Ḁ̊᥿¥é¡¼ver£²
++¤»¤¤¤È¤é¤Ç¤£¤ó #JN À¸ÅÌ¥é¥Ç¥£¥ó
++¤»¤¤¤È¤ì¤«¤à¤Á¤ã¤Ã¤«¤ß¤½¤Á¤ó¤Ï¤¦¤¹ #JN À¸Ḁ̊졦¤«¤à¤Á¤ã¤Ã¤«¤ß¤½ÄÁ¥Ï¥¦¥¹
++¤»¤¤¤È¤ó¡¼ #JN À¸Å̤ó¡Á¡ª¡©
++¤»¤¤¤ê¤å¤¦ #T35 À¶Âí
++¤»¤«¤¤¤»¤Õ¤¯¤ò¤¿¤¯¤é¤à¤â¤é¤é¡¼ #JN À¤³¦¡ÖÀ©¡×Éþ¤ò´ë¤à¥â¥é¥é¡¼
++¤»¤¬¤·¤ó¤¸¤ã #T35 ¥»¥¬¿®¼Ô
++¤»¤¬¤Ó¡¼ #T35 ¥»¥¬B
++¤»¤¬¤ï #T35 ¥»Èé
++¤»¤­¤¹¤¤ #KK ÀÑ¿å
++¤»¤­¤¹¤¤ #T35 ÀÑ¿å
++¤»¤­¤º¤¤¤Ï¤ó¤·¤ã¤ì¤¹ #T30 ÀÔ¿ñÈ¿¼Í¥ì¥¹
++¤»¤­¤º¤¤¤Ï¤ó¤·¤ã¤ì¤¹ #T35 ÀÔ¿ñÈ¿¼Í¥ì¥¹
++¤»¤¯¡¼¤¹ #CN ¥»¥¯¡¼¥¹
++¤»¤¯¡¼¤¹ #T30 ¥»¥¯¡¼¥¹
++¤»¤¯¡¼¤¹ #T35 ¥»¥¯¡¼¥¹
++¤»¤ß¤µ¤ó¤³¤ª¤¹ #T35 ¥»¥ß¤µ¤ó¥³¡¼¥¹
++¤»¤ë¤²¤¨¤à #T35 ¥»¥ë¥²¡¼¥à
++¤»¤ó #T35 1000
++¤»¤ó¤¤¤¯¤¿¤Ó¤Ë¤¤¤¿¤ò¤Æ¤ó¤Æ¤ó¤È¤¹¤ë¤¹¤ì¤Ã¤É #T35 1000¹Ô¤¯¤¿¤Ó¤ËÈĤòž¡¹¤È¤¹¤ë¥¹¥ì¥Ã¥É
++¤»¤ó¤¤¤Á #T35 1001
++¤»¤ó¤³¤¦¤·¤ã #JN Àè¸ø¼Ô
++¤»¤ó¤³¤¦¤·¤ã #JN Àè¹Ô¼Ô
++¤»¤ó¤³¤¦¤·¤ã #T35 Àè¹Ô¼Ô
++¤»¤ó¤·¤å¤¦¤¬¤Ã¤³¤¦ #T35 À콤³Ø¹»
++¤»¤ó¤¹¤¤¤«¤ó¤¹¤ì #T35 Àø¿å´Ï¥¹¥ì
++¤»¤ó¤»¤¤ #JN ÀèÀ¸
++¤»¤ó¤»¤¤¤¿¤¹¤±¤Æ #JN ÀèÀ¸¡ª½õ¤±¤Æ¡ª
++¤»¤ó¤»¤¤¤Õ¤µ¤Ö¤Ä #JN ÀèÀ¸¤Õ¤µ¤Ö¤Ä
++¤»¤ó¤»¤¤¤Ö¤Ä¤Ö¤Ä #JN ÀèÀ¸¤Ö¤Ä¤Ö¤Ä
++¤»¤ó¤½¤¦ #T35 1000Áè
++¤»¤ó¤Î¤¦¤·¤å¤¦¤«¤¤ #T35 ÀöǾ½¸²ñ
++¤»¤ó¤â¤ó¤¤¤¿ #T35 ÀìÌçÈÄ
++¤¼¤Ã¤È¤­ #JN £Ú´ú
++¤¼¤Ã¤È¤·¤­ #T35 £Ú¼°
++¤¼¤Ã¤È¤¿¤± #T35 £ÚÉð
++¤¼¤Ã¤È¤Á¤ã¤ó¤Í¤ë¤¦¤ó¤¨¤¤¤¸¤ó #JN Zch±¿±Ä¿Ø
++¤¼¤Õ¤¡¡¼¤¢¤ó¤Á¤ã¤ó #JN ¥¼¥Õ¥¡¡¼¤¢¤ó¤Á¤ã¤ó
++¤¼¤í #T35 0
++¤¼¤í¤ï¤ó #T35 Îí°í
++¤¼¤ó¤Ä¤¦ #T30 Á´ÄÌ
++¤¼¤ó¤Ä¤¦ #T35 Á´ÄÌ
++¤¼¤ó¤é #T35 Á´Íç
++¤¼¤ó¤é¤¿¤¤ #T35 Á´ÍçÂâ
++¤½¡¼¤¹ #T35 ¥½¡¼¥¹
++¤½¡¼¤¹¤Ï #CJ ¥½¡¼¥¹¤Ï¡©
++¤½¡¼¤Ç¤â¤Ê¤¤¤è #JN ¤½¡¼¤Ç¤â¤Ê¤¤¤è
++¤½¡¼¤Ê¤Î #JN ¥½¡¼¥Ê¥Î
++¤½¤¤¤¿ #CN ¤½ÈÄ
++¤½¤¤¤¿ #T35 ¤½ÈÄ
++¤½¤¦¤« #T35 Áز½
++¤½¤¦¤¯¤Ä #T35 Áã·¢
++¤½¤¦¤±¤¤ #KK Áá·Ä
++¤½¤¦¤±¤¤ #T35 Áá·Ä
++¤½¤¦¤±¤¤¤¸¤ç¤¦¤Á #T35 Áá·Ä¾åÃÒ
++¤½¤¦¤³ #T35 ÁÒ¸Ë
++¤½¤¦¤³¤¤¤­ #CJ ÁÒ¸ËÀ¤­
++¤½¤¦¤³¤¤¤­ #T35 ÁҸ˹Ԥ­
++¤½¤¦¤³¤¦ #JN Á⹿
++¤½¤¦¤³¤Ð¤ó #T35 ÁÒ¸ËÈÖ
++¤½¤¦¤´¤¦¤¹¤ì¤Ã¤É #T35 Áí¹ç¥¹¥ì¥Ã¥É
++¤½¤¦¤µ¤¤ #T35 ÁíºÛ
++¤½¤¦¤·¤ç¤¯ #T30 Áõ¾þ
++¤½¤¦¤¸¤ó #JN Áâ¿Î
++¤½¤¦¤¹ #T35 ¥½¡¼¥¹
++¤½¤¦¤Á¤ç¤¦¤ì¤¹ #T30 ÁáÄ«¥ì¥¹
++¤½¤¦¤Ç¤â¤Ê¤¤¤è #CJ ¤½¤¦¤Ç¤â¤Ê¤¤¤è
++¤½¤¦¤Ç¤â¤Ê¤¤¤è #JN ¤½¤¦¤Ç¤â¤Ê¤¤¤è
++¤½¤¦¤È¤¦ #T35 ÁíÅý
++¤½¤¦¤Ï¤¤¤«¤ó¤¶¤­ #CJ ¤½¤¦¤Ï¤¤¿Àºê
++¤½¤¦¤ê¤½¤¦¤ê¤ã¤¯ #T35 ÁÏÍøÁÏά
++¤½¤«¤¤ #T30 Á³«
++¤½¤¯¤· #T35 ¨»à
++¤½¤¯¤·¤¹¤ì #T35 ¨»à¥¹¥ì
++¤½¤¯¤·¤Ï¤ó¤Æ¤¤ #T35 ¨»àȽÄê
++¤½¤¯¤Û¤¦ #CJ ®Êó¡ª
++¤½¤¯¤ì¤¹ #T30 ¨¥ì¥¹
++¤½¤¯¤ì¤¹ #T35 ¨¥ì¥¹
++¤½¤Ë¡¼¤¿¤¤¤Þ¡¼ #T35 ¥½¥Ë¡¼¥¿¥¤¥Þ¡¼
++¤½¤Ë¤¤¤¿¤¤¤Þ¤¢ #T35 ¥½¥Ë¡¼¥¿¥¤¥Þ¡¼
++¤½¤Ì¤­¤å¤¦¤Ó¤ó #JN ¥¾¥ÌµÞÊØ
++¤½¤Î #JN ¤½¤Î
++¤½¤Î¤³ #JN ±ñ»Ò
++¤½¤Î¤Ä¤¯¤«¤¤¤·¤ã #T35 ¡Ö¤½¡×¤Î¤Ä¤¯²ñ¼Ò
++¤½¤Ð¤Ð¤Ð¡¼¤ó #JN ¥½¥Ð¥Ð¥Ð-¥ó!!!
++¤½¤Ð¤Ð¤Ð¡¼¤ó #JN Ž¿ŽÊŽÞŽÊŽÞŽÊŽÞ-ŽÝ!!!
++¤½¤Ð¤Ð¤Ð¡¼¤ó #JN Ž¿ŽÊŽÞŽÊŽÞŽÊŽÞŽ°ŽÝ!!!!
++¤½¤Ó¤¨¤È #JN ¥½¥Ó¥¨¥È
++¤½¤Õ¤Þ¤Ã¤× #JN ¥½¥Õ¥Þ¥Ã¥×¡¡
++¤½¤Ü¤¯¤Ê¤®¤â¡¼¤ó #CJ ÁÇËѤʤ®¤â¡¼¤ó
++¤½¤Þ¤ê¤ä¤¬¤¤¤¹¤é¤à¤Ë¤½¤Þ¤ê¤ä #CJ ¥½¥Þ¥ê¥ä¤¬¥¤¥¹¥é¥à¤Ë¤½¤Þ¤ê¤ä
++¤½¤é¤¤¤à #JN ¥½¥é¥¤¥à
++¤½¤é¤Ê¤¤¤ï #JN ¥½¥é¥Ê¥¤¥ï
++¤½¤é¤Í¡¼¤Ç¤è #JN ¥½¥é¥Í¡¼¥Ç¥è
++¤½¤é¤Í¡¼¤è #JN ¥½¥é¥Í¡¼¥è
++¤½¤é¤Í¡¼¤è¤«¤ó¤¤¤Ð¤ó #JN ¥½¥é¥Í¡¼¥è´Ê°×ÈÇ
++¤½¤é¤ß¤¿¤³¤È¤« #JN ¤½¤é¸«¤¿¤³¤È¤«
++¤½¤ê¤Ã¤É¤â¤Ê¡¼¤¯ #JN ¥½¥ê¥Ã¥É¡¦¥â¥Ê¡¼¥¯
++¤½¤ì¤¬¤Ê¤Ë¤« #JN ¥½¥ì¥¬¥Ê¡á¥Ë¥«
++¤½¤ó #JNS ¹
++¤½¤ó¤´¤¯¤¦ #T35 ¹¸ç¶õ
++¤½¤ó¤·¤Î¤Ï¤¿¤¸¤ë¤· #JN ¹»Ò¤Î´ú°õ
++¤½¤ó¤Ê¤Î¤·¤Ã¤Á¤ç¤ì¤® #JN ¤½¤ó¤Ê¤ÎÃΤåÁ¥ç¥ì¥®
++¤½¤ó¤Ê¤Ð¤Ê¤Ê¤®¤³ #JN ¤½¤ó¤Ê¥Ð¥Ê¥Ê¥®¥³
++¤½¤ó¤Þ¤µ¤è¤· #JN ¹ÀµµÁ
++¤¾¤¤¤É¤¤¤¿ #CN ¥¾¥¤¥ÉÈÄ
++¤¾¤¤¤É¤¤¤¿ #T35 ¥¾¥¤¥ÉÈÄ
++¤¾¤¹ #CJ ¥¾¥¹
++¤¾¤Ë¤Ã¤¯ #JN ¤¾¤Ë¤Ã¤¯
++¤¾¤Ë¤Ã¤¯¤À¤ó¤·¤ã¤¯ #JN ¤¾¤Ë¤Ã¤¯Ã˼ß
++¤¾¤Ë¤Ã¤¯¤À¤ó¤·¤ã¤¯¤¢¤ë¤Õ¤¡ #JN ¤¾¤Ë¤Ã¤¯Ã˼ߦÁ
++¤¾¤Ë¤Ã¤¯¤À¤ó¤·¤ã¤¯¤¦¡«¤£¤¯¤È¤ê¡¼ #JN ¤¾¤Ë¤Ã¤¯Ã˼ßV
++¤¾¤Ì #JN ¤¾¤Ì
++¤¾¤Ì #JN ¥¾¥Ì
++¤¾¤Ì #T35 ¤¾¤Ì
++¤¾¤Ì¡¼¤Ô¡¼ #JN ¥¾¥Ì¡¼¥Ô¡¼
++¤¾¤Ì¤¶¤á¤¤¤¿¤ó¤Æ¤¤ #JN ¤¾¤Ì¡¦¥¶¡¦ÌÂõÄå
++¤¾¤Ì¤·¤ã¤Á¤ç¤¦ #JN ¤¾¤Ì¼ÒĹ
++¤¾¤Ì¤Ã¤Æ¤ë #CJ ¤¾¤Ì¤Ã¤Æ¤ë
++¤¾¤Ì¤Ö¤· #T35 ¤¾¤ÌÉú
++¤¾¤Ì¤Þ¤·¤ó #JN ¤¾¤Ì¥Þ¥·¥ó
++¤¾¤Í #T35 ¤¾¤Í
++¤¾¤à #JN ¥¾¥à
++¤¾¤í¤Ð¤ó #T35 ¥¾¥í¥Ð¥ó
++¤¿ #K5 ¿æ
++¤¿ #KJ ¿æ
++¤¿¡¼¤ó #JN ŽÀŽ°ŽÝ
++¤¿¤¤ #JN Âä
++¤¿¤¤ #T35 Âä
++¤¿¤¤¡¼¤Û #CJ ¥¿¥¤¨¬¨¬¨¬¨¬||¦µ|(|¡­|§¥|`|)|¦µ||¨¬¨¬¨¬¨¬¥Û
++¤¿¤¤¡¼¤Û #CJ ¥¿¥¤¨¬¨¬¨¬¨¬¡Ã¡Ã¦µ¡Ã¡Ê¡Ã¡¬¡Ã¢Ï¡Ã¡¬¡Ã¡Ë¡Ã¦µ¡Ã¡Ã¨¬¨¬¨¬¨¬¥Û¡ª¡ª¡ª
++¤¿¤¤¡¼¤Û #CJ ŽÀŽ²¨¬¨¬¨¬¨¬||¦µ|(|Žß|¢Ï|Žß|)|¦µ||¨¬¨¬¨¬¨¬ŽÎ!!!
++¤¿¤¤¤­ #T35 Â絤
++¤¿¤¤¤·¤«¤ó #T35 Âç»È´Û
++¤¿¤¤¤·¤ç¤¦¤·¤ç¤¦¤ï¤®¤³ #JN ÂçÀµ¾¼Ïµ¼¸Å
++¤¿¤¤¤Á¤ç¤¦ #CJ ÂâĹ¡ª
++¤¿¤¤¤È¤ë¤Ð¤Ê¡¼ #T35 ¥¿¥¤¥È¥ë¥Ð¥Ê¡¼
++¤¿¤¤¤à #T35 TIME
++¤¿¤¤¤à¤Ñ¤é¤É¤Ã¤¯¤¹ #T35 ¥¿¥¤¥à¥Ñ¥é¥É¥Ã¥¯¥¹
++¤¿¤¤¤ï¤ó #T35 ¥¿¥¤¸¤
++¤¿¤«¤¬¤Ý¤ó¤µ¤ì¤É¤Ý¤ó #CJ ¤¿¤«¤¬¥Ý¥ó¤µ¤ì¤É¥Ý¥ó
++¤¿¤«¤µ¤­¤ß¤ï #JN ¹âºêÈþÏ 
++¤¿¤«¤µ¤ó #JNM ¥¿¥«¤µ¤ó
++¤¿¤«¤µ¤ó #T35 ¥¿¥«¤µ¤ó
++¤¿¤«¤·¤¯¤ó¤¸¤±¤ó #KK ¤¿¤«¤··¯»ö·ï
++¤¿¤«¤·¤¯¤ó¤¸¤±¤ó #T35 ¤¿¤«¤··¯»ö·ï
++¤¿¤«¤¿¤·¤ã¤Á¤ç¤¦ #JNS ¤¿¤«¤¿¼ÒĹ
++¤¿¤«¤¿¤·¤ã¤Á¤ç¤¦ #JNSUC ¤¿¤«¤¿¼ÒĹ
++¤¿¤«¤Ï¤·¤è¤· #T35 ¹â¶¶Í³
++¤¿¤«¤é¤®¤³ #JN ¥¿¥«¥é¥®¥³
++¤¿¤¯¤¢¤ó¤â¤Ê¡¼ #JN ¤¿¤¯¤¢¤ó¥â¥Ê¡¼
++¤¿¤¯¤­¤å¤¦ #T35 Âðµå
++¤¿¤°¤Á¤Ë¤Ã¤­ #T35 ÅĸýÆüµ­
++¤¿¤±¤·¤¯¤ó #JNM ¤¿¤±¤··¯
++¤¿¤±¤À¤­¤¾¤Ì #JN ÉðÅĵ³¤¾¤Ì
++¤¿¤±¤À¤­¤Ð #JN ÉðÅĵ³ÇÏ
++¤¿¤±¤À¤­¤Ð¤°¤ó¤À¤ó #T35 ÉðÅĵ³ÇÏ·³ÃÄ
++¤¿¤±¤Õ¤¸¤Î¤·¡¼¤¨¤à #JN ÉðÉٻΤΣãÍ
++¤¿¤³¤µ¤Ð #T35 tako»ª
++¤¿¤³¤Í¤³ #JN ¥¿¥³¤Í¤³
++¤¿¤³¤Í¤³ #JN ¥¿¥³¤Í¤³ 
++¤¿¤·¤í #JNS ÅÄÂå
++¤¿¤·¤í #T35 ÅÄÂå
++¤¿¤·¤í¤Ã¤¯ #KK ¥¿¥·¥í¥Ã¥¯
++¤¿¤·¤í¤Û¤¦ #T35 ÅÄÂåˤ
++¤¿¤·¤í¤Þ¤µ¤· #JN ÅÄÂå¤Þ¤µ¤· 
++¤¿¤·¤í¤Þ¤Ä¤ê #T35 ÅÄÂåº×¤ê
++¤¿¤¸¤å¤¦ #T30 ¿½Å
++¤¿¤¸¤å¤¦¤È¤¦¤³¤¦ #T30 ¿½ÅÅê¹Æ
++¤¿¤¹¤£¤í¤¹ #T35 ¥¿¥¹¥£¥í¥¹
++¤¿¤½¤¬¤ì #KK ïÈà
++¤¿¤½¤¬¤ì #T35 ïÈà
++¤¿¤½¤½¤­¡¼¤½ #CJ ¥¿¥½¥½¥­¡¼¥½
++¤¿¤½¤½¤­¡¼¤½ #CJ ŽÀŽ¿Ž¿Ž·Ž°Ž¿
++¤¿¤½¤½¤­¡¼¤½ #JN (Žß¢ÏŽß)ŽÀŽ¿Ž¿Ž·Ž°Ž¿
++¤¿¤½¤½¤­¡¼¤½ #JN ¥¿¥½¥½¥­¡¼¥½ 
++¤¿¤½¤½¤­¡¼¤½ #JN ŽÀŽ¿Ž¿Ž·Ž°Ž¿ 
++¤¿¤¿ #K5r á
++¤¿¤¿¤­ #T35 ᤭
++¤¿¤¿¤¯ #K5r ᤯
++¤¿¤À¤­¤Á¤µ¤ó #JN ÃéµÈ¤µ¤ó
++¤¿¤À¤­¤Á¤µ¤ó #JN ÃéµÈ¤µ¤ó 
++¤¿¤À¤Î #T35 TDN
++¤¿¤À¤ó¤¯¤· #T35 ¿Ãʶú
++¤¿¤Ã¤­¤å¤¦ #T35 Âðµå
++¤¿¤Æ¤¢¤é¤· #T35 Ω¤Æ¹Ó¤é¤·
++¤¿¤Æ¤Ê¤ª¤· #T35 Ω¤Æľ¤·
++¤¿¤Æ¤Ë¤² #T30 Ω¤Æƨ¤²
++¤¿¤Æ¤è¤ß #T35 ½ÄÆɤß
++¤¿¤Ê¤« #JN ÅÄÃæ
++¤¿¤Ê¤« #JNS ÅÄÃæ
++¤¿¤Ê¤«¤Õ¤¡¤ó¤¿¤¸¤¤ #T35 ÅÄÃæ¥Õ¥¡¥ó¥¿¥¸¡¼
++¤¿¤Ê¤«¤â¤Ê¤ä #JN ÅÄÃæ¥â¥ÊÌé
++¤¿¤Ê¤Ð¤¿¤¨¤É¤¦¤í¤¦¤â¤Ê¡¼ #JN ¼·Í¼³¨¤É¤¦¤í¤¦¥â¥Ê¡¼
++¤¿¤Ë¤¶¤ï¤É¤¦¤Ö¤Ä¤Ó¤ç¤¦¤¤¤ó #T35 ë߷ưʪɱ¡
++¤¿¤Í #T35 ¼ï
++¤¿¤Í¤Á¤å¤¦ #T35 ¼ï¿ß
++¤¿¤Í¤Ê¤· #JN ¼ï̵¤·
++¤¿¤Í¤Ê¤· #T35 ¼ï̵¤·
++¤¿¤Ð #KK «
++¤¿¤Ð #T35 «
++¤¿¤Ð¤¸¤ç¤¦¤»¤ó #T35 «¾åÀþ
++¤¿¤Þ¤´ #T35 ¶Ì»Ò
++¤¿¤Þ¤Á¤ã¤ó #JN ¥¿¥Þ¤Á¤ã¤ó
++¤¿¤ß¤ä #KK ¥¿¥ß¥ä
++¤¿¤à¤é¤ê¤ç¤¦¤³ #JN Åļμ»Ò
++¤À¤á¤Ý #CJ ¡²|¡±|¡û
++¤À¤á¤Ý #CJ orz
++¤À¤á¤Ý #CJ _no
++¤¿¤â¤ê #JN ¥¿¥â¥ê
++¤¿¤é #KK í
++¤¿¤é #T35 í
++¤¿¤é¤³ #T35 ¥¿¥é¥³
++¤¿¤ê¤­¤Á¤ã¤ó #T35 ¾ÎϤÁ¤ã¤ó
++¤¿¤ê¤Ð¤ó #CN ¥¿¥êÈÄ
++¤¿¤ê¤Ð¤ó #T35 ¥¿¥êÈÄ
++¤¿¤ê¤Ð¤ó¤¿¤í¤¦ #T35 ¥¿¥ê¥Ð¥óÂÀϺ
++¤¿¤ë¤±¤¨ #T35 ¥¿¥ë¥±¡¼
++¤¿¤ì¤ß¤ß¤â¤Ê¡¼ #JN ¤¿¤ì¼ª¥â¥Ê¡¼
++¤¿¤í¤¦ #SUC ÂÀϺ
++¤¿¤í¤¦ #T35 ¡û¡ûÂÀϺ
++¤¿¤ï¤é #T35 TAWARA
++¤¿¤ó #SUC ¥¿¥ó
++¤¿¤ó #SUC ŽÀŽÝ
++¤¿¤ó¤­¤å¡¼ #CJ ¥¿¥ó¥­¥å¡¼
++¤¿¤ó¤­¤å¡¼ #CJ ŽÀŽÝŽ·Ž­Ž°
++¤¿¤ó¤­¤å¤¦ #CJ ¥¿¥ó¥­¥å¡¼
++¤¿¤ó¤­¤å¤¦ #CJ ŽÀŽÝŽ·Ž­Ž°
++¤¿¤ó¤½¤­¡¼¤ó #CJ (¡¦¢Ï¡¦)¥¿¥ó¥½¥­¡¼¥ó 
++¤¿¤ó¤½¤­¡¼¤ó #CJ (¡¦¢Ï¡¦)ŽÀŽÝŽ¿Ž·Ž°ŽÝ 
++¤¿¤ó¤½¤­¡¼¤ó #CJ (¡¬¢Ï¡¬)¥¿¥½¥½¥­¡¼¥½ 
++¤¿¤ó¤½¤­¡¼¤ó #CJ (Žß¢ÏŽß)ŽÀŽ¿Ž¿Ž·Ž°Ž¿ 
++¤¿¤ó¤½¤­¡¼¤ó #CJ ¥¿¥ó¥½¥­¡¼¥ó 
++¤¿¤ó¤½¤­¡¼¤ó #CJ ŽÀŽÝŽ¿Ž·Ž°ŽÝ 
++¤¿¤ó¤½¤­¡¼¤ó #JN (¡¦¢Ï¡¦)ŽÀŽÝŽ¿Ž·Ž°ŽÝ
++¤¿¤ó¤½¤­¡¼¤ó #JN ¥¿¥ó¥½¥­¡¼¥ó 
++¤¿¤ó¤½¤­¡¼¤ó #JN ÀÝ¿·°Ý
++¤¿¤ó¤½¤­¡¼¤ó #JN ŽÀŽÝŽ¿Ž·Ž°ŽÝ 
++¤¿¤ó¤½¤¯¤ä¤¯¤¶ #JN û­ŽÔŽ¸Ž»ŽÞ
++¤¿¤ó¤Ý¤Ý¤½¤ó¤· #JN ³÷¸ø±Ñº»Õ
++¤À¡¼¤ä¤¹ #JN ¥À¡¼¥ä¥¹
++¤À¡¼¤ä¤¹ #T35 ¥À¡¼¥ä¥¹
++¤À¡¼¤ä¤¹¤­¤Î¤³ #JN ¥À¡¼¥ä¥¹¥­¥Î¥³
++¤À¤¢¤ä¤¹ #JN ¥À¡¼¥ä¥¹
++¤À¤¤¤ª¤¦¤Ò¤µ¤Þ #T35 Â粦ÈÞÍÍ
++¤À¤¤¤«¤ó¤²¤ó #T35 Âç´Ô¸µ
++¤À¤¤¤µ¤¯ #JN Âçºî
++¤À¤¤¤·¤å¤ê¤ç¤¦¤­¤ó¤°¤¾¡¼¤Ì #JN Âç¼óÎÎ¥­¥ó¥°¥¾¡¼¥Ì
++¤À¤¤¤·¤ó¤«¤ó¤³¤ê¤ó¤º #JN Âç¿À´±¥³¥ê¥ó¥º
++¤À¤¤¤·¤ó¤«¤ó¤Æ¤Ê¡¼ #JN Âç¿À´±¥Æ¥Ê¡¼
++¤À¤¤¤·¤ó¤«¤ó¤â¤Ò¤ã #JN Âç¿À´±¥â¥Ò¥ã
++¤À¤¤¤»¤ó¤»¤¤ #T35 ÂçÀèÀ¸
++¤À¤¤¤È¤¦¤¢¤Æ¤¤¤³¤¯ #KK ÂçÅì°¡Äë¹ñ
++¤À¤¤¤È¤¦¤¢¤Æ¤¤¤³¤¯ #T35 ÂçÅì°¡Äë¹ñ
++¤À¤¤¤Ë¤Á¤å¤¦¤Ü¤¦¤¤¤¿ #T35 Âè2¿ß˼ÈÄ
++¤À¤¤¤Ë¤Á¤å¤¦¤Ü¤¦¤¤¤¿ #T35 Â裲¿ß˼ÈÄ
++¤À¤¤¤Ð¤¯¤Ï¤Ä #JN ÂçÇúȯ
++¤À¤¦¤½ #T30 ¥À¥¦¥½
++¤À¤¦¤½ #T35 ¥À¥¦¥½
++¤À¤¦¤ó #T30 ¥À¥¦¥½
++¤À¤¦¤ó #T35 ¥À¥¦¥½
++¤À¤¦¤ó #T35 ¥À¥¦¥ó
++¤À¤¬¤½¤ì¤¬¤¤¤¤ #CJ ¤À¤¬¤½¤ì¤¬¤¤¤¤
++¤À¤±¤É #SUC ¤À¤±¤É
++¤À¤±¤É¤Ê¤Ë¤«¤·¤Ä¤â¤ó¤¢¤ë #CJ ¤À¤±¤É¡¢²¿¤«¼ÁÌ䤢¤ë¡©
++¤À¤±¤Ï¤«¤ó¤Ù¤ó¤·¤Æ¤¯¤À¤µ¤¤ #CJ ¤À¤±¤Ï´ªÊÛ¤·¤Æ¤¯¤À¤µ¤¤
++¤À¤µ¤¤¤¿¤Þ #T35 ¥À¥µ¥¤¥¿¥Þ
++¤À¤¹¤Ù¤§¤À #JN ½Ð¤¹¤Ù¤§ÂÀ
++¤À¤¹¤ì #T35 ÂÌ¥¹¥ì
++¤À¤¹¤ì¤·¤å¤¦¤è¤¦¤¸¤ç #T35 ÂÌ¥¹¥ì¼ýÍƽê
++¤À¤»¡¼¤è #JN ¥À¥»¡¼¥è
++¤À¤½¤Ê #JN ¥À¥½¥Ê
++¤À¤Ã¤³¤Á¤å¤¦ #T35 ¤À¤Ã¤³¿ß
++¤À¤Ã¤È¤¤¤­ #CJ datÀ¤­
++¤À¤Ã¤È¤¤¤­¤µ¤æ¤ê #JN DATÀ¤­º´Í´Íý
++¤À¤Ã¤È¤ª¤Á #CJ datÍî¤Á
++¤À¤Ö¤ë¤¤¤«¤ä¤­¤½¤Ð #JN ¥À¥Ö¥ë¤¤¤«¾Æ¤­¤½¤Ð
++¤À¤Ö¤ë¤Þ¡¼¤Á #T35 £×£Í£Á£Ò£Ã£È
++¤À¤Þ¤·¤¹¤ì #T35 ñÙ¤·¥¹¥ì
++¤À¤Þ¤ì¤³¤¾¤¦ #JN ¥À¥Þ¥ì¥³¥¾¥¦
++¤À¤ß¤¢¤ó #T35 ¥À¥ß¥¢¥½
++¤À¤ß¤¢¤ó #T35 ¥À¥ß¥¢¥ó
++¤À¤ß¤¢¤ó #T35 ¥À¥ß¥ä¥½
++¤À¤à #JN ¢º¡Ê¡¦¦Ø¡¦¡Ë¢»
++¤À¤à #JN ÂÌ̵
++¤À¤à #T35 ÂÌÌ´
++¤À¤à #T35 ÂÌ̵
++¤À¤á¤«¡¼ #CJ ÂÌÌܤ«¡¼
++¤À¤á¤«¤¢ #CJ ÂÌÌܤ«¡¼
++¤À¤á¤¹¤ì¤Ã¤É¤«¤ó¤ê¤­¤³¤¦ #JN ÂÌÌ܎½ŽÚŽ¯ŽÄŽÞ´ÉÍýµ¡¹½
++¤À¤á¤Ê¤ä¤Ä¤Ï¤Ê¤Ë¤ò¤ä¤Ã¤Æ¤À¤á #CJ ¤À¤á¤Ê¤ä¤Ä¤Ï²¿¤ò¤ä¤Ã¤Æ¤âÂÌÌÜ
++¤À¤á¤Ê¤ä¤Ä¤Ï¤Ê¤Ë¤ò¤ä¤Ã¤Æ¤â¤À¤á #CJ ¤À¤á¤ÊÅۤϲ¿¤ò¤ä¤Ã¤Æ¤â¤À¤á
++¤À¤á¤Ê¤ä¤Ä¤Ï¤Ê¤Ë¤ò¤ä¤Ã¤Æ¤â¤À¤á #JN ¤À¤á¤ÊÅۤϲ¿¤ò¤ä¤Ã¤Æ¤â¤À¤á
++¤À¤á¤Ð¤³ #T35 ¥À¥áÈ¢
++¤À¤á¤Ü¤Ã¤¯¤¹ #T35 ¥À¥á¥Ü¥Ã¥¯¥¹
++¤À¤è¤â¤ó #T35 ¤À¤è¤â¤ó
++¤À¤ë¤Þ¤â¤Ê¡¼ #JN ¤À¤ë¤Þ¥â¥Ê¡¼
++¤À¤ë¤Þ¤â¤Ê¡¼ #JN ¤À¤ë¤Þ¥â¥Ê¡¼ 
++¤À¤ì¤¤¤ä¤Í¤ó #JN ÂÄÎî²°Ç°¡¡
++¤À¤ì¤¹ #T35 Ḁ̂쥹
++¤À¤ì¤â¤¤¤Ê¤¤¤¹¤ì¤Ò¤È¤ê¤Ü¤Ã¤Á #CJ ï¤â¤¤¤Ê¤¤¥¹¥ì¡£¤Ò¤È¤ê¤Ü¤Ã¤Á
++¤Á¡¼¤º¤±¡¼¤­ #JN ŽÁŽ°Ž½ŽÞŽ¹Ž°Ž· 
++¤Á¡¼¤à¤Ë¤Á¤ã¤ó¤Í¤ë #KK ¥Á¡¼¥à£²¤Á¤ã¤ó¤Í¤ë
++¤Á¤£¤â¤Ê¡¼ #JN ¤Á¤£¥â¥Ê¡¼
++¤Á¤§¤­¤Ê #T35 ¥Á¥§¥­¥Ê
++¤Á¤§¤Á¤§¤ó #T35 ¥Á¥§¥Á¥§¥ó
++¤Á¤§¤Ã #JN ¡¥¡¥¡¥(¡­§©¡®¡ËŽÁŽªŽ¯
++¤Á¤§¤Ã #JN ¤Á¤§¤Ã
++¤Á¤«¤¯¤Ø¤ó¤É¤¦ #T30 ÃϳÌÊÑÆ°
++¤Á¤«¤¯¤Ø¤ó¤É¤¦ #T35 ÃϳÌÊÑÆ°
++¤Á¤«¤² #JNM ¥Á¥«¥²
++¤Á¤«¤² #JNM ·ì±Æ
++¤Á¤«¤² #JNM Æý±Æ
++¤Á¤«¤² #T35 ¥Á¥«¥²
++¤Á¤«¤² #T35 ·ì±Æ
++¤Á¤«¤² #T35 Æý±Æ
++¤Á¤«¤¹¤ì #T35 Ãϲ¼¥¹¥ì
++¤Á¤«¤ó #T35 ÃÔ´Á
++¤Á¤«¤ó¤Ç¤Ã¤Á¤¢¤² #T35 ÃÔ´Á¤Ç¤Ã¤Á¾å¤²
++¤Á¤­¤ó¤ì¡¼¤¹ #T35 ¥Á¥­¥ó¥ì¡¼¥¹
++¤Á¤­¤ó¤ì¤¨¤¹ #T35 ¥Á¥­¥ó¥ì¡¼¥¹
++¤Á¤²¡¼¤è #JN ¥Á¥²¡¼¥è
++¤Á¤´¤¤¤Í #CJ ¥Á¥´¥¤¥Í
++¤Á¤·¤ç¤¦ #T35 ÃÓ¾Â
++¤Á¤º #T35 ÃÏ¿Þ
++¤Á¤¿¤Í¡¼¤è #JN ¥Á¥¿¥Í¡¼¥è
++¤Á¤Á¤ç¤ó¤Þ¤ó¤Á #JN ¤Á¤Á¤ç¤ó¤Þ¤ó¤Á
++¤Á¤Ã¤Ñ¤ó #KK ¤Á¤Ã¤Ñ¤ó
++¤Á¤Æ¤¤ #KK ÃÏÄì
++¤Á¤Æ¤¤ #T35 ÃÏÄì
++¤Á¤Æ¤¤¤â¤Ê #JN ÃÏÄì¤â¤Ê
++¤Á¤Í¤Ð¡¼ #JN ¥Á¥Í¥Ð¡¼
++¤Á¤Ð¤²¤ó¤¸¤ó #T35 ÀéÍÕ¸¶¿Í
++¤Á¤Ð¤·¤·¤ã #T35 ÃÔÇÍ»à¼Ô
++¤Á¤Ð¤È¤ß¤ó #T35 ÀéÍÕÅÔ̱
++¤Á¤Ð¤é¤­ #CN ¥Á¥Ð¥é¥­
++¤Á¤Ð¤é¤­ #T35 ¥Á¥Ð¥é¥­
++¤Á¤Ð¤é¤® #CN ¥Á¥Ð¥é¥®
++¤Á¤Ð¤é¤® #T35 ¥Á¥Ð¥é¥®
++¤Á¤Ó¤®¤³ #JN ¤Á¤Ó¥®¥³
++¤Á¤Ó¤®¤³¤Ö¤ê #JN ¤Á¤Ó¥®¥³¥Ö¥ê
++¤Á¤Ó¤·¤£ #JN ¤Á¤Ó¤·¤£
++¤Á¤Ó¤Õ¤µ #JN ¥Á¥Ó¥Õ¥µ
++¤Á¤Ó¤â¤é¤é¡¼ #JN ¥Á¥Ó¥â¥é¥é¡¼
++¤Á¤á¤¤ #T35 ÃÏ̾
++¤Á¤ã¤¤ #JN ¡¡¡¡,._.,¡¡
++¤Á¤ã¤¤ #JN ŽÁŽ¬Ž²¡¡
++¤Á¤ã¤Ö¤À¤¤ #JN ¤Á¤ã¤ÖÂæ
++¤Á¤ã¤Ö¤À¤¤ #JN ¨µ¨¬¨µ
++¤Á¤ã¤Ö¤À¤¤¤¤¤É¤¦ #JN ¤Á¤ã¤ÖÂæ°ÜÆ°
++¤Á¤ã¤à #JN ¥Á¥ã¥à
++¤Á¤ã¤à #T35 ¥Á¥ã¥à
++¤Á¤ã¤ó¤³ #JN ¥Á¥ã¥ó¥³
++¤Á¤ã¤ó¤³¤Þ¤¹¤À #T35 ¥Á¥ã¥ó¥³ÁýÅÄ
++¤Á¤ã¤ó¤³¤í #T35 ¥Á¥ã¥ó¥³¥í
++¤Á¤ã¤ó¤µ¤Þ #SUC ¤Á¤ã¤óÍÍ
++¤Á¤ã¤ó¤µ¤Þ #T35 ¤Á¤ã¤óÍÍ
++¤Á¤å¡¼¤Á¤å¡¼¤½¤ó¤° #KK ¤Á¤å¡¼¤Á¤å¡¼¥½¥ó¥°
++¤Á¤å¡¼¤Ü¡¼ #JN ¥Á¥å¡¼¡¦¥Ü¡¼
++¤Á¤å¡¼¤Ü¡¼¤Ç¤¹¤è #JN ¥Á¥å¡¼¥Ü¡¼¤Ç¤¹¤è¡ª
++¤Á¤å¤¦ #T35 ¿ß
++¤Á¤å¤¦¤«¤ê¤ç¤¦¤ê¤í¤Ü¤»¤ó¤³¤¦¤·¤ã #JN Ãæ²ÚÎÁÍý¥í¥ÜÀè¹Ô¼Ô
++¤Á¤å¤¦¤¬¤¯¤»¤¤¤Á¤Ï¤ë #T35 Ãæ³ØÀ¸¤Á¤Ï¤ë
++¤Á¤å¤¦¤±¤¤ #T30 Ãæ·Ñ
++¤Á¤å¤¦¤±¤ó #JN Ãæ·ø
++¤Á¤å¤¦¤±¤ó #T35 Ãæ·ø
++¤Á¤å¤¦¤³¤ª¤ó¤Ê #T35 Ãæ¸Å½÷
++¤Á¤å¤¦¤Á¤å¤¦¤½¤ó¤° #T35 ¤Á¤å¡¼¤Á¤å¡¼¥½¥ó¥°
++¤Á¤å¤¦¤Ö¤ë¤ª¤ó¤Ê #T35 Ãæ¸Å½÷
++¤Á¤å¤¦¤Ü¤¦ #T35 ¿ß˼
++¤Á¤å¤¦¤Ü¤¦¤°¤ó¤À¤ó #T35 ¿ß˼·³ÃÄ
++¤Á¤å¤¦¤Ü¤¦¤ê¤Ë¤å¤¦¤ê¤ç¤¯ #KK ¿ß˼ΥÆý¿©
++¤Á¤å¤× #T35 ¥Á¥å¥×
++¤Á¤å¤×¤¿¤ó #T35 ¥Á¥å¥×¥¿¥ó
++¤Á¤å¤×¤¿¤ó #T35 ŽÁŽ­ŽÌŽßŽÀŽÝ
++¤Á¤æ #JN ¤Á¤æ
++¤Á¤æ¤â¤Ê #JN ¤Á¤æ¤â¤Ê
++¤Á¤ç¤¤¤Î¤ê #T35 ¥Á¥ç¥¤¥Î¥ê
++¤Á¤ç¤¦¤ª¤ì¤°¤ë¤Þ #JN Ķ²¶¼Ö
++¤Á¤ç¤¦¤»¤¤¤É¤Ã¤È #JN .
++¤Á¤ç¤¦¤»¤¤¤É¤Ã¤È #JN Ä´À°¥É¥Ã¥È
++¤Á¤ç¤¦¤»¤ó¤·¤ã #JN Ä©Àï¼Ô
++¤Á¤ç¤¦¤»¤ó¤»¤¤ #JN ĶÀèÀ¸
++¤Á¤ç¤¦¤»¤ó¤»¤¤ #T35 ĶÀèÀ¸
++¤Á¤ç¤¦¤Ë¤Á¤·¤ó¤Ö¤ó #KK ¤Á¤ç¤¦¤Ë¤Á¿·Ê¹
++¤Á¤ç¤¦¤Ë¤Á¤·¤ó¤Ö¤ó #T35 ¤Á¤ç¤¦¤Ë¤Á¿·Ê¹
++¤Á¤ç¤¦¤Õ¤¯¤¹¤ì #T35 ½ÅÊ£¥¹¥ì
++¤Á¤ç¤¦¤Õ¤¯¤¹¤ì¤Ã¤É #T35 ½ÅÊ£¥¹¥ì¥É
++¤Á¤ç¤¦¤Ö¤ó¤ì¤¹ #T35 Ĺʸ¥ì¥¹
++¤Á¤ç¤¦¤ì¤¹ #T35 Ĺ¥ì¥¹
++¤Á¤ç¤¦¤í¤¦ #JN ĹϷ
++¤Á¤ç¤¦¤í¤¦ #T35 ĹϷ
++¤Á¤ç¤¯¤ê¤ó #T30 ľ¥ê¥ó
++¤Á¤ç¤¯¤ê¤ó¤¯ #T30 ľ¥ê¥ó¥¯
++¤Á¤ç¤·¤å¤µ¤ó #T35 ¥Á¥ç¥·¥å¥µ¥ó
++¤Á¤ç¤·¤å¤µ¤ó #T35 ŽÁŽ®Ž¼Ž­Ž»ŽÝ
++¤Á¤ç¤½ #T35 ¥Á¥ç¥½
++¤Á¤ç¤½ #T35 ŽÁŽ®Ž¿
++¤Á¤ç¤Ã¤Ñ¤ê #T35 ¥Á¥ç¥Ã¥Ñ¥ê
++¤Á¤ç¤é¤Í¡¼¤è #JN ¥Á¥ç¥é¥Í¡¼¥è
++¤Á¤ç¤ì¤®¤µ¤é¤À #JN ¥Á¥ç¥ì¥®¥µ¥é¥À
++¤Á¤ç¤ó #T35 ¥Á¥ç¥ó
++¤Á¤ç¤ó #T35 ŽÁŽ®ŽÝ
++¤Á¤ç¤ó¤¤¤ë¤·¤ó¤Ö¤ó #KK ¥Á¥ç¥ó¥¤¥ë¿·Ê¹
++¤Á¤ç¤ó¤¤¤ë¤·¤ó¤Ö¤ó #T35 ¥Á¥ç¥ó¥¤¥ë¿·Ê¹
++¤Á¤ç¤ó¤Ê #CJ ¥Á¥ç¥ó¤Ê
++¤Á¤é¤Í¡¼¤è #JN ¥Á¥é¥Í¡¼¥è¡¡
++¤Á¤ì¤¹ #T30 Ã٥쥹
++¤Á¤ì¤¹ #T35 Ã٥쥹
++¤Á¤ó #T35 Ä¿
++¤Á¤ó #T35 ÄÁ
++¤Á¤ó¤«¤³¤ß¤À¤ó #T35 ÄÁ°ÏÃÄ
++¤Á¤ó¤² #JN ¥Á¥ó¥²
++¤Á¤ó¤² #T35 ¥Á¥ó¥²
++¤Á¤ó¤³¤ª¤ó¤É #T35 ¤Á¤ó¤³²»Æ¬
++¤Á¤ó¤³¤à¤®¤å¡¼ #CJ ¤Á¤ó¤³¤à¤®¤å¡¼
++¤Á¤ó¤³¤à¤®¤å¤¦ #CJ ¤Á¤ó¤³¤à¤®¤å¡¼
++¤Á¤ó¤·¤ã #T35 ÄÁ¼Ö
++¤Á¤ó¤¸¤ç #T35 ÄÁ½÷
++¤Á¤ó¤½¤¦ #T30 ÄÁÁÕ
++¤Á¤ó¤½¤¦¤¢¤é¤· #JN ÄÁÁö¹Ó¤é¤·
++¤Á¤ó¤½¤¦¤¸¤ó #T35 ÄÁÁÕ¿Í
++¤Á¤ó¤½¤¦¤À¤ó #T35 ÄÁÁÕÃÄ
++¤Á¤ó¤½¤¦¤À¤ó #T35 ÄÁÁöÃÄ
++¤Á¤ó¤½¤¦¤É #T35 ÄÁÁÕÅÛ
++¤Á¤ó¤½¤¦¤Ù¤ó¤¸¤ç #T35 ÄÁÁÕÊؽê
++¤Á¤ó¤½¤¦¤â¤é¤é¡¼ #JN ÄÂÁö¥â¥é¥é¡¼
++¤Á¤ó¤Ç¤£¤¤ #T35 ÄÁD
++¤Á¤ó¤Ð¤ó #T35 ÄÁÈ×
++¤Á¤ó¤×¤¦ #KK ÄÁÉ÷
++¤Á¤ó¤×¤¦ #KK ÄÄÉ奦
++¤Á¤ó¤×¤¦ #T35 ÄÁÉ÷
++¤Á¤ó¤×¤¦ #T35 ÄÄÉ奦
++¤Á¤ó¤×¤¯ #T35 ÄÁÉþ
++¤Á¤ó¤Ý¡¼ #JN ¡Ê¡¦¢Ï¡¦¡ËŽÁŽÝŽÎŽßŽ°!!
++¤Á¤ó¤Ý¡¼ #JN ÁÝÎß!
++¤Á¤ó¤Ý¡¼ #JN ŽÁŽÝŽÎŽßŽ°!!
++¤Á¤ó¤Ý¤´¤­¤Ö¤ê #JN ¥Á¥ó¥Ý¥´¥­¥Ö¥ê
++¤Á¤ó¤Ý¤À¤ó #T35 ÄÁÊâÃÄ
++¤Â¤ã¤ó #JN ¥Â¥ã¥ó
++¤Â¤ó¤®¤ç #JN ¤Â¤óµû
++¤Ã¤Æ¤¤¤¦¤«¤¦¡«¤¡¤« #CJ ¤Ã¤Æ¤¤¤¦¤«¡¢¥ô¥¡¥«¡©
++¤Ã¤Æ¤¤¤¦¤«¤¦¡«¤¡¤« #CJ ¤Ã¤Æ¤¤¤¦¤«¡¢Ž³ŽÞŽ§Ž¶¡©
++¤Ã¤Æ¤¤¤¦¤«¤¦¡«¤¡¤« #CJ ¤Ã¤Æ¤¤¤¦¤«¡¢Ž³ŽÞŽ§Ž¶¡©>>
++¤Ä  #R5r Äà
++¤Ä #R5 Äà
++¤Ä¡«¤µ¤¯¤Ä¡«¤¨¤½ #JN (?¢Ï?)
++¤Ä¡«¤µ¤¯¤Ä¡«¤¨¤½ #JN ¥Å¥µ¥¯¥Å¥¨¥½
++¤Ä¡«¤µ¤¯¤Ä¡«¤¨¤½ #JN ŽÂŽÞŽ»Ž¸ŽÂŽÞŽ´Ž¿
++¤Ä¡¼ #JN ¤Ä¡¼
++¤Ä¡¼¤« #CJ ¤Ä¡¼¤«
++¤Ä¡¼¤«¤«¤³¤í¤°¤è¤á #JN ¤Ä¡¼¤«²áµî¥í¥°Æɤá
++¤Ä¤¦¡«¤¡¤¤ #JN ¥Ä¥ô¥¡¥¤
++¤Ä¤¦¤¸¤ç¤¦¤Î¤µ¤ó¤Ð¤¤ #CJ Ä̾ï¤Î£³ÇÜ
++¤Ä¤¦¤¸¤ç¤¦¤Î¤µ¤ó¤Ð¤¤ #T35 Ä̾ï¤Î£³ÇÜ
++¤Ä¤¦¤Û¤¦¤·¤Þ¤¹¤¿ #T35 ÄÌÊó¤·¤Þ¤¹¤¿
++¤Ä¤« #KK ÄÍ
++¤Ä¤« #T35 ÄÍ
++¤Ä¤­ #T35 ·î
++¤Ä¤­¤Á¤å¤¦ #T35 ·î¿ß
++¤Ä¤­¤Î¤Ï¤·¤º¤¯ #JN ¤Ä¤­¤Î¤Ï¤·¤º¤¯
++¤Ä¤­¤Ò¤á #KK ·îɱ
++¤Ä¤¸ #T35 ¤Î¤Î¤¿¤ó
++¤Ä¤¸ #T35 ÄÔ
++¤Ä¤¸¡¼¤ó #JN ÄÔ¡¼¤ó
++¤Ä¤¸¡¼¤ó #T35 ÄÔ¡¼¤ó
++¤Ä¤¸¤¤¤ó #T35 ÄÔ¡¼¤ó
++¤Ä¤¸¤¨¤­ #JN ÄÔ±Ø
++¤Ä¤Î¤â¤Ê¡¼ #JN ¤Ä¤Î¥â¥Ê¡¼
++¤Ä¤Ü #CN ÄÛ
++¤Ä¤Ü #T35 ÄÚ
++¤Ä¤Ü #T35 ÄÛ
++¤Ä¤Ü¤Þ¤¸¤ó¤ß¤Ë¤Ê¤Ë¤ç¤ê¡¼¤Ê #JN ÄÛËâ¿Í¡¦ŽÐŽÆŽÅŽÆŽ®ŽØŽ°ŽÅ
++¤Ä¤Þ¤ó¤Í #CJ ¥Ä¥Þ¥ó¥Í
++¤Ä¤â #JN ¥Ä¥â
++¤Ä¤æ¤Ò¤¿ #T35 ¤Ä¤æ¤Ò¤¿
++¤Ä¤é¤¤¤³¤È¤ò¤ª¤â¤¦¤â¤é¤é¡¼ #JN ¿É¤¤¤³¤È¤ò»×¤¦¥â¥é¥é¡¼
++¤Ä¤ê #T35 Äà¤ê
++¤Ä¤ê¤· #T35 Äà¤ê»Õ
++¤Ä¤ë¤Ù¤¸¤±¤ó #T35 ÄáÉÓ»ö·ï
++¤Ä¤ì¤¿ #T35 Äà¤ì¤¿
++¤Å¡¼ #JN ¤Å¡¼
++¤Æ¤£¡¼ #JN £ô¡¡
++¤Æ¤£¡¼¤À #JN ¥Æ¥£¡¼¥À
++¤Æ¤£¤¤¤Ç¤£¤¤¤¨¤Ì #T35 TDN
++¤Æ¤£¤«¤² #JNM ¥Æ¥£¥«¥²
++¤Æ¤£¤«¤² #T35 ¥Æ¥£¥«¥²
++¤Æ¤£¤­¤ã¡¼¤² #T35 ¥Æ¥£¥­¥ã¡¼¥²
++¤Æ¤£¤­¤ã¤¢¤² #T35 ¥Æ¥£¥­¥ã¡¼¥²
++¤Æ¤£¤Ð #T35 ¥Æ¥£¥Ð
++¤Æ¤£¤Ð #T35 ŽÃŽ¨ŽÊŽÞ
++¤Æ¤£¤à¤Ý #T35 ¥Æ¥£¥à¥Ý
++¤Æ¤£¤à¤Ý¤Î¤ï¤®¤ê #T35 ¥Æ¥£¥à¥Ý¤ÎÎØÀÚ¤ê
++¤Æ¤£¤à¤Ý¤Î¤ï¤®¤ê #T35 ŽÃŽ¨ŽÑŽÎŽß¤ÎÎØÀÚ¤ê
++¤Æ¤£¤à¤Ý¤Ó¤ë #T35 ¥Æ¥£¥à¥Ý¥Ó¥ë
++¤Æ¤£¤ó¤Ý #T35 ¥Æ¥£¥ó¥Ý
++¤Æ¤¤¤­¤±¤ó #T35 Äê´ü·ô
++¤Æ¤¤¤­¤ç¤¦ #T35 Ä㶸
++¤Æ¤¤¤³¤¯¤á¤¤¤É #JN ÄëԢ̽ÅÓ
++¤Æ¤¤¤·¤å¤«¤ó¤Ñ¤¯¤â¤Ê¡¼ #JN Äâ¼ç´ØÇò¥â¥Ê¡¼
++¤Æ¤¤¤»¤Ä #T35 ÄêÀâ
++¤Æ¤¤¤É¤Ò¤¯ #KYT ÄøÅÙÄã
++¤Æ¤«¤ê¤Ö¤¿ #T35 ¥Æ¥«¥êÆÚ
++¤Æ¤­¤¸¤ç #T30 ¤Æ¤­¤¸¤ç
++¤Æ¤­¤È #JN ¥Æ¥­¥È
++¤Æ¤¯¤â #KK ¼êÃØéá
++¤Æ¤¯¤â #T35 ¼êÃØéá
++¤Æ¤¹¤Æ¤¹ #CJ ¤Æ¤¹¤Æ¤¹
++¤Æ¤½ #JN ¥Æ¥½
++¤Æ¤½ #JN ŽÃŽ¿
++¤Æ¤½ #T35 ¥Æ¥½
++¤Æ¤½ #T35 ŽÃŽ¿
++¤Æ¤Ã¤³¤¦¤· #T35 ¥Æ¥Ã¥³¥¦¥·
++¤Æ¤Ã¤»¤ó¤«¤¤ #KK ïÄÀðÐò
++¤Æ¤Ã¤»¤ó¤«¤¤ #T35 ïÄÀðÐò
++¤Æ¤Ã¤Æ¤¤¤³¤¦¤»¤ó¤»¤ó¤²¤ó #JN Å°Äì¹³ÀïÀë¸À
++¤Æ¤Ä #T35 Å´
++¤Æ¤Ä¤ª¤¿¤¼¤Ã¤È¤¿¤±¤¢¤Ã¤È¤á¤¤¤Æ¤Ä #JN Å´¥ò¥¿£ÚÉð@¦ÌÅ´
++¤Æ¤Ä¤ª¤¿¤¼¤Ã¤È¤¿¤±¤á¤¤¤Æ¤Ä #JN Å´¥ò¥¿£ÚÉð@¦ÌÅ´
++¤Æ¤Ä¤Î¤ª¤­¤Æ #T35 Å´¤ÎÙÝ
++¤Æ¤Æ¤· #T35 ¤Æ¤Æ¤·
++¤Æ¤Ê¡¼ #JN ¥Æ¥Ê¡¼
++¤Æ¤Õ¤Æ¤Õ #JN ¤Æ¤Õ¤Æ¤Õ 
++¤Æ¤á¤§¤â¤Ê¡¼ #JN ¥Æ¥á¥§¥â¥Ê¡¼
++¤Æ¤ë¤¯¤Ï¤Î¤ë #T35 ¤Æ¤ë¤¯¤Ï¤Î¤ë
++¤Æ¤ì¤Û #T35 ¥Æ¥ì¥Û
++¤Æ¤ì¤Û¤·¤å¤¦¤ê¤ç¤¦ #T30 ¥Æ¥ì¥Û½ªÎ»
++¤Æ¤ì¤Û¤Þ¤ó #JN ¥Æ¥ì¥Û¥Þ¥ó
++¤Æ¤ì¤Û¤é¤Ã¤·¤å #T35 ¥Æ¥ì¥Û¥é¥Ã¥·¥å
++¤Æ¤í¤¨¤ê¡¼¤Ê #JN ¥Æ¥í¥¨¥ê¡¼¥Ê
++¤Æ¤ó¤·¤¨¤ó #CJ Å·»È±ê
++¤Æ¤ó¤·¤¨¤ó #T35 Å·»È±ê
++¤Æ¤ó¤Î¤¦ #JN Å·¹Ä
++¤Æ¤ó¤×¤ì #T35 ¥Æ¥ó¥×¥ì
++¤Æ¤ó¤Ý¤Ã¤Æ #KS ¥Æ¥ó¥Ý¤Ã¤Æ
++¤Ç¤¢¤ë¤« #CJ ¤Ç¡¢¤¢¤ë¤«
++¤Ç¤£ #JN ¤Ç¤£
++¤Ç¤£¡¼¤¸¤§¡¼¤â¤Ê¡¼ #JN £Ä£Ê¥â¥Ê¡¼¡¡
++¤Ç¤£¡¼¤Ý #T35 £Ä¥Ý
++¤Ç¤£¤¢¤Ê¤µ¤Þ #JN ¥Ç¥£¥¢¥ÊÍÍ
++¤Ç¤£¤ª¤â¤é¤ó¤É¡¼ #JN ¥Ç¥£¥ª¡¦¥â¥é¥ó¥É¡¼
++¤Ç¤£¤ª¤ó¤°¤ó #T35 DION·³
++¤Ç¤£¤ë¤ì¤¦¡«¤¡¤ó¤¬¡¼ #JN ¥Ç¥£¥ë¥ì¥ô¥¡¥ó¥¬¡¼
++¤Ç¤£¤ë¤ì¤¦¡«¤¡¤ó¤¬¤¢ #JN ¥Ç¥£¥ë¥ì¥ô¥¡¥ó¥¬¡¼
++¤Ç¤¤¤È¤¤¤ì¤À¡¼ #T35 ¥Ç¥¤¥È¥¤¥ì¥À¡¼
++¤Ç¤¤¤È¤¤¤ì¤À¤¢ #T35 ¥Ç¥¤¥È¥¤¥ì¥À¡¼
++¤Ç¤¦¡« #JN DEVU
++¤Ç¤¦¡« #JN ¤à¤·¤ã¤à¤·¤ã¡Ê¡¡¡­¡Ë§¥¡Ê¡®¡Ë
++¤Ç¤¨¤ó¤Ñ¤ß¤ó¤¾¤¯ #T35 ¥Ç¡¼¥ó¥Ñ¥ß¥ó¥¾¥¯
++¤Ç¤¨¤ó¤Ñ¤ß¤ó¤¾¤¯ #T35 ŽÃŽÞŽ°ŽÝŽÊŽßŽÐŽÝŽ¿ŽÞŽ¸
++¤Ç¤«¤Á¤ç¤¦¤¢¤ó¤É¤«¤º #JN ¥Ç¥«Ä¹¡õ¥«¥º
++¤Ç¤¬¤ï #JNS ½ÐÀî
++¤Ç¤¬¤ï #T35 ½ÐÀî
++¤Ç¤¬¤ï¤Ò¤Ã¤·¤À¤â¤½ #T35 ½ÐÀîɬ»à¥À¥â¥½¡ª
++¤Ç¤³ #JN ÆÌ
++¤Ç¤³ #T35 ÆÌ
++¤Ç¤¸¤â¤Ê¤Æ¤¤¤Þ¡¼¤º¤í¤´ #JN ¥Ç¥¸¥â¥Ê¥Æ¥¤¥Þ¡¼¥º¥í¥´
++¤Ç¤¹ #SUC DEATH
++¤Ç¤¹ #SUC ¥Ç¥¹
++¤Ç¤¹¤¯¤È¤Ã¤×¤³¤¦¤«¤¤¤¹¤ì #T35 ¥Ç¥¹¥¯¥È¥Ã¥×¸ø³«¥¹¥ì
++¤Ç¤¹¤±¤É¤Ê¤Ë¤« #CJ ¤Ç¤¹¤±¤É¡¢²¿¤«¡©
++¤Ç¤¹¤Ç¤¹ #CJ ¤Ç¤¹¤Ç¤¹
++¤Ç¤¹¤È¤í¤¤¤µ¤Þ #JN ¥Ç¥¹¥È¥í¥¤ÍÍ
++¤Ç¤½¤Ñ #T35 ¥Ç¥½¥Ñ
++¤Ç¤Õ¤©¤ë¤È¤Ê¤Ê¤· #T35 ¥Ç¥Õ¥©¥ë¥È̵̾¤·
++¤Ç¤Ö¤ª¤¿ #T35 ¥Ç¥Ö¥ò¥¿
++¤Ç¤Ö¤­¤ó #JN ¥Ç¥Ö¥­¥ó
++¤Ç¤Ö¤À¤Ê¡¼ #JN ¥Ç¥Ö¥À¥Ê¡¼
++¤Ç¤Ö¤í¤ó¤² #T35 ¥Ç¥Ö¥í¥ó¥²
++¤Ç¤Ö¤ò¤¿ #T35 ¥Ç¥Ö¥ò¥¿
++¤Ç¤Ö¤ò¤¿¤Ò¤Ã¤­¡¼ #T35 ¥Ç¥Ö¥ò¥¿¥Ò¥Ã¥­¡¼
++¤Ç¤Ö¤ò¤¿¤Ò¤Ã¤­¤¤ #T35 ¥Ç¥Ö¥ò¥¿¥Ò¥Ã¥­¡¼
++¤Ç¤Ø¤é¡¼ #JN ¥Ç¥Ø¥é¡¼
++¤Ç¤Ü¤¹¤º¤á #JN ¥Ç¥Ü¤¹¤º¤á
++¤Ç¤Þ¤Á #T30 ½ÐÄ®
++¤Ç¤Þ¤Á #T35 ½ÐÄ®
++¤Ç¤è¤í¤·¤¤¤« #CJ ¤Ç¤è¤í¤·¤¤¤«
++¤Ç¤ê #R5 ¥Ç¥ê
++¤Ç¤ê¤«¤· #JN ¥Ç¥ê¡Ê¡­§×`¡Ë¥«¥·
++¤Ç¤ó¤­¤ª¤¦ #JN Åŵ¤²¦
++¤Ç¤ó¤²¤­¤Ð¤Á¤Ð¤Á #JN ¤Ç¤ó¤²¤­¥Ð¥Á¥Ð¥Á
++¤Ç¤ó¤·¤ã¤¦¤· #JN Åżֵí
++¤Ç¤ó¤·¤ã¤¬¤¢¤ë #T35 Åż֥¬¡¼¥ë
++¤Ç¤ó¤·¤ã¤®¤å¤¦ #JN Åżֵí
++¤Ç¤ó¤»¤Ä¤­¤ç¤¸¤ó¤¤¤Ç¤Û¤½ #JN ÅÁÀâµð¿ÀŽ²ŽÃŽÞŽÎŽ¿
++¤Ç¤ó¤¿¤Þ #T35 ÅĶÌ
++¤Ç¤ó¤Ä¤¦ #T35 ÅÅ2
++¤Ç¤ó¤È #T35 ÅÄÅÔ
++¤Ç¤ó¤É¤í #T35 ÅÄÅ¥
++¤Ç¤ó¤Ë #T35 ÅÅ2
++¤Ç¤ó¤Ñ #T35 ¥Ç¥ó¥Ñ
++¤Ç¤ó¤Ñ #T35 ÅÅÇÈ
++¤Ç¤ó¤Ñ¤ª¤Ï¤Ê¤Ð¤¿¤±¤¤¤¿ #T35 ÅÅÇÈ¡¦¤ª²ÖȪÈÄ
++¤Ç¤ó¤Ñ¤­¤·¤ã #T35 ÅÅÇȵ­¼Ô
++¤Ç¤ó¤Ñ¤­¤ã¤é #T35 ÅÅÇÈ¥­¥ã¥é
++¤Ç¤ó¤Ñ¤Á¤ç¤¦¤µ¤¤¤ó¤â¤Ê¡¼ #JN ÅÅÇÈÄ´ºº°÷¥â¥Ê¡¼
++¤Ç¤ó¤Ñ¤È¤· #T35 ÅÅÇÈÅÔ»Ô
++¤Ç¤ó¤Ñ¤Ë¤Á¤ã¤ó #T35 ÅÅÇÈ2ch
++¤Ç¤ó¤Ñ¤Ë¤Á¤ã¤ó¤Í¤ë #T35 ÅÅÇÈ2¤Á¤ã¤ó¤Í¤ë
++¤Ç¤ó¤Ñ¤â¤é¤é¡¼ #JN ÅÅÇÈ¥â¥é¥é¡¼
++¤Ç¤ó¤Ñ¤é¤¤¤¿¤¢ #T35 ÅÅÇȥ饤¥¿¡¼
++¤Ç¤ó¤Ñ¤ò¤¿ #T35 ÅÅÇÈ¥ò¥¿
++¤È #SUC ¤È¡£
++¤È¡¼¤Û¤° #CN ¥È¡¼¥Û¥°
++¤È¡¼¤Û¤° #T35 ¥È¡¼¥Û¥°
++¤È¤¤¤¦¤³¤È¤Ë¤·¤¿¤¤¤Î¤Ç¤¹¤Í #CJ ¤È¤¤¤¦¤³¤È¤Ë¤·¤¿¤¤¤Î¤Ç¤¹¤Í
++¤È¤¤¤¦¤³¤È¤Ë¤·¤¿¤¤¤Î¤Ç¤¹¤Í #CJ ¤È¤¤¤¦¤³¤È¤Ë¤·¤¿¤¤¤Î¤Ç¤¹¤Í¡£:)
++¤È¤¤¤Ã¤Æ¤ª¤¯¤®¤ê #CJ ¤È¸À¤Ã¤Æ¤ª¤¯µÁÍý
++¤È¤¤¤Ã¤Æ¤ß¤ë¤Æ¤¹¤È #CJ ¤È¸À¤Ã¤Æ¤ß¤ë¥Æ¥¹¥È
++¤È¤¥¤¶¤¦¡«¤£¤¯¤È¤ê¡¼ #JN ¥È¥¥¥¶¥ô¥£¥¯¥È¥ê¡¼
++¤È¤¦ #T35 Åã
++¤È¤¦¤«¤¤ #CN Åݲõ
++¤È¤¦¤«¤¤ #CN Å쳤
++¤È¤¦¤«¤¤ #KK Åݲõ
++¤È¤¦¤«¤¤ #T35 Åݲõ
++¤È¤¦¤«¤¤ #T35 Å쳤
++¤È¤¦¤­¤å¤¦¤Á¤å¤¦ #T35 ÅìµÞ¿ß
++¤È¤¦¤­¤ç¤¦ #JN Åìµþ
++¤È¤¦¤­¤ç¤¦ #T35 Åìµþ
++¤È¤¦¤­¤ç¤¦¤¢¤¯¤»¤¹ #KK Åìµþ¥¢¥¯¥»¥¹
++¤È¤¦¤­¤ç¤¦¤­¤Æ¤£¤¤ #T35 Åìµþkitty¡Ê¡÷£÷¹Ó
++¤È¤¦¤­¤ç¤¦¤¸¤¨¤ó #JN ¥È¥¦¥­¥ç¥¦¥¸¥¨¥ó
++¤È¤¦¤­¤ç¤¦¤»¤¤¤·¤ó¤Ó¤ç¤¦¤¤¤ó #JN ÅìµþÀº¿Àɱ¡¡¡
++¤È¤¦¤­¤ç¤¦¤È¤»¤¤¤½¤¦¤­¤ç¤¯ #JN ÅìµþÅÔÀ¶ÁݶÉ
++¤È¤¦¤­¤ç¤¦¤È¤ê¤Ä¤Þ¤Ä¤¶¤ï¤Ó¤ç¤¦¤¤¤ó #JN ÅìµþÅÔΩ¾¾Âôɱ¡
++¤È¤¦¤µ¤ó #T30 É㤵¤ó
++¤È¤¦¤¸¤ç¤¦¤»¤ó #T35 «¾åÀþ
++¤È¤¦¤À¤¤¤ª¤Á #T35 ÅìÂçÍî¤Á
++¤È¤¦¤Ï¤È #KK ÅìÈ·
++¤È¤¦¤Ï¤È #T35 ÅìÈ·
++¤È¤¦¤Ö¤Á¤å¤¦ #T35 ÅìÉð¿ß
++¤È¤¦¤Ö¤Ø¤Ã¤É #T35 ƬÉô¥Ø¥Ã¥É
++¤È¤¦¤Û¤° #T35 ¥È¡¼¥Û¥°
++¤È¤¦¤á¤¤¤¢¤Ü¡¼¤ó #T30 Æ©ÌÀ¤¢¤Ü¡¼¤ó
++¤È¤¦¤á¤¤¤¢¤Ü¤ª¤ó #T30 Æ©ÌÀ¤¢¤Ü¡¼¤ó
++¤È¤¦¤è¤³¤È¤Ã¤­¤å¤¦¤Ï¤Þ¤¤¤Ë¤Á¤Ü¤í¤¤¤Á #CJ Åì²£ÆõޤÏËèÆü¥Ü¥í»Ô!
++¤È¤¨¤¤¤Ð¤¹ #JN ÅԱĥХ¹
++¤È¤ª¤â¤ï¤ì #CJ ¤È»×¤ï¤ì¡£
++¤È¤ª¤â¤ï¤ì¤á #CJ ¤È»×¥ï¥ì¥á
++¤È¤­¤å¤ó #T35 ¤È¥­¥å¥ó
++¤È¤¯¤À¤³¤¦¤¤¤Á #JN ÆÁÅĹ̰ì
++¤È¤¯¤Æ¤¤¤ê¤ç¤«¤¯ #T35 ÆÃÄêιµÒ
++¤È¤¯¤Ë¤ó¤®¤ç¤¦¤»¤¤¤·¤ç¤· #JN ÆÃǧ¹ÔÀ¯½ñ»Î
++¤È¤¯¤Ë¤ó¤®¤ç¤¦¤»¤¤¤·¤ç¤· #KK ÆÃǧ¹ÔÀ¯½ñ»Î
++¤È¤¯¤á¤¤ #T35 ƿ̾
++¤È¤¯¤á¤¤¤¯¤· #T35 ƿ̾¶ú
++¤È¤¯¤á¤¤¤±¤¤¤¸¤Ð¤ó #T35 ƿ̾·Ç¼¨ÈÄ
++¤È¤±¤Í¡¼¤è #JN ¡Ê¡¬¦Ç¡¬¡Ë¡¡¥È¥±¥Í¡¼¥è
++¤È¤±¤Í¡¼¤è #JN ¥È¥±¥Í¡¼¥è
++¤È¤³¤í¤Ç #CJ ¤È¤³¤í¤Ç
++¤È¤³¤í¤ó¤È¤Á¤ã¤ê¤Ô¤«¤¡ #JN ¥È¥³¥í¥ó¥È¥Á¥ã¥ê¥Ô¥«¥¡¡ª
++¤È¤· #T35 ÅÔ»Ô
++¤È¤À¤Ê #T35 ¸Íê
++¤È¤Ã¤­¤å¤¦¤¾¤Ì¤´¤¦ #JN Æõޤ¾¤Ì¹æ
++¤È¤Ã¤Æ¤â¤¿¤á¤Ë¤Ê¤ë¤ª¤Ï¤Ê¤· #JN ¤È¤Ã¤Æ¤â¤¿¤á¤Ë¤Ê¤ë¤ªÏÃ
++¤È¤Ã¤È¤È¤¤¤¯¤ª #JN ¤È¤Ã¤È¤ÈÀÂÉ×
++¤È¤Ä¤²¤­ #T35 ÆÍ·â
++¤È¤Ä¤²¤­¤²¤Ã¤¿¡¼¤º #JN ·ãÆÍ¥²¥Ã¥¿¡¼¥º
++¤È¤Ä¤²¤­¤Á¤å¤¦ #T35 ÆÍ·â¿ß
++¤È¤Ê¤«¤¤ #JN ŽÄŽÅŽ¶Ž²
++¤È¤Ó¤¹¤­¡¼¤ä¡¼¤â¤Ê¡¼ #JN Èô¤Ó¥¹¥­¡¼¥ä¡¼¥â¥Ê¡¼
++¤È¤Ô #T35 ¥È¥Ô
++¤È¤Þ¤È #T35 tomato
++¤È¤à #JN ¥È¥à
++¤È¤á #T35 ¥È¥á
++¤È¤â¤è¤â¤Ê¡¼ #JN ÃÎÀ¤¥â¥Ê¡¼
++¤È¤ä¤Þ #T35 ¥È¥äËâ
++¤È¤ä¤Þ #T35 ŽÄŽÔËâ
++¤È¤ä¤Þ¤ó¤³ #T35 ¥È¥ä¥Þ¥ó¥³
++¤È¤ä¤Þ¤ó¤³ #T35 ŽÄŽÔŽÏŽÝŽº
++¤È¤è¤Ï¤·¤·¤ß¤ó #T35 Ë­¶¶»Ô̱
++¤È¤é¤¦¤Þ¡¼ #JN (||Žß§¥Žß)ŽÄŽ×Ž³ŽÏŽ°
++¤È¤é¤¦¤Þ¡¼ #JN ¥È¥é¥¦¥Þ¡¼
++¤È¤é¤¦¤Þ¡¼ #JN ŽÄŽ×Ž³ŽÏŽ°
++¤È¤é¤¯¤ó¤¢¤ó¤É¤«¤×¤¯¤ó #JN ¤È¤é¤¯¤ó¡õ¤«¤×¤¯¤ó
++¤È¤é¤¯¤ó¤¢¤ó¤É¤«¤×¤¯¤ó #JN ¤È¤é¤¯¤ó¡õ¤«¤×¤¯¤ó 
++¤È¤é¤é¡¼ #JN ¥È¥é¥é¡¼
++¤È¤ê #CN Ä»
++¤È¤ê #CN ÆÓ
++¤È¤ê #KK ÆÓ
++¤È¤ê #T35 Ä»
++¤È¤ê #T35 ÆÓ
++¤È¤ê¤³¤á #CN ¼è¤ê¹þ¤á
++¤È¤ê¤³¤á #CN Ä»ÊÆ
++¤È¤ê¤³¤á #T35 ¼è¤ê¹þ¤á
++¤È¤ê¤³¤á #T35 Ä»ÊÆ
++¤È¤ê¤µ¤ó #JN ¥È¥ê¤µ¤ó
++¤È¤ê¤Ã¤× #T35 ¥È¥ê¥Ã¥×
++¤È¤ê¤È¤È¤ó¤Ç¤¤¤ë¤â¤é¤é¡¼ #JN Ä»¤ÈÈô¤ó¤Ç¤¤¤ë¥â¥é¥é¡¼
++¤È¤ê¤Ï¤à #T35 Ä»¤Ï¤à
++¤È¤ì¤«¤á #T35 ¥È¥ì¥«¥á
++¤È¤ó #T35 ­Å
++¤È¤ó¤­¤ó #CN ¥È¥ó¥­¥ó
++¤È¤ó¤­¤ó #T35 ¥È¥ó¥­¥ó
++¤È¤ó¤Á¤ã¤â¤ó #KK ¥È¥ó¥Á¥ã¥â¥ó
++¤È¤ó¤Á¤ã¤â¤ó #T35 ¥È¥ó¥Á¥ã¥â¥ó
++¤È¤ó¤É¤ë #CJ ¥È¥ó¥É¥ë
++¤È¤ó¤É¤ë #CJ ­Å­Ë
++¤È¤ó¤É¤ë #JN ­Å­Ë
++¤È¤ó¤Ú¤¤ #T35 ¥È¥ó¥Ú¥¤
++¤É¡¼¤â¤¯¤ó #T35 ¤É¡¼¤â·¯
++¤É¤¤¤¨ #JN ¥É¥¤¥¨
++¤É¤¤¤¨ #R5 ¥É¥¤¥¨
++¤É¤¤¤¨ #T35 ¥É¥¤¥¨
++¤É¤¤¤Ä¤â¤Ê¡¼ #JN ¥É¥¤¥Ä¥â¥Ê¡¼
++¤É¤¦¤·¤·¤ã¤´¤­¤Ö¤ê #JN Ʊ»Ö¼Ò¥´¥­¥Ö¥ê
++¤É¤¦¤¸¤ó #T35 Ʊ¿Í
++¤É¤¦¤¸¤ó¤ª¤ó¤Ê #T35 Ʊ¿Í½÷
++¤É¤¦¤Æ¤¤ #T35 ƸÄç
++¤É¤¦¤Ç¤â¤¤¤¤¤Ë¤À #JN ¤É¤¦¤Ç¤â¤¤¤¤¥Ë¥À
++¤É¤¦¤Ç¤â¤¤¤¤¤ä¡¼ #JN ¥É¥¦¥Ç¥â¥¤¥¤¥ä¡¼
++¤É¤¦¤Ç¤â¤¤¤¤¤ä¤½¤ó¤Ê¤³¤È #JN ¤É¤¦¤Ç¤â¤¤¤¤¤ä¡¢¤½¤ó¤Ê¤³¤È¡ª
++¤É¤¦¤Ç¤â¤¤¤¤¤è #JN ¤É¤¦¤Ç¤â¤¤¤¤¤è
++¤É¤¦¤â¤¹¤ß¤Þ¤»¤ó #JN ¥É¥¦¥â¥¹¥ß¥Þ¥»¥ó
++¤É¤¦¤â¤¹¤ß¤Þ¤»¤ó #JN ŽÄŽÞŽ³ŽÓŽ½ŽÐŽÏŽ¾ŽÝ
++¤É¤¦¤è #CJ ¤É¤¦¤è
++¤É¤¦¤è #SUC ¤É¤¦¤è
++¤É¤¦¤í¤¸¤ç¤¦¤Û¤¦¤Ò¤ç¤¦¤¸¤Ð¤ó #JN ƻϩ¾ðÊóɽ¼¨ÈÄ
++¤É¤©¡¼¡¼¤ó #JN ¥É¥©¡¼¡¼¥ó¡ª¡ª¡ª
++¤É¤©¡¼¡¼¤ó2 #JN ¥É¥©¡¼¡¼¥ó¡ª¡ª¡ª£²
++¤É¤­¤å¤½ #T35 DQS
++¤É¤­¤å¤½ #T35 ¥É¥­¥å¥½
++¤É¤­¤å¤½¤ª¤¦¤³¤¯¤Ë¤Ã¤Ý¤ó #JN ¥É¥­¥å¥½²¦¹ñÆüËÜ
++¤É¤­¤å¤½¤ª¤¦¤³¤¯¤Ë¤Ã¤Ý¤ó #JN ŽÄŽÞŽ·Ž­Ž¿²¦¹ñÆüËÜ
++¤É¤­¤å¤½¤Á¤ã¤ó #JN ŽÄŽÞŽ·Ž­Ž¿¤Á¤ã¤ó
++¤É¤­¤å¤â #KK ¥É¥­¥å¥â
++¤É¤­¤å¤â #T35 ¥É¥­¥å¥â
++¤É¤­¤å¤ó #T35 DJN
++¤É¤­¤å¤ó #T35 £Ä£Ñ£Î
++¤É¤­¤å¤ó #T35 ¥É¥­¥å¥ó
++¤É¤­¤å¤ó¤Ê¤«¤¤¤·¤ã #T35 ¥É¥­¥å¥ó¤Ê²ñ¼Ò
++¤É¤¯¤ª¤È¤³ #T35 ÆÇÃË
++¤É¤¯¤·¤ó¤Æ¤¤¤ª¤¦ #JN ÆÈ¿ÈÄ벦
++¤É¤¯¤¸¤¿ #T35 ¤É¤¯¤¸¤¿
++¤É¤¯¤½ #T35 ÆÇÁÇ
++¤É¤¯¤È¤¦ #CN ÆÈÅç
++¤É¤¯¤È¤¦ #T35 ÆÈÅç
++¤É¤¯¤È¤ë¤Þ¤é #JN ¥É¥¯¥È¥ëM
++¤É¤³¤Ô¡¼ #T35 ¥É¥³£Ð
++¤É¤³¤Ô¤¤ #T35 ¥É¥³P
++¤É¤¹¤¦ #T35 ÅÙ¿ô
++¤É¤»¤¤¤µ¤ó #JN ÅÚÀ±¤µ¤ó
++¤É¤Æ¤Á¤å¡¼ #T35 ¥É¥Æ¥Á¥å¡¼
++¤É¤Æ¤Á¤å¤¦ #T35 ¥É¥Æ¥Á¥å¡¼
++¤É¤Ö¤Í¤º¤ß #T35 ¹ÂÁÍ
++¤É¤à #T35 £Ä£Ï£Í
++¤É¤á¤ë¤É #JN ¥É¥á¥ë¥É
++¤É¤é #JN ¥É¥é
++¤É¤é¤¨¤â¤ó¤Õ¤¯¤â¤È¤Õ¤©¡¼¤à #JN ¥É¥é¤¨¤â¤óÊ¡ËÜ¥Õ¥©¡¼¥à
++¤É¤é¤´¤ó #T35 ¥É¥é¥´¥ó
++¤É¤é¤´¤ó¤ª¤¨¤¹¤È #T35 ¥É¥é¥´¥ó¥ª¥¨¥¹¥È
++¤É¤é¤´¤ó¤¹¤È¤Ã¤× #T35 ¥É¥é¥´¥ó¥¹¥È¥Ã¥×
++¤É¤é¤Ã¤­¤Ê¡¼ #JN ¥É¥é¥Ã¥­¥Ê¡¼
++¤É¤ê¤Á¤ó #T35 ¥É¥ê¥Á¥ó
++¤É¤ê¤ë¤Á¤ó¤Á¤ó #T35 ¥É¥ê¥ë¤Á¤ó¤Á¤ó
++¤É¤ë¤¨¤à¤¤¤¤ #T35 $ME
++¤Ê¤¢¤¹¤¦¤£¤Ã¤Á¤³¤à¤®¤Á¤ã¤ó #T35 ¥Ê¡¼¥¹¥¦¥£¥Ã¥Á¾®Çþ¤Á¤ã¤ó
++¤Ê¤¤¤¹¤Ê¤Ø¤Ã¤É¤Õ¤©¤ó #T35 ¥Ê¥¤¥¹¤Ê¥Ø¥Ã¥É¥Õ¥©¥ó¡ª
++¤Ê¤¨ #KS °à¤¨ 
++¤Ê¤¨ #T35 °à¤¨ 
++¤Ê¤¨¤Ê¤¤¤ï #JN ¥Ê¥¨¥Ê¥¤¥ï
++¤Ê¤ª¤ê¤ó #T35 ¤Ê¤ª¤ê¤ó
++¤Ê¤«¤¦¤é¤ï¤Î¤Û¤· #T35 Ã決ϤÎÀ±
++¤Ê¤«¤¸¡¼¤Ô¡¼ #T35 ¤Ê¤«GP
++¤Ê¤«¤¸¤¤¤Ô¤¤ #T35 ¤Ê¤«GP
++¤Ê¤«¤¿¤³ #JN ¤Ê¤«¤¿¤³
++¤Ê¤«¤¿¤³ #T35 ¤Ê¤«¤¿¤³
++¤Ê¤«¤¿¤Þ¤´ #T35 ¤Ê¤«Íñ
++¤Ê¤«¤À¤· #T30 ÃæÅÄ»á
++¤Ê¤«¤Ä¤®¤« #T35 Ãæ·Ñ¤®²Ý
++¤Ê¤«¤Î¤Ò¤È #T35 Ãæ¤Î¿Í
++¤Ê¤¬¤·¤½¤¦¤á¤ó #JN ή¤·¤½¤¦¤á¤ó
++¤Ê¤¬¤Ö¤ó¤Î¤«¤ó¤½¤¦¤â¤¸¤ì¤¹¤æ¤¦¤É¤¦¤¢¤¹¤­¡¼¤¢¡¼¤È #JN Ĺʸ¤Î´¶ÁÛʸ»ú¥ì¥¹Í¶Æ³£Á£Á
++¤Ê¤°¤Á¤ã¤ó¤Í¤ë #T35 ¤Ê¤°¤Á¤ã¤ó¤Í¤ë
++¤Ê¤²¤¹¤Æ¤ë¤â¤Ê¡¼ #JN Åꤲ¼Î¤Æ¤ë¥â¥Ê¡¼
++¤Ê¤´¤ä¤±¤ó #T35 ̾¸Å²°¸©
++¤Ê¤·¤À¤¤ #T35 ̵Âç
++¤Ê¤¾¤Î¤»¤¤¤á¤¤¤¿¤¤ #JN Ææ¤ÎÀ¸Ì¿ÂÎ
++¤Ê¤¾¤Î¤Ë¤Û¤ó¤¸¤ó #JN Ææ¤ÎÆüËÜ¿Í
++¤Ê¤Ã¤Á #JN ¡Ê¡ü¡­¡¼¡®¡ü¡Ë
++¤Ê¤Ã¤Á #JN ¤Ê¤Ã¤Á
++¤Ê¤Ã¤Á #T35 ¤Ê¤Ã¤Á
++¤Ê¤Ã¤Á #T35 °ÂÇÜ
++¤Ê¤Ã¤Á¤¢¤ê¤¬¤È¤¦ #CJ ¤Ê¤Ã¤Á¤¢¤ê¤¬¤È¤¦(¡ü¡­¡¼¡®¡ü)
++¤Ê¤Ã¤Á¤â¤Ê¡¼ #JN ¤Ê¤Ã¤Á¥â¥Ê¡¼
++¤Ê¤Ã¤Á¤å #T35 ¤Ê¤Ã¤Á¤å
++¤Ê¤Ã¤Á¤å¤¦ #T35 Ǽ¿ß
++¤Ê¤Ä¤Á¤å¤¦ #T35 ²Æ¿ß
++¤Ê¤Ä¤Á¤å¤¦¤Ü¤¦ #T35 ²Æ¿ß˼
++¤Ê¤Ä¤Ü¤¦ #T35 ²Æ˼
++¤Ê¤Ä¤á #JN ¥Ê¥Ä¥á
++¤Ê¤Ê¤µ¤ó #JN £·¤µ¤ó
++¤Ê¤Ê¤·¤µ¤ó #T35 ̵̾¤·¤µ¤ó
++¤Ê¤Ê¤·¤µ¤ó¤×¤é¤º¤Þ #JN ̵̾¤·¤µ¤ó¥×¥é¥º¥Þ
++¤Ê¤Ê¤á¤¦¤¨ #T35 ¼Ð¤á¾å
++¤Ê¤Ê¤á¤«¤Ã¤³¤Ï¤ó¤À¤¯¤Æ¤ó¤¿¡¼¤ó¤¨¡¼¤Ï¤ó¤À¤¯¤Æ¤ó¤«¤Ã¤³¤È¤¸¤Ê¤Ê¤á¤×¤ë¤Ã¤Ñ¤Û¤· #JN ¡À(¡¬¢Ï¡¬)¡¿¥×¥ë¥Ã¥Ñ¡ù
++¤Ê¤Ê¤á¤«¤Ã¤³¤Ï¤ó¤À¤¯¤Æ¤ó¤¿¡¼¤ó¤¨¡¼¤Ï¤ó¤À¤¯¤Æ¤ó¤«¤Ã¤³¤È¤¸¤Ê¤Ê¤á¤×¤ë¤Ã¤Ñ¤Û¤· #JN ¡À(Žß¢ÏŽß)¡¿ŽÌŽßŽÙŽ¯ŽÊŽß¡ù
++¤Ê¤Ë¤¤¤Ã¤Æ¤ë¤Õ¤á¤¤ #CJ ²¿¸À¤Ã¤Æ¤ëÉÔÌÀ
++¤Ê¤Ë¤« #KK ²¿¤«
++¤Ê¤Ë¤« #T35 ²¿¤«
++¤Ê¤Ë¤«¤¢¤ë #CJ ¤Ê¤Ë¤«¤¢¤ë¡©
++¤Ê¤Ë¤«¤Ë¤ª¤Ó¤¨¤ë¤®¤³ #JN ((¡¨Žß§¥Žß)Ž¶ŽÞŽ¸Ž¶ŽÞŽ¸ŽÌŽÞŽÙŽÌŽÞŽÙ
++¤Ê¤Ë¤«¤Ë¤ª¤Ó¤¨¤ë¤®¤³ #JN ²¿¤«¤Ë¶±¤¨¤ë¥®¥³
++¤Ê¤Ë¤µ¤Þ #JN ²¿ÍÍ 
++¤Ê¤Ë¤µ¤Þ #T35 ²¿ÍÍ
++¤Ê¤Ë¤ß¤Æ¤ó¤À¤è¤µ¤ë #JN ²¿¸«¤Æ¤ó¤À¤è±î
++¤Ê¤Ë¤ç¤ê¡¼¤Ê #JN ŽÅŽÆŽ®ŽØŽ°ŽÅ
++¤Ê¤Î¤é #SUC ¤Ê¤Î¤é
++¤Ê¤Î¤é¤¢ #CJ ¤Ê¤Î¤é¡Á
++¤Ê¤Þ¤¢¤¤¤Ô¤¤ #T35 À¸IP
++¤Ê¤Þ¤¢¤¿¤¿¤«¤¯¤ß¤Þ¤â¤ë #CJ ¤Ê¤ÞÃȤ«¤¯¸«¼é¤ë
++¤Ê¤Þ¤³ #T35 ¤Ê¤Þ¤³
++¤Ê¤Þ¤³¤×¤ì¤¤ #T35 ¤Ê¤Þ¤³¥×¥ì¥¤
++¤Ê¤Þ¤â¤Î #T35 ¥Ê¥Þ¥â¥Î
++¤Ê¤ß¤«¤ì #CJ ¥Ê¥ß¥«¥ì
++¤Ê¤ß¤À¤Ç¤Þ¤¨¤¬¤ß¤¨¤Þ¤»¤ó #CJ ÎÞ¤ÇÁ°¤¬¸«¤¨¤Þ¤»¤ó¡ª
++¤Ê¤à #JN ¥Ê¥â
++¤Ê¤á¤¯¤¸ #JN ¥Ê¥á¥¯¥¸
++¤Ê¤ä¤ß¤¹¤®¤ë¤È¤Ï¤²¤ë #T35 Ǻ¤ß¤¹¤®¤ë¤ÈÆŤ²¤ë
++¤Ê¤æ¤­¤°¤ë¤Þ #JN ̾Àã¼Ö
++¤Ê¤ê¤­¤ê¤¹¤ì #T35 ¤Ê¤ê¤­¤ê¥¹¥ì
++¤Ê¤ê¤¹¤Þ #S5r ¤Ê¤ê¤¹¤Þ
++¤Ê¤ê¤¿¤È¤Ã¤×¤í¤ª¤É #JN ¤Ê¤ê¤¿¤È¤Ã¤×¤í¤ª¤É
++¤Ê¤ê¤¿¤È¤Ã¤×¤í¤ª¤É #JN ¤Ê¤ê¤¿¤È¤Ã¤×¤í¤ª¤É 
++¤Ê¤ê¤Ð¤ó #T35 ¥Ê¥ê¥Ð¥ó
++¤Ê¤ì¤¢ #W5 Æë¤ì¹ç
++¤Ê¤ì¤¢¤¤ #T35 Æë¤ì¹ç¤¤
++¤Ê¤í #CJ ¤Ê¤í
++¤Ê¤ó¤¬¤ó¤Æ¤¤¤­¤¢¤Ä #JN Æî´ßÄ㵤°µ
++¤Ê¤ó¤±¤¤¤Ð #T35 ¤Ê¤ó¶¥ÇÏ
++¤Ê¤ó¤À¤«¤Ê¡¼¤¢¤ó¤É¤µ¤¤¤³¡¼¤À #JN ¥Ê¥ó¥À¥«¥Ê¡¼¡õ¥µ¥¤¥³¡¼¥À
++¤Ê¤ó¤À¤«¤ó¤À #CJ ¤Ê¤ó¤À¤«¤ó¤À 
++¤Ê¤ó¤Ä¤Ã¤¿¤ê¤·¤Æ #CJ ¤Ê¤ó¤Ä¤Ã¤¿¤ê¤·¤Æ
++¤Ê¤ó¤È¤¤¤¦¤³¤È¤Ç¤·¤ç¤¦ #CJ ¤Ê¤ó¤È¤¤¤¦¤³¤È¤Ç¤·¤ç¤¦
++¤Ê¤ó¤Ð¤¢¤¹¤¯¤¦¤ë #T35 ¥Ê¥ó¥Ð¡¼¥¹¥¯¡¼¥ë
++¤Ê¤ó¤ß¤ó #T35 Æṉ̃
++¤Ê¤ó¤ß¤ó¤¤¤¿ #T35 Æṉ̃ÈÄ
++¤Ê¤ó¤â¤¸¤á¤ò¤¿¤Æ¤è¤ß¤¹¤ë¤Î #CJ ²¿Ê¸»úÌܤò½ÄÆɤߤ¹¤ë¤Î¡©
++¤Ë #T30 ½ªÅß
++¤Ë #T35 2
++¤Ë #T35 ½ªÅß
++¤Ë¡¼ #JN ¥Ë¡¼
++¤Ë¡¼¤¤¤Á¤è¤ó¤¸¤±¤ó #T35 £²¡¦£±£´»ö·ï
++¤Ë¤¤¤Á¤å¤¦ #T35 ny¿ß
++¤Ë¤¤¤Ã¤Ô¤ç¤¦ #CJ ¤Ë°ìɼ
++¤Ë¤­¤³¤¦ #T35 Æó´ü¹»
++¤Ë¤­¤Ó¤¬¤Ç¤­¤¿¤â¤Ê¡¼ #JN ¥Ë¥­¥Ó¤¬½ÐÍ褿¥â¥Ê¡¼
++¤Ë¤¯¤³¤Ã¤×¤ó¤¯¤¨ #CJ ¥Ë¥¯¥³¥Ã¥×¥ó¥¯¥¨!
++¤Ë¤¯¤³¤Ã¤×¤ó¤¯¤¨ #CJ ŽÆŽ¸ŽºŽ¯ŽÌŽßŽÝŽ¸Ž´!
++¤Ë¤¯¤³¤Ã¤×¤ó¤¯¤¨ #JN ¥Ë¥¯¥³¥Ã¥×¥ó¥¯¥¨!
++¤Ë¤¯¤³¤Ã¤×¤ó¤¯¤¨ #JN ŽÆŽ¸ŽºŽ¯ŽÌŽßŽÝŽ¸Ž´!
++¤Ë¤¯¤³¤×¡¼¤ó #CJ (¡¦¢Ï¡¦)¥Ë¥¯¥³¥×¡¼¥ó 
++¤Ë¤¯¤³¤×¡¼¤ó #CJ (Ž¥¢ÏŽ¥)ŽÆŽ¸ŽºŽÌŽßŽ°ŽÝ 
++¤Ë¤¯¤³¤×¡¼¤ó #CJ ¥Ë¥¯¥³¥×¡¼¥ó
++¤Ë¤¯¤³¤×¡¼¤ó #CJ ŽÆŽ¸ŽºŽÌŽßŽ°ŽÝ
++¤Ë¤¯¤³¤×¡¼¤ó #JN (Ž¥¢ÏŽ¥)ŽÆŽ¸ŽºŽÌŽßŽ°ŽÝ
++¤Ë¤¯¤³¤×¡¼¤ó #JN ¥Ë¥¯¥³¥×¡¼¥ó
++¤Ë¤¯¤³¤×¡¼¤ó #JN ŽÆŽ¸ŽºŽÌŽßŽ°ŽÝ
++¤Ë¤¯¤Ï¤ó¤Ë¤ã #KK ÆùÈ̼ã
++¤Ë¤¯¤Ï¤ó¤Ë¤ã #T35 ÆùÈ̼ã
++¤Ë¤¯¤Ù¤ó¤­ #T35 ÆùÊØ´ï
++¤Ë¤²¤Ã¤È #JN 2¥²¥Ã¥È
++¤Ë¤²¤Æ¤§¤Ë¤²¤Æ¤§¤Ë¤²¤Æ¤§¤Ï¤ä¤¯¤Ë¤²¤Æ¤§¤Ã #JN ƨ¤²¤Æ¤§Æ¨¤²¤Æ¤§Æ¨¤²¤Æ¤§Á᤯ƨ¤²¤Æ¤§¥Ã¡ª
++¤Ë¤³¤ì¤Ã¤È #JN ¥Ë¥³¥ì¥Ã¥È
++¤Ë¤· #JN Æó»à
++¤Ë¤· #JNS Æó»à
++¤Ë¤· #T35 Æó»à
++¤Ë¤·¤¿¤ó #JN Æó»à¥¿¥ó
++¤Ë¤·¤¿¤ó #T35 Æó»à¥¿¥ó
++¤Ë¤·¤Æ¤Ä¤Ð¤¹¤¸¤ã¤Ã¤¯¤¸¤±¤ó #KK À¾Å´¥Ð¥¹¥¸¥ã¥Ã¥¯»ö·ï
++¤Ë¤·¤Æ¤Ä¤Ð¤¹¤¸¤ã¤Ã¤¯¤¸¤±¤ó #T35 À¾Å´¥Ð¥¹¥¸¥ã¥Ã¥¯»ö·ï
++¤Ë¤·¤å¤¦¤Í¤ó¤¤¤Ù¤ó¤È #T35 £²¼þǯ¥¤¥Ù¥ó¥È
++¤Ë¤¸¤²¤ó #T35 Æ󼡸µ
++¤Ë¤¸¤²¤ó¤ª¤¿ #T35 Æ󼡸µ¥ª¥¿
++¤Ë¤¸¤²¤ó¤ò¤¿ #T35 Æ󼡸µ¥ò¥¿
++¤Ë¤¸¤å¤¦ #T35 20
++¤Ë¤¸¤å¤¦¤Ê¤Ê¤·¤­¤¯¤½¤¹¤ì¤¯¤Á¤¯¤Æ¤¤ #JN 27¼°Êµ¥¹¥ì¶îÃàÄú
++¤Ë¤¸¤å¤Ã¤È¤¦¤·¤ó #T35 20Æ®¿À
++¤Ë¤¸¤ç¤¦¤¬¤ï¤é¤Î¤é¤¯¤·¤ç #T35 Æó¾ò²Ï¸¶¤ÎÍî½ñ
++¤Ë¤»¤¢¤æ #T35 µ¶¤¢¤æ
++¤Ë¤»¤Ï¤ë¤Ê¤¢¤ó¤É¤¦¤Ë¤å¤¦¤ê¡¼¤Ê #JN µ¶½ÕºÚ¡õ¤¦¤Ë¤å¤¦¥ê¡¼¥Ê
++¤Ë¤»¤á¤Ã¤» #T35 µ¶¥á¥Ã¥»
++¤Ë¤»¤â¤Ê¡¼ #JN µ¶¥â¥Ê¡¼
++¤Ë¤»¤ó¤Î¤ï¤¶ #CJ 2000¤Îµ»
++¤Ë¤À¡¼ #JN ¥Ë¥À¡¼
++¤Ë¤À¡¼ #JN ŽÆŽÀŽÞŽ°
++¤Ë¤À¡¼¤¿¤¤¤¤ #JN ¥Ë¥À¡¼Âç°Ó
++¤Ë¤À¡¼¤Á¤ç #JN ¥Ë¥À¡¼¥Á¥ç
++¤Ë¤À¤À¡¼ #JN ¥Ë¥À¥À¡¼
++¤Ë¤À¤À¡¼ #JN ¥Ë¥À¥À¡¼ 
++¤Ë¤Á¤ã¤ó #CJ 2ch
++¤Ë¤Á¤ã¤ó #CJ £²¤Á¤ã¤ó
++¤Ë¤Á¤ã¤ó #T35 2ch
++¤Ë¤Á¤ã¤ó #T35 £²¤Á¤ã¤ó
++¤Ë¤Á¤ã¤ó¤µ¤Ð¤«¤Ã¤Æ¤Ê¤«¤ó¤·¤¸¤ç #T35 2ch»ª¾¡¼ê¤Ê´Æ»ë½ê
++¤Ë¤Á¤ã¤ó¤Æ¤­¤Ë¤Ï #CJ £²£ã£èŪ¤Ë¤Ï
++¤Ë¤Á¤ã¤ó¤Æ¤­¤Ò¤ç¤¦¤« #T35 £²£ã£èŪɾ²Á
++¤Ë¤Á¤ã¤ó¤Í¤ë¤¯¤½¤¹¤ì¤Ã¤É¤Ä¤¤¤Û¤¦¤»¤ó¤»¤ó #JN £²¤Á¤ã¤ó¤Í¤ëʵ¥¹¥ì¥Ã¥ÉÄÉÊüÀïÀþ
++¤Ë¤Á¤ã¤ó¤Í¤ë¤°¤ó¤Ý¤¦¤¬¤¤¤® #JN £²£ã£è·³Ë¡²ñµÄ
++¤Ë¤Á¤ã¤ó¤Í¤ë¤µ¤Ý¡¼¤È¤»¤ó¤¿¡¼ #JN £²¤Á¤ã¤ó¤Í¤ë¥µ¥Ý¡¼¥È¥»¥ó¥¿¡¼
++¤Ë¤Á¤ã¤ó¤Í¤ë¤¼¤ó¤¤¤¿¤Ë¤ó¤­¤È¤¦¤Ê¤á¤ó¤È #T35 2¤Á¤ã¤ó¤Í¤ëÁ´ÈĿ͵¤¥È¡¼¥Ê¥á¥ó¥È
++¤Ë¤Á¤ã¤ó¤Í¤ë¤¿¤¢¤Ü #T35 2¤Á¤ã¤ó¤Í¤ë¥¿¡¼¥Ü
++¤Ë¤Á¤ã¤ó¤Í¤ë¤Ä¤¦ #T35 2ch2
++¤Ë¤Á¤ã¤ó¤Í¤ë¤Ä¤¦ #T35 2¤Á¤ã¤ó¤Í¤ë2
++¤Ë¤Á¤ã¤ó¤Í¤ë¤Ê¤Ê¤Á¤å¤¦¤¤¤¿ #CJ £²¤Á¤ã¤ó¤Í¤ë¼·¿ßÈÄ
++¤Ë¤Á¤ã¤ó¤Í¤ë¤Ê¤Ê¤Á¤å¤¦¤¤¤¿ #T35 £²¤Á¤ã¤ó¤Í¤ë¼·¿ßÈÄ
++¤Ë¤Á¤ã¤ó¤Í¤ë¤Ë #T35 2ch2
++¤Ë¤Á¤ã¤ó¤Í¤ë¤Ë #T35 2¤Á¤ã¤ó¤Í¤ë2
++¤Ë¤Á¤ã¤ó¤Í¤ë¤Î¤Ï¤ó¤Ö¤ó¤Ï¤Í¤¿¤Ç¤Ç¤­¤Æ¤¤¤Þ¤¹ #CJ 2¤Á¤ã¤ó¤Í¤ë¤ÎȾʬ¤Ï¥Í¥¿¤Ç¤Ç¤­¤Æ¤¤¤Þ¤¹
++¤Ë¤Á¤ã¤ó¤Í¤ë¤Ó¤å¤¦¤¢ #T35 2¤Á¤ã¤ó¤Í¤ë¥Ó¥å¡¼¥¢
++¤Ë¤Á¤ã¤ó¤Í¤ë¤Ö¤é¤¦¤¶ #T35 2¤Á¤ã¤ó¤Í¤ë¥Ö¥é¥¦¥¶
++¤Ë¤Á¤ã¤ó¤Ö¤í¤° #T35 2ch-Blog
++¤Ë¤Á¤ã¤ó¤×¤í¤Ð¤¤¤À¤¢ #T35 2ch¥×¥í¥Ð¥¤¥À¡¼
++¤Ë¤Á¤ã¤ó¤ì¤ó¤á¤¤ #JN 2¤Á¤ã¤óÏ¢ÌÁ
++¤Ë¤Ã¤­ #JN Æüµ­
++¤Ë¤Ã¤­ #T35 Æüµ­
++¤Ë¤Ã¤­¡¼ #JN ¥Ë¥Ã¥­¡¼
++¤Ë¤Ã¤¯¤·¤ó¤»¤¤ #T30 ¥Ë¥Ã¥¯¿½ÀÁ
++¤Ë¤Ã¤»¤¤ #T35 ¥Ë¥Ã¥»¥¤
++¤Ë¤Ã¤»¤¤ #T35 ÆüÀÂ
++¤Ë¤Ã¤Ý¤ó¤Ï¤Ï¤ó¤»¤¤¤·¤ë #CJ ÆüËܤÏÈ¿¾Ê¤·¤ë¡ª
++¤Ë¤È¤¦¤¸¤ç¤æ¤¦ #T35 ÆóÅù½÷Í¥
++¤Ë¤È¤¦¤Ø¤¤ #JN ÆóÅùʼ
++¤Ë¤È¤¦¤Ø¤¤ #T35 ÆóÅùʼ
++¤Ë¤Ë¤Á¤ã¤ó¤¬¤¢¤Ã¤¿¤é¤·¤ê¡¼¤º #SUC ¤Ë£²¤Á¤ã¤ó¤¬¤¢¤Ã¤¿¤é¥·¥ê¡¼¥º
++¤Ë¤Ë¤Á¤ã¤ó¤¬¤¢¤Ã¤¿¤é¤·¤ê¡¼¤º #T35 ¤Ë£²¤Á¤ã¤ó¤¬¤¢¤Ã¤¿¤é¥·¥ê¡¼¥º
++¤Ë¤Ë¤Á¤ã¤ó¤¬¤¢¤Ã¤¿¤é¤·¤ê¤¤¤º #T35 ¤Ë£²¤Á¤ã¤ó¤¬¤¢¤Ã¤¿¤é¥·¥ê¡¼¥º
++¤Ë¤Ï¤ï¤é¤Ã¤¿ #CJ ¤Ë¤Ï¾Ð¤Ã¤¿¡ª
++¤Ë¤Û¤ó¤µ¤ó¤­¤ç¤¦¤À¤¤¤¬¤¯ #T35 ÆüËÜ£³µþÂç³Ø
++¤Ë¤Û¤ó¤»¤¤¤á¤¤ #KK ÆüËÜÀ¸Ì¿
++¤Ë¤Û¤ó¤Á¤ã¤ó #KK ¥Ë¥Û¥ó¤Á¤ã¤ó
++¤Ë¤Û¤ó¤Á¤ã¤ó #T35 ¥Ë¥Û¥ó¤Á¤ã¤ó
++¤Ë¤ã¤¦ #JN ¤Ë¤ã¤¦¡¡
++¤Ë¤ä¤Ë¤ä #CJ ¥Ë¥ä¥Ë¥ä
++¤Ë¤ä¤ê #CJ ¡Ê¡±¡¼¡±¡Ë¥Ë¥ä¥ê
++¤Ë¤ä¤ê #CJ ¥Ë¥ä¥ê
++¤Ë¤ä¤ê¤Ã #CJ ¡Ê¡±¡¼¡±¡Ë¥Ë¥ä¥ê¥Ã 
++¤Ë¤ä¤ê¤Ã #CJ ¡Ê¡±¡¼¡±¡ËŽÆŽÔŽØŽ¯ 
++¤Ë¤ä¤ê¤Ã #JN ¡Ê¡±¡¼¡±¡ËŽÆŽÔŽØŽ¯
++¤Ë¤ä¤ê¤Ã #JN ¥Ë¥ä¥ê¥Ã
++¤Ë¤ä¤ê¤Ã #JN ŽÆŽÔŽØŽ¯
++¤Ë¤å¡¼¤¹¤¹¤Æ¡¼¤·¤ç¤ó #KK ¥Ë¥å¡¼¥¹¥¹¥Æ¡¼¥·¥ç¥ó
++¤Ë¤å¤¦¤¹¤½¤¯¤Û¤¦¤×¤é¤¹ #T35 ¥Ë¥å¡¼¥¹Â®Êó+
++¤Ë¤å¤¦¤½¤¯¤×¤é¤¹¤­¤·¤ã #T35 ¥Ë¥å¡¼Â®+µ­¼Ô
++¤Ë¤ç #RT ¤Ë¤ç
++¤Ë¤ç¤¤¤¬¤¿ #T35 ¥Ë¥ç¥¤³ã
++¤Ë¤ç¤¤¤¬¤¿ #T35 ŽÆŽ®Ž²³ã
++¤Ë¤ç¤¬¡¼¤ó #CJ (Žß§ÕŽß)ŽÆŽ®Ž¶ŽÞŽ°ŽÝ
++¤Ë¤ç¤¬¡¼¤ó #CJ ¥Ë¥ç¥¬¡¼¥ó
++¤Ë¤ç¤¬¡¼¤ó #CJ ŽÆŽ®Ž¶ŽÞŽ°ŽÝ
++¤Ë¤ç¤Á¤ó¤À¤ó #T35 ½÷ÄÁÃÄ
++¤Ë¤é¤¤¤à #JN ¥Ë¥é¥¤¥à
++¤Ë¤é¤Á¤ã¤¨¤ë¤»¤¤¤Ð¡¼ #JN ¥Ë¥é¥Á¥ã¥¨¥ë¥»¥¤¥Ð¡¼
++¤Ë¤é¤Á¤ã¤Å¤Þ #JN ¥Ë¥éÃãºÊ
++¤Ë¤é¤Á¤ã¤Í¤³ #JN ¥Ë¥éÃãÇ­
++¤Ë¤é¤Á¤ã¤à¤¹¤á #JN ¥Ë¥éÃã̼
++¤Ë¤é¤à¤· #JN ¥Ë¥éÃî
++¤Ë¤ë¤Ï¡¼¤Ë¤ã¤ó #JN ¤Ë¤ë¤Ï¡¼¤Ë¤ã¤ó
++¤Ë¤ï¤« #T35 ¥Ë¥ï¥«
++¤Ë¤ï¤«¤é¤·¤ê¡¼¤º #CN Äí¤«¤é¥·¥ê¡¼¥º
++¤Ë¤ï¤«¤é¤·¤ê¡¼¤º #T35 Äí¤«¤é¥·¥ê¡¼¥º
++¤Ë¤ï¤«¤é¤·¤ê¤¤¤º #T35 Äí¤«¤é¥·¥ê¡¼¥º
++¤Ë¤ó¤¤¤¿¤ó #JN Ǥ°Õ¤¿¤ó
++¤Ë¤ó¤·¤ó #KK Ç¥¿±
++¤Ë¤ó¤·¤ó #T35 Ç¥¿±
++¤Ë¤ó¤¸¤ã #JN ¥Ë¥ó¥¸¥ã
++¤Ë¤ó¤Æ¤ó¤É¤¦¤«¤¤¤°¤ó¤³¤¦¤¯¤¦¤¿¤¤ #T35 ǤŷƲ³¤·³¹Ò¶õÂâ
++¤Ë¤ó¤é¤¤¤ó #T35 Ǧ¥é¥¤¥ó
++¤Ì¡¼¤ë #T35 ¥Ì¡¼¥ë
++¤Ì¤¦¤¬¤¿ #CN ¤Ì¤¦¤¬¤¿
++¤Ì¤¦¤¬¤¿ #T35 ¤Ì¤¦¤¬¤¿
++¤Ì¤¦¤ë #T35 ¥Ì¡¼¥ë
++¤Ì¤­¤Ê¤ß #F04 ¤Ì¤­¤Ê¤ß
++¤Ì¤­¤Ê¤ß #T35 ¤Ì¤­¤Ê¤ß
++¤Ì¤Ã¤Ø¤Ã¤Û¡¼ #CJ ¥Ì¥Ã¥Ø¥Ã¥Û¡¼
++¤Ì¤Ã¤Ø¤Ã¤Û¡¼ #JN (Ž¥¢ÏŽ¥¢ÏŽ¥)ŽÇŽ¯ŽÍŽ¯ŽÎŽ°
++¤Ì¤Ã¤Ø¤Ã¤Û¡¼ #JN ¤Ì¤Ã¤Ø¤Ã¤Û¡¼
++¤Ì¤Ã¤Ø¤Ã¤Û¡¼ #JN ¥Ì¥Ã¥Ø¥Ã¥Û¡¼
++¤Ì¤Ã¤Ø¤Ã¤Û¡¼ #JN ŽÇŽ¯ŽÍŽ¯ŽÎŽ°
++¤Ì¤Ã¤Ø¤Ã¤Û¡¼ #T35 (¡¦¢Ï¡¦¢Ï¡¦)¥Ì¥Ã¥Ø¥Ã¥Û¡¼
++¤Ì¤Ã¤Ø¤Ã¤Û¡¼ #T35 (Ž¥¢ÏŽ¥¢ÏŽ¥)ŽÇŽ¯ŽÍŽ¯ŽÎŽ°
++¤Ì¤Ã¤Ý¤ó #T35 ¥Ì¥Ã¥Ý¥ó
++¤Ì¤Þ¤Ã¤­ #KK ¤Ì¤Þ¤Ã¤­
++¤Ì¤Þ¤Ã¤­ #T35 ¤Ì¤Þ¤Ã¤­
++¤Ì¤ê¤«¤Ù¤â¤Ê¡¼ #JN ¤Ì¤êÊÉ¥â¥Ê¡¼
++¤Ì¤ë #KY ¥Ì¥ë
++¤Ì¤ë¤Ý #T35 ¤Ì¤ë¤Ý
++¤Í #CJ ne¡ª
++¤Í¡¼¤Î #JN ¥Í¡¼¥Î
++¤Í¡¼¤è¤ª¤Ö¤Í¡¼¤è #JN ¥Í¡¼¥è¡¦¥ª¥Ö¡¦¥Í¡¼¥è
++¤Í¡¼¤è¤É¤¦¤á¤¤ #JN ¥Í¡¼¥èƱÌÁ
++¤Í¤¨ #JN ¤Í¤¨
++¤Í¤¨¤Í¤¨ #CJ ¤Í¤§¤Í¤§
++¤Í¤¨¤Ü¤¯¤¹¤´¤¤¤Ç¤·¤ç #JN ¤Í¤¨¤Ü¤¯¤¹¤´¤¤¤Ç¤·¤ç
++¤Í¤ª¤¦¤¦¤í¤ó¤Á¤ã #T35 ¥Í¥ª±¨Î¶Ãã
++¤Í¤ª¤¿¤¤¤Æ¤¤ #JN ¥Í¥ªÂçÄë
++¤Í¤ª¤à¤®¤Á¤ã #JN ¥Í¥ª¤à¤®Ãã
++¤Í¤ª¤à¤®¤Á¤ã #JN ¥Í¥ªÇþÃã
++¤Í¤«¤Þ #T30 ¥Í¥«¥Þ
++¤Í¤«¤Þ #T35 ¥Í¥«¥Þ
++¤Í¤® #CN ¤Í¤®
++¤Í¤® #CN ¥Í¥®
++¤Í¤® #T35 ¤Í¤®
++¤Í¤® #T35 ¥Í¥®
++¤Í¤¯¤í¤Þ¤é¤é¡¼ #JN ¥Í¥¯¥í¥Þ¥é¥é¡¼
++¤Í¤³¤À¤¤¤¹¤­ #CJ ¤Í¤³Âç¹¥¤­
++¤Í¤³¤ä¤·¤­ #CN Ç­²°Éß
++¤Í¤³¤ä¤·¤­ #T35 Ç­²°Éß
++¤Í¤¹ #JN ¥Í¥¹
++¤Í¤¹¤±¤·¤ó¤¸¤ã #T35 ¥Í¥¹¥±¿®¼Ô
++¤Í¤¹¤â¤Ê¡¼ #JN ¥Í¥¹¥â¥Ê¡¼
++¤Í¤º¤ß¤ª¤È¤³ #JN ¥Í¥º¥ßÃË
++¤Í¤º¤ß¤Ï¤é¤æ¤¦¤¶¤ó #JN Á͸¶Íº»°
++¤Í¤¿ #T35 ¥Í¥¿
++¤Í¤¿¤·¤ç¤¯¤Ë¤ó¤¹¤ì #T35 ¥Í¥¿¿¦¿Í¥¹¥ì
++¤Í¤¿¤¹¤ì #T35 ¥Í¥¿¥¹¥ì
++¤Í¤¿¤À¤í #CJ ¥Í¥¿¤À¤í¡©
++¤Í¤¿¤Ð¤é¤·¤Á¤å¤¦ #T35 ¥Í¥¿¤Ð¤é¤·¿ß
++¤Í¤Á¤±¤Ã¤È¤¸¤¤¤µ¤ó #JN ¥Í¥Á¥±¥Ã¥È¤¸¤¤¤µ¤ó¡¡
++¤Í¤Á¤º¤ó #T35 ¥Í¥Á¥º¥ó
++¤Í¤Á¤º¤ó #T35 ÙÔ¥Á¥º¥ó
++¤Í¤Á¤å¤¦ #T35 ¥Í¿ß
++¤Í¤Á¤ó #T35 ¥ÍÄÁ
++¤Í¤Ã¤È¤Á¤ó #T35 NetÄÁ
++¤Í¤Ã¤È¤×¤ì¤¤¤ä¤¢ #T35 ¥Í¥Ã¥È¥×¥ì¥¤¥ä¡¼
++¤Í¤Ã¤È¤é¤ó¤Ê¤¢ #KK ¥Í¥Ã¥È¥é¥ó¥Ê¡¼
++¤Í¤Ê¤Ù #T35 ¥Í¥Ê¥Ù
++¤Í¤Ë¤Á¤ê¡¼¤ó #JN ¡Ê¡¦¢Ï¡¦¡ËŽÈŽÆŽÁŽØŽ°ŽÝ
++¤Í¤Ë¤Á¤ê¡¼¤ó #JN ¥Í¥Ë¥Á¥ê¡¼¥ó
++¤Í¤Ë¤Á¤ê¡¼¤ó #T35 ¥Í¥Ë¥Á¥ê¡¼¥ó
++¤Í¤á¤ó¤Ê #CJ ¤Í¤á¤ó¤Ê
++¤Í¤é¤¢ #T35 ¥Í¥é¡¼
++¤Í¤é¤ó¤Á¤å¤¦ #T35 ¥Í¥é¥ó¿ß
++¤Í¤ì #CJ ¿²¤ì
++¤Í¤ó¤Á¤ã¤¯ #T35 Ç´Ãå
++¤Í¤ó¤Á¤ã¤¯¤¯¤ó #T35 Ç´Ãå·¯
++¤Í¤ó¤Ö¤Ä¤·¤å¤¦¤È¤¦¤ß¤«¤¤ #KK Ç°Ê©½¡Åϳ¤²ñ
++¤Í¤ó¤Ö¤Ä¤·¤å¤¦¤È¤¦¤ß¤«¤¤ #T35 Ç°Ê©½¡Åϳ¤²ñ
++¤Í¤ó¤ê¤ç¤¦ #T35 dzÎÁ
++¤Î¡¼¤Á¤ã¤ó #JN ¤Î¡¼¤Á¤ã¤ó
++¤Î¡¼¤Í #JN ¥Î¡¼¥Í
++¤Î¤¢¤ª¤¿ #T35 ¥Î¥¢¥ª¥¿
++¤Î¤¤¤Ã¤Ñ¤ó¤Æ¤­¤Ê¤È¤¯¤Á¤ç¤¦ #SUC ¤Î°ìÈÌŪ¤ÊÆÃħ
++¤Î¤¦¤« #JN ÇÀ²È
++¤Î¤¦¤­¤ç¤¦ #T35 ÇÀ¶¨
++¤Î¤¦¤Ê¤¤ #T35 ǾÆâ
++¤Î¤¦¤Ê¤¤¤¢¤Ü¡¼¤ó #T30 ǾÆ⤢¤Ü¡¼¤ó
++¤Î¤ª¤È¤ó¤»¤ó¤»¤¤ #T35 ¥Î¡¼¥È¥óÀèÀ¸
++¤Î¤ª¤È¤ó¤È¤é¤Ã¤× #T35 ¥Î¡¼¥È¥ó¥È¥é¥Ã¥×
++¤Î¤« #CJ ¤Î¤«
++¤Î¤« #SUC ¤Î¤«
++¤Î¤«¡¼ #JN ¥Î¥«¡¼
++¤Î¤°¤½ #T35 NGS
++¤Î¤¹¤¿¤ë¤Ï #T35 ¥Î¥¹¥¿¥ëÇÈ
++¤Î¤Î¤½¡¼¤ê #JN ¤Î¤ÎÁíÍý
++¤Î¤Î¤¿¤ó #JN ¤Î¤Î¤¿¤ó
++¤Î¤Î¤¿¤ó #T35 ¤Î¤Î¤¿¤ó
++¤Î¤Î¤¿¤ó #T35 ÄÔ
++¤Î¤Ó #KSr ¿­¤Ó
++¤Î¤Ó¤Î¤Ó¤·¤¿¤ä¤Ä #JN ¤Î¤Ó¤Î¤Ó¤·¤¿¥ä¥Ä
++¤Î¤Ó¤ç¤ß¤å¤¢¤¢¤à #JN ¥Î¥Ó¥ç¥ß¥å¥¢¥¡¥à
++¤Î¤Ó¤ç¤ß¤å¤¢¤¢¤à #JN ŽÉŽËŽÞŽ®ŽÐŽ­Ž±Ž§ŽÑ
++¤Î¤Ö¤ä¤Ü #T35 ¤Î¤Ö¤ä¤Ü
++¤Î¤è¤«¤ó #CJ ¤Îͽ´¶!!
++¤Î¤é¤Ê¤Ã¤Á #JN ÌîÎɤʤäÁ
++¤Î¤é¤Í¤³ #JN ÌîÎÉÇ­
++¤Î¤ê #T35 ³¤ÂÝ
++¤Î¤ê¤ò #T35 ¥Î¥ê¥ò
++¤Î¤í¤¤¤Þ¤¢¤¹ #CJ ¼ö¤Þ¡¼¤¹
++¤Î¤í¤¾¤¦ #T35 ¤Î¤í¤¾¤¦
++¤Î¤ó¤¹¤Æ #T35 ¥Î¥ó¥¹¥Æ
++¤Ï #KK ÍÕ
++¤Ï #T35 ÍÕ
++¤Ï¤¡ #CJ ¥Ï¥¡¡©
++¤Ï¤¡ #JN ¡Ê¡ë§¥¡ë)ŽÊŽ§¡©
++¤Ï¤¡ #JN ¥Ï¥¡?
++¤Ï¤¡¤Ï¤¡ #CJ (;¡­§¥¡®)¥Ï¥¡¥Ï¥¡ 
++¤Ï¤¡¤Ï¤¡ #CJ (;¡­§¥¡®)ŽÊŽ§ŽÊŽ§ 
++¤Ï¤¡¤Ï¤¡ #CJ ¥Ï¥¡¥Ï¥¡
++¤Ï¤¡¤Ï¤¡ #CJ ŽÊŽ§ŽÊŽ§
++¤Ï¤¡¤Ï¤¡ #JN (;¡­§¥¡®)ŽÊŽ§ŽÊŽ§
++¤Ï¤¡¤Ï¤¡ #JN ¥Ï¥¡¥Ï¥¡
++¤Ï¤¡¤Ï¤¡ #JN ŽÊŽ§ŽÊŽ§
++¤Ï¤¡¤Ï¤¡ #T30 ¥Ï¥¡¥Ï¥¡
++¤Ï¤¡¤Ï¤¡ #T30 ŽÊŽ§ŽÊŽ§
++¤Ï¤¡¤Ï¤¡¤Ê¤ó¤Æ¤Ç¤­¤Ê¤¤¤è #CJ ŽÊŽ§ŽÊŽ§¤Ê¤ó¤Æ½ÐÍè¤Ê¤¤¤è¡Ä
++¤Ï¤¡¤Ï¤¡¤Ê¤ó¤Æ¤Ç¤­¤Ê¤¤¤è #JN ¥Ï¥¡¥Ï¥¡¤Ê¤ó¤Æ½ÐÍè¤Ê¤¤¤è¡Ä
++¤Ï¤¡¤Ï¤¡¤Ê¤ó¤Æ¤Ç¤­¤Ê¤¤¤è #JN ŽÊŽ§ŽÊŽ§¤Ê¤ó¤Æ½ÐÍè¤Ê¤¤¤è¡Ä
++¤Ï¤¢ #CJ ¤Ï¤¡¡©
++¤Ï¤¢ #JN ¡Ê¡ë§¥¡ë)ŽÊŽ§¡©
++¤Ï¤¢¤Ï¤¢ #CJ ¥Ï¥¡¥Ï¥¡
++¤Ï¤¤¤­¤ç #CN ÇÑÔÒ
++¤Ï¤¤¤­¤ç #T35 ÇÑÔÒ
++¤Ï¤¤¤¹¤´¤¤¤¹¤´¤¤ #JN ¡³¡ÌŽß§¥Žß¡ÍШŽÊŽ²Ž½ŽºŽÞŽ²Ž½ŽºŽÞŽ²
++¤Ï¤¤¤¹¤´¤¤¤¹¤´¤¤ #JN ¥Ï¥¤¥¹¥´¥¤¥¹¥´¥¤
++¤Ï¤¤¤¹¤´¤¤¤¹¤´¤¤ #JN ŽÊŽ²Ž½ŽºŽÞŽ²Ž½ŽºŽÞŽ²
++¤Ï¤¤¤½¤Ê¤»¤ì¤Ö¤Ë¤Þ¤¿¤¤¤Ã¤Ý #CJ ¥Ï¥¤¥½¤Ê¥»¥ì¥Ö¤Ë¤Þ¤¿°ìÊâ¶á¤Å¤­¤Þ¤·¤¿¤Ç¤¹¡£
++¤Ï¤¤¤Ã¤¤¤½¤¦ #CJ Æþ¤Ã¤¤¤½¤¦
++¤Ï¤¤¤É #JN ¤Ï¤¤¤É
++¤Ï¤¤¤É #T35 ¤Ï¤¤¤É
++¤Ï¤¤¤à¤Ä #T35 ³¥¥à¥Ä
++¤Ï¤«¡¼ #T35 ¥Ï¥«¡¼
++¤Ï¤«¡¼ #T35 Ê衼
++¤Ï¤«¤¢ #T35 ¥Ï¥«¡¼
++¤Ï¤«¤¢ #T35 Ê衼
++¤Ï¤«¤® #KK ÍÕ¸°
++¤Ï¤«¤®¤¤¤¿ #CN ÍÕ¸°ÈÄ
++¤Ï¤«¤®¤¤¤¿ #T35 ÍÕ¸°ÈÄ
++¤Ï¤«¤®¤¤¤¿¤µ¤¤¤â¤¨¤ª¤È¤³¤È¡¼¤Ê¤á¤ó¤È #T35 ÍÕ¸°ÈĺÇdz¤¨Ã˥ȡ¼¥Ê¥á¥ó¥È
++¤Ï¤«¤®¤¤¤¿¤µ¤¤¤â¤¨¤È¡¼¤Ê¤á¤ó¤È #KK ÍÕ¸°ÈĺÇ˨¥È¡¼¥Ê¥á¥ó¥È
++¤Ï¤«¤®¤¤¤¿¤µ¤¤¤â¤¨¤È¡¼¤Ê¤á¤ó¤È #T35 ÍÕ¸°ÈĺÇ˨¥È¡¼¥Ê¥á¥ó¥È
++¤Ï¤«¤®¤»¤ó¤½¤¦ #T35 ÍÕ¸°ÀïÁè
++¤Ï¤«¤®¤Á¤å¤¦ #T35 ÍÕ¸°¿ß
++¤Ï¤«¤®¤Ã¤³ #T35 ÍÕ¸°¤Ã»Ò
++¤Ï¤­¤å¤¦¤ó #CJ HQN
++¤Ï¤®¤¤¤¿ #CN ÇëÈÄ
++¤Ï¤®¤¤¤¿ #T35 ÇëÈÄ
++¤Ï¤®¤ï¤é #CJ (Ç븶
++¤Ï¤®¤ï¤é #CJ Ç븶
++¤Ï¤¯ #T30 ¥Ï¥¯
++¤Ï¤¯¤½¤ê¡¼¤Ê¤Ø #JN ¤Ï¤¯¤½¥ê¡¼¥Ê¤Ø
++¤Ï¤¯¤À¤Ä¤Á¤å¤¦ #T35 ÇíÃ¥¿ß
++¤Ï¤¯¤Á #T35 ÇòÃÔ
++¤Ï¤°¤­ #JN »õ·Ô
++¤Ï¤°¤­ #T35 »õ·Ô
++¤Ï¤°¤ë¤Þ¤ª¤¦ #JN »õ¼Ö²¦
++¤Ï¤°¤ë¤Þ¤ï¤ó¤Á¤§¤ó #JN »õ¼Ö¥ï¥ó¥Á¥§¥ó
++¤Ï¤°¤ë¤Þ¤ï¤ó¤Á¤§¤ó #JN »õ¼Ö¥ï¥ó¥Á¥§¥ó¡Ê²¾¾Î¡Ë
++¤Ï¤°¤ì¤Ê¤Þ¤³ #T35 ¤Ï¤°¤ì¤Ê¤Þ¤³
++¤Ï¤±¡¼¤ó #T30 ¥Ï¥±¡¼¥ó
++¤Ï¤±¡¼¤ó #T30 ŽÊŽ¹Ž°ŽÝ
++¤Ï¤² #T35 »³²¼
++¤Ï¤²¤·¤¯¤¯¤Î¤¤¤Á #JN ·ã¤·¤¯¤¯¥Î°ì
++¤Ï¤²¤·¤¯¤À¤ß¡¼ #JN ·ã¤·¤¯¥À¥ß¡¼
++¤Ï¤²¤·¤¯¤É¤¥¤¤¤¨ #CJ ·ã¤·¤¯¥É¥¥¥¤¥¨¡ª
++¤Ï¤²¤·¤¯¤É¤¦¤¤ #CJ ·ã¤·¤¯Æ±°Õ¡ª
++¤Ï¤²¤·¤¯¤É¤¦¤Ò #CJ ·ã¤·¤¯Æ±Èô¡ª
++¤Ï¤²¤·¤¯¤Ë¤ç¤¦¤¤ #CJ ·ã¤·¤¯Ç¢°Õ¡ª 
++¤Ï¤²¤·¤¯¤Ë¤ó¤¸¤ã #JN ·ã¤·¤¯Ç¦¼Ô
++¤Ï¤²¤·¤¯¤Ò¤ç¤¦¤¤ #CJ ·ã¤·¤¯Øá°Í¡ª
++¤Ï¤²¤É¤¦ #CJ ¤Ï¤²¤É¤¦
++¤Ï¤²¤É¤¦ #CJ ÆÅƱ
++¤Ï¤²¤É¤¦ #T30 ¤Ï¤²¤É¤¦
++¤Ï¤²¤É¤¦ #T30 ÆÅƱ
++¤Ï¤²¤â¤Ê¡¼ #JN hage¥â¥Ê¡¼
++¤Ï¤²¤ó¤ê¤·¤å¤® #T35 ÍÕ¸¶Íý¼çµÁ
++¤Ï¤³¤³¤Ç¤¹¤« #CJ ¤Ï¤³¤³¤Ç¤¹¤«¡©
++¤Ï¤³¤³¤Ç¤¹¤« #SUC ¤Ï¤³¤³¤Ç¤¹¤«¡©
++¤Ï¤·¤ë¤ó¤Ç¤¹ #T35 Áö¥ë¥ó¤Ç¤¹
++¤Ï¤¸¤Ã¤³ #T35 ÃѤûÒ
++¤Ï¤¸¤ë¤¹ #T35 ¤Ï¤¸¤ë¤¹
++¤Ï¤¹ #T35 Ï¡
++¤Ï¤¹¤³¤é #T35 Ï¡¥³¥é
++¤Ï¤º #T35 ¥Ï¥º
++¤Ï¤Á¤¤¤Á¤´¤¸¤±¤ó #T35 £¸£±£µ»ö·ï
++¤Ï¤Á¤¬¤Ä¤­¤­ #T35 £¸·î´íµ¡
++¤Ï¤Á¤¸¤ç¤¦¤¸¤Þ¤¸¤«¤ó¤«¤ó¤ê¤»¤ó¤¿¡¼ #JN Ȭ¾æÅç»þ´Ö´ÉÍý¥»¥ó¥¿¡¼
++¤Ï¤Á¤Á¤Á #T35 ¤Ï¤Á¤Á¤Á
++¤Ï¤Á¤È¤¦¤·¤ó¤Î #RT £¸Æ¬¿È¤Î¡¡
++¤Ï¤Á¤È¤¦¤·¤ó¤Î¤Þ¤ë¤Þ¤ë #JN £¸Æ¬¿È¤Î¡û¡û¡¡
++¤Ï¤Ã¤«¡¼ #T35 ¥Ï¥Ã¥«¡¼
++¤Ï¤Ã¤«¤¢ #T35 ¥Ï¥Ã¥«¡¼
++¤Ï¤Ã¤¯¤é¤¤¤¿ #CN ¥Ï¥Ã¥¯¥éÈÄ
++¤Ï¤Ã¤¯¤é¤¤¤¿ #T35 ¥Ï¥Ã¥¯¥éÈÄ
++¤Ï¤Ã¤·¤å #T35 ¥Ï¥Ã¥·¥å
++¤Ï¤Ã¤»¤ó¤Á¤å¤¦ #T35 8000¿ß
++¤Ï¤Ã¤Á¤ã¤±¤Æ¤°¤¥ #CJ ¤Ï¤Ã¤Á¤ã¤±¤Æ¥°¥¥
++¤Ï¤Ã¤Æ¤ó #T35 hatten
++¤Ï¤Ã¤Æ¤ó #T35 ¥Ï¥Ã¥Æ¥ó
++¤Ï¤Ã¤Æ¤ó¤¯¤ó #JN hatten·¯
++¤Ï¤Ã¤Æ¤ó¤·¤Í¡¼¤è #JN ȯŸ¥·¥Í¡¼¥è
++¤Ï¤Ã¤È¤¦¤·¤ó¤ª¤Ë¤®¤ê¤â¤Ê¡¼ #JN £¸Åù¿È¤ª¤Ë¤®¤ê¥â¥Ê¡¼
++¤Ï¤Ã¤È¤¦¤·¤ó¤®¤³ #JN ȬƬ¿È¥®¥³
++¤Ï¤Ã¤È¤¦¤·¤ó¤»¤ó¤è¤¦¤¬¤¯¤ä¤¦¤é¤³¤¿¤Ä #JN ȬƬ¿ÈÀìÍѳڲ°Î¢ßÙßý
++¤Ï¤Ã¤È¤¦¤·¤ó¤á¤ó¤É¤¯¤»¤§ #JN ȬƬ¿ÈŽÒŽÝŽÄŽÞŽ¸Ž¾Žª
++¤Ï¤Ã¤È¤¦¤·¤ó¤â¤Ê¡¼ #JN £¸Æ¬¿È¥â¥Ê¡¼
++¤Ï¤Ã¤È¤¦¤·¤ó¤â¤Ê¡¼¤¯¤ó #JN £¸¤È¤¦¤·¤ó¥â¥Ê¡½¤¯¤ó
++¤Ï¤Ã¤È¤¦¤·¤ó¤ò¤Û¤í¤Ü¤¹¤Ë¤»¤¤¤Á¤µ¤ó #JN £¸Æ¬¿È¤òÌǤܤ¹µ¶£±¤µ¤ó
++¤Ï¤Ã¤Ñ #T35 ÍÕ¤ÃÇÉ
++¤Ï¤Ã¤Ñ¤¿¤¤ #JN ¤Ï¤Ã¤ÑÂâ
++¤Ï¤Ã¤Ô¤¤¤Ä¤ê¤¤¤Õ¤ì¤ó¤º #T35 HappyTreeFriends
++¤Ï¤Ä¤·¤Ð¤ê¤Ã¤¯ #T35 ½é¼Ç¥ê¥Ã¥¯
++¤Ï¤Ä¤É¤¦ #T30 ȯư
++¤Ï¤Ä¤Ò¤Î¤Ç¤Á¤ó¤½¤¦ #T30 ½éÆü¤Î½Ð¡ùÄÁÁö
++¤Ï¤Ç¤¹¤á¤ó¤Ð¡¼ #KK ¥Ï¥Ç¥¹¥á¥ó¥Ð¡¼
++¤Ï¤Ç¤¹¤á¤ó¤Ð¡¼ #T35 ¥Ï¥Ç¥¹¥á¥ó¥Ð¡¼
++¤Ï¤Ç¤¹¤á¤ó¤Ð¤¢ #T35 ¥Ï¥Ç¥¹¥á¥ó¥Ð¡¼
++¤Ï¤È #JN È·
++¤Ï¤È #T35 È·
++¤Ï¤È¤¢¤Ë #JN È··»
++¤Ï¤È¤¢¤Ë #T35 È··»
++¤Ï¤È¤ª¤È¤¦¤È #JN È·Äï
++¤Ï¤È¤ª¤È¤¦¤È #T35 È·Äï
++¤Ï¤È¤ä¤Þ¤æ¤­¤ª #JN È·»³Í³µªÉ×
++¤Ï¤É¤¦¤Û¤¦ #JN ÇÈưˤ
++¤Ï¤Ê #T35 ²Ú
++¤Ï¤Ê¤² #JN É¡ÌÓ
++¤Ï¤Ê¤² #T35 É¡ÌÓ
++¤Ï¤Ê¤Ü¤¦¤· #JN ²Ö˹»Ò
++¤Ï¤Ë¤ã¤ó¤¾¤¦ #JN ¥Ï¥Ë¥ã¥ó¢
++¤Ï¤Í¤À #T35 Ä·¤Í¤À
++¤Ï¤Þ #T35 ¤Ï¤Þ
++¤Ï¤Þ #T35 ¥Ï¥Þ
++¤Ï¤Þ¤Þ¤Ä¤ê #T35 ¤Ï¤Þº×¤ê
++¤Ï¤à #KK ¸ø
++¤Ï¤à #T35 ¸ø
++¤Ï¤à¤³ #JNM ¥Ï¥à»Ò
++¤Ï¤à¤³ #T35 ¥Ï¥à»Ò
++¤Ï¤à¤¹¤¿¡¼ #JN ¡¡¡¡¡¡¡Ê,¡Ë¡¡¡¡¡¡¡¡¡Á("¡¦)
++¤Ï¤à¤¹¤¿¡¼ #JN ¥Ï¥à¥¹¥¿¡¼
++¤Ï¤à¤¿¤í¤¦ #JN ¥Ï¥àÂÀϺ
++¤Ï¤à¤Ê¤×¤È¤é #JN ¥Ï¥à¥Ê¥×¥È¥é
++¤Ï¤ä¤¯¤¢¤ä¤Þ¤ì¤è #CJ Á᤯¼Õ¤ì¤è
++¤Ï¤ä¤ß¤Þ¤¹¤ß #JN ®¿å¿¿À¡
++¤Ï¤é¤·¤Þ #T35 ¥Ï¥é¥·¥Þ
++¤Ï¤é¤·¤Þ¤ó #T35 ¥Ï¥é¥·¥Þ¥ó
++¤Ï¤ê¡¼¤Ý¤Ã¤¿¡¼¤È¤Ø¤É¤¦¤£¤° #JN ¥Ï¥ê¡¼¡¦¥Ý¥Ã¥¿¡¼¤È¥Ø¥É¥¦¥£¥°
++¤Ï¤ë¤¤¤Á¤Ð¤ó #JN ½Õ°ìÈÖ
++¤Ï¤ë¤¤¤Á¤Ð¤ó #T35 ½Õ°ìÈÖ
++¤Ï¤ë¤« #T35 ¥Ï¥ë¥«
++¤Ï¤ë¤Á¤å¤¦ #T35 ½Õ¿ß
++¤Ï¤ë¤ä¤Þ #JNS ½Õ»³
++¤Ï¤ï¤é¤Ã¤¿ #CJ ¤Ï¾Ð¤Ã¤¿¡ª
++¤Ï¤ï¤é¤Ã¤¿ #SUC ¤Ï¾Ð¤Ã¤¿¡ª
++¤Ï¤ó¤«¤¯ #T35 ¤Ï¤ó¤«¤¯
++¤Ï¤ó¤«¤¯¤«¤Ê #T35 Ⱦ³Ñ¥«¥Ê
++¤Ï¤ó¤«¤¯¤«¤Ê¤¤¤¿ #T35 Ⱦ³Ñ¤«¤ÊÈÄ
++¤Ï¤ó¤«¤¯¤Ë¤¸¤²¤ó¤¤¤¿ #T35 Ⱦ³ÑÆ󼡸µÈÄ
++¤Ï¤ó¤«¤¯¤â¤¸¤ì¤Ä #T35 Ⱦ³Ñʸ»úÎó
++¤Ï¤ó¤«¤¯¤â¤¸¤ì¤Ä¤¤¤¿ #CN Ⱦ³Ñʸ»úÎóÈÄ
++¤Ï¤ó¤«¤¯¤â¤¸¤ì¤Ä¤¤¤¿ #KK Ⱦ³Ñʸ»úÎóÈÄ
++¤Ï¤ó¤«¤¯¤â¤¸¤ì¤Ä¤¤¤¿ #T35 Ⱦ³Ñʸ»úÎóÈÄ
++¤Ï¤ó¤­¤å¤¦ #KK ȾµÙ
++¤Ï¤ó¤­¤å¤¦ #KK Ⱦµå
++¤Ï¤ó¤­¤å¤¦ #T35 ȾµÙ
++¤Ï¤ó¤­¤å¤¦ #T35 Ⱦµå
++¤Ï¤ó¤­¤å¤¦¤Ï¤º #T35 ÈȵçŽÊŽ½ŽÞ
++¤Ï¤ó¤°¤ë¤¤¤¿¤À¤¤¤¤¤Á¤Û¤¦¤½¤¯ #T35 ¥Ï¥ó¥°¥ëÈÄÂè°ìˡ§
++¤Ï¤ó¤³¤¦¤è¤³¤¯ #T30 ÈȹÔͽ¹ð
++¤Ï¤ó¤³¤¦¤è¤³¤¯¤¹¤ì #T35 ÈȹÔͽ¹ð¥¹¥ì
++¤Ï¤ó¤·¤ó¤À¤¤¤·¤ó¤µ¤¤¤Ï¤ï¤é¤¨¤¿ #CJ ºå¿ÀÂç¿ÌºÒ¤Ï¾Ð¤¨¤¿¡ª
++¤Ï¤ó¤¸¤ã¤¤¤·¤ã #T35 ÈȺá¼Ô
++¤Ï¤ó¤º¤Ü¤ó¤· #T35 Ⱦ¥º¥Ü¥ó»á
++¤Ï¤ó¤»¤¤¤·¤ë¤ª¤¸¤µ¤ó #JN È¿¾Ê¤·¤ë¤ª¤¸¤µ¤ó
++¤Ï¤ó¤»¤¤¤·¤ë¤ª¤¸¤µ¤ó #T35 È¿¾Ê¤·¤ë¤ª¤¸¤µ¤ó
++¤Ï¤ó¤½¤¦¤ª¡¼¤ë¤¹¤¿¡¼ #JN ÈÂÁ÷¥ª¡¼¥ë¥¹¥¿¡¼
++¤Ï¤ó¤Á¤ó #T35 ÈÈÄÁ
++¤Ï¤ó¤È¤¦ #T35 ȾÅç
++¤Ï¤ó¤É¤ë #T35 ¥Ï¥ó¥É¥ë
++¤Ï¤ó¤É¤ë¤Í¡¼¤à #T35 ¥Ï¥ó¥É¥ë¥Í¡¼¥à
++¤Ï¤ó¤É¤ë¤Í¤¨¤à #T35 ¥Ï¥ó¥É¥ë¥Í¡¼¥à
++¤Ï¤ó¤Ë¤ã #SUC È̼ã
++¤Ï¤ó¤Ë¤ã¤·¤ó¤®¤ç¤¦ #JN È̼㿴·Ð
++¤Ï¤ó¤Î¤¦ #T35 ȾǾ
++¤Ð¡¼ #JN BAR
++¤Ð¡¼ #T35 ¥Ð¡¼
++¤Ð¡¼¤¸¤ó¤­¤é¡¼¤¢¤Ù¤ë #JN ½è½÷¥­¥é¡¼¥¢¥Ù¥ë
++¤Ð¡¼¤¿¤ì #T35 ¥Ð¡¼¥¿¥ì
++¤Ð¡¼¤Á¤ã¤Í¤Ã¤È¤¢¤¤¤É¤ë¤Ë¤·¤à¤é¤Ò¤í¤³12¤µ¤¤ #JN ¥Ð¡¼¥Á¥ã¥ë¥Í¥Ã¥È¥¢¥¤¥É¥ëÀ¾Â¼Çî»Ò£±£²ºÐ
++¤Ð¡¼¤Á¤ã¤ë¤Í¤Ã¤È¤¢¤¤¤É¤ë¤¨¤ë¤¨¤ë¤¨¤ë #JN ¥Ð¡¼¥Á¥ã¥ë¥Í¥Ã¥È¥¢¥¤¥É¥ëLLL
++¤Ð¡¼¤Ü¤Ã¤È #JN ¥Ð¡¼¥Ü¥Ã¥È
++¤Ð¡¼¤ä #JN ¥Ð¡¼¥ä
++¤Ð¡¼¤ä #T35 ¥Ð¡¼¥ä
++¤Ð¤¢ #T35 ¥Ð¡¼
++¤Ð¤¢¤¿¤ì #T35 ¥Ð¡¼¥¿¥ì
++¤Ð¤¢¤ä #T35 ¥Ð¡¼¥ä
++¤Ð¤¤¤«¤¯¤â¤¸ #T35 ÇܳÑʸ»ú
++¤Ð¤¤¤¯¤ì¡¼¤¹ #T35 ¥Ð¥¤¥¯¥ì¡¼¥¹
++¤Ð¤¤¤Ð¤¤ #JN ÊÞ²ÊÞ²
++¤Ð¤¤¤Ð¤¤ #JN ŽÊŽÞŽ²ŽÊŽÞŽ²
++¤Ð¤¤¤í¤ó¤â¤ì¤Î #T35 ¥Ð¥¤¥í¥ó¡¦¥â¥ì¥Î
++¤Ð¤«¡¼ #JN ŽÊŽÞŽ¶Ž°
++¤Ð¤«¡¼ #JN ŽÊŽÞŽ¶Ž°¡´(Žß§ÕŽß)ŽÉ¡«
++¤Ð¤«¤¦¤è #JN ¥Ð¥«¥¦¥è
++¤Ð¤«¤®¤Ã¤³ #T35 ¥Ð¸°¤Ã»Ò
++¤Ð¤«¤À #T35 ¥Ð¥«ÅÄ
++¤Ð¤«¤Ë¤Ï¤³¤Ô¤Ú¤Ç¤­¤Ê¤¤ #CJ ¦Â¦Á¦Ê¦Á¤Ë¤Ï¥³¥Ô¥Ú¤Ç¤­¤Ê¤¤
++¤Ð¤«¤é¤í¤¦ #T35 ¥Ð¥«¥é¥í¥¦
++¤Ð¤«¤í¤ê¡¼¤¿ #T35 ¥Ð­Ê¥¿
++¤Ð¤«¤í¤ê¡¼¤¿ #T35 ŽÊŽÞ­ÊŽÀ
++¤Ð¤«¤í¤ê¡¼¤¿¤é¤ê¤Ã¤È¤ë #CJ ¥Ð­Ê¥¿¥é­È
++¤Ð¤«¤í¤ê¡¼¤¿¤é¤ê¤Ã¤È¤ë #CJ ŽÊŽÞ­ÊŽÀŽ×­È
++¤Ð¤«¤í¤ê¤¤¤¿ #T35 ŽÊŽÞ­ÊŽÀ(¥Ð¥«¥í¥ê¡¼¥¿)
++¤Ð¤«¤í¤ê¤¤¤¿¤é¤ê¤Ã¤È¤ë #CJ ŽÊŽÞ­ÊŽÀŽ×­È
++¤Ð¤«¤ó¤³¤¯ #CN ¥Ð´Ú¹ñ
++¤Ð¤«¤ó¤³¤¯ #T35 ¥Ð´Ú¹ñ
++¤Ð¤­¤å¡¼¤à¤«¡¼ #JN ¥Ð¥­¥å¡¼¥à¥«¡¼
++¤Ð¤¯¤²¤­ #T35 Çú·â
++¤Ð¤¯¤¸¤ã¤Ã¤¯¤¸¤±¤ó #KK ¥Ð¥¹¥¸¥ã¥Ã¥¯»ö·ï
++¤Ð¤¯¤À¤ó¤Í¤º¤ß #JN ÇúÃƥͥº¥ß
++¤Ð¤¯¤Á¤å¡¼¤â¤ó¤À¤¤ #JN Çú¥Á¥å¡¼ÌäÂê
++¤Ð¤° #JN ¥Ð¥°
++¤Ð¤µ¤í¤¹¤ì #T35 ¥Ð¥µ¥í¥¹¥ì
++¤Ð¤¹¤¸¤ã¤Ã¤¯ #T30 ¥Ð¥¹¥¸¥ã¥Ã¥¯
++¤Ð¤º¡¼¤«¤®¤³ #JN ¥Ð¥º¡¼¥«¥®¥³
++¤Ð¤Ã¤µ¤¤¤ä #JN ȲºÎ²°
++¤Ð¤Ä #JN ú¥
++¤Ð¤Ä¤Ð¤³ #T35 ¡ßÈ¢
++¤Ð¤Ä¤Ü¤Ã¤¯¤¹ #T35 ¡ß¥Ü¥Ã¥¯¥¹
++¤Ð¤È¤é¡¼ #JN ¥Ð¥È¥é¡¼
++¤Ð¤È¤í¤ï¤¹¤ì #JN ¥Ð¥È¥í¥ï¥¹¥ì
++¤Ð¤Ð¤¡ #JN ÇÌ¥¡
++¤Ð¤Ó #R5 ¥Ð¥Ó
++¤Ð¤Ó¤ê¤Æ¤£ #T35 ¥Ð¥Ó¥ê¥Æ¥£
++¤Ð¤Ó¤ë¤Ë¤» #KK ¥Ð¥Ó¥ëµ¶
++¤Ð¤Ó¤ë¤Ë¤» #T35 ¥Ð¥Ó¥ëµ¶
++¤Ð¤é¤³¤¦ #CN ¥Ð¥é¹â
++¤Ð¤é¤³¤¦ #T35 ¥Ð¥é¹â
++¤Ð¤é¤Á¤½ #T35 ¥Ð¥é¥Á¥½
++¤Ð¤é¤Á¤½ #T35 ŽÊŽÞŽ×ŽÁŽ¿
++¤Ð¤ë¤«¤ó¤ï¤Ã¤·¤ç¤¤ #JN ¥Ð¥ë¥«¥ó¡¦¥ï¥Ã¥·¥ç¥¤
++¤Ð¤ó #T35 ÈÇ
++¤Ð¤ó¤À¤¤ #T35 ÈÖÂæ
++¤Ð¤ó¤Á¤ç¤¦ #JN ÈÖĹ
++¤Ð¤ó¤Á¤ç¤¦ #T35 ÈÖĹ
++¤Ñ¤¤¤Ñ¤¤ #T35 ¦Ð¡¹
++¤Ñ¤¤¤Ñ¤ó¤­¤ç¤¦¤À¤¤ #JN ¥Ñ¥¤¥Ñ¥ó·»Äï
++¤Ñ¤¯¤ê #T35 ËÑÍû
++¤Ñ¤½¤³¤ó¤­¤å¤¦¤­¤å¤¦¤Ð¤¹¤¿¤¢¤º #T35 ¥Ñ¥½¥³¥óµßµÞ¥Ð¥¹¥¿¡¼¥º
++¤Ñ¤Ã¤È #T35 Pat
++¤Ñ¤Æ #KK ¥Ñ¥Æ
++¤Ñ¤Æ #T35 ¥Ñ¥Æ
++¤Ñ¤È #KS ¥Ñ¥È
++¤Ñ¤È #R5 ¥Ñ¥È
++¤Ñ¤È #T35 Pat
++¤Ñ¤Ô¤³ #T35 ¥Ñ¥Ô¥³
++¤Ñ¤Ú¤Ã¤È¤Þ¤Ú¤Ã¤È #JN ¥Ñ¥Ú¥Ã¥È¥Þ¥Ú¥Ã¥È
++¤Ñ¤ä¤ª #T35 ¥Ñ¥ä¥ª
++¤Ñ¤é¤µ¤¤¤È¤Ô¤è¤ß¡¼ #JN ¡¡(ŽßoŽß¢¿¡Á~~
++¤Ñ¤é¤µ¤¤¤È¤Ô¤è¤ß¡¼ #JN ¥Ñ¥é¥µ¥¤¥È¥Ô¥è¥ß¡¼
++¤Ñ¤é¤µ¤¤¤È¤Ô¤è¤ß¡¼ #JN ¥Ñ¥é¥µ¥¤¥È¥Ô¥è¥ß¡¼ 
++¤Ñ¤é¤À¤¤¤¹¤±¤¤¤¶¤¤ #T35 ¥Ñ¥é¥À¥¤¥¹·ÐºÑ
++¤Ñ¤é¤â¤ê¤Þ¤Ä¤ê #T35 ¥Ñ¥é¿¹º×¤ê
++¤Ñ¤ì¡¼¤É #JN ¥Ñ¥ì¡¼¥É
++¤Ñ¤í¤ß¤Î¤¯¤ó #JN ¥Ñ¥í¥ß¥Î·¯
++¤Ñ¤ó¤Æ¤£¤é #T35 ¥Ñ¥ó¥Æ¥£¥é
++¤Ñ¤ó¤Ñ¤« #T35 ¥Ñ¥ó¥Ñ¥«
++¤Ñ¤ó¤Ñ¤ó #T35 ¥Ñ¥ó¥Ñ¥ó¡ª
++¤Ò #T35 Èæ
++¤Ò¡¼¤Ë¤Ë¡¼¤Ë¤Ó¤Ã¤¯¤ê #JN ¥Ò¡¼¥Ë¥Ë¡¼¥Ë¡ª
++¤Ò¤¤¤«¤ê¤ã¤¯ #T35 ¤Ò¡Ê°Ê²¼Î¬¡Ë
++¤Ò¤«¤é¤Ó¤É¤ó #T35 ¤Ò¤«¤é¤ÓЧ
++¤Ò¤«¤ê¤Ä¤¦¤·¤ó #KK ¸÷ÄÌ¿®
++¤Ò¤«¤ë #T35 ¥Ò¥«¥ë
++¤Ò¤¬¤¯¤ó #T35 Èæ²Å·¯
++¤Ò¤¬¤· #JNS ´³²Û»Ò
++¤Ò¤¬¤· #T35 ´³²Û»Ò
++¤Ò¤¬¤·¤«¤¿¤â¤Ê¤¹¤± #JN ÅìÊý¥â¥Ê½õ
++¤Ò¤­¤³ #T35 ¥Ò¥­¥³
++¤Ò¤­¤³¡¼¤â¤ê #JN ¥Ò¥­¥³¡¼¥â¥ê
++¤Ò¤­¤³¤â #R5r ¤Ò¤­¤³¤â
++¤Ò¤­¤³¤â #R5r °ú¤­äƤâ
++¤Ò¤­¤³¤â¤é¤é¡¼ #JN ¥Ò¥­¥³¥â¥é¥é¡¼
++¤Ò¤­¤³¤â¤ê¤³¤Þ¤ë #JN ¥Ò¥­¥³¿¹¥³¥Þ¥ë
++¤Ò¤­¤ã¤¯ #T35 ÈôµÓ
++¤Ò¤¯¤½¤ó #JN ¥Ò¥¯¥½¥ó
++¤Ò¤² #JN ¥Ò¥²
++¤Ò¤² #JN ɦ
++¤Ò¤² #T35 ¥Ò¥²
++¤Ò¤²¤à¤· #T35 ¤Ò¤²¤à¤·
++¤Ò¤µ¤ó¤Ê1 #T35 Èá»´¤Ê£±
++¤Ò¤µ¤ó¤Ê¤¤¤Á #JN Èá»´¤Ê£±
++¤Ò¤µ¤ó¤Ê¤¤¤Á #T35 Èá»´¤Ê1
++¤Ò¤·¤À¤Ê #T35 Èé»é¤À¤Ê
++¤Ò¤·¤ç¤¦¤±¤¤¤É¤¦¤¸¤ó #KK ÈôæÆ·ÏƱ¿Í
++¤Ò¤·¤ç¤¦¤±¤¤¤É¤¦¤¸¤ó #T35 ÈôæÆ·ÏƱ¿Í
++¤Ò¤º¤ß #JN ÏÄ
++¤Ò¤½¤Ò¤ì #T35 ¤Ò¤½¤Ò¤ì
++¤Ò¤Ã¤­¡¼ #JN ¥Ò¥Ã¥­¡¼
++¤Ò¤Ã¤­¡¼ #JN ¥Ò¥Ã¥­¡¼ 
++¤Ò¤Ã¤­¡¼ #T35 ¤Ò¤Ã¤­¡¼
++¤Ò¤Ã¤­¡¼ #T35 ¥Ò¥Ã¥­¡¼
++¤Ò¤Ã¤­¤¤ #T35 ¥Ò¥Ã¥­¡¼
++¤Ò¤Ã¤·¤À¤Ê #CJ ɬ»à¤À¤Ê
++¤Ò¤Ã¤·¤À¤Ê #T35 ɬ»à¤À¤Ê
++¤Ò¤Ã¤¿¤ê #T35 ¤Ò¤Ã¤¿¤ê
++¤Ò¤Ä¤¸ #T35 ÍÓ
++¤Ò¤Ä¤è¤¦¤¢¤¯¤Î¤Ð¤«¤¹¤Æ¤Ð #T35 ɬÍ×°­¤ÎÇϼ¯¼Î¤Æ¾ì
++¤Ò¤Ç¤§¤ä #JN ¤Ò¤Ç¤§¤ä
++¤Ò¤Ç¤é¤ì #KS HIDE¤é¤ì
++¤Ò¤È¤ª¤ª¤¹¤® #T35 ¿ÍÂç¿ù
++¤Ò¤È¤¯¤¤¤ª¤ª¤ß¤ß #JN ¿Í¿©¤¤Â缪
++¤Ò¤È¤Ð¤·¤é #T35 ¿ÍÃì
++¤Ò¤È¤ß¤Á¤ã¤ó #JN Æ·¤Á¤ã¤ó
++¤Ò¤È¤ê¤è¤¦¤­¤ã¤Ã¤× #T35 ¤Ò¤È¤êÍÑ¥­¥ã¥Ã¥×
++¤Ò¤É¤¦¤É¤¦¤Æ¤¤ #T35 ÈóƻƸÄç
++¤Ò¤Ê¤ó¤¸¤ç #T35 ÈòÆñ½ê
++¤Ò¤Ê¤ó¤¸¤ç¤æ¤¦¤É¤¦¤®¤³ #JN ÈòÆñ½êͶƳ¥®¥³
++¤Ò¤Î¤Ç¤Á¤ç¤¦ #T35 Æü½ÐÄ®
++¤Ò¤Ï¤ó¤è¤¦¤Ü¤¦ #T35 ÈãȽÍ×˾
++¤Ò¤Ò¤Ò¤Ò #CJ ¥Ò¥Ò¥Ò¥Ò
++¤Ò¤Ò¤Ò¤Ò¤Ò #CJ ¥Ò¥Ò¥Ò¥Ò¥Ò
++¤Ò¤Õ¤ß¤¯¤À¤ó #T35 £±£²£³£¹ÃÊ
++¤Ò¤Ù #T35 hibe
++¤Ò¤Ù #T35 ¥Ò¥Ù
++¤Ò¤Þ¤Í¡¼¤è #JN ¥Ò¥Þ¥Í¡¼¥è
++¤Ò¤ã¤¯¤µ¤²¤Ï¤¤¤Á¤¢¤²¤Ë¤·¤«¤º #CJ É´¤µ¤²¤Ï°ì¤¢¤²¤Ë¤·¤«¤º
++¤Ò¤ã¤¯¤µ¤ó¤¸¤å¤¦¤Ë¤Ë¤ó¤á¤Î¤½¤¹¤¦¤µ¤ó #T35 132¿ÍÌܤÎÁÇ¿ô¤µ¤ó
++¤Ò¤ã¤¯¤·¤ç¤¦¤È¤· #T35 É´À«ÅÔ»Ô
++¤Ò¤ã¤¯¤¸¤å¤¦¤­¤å¤¦¤±¤¤¤Ç¤ó¤·¤ã #JN 119·ÏÅżÖ
++¤Ò¤ã¤¯¤Ë¤¸¤å¤¦¤Ï¤Ã¤È¤¦¤·¤ó¤â¤Ê¡¼ #JN 128Ƭ¿È¥â¥Ê¡¼
++¤Ò¤ã¤Ã¤Û¤¦ #CJ ¥Ò¥ã¥Ã¥Û¡¼
++¤Ò¤ã¤Ã¤Û¤¦ #CJ ŽËŽ¬Ž¯ŽÎŽ°
++¤Ò¤è¤³ #JN ¥Ò¥è¥³
++¤Ò¤è¤·¤Á¤å¤¦ #T35 ÆüµÈ¿ß
++¤Ò¤é¤¬¤Ê #JN ¤Ò¤é¤¬¤Ê
++¤Ò¤é¤¬¤Ê #T35 ¤Ò¤é¤¬¤Ê
++¤Ò¤é¤¬¤Ê¤Ç¤å¡¼¤¯ #JN ¤º¤£¤³¤´¤¬¤§¤ª¤¬¤¸¤¢¤¯¤­¤®¤²¤ª¤¬¤¥¤³¤¹¡ã°Ê²¼Î¬¡ä 
++¤Ò¤é¤¬¤Ê¤Ç¤å¡¼¤¯ #JN ¤Ò¤é¤¬¤ÊDUKE
++¤Ò¤é¤ß¤ß¤â¤Ê¡¼ #JN Ê¿¼ª¥â¥Ê¡¼
++¤Ò¤é¤ß¤ß¤â¤é¤é¡¼ #JN Ê¿¼ª¥â¥é¥é¡¼
++¤Ò¤ê¤ã¤¯ #T35 ¤Ò¡Êά¡Ë
++¤Ò¤í¤·¤µ¤Þ #JNM ÇîÍÍ
++¤Ò¤í¤·¤µ¤Þ #T35 ÇîÍÍ
++¤Ò¤í¤Ò¤È #JN ¥Ò¥í¥Ò¥È
++¤Ò¤í¤Ò¤È #T35 ¥Ò¥í¥Ò¥È
++¤Ò¤í¤Ý¤ó #JN ¤Ò¤í¤Ý¤ó
++¤Ò¤í¤æ¤­ #JN ¤Ò¤í¤æ¤­
++¤Ò¤í¤æ¤­ #JNM ¤Ò¤í¤æ¤­
++¤Ò¤í¤æ¤­ #T35 ¤Ò¤í¤æ¤­
++¤Ò¤í¤æ¤­¤«¤ó¤Á¤ç¤¯¤Ë¤ó #JN ¤Ò¤í¤æ¤­¡÷´Éľ¿Í
++¤Ò¤í¤æ¤­¤«¤ó¤Á¤ç¤¯¤Ë¤ó #JN ¤Ò¤í¤æ¤­¡÷´Éľ¿Í 
++¤Ò¤í¤æ¤­¤«¤ó¤Ê¤ª¤È #JNM ¤Ò¤í¤æ¤­¡÷¿ûľ¿Í
++¤Ò¤í¤æ¤­¤³¤¦¤Ë¤ó¤Õ¤¡¤ó¤¯¤é¤Ö #KK ¤Ò¤í¤æ¤­¸øǧ¥Õ¥¡¥ó¥¯¥é¥Ö
++¤Ò¤í¤æ¤­¤Ã¤Ý¤¤¤Î #JN ¤Ò¤í¤æ¤­¤Ã¤Ý¤¤¤Î
++¤Ò¤í¤æ¤³¤«¤ó¤Ê¤ª¤È #JNM ¤Ò¤í¤æ»Ò¡÷¿ûľ¿Í
++¤Ò¤ó¤Ô¤ç¤¦¤«¤¤ #T30 ÉÊɾ²ñ
++¤Ò¤ó¤Ô¤ç¤¦¤«¤¤ #T35 ÉÊɾ²ñ
++¤Ó¡¼ #T35 £Â
++¤Ó¡¼¤°¤ë #JN ¥Ó¡¼¥°¥ë
++¤Ó¡¼¤°¤ë¤¢¤é¤· #JN ¥Ó¡¼¥°¥ë¹Ó¤é¤·
++¤Ó¡¼¤Á¤¯ #T35 BÃ϶è
++¤Ó¤£ #JN ¤Ó¤£
++¤Ó¤¤¤°¤ë¤¢¤é¤· #T35 ¥Ó¡¼¥°¥ë¹Ó¤é¤·
++¤Ó¤­¤ã¤¯ #JN ÈþµÓ 
++¤Ó¤·¤ç¤¦¤¸¤ç¤»¤ó¤·¤»¡¼¤é¡¼¤Õ¡¼¤ó #JN Èþ¾¯½÷Àï»Î¥»¡¼¥é¡¼¤Õ¡¼¤ó
++¤Ó¤·¤ç¤¦¤¸¤ç¤Ë¤ó¤Æ¤¤ #T30 Èþ¾¯½÷ǧÄê
++¤Ó¤¸ #T35 ¥Ó¥¸
++¤Ó¤¸¤Í¤¹¤Ë¤å¤¦¤¹¤×¤é¤¹ #T35 ¥Ó¥¸¥Í¥¹¥Ë¥å¡¼¥¹¡Ü
++¤Ó¤¹¤±¤¿¤ó #T35 ¥Ó¥¹¥±¤¿¤ó
++¤Ô¡¼¤³ #T30 ¥Ô¡¼¥³
++¤Ô¡¼¤³¤ä¤í¤¦ #T35 ¥Ô¡¼¥³ÌîϺ
++¤Ô¤¤ #T35 P
++¤Ô¤«¤Á¤å¡¼ #JN ¥Ô¥«¥Á¥å¡¼ 
++¤Ô¤«¤Á¤å¤¦ #JN ¥Ô¥«¥Á¥å¥¦
++¤Ô¤«¤Á¤å¤¦ #JN ¥Ô¥«¿ß
++¤Ô¤«¤Ä¡¼ #KK ¥Ô¥«¥Ä¡¼
++¤Ô¤¯¤ß¤½ #JN ¥Ô¥¯¥ß¥½
++¤Ô¤¯¤ß¤ó #JN ¥Ô¥¯¥ß¥ó
++¤Ô¤³ #T35 ¥Ô¥³
++¤Ô¤ç¤ó¤Ô¤ç¤ó #JN ¥Ô¥ç¥ó¥Ô¥ç¥ó
++¤Ô¤í #JN ¥Ô¥í¥³
++¤Ô¤í #T35 ¥Ô¥í
++¤Ô¤í #T35 ¥Ô¥í¥³
++¤Ô¤í¤³ #JN ¥Ô¥í
++¤Ô¤í¤³ #T35 ¥Ô¥í
++¤Ô¤í¤³ #T35 ¥Ô¥í¥³
++¤Ô¤ó¤­¡¼ #JN ¥Ô¥ó¥­¡¼
++¤Ô¤ó¤¯¤¿¤ï¤¢¤É¤Ã¤È¤³¤à #T35 pinktower.com
++¤Ô¤ó¤¯¤Á¤ã¤ó¤Í¤ë #T35 Pink¤Á¤ã¤ó¤Í¤ë
++¤Ô¤ó¤Ý¤ó¤À¤Ã¤·¤å #T30 ¥Ô¥ó¥Ý¥ó¥À¥Ã¥·¥å
++¤Õ¡¼¤ó #CJ ¤Õ¡¼¤ó
++¤Õ¡¼¤ó #JN ¤Õ¡¼¤ó¡¡
++¤Õ¡¼¤ó¤­¤ç¤¦¤À¤¤ #JN ¤Õ¡¼¤ó·»Äï
++¤Õ¤¡¡¼¤¹¤È¤®¤³¤¨¤â¤ó #JN ¥Õ¥¡¡¼¥¹¥È¡¦¥®¥³¥¨¥â¥ó
++¤Õ¤¡¡¼¤¹¤È¤®¤³¤ß #JN ¥Õ¥¡¡¼¥¹¥È¡¦¥®¥³¥ß
++¤Õ¤¡¤¤¤Ê¤ë¤¢¤ó¤µ¤¢ #CJ FA
++¤Õ¤¡¤¤¤Ê¤ë¤¢¤ó¤µ¤¢ #CJ FA?
++¤Õ¤¡¤¤¤Ê¤ë¤¢¤ó¤µ¤¢ #CJ ¥Õ¥¡¥¤¥Ê¥ë¥¢¥ó¥µ¡¼¡©
++¤Õ¤¡¤¤¤Ê¤ë¤¿¤Ö¤¦ #T35 ¥Õ¥¡¥¤¥Ê¥ë¥¿¥Ö¡¼
++¤Õ¤¡¤¤¤Ê¤ë¤Õ¤¡¤ó¤¿¤º¤£ #T35 FINAL¡¡FANTAZY
++¤Õ¤¡¤Ã¤¯¤æ¡¼ #JN ¥Õ¥¡¥Ã¥¯¥æ¡¼
++¤Õ¤¡¤Ã¤¯¤æ¤¦¤Ö¤Á¤³¤í¤¹¤¾ #CJ Fuch¡¡You¡¡¤Ö¤Á»¦¤¹¤¾
++¤Õ¤¡¤Ó¤ç #KS ¥Õ¥¡¥Ó¥ç
++¤Õ¤¡¤Ó¤ç¤ó #T35 ¥Õ¥¡¥Ó¥ç¥ó
++¤Õ¤¡¤é¤ª #JN ¥Õ¥¡¥é¥ª
++¤Õ¤¡¤ó¤¿¤¸¡¼ #T35 ¥Õ¥¡¥ó¥¿¥¸¡¼
++¤Õ¤¡¤ó¤¿¤¸¤¤ #T35 ¥Õ¥¡¥ó¥¿¥¸¡¼
++¤Õ¤£¡¼¤Í¤â¤¨ #JN ¥Õ¥£¡¼¥Í˨¤¨
++¤Õ¤£¤Ã¤·¤ã¡¼¤Þ¤ó #JN ¥Õ¥£¥Ã¥·¥ã¡¼¥Þ¥ó
++¤Õ¤£¤ë¤¿ #T30 ¥Õ¥£¥ë¥¿
++¤Õ¤£¤ë¤¿¡¼ #T35 ¥Õ¥£¥ë¥¿¡¼
++¤Õ¤¦¤­¤¤¤¤¤ó #T35 É÷µª°Ñ°÷
++¤Õ¤¦¤Ö¤Ä¤· #T35 ¤Õ¤¦¤Ö¤Ä¤·
++¤Õ¤¦¤ó #CJ ¥Õ¡¼¥ó
++¤Õ¤¦¤ó #CJ ŽÌŽ°ŽÝ
++¤Õ¤§¤é¡¼¤Á¤ç #JN ¥Õ¥§¥é¡¼¥Á¥ç
++¤Õ¤§¤é¡¼¤Á¤ç¤Õ¤¡¤ß¤ê¡¼ #JN ¥Õ¥§¥é¡¼¥Á¥ç¥Õ¥¡¥ß¥ê¡¼
++¤Õ¤§¤é¤Í¡¼¤è #JN ¥Õ¥§¥é¥Í¡¼¥è
++¤Õ¤©¤¦¤É #T35 4rd
++¤Õ¤©¤é¤Í¡¼¤è #JN ¥Õ¥©¥é¥Í¡¼¥è
++¤Õ¤«¤ß¤¨¤¤¤¤¤Á¤í¤¦ #JN ¿¼¿å±Ñ°ìϺ
++¤Õ¤«¤ï¤ê¤ç¤¦ #JN ¤Õ¤«¤ï¤ê¤ç¤¦
++¤Õ¤®¡¼ #JN ¥Õ¥®¡¼
++¤Õ¤®¤¤ #T35 ¥Õ¥®¡¼
++¤Õ¤¯¤·¤ç¤¦ #JN Éû¾­
++¤Õ¤¯¤·¤ç¤¦ #T35 Éû¾­
++¤Õ¤¯¤¹¤¦¤¹¤ì #T35 Ê£¿ô¥¹¥ì
++¤Õ¤¯¤¹¤¦¤¹¤ì¤Ã¤É #T35 Ê£¿ô¥¹¥ì¥Ã¥É
++¤Õ¤¯¤¹¤± #T35 £²£¹½õ
++¤Õ¤¯¤ì¤­ #T35 ʤÎò
++¤Õ¤° #T35 ²ÏÆÚ
++¤Õ¤°¤ê¤é¡¼ #JN ¥Õ¥°¥ê¥é¡¼
++¤Õ¤µ¤ª #JN ¥Õ¥µÉ×
++¤Õ¤µ¤ª #JNM ¤Õ¤µ¤ª
++¤Õ¤µ¤®¤³ #JN ¥Õ¥µ¥®¥³
++¤Õ¤µ¤®¤³¤³¤¦¤Ü¤ò¤Î¤ß¤¹¤®¤¿¤Õ¤µ¤®¤³ #JN ¥Õ¥µ¥®¥³¹ÚÊì¤ò°û¤ß²á¤®¤¿¥Õ¥µ¥®¥³
++¤Õ¤µ¤®¤³¤Þ¤ó¤À¤ó #JN ¥Õ¥µ¥®¥³Ì¡ÃÌ
++¤Õ¤·¤¢¤Ê¤µ¤ó #T30 fusianasan
++¤Õ¤·¤¢¤Ê¤µ¤ó¤È¤é¤Ã¤× #T35 fusianasan¥È¥é¥Ã¥×
++¤Õ¤¸¤ç¤¦ #T30 Éâ¾å
++¤Õ¤¸¤ç¤· #T35 Éå½÷»Ò
++¤Õ¤Á¤å¤¦¤±¤¤¤à¤·¤ç #JN ÉÜÃ淺̳½ê
++¤Õ¤Ã¤­¤ä #T35 Éüµ¢²°
++¤Õ¤Ã¤µ¡¼¤ë¤¿¤¤¤µ #JN ¥Õ¥Ã¥µ¡¼¥ëÂ纴
++¤Õ¤Ã¤µ¤ë¤È¤Ó¤Õ¤µ¤¹¤± #JN ¥Õ¥Ã±îÈô¥Õ¥µ½õ
++¤Õ¤Ã¤µ¤ë¤È¤Ó¤Õ¤µ¤¹¤± #JN ŽÌŽ¯±îÈôŽÌŽ»½õ
++¤Õ¤Ã¤µ¤ì #JN ŽÌŽ¯Ž»ŽÚ
++¤Õ¤È¤¹¤± #JNM ÂÀÊå
++¤Õ¤È¤¹¤± #T35 ÂÀÊå
++¤Õ¤È¤Þ¤· #JN ¥Õ¥È¥Þ¥·
++¤Õ¤È¤Þ¤· #KY ÂÀ¤Þ¤·
++¤Õ¤È¤Þ¤·¤¤¤»¤¤¤È #JN ÂÀ¤Þ¤·¤¤À¸ÅÌ
++¤Õ¤È¤Þ¤·¤¤¤»¤¤¤È #JN ÂÀ¤Þ¤·¤¤À¸ÅÌ 
++¤Õ¤È¤Þ¤·¤¤¤Þ¤é¤é¡¼ #JN ÂÀ¤Þ¤·¤¤¥Þ¥é¥é¡¼
++¤Õ¤È¤Þ¤·¤¤¤â¤Ê¡¼ #JN ÂÀ¤Þ¤·¤¤¥â¥Ê¡¼
++¤Õ¤É¤¦¤ß¤Í #T35 ÉÔÆ°Êö
++¤Õ¤Ë¤¯ #T35 ÉåÆù
++¤Õ¤å¤¦¤¸¤ã¤Í¤¤¤¶¤ó #T35 ¥Õ¥å¡¼¥¸¥ã¥Í¥¤¥¶¥ó
++¤Õ¤å¤¦¤¸¤ã¤Í¤¤¤·¤ã¤ó #T35 ¥Õ¥å¡¼¥¸¥ã¥Í¥¤¥·¥ã¥ó
++¤Õ¤æ¤·¤Ð¤±¤ó #JN Å߼Ƹ¤
++¤Õ¤æ¤·¤Ð¤±¤ó #T35 Å߼Ƹ¤
++¤Õ¤æ¤Á¤å¤¦ #T35 Åß¿ß
++¤Õ¤é¤°¤¬¤¿ #T5 ¥Õ¥é¥°¤¬Î©
++¤Õ¤é¤Ã¤·¤å¤Þ¤ó #JN ¥Õ¥é¥Ã¥·¥å¥Þ¥ó
++¤Õ¤é¤Ã¤È¤¹¤ê¤£ #T35 ¥Õ¥é¥Ã¥È3
++¤Õ¤é¤ó¤¹¤Ñ¤ó #T35 ¥Õ¥é¥½¥¹¥Ñ¥ó
++¤Õ¤é¤ó¤¹¤Ñ¤ó #T35 ŽÌŽ×Ž¿Ž½ŽÊŽßŽÝ
++¤Õ¤ê¡¼¤Õ¤©¡¼¤ë #JN FREEFALL
++¤Õ¤ê¤«¤¨¤ê¤â¤Ê¤« #JN ¿¶¤êÊÖ¤ê¥â¥Ê¥«
++¤Õ¤ê¤ó¤Á¤ã¤ó #T35 ÉÔÎѤÁ¤ã¤ó
++¤Õ¤ë¤¦¡«¤§¤ó #JN ¥Õ¥ë¥ô¥§¥ó
++¤Õ¤ë¤¦¡«¤§¤ó #T35 ¥Õ¥ë¥ô¥§¥ó
++¤Õ¤ì¤Ã¤Ä¤í¤Ü #JN ¥Õ¥ì¥Ã¥Ä¥í¥Ü
++¤Ö¤¤ #JN  Éô°Ì
++¤Ö¤¤ #JN Éð°Ò
++¤Ö¤¤ #T35 Éð°Ò
++¤Ö¤¤ #T35 Éô°Ì
++¤Ö¤¯¤Þ¤¯ #T30 ¥Ö¥¯¥Þ¥¯
++¤Ö¤µ¤¤¤³ #T35 ¥Ö¥µ¥¤¥³
++¤Ö¤µ¤è¤¯ #JN ¥Ö¥µ¥è¥¯
++¤Ö¤µ¤è¤¯ #T35 ¥Ö¥µ¥è¥¯
++¤Ö¤¿ #JN ÆÚ
++¤Ö¤¿ #T35 ÆÚ
++¤Ö¤Á #T35 Þ¼
++¤Ö¤Á¤³ #JN ¤Ö¤Á¤³
++¤Ö¤Á¤³ #T35 ¤Ö¤Á¤³
++¤Ö¤Ã¤¯ #T35 ¥Ö¥Ã¥¯
++¤Ö¤Ã¤¯¤Þ¡¼¤¯ #T30 ¥Ö¥Ã¥¯¥Þ¡¼¥¯
++¤Ö¤Ã¤·¤Ä #T35 ʪ¼Á
++¤Ö¤Ã¤À #T35 ¥Ö¥Ã¥À
++¤Ö¤Ä¤À¤ó #T35 Ê©ÃÅ
++¤Ö¤É¤¦¤â¤Ê¡¼ #JN Éòƺ¥â¥Ê¡¼
++¤Ö¤Ì¤¹ #T35 ¥Ö¥Ì¥¹
++¤Ö¤Ó¤Á¤å¤¦ #T35 ¥Ö¥Ó¿ß
++¤Ö¤è¤¯ #T35 ¥Ö¥è¥¯
++¤Ö¤é #T35 ¥Ö¥é
++¤Ö¤é¤¦¤¶¤¯¤é¤Ã¤·¤ã #T35 ¥Ö¥é¥¦¥¶¡¼¥¯¥é¥Ã¥·¥ã
++¤Ö¤é¤¦¤¶¤¯¤é¤Ã¤·¤ã¡¼ #T35 ¥Ö¥é¥¦¥¶¡¼¥¯¥é¥Ã¥·¥ã¡¼
++¤Ö¤é¤¯¤é #T35 ¥Ö¥é¥¯¥é
++¤Ö¤é¤¯¤é #T35 ÉôÍî¤é
++¤Ö¤é¤¯¤é¤Á¤§¤Ã¤« #T35 ¥Ö¥é¥¯¥é¥Á¥§¥Ã¥«
++¤Ö¤é¤¯¤é¤Á¤§¤Ã¤«¡¼ #T35 ¥Ö¥é¥¯¥é¥Á¥§¥Ã¥«¡¼
++¤Ö¤é¤Ã¤¯¤Û¤ª¤ë #T35 ¥Ö¥é¥Ã¥¯¥Û¡¼¥ë
++¤Ö¤ë¤ª¤¿ #T35 ¥Ö¥ë¥ò¥¿
++¤Ö¤ë¤É¤Ã¤¯¤½¡¼¤¹ #KK ¥Ö¥ë¥É¥Ã¥¯¥½¡¼¥¹
++¤Ö¤ì¤¤¤º #T35 ̵Îé¿Þ
++¤Ö¤ì¤¤¤ó¤¬ #JN ¥Ö¥ì¥¤¥ó¥¬
++¤Ö¤í¡¼¤É¤Ð¤ó¤É¤ë¡¼¤¿ #T35 ¥Ö¥í¡¼¥É¥Ð¥ó¥É¥ë¡¼¥¿
++¤Ö¤í¡¼¤É¤Ð¤ó¤É¤ë¡¼¤¿¡¼ #T35 ¥Ö¥í¡¼¥É¥Ð¥ó¥É¥ë¡¼¥¿¡¼
++¤Ö¤í¤Ã¤¯¤¹ #T35 ¤Ö¤í¤Ã¤¯¤¹
++¤×¤¤¤¿ #CN ¥×ÈÄ
++¤×¤¤¤¿ #T35 ¥×ÈÄ
++¤×¤¹¤£¤³ #JN ¤×¤¹¤£»Ò
++¤×¤Ã #CJ ¤×¤Ã
++¤×¤Ã #CJ ¥×¥Ã
++¤×¤Ã #CJ ŽÌŽßŽ¯
++¤×¤Ã #JN ¡Ê¡­,_¡µ¡®¡ËŽÌŽßŽ¯
++¤×¤Ã #JN ŽÌŽßŽ¯
++¤×¤Ã¤×¤¯¤×¡¼ #JN ¤×¤Ã¤×¤¯¤×¡¼
++¤×¤Ë #T35 ¤×¤Ë
++¤×¤Ë #T35 ¥×¥Ë
++¤×¤Ë¤ë #T35 ¥×¥Ë¥ë
++¤×¤Ë¤ë¤Á¤å¤¦ #T35 ¥×¥Ë¥ë¿ß
++¤×¤é¤Ê¤ê¤¢ #JN ¥×¥é¥Ê¥ê¥¢
++¤×¤ê¤¦¤ó¤³ #T35 ¤×¤ê¤¦¤ó¤³
++¤×¤ê¤×¤ê¤Ñ¤Ã¤Ñ #JN ¥×¥ê¥×¥ê¥Ñ¥Ã¥Ñ
++¤×¤ê¤ë¤Ê¤é¤¤¤Þ¤Î¤¦¤Á #CJ ¥×¥ê¥ë¥Ê¥é¥¤¥Þ¥Î¥¦¥Á
++¤×¤ê¤ë¤Ê¤é¤¤¤Þ¤Î¤¦¤Á #CJ ŽÌŽßŽØŽÙŽÅŽ×Ž²ŽÏŽÉŽ³ŽÁ
++¤×¤ê¤ë¤Ê¤é¤¤¤Þ¤Î¤¦¤Á #JN ¥×¥ê¥ë¥Ê¥é¥¤¥Þ¥Î¥¦¥Á
++¤×¤ê¤ë¤Ê¤é¤¤¤Þ¤Î¤¦¤Á #JN ŽÌŽßŽØŽÙŽÅŽ×Ž²ŽÏŽÉŽ³ŽÁ
++¤×¤ê¤ó¤¢¤¿¤Þ #T35 ¥×¥ê¥óƬ
++¤×¤ë¤®¤³ #JN ¥×¥ë¥®¥³
++¤×¤ë¤â¤Ê #JN ¥×¥ë¥â¥Ê
++¤×¤í¤­¤·¤­¤»¤¤ #T35 £Ð£Ò£Ï£Ø£Ùµ¬À©
++¤×¤í¤¯¤· #T35 ¥×¥í¥¯¥·
++¤×¤í¤·¤ß¤ó #T35 ¥×¥í»Ô̱
++¤×¤í¤¸¤§¤¯¤È¤¨¤Ã¤¯¤¹ #KK ¥×¥í¥¸¥§¥¯¥È£Ø
++¤×¤í¤¸¤§¤¯¤È¤¨¤Ã¤¯¤¹ #T35 ¥×¥í¥¸¥§¥¯¥ÈX
++¤×¤í¤¸¤§¤¯¤È¤¨¤Ã¤¯¤¹ #T35 ¥×¥í¥¸¥§¥¯¥È£Ø
++¤×¤í¤¸¤§¤¯¤È¤±¡¼ #KK ¥×¥í¥¸¥§¥¯¥È£Ë
++¤×¤í¤¸¤§¤¯¤È¤±¡¼ #T35 ¥×¥í¥¸¥§¥¯¥È£Ë
++¤×¤í¤¸¤§¤¯¤È¤±¤¨ #T35 ¥×¥í¥¸¥§¥¯¥ÈK
++¤×¤í¤Ð¤¬¤ó¤À¤³¤¦ #T35 ¥×¥í¥Ñ¥¬¥ó¥À¹»
++¤×¤í¤Ñ¤¬¤ó¤À¤¿¤ï¤¢ #T35 ¥×¥í¥Ñ¥¬¥ó¥À¥¿¥ï¡¼
++¤Ø¡¼¤â¤Ê¡¼ #JN ¤Ø¡¼¥â¥Ê¡¼
++¤Ø¤¤¤¢¤ó #JN Ê¿°Â
++¤Ø¤¤¤¢¤ó #T35 Ê¿°Â
++¤Ø¤¤¤µ¤»¤Ä #T35 Êĺ¿Àâ
++¤Ø¤§¤¨ #CJ (¡­Ž¥¢ÏŽ¥`)¤Ø¤§¡¼
++¤Ø¤§¤¨ #CJ ¤Ø¤§¡Á
++¤Ø¤¨¤¨¤­¤ß¤é¤¤¤À¤¢¤Ë¤Ê¤Ã¤¿¤Ð¤Ã¤«¤ê¤Ê¤ó¤À #CJ ¤Ø¤¨¡¼·¯¥é¥¤¥À¡¼¤Ë¤Ê¤Ã¤¿¤Ð¤Ã¤«¤ê¤Ê¤ó¤À
++¤Ø¤³ #T35 ±ú
++¤Ø¤Ä¤° #CJ >>¡û¡û¤Ø¹ð¤°
++¤Ø¤Ê¤® #JNS ¤Ø¤Ê¤®
++¤Ø¤Ê¤® #T35 ¤Ø¤Ê¤®
++¤Ø¤Î¤Ø¤Î¤â¤Ø¤¸ #JN ¤Ø¤Î¤Ø¤Î¤â¤Ø¤¸
++¤Ø¤Ü¤ó #T35 ¤Ø¤Ü¤ó
++¤Ø¤ó¤Ê¤¦¤¿ #T35 ÊѤʲÎ
++¤Ù¤Ã¤½¤¦ #T35 ÊÌÁñ
++¤Ù¤Ó¤·¤£ #JN ¥Ù¥Ó¤·¤£
++¤Ù¤ë¤À¤ó¤Ç¤£¡¼¤¢¤é¤· #JN ¥Ù¥ë¥À¥ó¥Ç¥£¡¼¹Ó¤é¤·
++¤Ù¤ì¤â¤é #JN ¥Ù¥ì¥â¥é
++¤Ù¤ó¤­ #T35 ÊØ´ï
++¤Ù¤ó¤¸¤ç¤Î¤é¤¯¤¬¤­ #T35 Êؽê¤ÎÍî½ñ¤­
++¤Ù¤ó¤¼¤ó¤«¤ó #JN ¥Ù¥ó¥¼¥ó´Ä
++¤Ú¡¼¤¸¤Ó¤å¡¼ #T35 ¥Ú¡¼¥¸¥Ó¥å¡¼
++¤Ú¤±¤Ð¤³ #T35 ¥Ú¥±È¢
++¤Ú¤±¤Ü¤Ã¤¯¤¹ #T35 ¥Ú¥±¥Ü¥Ã¥¯¥¹
++¤Ú¤³¤ê #CJ ¤Ú¤³¤ê
++¤Ú¤Ã #CJ ¤Ú¤Ã
++¤Ú¤Ã¤È #T35 ¥Ú¥Ã¥È
++¤Ú¤Ã¤È¤Ü¤È¤ë #T35 ¥Ú¥Ã¥È¥Ü¥È¥ë
++¤Ú¤É #T35 ¥Ú¥É
++¤Ú¤É¤Õ¤£¤ê¤¢ #T35 ¤Ú¤É¤Õ¤£¤ê¤¢
++¤Ú¤É¤Õ¤£¤ê¤¢ #T35 ¥Ú¥É¥Õ¥£¥ê¥¢
++¤Ú¤ä¤ó¤° #JN ¥Ú¥ä¥ó¥°
++¤Ú¤ä¤ó¤° #T35 ¥Ú¥ä¥ó¥°
++¤Ú¤ê¤« #T35 ¥Ú¥ê¥«
++¤Û¡¼¤¹¤¯¤é¤Ã¤·¤ã¡¼ #JN ¥Û¡¼¥¹¥¯¥é¥Ã¥·¥ã¡¼
++¤Û¡¼¤¹¤¯¤é¤Ã¤·¤ã¡¼ #T35 ¥Û¡¼¥¹¥¯¥é¥Ã¥·¥ã¡¼
++¤Û¤¥ #JN ¡ÊŽß¢òŽß¡Ë
++¤Û¤¥ #JN ŽÎŽ©
++¤Û¤¦ #T35 ˤ
++¤Û¤¦¤¨¤¤¤Õ¤ó¤¨¤ó¤í¤¯ #T35 Êõ±ÊÊ®±ìϽ
++¤Û¤¦¤±¤¤ #CN Êñ·Ô
++¤Û¤¦¤±¤¤ #T35 Êñ·Ô
++¤Û¤¦¤¸¤ç¤¦¤â¤Ê¤ë #JN ËÌÛê¥â¥Ê¥ë
++¤Û¤¦¤¹¤¯¤é¤Ã¤·¤ã¤¢ #T35 ¥Û¡¼¥¹¥¯¥é¥Ã¥·¥ã¡¼
++¤Û¤¦¤½¤¯¤«¤¤¤Ò #T35 ˡ§²óÈò
++¤Û¤¦¤Á #T30 ÊüÃÖ
++¤Û¤¦¤Æ¤¤ #JN Ë¡Äî
++¤Û¤«¤ó #T30 ÊÝ´É
++¤Û¤¯¤È¤·¤ó¤±¤ó¤Ç¤ä¤é¤ì¤ë¤â¤Ê¡¼ #JN ËÌÅÍ¿À·ý¤Ç»¦¤é¤ì¤ë¥â¥Ê¡¼
++¤Û¤¯¤Û¤¯¤µ¤Ä¤µ¤Ä #CN ËÌËÌ»¥»¥
++¤Û¤¯¤Û¤¯¤µ¤Ä¤µ¤Ä #T35 ËÌËÌ»¥»¥
++¤Û¤°¤À¤¤ #T35 ¤Û¤°¤À¤¤
++¤Û¤· #T35 À±
++¤Û¤·¤¯¤ó #JN ¡ù¤¯¤ó
++¤Û¤·¤å #T30 Êݼé
++¤Û¤·¤å¤Ï¤¢¤é¤· #CJ Êݼé¤Ï¹Ó¤é¤·
++¤Û¤¹¤£ #CJ ¥Û¥¹¥£¡¦¡¦¡¦
++¤Û¤¹¤£ #CJ ŽÎŽ½Ž¨Ž¥Ž¥Ž¥
++¤Û¤¹¤£ #JN ¥Û¥¹¥£
++¤Û¤¼¤ó #T30 ÊÝÁ´
++¤Û¤Ã¤µ¤ï #T35 ʧÂô
++¤Û¤Ã¤È¤¾¤Ì #KK ¥Û¥Ã¥È¥¾¥Ì
++¤Û¤Ã¤È¤¾¤Ì #T35 ¥Û¥Ã¥È¥¾¥Ì
++¤Û¤Í #JN ¹ü¡¡
++¤Û¤Í¤ª¤¦ #T35 ¹ü²¦
++¤Û¤Î¤ª¤Î¤³¤Þ #T35 ±ê¤Î¥³¥Þ
++¤Û¤à¤¦¤é¤ó #T35 ¥Û¥à¡¼¥é¥ó
++¤Û¤à¤¦¤é¤ó¤¦¤¿¤ì¤Æ #CJ ¥Û¥à¡¼¥é¥óÂǤ¿¤ì¤Æ¡Ä
++¤Û¤á¤Ñ¤² #T35 ¥Û¥á¥Ñ¥²
++¤Û¤é¤è #CJ ¤Û¤é¤è
++¤Û¤ï¤¤¤È¤Ù¡¼¤¹¤«¤ó¤­¤ç¤¦ #JN ¥Û¥ï¥¤¥È¥Ù¡¼¥¹´Ï¶¶
++¤Û¤ó #T35 ËÜ
++¤Û¤ó¤±¤Ê¤° #JN ËܲȤʤ°
++¤Û¤ó¤·¤Ä #T35 ËܼÁ
++¤Û¤ó¤¹¤ì #T35 ËÜ¥¹¥ì
++¤Û¤ó¤¹¤ì¤µ¤ó¤­¤ç¤¦¤À¤¤ #JN ËÜ¥¹¥ì»°·»Äï
++¤Û¤ó¤¹¤ì¤Î¤Ï¤¿ #JN ËÜ¥¹¥ì¤Î´ú
++¤Ü¡¼¤É¤¤¤Á¤é¤ó #T35 ¥Ü¡¼¥É°ìÍ÷
++¤Ü¤¦ #T35 ˼
++¤Ü¤¦¤À #T35 ËÀÂÌ
++¤Ü¤¦¤á¤¤ #T35 Ë´Ì¿
++¤Ü¤ª¤ë¤º #JN ¥Ü¡¼¥ë¥º
++¤Ü¤­¤ó #T30 ¤Ü¤­¤ó
++¤Ü¤¯¤ª¤ó¤Ê #T35 Ëͽ÷
++¤Ü¤¯¤Á¤ó¤«¤ï¤¤¤Á¤å¤®¤À¤ï¤ó #JN ¤Ü¤¯¤Á¤ó¡¢¤«¤ï¤¤¤Á¤å¤®¤À¥ï¥ó¡ª
++¤Ü¤¯¤È¤¦ #JN ÌÚÅá
++¤Ü¤¯¤È¤¦ #T35 ÌÚÅá
++¤Ü¤¯¤Î¤¢¤Ä¤³¤¿¤ó #JN ËͤΤ¢¤Ä¤³¤¿¤ó¡ª
++¤Ü¤¯¤Î¤¢¤Ä¤³¤¿¤ó #JN ËͤΤ¢¤Ä¤³¤¿¤ó¡ª¡³(¡­¡¼`)ŽÉ
++¤Ü¤¯¤Î¤³¤¦¤â¤ó¤â¤Ø¤¤¤µ¤µ¤ì¤½¤¦¤Ç¤¹ #CJ ¥Ü¥¯¤ÎæêÌç¤âÊĺ¿¤µ¤ì¤½¤¦¤Ç¤¹
++¤Ü¤±¤§ #CJ ¥Ü¥±¥§
++¤Ü¤³ #R5 ±ú
++¤Ü¤À #T35 ÊèÂÌ
++¤Ü¤Ã¤­¤¢¤² #JN ¡³(`§¥¡­)¥Î¥Ü¥Ã¥­¥¢¥²
++¤Ü¤Ã¤­¤¢¤² #JN ¡³(`§¥¡­)ŽÉŽÎŽÞŽ¯Ž·Ž±Ž¹ŽÞ
++¤Ü¤Ã¤­¤¢¤² #JN ¥Ü¥Ã¥­¥¢¥² 
++¤Ü¤Ã¤­¤¢¤² #JN ŽÎŽÞŽ¯Ž·Ž±Ž¹ŽÞ 
++¤Ü¤Ã¤­¤¢¤² #T35 ¥Ü¥Ã¥­¥¢¥²
++¤Ü¤Ã¤­¤Æ¤ó¤· #T35 ËÖµ¯Å·»È
++¤Ü¤Ã¤­¤É¤é¤¨¤â¤ó #JN ¤Ü¤Ã¤­¥É¥é¤¨¤â¤ó¡¡
++¤Ü¤Ã¤·¤å¡¼¤È #JN ¥Ü¥Ã¥·¥å¡¼¥È
++¤Ü¤Ç¤£¤¤¤º¤Ó¤¤¤È #T35 ¥Ü¥Ç¥£¡¼¥º¥Ó¡¼¥È
++¤Ü¤Ü¤ó #T35 ¥ÜËß
++¤Ü¤Ü¤ó #T35 ËХܡ¼¥ó
++¤Ü¤Ü¤ó #T35 ËХܥó
++¤Ü¤Ü¤ó¤¹¤ì #T35 ¥Ü¥Ü¥ó¥¹¥ì
++¤Ü¤ß¤ç¤¦ #CJ ¤Ü¤ß¤ç¡¼
++¤Ü¤ß¤ç¤¦ #T35 ¤Ü¤ß¤ç¡¼
++¤Ü¤ë¤¸¤ç¤¢ #JN ¤Ü¤ë¤¸¤ç¤¢¢¡yBEncckFOU
++¤Ü¤ó¤¯¤é¤¹ #T35 ¥Ü¥ó¥¯¥é¥¹
++¤Ü¤ó¤µ¤¤ #T35 ËߺÏ
++¤Ü¤ó¤µ¤¤¤»¤ó¤»¤¤ #T35 ËߺÏÀèÀ¸
++¤Ü¤ó¤Á¤å¤¦ #T35 Ëß¿ß
++¤Ý #CJ ¤Ý
++¤Ý¡¼¤«¤ó #JN ¡Ê¡û¸ý¡û*¡ËŽÎŽßŽ°Ž¶ŽÝ
++¤Ý¡¼¤«¤ó #JN ¥Ý¡¼¥«¥ó
++¤Ý¡¼¤ë¤Þ¤ó #JN ¥Ý¡¼¥ë¥Þ¥ó
++¤Ý¤¢ #T35 ¥Ý¥¢
++¤Ý¤¤¤º¤ó #T35 ¥Ý¥¤¥º¥ó
++¤Ý¤¤¤º¤ó¤¹¤ì #T35 ¥Ý¥¤¥º¥ó¥¹¥ì
++¤Ý¤¨¤¿¤ó #JN ¥Ý¥¨¤¿¤ó
++¤Ý¤¨¤¿¤ó #T35 ¥Ý¥¨¤¿¤ó
++¤Ý¤«¡¼¤ó #CJ (¡¬§Õ¡¬)¥Ý¥«¡¼¥ó
++¤Ý¤«¡¼¤ó #CJ (Žß§ÕŽß)ŽÎŽßŽ¶Ž°ŽÝ
++¤Ý¤«¡¼¤ó #CJ ¥Ý¥«¡¼¥ó
++¤Ý¤«¡¼¤ó #CJ ŽÎŽßŽ¶Ž°ŽÝ
++¤Ý¤«¡¼¤ó #JN (Žß§ÕŽß)ŽÎŽßŽ¶Ž°ŽÝ
++¤Ý¤«¡¼¤ó #JN ¥Ý¥«¡¼¥ó
++¤Ý¤«¡¼¤ó #JN ŽÎŽßŽ¶Ž°ŽÝ
++¤Ý¤³¡¼¤ê #CJ ¥Ý¥³¡¼¥ê
++¤Ý¤³¡¼¤ê #CJ ŽÎŽßŽºŽ°ŽØ
++¤Ý¤¹¤È¤µ¤ó #JN ¥Ý¥¹¥È¤µ¤ó
++¤Ý¤Ã¤Ý #JN ¤Ý¤Ã¤Ý
++¤Ý¤Ã¤Ý #JN ¥Ý¥Ã¥Ý
++¤Ý¤Ã¤Ý #T35 ¤Ý¤Ã¤Ý
++¤Ý¤Ã¤Ý #T35 ¥Ý¥Ã¥Ý
++¤Ý¤ê¤´¤ó¤â¤Ê¡¼ #JN ¡¡¡¡¡¡¥Ý¥ê¥´¥ó¥â¥Ê¡¼
++¤Ý¤ê¤´¤ó¤â¤Ê¡¼ #JN ¥Ý¥ê¥´¥ó¥â¥Ê¡¼
++¤Ý¤ë¤È¤¬¤ë¤´ #T35 Éòƺ²ç¸ì
++¤Ý¤ì #T35 ¥Ý¥ì
++¤Ý¤ó¤­¤ó¤«¤ó #CN ¥Ý¥ó¥­¥ó¥«¥ó
++¤Ý¤ó¤­¤ó¤«¤ó #T35 ¥Ý¥ó¥­¥ó¥«¥ó
++¤Ý¤ó¤À¤¤ #CN ¥Ý¥óÂç
++¤Ý¤ó¤À¤¤ #T35 ¥Ý¥óÂç
++¤Ý¤ó¤Ð¤· #CN ¥Ý¥ó¶¶
++¤Ý¤ó¤Ð¤· #T35 ¥Ý¥ó¶¶
++¤Þ #JN Ëâ
++¤Þ #T35 Ëâ
++¤Þ¡¼¤¬¤ì¤Ã¤È¤¢¤ó¤É¤Õ¤é¤ó¤½¤ï #JN ¥Þ¡¼¥¬¥ì¥Ã¥È¡õ¥Õ¥é¥ó¥½¥ï
++¤Þ¡¼¤·¡¼ #JN ¥Þ¡¼¥·¡¼
++¤Þ¡¼¤º¤ä #JN £Í£Á£Ò£Ó²°
++¤Þ¡¼¤Á #KK ¥Þ¡¼¥Á
++¤Þ¤¡¤¦¡«¤µ¤² #T35 ¡³(`§¥¡­)¥Î¥Þ¥¡¥ô¥µ¥²
++¤Þ¤¡¤¦¡«¤µ¤² #T35 ¡³(`§¥¡­)ŽÉŽÏŽ§Ž³ŽÞŽ»Ž¹ŽÞ
++¤Þ¤¢¤ª¤Á¤Ä¤± #CJ ¤Þ¤¢Íî¤ÁÃ失
++¤Þ¤¢¤ª¤ó¤¿¤¤¤À¤· #CJ ¤Þ¤¢¸æÂç¤À¤·
++¤Þ¤¢¤Á #T35 ¥Þ¡¼¥Á
++¤Þ¤¤¤¦¡¼ #T35 ¥Þ¥¤¥¦¡¼
++¤Þ¤¤¤®¤ç¤¯ #T35 £Í£ù¶Ì
++¤Þ¤¤¤¯¤½¤½¤Õ¤È #T35 ¥Þ¥¤Êµ¥½¥Õ¥È
++¤Þ¤¤¤¿ #CN ¥ÞÈÄ
++¤Þ¤¤¤¿ #T35 ¥ÞÈÄ
++¤Þ¤¤¤¿¤ó¤Ú¤ó¤®¤ó #JN ¤Þ¤¤¤¿¤ó¥Ú¥ó¥®¥ó
++¤Þ¤¤¤Ë¤Ã¤Á #JN ¥Þ¥¤¥Ë¥Ã¥Á¡¡
++¤Þ¤¤¤Ó¤¤¤à #T35 ¥Þ¥¤¥Ó¡¼¥à
++¤Þ¤¤¤ó¤É¤¯¤é¤Ã¤·¤ã¤¢ #T35 ¥Þ¥¤¥ó¥É¥¯¥é¥Ã¥·¥ã¡¼
++¤Þ¤¦ #JN ¥Þ¥¦
++¤Þ¤¦ #T35 ¥Þ¥¦
++¤Þ¤¦¤¹¤Ñ¤Ã¤È #T35 ¥Þ¥¦¥¹¥Ñ¥Ã¥È
++¤Þ¤¨¤¹¤ì #T35 Á°¥¹¥ì
++¤Þ¤¨¤À¤±¤¤¤¸ #JN Á°Åķļ¡
++¤Þ¤ª¡¼ #JN ¥Þ¥ª¡¼
++¤Þ¤ª¤¦¤â¤Ê¤Õ¤¡¡¼ #JN ËⲦ¥â¥Ê¥Õ¥¡¡¼
++¤Þ¤«¡¼ #T35 ¥Þ¥«¡¼
++¤Þ¤«¤¢ #T35 ¥Þ¥«¡¼
++¤Þ¤«¤¤ #T35 Ë⳦
++¤Þ¤«¤Ä #K5 ¤Þ¤«¤Ä
++¤Þ¤«¤Ä¤¯¤Ã¤Æ¤¤¤¦¤«¤­¤â¤¤ #CJ ¤Þ¤«¤Ä¤¯¤Ã¤Æ¤¤¤¦¤«¥­¥â¥¤
++¤Þ¤­¤³ #JNM ¥Þ¥­¥³
++¤Þ¤­¤³ #JNM Ëâµ´»Ò
++¤Þ¤­¤³ #T35 ¥Þ¥­¥³
++¤Þ¤­¤³ #T35 Ëâµ´»Ò
++¤Þ¤­¤Î¤ë¤­ #JN ËÒÌîαɱ
++¤Þ¤°¤Þ¤° #KK ¤Þ¤°¤Þ¤°
++¤Þ¤°¤í #T35 Ëî
++¤Þ¤±¤¤¤Ì #T35 É餱¸¤
++¤Þ¤³¤Ä #T35 Ëâ¹ü
++¤Þ¤³¤È #JN ¿¿
++¤Þ¤³¤Ô¡¼ #JN ¤Þ¤³¤Ô¡¼
++¤Þ¤³¤Ô¡¼ #T35 ¤Þ¤³¤Ô¡¼
++¤Þ¤³¤Ô¤¤ #T35 ¤Þ¤³¤Ô¡¼
++¤Þ¤³¤Ô¤¹¤È #T35 ¤Þ¤³¤Ô¤¹¤È
++¤Þ¤µ¤ª #JNM ¤Þ¤µ¤ª
++¤Þ¤µ¤ª #JNM ¥Þ¥µ¥ª
++¤Þ¤µ¤ª #JNM ÀµÃË
++¤Þ¤µ¤ª #T35 ¤Þ¤µ¤ª
++¤Þ¤µ¤ª #T35 ¥Þ¥µ¥ª
++¤Þ¤µ¤ª #T35 ÀµÃË
++¤Þ¤µ¤à¤Í¡¼¤è¤«¤Ã¤³¤¦¤£¤º¤Ê¤¨¤Ê¤¤¤ï¤È¤¸¤«¤Ã¤³ #JN ¥Þ¥µ¥à¥Í¡¼¥è¡Êwith¡¡¥Ê¥¨¥Ê¥¤¥ï¡Ë
++¤Þ¤µ¤ä #JNM ¥Þ¥µ¥ä
++¤Þ¤µ¤ä #T35 ¥Þ¥µ¥ä
++¤Þ¤µ¤è¤· #JNM ÀµµÁ
++¤Þ¤·¡¼¤Ö #T35 ¥Þ¥·¡¼¥Ö
++¤Þ¤·¤¤¤Ö #T35 ¥Þ¥·¡¼¥Ö
++¤Þ¤·¤ê¤È #JN ¥Þ¥·¥ê¥È
++¤Þ¤·¤ê¤È #T35 ¥Þ¥·¥ê¥È
++¤Þ¤·¤ó¤¤¤é¤Í¤¤¤À¡¼ #JN ¥Þ¥·¥ó¥¤¥é¥Í¥¤¥À¡¼
++¤Þ¤·¤ó¤µ¤ó #CJ ¤Þ¤·¤ó¤µ¤ó¡¦¡¦¡¦
++¤Þ¤¸¤á¤À¤Ê¡¼ #JN ¥Þ¥¸¥á¥À¥Ê¡¼
++¤Þ¤¸¤ì¤¹ #T30 ¥Þ¥¸¥ì¥¹
++¤Þ¤¸¤ì¤¹¤Þ¤ó #JN ¥Þ¥¸¥ì¥¹¥Þ¥ó
++¤Þ¤¸¤ò¤¿ #T35 ¥Þ¥¸¥ò¥¿
++¤Þ¤¹¤ª #JNM ¥Þ¥¹¥ª
++¤Þ¤¹¤ª #T35 ¥Þ¥¹¥ª
++¤Þ¤¹¤´¤ß #T35 ¥Þ¥¹¥´¥ß
++¤Þ¤¹¤¿ #SUC ¤Þ¤¹¤¿
++¤Þ¤¹¤¿¡¼¤¤¤Ä¤â¤Î¤¿¤Î¤à #CJ ¥Þ¥¹¥¿¡¼¡¢¤¤¤Ä¤â¤Î¤¿¤Î¤à
++¤Þ¤º¤¦ #CJ ¥Þ¥º¡¼
++¤Þ¤º¤¦ #CJ ŽÏŽ½ŽÞŽ°
++¤Þ¤º¤¸¤å¡¼ #T35 ¤Þ¤º¥¸¥å¡¼
++¤Þ¤½¤³ #T35 ¥Þ¥½¥³
++¤Þ¤¿ #CJ ¤Þ¤¿¡©
++¤Þ¤¿¡¼¤ê #T30 ¥Þ¥¿¡¼¥ê
++¤Þ¤¿¡¼¤ê #T30 ¥Þ¥¿¡Á¥ê
++¤Þ¤¿¡¼¤ê¤­¤ã¤é¤®¤ã¤¯¤µ¤Ä¤È¤¦ #KK ¥Þ¥¿¡¼¥ê¥­¥ã¥éµÔ»¦ÅÞ
++¤Þ¤¿¡¼¤ê¤­¤ã¤é¤®¤ã¤¯¤µ¤Ä¤È¤¦¤¢¤é¤· #JN ¥Þ¥¿¡¼¥ê¥­¥ã¥éµÔ»¦Å޹Ӥ餷
++¤Þ¤¿¡¼¤ê¤­¤ã¤é¤®¤ã¤¯¤µ¤Ä¤È¤¦¤½¤¦¤¹¤¤ #JN ¥Þ¥¿¡¼¥ê¥­¥ã¥éµÔ»¦ÅÞÁí¿ã
++¤Þ¤¿¡¼¤ê¤´¤¦ #JN MATAARI¹æ
++¤Þ¤¿¡¼¤ê¤Ê¤ä¤·¤ç¤¯¤ò¤Ä¤¯¤í¤¦ #JN ¥Þ¡¼¥¿¥ê¤ÊÌë¿©¤òºî¤í¤¦
++¤Þ¤¿¡¼¤ê¤á¤À¤ë #JN ¥Þ¥¿¡¼¥ê¥á¥À¥ë
++¤Þ¤¿¡¼¤ê¤á¤À¤ë #JN ŽÏŽÀŽ°ŽØŽÒŽÀŽÞŽÙ
++¤Þ¤¿¤¢¤ê¤¹¤ì #T35 ¥Þ¥¿¡¼¥ê¥¹¥ì
++¤Þ¤¿¤¢¤ê¤Á¤å¤¦ #T35 ¥Þ¥¿¡¼¥ê¿ß
++¤Þ¤¿¤ª¤ª¤µ¤«¤« #CJ ¤Þ¤¿Âçºå¤«
++¤Þ¤¿¤ª¤ª¤µ¤«¤ä #CJ ¤Þ¤¿Âçºå¤ä
++¤Þ¤¿¤Ê¤¬¤¿¤¹¤ì¤« #CJ ¤Þ¤¿±ÊÅÄ¥¹¥ì¤«
++¤Þ¤À¤à #JN ¥Þ¥À¥à
++¤Þ¤Á¤Ó¡¼¤Ó¡¼¤¨¤¹ #KK ¤Þ¤ÁBBS
++¤Þ¤Á¤Ó¤¤¤Ó¤¤¤¨¤¹ #T35 ¤Þ¤ÁBBS
++¤Þ¤Ã¤¿¤ê #T30  ¥Þ¥Ã¥¿¥ê
++¤Þ¤Ã¤¿¤ê #T30 ¤Þ¤Ã¤¿¤ê
++¤Þ¤Ã¤Á¤ç¤â¤Ê¡¼ #JN ¥Þ¥Ã¥Á¥ç¥â¥Ê¡¼
++¤Þ¤Ä¤¤ #T35 ¾¾°æ
++¤Þ¤Ä¤¿¤±¤³ #JN ¾¾¤¿¤±»Ò
++¤Þ¤Ä¤À¤¤¤é #T35 ¾¾Ê¿
++¤Þ¤Ä¤À¤¿¤«¤È #JN ¾¾ÅÄ·¼¿Í
++¤Þ¤Ä¤ê #T35 º×¤ê
++¤Þ¤Ä¤ê¤¢¤­¤¿ #JN º×¤êË°¤­¤¿
++¤Þ¤Ä¤ê¤À¤È¤Ä¤²¤­¤À #JN º×¤ê¤À¢öÆÍ·â¤À¡ª
++¤Þ¤Å #T35 ¥Þ¥Å
++¤Þ¤È¤Ð¤Õ¤ß¤ª #JN Ū¾ìʸÃË
++¤Þ¤É¤« #T35 ¥Þ¥É¥«
++¤Þ¤É¤Ä¤«¤¤ #T35 Áë»È¤¤
++¤Þ¤Ë¡¼ #JN ¥Þ¥Ë¡¼¡¡
++¤Þ¤Ë¡¼¤¯¤Þ¤Ã¤·¤å¤ë¡¼¤à #JN ¥Þ¥Ë¡¼¥¯¥Þ¥Ã¥·¥å¥ë¡¼¥à
++¤Þ¤Ë¡¼¤¯¤Þ¤Ã¤·¤å¤ë¡¼¤à #JN ¥Þ¥Ë¡¼¥¯¥Þ¥Ã¥·¥å¥ë¡¼¥à 
++¤Þ¤Ò¤£¤¢ #JN ¥Þ¥Ò¥£¥¢
++¤Þ¤Ò¤£¤¢ #JN ŽÏŽËŽ¨Ž±
++¤Þ¤Ò¤£¤¢ #T35 ¥Þ¥Ò¥£¥¢
++¤Þ¤Ò¤£¤¢¤£¤ç¤¥ #JN ¥Þ¥Ò¥£¥¢¤£¤ç¤¥
++¤Þ¤Ò¤£¤¢¤£¤ç¤¥ #JN ŽÏŽËŽ¨Ž±¤£¤ç¤¥
++¤Þ¤Û¤¦¤Ä¤«¤¤ #T35 ËâË¡»È¤¤
++¤Þ¤Ü¤ó #T35 Ëõ¥Ü¡¼¥ó
++¤Þ¤Ü¤ó #T35 Ëõ¥Ü¥ó
++¤Þ¤Ý¡¼¤é #CJ ¥Þ¥Ý¡¼¥é
++¤Þ¤Þ #CJ ¡Ê¡­§Õ¡®¡Ë¥Þ¥Þ¡¦¡¦¡¦
++¤Þ¤Þ #CJ ¡Ê¡­§Õ¡®¡ËŽÏŽÏ¡¦¡¦¡¦
++¤Þ¤Þ #JN ¡Ê¡­§Õ¡®¡Ë¥Þ¥Þ¡¦¡¦¡¦
++¤Þ¤Þ #JN ¡Ê¡­§Õ¡®¡ËŽÏŽÏ¡¦¡¦¡¦
++¤Þ¤Þ¤´¤ó #T35 ¥Þ¥Þ¥´¥ó
++¤Þ¤Þ¤â¤Ê¡¼¤»¤¤¤Á¤ç¤¦¤º #JN ¥Þ¥Þ¥â¥Ê¡¼À®Ä¹¿Þ
++¤Þ¤Þ¤ó #JN ¥Þ¥Þ¥ó
++¤Þ¤Þ¤ó #T35 ¥Þ¥Þ¥ó
++¤Þ¤à¤³ #T35 ¥Þ¥à¥³
++¤Þ¤á #T35 Ʀ
++¤Þ¤é¤¤¤¢¤ó #JN ¥Þ¥é¥¤¥¢¥ó
++¤Þ¤é¤¹¤¿¡¼ #JN ¥Þ¥é¡¦¥¹¥¿¡¼
++¤Þ¤é¤Í¡¼¤è #JN ¥Þ¥é¥Í¡¼¥è
++¤Þ¤é¤Ü¤¦ #JN ¥Þ¥éË·
++¤Þ¤é¤ß #JN ¥Þ¥éÈþ
++¤Þ¤é¤é¡¼ #JN ¥Þ¥é¥é¡¼
++¤Þ¤é¤é¡¼¤À¤ó¤µ¡¼¤º #JN ¥Þ¥é¥é¡¼¥À¥ó¥µ¡¼¥º
++¤Þ¤é¤é¤É¤Î #JN ¥Þ¥é¥éÅÂ
++¤Þ¤é¤ê¡¼¤Þ¤ó #JN ¥Þ¥é¥ê¡¼¥Þ¥ó
++¤Þ¤ê¤â #JN ÝÜÁô
++¤Þ¤ê¤â #T35 ¤Þ¤ê¤â
++¤Þ¤ë¤¤¤±¤¤ #T35 ´Ý°æ·Ï
++¤Þ¤ë¤¹¤ä #JN £Í£Á£Ò£Ó²°
++¤Þ¤ë¤Á #JN ¥Þ¥ë¥Á
++¤Þ¤ë¤Á #T35 ¥Þ¥ë¥Á
++¤Þ¤ë¤Á¤Ý¤¹¤È #T30 ¥Þ¥ë¥Á¥Ý¥¹¥È
++¤Þ¤ë¤ß #JN ±ßÈþ
++¤Þ¤ë¤ß¤ß¤â¤Ê¡¼ #JN ´Ý¼ª¥â¥Ê¡¼
++¤Þ¤í¤ó #T35 ¥Þ¥í¥ó
++¤Þ¤ï¤·¤®¤³ #JN ¤Þ¤ï¤·¥®¥³
++¤Þ¤ó #T35 Ëþ
++¤Þ¤ó¤¤¤ó¤Ç¤ó¤·¤ã #JN Ëþ°÷ÅżÖ
++¤Þ¤ó¤¬¤Í¤¿¤¹¤ì #T35 Ì¡²è¥Í¥¿¥¹¥ì
++¤Þ¤ó¤­¤ó¤¨¤°¤¼ #T35 ¥Þ¥ó¥­¥óEXE
++¤Þ¤ó¤®¤ã¤ë #T35 ¥Þ¥ó¥®¥ã¥ë
++¤Þ¤ó¤º¤ê #T35 ÒÄ¥º¥ê
++¤Þ¤ó¤»¡¼ #CJ ¥Þ¥ó¥»¡¼
++¤Þ¤ó¤»¡¼¤á¡¼¤¿¡¼ #T35 ¥Þ¥ó¥»¡¼¥á¡¼¥¿¡¼
++¤Þ¤ó¤»¤¨¤á¤¨¤¿¤¢ #T35 ¥Þ¥ó¥»¡¼¥á¡¼¥¿¡¼
++¤Þ¤ó¤É¤¯¤»¤¨ #CJ ¥Þ¥ó¥É¥¯¥»¡¼
++¤Þ¤ó¤Ü¤¦ #JN ¥Þ¥ó¥Ü¥¦
++¤ß¡¼¤È¤Ü¡¼¤ë #JN ¥ß¡¼¥È¥Ü¡¼¥ë
++¤ß¤¤¤Ë¤ã¤¢¤¿¤ó #T35 ¥ß¡¼Æó¥ã¡¼¤¿¤ó
++¤ß¤¦¤Ê #JN ¤ß¤¦¤Ê
++¤ß¤«¤« #KK ¤ß¤«¤«
++¤ß¤«¤« #T35 ¤ß¤«¤«
++¤ß¤«¤É¤¢¤ó #JN ¤ß¤«¤É°Ã
++¤ß¤«¤É¤¢¤ó¤Ê¤¤¤Ö #JN ¤ß¤«¤É°ÃÆâÉô
++¤ß¤­¡¼¤ª #JN ¥ß¥­¡¼¥ª
++¤ß¤®¤Æ¤Ç¤«¤­¤Þ¤·¤¿ #CJ ±¦¼ê¤Ç½ñ¤­¤Þ¤·¤¿
++¤ß¤®¤Ò¤² #T35 ±¦¤Ò¤²
++¤ß¤³¤ß¤³¤Ê¤¢¤¹ #KK Öà½÷¤ß¤³¥Ê¡¼¥¹
++¤ß¤µ¤«¤«¤ª¤ê #T35 Èþºä¹áΤ
++¤ß¤·¤ã¤â¤Ê¡¼ #JN Èþ¼Ó¥â¥Ê¡¼
++¤ß¤·¤ç¤¯¤¯¤ó #T35 ̤¿©·¯
++¤ß¤¹¤º¤â¤Ê¡¼ #JN ´ÑÎë¥â¥Ê¡¼
++¤ß¤¹¤¿¡¼¤Û¤¥ #JN Mr.ŽÎŽ©
++¤ß¤º¤´¤ê¤é #JN ¿å¥´¥ê¥é
++¤ß¤º¤´¤ê¤é #T35 ¿å¥´¥ê¥é
++¤ß¤¾¤Í¤º¤ß #JN ¹ÂÁÍ
++¤ß¤¾¤Í¤º¤ß #T35 ¹ÂÁÍ
++¤ß¤¿¤é¤¤¤Ò¤í¤­ #T35 ¸æ¼êÀöÊØ´ï
++¤ß¤Á¤å #JN (*'-'*)
++¤ß¤Á¤å #JN ¤ß¤Á¤å
++¤ß¤Ã¤·¡¼ #JN ¤ß¤Ã¤·¡¼
++¤ß¤Ã¤·¡¼ #T35 ¤ß¤Ã¤·¡¼
++¤ß¤Ã¤·¤¤ #T35 ¤ß¤Ã¤·¡¼
++¤ß¤Ã¤Õ¤£¡¼¤ª¤ä¤³ #JN ¥ß¥Ã¥Õ¥£¡¼¿Æ»Ò
++¤ß¤Ä¤´¤í #T35 £³£²£µ£¶
++¤ß¤Ä¤ß #T35 £³£²£³
++¤ß¤Ä¤ß¤â¤Ê¡¼ #JN £³£²£³¥â¥Ê¡¼
++¤ß¤É¤Í¤¨ #T35 ¥ß¥É°¹
++¤ß¤É¤ê¤¬¤¨¤ë #T35 Îг¿
++¤ß¤Ê¡¼ #JN ¥ß¥Ê¡¼
++¤ß¤Ê¤»¤Ê¤æ¤­ #JN ¿åÀ¥Ì¾Àã
++¤ß¤Ê¤»¤Ê¤æ¤­ #T35 ¿åÀ¥Ì¾Àã
++¤ß¤Ê¤Å¤­¤¸¤ç¤¦¤Û¤¦¤Ú¡¼¤¸ #KK ¿å̵·î¾ðÊó¥Ú¡¼¥¸
++¤ß¤Ê¤Ý¤ó #T35 ¤ß¤Ê¤Ý¤ó
++¤ß¤Ê¤ß¤Á¤ç¤ó #T35 Æî¥Á¥ç¥ó
++¤ß¤Ê¤ß¤â¤ê¤Þ¤Á #KK ÆĮ
++¤ß¤Ê¤ß¤â¤ê¤Þ¤Á #T35 ÆĮ
++¤ß¤Ê¤â¤È #T35 ¥ß¥Ê¤â¤È
++¤ß¤Ê¤â¤È¤µ¤ó #JN ¸»¤µ¤ó
++¤ß¤Ë¤®¤³ #JN ¥ß¥Ë¥®¥³
++¤ß¤Ë¤â¤é #JN ¥ß¥Ë¥â¥é
++¤ß¤Î¤ï #T35 ̧ÎØ
++¤ß¤ß¤º¤ä¤µ¤ó #T35 ¥ß¥ß¥º²°¤µ¤ó
++¤ß¤ß¤Ê¤·¤â¤Ê¡¼ #JN ¼ª¤Ê¤·¥â¥Ê¡¼
++¤ß¤à¤é #JNS »°Â¼
++¤ß¤à¤é #T35 »°Â¼
++¤ß¤ã¤¢¤À¤¤ #T35 ¤ß¤ã¡ÁÂç
++¤ß¤ã¤Ã¤¯ #JN ¥ß¥ã¥Ã¥¯
++¤ß¤ç¤¥ #JN ¤ß¤ç¤¥
++¤ß¤è¤¦ #JN ¤ß¤ç¤¥
++¤ß¤é¤¤¤Ë¤Ã¤­ #T35 ̤ÍèÆüµ­
++¤ß¤ë¤¯¤«¤Õ¤§ #T35 ¥ß¥ë¥¯¥«¥Õ¥§
++¤ß¤ó¤É #T35 ̱ÅÙ
++¤ß¤ó¤Ê¡¼¤ª¤Á¤±¤Ä¡¼ #JN ¤ß¤ó¤Ê¡¼¤ª¤Á¤±¤Ä¡¼
++¤ß¤ó¤Ê¤«¤é¤Î¤ª¤Í¤¬¤¤ #T35 ¤ß¤ó¤Ê¤«¤é¤Î¤ª¤Í¤¬¤¤
++¤à¤¤¤¿ #CN ¥àÈÄ
++¤à¤¥ #JN ¤à¤¥
++¤à¤«¡¼¤Ç #JN ¥à¥«¡¼¥Ç
++¤à¤«¤Ä¤¯¤Í¤ó #JN ¥à¥«¤Ä¤¯Ç°
++¤à¤®¤å¡¼ #JN ¥à¥®¥å¡¼
++¤à¤±¤é¡¼ #JN ¥à¥±¥é¡¼
++¤à¤·¤«¤´ #T35 ÃîäÆ
++¤à¤·¤Ð¡¼ #JN ¥à¥·¥Ð¡¼
++¤à¤·¤å¤¦ #T35 ̵½­
++¤à¤·¤ç¤¯ #T35 ̵¿¦
++¤à¤¸¤ë¤· #T35 ̵°õ
++¤à¤¹¡¼¤Ë¤ç #JN ¥à¥¹¡¼¥Ë¥ç
++¤à¤¹¤« #T35 ¥à¥¹¥«
++¤à¤Ã¤¯ #JN ¥à¥Ã¥¯
++¤à¤Í¤ª #JNM ¥à¥Í¥ª
++¤à¤Í¤ª #T35 ¥à¥Í¥ª
++¤à¤Í¤ª¤Ï¤¦¤¹ #T35 ¥à¥Í¥ª¥Ï¥¦¥¹
++¤à¤Í¤ò #JN ¥à¥Í¥ò
++¤à¤Í¤ò #JNM ¥à¥Í¥ò
++¤à¤Í¤ò #T35 ¥à¥Í¥ò
++¤à¤Ï¤¡ #JN ¡ÊŽß§¥Žß¡¡¡Ë¥à¥Ï¥¡
++¤à¤Ï¤¡ #JN ¥à¥Ï¥¡
++¤à¤é¤µ¤­ #JN »ç
++¤à¤é¤µ¤­ #T35 »ç
++¤à¤é¤µ¤­¤À #CJ »ç¤À
++¤à¤é¤Î¤·¤ó¤Ü¤ë #JN ¼¤Î¥·¥ó¥Ü¥ë
++¤à¤ê¤À¡¼¤è #JN ¥à¥ê¥À¡¼¥è
++¤à¤ê¤À¡¼¤è #JN ŽÑŽØŽÀŽÞŽ°ŽÖ
++¤á¡¼¤ë¤Ü¤à #T35 ¥á¡¼¥ë¥Ü¥à
++¤á¤¢¤ê¤£ #T35 ¥á¥¢¥ê¥£¡¢¡º¥¢¥ê¥£
++¤á¤¢¤ê¤£¤Î¤Í¤Ä¤¾¤¦¤ì¤¹ #T35 ¥á¥¢¥ê¥£¤ÎÙÔ¤¥ì¥¹¡¢¡º¥¢¥ê¥£¤ÎÙÔ¤¥ì¥¹
++¤á¤¤¤¸ #CN ÌÀ¼£
++¤á¤¤¤¸ #T35 ­í
++¤á¤¤¤¹¤ì #T35 ̾¥¹¥ì
++¤á¤¤¤¹¤ì¤Î¤ª¤«¤ó #CJ ̾¥¹¥ì¤Î°­´¨
++¤á¤¤¤¹¤ì¤Î¤è¤«¤ó #CJ ̾¥¹¥ì¤Îͽ´¶
++¤á¤¤¤Æ¤Ä #T35 ÌÂÅ´
++¤á¤¤¤Ì¤ì¤Î¤è¤«¤ó #CJ ³Æ¥Ì¥ì¤ÎÌ·´¶
++¤á¤¤¤×¤ë¤·¤í¤Ã¤× #T35 MapleSyrup
++¤á¤¤¤è¤Ø¤ó¤¸¤ç¤¦ #CJ ̾ÍÀÊÖ¾å
++¤á¤¤¤ë¤Ü¤à #T35 ¥á¡¼¥ë¥Ü¥à
++¤á¤¨¤Æ¤ë¤¹¤ì #T35 ¥á¡¼¥Æ¥ë¥¹¥ì
++¤á¤«¡¼ #JN ŽÒŽ¶Ž°
++¤á¤«¤¤¤è¤¦ #JN ¥á¥«¤£¤ç¤¥
++¤á¤«¤¦¤Þ¡¼ #JN ŽÒŽ¶Ž³ŽÏŽ°¡ÊŽÒŽ¶Ž°¡Ë
++¤á¤«¤ª¤È¤¿¤± #JN ¥á¥«ZÉð
++¤á¤«¤ª¤Ë¤®¤ê #JN ¥á¥«¤ª¤Ë¤®¤ê
++¤á¤«¤«¤á¤â¤Ê¡¼ #JN ¥á¥«¥«¥á¥â¥Ê¡¼
++¤á¤«¤®¤³ #JN ¥á¥«¥®¥³
++¤á¤«¤²¤é¤é¡¼ #JN ¥á¥«¥²¥é¥é¡¼
++¤á¤«¤·¤é¤Í¡¼¤è #JN ¥á¥«¥·¥é¥Í¡¼¥è
++¤á¤«¤¸¤¨¤ó #JN [¡¦»®¡¦¡§]
++¤á¤«¤¸¤¨¤ó #JN ŽÒŽ¶Ž¼ŽÞŽ´ŽÝ
++¤á¤«¤»¤¤¤È #JN ¥á¥«À¸ÅÌ
++¤á¤«¤½¤¦¤Ç¤â¤Ê¤¤¤è #JN ¥á¥«¤½¤¦¤Ç¤â¤Ê¤¤¤è
++¤á¤«¤½¤é¤Í¡¼¤è #JN ¥á¥«¥½¥é¥Í¡¼¥è
++¤á¤«¤¾¤Ì #JN ¥á¥«¤¾¤Ì
++¤á¤«¤È¤±¤Í¡¼¤è #JN [:Žß/|Žß:]ŽÄŽ¹ŽÈŽ°ŽÖ
++¤á¤«¤È¤±¤Í¡¼¤è #JN ¥á¥«¥È¥±¥Í¡¼¥è
++¤á¤«¤Õ¤§¤é¡¼¤Á¤ç #JN ¥á¥«¥Õ¥§¥é¡¼¥Á¥ç
++¤á¤«¤â¤¦¤³¤Í¤§¤è #JN ¥á¥«ŽÓŽ³ŽºŽÈŽªŽÖ!
++¤á¤«¤â¤Ê¡¼ #JN ¥á¥«¥â¥Ê¡¼
++¤á¤¬¤¨¤ë #JN ¥á¥¬¥¨¥ë
++¤á¤¬¤Ó #KK ¥á¥¬¥Ó
++¤á¤¬¤Ó #T35 ¥á¥¬¥Ó
++¤á¤¬¤ß #T35 ½÷¿À
++¤á¤®¤Î¤¬¤Ç #JN ¥á¡¦¥®¥Î¥¬¡¦¥Ç
++¤á¤± #T35 ¤á¤±
++¤á¤±¤Ã #T35 ¤á¤±¤Ã
++¤á¤±¤ò¤ß¤È¤á¤ë #CJ ¤á¤±¤òǧ¤á¤ë
++¤á¤·¤À¤¤ #T35 ¤á¤·Âç
++¤á¤¹¤Ö¤¿ #T35 »óÆÚ
++¤á¤½¤Ð¡¼ #T35 ¥á¥½¥Ð¡¼
++¤á¤½¤Ð¤¢ #T35 ¥á¥½¥Ð¡¼
++¤á¤¾¤·¤ã¡¼¤ê¡¼ #KK ¥á¥¾¥·¥ã¡¼¥ê¡¼
++¤á¤¾¤·¤ã¡¼¤ê¡¼ #T35 ¥á¥¾¥·¥ã¡¼¥ê¡¼
++¤á¤¾¤·¤ã¤¢¤ê¤¤ #T35 ¥á¥¾¥·¥ã¡¼¥ê¡¼
++¤á¤¿¤ê¤« #T35 ¥á¥¿¥ê¥«
++¤á¤¿¤ê¤Ã¤¯ #KK ¤á¤¿¤ê¤Ã¤¯
++¤á¤À¤Þ #T35 ÌܶÌ
++¤á¤Ç¤Æ¡¼¤è #JN ¥á¥Ç¥Æ¡¼¥è
++¤á¤Ê¤· #JN Ìܤʤ·
++¤á¤à¤Ð¡¼ #T35 ¥á¥à¥Ð¡¼
++¤á¤â¤é¡¼ #JN ¥á¥â¥é¡¼
++¤á¤ê¤±¤ó¤Æ¤ó¤·¤µ¤é #JN ¥á¥ê¥±¥óÅ·»È¡ù¥µ¥é¡ª
++¤á¤ê¤ë¤·¤£¤ë¤Ð¡¼¤Ð¡¼¤° #JN ¥á¥ê¥ë¡¦¤·¤£¥ë¥Ð¡¼¥Ð¡¼¥°
++¤á¤ë¤Ø¤ó #T35 ¥á¥ë¥Ø¥ó
++¤á¤ë¤Ø¤ó¤¤¤¿ #T35 ¥á¥ë¥Ø¥óÈÄ
++¤á¤ë¤Þ¤¬ #T35 ¥á¥ë¥Þ¥¬
++¤á¤í¤¹¤Ñ¡¼ #T35 ¥á¥í¥¹¥Ñ¡¼
++¤á¤í¤¹¤Ñ¤¢ #T35 ¥á¥í¥¹¥Ñ¡¼
++¤á¤í¤ó #T35 ¥á¥í¥ó
++¤á¤ó #T35 ÌÍ
++¤á¤ó¤¿¤ë¤Ø¤ë¤¹¤¤¤¿ #T35 ¥á¥ó¥¿¥ë¥Ø¥ë¥¹ÈÄ
++¤á¤ó¤Æ #T30 ¥á¥ó¥Æ
++¤á¤ó¤É¤¯¤»¤§ #JN ¥á¥ó¥É¥¯¥»¥§
++¤á¤ó¤É¤¯¤»¤§¤»¤¤¤È #JN ŽÒŽÝŽÄŽÞŽ¸Ž¾ŽªÀ¸ÅÌ
++¤á¤ó¤Ð¡¼ #T35 ¥á¥ó¥Ð¡¼
++¤á¤ó¤Ð¤¢ #T35 ¥á¥ó¥Ð¡¼
++¤á¤ó¤Ø¤é¤¢ #T35 ¥á¥ó¥Ø¥é¡¼
++¤á¤ó¤Ø¤ë¤¤¤¿ #T35 ¥á¥ó¥Ø¥ëÈÄ
++¤á¤ó¤Ü¤¦ #T35 ¤á¤ó¤Ü¤¦
++¤â¡¼¤¤¤¿ #CN ¥â¡¼ÈÄ
++¤â¡¼¤¤¤¿ #T35 ¥â¡¼ÈÄ
++¤â¡¼¤³¡¼ #CN ¥â¡¼¥³¡¼
++¤â¡¼¤³¡¼ #T35 ¥â¡¼¥³¡¼
++¤â¡¼¤Ë¤ó¤°¤³¡¼¤Ò¡¼ #CN ¥â¡¼¥Ë¥ó¥°¥³¡¼¥Ò¡¼
++¤â¡¼¤Ë¤ó¤°¤³¡¼¤Ò¡¼ #KK ¥â¡¼¥Ë¥ó¥°¥³¡¼¥Ò¡¼
++¤â¡¼¤Ë¤ó¤°¤à¤¹¤á #JN ¥â¡¼¥Ë¥ó¥°Ì¼¡£
++¤â¡¼¤Ë¤ó¤°¤à¤¹¤á¤¤¤¿ #CN ¥â¡¼¥Ë¥ó¥°Ì¼¡£ÈÄ
++¤â¤¢¤ê #T35 ÁôÍ­
++¤â¤¤¤¿ #CN ¥âÈÄ
++¤â¤¤¤¿ #T35 ¥âÈÄ
++¤â¤¦¤¤¤¿ #T35 ¥â¡¼ÈÄ
++¤â¤¦¤ª¤³¤Ã¤¿¤¾¤¦ #JN ¤â¤¦Åܤä¿¥¾¥¦
++¤â¤¦¤²¤ó #T35 ÌѸÀ
++¤â¤¦¤³¤¦ #T35 ¥â¡¼¥³¡¼
++¤â¤¦¤³¤Í¤¨¤è  #JN ¡³(`§¥¡­)ŽÉ¤â¤¦Íè¤Í¤¨¤è
++¤â¤¦¤³¤Í¤¨¤è #CJ ¡³(`§¥¡­)¥Î¤â¤¦Íè¤Í¤¨¤è¡ª
++¤â¤¦¤³¤Í¤¨¤è #CJ ¡³(`§¥¡­)¥Î¤â¤¦Íè¤Í¤¨¤è¡ª¥¦¥ï¥¡¥¡¥ó 
++¤â¤¦¤³¤Í¤¨¤è #CJ ¡³(`§¥¡­)ŽÉ¤â¤¦Íè¤Í¤¨¤è¡ª
++¤â¤¦¤³¤Í¤¨¤è #CJ ¡³(`§¥¡­)ŽÉ¤â¤¦Íè¤Í¤¨¤è¡ªŽ³ŽÜŽ§Ž§ŽÝ 
++¤â¤¦¤³¤Í¤¨¤è #CJ ¤â¤¦Íè¤Í¤¨¤è¡ª
++¤â¤¦¤³¤Í¤¨¤è #JN ¡³(`§¥¡­)¥Î¤â¤¦Íè¤Í¤¨¤è¡ª¥¦¥ï¥¡¥¡¥ó 
++¤â¤¦¤³¤Í¤¨¤è #JN ¡³(`§¥¡­)ŽÉ¤â¤¦Íè¤Í¤¨¤è¡ªŽ³ŽÜŽ§Ž§ŽÝ 
++¤â¤¦¤³¤Í¤¨¤è #JN ¥â¥¦¥³¥Í¥¨¥è!!¥¦¥ï¥¡¥¡¥ó!¥â¥¦¥³¥Í¥¨¥è!!¥¦¥ï¥¡¥¡¥ó!¥â¥¦¥³¥Í¥¨¥è!!¥¦¥ï¥¡¥¡¥ó!
++¤â¤¦¤³¤Í¤¨¤è #JN ŽÓŽ³ŽºŽÈŽ´ŽÖ!!Ž³ŽÜŽ§Ž§ŽÝ!ŽÓŽ³ŽºŽÈŽ´ŽÖ!!Ž³ŽÜŽ§Ž§ŽÝ!ŽÓŽ³ŽºŽÈŽ´ŽÖ!!Ž³ŽÜŽ§Ž§ŽÝ!
++¤â¤¦¤³¤Í¤¨¤è¤¦¤ï¤¡¤¡¤ó  #JN ¡³(`§¥¡­)ŽÉ¤â¤¦Íè¤Í¤¨¤è¡ªŽ³ŽÜŽ§Ž§ŽÝ 
++¤â¤¦¤½¤¦¤½¤¦ #CJ ¤â¤¦¤½¤¦¤½¤¦
++¤â¤¦¤¿¤¢¤ª¤È¤³ #T35 ¥â¡¼¥¿¡¼ÃË
++¤â¤¦¤¿¤¢¤µ¤¤¤¯¤ë #T35 ¥â¡¼¥¿¡¼¥µ¥¤¥¯¥ë
++¤â¤¦¤¿¤Í¤Ý #CJ ¤â¤¦¤¿¤Í¤Ý
++¤â¤¦¤À¤á¤Ý #CJ ¤â¤¦¤À¤á¤Ý
++¤â¤¦¤À¤á¤Ý #T35 ¤â¤¦¤À¤á¤Ý
++¤â¤¦¤Ë¤ó¤°¤³¤¦¤Ò¤¤ #T35 ¥â¡¼¥Ë¥ó¥°¥³¡¼¥Ò¡¼
++¤â¤¦¤ß¤º¤Ý #CJ ¤â¤¦¤ß¤º¤Ý
++¤â¤¦¤ß¤º¤Ý #T35 ¤â¤¦¤ß¤º¤Ý
++¤â¤¦¤â¤¦ #CJ ¤â¡¼¤â¡¼
++¤â¤¨ #KS ˨¤¨
++¤â¤¨ #T35 ˨¤¨
++¤â¤ª¤Î¤­ #T35 ¥â¥ª¥Î¥­
++¤â¤«¡¼ #JN ¥â¥«¡¼
++¤â¤¬¤ì¤¿¤¯¤ó #JN ¥â¥¬¥ì¥¿·¯
++¤â¤¯¤²¤­¤É¤­¤å¤ó #KK ÌÜ·â¥É¥­¥å¥ó
++¤â¤±¤± #JN ¥â¥±¥±
++¤â¤±¤± #JN ŽÓŽ¹Ž¹
++¤â¤³¤¿ #JN ¤â¤³ÂÀ
++¤â¤·¤½¤¦¤ê #JNS ¿¹ÁíÍý
++¤â¤·¤½¤¦¤ê #JNSUC ¿¹ÁíÍý
++¤â¤¸¤ì¤¹ #T35 ʸ»ú¥ì¥¹
++¤â¤¹¤é¡¼ #JN ¥â¥¹¥é¡¼
++¤â¤» #T35 ¤â¤»
++¤â¤»¤¢ #T35 ¤â¤»¤¢
++¤â¤¿¤ª #T35 ¥â¥¿ÃË
++¤â¤Ã¤³¤ê¡¼¤Ê #JN ¥â¥Ã¥³¥ê¡¼¥Ê
++¤â¤Ã¤Á¡¼ #JN ¥â¥Ã¥Á¡¼
++¤â¤Ã¤Á¡¼ #T35 ¥â¥Ã¥Á¡¼
++¤â¤Ã¤Á¤¤ #T35 ¤â¤Ã¤Á¡¼
++¤â¤Ã¤Á¤¤ #T35 ¥â¥Ã¥Á¡¼
++¤â¤Æ¤Í¡¼¤è #JN ¥â¥Æ¥Í¡¼¥è
++¤â¤È¤«¤¤¤¾¤¯¤Î¤Ä¤ê¤­¤Á¤µ¤«¡¼¤Ê #JN ¸µ³¤Â±¤ÎÄà¤ê´ðÃÏ¥µ¥«¡¼¥Ê
++¤â¤È¤«¤¤¤¾¤¯¤Î¤Ä¤ê¤­¤Á¤µ¤«¡¼¤Ê¤È¤½¤Î¤³¤Ö¤ó¤¿¤Á #JN ¸µ³¤Â±¤ÎÄà¤ê´ðÃÏ¥µ¥«¡¼¥Ê¤È¤½¤Î»Òʬ¤¿¤Á 
++¤â¤Ê¡¼ #JN ¥â¥Ê¡¼
++¤â¤Ê¡¼¤¦¡¼¤Þ¤ó #JN ¥â¥Ê¡¼¥¦¡¼¥Þ¥ó
++¤â¤Ê¡¼¤«¡¼¤É #JN ¥â¥Ê¡¼¥«¡¼¥É
++¤â¤Ê¡¼¤«¤ó¤³¤¦ #KK ¥â¥Ê¡¼´Ñ¸÷
++¤â¤Ê¡¼¤¯¤¨¤¹¤È #KK ¥â¥Ê¡¼¥¯¥¨¥¹¥È
++¤â¤Ê¡¼¤¯¤¨¤¹¤È #T35 ¥â¥Ê¡¼¥¯¥¨¥¹¥È
++¤â¤Ê¡¼¤¯¤Ã¤­¤ó¤° #JN ¥â¥Ê¡¼¥¯¥Ã¥­¥ó¥°
++¤â¤Ê¡¼¤±¤ó¤¹¤± #JN ¥â¥Ê¡¼·ò²ð
++¤â¤Ê¡¼¤±¤ó¤¹¤±¤¤ #JN ¥â¥Ê¡¼·ò¤¹·Ù
++¤â¤Ê¡¼¤·¤å¤Ö¤ó¤×¤º #JN ¥â¥Ê¡¼¼ïʬÉÛ¿Þ
++¤â¤Ê¡¼¤·¤å¤Ö¤ó¤×¤º¤â¤Ê¡¼¤â¤é¤é¡¼¤Ð¤ó #JN ¥â¥Ê¡¼¼ïʬÉÛ¿Þ¥â¥Ê¡¼¡¦¥â¥é¥é¡¼ÈÇ
++¤â¤Ê¡¼¤·¤å¤Ö¤ó¤ë¤¤¤º¤±¤Ã¤Æ¤¤¤Ð¤ó #JN ¥â¥Ê¡¼¼ïʬÎà¿Þ·èÄêÈÇ
++¤â¤Ê¡¼¤·¤å¤Ö¤ó¤ë¤¤¤º¤¾¤Ë¤Ã¤¯¤Ð¤ó #JN ¥â¥Ê¡¼¼ïʬÎà¿Þ¡¡¥¾¥Ë¥Ã¥¯ÈÇ
++¤â¤Ê¡¼¤·¤å¤Ö¤ó¤ë¤¤¤º¤¾¤Ë¤Ã¤¯¤Ð¤ó #JN ¥â¥Ê¡¼¼ïʬÎà¿Þ¥¾¥Ë¥Ã¥¯ÈÇ
++¤â¤Ê¡¼¤·¤ç¤¦¤á¤Ä #JN ¥â¥Ê¡¼¾ÃÌÇ
++¤â¤Ê¡¼¤¸¤¾¤¦ #JN ¥â¥Ê¡¼ÃÏ¢
++¤â¤Ê¡¼¤¸¤å¤¦¤è¤ó¤»¤¤ #JN ¥â¥Ê¡¼£±£´À¤
++¤â¤Ê¡¼¤¾¤¯¤­¤å¤¦¤­¤ç¤¯¤ª¤¦¤®¤â¤é¤é¡¼¤É¤é¤¤¤Ð¡¼ #JN ¥â¥Ê¡¼Â²¡¦µæ¶Ë±üµÁ¡¦¥â¥é¥é¡¼¥É¥é¥¤¥Ð¡¼
++¤â¤Ê¡¼¤¿¤ó¤¸¤ç¤¦¤Î¤Ò¤ß¤Ä #JN ¥â¥Ê¡¼ÃÂÀ¸¤ÎÈëÌ©
++¤â¤Ê¡¼¤Ç¤¤¤«¤ê¤ò¤Ö¤Ä¤±¤ë¤¹¤ì¤³¤¯¤µ¤¤¤¸¤ç¤¦¤ä¤¯¤¸¤å¤Ã¤«¤¸¤ç¤¦ #JN ¥â¥Ê¡¼¤ÇÅܤê¤ò¤Ö¤Ä¤±¤ë¥¹¥ì¹ñºÝ¾òÌó½½¥ö¾ò
++¤â¤Ê¡¼¤È¤®¤³¤Î¤²¡¼¤à¤·¤ç¤Ã¤× #JN ¥â¥Ê¡¼¤È¥®¥³¤Î¥²¡¼¥à¥·¥ç¥Ã¥×
++¤â¤Ê¡¼¤Î¤¤¤Á¤Ë¤Á #JN ¥â¥Ê¡¼¤Î°ìÆü
++¤â¤Ê¡¼¤Î¤«¤Î¤¸¤ç #JN ¥â¥Ê¡¼¤ÎÈà½÷
++¤â¤Ê¡¼¤Î¤«¤Î¤¸¤ç #JN ¥â¥Ê¡¼¤ÎÈà½÷¡Ê¸Î¿Í¡Ë 
++¤â¤Ê¡¼¤Î¤»¤ó¤¾ #JN ¥â¥Ê¡¼¤ÎÀèÁÄ
++¤â¤Ê¡¼¤Ï¤è¤¦¤Á¤·¤Í¤è #JN ¥â¥Ê¡¼¤ÏÍÄÃÕ¡£»à¤Í¤è
++¤â¤Ê¡¼¤Ð¤ó¤É #JN ¥â¥Ê¡¼¥Ð¥ó¥É
++¤â¤Ê¡¼¤Õ¤Ã¤«¤Ä #JN ¥â¥Ê¡¼Éü³è
++¤â¤Ê¡¼¤Þ¤ó #JN ¥â¥Ê¡¼¥Þ¥ó
++¤â¤Ê¡¼¤Þ¤ó #JN ŽÓŽÅŽ°ŽÏŽÝ
++¤â¤Ê¡¼¤à¡¼¤ó¤°¤ó #JN ¥â¥Ê¡¼¥à¡¼¥ó·³
++¤â¤Ê¡¼¤à¡¼¤ó¤°¤ó #JN Ž·ŽÞŽºŽ½ŽÀŽ°·³
++¤â¤Ê¡¼¤à¡¼¤ó¤°¤ó #JN ŽÓŽÅŽ°ŽÑŽ°ŽÝ·³
++¤â¤Ê¡¼¤á¤¿¤ë¤Ð¤ó¤É #JN ¥â¥Ê¡¼¥á¥¿¥ë¥Ð¥ó¥É
++¤â¤Ê¡¼¤ê¤¶ #JN ¥â¥Ê¡¼¥ê¥¶
++¤â¤Ê¤¢ #T35 ¥â¥Ê¡¼
++¤â¤Ê¤¢¤«¤ó¤³¤¦ #T35 ¥â¥Ê¡¼´Ñ¸÷
++¤â¤Ê¤¢¤¯¤¨¤¹¤È #T35 ¥â¥Ê¡¼¥¯¥¨¥¹¥È
++¤â¤Ê¤¢¤¶¤é¤· #JN ¥â¥Ê¥¢¥¶¥é¥·¡¡
++¤â¤Ê¤¢¤é¤Ö #T35 ¥â¥Ê¡Á¤é¤Ö
++¤â¤Ê¤¤¤¢¤ó #JN ¥â¥Ê¥¤¥¢¥ó
++¤â¤Ê¤¨ #JN ¥â¥é»Þ
++¤â¤Ê¤¨¤À¤»¤ó¤»¤¤ #JN ¥â¥Ê»ÞÀèÀ¸
++¤â¤Ê¤¨¤â¤ó #JN ¥â¥Ê¤¨¤â¤ó
++¤â¤Ê¤ª¤¦ #JN ¥â¥Ê²¦
++¤â¤Ê¤« #JN ¥â¥Ê¥«
++¤â¤Ê¤« #JN ¥â¥Ê¥« 
++¤â¤Ê¤« #JNS ¥â¥Ê¥«
++¤â¤Ê¤« #T35 ¥â¥Ê¥«
++¤â¤Ê¤« #T35 ºÇÃæ
++¤â¤Ê¤«¤«¤ó¤Î¤ó #JN ¥â¥Ê¥«´Ñ²»
++¤â¤Ê¤«¤² #JN ¥â¥Ê±Æ
++¤â¤Ê¤«¤² #JN ŽÓŽÅ±Æ
++¤â¤Ê¤«¤Á¤ã¤ó #JN ¥â¥Ê¤«¤Á¤ã¤ó
++¤â¤Ê¤«¤ó¤Î¤ó #JN ¥â¥Ê´Ñ²»
++¤â¤Ê¤«¤ó¤Î¤ó #JN ÌÐ̾´Ñ²»
++¤â¤Ê¤®¤³¤»¤­¤æ¤¬¤½¤ê¤ó¤¹¤¿¤ó¤É #JN ¥â¥Ê¥®¥³ÀÐÌý¥¬¥½¥ê¥ó¥¹¥¿¥ó¥É
++¤â¤Ê¤®¤³¤Õ¤£¤ë¤Ï¡¼¤â¤Ë¡¼¤«¤ó¤²¤ó¤¬¤¯¤À¤ó #JN ¥â¥Ê¥®¥³¥Õ¥£¥ë¥Ï¡¼¥â¥Ë¡¼´É¸¹³ÚÃÄ
++¤â¤Ê¤¯¤í¤×¤¹ #JN £Í£Ï£Î£Á£Ã£Ì£Ï£Ð£Ó
++¤â¤Ê¤¯¤í¤ó #JN ¥â¥Ê¥¯¥í¥ó
++¤â¤Ê¤°¤é¤¨¤ê  #JN ¥â¥Ê¢·ÃΤ
++¤â¤Ê¤°¤é¤¨¤ê #JN ¥â¥Ê¢·ÃΤ
++¤â¤Ê¤³ #JN ¥â¥Ê»Ò
++¤â¤Ê¤³¤ó #JN ¥â¥Ê¥³¥ó
++¤â¤Ê¤µ¤ó¤±¤¤¤Ê¡¼ #JN ¥â¥Ê¥µ¥ó¡¦¥±¥¤¥Ê¡¼
++¤â¤Ê¤¶¤¤¤³ #JN ¥â¥Ê¥¶¥¤»Ò
++¤â¤Ê¤¸¤¾¤¦ #JN ¥â¥ÊÃÏ¢
++¤â¤Ê¤¸¤é #KK ¥â¥Ê¥¸¥é
++¤â¤Ê¤¸¤é¡¼ #KK ¥â¥Ê¥¸¥é¡¼
++¤â¤Ê¤¸¤é¤¢¤¤¤Ç¤£¡¼ #T35 monazillaID
++¤â¤Ê¤¸¤é¤ª¤ë¤°¤ï¤é #T35 monazilla.org(w
++¤â¤Ê¤»¤ó¤Ë¤ó #JN ¥â¥ÊÀç¿Í
++¤â¤Ê¤½¤¦¤·¤­ #JN ¥â¥ÊÁò¼°
++¤â¤Ê¤È¤í¤Ð¤¸¡¼¤Ê¤¿¤¤¤¤ #JN ¥â¥Ê¥È¥í¡¦¥Ð¥¸¡¼¥ÊÂç°Ó
++¤â¤Ê¤Ë¡¼ #JN ¥â¥Ê¥Ë¡¼
++¤â¤Ê¤Î¤ê¤­¤å¤¦ #JN ¥â¥Ê¥Î¡¡ÍøµÙ
++¤â¤Ê¤Ú #KK ¥â¥Ê¥Ú
++¤â¤Ê¤Ú #T35 ¥â¥Ê¥Ú
++¤â¤Ê¤Û #JN ¥â¥Ê¥Û
++¤â¤Ê¤Ü¤ó #JN ¥â¥Ê¥Ü¥ó
++¤â¤Ê¤Ý¤ì¤ª¤ó¤â¤Ê¤Ñ¤ë¤É #JN ¥â¥Ê¥Ý¥ì¥ª¥ó¡á¥â¥Ê¥Ñ¥ë¥É
++¤â¤Ê¤Þ¤¸¤ó #JN ¥â¥ÊËâ¿À
++¤â¤Ê¤ß¤Ï¤ó¤¿¡¼ #JN ¥â¥Ê¥ß¡¦¥Ï¥ó¥¿¡¼
++¤â¤Ê¤à¤· #JN ¥â¥ÊÃî
++¤â¤Ê¤ê¤«¤º¤­ #JN ¥â¥Ê¤ê¤«¤º¤­
++¤â¤Ê¤ì¤¤ #JN ¥â¥ÊÎî
++¤â¤Ê¤ì¤¤ #JN ¥â¥ÊÎî 
++¤â¤Ë¡¼ #JN ¥â¥Ë¡¼
++¤â¤Ë¤« #JN ¥â¥Ë¥«¡¦±¦
++¤â¤Ë¤ã¡¼¤¯¤ó #JN ¥â¥Ë¥ã¡¼·¯
++¤â¤Ë¤ã¡¼¤¯¤ó #JN ¥â¥Ë¥ã¡¼·¯ 
++¤â¤Ë¤ç #R5 ¤â¤Ë¤ç
++¤â¤Í¡¼ #JN ¥â¥Í¡¼
++¤â¤Í¡¼¤ë #JN ¥â¥Í¡¼¥ë
++¤â¤Í¤¹ #JN ¥â¥Í¥¹
++¤â¤Î¤¯¤í¡¼¤à #JN ¥â¥Î¡¦¥¯¥í¡¼¥à
++¤â¤Î¤¹¤´¤¤¤¤¤­¤ª¤¤¤Ç #CJ ¤â¤Î¤¹¤´¤¤Àª¤¤¤Ç
++¤â¤Î¤Û¤·¤¶¤ª¤¦¤ê #JN ʪ´³¤·´ÈÇä¤ê
++¤â¤Ñ¤¢¤é #T35 ¥â¥Ñ¡¼¥é
++¤â¤Õ¤¡¤Ø¤Õ¤¡ #JN ¥â¥Õ¥¡¤Ø¥Õ¥¡
++¤â¤Þ¡¼ #JN ¥â¥Þ¡¼
++¤â¤ß¤ª¤« #T35 ¥â¥ß²¬
++¤â¤ß¤ª¤« #T35 Ù沬
++¤â¤â¤¤¤í¤µ¤ó¤Ç¡¼¤¯¤ê¡¼¤à¤¹¤Ú¤·¤ã¤ë #JN Åí¿§¥µ¥ó¥Ç¡¼¥¯¥ê¡¼¥àSP
++¤â¤â¤¦¤¤ #T35 ¥â¥â¡¼¥¤
++¤â¤â¤ª¤¤ #T35 ¥â¥â¡¼¥¤
++¤â¤â¤Á¤ã¤ó #JN Åí¤Á¤ã¤ó
++¤â¤â¤ó¤é¡¼ #JN ¥â¥â¥ó¥é¡¼
++¤â¤ä¤· #T35 ¥â¥ä¥·
++¤â¤é #JN ¤â¤é¢ö
++¤â¤é¡¼¤Þ¤ó #JN ¤â¤é¡¼¥Þ¥ó
++¤â¤é¤¨¤â¤ó #JN ¥â¥é¤¨¤â¤ó
++¤â¤é¤ª¤ó¤× #JN ¤â¤é¢ö
++¤â¤é¤³ #JN ¥â¥é»Ò
++¤â¤é¤¿¤¤¤· #JN ¥â¥éÂç»È
++¤â¤é¤Á¤ã¤¨¤ë #JN ¥â¥é¥Á¥ã¥¨¥ë
++¤â¤é¤Ò¤ã¤¯ #JN ¥â¥éÉ´
++¤â¤é¤Þ¤¸¤ó #JN ¥â¥éËâ¿À
++¤â¤é¤Þ¤ó #JN ¤â¤é¥Þ¥ó
++¤â¤é¤è¤·¤«¤² #JN ¥â¥éµÈ±Æ
++¤â¤é¤é #JN ¤â¤é¤é
++¤â¤é¤é¡¼ #JN ¥â¥é¥é¡¼
++¤â¤é¤é¡¼¤¢¤é¤· #JN ¥â¥é¥é¡¼¹Ó¤é¤·
++¤â¤é¤é¡¼¤«¤Á¤ç¤¦ #JN ¥â¥é¥é¡¼²ÝĹ
++¤â¤é¤é¡¼¤µ¤ó¤¸¤å¤¦¤· #JN ¥â¥é¥é¡¼»°½Æ»Î
++¤â¤é¤é¡¼¤Á¤ç¤¦¤«¤ó #JN ¥â¥é¥é¡¼Ä¹´±
++¤â¤é¤é¡¼¤Æ¤£¡¼¤À #JN ¥â¥é¥é¡¼¥Æ¥£¡¼¥À
++¤â¤é¤é¡¼¤Õ¤©¡¼ #JN ¥â¥é¥é¡¼4
++¤â¤é¤é¡¼¤Ö¤Á¤ç¤¦ #JN ¥â¥é¥é¡¼ÉôĹ
++¤â¤é¤é¡¼¤Þ¤Þ #JN ¥â¥é¥é¡¼¥Þ¥Þ
++¤â¤é¤é¤¨¤ë #JN ¥â¥é¥é¥¨¥ë
++¤â¤é¤é¤È¤Î #JN ¥â¥é¥éÅÂ
++¤â¤é¤é¤È¤Î #JN ŽÓŽ×Ž×ÅÂ
++¤â¤é¤é¤È¤Î¤È¤â¤Ê¤«¤² #JN ŽÓŽ×Ž×Å¡ʺ¸¡Ë¤ÈŽÓŽÅ±Æ¡Ê±¦¡Ë
++¤â¤é¤ê #JN ¥â¥é¥ê¡¦º¸
++¤â¤ê #T35 ¿¹
++¤â¤ê¤¢¤¬¤Ã¤Æ¤Þ¤¤¤ê¤Þ¤·¤¿ #CJ À¹¤ê¾å¤¬¤Ã¤Æ¤Þ¤¤¤ê¤Þ¤·¤¿
++¤â¤ê¤Á¤å¤¦ #T35 À¹¿ß
++¤â¤ë #JN ¥â¥ë
++¤â¤ë¤¡ #JN (ŽßŽÛŽß)ŽÓŽÙŽ§!!
++¤â¤ë¤¡ #JN ¥â¥ë¥¡
++¤â¤ì #T35 ϳ¤ì
++¤â¤ì¤¯¤· #T35 ϳ¤ì¶ú
++¤â¤í¤Ï¤Î¤Ä¤ë¤® #CJ ½ô¿Ï¤Î·õ¡£
++¤â¤ó¤­¤¤¤·¤å¤¬¤¢ #T35 ¥â¥ó¥­¡¼¥·¥å¥¬¡¼
++¤â¤ó¤¯¤¢¤ë #CJ ʸ¶ç¤¢¤ë¡©
++¤â¤ó¤ë¤¤ #T30 ÌåÎÞ
++¤ä #SUC ¤ä
++¤ä¤ª #T30 ¥ä¥ª
++¤ä¤ª¤¤ #T35 ¤ä¤ª¤¤
++¤ä¤ª¤­¤ó #KK ¥ä¥ª¥­¥ó
++¤ä¤ª¤­¤ó #T35 ¥ä¥ª¥­¥ó
++¤ä¤ª¤Ï¤² #T35 ¥ä¥ªÆŤ²
++¤ä¤ª¤Ð #T35 ²°¥ª¥Ð
++¤ä¤ª¤Õ¤¯ #KK ¥ä¥ª¥Õ¥¯
++¤ä¤­¤¤¤â #T35 ¤ä¤­¤¤¤â
++¤ä¤­¤Ä¤±¤Ð #T35 ¾ÆÉÕ¤±¿Ï
++¤ä¤­¤Ä¤±¤ä¤¤¤Ð #T35 ¾ÆÉÕ¤±¿Ï
++¤ä¤­¤È¤ê #KK ¾Æ¤­Ä»
++¤ä¤­¤È¤ê #T35 ¾Æ¤­Ä»
++¤ä¤­¤Ê¤ª¤»¤Ç¤ª¤Þ¤¨¤Î¤¢¤¿¤Þ¤â¤ä¤­¤Ê¤ª¤» #CJ ¾Æ¤­¤Ê¤ª¤»¡¢¤Ç¡¢¤ªÁ°¤ÎƬ¤â¾Æ¤­¤Ê¤ª¤»
++¤ä¤­¤ó #JN Ìë¶Ð
++¤ä¤­¤ó #JN Ìë¶Ð¡ú
++¤ä¤¯¤¶ #JN ¥ä¥¯¥¶
++¤ä¤¯¤ë¤Ä #T35 ¥ä¥¯¥ë¥Ä
++¤ä¤¯¤ë¤Ä¤·¤£ #JN ¥ä¥¯¥ë¥Ä¤·¤£
++¤ä¤°¤Ã¤Á¤ç¤ê¡¼¤Ê #JN ¥ä¥°¥Ã¥Á¥ç¥ê¡¼¥Ê
++¤ä¤µ¤·¤ß #JN Í¥¤·¤ß
++¤ä¤· #T35 ¹á¶ñ»Õ
++¤ä¤·¤¬¤Ë #T30 ¥ä¥·¥¬¥Ë
++¤ä¤·¤ã #T35 Ì뺵
++¤ä¤¸¤ë¤·¤Á¤å¤¦ #T35 Ìð°õ¿ß
++¤ä¤¹¤À¤¹¤ì¤Ã¤É #CN ÊÝÅÄ¥¹¥ì¥Ã¥É
++¤ä¤¹¤À¤¹¤ì¤Ã¤É #T35 ÊÝÅÄ¥¹¥ì¥Ã¥É
++¤ä¤¹¤ê #T35 ïÌ
++¤ä¤½¤Þ¡¼ #JN ¥ä¥½¥Þ¡¼
++¤ä¤½¤Þ¡¼¤í¤´¤¤¤ê #JN ¥ä¥½¥Þ¡¼(¥í¥´Æþ¤ê)
++¤ä¤À¤â¤ó #JN ¥ä¥À¥â¥ó
++¤ä¤Ã¤Û¡¼ #CN ¥ä¥Ã¥Û¡¼
++¤ä¤Ã¤Û¡¼ #KK ¥ä¥Ã¥Û¡¼
++¤ä¤Ã¤Û¡¼ #T35 ¥ä¥Ã¥Û¡¼
++¤ä¤Ã¤Û¤ª #T35 ¥ä¥Ã¥Û¡¼
++¤ä¤Ä #JN ¥ä¥Ä
++¤ä¤Ä #T35 ¥ä¥Ä
++¤ä¤Ê¤¬¤·¤ï #JNS ¤ä¤Ê¤¬¤·¤ï
++¤ä¤Ê¤¬¤·¤ï #T35 ¤ä¤Ê¤¬¤·¤ï
++¤ä¤Ê¤®¤µ¤ï¤â¤Ê¡¼ #JN ¥ä¥Ê¥®¥µ¥ï¥â¥Ê¡¼
++¤ä¤Õ #KK ¥ä¥Õ
++¤ä¤Õ¤¦ #CN ÌðÉ÷
++¤ä¤Õ¤¦ #T35 ÌðÉ÷
++¤ä¤Õ¤ª¤¯ #KK ¥ä¥Õ¥ª¥¯
++¤ä¤Õ¤ª¤¯ #T35 ¥ä¥Õ¥ª¥¯
++¤ä¤Ö¤Ë¤é¤ß¤â¤é¤é¡¼ #JN 鮤ˤé¤ß¥â¥é¥é¡¼
++¤ä¤Þ¤¶¤­¤È¤é¤Ã¤× #T35 »³ºê¥È¥é¥Ã¥×
++¤ä¤Þ¤¶¤­¤ï¤¿¤ë #T35 »³ºê¾Ä(^^)
++¤ä¤Þ¤À #JN »³ÅÄ
++¤ä¤á¤Æ¤¿¤â¤ì #CJ ¤ä¤á¤Æ¤¿¤â¤ì
++¤ä¤á¤ì #CJ ¤ä¤á¤ì
++¤ä¤é¤Ê¤¤¤« #CJ ¤ä¤é¤Ê¤¤¤«
++¤ä¤ê¤¹¤®¤¯¤ó #JN ¤ä¤ê¤¹¤®·¯
++¤ä¤ë¤­¤Ê¤· #T35 ¤ä¤ëµ¤¤Ê¤·¡ª
++¤ä¤ë¤¾ #JN ¤ä¤ë¤¾¡ª¡ª
++¤ä¤ë¤Ã¤Æ¤Ö¤· #CJ ¤ä¤ë¤Ã¤ÆÀá
++¤ä¤í¤ª¤¦¤è #CJ ¥ä¥í¡¼¥¦¥è
++¤ä¤í¤ª¤¦¤è #CJ ŽÔŽÛŽ°Ž³ŽÖ
++¤ä¤ï¤é¤Á¤ã¤ó #JNM ¥ä¥ï¥é¤Á¤ã¤ó
++¤ä¤ó¤¸¤ã¤ó #KK ¥ä¥ó¥¸¥ã¥ó
++¤ä¤ó¤¸¤ã¤ó #T35 ¥ä¥ó¥¸¥ã¥ó
++¤ä¤ó¤ä¤ó #CJ ¤ä¤ó¤ä¤ó
++¤ä¤ó¤ä¤ó #T35 ¤ä¤ó¤ä¤ó
++¤æ¡¼¤¨¤¹¤Ó¡¼¤±¡¼¤Ö¤ë¤Ç¤¯¤Ó¤Ä¤Ã¤Æ¤·¤Í #CJ USB¥±¡¼¥Ö¥ë¤Ç¼óÄߤäƻá¤Í
++¤æ¡¼¤¸¡¼ #T35 £Õ£Ç
++¤æ¡¼¤æ¡¼ #JN ¥æ¡¼¥æ¡¼
++¤æ¤¦¤¤¤Á #JN Í´£±
++¤æ¤¦¤«¤ó #JN ͼ´©
++¤æ¤¦¤­¤¬¤Ê¤¯¤Æ¤ß¤ì¤Ê¤¤¤¬¤¾¤¦¤«¤¤¤»¤Ä¤¹¤ì #T35 ͦµ¤¤¬Ìµ¤¯¤Æ¸«¤ì¤Ê¤¤²èÁü²òÀ⥹¥ì 
++¤æ¤¦¤³ #T35 ¤æ¤¦¤³
++¤æ¤¦¤·¤ã #T35 ͦ¼Ô
++¤æ¤¦¤·¤ã¤â¤Ê¡¼ #JN ͦ¼Ô¥â¥Ê¡¼
++¤æ¤¦¤·¤ã¤â¤Ê¤¿ #JN ͦ¼Ô¥â¥ÊÂÀ
++¤æ¤¦¤Ç¤£¤¤¤×¤í¤¸¤§¤¯¤È #T35 UD¥×¥í¥¸¥§¥¯¥È
++¤æ¤¦¤É¤¦ #T30 ͶƳ
++¤æ¤¦¤Ê¤ó¤Þ¤Ä¤ê #T35 ¤æ¤¦¤Ê¤óº×¤ê
++¤æ¤¦¤Ï¤È¤¯¤Æ¤¤¤µ¤ì¤Þ¤¹¤¿ #CJ YOU¤ÏÆÃÄꤵ¤ì¤Þ¤¹¤¿
++¤æ¤¦¤Ó¤ó¤æ¤¦¤»¤¤¤¤¤¿ #CJ ͹ÊØ¡¦Í¹À¯ÈÄ
++¤æ¤¦¤Ó¤ó¤æ¤¦¤»¤¤¤¤¤¿ #CN ͹ÊØ¡¦Í¹À¯ÈÄ
++¤æ¤¦¤Ó¤ó¤æ¤¦¤»¤¤¤¤¤¿ #T35 ͹ÊØ¡¦Í¹À¯ÈÄ
++¤æ¤¦¤Ü¤¦ #JN m(-_-m)¡ÁŽ³Ž×ŽÒŽ¼ŽÔŽ°
++¤æ¤¦¤Ü¤¦ #JN ¤æ¤¦Ë·
++¤æ¤¦¤á¤¤¤³¤Æ¤¤ #T35 ͭ̾¸ÇÄê
++¤æ¤¦¤ê¤ç¤¦¤« #T30 Í­ÎÁ²½
++¤æ¤¬¤ß #T35 ÏÄ
++¤æ¤­¤ª¤Ë¤®¤ê¤À¤ë¤Þ #JN À㤪¤Ë¤®¤ê¤À¤ë¤Þ
++¤æ¤­¤¸¤ë¤· #T35 À°õ
++¤æ¤­¤¸¤ë¤·¤®¤å¤¦¤Ë¤å¤¦ #JN À°õµíÆý
++¤æ¤Ã¤­¡¼ #JN ¥æ¥Ã¥­¡¼
++¤æ¤Ã¤­¡¼ #T35 ¥æ¥Ã¥­¡¼
++¤æ¤Ã¤­¤¤ #T35 ¥æ¥Ã¥­¡¼
++¤æ¤Ç¤À¤«¤é #T35 ¤æ¤Ç¤À¤«¤é¡¦¡¦¡¦
++¤æ¤Ë¤Ã¤¯¤¹¤Õ¤é¤Ã¤·¤å #T35 unix¥Õ¥é¥Ã¥·¥å
++¤æ¤Ö¤¿ #T35 ÌýÆÚ
++¤æ¤ó #JN ¤æ¤ó
++¤æ¤ó¤«¡¼¤¹ #JN ¥æ¥ó¥«¡¼¥¹
++¤æ¤ó¤«¡¼¤¹ #T35 ¥æ¥ó¥«¡¼¥¹
++¤æ¤ó¤«¤¢¤¹ #T35 ¥æ¥ó¥«¡¼¥¹
++¤æ¤ó¤æ¤ó #CJ ¤æ¤ó¤æ¤ó
++¤æ¤ó¤æ¤ó #T35 ¤æ¤ó¤æ¤ó
++¤è #CJ YO¡ª
++¤è #CJ yo¡ª
++¤è #CJ yp
++¤è¤¢¤Ë #T35 Â奢¥Ë
++¤è¤¤¡¼¤·¤ç¤â¤Ê¡¼ #JN ¥è¥¤¡¼¥·¥ç¥â¥Ê¡¼
++¤è¤¤¡¼¤·¤ç¤â¤Ê¡¼ #JN ŽÖŽ²Ž°Ž¼Ž®ŽÓŽÅŽ°
++¤è¤¦¤¯¤· #T35 Íζú
++¤è¤¦¤·¤Ñ¤Ñ¤È¤¯¤â¤ê¤¿¤Î¤ó¤¸¤ã¤¦¤¾¤¦ #CJ ¤è¡¼¤·¥Ñ¥ÑÆÃÀ¹Íê¤ó¤¸¤ã¤¦¤¾¡¼
++¤è¤¦¤¸¤ç #T35 ¤ç¤¥¦ÉŽÞ¤ç
++¤è¤¦¤¸¤ç¤æ¤¦¤«¤¤ #JN ¤ç¤¥¦É¡«¤ç¤å¤¥¥õ¤£
++¤è¤¦¤»¤¤ #T35 ÍÅÀº
++¤è¤¦¤Á¤¨¤ó¤«¤é¤Ç¤Ê¤ª¤·¤Æ¤³¤¤ #T35 ÍÄ¡¡ÃÕ¡¡±à¡¡¤«¡¡¤é¡¡½Ð¡¡Ä¾¡¡¤·¡¡¤Æ¡¡¤³¡¡¤¤ 
++¤è¤¦¤Á¤ó¤À¤ó #T35 ÍÎÄÁÃÄ
++¤è¤© #CJ YO¡ª
++¤è¤© #CJ yo¡ª
++¤è¤© #CJ yp
++¤è¤©¡¼¤¼¤Õ #JN ¥è¥©¡¼¥¼¥Õ
++¤è¤©¡¼¤¼¤Õ¤«¤Ã¤³¤«¤·¤ç¤¦¤«¤Ã¤³¤È¤¸ #JN ¥è¥©¡¼¥¼¥Õ(²¾¾Î)
++¤è¤«¡¼¤ó #JN ¥è¥«¡¼¥ó
++¤è¤¯¤Ö¤«¤ª¤¦ #JN (¡­V¡®)¡Ö
++¤è¤¯¤Ö¤«¤ª¤¦ #JN Íß¿¼²¦
++¤è¤¯¤â #JN ¡Ê¦¨§Õ¦¨¡ËŽÖŽ¸ŽÓŽ¥Ž¥Ž¥
++¤è¤¯¤â #JN ¥è¥¯¥â¡¦¡¦¡¦
++¤è¤¯¤â #JN ŽÖŽ¸ŽÓŽ¥Ž¥Ž¥
++¤è¤³¤Ï¤á #CN ¥è¥³¥Ï¥á
++¤è¤³¤Ï¤á #T35 ¥è¥³¥Ï¥á
++¤è¤³¤ä¤Þ¤µ¤ó¤´¤¯¤· #T35 ²£»³»°¹ñ»Ö
++¤è¤´¤ì #T35 ¥è¥´¥ì
++¤è¤´¤ì #T35 ±ø¤ì
++¤è¤·¤À #JN Yoshida
++¤è¤·¤Î¤ä¤³¤Ô¤Ú #T35 µÈÌî²È¥³¥Ô¥Ú
++¤è¤·¤æ¤­ #T35 ¤è¤·¤æ¤­
++¤è¤·¤è¤· #JN ¡Ê¡¡¡¨§¥¡¨¡Ë¡³¡Ê¡­£ö¡®¡¡¡ËŽÖŽ¼ŽÖŽ¼
++¤è¤·¤è¤· #JN ¤è¤·¤è¤·
++¤è¤¼¤Ë #T35 Â奼¥Ë
++¤è¤½¤¦¤Î¤Ê¤Ê¤á¤¦¤¨ #T35 ͽÁۤμФá¾å
++¤è¤Á¤ì¤¹ #T35 ͽÃΥ쥹
++¤è¤Ã¤­¤å¤ó #JN ¤è¤Ã¤­¤å¤ó
++¤è¤Ã¤­¤å¤ó #T35 ¤è¤Ã¤­¤å¤ó
++¤è¤Ã¤¹¤£¤â¤Ê¡¼ #JN ¤è¤Ã¤¹¤£¥â¥Ê¡¼
++¤è¤Ê¡¼ #JN ¥è¥Ê¡¼
++¤è¤Í #T35 ¢¨
++¤è¤Í¡¼ #JN ¥è¥Í¡¼
++¤è¤ß¡¼¤ê #JN ¥è¥ß¡¼¥ê
++¤è¤á #CJ ²Ç
++¤è¤ë¤Î¤ª¤«¤º #T35 Ìë¤Î¤ª¤«¤º
++¤è¤ó #T35 >>4
++¤è¤ó¤È¤¦¤·¤ó¤Ë¤é¤¤¤à #JN »ÍƬ¿È¥Ë¥é¥¤¥à
++¤è¤ó¤Þ¤ë¤è¤ó #T35 404
++¤è¤ó¤è¤ó #CJ ¤è¤ó¤è¤ó
++¤è¤ó¤è¤ó #T35 ¤è¤ó¤è¤ó
++¤é¡¼ #T35 £Ò£Á£Ò
++¤é¡¼¤¸¤¨¤¤¤ê¤¦¤ï¤¡¤¡¤ó #JN ¥é-¥¸¥¨¥¤¥ê¥¦¥ï¥¡¥¡¥ó
++¤é¡¼¤¸¤¨¤¤¤ê¤¦¤ï¤¡¤¡¤ó #JN Ž×-Ž¼ŽÞŽ´Ž²ŽØŽ³ŽÜŽ§Ž§ŽÝ
++¤é¡¼¤á¤ó #T35 ¥é¡¼¥á¥ó
++¤é¡¼¤á¤ó¤®¤³ #JN ¥é¡¼¥á¥ó¥®¥³
++¤é¡¼¤á¤ó¤®¤³¤¢¤ó¤É¤â¤Ê¡¼ #JN ¥é¡¼¥á¥ó¥®¥³¡õ¥â¥Ê¡¼
++¤é¡¼¤á¤ó¤â¤Ê¡¼ #JN ¥é¡¼¥á¥ó¥â¥Ê¡¼
++¤é¤¢ #T35 RAR
++¤é¤¤¡¼¤è¡¼ #T35 (Ž¥¢ÏŽ¥)Ž×Ž²Ž°ŽÖŽ°!!
++¤é¤¤¡¼¤è¡¼ #T35 ¡Ê¡¦¢Ï¡¦¡Ë¥é¥¤¡¼¥è¡¼!!
++¤é¤¤¡¼¤è¡¼ #T35 ¡Ê¡¦¢Ï¡¦¡ËŽ×Ž²Ž°ŽÖŽ°!!
++¤é¤¤¤¢¤Ã¤È #KK ¥é¥¸¡÷
++¤é¤¤¤¿ #CN ¥éÈÄ
++¤é¤¤¤Á¤ç¤¦ #KK ÍëÄ»
++¤é¤¤¤Á¤ç¤¦ #T35 ÍëÄ»
++¤é¤¤¤Ì #T35 ¥é¥¤¥Ì
++¤é¤¤¤Ì #T35 ¥é¸¤
++¤é¤¤¤Ì #T35 Ž×¸¤
++¤é¤¤¤Ì #T35 Ž×Ž²ŽÇ
++¤é¤¦¡¼¤¸ #T35 ¥é¥¦¡¼¥¸
++¤é¤¦¤á¤¹ #JN ¥é¥¦¥á¥¹
++¤é¤¦¤á¤¹ #T35 ¥é¥¦¥á¥¹
++¤é¤¦¤ó¤¸ #CN ¥é¥¦¥ó¥¸
++¤é¤¦¤ó¤¸ #T35 ¥é¥¦¥ó¥¸
++¤é¤¦¤ó¤¸¤ª¤Õ¤«¤¤ #T30 ¥é¥¦¥ó¥¸¥ª¥Õ²ñ
++¤é¤¦¤ó¤¸¤« #T30 ¥é¥¦¥ó¥¸²½
++¤é¤¦¤ó¤¸¤Ò¤Ê¤ó¤¸¤ç #T35 ¥é¥¦¥ó¥¸ÈòÆñ½ê
++¤é¤¦¤ó¤¸¤ã #T35 ¥é¥¦¥ó¥¸¥ã
++¤é¤¦¤ó¤¸¤ã¡¼ #T35 ¥é¥¦¥ó¥¸¥ã¡¼
++¤é¤¦¤ó¤¸¤ã¤¢ #T35 ¥é¥¦¥ó¥¸¥ã¡¼
++¤é¤¦¤ó¤¸¤ã¤¢¤Í¤® #T35 ¥é¥¦¥ó¥¸¥ã¡¼Ç¬
++¤é¤­¡¼¤Þ¤ó #JN ¥é¥­¡¼¥Þ¥ó
++¤é¤­¡¼¤Þ¤ó #JN ¥é¥­¡¼¥Þ¥ó 
++¤é¤¸¤¢¤Ã¤È #KK ¥é¥¸¡÷
++¤é¤¹¤Ü¤¹¤Ï¤¨¤¹¤È¤·¡¼¤â¤¢ #CJ ¥é¥¹¥Ü¥¹¤Ï¥¨¥¹¥È¥·¡¼¥â¥¢
++¤é¤Ã¤­¡¼¤Á¤ó¤Ð #T35 ¥é¥Ã¥­¡¼ÄÁÇÏ
++¤é¤Ã¤È¤­¤é¡¼ #JN ¥é¥Ã¥È¥­¥é¡¼
++¤é¤Æ¤ó¤¢¤Ò¤ã #JN ¥é¥Æ¥ó¥¢¥Ò¥ã
++¤é¤Ç¤£¤½ #T35 ¥é¥Ç¥£¥½
++¤é¤Ê¡¼ #JN ¥é¥Ê¡¼
++¤é¤ê¤é¤ê #T35 ¥é¥ê¥é¥ê
++¤é¤ê¤é¤ê #T35 Ž×ŽØŽ×ŽØ
++¤é¤ë¤¯¤½ #JN ¥é¥ë¥¯¥½
++¤é¤ë¤¯¤½ #T35 ¥é¥ë¥¯¥½
++¤é¤í¡¼ #SUC ¤é¤í¡¼
++¤é¤í¤¦ #SUC ¤é¤í¡¼
++¤ê¡¼¤¼¤ó¤È #JN ¥ê¡¼Á°ÅÓ
++¤ê¡¼¤Õ¤È¤¦¤µ¤¯ #T35 ¥ê¡¼¥ÕÅðºî
++¤ê¡¼¤Þ¤ó #JN ¥ê¡¼¥Þ¥ó
++¤ê¡¼¤Þ¤ó #T30 ¥ê¡¼¥Þ¥ó
++¤ê¡¼¤ê¤Ã¤Ò #JN ­¡¥ê¡¼¥ê¥Ã¥Ò
++¤ê¡¼¤ê¤Ã¤Ò¤¸¤å¤Ë¤¢ #JN ­¢¥ê¡¼¥ê¥Ã¥Ò£Ê£ò
++¤ê¡¼¤ê¤Ã¤Ò¤Ë¤»¤¤ #JN ­£¥ê¡¼¥ê¥Ã¥ÒÆóÀ¤
++¤ê¤¢¤½¤·¤é¤Í¡¼¤è #JN ¥ê¥¢¥ë¥½¥é¥Í¡¼¥è
++¤ê¤¢¤Á¤å¤¦ #T35 ¥ê¥¢¿ß
++¤ê¤¢¤ë #T35 ¥ê¥¢¥ë
++¤ê¤¢¤ë¤¢¤½¤Ñ¤½¤Þ¤½ #JN ¥ê¥¢¥ë¥¢¥½¥Ñ¥½¥Þ¥½
++¤ê¤¢¤ë¤¢¤½¤Ñ¤½¤Þ¤½ #JN ¥ê¥¢¥ëŽ±Ž¿ŽÊŽßŽ¿ŽÏŽ¿
++¤ê¤¢¤ë¤¢¤Ã¤½¡¼ #JN ¥ê¥¢¥ë¤¢¤Ã¤½¡¼
++¤ê¤¢¤ë¤£¤ç¤¥ #JN ¥ê¥¢¥ë¤£¤ç¤¥
++¤ê¤¢¤ë¤£¤ç¤¥¤â¤³¤â¤³¤Ð¡¼¤¸¤ç¤ó #JN ¥ê¥¢¥ë¤£¤ç¤¥¡Ê¤â¤³¤â¤³¥Ð¡¼¥¸¥ç¥ó¡Ë
++¤ê¤¢¤ë¤¤¤é¤Í¡¼¤è #JN ¥ê¥¢¥ë¥¤¥é¥Í¡¼¥è
++¤ê¤¢¤ë¤¦¤Ä #JN ¥ê¥¢¥ëݵ
++¤ê¤¢¤ë¤ª¤Þ¤¨¤¯¤Þ¡¼ #JN ¥ê¥¢¥ë¥ª¥Þ¥¨¥¯¥Þ¡¼
++¤ê¤¢¤ë¤ª¤Þ¤¨¤â¤Ê¡¼ #JN ¥ê¥¢¥ë¥ª¥Þ¥¨¥â¥Ê¡¼
++¤ê¤¢¤ë¤«¤µ¡¼¤ê #JN ¥ê¥¢¥ë¥«¥µ¡¼¥ê
++¤ê¤¢¤ë¤­¤¿¡¼¡¼ #JN ¥ê¥¢¥ë¥­¥¿¡¼
++¤ê¤¢¤ë¤­¤Á¤¬¤¤¤±¤¤¤Û¤¦ #JN ¥ê¥¢¥ë´ðÃϳ°·ÙÊó
++¤ê¤¢¤ë¤®¤³ #JN ¥ê¥¢¥ë¥®¥³
++¤ê¤¢¤ë¤´¤¿¤¤¤Õ¤Þ¤ó¤¾¤¯ #JN ¥ê¥¢¥ë¸ÞÂÎÉÔËþ­
++¤ê¤¢¤ë¤·¤£ #JN ¥ê¥¢¥ë¤·¤£
++¤ê¤¢¤ë¤·¤Í¤Ð¡¼ #JN ¥ê¥¢¥ë¥·¥Í¥Ð¡¼
++¤ê¤¢¤ë¤·¤ç¤¦¤Ü¤¦ #T35 ¥ê¥¢¥ë¾ÃËÉ
++¤ê¤¢¤ë¤·¤é¤Í¡¼¤è #JN ¥ê¥¢¥ë¥·¥é¥Í¡¼¥è
++¤ê¤¢¤ë¤·¤é¤Í¡¼¤è2 #JN ¥ê¥¢¥ë¥·¥é¥Í¡¼¥è£²
++¤ê¤¢¤ë¤¸¤µ¤¯¤¸¤¨¤ó #JN ¥ê¥¢¥ë¥¸¥µ¥¯¥¸¥¨¥ó
++¤ê¤¢¤ë¤¸¤µ¤¯¤¸¤¨¤ó #JN ¥ê¥¢¥ëŽ¼ŽÞŽ»Ž¸Ž¼ŽÞŽ´ŽÝ
++¤ê¤¢¤ë¤¸¤ã¤Ê¤¤¤«¤é¤¯¤½ #CJ ¥ê¥¢¥ë¤¸¤ã¤Ê¤¤¤«¤é¥¯¥½
++¤ê¤¢¤ë¤¸¤ç¤ó¤¸¤ç¤µ¤ó #JN ¥ê¥¢¥ë¥¸¥ç¥ó¥¸¥ç¤µ¤ó
++¤ê¤¢¤ë¤¹¤Ã¤É¤ì #JN ¥ê¥¢¥ëŽ½Ž¯ŽÄŽÞŽÚ
++¤ê¤¢¤ë¤¹¤Õ¤£¤ó¤¯¤¹ #JN ¥ê¥¢¥ë¥¹¥Õ¥£¥ó¥¯¥¹
++¤ê¤¢¤ë¤½¤¦¤Ç¤â¤Ê¤¤¤è #JN ¥ê¥¢¥ë¤½¤¦¤Ç¤â¤Ê¤¤¤è
++¤ê¤¢¤ë¤½¤é¤Í¡¼¤è #JN ¥ê¥¢¥ë¥½¥é¥Í¡¼¥è
++¤ê¤¢¤ë¤½¤ì¤¬¤Ê¤Ë¤« #JN ¥ê¥¢¥ë¥½¥ì¥¬¥Ê¡á¥Ë¥«
++¤ê¤¢¤ë¤¿¤¤¤à #T35 ¥ê¥¢¥ë¥¿¥¤¥à
++¤ê¤¢¤ë¤Á¤å¤¦¤Ü¤¦ #T35 ¥ê¥¢¥ë¿ß˼
++¤ê¤¢¤ë¤Ê¤ª¤Ë¤®¤ê¤â¤Ê¡¼ #JN ¥ê¥¢¥ë¤Ê¤ª¤Ë¤®¤ê¥â¥Ê¡¼
++¤ê¤¢¤ë¤Ê¤ª¤Ë¤®¤ê¤â¤Ê¡¼¤¤¤Á #JN ¥ê¥¢¥ë¤Ê¤ª¤Ë¤®¤ê¥â¥Ê¡¼£±
++¤ê¤¢¤ë¤Ê¤ª¤Ë¤®¤ê¤â¤Ê¡¼¤Ë #JN ¥ê¥¢¥ë¤Ê¤ª¤Ë¤®¤ê¥â¥Ê¡¼£²
++¤ê¤¢¤ë¤Ê¤±¤ó #JN ¥ê¥¢¥ë¤Ê¥±¥ó
++¤ê¤¢¤ë¤Ê¤Ã¤Á #JN ¥ê¥¢¥ë¤Ê¤Ã¤Á
++¤ê¤¢¤ë¤Ê¤É¤»¤¤¤µ¤ó #JN ¥ê¥¢¥ë¤ÊÅÚÀ±¤µ¤ó
++¤ê¤¢¤ë¤Ê¤Í¤¹¤â¤Ê¡¼ #JN ¥ê¥¢¥ë¤Ê¥Í¥¹¥â¥Ê¡¼
++¤ê¤¢¤ë¤Ë¤À¡¼ #JN ¥ê¥¢¥ë¥Ë¥À¡¼
++¤ê¤¢¤ë¤Ï¤¡ #JN ¥ê¥¢¥ë¥Ï¥¡¡©
++¤ê¤¢¤ë¤Ò¤í¤æ¤­ #JN ¥ê¥¢¥ë¤Ò¤í¤æ¤­
++¤ê¤¢¤ë¤Õ¤§¤é¡¼¤Á¤ç #JN ¥ê¥¢¥ë¥Õ¥§¥é¡¼¥Á¥ç
++¤ê¤¢¤ë¤Û¤½¤á #JN ¥ê¥¢¥ëºÙÌÜ
++¤ê¤¢¤ë¤Þ¤À¡¼ #JN ¥ê¥¢¥ë¥Þ¥À¡¼
++¤ê¤¢¤ë¤Þ¤Ë¡¼ #JN ¥ê¥¢¥ë¥ÞÆó¡Ý
++¤ê¤¢¤ë¤à¤Ã¤¯ #JN ¥ê¥¢¥ë¥à¥Ã¥¯
++¤ê¤¢¤ë¤â¤¦¤³¤Í¤¨¤è #JN ¥ê¥¢¥ë¥â¥¦¥³¥Í¥¨¥è
++¤ê¤¢¤ë¤â¤Ê¡¼ #JN ¥ê¥¢¥ë¥â¥Ê¡¼
++¤ê¤¢¤ë¤ä¤À¤â¤ó #JN ¥ê¥¢¥ë¥ä¥À¥â¥ó
++¤ê¤¢¤ë¤è¤·¤Æ¤£¡¼ #JN ¥ê¥¢¥ë¤è¤·¥Æ¥£¡¼
++¤ê¤¢¤ë¤ê¤¢¤ê¤Æ¤£ #T35 ¥ê¥¢¥ë¥ê¥¢¥ê¥Æ¥£
++¤ê¤¢¤ë¤ì¤â¤Ê #JN ¥ê¥¢¥ë¥ì¥â¥Ê
++¤ê¤¤¤Á #T35 reach
++¤ê¤¤¤É¤·¤¤¤¸¤¤¤¢¤¤ #T35 read.cgi
++¤ê¤«¤Á¤ã¤ó #T35 Τ²Â¤Á¤ã¤ó
++¤ê¤­¤·¤ì¤Ç¤£ #T35 ¥ê¥­¥·¥ì¥Ç¥£
++¤ê¤­¤Ã¤É¤â¤é¡¼¤¯ #JN ¥ê¥­¥Ã¥É¡¦¥â¥é¡¼¥¯
++¤ê¤¯ #T35 Φ
++¤ê¤¸¤§¤ó¤ê¤ã #JN Íû·òÎÉ
++¤ê¤Ã¤Ä #T35 ¥ê¥Ã¥Ä
++¤ê¤Ã¤Ä¤¬¤¤¤ë¤µ #JN ¥ê¥Ã¥Ä¤¬¤¤¤ë¤µ
++¤ê¤Ã¤Ý¤¦¤¿¤¤ #JN ΩÊýÂÎ
++¤ê¤Æ¤Ê¤¢ #T35 ¥ê¥Æ¥Ê¡¼
++¤ê¤È¤ë¤¨¤¤¤ê¤¦¤ï¤¡¤¡¤ó #JN ¥ê¥È¥ë¥¨¥¤¥ê¥¦¥¡¥¡¥ó
++¤ê¤È¤ë¤¨¤¤¤ê¤¦¤ï¤¡¤¡¤ó #JN ŽØŽÄŽÙŽ´Ž²ŽØŽ³Ž§Ž§ŽÝ
++¤ê¤Ü¤Ã¤È #T35 ¥ê¥Ü¥Ã¥È
++¤ê¤Ü¤ë¤Ð¡¼¤¹¤Þ¤ó¤«¤Ã¤¿ #JN ¥ê¥Ü¥ë¥Ð¡¼¡¦¥¹¥Þ¥ó¥«¥Ã¥¿
++¤ê¤Ü¤ë¤Ð¡¼¤¹¤Þ¤ó¤«¤Ã¤¿ #JN ¥ê¥Ü¥ë¥ô¥¡¡¼¡¦¥¹¥Þ¥ó¥«¥Ã¥¿
++¤ê¤Ü¤ó #T35 ¥ê¥Ü¥ó
++¤ê¤Ü¤ó¤×¤ì¤¤ #T30 ¥ê¥Ü¥ó¥×¥ì¥¤
++¤ê¤â¡¼¤È¤Û¤¹¤È #T35 ¥ê¥â¡¼¥È¥Û¥¹¥È
++¤ê¤â¤Û #T35 ¥ê¥â¥Û
++¤ê¤ã¤¯ #T35 (ry
++¤ê¤ã¤¯ #T35 ry
++¤ê¤ã¤¯ #T35 ¡Ê£ò£ù
++¤ê¤ã¤¯¤·¤­¤¸¤Á¤ó¤µ¤¤ #T35 ά¼°ÃÏÄú×
++¤ê¤ç¤¦¤¹¤ì¤ª¤È¤³ #JN ÎÉ¥¹¥ìÃË
++¤ê¤ç¤¦¤¹¤ì¤Î¤è¤«¤ó #CJ ÎÉ¥¹¥ì¤Îͽ´¶
++¤ê¤ç¤¦¤Î¤¦ #T35 ξǾ
++¤ê¤ë¤³ #JN ¥ê¥ë»Ò
++¤ê¤í¡¼¤É #T30 ¥ê¥í¡¼¥É
++¤ê¤í¤ª¤É¤¹¤ì¤Ã¤É #T35 ¥ê¥í¡¼¥É¥¹¥ì¥Ã¥É
++¤ê¤í¤¹¤ì #T35 ¥ê¥í¥¹¥ì
++¤ê¤ó¤´¤Ä¤«¤¤ #T35 ¥ê¥ó¥´»È¤¤
++¤ë¤¤ #T35 rui
++¤ë¤Ñ¤ó¤Õ¤é¤Ã¤·¤å #T35 ¥ë¥Ñ¥ó¥Õ¥é¥Ã¥·¥å
++¤ì¡¼ #JN ¥ì¡¼
++¤ì¤¤¤­¤å¤¦¤·¤ã #JN ÎîÛͼÖ
++¤ì¤¤¤¯ #JN ¥ì¥¤¥¯
++¤ì¤¤¤µ¤à #T35 Îä´¨
++¤ì¤¤¤¾¤¦¤³ #T35 Î䢸Ë
++¤ì¤°¤Í¤Ã¤»¤à #T35 Regnessem
++¤ì¤²¡¼ #T35 ¥ì¥²¡¼
++¤ì¤²¡¼¤¤¤¿ #CN ¥ì¥²¡¼ÈÄ
++¤ì¤²¡¼¤¤¤¿ #T35 ¥ì¥²¡¼ÈÄ
++¤ì¤¸ #T35 ¥ì¥¸
++¤ì¤¹ #T30 ¥ì¥¹
++¤ì¤¹¤µ¤¯¤¸¤ç #T30 ¥ì¥¹ºï½ü
++¤ì¤¹¤¹¤ì¤´¤Ð¤¯ #T30 ¥ì¥¹¥¹¥ì¸íÇú
++¤ì¤¹¤¿¤Æ¤´¤Ð¤¯ #T30 ¥ì¥¹Î©¤Æ¸íÇú
++¤ì¤¹¤Ð¤ó¤´¤¦ #T35 ¥ì¥¹ÈÖ¹æ
++¤ì¤Ã¤È¤¦ #KK ÎôƬ
++¤ì¤Ã¤É¤Ö¤Ã¤¯¤¤¤Ï¤ó #CJ ¥ì¥Ã¥É¥Ö¥Ã¥¯°ãÈ¿¡ª¡¢¥ì¥Ã¥É¥«¡¼¥É¡ª
++¤ì¤Ä¤®¤ç¤Ù¤¤¤Ù¡¼¤·¡¼¤Þ¤¤¤Ø¡¼ #CJ ¤ì¤Ä¤®¤ç¡ª¤Ù¤¤¤Ù¡¼¡¡¤·¡¼¤Þ¤¤¤Ø¡¼¢ö
++¤ì¤Ä¤®¤ç¤Ù¤¤¤Ù¡¼¤·¡¼¤Þ¤¤¤Ø¡¼ #T35 ¤ì¤Ä¤®¤ç¡ª¤Ù¤¤¤Ù¡¼¡¡¤·¡¼¤Þ¤¤¤Ø¡¼¢ö
++¤ì¤Ç¤£¤¤¤¹¤µ¤Þ #T35 ¥ì¥Ç¥£¡¼¥¹ÍÍ
++¤ì¤Ù¤ë¤Ò¤¯ #KY ¥ì¥Ù¥ëÄã
++¤ì¤â¤Ê #JN ¥ì¥â¥Ê
++¤ì¤â¤Ê #JN ¥ì¥â¥Ê 
++¤ì¤â¤Ê¤¹¤ì #CN ¥ì¥â¥Ê¥¹¥ì
++¤ì¤â¤Ê¤¹¤ì¤Î¤â¤é¤é¡¼ #JN ¥ì¥â¥Ê¥¹¥ì¤Î¥â¥é¥é¡¼
++¤ì¤â¤é¤â¡¼¤Ê #JN ¥ì¥â¥é¥â¡¼¥Ê
++¤ì¤ì¤Û #T35 ¥ì¥ì¥Û
++¤ì¤ó¤¬ #T35 ¥ì¥ó¥¬
++¤í #T35 ϧ
++¤í¡¼¤«¤ë¤ë¡¼¤ë #T35 ¥í¡¼¥«¥ë¥ë¡¼¥ë
++¤í¤¤¤â¤Ê¤Ù¤ë #JN ¥í¥¤¡¦¥â¥Ê¥Ù¥ë
++¤í¤° #T35 ¥í¥°
++¤í¤±¤Ã¤È¤Ç¤Ä¤­¤Ì¤±¤ë #CJ ¥í¥±¥Ã¥È¤ÇÆͤ­È´¤±¤ë
++¤í¤´ #T35 ¥í¥´
++¤í¤Ã¤¯¤·¤Æ¤£ #JN ¥í¥Ã¥¯¥·¥Æ¥£
++¤í¤Ã¤¯¤â¤Ê¡¼ #JN ¥í¥Ã¥¯¥â¥Ê¡¼
++¤í¤Ã¤Ý¤ó¤¾¡¼ #JN ¤í¤Ã¤Ý¤ó¤¾¡¼
++¤í¤Ã¤Ý¤ó¤¾¡¼ #T35 ¤í¤Ã¤Ý¤ó¤¾¡¼
++¤í¤Æ¤¨¤ó #T35 ¥í¥Æ¡¼¥ó
++¤í¤Æ¤¨¤ó #T35 ŽÛŽÃŽ°ŽÝ
++¤í¤Ó¤á¤¹ #JN ¥í¥Ó¥á¥¹
++¤í¤Ó¤á¤¹ #T35 ¥í¥Ó¥á¥¹
++¤í¤Ó¤é¡¼ #T35 ¥í¥Ó¥é¡¼
++¤í¤Õ¤È¤×¤é¤¹¤ï¤ó #CN ¥í¥Õ¥È¥×¥é¥¹¥ï¥ó
++¤í¤à #KS ROM
++¤í¤à #R5 £Ò£Ï£Í
++¤í¤à #T35 R@M
++¤í¤à #T35 ROM
++¤í¤à #T35 £Ò£Ï£Í
++¤í¤ê #T35 ¥í¥ê
++¤í¤ê¤³¤ó #T35 ¥í¥ê¥³¥ó
++¤í¤ê¤Ú¤É #T35 ¥í¥ê¥Ú¥É
++¤í¤ë #CJ (lol
++¤í¤ì #KK ¥í¥ì
++¤í¤í #JN ¥í¥í
++¤í¤í #T35 ¥í¥í
++¤í¤ó¤² #T35 ¥í¥óÌÓ
++¤ï¡¼¤â¤Ê¡¼ #JN ¤ï¡¼¤â¤Ê¡¼
++¤ï¤¤¤Ç¤¹¤è¤ó¤¸¤å¤¦ #JN ¥ï¥¤¥Æ¡«¥¹£´£°
++¤ï¤¤¤Ó¡¼¤Ó¡¼¤Û¤¦¤Á¤ß¤ó #T35 £Ù£Â£ÂÊüÃÖ̱
++¤ï¤«¤ª¤¯ #T35 ¤ï¤«¤ª¤¯
++¤ï¤«¤Î¤Ï¤Ê #T35 WAKANOHANA
++¤ï¤«¤á #T35 ¤ï¤«¤á
++¤ï¤±¤ï¤«¤é¤ó #JN ¥ï¥±¥ï¥«¥é¥ó
++¤ï¤µ¤Ó #T35 ¥ï¥µ¥Ó
++¤ï¤¸¤ª #CN ϱö
++¤ï¤¸¤ª #KK ϱö
++¤ï¤¸¤ª #T35 ϱö
++¤ï¤»¤À¤¨¤­ #JN Áá°ðÅıØ
++¤ï¤¿¤Ê¤Ù #T35 ÅÏÊÕ
++¤ï¤¿¤Ê¤Ù¤â¤Ê¡¼ #JN ¥ï¥¿¥Ê¥Ù¥â¥Ê¡¼
++¤ï¤¿¤Ê¤Ù¤â¤Ê¡¼ #JN ¥ï¥¿¥Ê¥Ù¥â¥Ê¡¼ 
++¤ï¤Ê #T35 æ«
++¤ï¤Ê¡¼ #JN ¥ï¥Ê¡¼
++¤ï¤é #CJ  (ÏÎ
++¤ï¤é #CJ (w
++¤ï¤é #CJ (£÷
++¤ï¤é #CJ (¥ï¥é
++¤ï¤é #CJ (Ü×
++¤ï¤é #CJ (ŽÜŽ×
++¤ï¤é #CJ w
++¤ï¤é #CJ ¤ï¤é 
++¤ï¤é #CJ ¥ï¥é
++¤ï¤é #CJ ÏÎ 
++¤ï¤é1 #JN ¥ï¥é1
++¤ï¤é1 #JN ŽÜŽ×1
++¤ï¤é¤£ #CJ ¥ï¥é¥£
++¤ï¤é¤¿ #CJ ¥ï¥é¥¿
++¤ï¤é¤¿ #CJ ŽÜŽ×ŽÀ
++¤ï¤é¤Ó #T35 ¡ÊÏÏ
++¤ï¤é¤ï¤»¤ë¤Ê #CJ ¥ï¥é¥ï¥»¥ë¥Ê
++¤ï¤é¤ï¤»¤ë¤Ê #CJ ŽÜŽ×ŽÜŽ¾ŽÙŽÅ
++¤ï¤ê¤ª #T35 ¥ï¥ê¥ª
++¤ï¤ë¤ì #R5 ¤ï¤ë¤ì
++¤ï¤ì¤¶¡¼ #T35 ¥ï¥ì¥¶¡¼
++¤ï¤ì¤¶¤Á¤å¤¦¤Ü¤¦ #T35 ¥ï¥ì¥¶¿ß˼
++¤ï¤ì¤º #T35 ¥ï¥ì¥º
++¤ï¤ì¤â¤Î #KK ¤ï¤ì¤â¤Î
++¤ï¤ì¤â¤Î #T35 ¤ï¤ì¤â¤Î
++¤ï¤ì¤â¤Î #T35 ³ä¤ìʪ
++¤ï¤í¤¿ #CJ ¥ï¥í¥¿
++¤ï¤ó¤À¡¼ #T35 WONDER
++¤ò¤«¤­¤³¤à¤¹¤ì¤À¤è #CJ ¤ò½ñ¤­¹þ¤à¥¹¥ì¤À¤è¡ª¡ª
++¤ò¤«¤­¤³¤à¤¹¤ì¤À¤è #JN ¡Ê¡¦¢Ï¡¦¡Ë
++¤ò¤¿ #JN ¥ò¥¿
++¤ò¤¿ #T35 ¥ò¥¿
++¤ò¤¿¤·¤Ë¤Ê¤Þ¤ë¤Þ¤ë #JN Ž¦ŽÀ42700
++¤ò¤¿¤¿¤¿¤­ #T35 ¥ò¥¿Ã¡¤­
++¤ò¤¿¤¿¤¿¤­¤ò¤¿ #T35 ¥ò¥¿Ã¡¤­¥ò¥¿
++¤ò¤¿¤Á¤§¤Ã¤¯ #T30 ¥ò¥¿¥Á¥§¥Ã¥¯
++¤ò¤¿¤Á¤§¤Ã¤¯¤¢¤Ë¤ò¤¿¤Ø¤ó #JN ¥ò¥¿¥Á¥§¥Ã¥¯¡Ê¥¢¥Ë¥ò¥¿ÊÔ¡Ë
++¤ò¤¿¤é¡¼ #JN ¥ò¥¿¥é¡¼
++¤ò¤¿¤é¡¼ #JN Ž¦ŽÀŽ×Ž°
++¤ò¤Á #T30 ¥ò¥Á
++¤ò¤Á¤¤¤¿ #CN ¥ò¥ÁÈÄ
++¤ò¤Á¤¤¤¿ #T35 ¥ò¥ÁÈÄ
++¤ò¤Ã¤Á #T30 ¥ò¥Ã¥Á
++¤ò¤Ã¤Á¤¤¤¿ #CN ¥ò¥Ã¥ÁÈÄ
++¤ò¤Ã¤Á¤¤¤¿ #T35 ¥ò¥Ã¥ÁÈÄ
++¤ò¤ð #T35 ¤ò¤ð
++¤ó¡¼ #JN ¤ó¡Á¡ª¡©
++¤ó¤¬¤ó¤° #CJ ¤ó¤¬¤ó¤°
++¤ó¤¸¤ã #CJ ¤ó¤¸¤ã¡ª
++¤ó¤À¤è #JN ¥ó¥À¥è
++¤ó¤À¤ó¤À #CJ ¤ó¤À¤ó¤À
++¤ó¤Ç #JN ¤ó¤Ç¡¡
++¤ó¤Ê¤³¤¿¤¢¤Ê¤¤ #CJ ¤ó¤Ê¤³¤¿¡¼¤Ê¤¤
++¤ó¤Ê¤ï¤±¤Í¡¼¤è #JN ¤ó¤Ê¤ï¤±¥Í¡¼¥è
++¤ó¤Þ #JN (`¦Æ.¡­)¡ã¤ó¤Þ!
++¤ó¤Þ #JN ¤ó¤Þ¡ª
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/native-helpers.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/native-helpers.patch
new file mode 100644
index 0000000..291b66b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/native-helpers.patch
@@ -0,0 +1,50 @@
+upstream: not applicable
+author: pH5
+comment: Stage the native anthy helpers mkfiledic, mkdepgraph, mkworddic, 
+comment: calctrans and proccorpus.
+
+--- anthy-7811/mkanthydic/Makefile.am~	2006-05-13 18:28:35.000000000 +0900
++++ anthy-7811/mkanthydic/Makefile.am	2006-06-18 10:56:25.770000000 +0900
+@@ -3,7 +3,7 @@
+ CLEANFILES = anthy.dic
+ INCLUDES = -I$(top_srcdir)/include -DSRCDIR=\"$(srcdir)\"
+ 
+-noinst_PROGRAMS = mkfiledic
++bin_PROGRAMS = mkfiledic
+ mkfiledic_SOURCES = mkfiledic.c
+ mkfiledic_LDADD = ../src-diclib/libdiclib.la
+ 
+--- anthy-7811/depgraph/Makefile.am~	2006-06-02 00:20:54.000000000 +0900
++++ anthy-7811/depgraph/Makefile.am	2006-06-18 10:57:19.420000000 +0900
+@@ -9,7 +9,7 @@
+ EXTRA_DIST = indepword.txt $(DEPWORDS)
+ 
+ # Generate the dictionary
+-noinst_PROGRAMS = mkdepgraph
++bin_PROGRAMS = mkdepgraph
+ mkdepgraph_SOURCES = mkdepgraph.c
+ mkdepgraph_LDADD =  ../src-main/libanthy.la ../src-worddic/libanthydic.la
+ 
+--- anthy-7811/mkworddic/Makefile.am~	2006-05-13 18:29:07.000000000 +0900
++++ anthy-7811/mkworddic/Makefile.am	2006-06-18 11:21:56.300000000 +0900
+@@ -16,7 +16,8 @@
+  udict dict.args.in
+ 
+ # Generate the dictionary
+-noinst_PROGRAMS = mkworddic
++#noinst_PROGRAMS = mkworddic
++bin_PROGRAMS = mkworddic
+ mkworddic_SOURCES = mkdic.c writewords.c mkudic.c calcfreq.c mkdic.h
+ mkworddic_LDADD = ../src-worddic/libanthydic.la
+
+--- anthy-9100e.orig/calctrans/Makefile.am	2008-05-08 15:04:13.000000000 +0200
++++ anthy-9100e/calctrans/Makefile.am	2008-05-08 15:04:24.000000000 +0200
+@@ -3,7 +3,7 @@
+  corpus.3.txt corpus.4.txt corpus.5.txt\
+  corpus_info weak_words
+ 
+-noinst_PROGRAMS = calctrans proccorpus
++bin_PROGRAMS = calctrans proccorpus
+ INCLUDES = -I$(top_srcdir)/
+ 
+ calctrans_SOURCES = calctrans.c input_set.c input_set.h corpus.c
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/not_build_elc.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/not_build_elc.patch
new file mode 100644
index 0000000..bf748f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/not_build_elc.patch
@@ -0,0 +1,16 @@
+upstream: not applicable
+source: stolen from debian
+
+diff -Naur anthy-7811/src-util.orig/Makefile.am anthy-7811/src-util/Makefile.am
+--- anthy-7811/src-util.orig/Makefile.am	2006-06-18 10:47:55.790000000 +0900
++++ anthy-7811/src-util/Makefile.am	2006-06-18 10:48:23.860000000 +0900
+@@ -6,7 +6,8 @@
+  anthy-isearch.el anthy-azik.el anthy-kyuri.el
+ EXTRA_DIST = $(ELISP_FILES) typetab dic-tool-usage.txt rcsize.rb
+ bin_PROGRAMS = anthy-dic-tool anthy-agent anthy-morphological-analyzer
+-ELCFILES = anthy.elc anthy-dic.elc anthy-azik.elc anthy-conf.elc anthy-isearch.elc anthy-kyuri.elc leim-list.elc
++#ELCFILES = anthy.elc anthy-dic.elc anthy-azik.elc anthy-conf.elc anthy-isearch.elc anthy-kyuri.elc leim-list.elc
++ELCFILES = 
+ if ELISP
+ lisp_LISP = $(ELISP_FILES)
+ endif
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/target-helpers.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/target-helpers.patch
new file mode 100644
index 0000000..d22c356
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy/target-helpers.patch
@@ -0,0 +1,111 @@
+diff -Nurp anthy-9100h.org/calctrans/Makefile.am anthy-9100h/calctrans/Makefile.am
+--- anthy-9100h.org/calctrans/Makefile.am	2007-10-27 23:02:59.000000000 +0900
++++ anthy-9100h/calctrans/Makefile.am	2014-11-11 17:14:42.152999991 +0900
+@@ -15,31 +15,31 @@ dict_source_files = anthy.cand_info anth
+ 
+ update_params:
+ 	rm -f parsed_data2
+-	./proccorpus $(srcdir)/corpus.?.txt > parsed_data
+-	./calctrans parsed_data -o $(srcdir)/corpus_info
+-	./calctrans parsed_data -e -o $(srcdir)/weak_words
++	proccorpus $(srcdir)/corpus.?.txt > parsed_data
++	calctrans parsed_data -o $(srcdir)/corpus_info
++	calctrans parsed_data -e -o $(srcdir)/weak_words
+ 	make do_update_params
+ 
+ update_params0:
+ 	rm -f parsed_data2
+-	./proccorpus $(srcdir)/corpus.0.txt > parsed_data
+-	./calctrans parsed_data -o $(srcdir)/corpus_info
+-	./calctrans parsed_data -e -o $(srcdir)/weak_words
++	proccorpus $(srcdir)/corpus.0.txt > parsed_data
++	calctrans parsed_data -o $(srcdir)/corpus_info
++	calctrans parsed_data -e -o $(srcdir)/weak_words
+ 	make do_update_params
+ 
+ update_params2:
+-	./proccorpus $(srcdir)/corpus.?.txt >> parsed_data2
+-	./calctrans parsed_data parsed_data2 -o $(srcdir)/corpus_info
+-	./calctrans parsed_data parsed_data2 -e -o $(srcdir)/weak_words
++	proccorpus $(srcdir)/corpus.?.txt >> parsed_data2
++	calctrans parsed_data parsed_data2 -o $(srcdir)/corpus_info
++	calctrans parsed_data parsed_data2 -e -o $(srcdir)/weak_words
+ 	make do_update_params
+ 
+ do_update_params:
+-	./calctrans -c $(srcdir)/corpus_info
++	calctrans -c $(srcdir)/corpus_info
+ 	rm -f $(dict_source_files)
+ 	make $(dict_source_files)
+ 
+-$(dict_source_files): $(srcdir)/corpus_info $(srcdir)/weak_words calctrans
+-	./calctrans -c $(srcdir)/corpus_info $(srcdir)/weak_words
++$(dict_source_files): $(srcdir)/corpus_info $(srcdir)/weak_words
++	calctrans -c $(srcdir)/corpus_info $(srcdir)/weak_words
+ 
+ noinst_DATA = $(dict_source_files)
+ CLEANFILES = $(dict_source_files) parsed_data parsed_data2 anthy.feature_info
+diff -Nurp anthy-9100h.org/depgraph/Makefile.am anthy-9100h/depgraph/Makefile.am
+--- anthy-9100h.org/depgraph/Makefile.am	2008-11-29 21:46:14.000000000 +0900
++++ anthy-9100h/depgraph/Makefile.am	2014-11-11 17:12:03.813999991 +0900
+@@ -9,11 +9,11 @@ CLEANFILES = anthy.dep
+ EXTRA_DIST = indepword.txt $(DEPWORDS)
+ 
+ # Generate the dictionary
+-noinst_PROGRAMS = mkdepgraph
+-mkdepgraph_SOURCES = mkdepgraph.c
+-mkdepgraph_LDADD =  ../src-main/libanthy.la ../src-worddic/libanthydic.la
++#noinst_PROGRAMS = mkdepgraph
++#mkdepgraph_SOURCES = mkdepgraph.c
++#mkdepgraph_LDADD =  ../src-main/libanthy.la ../src-worddic/libanthydic.la
+ 
+-anthy.dep : mkdepgraph $(DEPWORDS)
+-	./mkdepgraph
++anthy.dep : $(DEPWORDS)
++	mkdepgraph
+ 
+ noinst_DATA = anthy.dep
+diff -Nurp anthy-9100h.org/mkanthydic/Makefile.am anthy-9100h/mkanthydic/Makefile.am
+--- anthy-9100h.org/mkanthydic/Makefile.am	2007-04-14 18:01:10.000000000 +0900
++++ anthy-9100h/mkanthydic/Makefile.am	2014-11-11 17:10:34.792999991 +0900
+@@ -3,12 +3,12 @@ noinst_SCRIPTS =
+ CLEANFILES = anthy.dic
+ INCLUDES = -I$(top_srcdir)/ -DSRCDIR=\"$(srcdir)\"
+ 
+-noinst_PROGRAMS = mkfiledic
+-mkfiledic_SOURCES = mkfiledic.c
+-mkfiledic_LDADD = ../src-diclib/libdiclib.la
++#noinst_PROGRAMS = mkfiledic
++#mkfiledic_SOURCES = mkfiledic.c
++#mkfiledic_LDADD = ../src-diclib/libdiclib.la
+ 
+-anthy.dic : mkfiledic ../mkworddic/anthy.wdic ../depgraph/anthy.dep ../calctrans/anthy.cand_info ../calctrans/anthy.trans_info ../calctrans/anthy.corpus_array ../calctrans/anthy.corpus_bucket
+-	./mkfiledic
++anthy.dic : ../mkworddic/anthy.wdic ../depgraph/anthy.dep ../calctrans/anthy.cand_info ../calctrans/anthy.trans_info ../calctrans/anthy.corpus_array ../calctrans/anthy.corpus_bucket
++	mkfiledic
+ 
+ 
+ # To install 
+diff -Nurp anthy-9100h.org/mkworddic/Makefile.am anthy-9100h/mkworddic/Makefile.am
+--- anthy-9100h.org/mkworddic/Makefile.am	2009-01-23 12:31:31.000000000 +0900
++++ anthy-9100h/mkworddic/Makefile.am	2014-11-11 17:13:31.946999992 +0900
+@@ -26,14 +26,14 @@ DIC_FILES = @top_srcdir@/alt-cannadic/gc
+ 	    @top_srcdir@/mkworddic/udict
+ 
+ # Generate the dictionary
+-noinst_PROGRAMS = mkworddic
+-mkworddic_SOURCES = mkdic.c writewords.c mkudic.c calcfreq.c mkdic.h
+-mkworddic_LDADD = ../src-worddic/libanthydic.la
++#noinst_PROGRAMS = mkworddic
++#mkworddic_SOURCES = mkdic.c writewords.c mkudic.c calcfreq.c mkdic.h
++#mkworddic_LDADD = ../src-worddic/libanthydic.la
+ 
+ noinst_DATA = anthy.wdic
+ 
+-anthy.wdic : mkworddic $(DIC_FILES)
+-	   ./mkworddic -f ./dict.args
++anthy.wdic : $(DIC_FILES)
++	   mkworddic -f ./dict.args
+ 
+ 
+ # To install
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy_9100h.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy_9100h.bb
new file mode 100644
index 0000000..e121b44
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/anthy/anthy_9100h.bb
@@ -0,0 +1,42 @@
+DESCRIPTION="Anthy is a system for Japanese input method. It converts Hiragana text to Kana Kanji mixed text."
+AUTHOR = "Anthy Developers <anthy-dev@lists.sourceforge.jp>"
+HOMEPAGE = "http://anthy.sourceforge.jp"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=11f384074d8e93e263b5664ef08a411a"
+
+SRC_URI = "http://osdn.dl.sourceforge.jp/anthy/37536/anthy-9100h.tar.gz \
+           file://not_build_elc.patch \
+           file://2ch_t.patch \
+          "
+
+SRC_URI_append_class-target = "file://target-helpers.patch"
+SRC_URI_append_class-native = "file://native-helpers.patch"
+
+SRC_URI[md5sum] = "1f558ff7ed296787b55bb1c6cf131108"
+SRC_URI[sha256sum] = "d256f075f018b4a3cb0d165ed6151fda4ba7db1621727e0eb54569b6e2275547"
+
+DEPENDS_class-target = "anthy-native"
+RDEPENDS_${PN}_class-target = "libanthy0"
+
+inherit autotools pkgconfig
+
+PACKAGES += "${PN}-el libanthy0 libanthy-dev"
+
+FILES_${PN}-dbg += "${libdir}/.debug"
+FILES_libanthy0 = "${libdir}/libanthy.so.*  \
+		   ${libdir}/libanthydic.so.*   \
+		   ${libdir}/libanthyinput.so.*"
+
+FILES_libanthy-dev = "${libdir}/libanthy*.la \
+		      ${libdir}/libanthy*.a \
+		      ${libdir}/libanthy*.so \
+		      ${includedir}/anthy   \
+		      ${libdir}/pkgconfig/anthy.pc"
+
+FILES_${PN}-el = "${datadir}/emacs/*"
+FILES_${PN} = "${datadir}/* \
+	       ${bindir}/* \
+	       ${sysconfdir}/anthy-conf"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/apcupsd/apcupsd_3.14.10.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/apcupsd/apcupsd_3.14.10.bb
new file mode 100644
index 0000000..35c891e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/apcupsd/apcupsd_3.14.10.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Apcupsd a daemon for controlling APC UPSes"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c12853cc7fdf20d17b4fddefd26b7802"
+
+SRC_URI = "http://garr.dl.sourceforge.net/project/apcupsd/apcupsd%20-%20Stable/3.14.10/apcupsd-${PV}.tar.gz"
+SRC_URI[md5sum] = "5928822d855c5cf7ac29655e3e0b8c23"
+SRC_URI[sha256sum] = "0707b5ec9916fbde9e44eb8d18037c8d8f75dfd6aeef51aba5487e189eef2032"
+
+PNBLACKLIST[apcupsd] ?= "BROKEN: doesn't build with B!=S"
+
+inherit autotools
+
+LD = "${CXX}"
+
+EXTRA_OECONF = "--without-x \
+                --enable-usb \
+                --with-distname=${DISTRO}"
+
+do_configure() {
+    export topdir=${S}
+    cp -R --no-dereference --preserve=mode,links -v ${S}/autoconf/configure.in ${S}
+
+    if ! [ -d ${S}/platforms/${DISTRO} ] ; then
+        cp -R --no-dereference --preserve=mode,links -v ${S}/platforms/unknown ${S}/platforms/${DISTRO} 
+    fi
+
+    gnu-configize --force
+    # install --help says '-c' is an ignored option, but it turns out that the argument to -c isn't ignored, so drop the complete '-c path/to/strip' line
+    sed -i -e 's:$(INSTALL_PROGRAM) $(STRIP):$(INSTALL_PROGRAM):g' ${S}/autoconf/targets.mak
+    # Searching in host dirs triggers the QA checks
+    sed -i -e 's:-I/usr/local/include::g' -e 's:-L/usr/local/lib64::g' -e 's:-L/usr/local/lib::g' ${S}/configure
+
+    # m4 macros are missing, using autotools_do_configure leads to linking errors with gethostname_re
+    oe_runconf
+}
+
+do_install_append() {
+    rm ${D}${datadir}/hal -rf
+}
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/asio/asio.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/asio/asio.inc
new file mode 100644
index 0000000..9cea824
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/asio/asio.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Asio is a cross-platform C++ library for network and low-level \
+        I/O programming that provides developers with a consistent asynchronous \
+        model using a modern C++ approach."
+AUTHOR = "Christopher M. Kohlhoff (chris at kohlhoff dot com)"
+HOMEPAGE = "http://think-async.com/Asio"
+SECTION = "libs"
+LICENSE = "BSL-1.0"
+
+DEPENDS = "boost"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2"
+
+inherit autotools
+
+ALLOW_EMPTY_${PN} = "1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/asio/asio_1.10.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/asio/asio_1.10.1.bb
new file mode 100644
index 0000000..fdfaaf6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/asio/asio_1.10.1.bb
@@ -0,0 +1,6 @@
+require asio.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=113f800aa522d9e38c3309c98ec53ade"
+
+SRC_URI[md5sum] = "4d508c9947404fee40945375b8a5fd32"
+SRC_URI[sha256sum] = "820a5dad3c56a4f3e937f2b9ae059ab2696c6058345d71b7a8b072a0f2fcbd99"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/fix-permissions.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/fix-permissions.patch
new file mode 100644
index 0000000..ee74199
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/fix-permissions.patch
@@ -0,0 +1,52 @@
+Update permissions of executable files that remove setuid bit and make everyone
+could read.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/Makefile b/Makefile
+index a65b9b6..21d9828 100644
+--- a/Makefile
++++ b/Makefile
+@@ -66,7 +66,7 @@ systemdinstall:	genericinstall
+ 		chmod 0644            $(DESTDIR)$(SYSDPATH)/atopacct.service
+ 		cp atop.cronsystemd   $(DESTDIR)$(CRNPATH)/atop
+ 		cp atop-pm.sh         $(DESTDIR)$(PMPATHD)
+-		chmod 0711            $(DESTDIR)$(PMPATHD)/atop-pm.sh
++		chmod 0755            $(DESTDIR)$(PMPATHD)/atop-pm.sh
+ 		#
+ 		# only when making on target system:
+ 		#
+@@ -91,11 +91,11 @@ sysvinstall:	genericinstall
+ 		#
+ 		if [   -d $(DESTDIR)$(PMPATH1) ]; 			\
+ 		then	cp 45atoppm $(DESTDIR)$(PMPATH1); 		\
+-			chmod 0711  $(DESTDIR)$(PMPATH1)/45atoppm;	\
++			chmod 0755  $(DESTDIR)$(PMPATH1)/45atoppm;	\
+ 		fi
+ 		if [ -d $(DESTDIR)$(PMPATH2) ]; 			\
+ 		then	cp 45atoppm $(DESTDIR)$(PMPATH2);		\
+-			chmod 0711  $(DESTDIR)$(PMPATH2)/45atoppm;	\
++			chmod 0755  $(DESTDIR)$(PMPATH2)/45atoppm;	\
+ 		fi
+ 		#
+ 		#
+@@ -139,7 +139,7 @@ genericinstall:	atop atopacctd
+ 		#
+ 		cp atop   		$(DESTDIR)$(BINPATH)/atop
+ 		chown root		$(DESTDIR)$(BINPATH)/atop
+-		chmod 04711 		$(DESTDIR)$(BINPATH)/atop
++		chmod 0755 		$(DESTDIR)$(BINPATH)/atop
+ 		ln -sf atop             $(DESTDIR)$(BINPATH)/atopsar
+ 		cp atopacctd  		$(DESTDIR)$(SBINPATH)/atopacctd
+ 		chown root		$(DESTDIR)$(SBINPATH)/atopacctd
+@@ -147,7 +147,7 @@ genericinstall:	atop atopacctd
+ 		cp atop   		$(DESTDIR)$(BINPATH)/atop-$(VERS)
+ 		ln -sf atop-$(VERS)     $(DESTDIR)$(BINPATH)/atopsar-$(VERS)
+ 		cp atop.daily    	$(DESTDIR)$(SCRPATH)
+-		chmod 0711 	 	$(DESTDIR)$(SCRPATH)/atop.daily
++		chmod 0755 	 	$(DESTDIR)$(SCRPATH)/atop.daily
+ 		cp man/atop.1    	$(DESTDIR)$(MAN1PATH)
+ 		cp man/atopsar.1 	$(DESTDIR)$(MAN1PATH)
+ 		cp man/atoprc.5  	$(DESTDIR)$(MAN5PATH)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/remove-bashisms.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/remove-bashisms.patch
new file mode 100644
index 0000000..f1fcbfe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/remove-bashisms.patch
@@ -0,0 +1,33 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/atop-pm.sh b/atop-pm.sh
+index 7f41a86..3ff4ab5 100755
+--- a/atop-pm.sh
++++ b/atop-pm.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ case "$1" in
+ 	pre)	/usr/bin/systemctl stop atop
+diff --git a/atop.daily b/atop.daily
+index 24d33bd..f29bd94 100755
+--- a/atop.daily
++++ b/atop.daily
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ CURDAY=`date +%Y%m%d`
+ LOGPATH=/var/log/atop
+@@ -16,7 +16,7 @@ then
+ 
+ 	while ps -p `cat $PIDFILE` > /dev/null
+ 	do
+-		let CNT+=1
++		CNT=$((CNT+1))
+ 
+ 		if [ $CNT -gt 5 ]
+ 		then
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/sysvinit-implement-status.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/sysvinit-implement-status.patch
new file mode 100644
index 0000000..5994d3e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/sysvinit-implement-status.patch
@@ -0,0 +1,27 @@
+Implement the sub-command status.
+
+Upstream-Status: Pending
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/atop.init b/atop.init
+index 108bdc5..9f89fad 100755
+--- a/atop.init
++++ b/atop.init
+@@ -18,6 +18,8 @@
+ # Check existance of binaries 
+ [ -f /usr/bin/atop ] || exit 0
+ 
++[ -f /etc/init.d/functions ] && . /etc/init.d/functions
++
+ PIDFILE=/var/run/atop.pid
+ RETVAL=0
+ 
+@@ -63,6 +65,7 @@ case "$1" in
+ 	;;
+ 
+   status)
++	status atop
+ 	;;
+ 
+   reload)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/volatiles.99_atop b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/volatiles.99_atop
new file mode 100644
index 0000000..24ea3f2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/volatiles.99_atop
@@ -0,0 +1 @@
+d root root 0755 /var/volatile/log/atop none
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/volatiles.atop.conf b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/volatiles.atop.conf
new file mode 100644
index 0000000..2f23000
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop/volatiles.atop.conf
@@ -0,0 +1 @@
+d               /var/volatile/log/atop               -       -       -       -
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop_2.2.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop_2.2.3.bb
new file mode 100644
index 0000000..21311e3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/atop/atop_2.2.3.bb
@@ -0,0 +1,62 @@
+SUMMARY = "Monitor for system resources and process activity"
+DESCRIPTION = "Atop is an ASCII full-screen performance monitor for Linux that \
+is capable of reporting the activity of all processes (even if processes have \
+finished during the interval), daily logging of system and process activity for \
+long-term analysis, highlighting overloaded system resources by using colors, \
+etc. At regular intervals, it shows system-level activity related to the CPU, \
+memory, swap, disks (including LVM) and network layers, and for every process \
+(and thread) it shows e.g. the CPU utilization, memory growth, disk \
+utilization, priority, username, state, and exit code."
+HOMEPAGE = "http://www.atoptool.nl"
+SECTION = "console/utils"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
+
+DEPENDS = "ncurses zlib"
+
+ATOP_VER = "${@'-'.join(d.getVar('PV', True).rsplit('.', 1))}"
+
+SRC_URI = " \
+    http://www.atoptool.nl/download/${BPN}-${ATOP_VER}.tar.gz \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'file://volatiles.atop.conf', 'file://volatiles.99_atop', d)} \
+    file://remove-bashisms.patch \
+    file://fix-permissions.patch \
+    file://sysvinit-implement-status.patch \
+"
+
+SRC_URI[md5sum] = "034dc1544f2ec4e4d2c739d320dc326d"
+SRC_URI[sha256sum] = "c785b8a2355be28b3de6b58a8ea4c4fcab8fadeaa57a99afeb03c66fac8e055d"
+
+S = "${WORKDIR}/${BPN}-${ATOP_VER}"
+
+do_compile() {
+    oe_runmake all
+}
+
+do_install() {
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        make DESTDIR=${D} VERS=${ATOP_VER} SYSDPATH=${systemd_system_unitdir} \
+            PMPATHD=${systemd_unitdir}/system-sleep systemdinstall
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        install -m 644 ${WORKDIR}/volatiles.atop.conf ${D}${sysconfdir}/tmpfiles.d/atop.conf
+        rm -f ${D}${systemd_system_unitdir}/atopacct.service
+    else
+        make DESTDIR=${D} VERS=${ATOP_VER} sysvinstall
+        install -d ${D}${sysconfdir}/default/volatiles
+        install -m 644 ${WORKDIR}/volatiles.99_atop ${D}${sysconfdir}/default/volatiles/99_atop
+        rm -f ${D}${sysconfdir}/init.d/atopacct
+    fi
+
+    # remove atopacct related files
+    rm -rf ${D}${sbindir} ${D}${mandir}/man8
+}
+
+inherit systemd
+
+SYSTEMD_SERVICE_${PN} = "atop.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+FILES_${PN} += "${systemd_unitdir}/system-sleep"
+
+RDEPENDS_${PN} = "procps"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb
new file mode 100644
index 0000000..ecc9524
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Frame handles simultaneous touches"
+
+HOMEPAGE = "https://launchpad.net/frame"
+
+LICENSE = "GPLv3 & LGPLv3"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02 \
+    file://COPYING.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
+"
+
+inherit autotools pkgconfig
+
+SRC_URI = "https://launchpad.net/${BPN}/trunk/v${PV}/+download/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "02baa941091c5d198cd1623b3ad36e68"
+SRC_URI[sha256sum] = "cfb9ab52cdccd926f1822a457264d0014c7eb9f4600a72626063dd073b26256f"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG[x11] = "--enable-x11, --disable-x11, libxi xext virtual/xserver"
+
+PACKAGE_BEFORE_PN += "${PN}-test"
+FILES_${PN}-test = "${bindir}/frame-test*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb
new file mode 100644
index 0000000..bc88143
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb
@@ -0,0 +1,54 @@
+SUMMARY = "An implementation of the GEIS interface"
+DESCRIPTION = "An implementation of the GEIS (Gesture Engine Interface and Support) \
+interface\
+GEIS is a library for applications and toolkit programmers which \
+provides a consistent platform independent interface for any \
+system-wide input gesture recognition mechanism."
+
+HOMEPAGE = "https://launchpad.net/geis"
+
+LICENSE = "GPLv3 & LGPLv3"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=6a6a8e020838b23406c81b19c1d46df6 \
+    file://COPYING.GPL;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
+"
+
+inherit autotools pkgconfig python3native lib_package distro_features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+DEPENDS += "grail dbus-glib python3 virtual/libx11 libxext libxi libxcb dbus frame"
+
+SRC_URI = "https://launchpad.net/${BPN}/trunk/${PV}/+download/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "2ff9d76a3ea5794516bb02c9d1924faf"
+SRC_URI[sha256sum] = "8a60f5683852094038904e690d23cc5a90a980fc52da67f0f28890baa25c70eb"
+
+EXTRA_OECONF = "--disable-integration-tests"
+
+FILES_${PN}-bin = "${bindir}"
+RDEPENDS_${PN}-bin = " \
+    python3-compression \
+    python3-core \
+    python3-crypt \
+    python3-ctypes \
+    python3-fcntl \
+    python3-misc \
+    python3-pickle \
+    python3-shell \
+    python3-stringold \
+    python3-subprocess \
+    python3-textutils \
+    python3-threading \
+"
+
+FILES_${PN} += " \
+    ${datadir}/geisview \
+    ${libdir}/${PYTHON_DIR}/site-packages/geis* \
+    ${libdir}/${PYTHON_DIR}/site-packages/_*.so \
+"
+
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/.debug"
+
+FILES_${PN}-dev += "${libdir}/${PYTHON_DIR}/site-packages/_*.la"
+
+FILES_${PN}-staticdev += "${libdir}/${PYTHON_DIR}/site-packages/_*.a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.0.bb
new file mode 100644
index 0000000..6ea10d6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Gesture Recognition And Instantiation Library"
+
+HOMEPAGE = "https://launchpad.net/grail"
+
+LICENSE = "GPLv3 & LGPLv3"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02 \
+    file://COPYING.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
+"
+
+inherit autotools pkgconfig
+
+DEPENDS = "frame"
+
+SRC_URI = "https://launchpad.net/${BPN}/trunk/${PV}/+download/${BPN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "2ac56af5f6f466b433c99ca12f34c34f"
+SRC_URI[sha256sum] = "c26dced1b3f4317ecf6af36db0e90294d87e43966d56aecc4e97b65368ab78b9"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG[x11] = "--with-x11, --without-x11, libxi"
+
+PACKAGE_BEFORE_PN += "${PN}-test"
+FILES_${PN}-test = "${bindir}/grail-test*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/ccid/ccid/no-dep-on-libfl.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/ccid/ccid/no-dep-on-libfl.patch
new file mode 100644
index 0000000..477cc31
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/ccid/ccid/no-dep-on-libfl.patch
@@ -0,0 +1,18 @@
+No need to link with libfl.
+
+Upstream-Status: Pending
+Signed-off-by: Jacob Kroon <jacob.kroon@mikrodidakt.se>
+
+Index: ccid-1.4.8/src/Makefile.am
+===================================================================
+--- ccid-1.4.8.orig/src/Makefile.am
++++ ccid-1.4.8/src/Makefile.am
+@@ -53,7 +53,7 @@ PROVIDED_BY_PCSC = debug.c
+ endif
+ 
+ libccid_la_SOURCES = $(COMMON) $(USB) $(TOKEN_PARSER) $(PROVIDED_BY_PCSC) $(T1)
+-libccid_la_LIBADD = $(LEXLIB) $(LIBUSB_LIBS) $(PTHREAD_LIBS)
++libccid_la_LIBADD = $(LIBUSB_LIBS) $(PTHREAD_LIBS)
+ libccid_la_CFLAGS = $(PCSC_CFLAGS) $(LIBUSB_CFLAGS) $(PTHREAD_CFLAGS) \
+ 	$(SYMBOL_VISIBILITY) -D$(CCID_VERSION) -DSIMCLIST_NO_DUMPRESTORE
+ libccid_la_LDFLAGS = -avoid-version
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.19.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.19.bb
new file mode 100644
index 0000000..f77e069
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.19.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Generic USB CCID smart card reader driver"
+HOMEPAGE = "http://pcsclite.alioth.debian.org/ccid.html"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+DEPENDS = "virtual/libusb0 pcsc-lite"
+RDEPENDS_${PN} = "pcsc-lite"
+
+SRC_URI = "https://alioth.debian.org/frs/download.php/file/4132/ccid-${PV}.tar.bz2 \
+	   file://no-dep-on-libfl.patch "
+
+SRC_URI[md5sum] = "d1eed995ba9a2eb395a65a8a78090f52"
+SRC_URI[sha256sum] = "cccb2c2bb4e56689efe34559f713102d92f94735542e58d3e4334e1459e934e1"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${libdir}/pcsc/"
+FILES_${PN}-dbg += "${libdir}/pcsc/drivers/*/*/*/.debug"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/ckermit/ckermit_302.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/ckermit/ckermit_302.bb
new file mode 100644
index 0000000..187a57e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/ckermit/ckermit_302.bb
@@ -0,0 +1,60 @@
+DESCRIPTION = "C-Kermit is a combined serial and network communication \
+software package offering a consistent, medium-independent, \
+cross-platform approach to connection establishment, terminal \
+sessions, file transfer, character-set translation, and automation \
+of communication tasks."
+HOMEPAGE = "www.kermitproject.org/ck90.html"
+SECTION = "console/network"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING.TXT;md5=932ca542d6c6cb8a59a0bcd76ab67cc3"
+
+SRC_URI = "http://www.kermitproject.org/ftp/kermit/archives/cku${PV}.tar.gz;subdir=${BPN}-${PV}"
+SRC_URI[md5sum] = "eac4dbf18b45775e4cdee5a7c74762b0"
+SRC_URI[sha256sum] = "0d5f2cd12bdab9401b4c836854ebbf241675051875557783c332a6a40dac0711"
+
+
+export CC2 = "${CC}"
+export BINDIR = "${bindir}"
+export MANDIR = "${mandir}/man1"
+export INFODIR = "${infodir}"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+# Additional flags. For uclibc we add -DNOARROWKEYS which stops ckermit
+# trying to look inside the stdio headers.
+CKERMIT_ADDITIONAL = ""
+CKERMIT_ADDITIONAL_libc-uclibc = "-DNOARROWKEYS"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_compile () {
+    # The original makefile doesn't differentiate between CC and CC_FOR_BUILD,
+    # so we build wart manually. Note that you need a ckwart.o with the proper
+    # timestamp to make this hack work:
+    ${BUILD_CC} -c ckwart.c
+    ${BUILD_CC} -o wart ckwart.o
+    ./wart ckcpro.w ckcpro.c
+
+    # read ${S}/ckccfg.txt to understand this :-)
+    oe_runmake wermit CFLAGS="${CFLAGS} -DLINUX -DCK_POSIX_SIG \
+        -DNOTCPOPTS -DLINUXFSSTND -DNOCOTFMC -DPOSIX -DUSE_STRERROR \
+        -DNOSYSLOG -DHAVE_PTMX -DNO_DNS_SRV -DNOGFTIMER \
+        -DNOB_50 -DNOB_75 -DNOB_134 -DNOB_150 -DNOB_200 \
+        -DNOB_1800 -DNOB_3600 -DNOB_7200 -DNOB_76K -DNOB_230K \
+        -DNOB_460K -DNOB_921K \
+        -DNOCSETS -DNONET -DNOUNICODE -DNOHELP -DNODEBUG \
+        -DNOFRILLS -DNOFTP -DNODIAL -DNOPUSH -DNOIKSD -DNOHTTP -DNOFLOAT \
+        -DNOSERVER -DNOSEXP -DNORLOGIN -DNOOLDMODEMS -DNOSSH -DNOLISTEN \
+        -DNORESEND -DNOAUTODL -DNOSTREAMING -DNOHINTS -DNOCKXYZ -DNOLEARN \
+        -DNOMKDIR -DNOPERMS -DNOCKTIMERS -DNOCKREGEX -DNOREALPATH \
+        -DCK_SMALL -DNOLOGDIAL -DNORENAME -DNOWHATAMI \
+        ${CKERMIT_ADDITIONAL}"
+}
+
+do_install () {
+    install -d ${D}${BINDIR} ${D}${MANDIR} ${D}${INFODIR}
+    oe_runmake 'DESTDIR=${D}' install
+    # Fix up dangling symlink
+    rm ${D}${BINDIR}/kermit-sshsub
+    (cd ${D}${BINDIR} && ln -s ${BINDIR}/kermit kermit-sshusb)
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/cpufrequtils/cpufrequtils/0001-dont-unset-cflags.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/cpufrequtils/cpufrequtils/0001-dont-unset-cflags.patch
new file mode 100644
index 0000000..fb2f07f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/cpufrequtils/cpufrequtils/0001-dont-unset-cflags.patch
@@ -0,0 +1,30 @@
+--- git.old/Makefile	2012-04-17 13:29:46.280435340 +0200
++++ git/Makefile	2012-04-17 13:31:13.664433470 +0200
+@@ -77,17 +77,7 @@ INSTALL_PROGRAM = ${INSTALL}
+ INSTALL_DATA  = ${INSTALL} -m 644
+ INSTALL_SCRIPT = ${INSTALL_PROGRAM}
+ 
+-# If you are running a cross compiler, you may want to set this
+-# to something more interesting, like "arm-linux-".  If you want
+-# to compile vs uClibc, that can be done here as well.
+-CROSS = #/usr/i386-linux-uclibc/usr/bin/i386-uclibc-
+-CC = $(CROSS)gcc
+-LD = $(CROSS)gcc
+-AR = $(CROSS)ar
+-STRIP = $(CROSS)strip
+-RANLIB = $(CROSS)ranlib
+-HOSTCC = gcc
+-
++HOSTCC = $(BUILD_CC)
+ 
+ # Now we set up the build system
+ #
+@@ -95,7 +85,7 @@ HOSTCC = gcc
+ # set up PWD so that older versions of make will work with our build.
+ PWD = $(shell pwd)
+ 
+-export CROSS CC AR STRIP RANLIB CFLAGS LDFLAGS LIB_OBJS
++export CFLAGS LDFLAGS LIB_OBJS
+ 
+ # check if compiler option is supported
+ cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; fi;}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/cpufrequtils/cpufrequtils_008.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/cpufrequtils/cpufrequtils_008.bb
new file mode 100644
index 0000000..88fcc02
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/cpufrequtils/cpufrequtils_008.bb
@@ -0,0 +1,37 @@
+DESCRIPTION = "To make access to the Linux kernel cpufreq subsystem easier for users and cpufreq userspace tools, a cpufrequtils package was created"
+
+inherit gettext
+
+DEPENDS = "libtool-cross"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRCREV = "a2f0c39d5f21596bb9f5223e895c0ff210b265d0"
+# SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/cpufreq/cpufrequtils.git
+
+SRC_URI = "git://github.com/emagii/cpufrequtils.git \
+           file://0001-dont-unset-cflags.patch \
+"
+
+EXTRA_OEMAKE_append = " ${@['', 'NLS=false']['${USE_NLS}' == 'no']} "
+
+PR = "r5"
+
+S = "${WORKDIR}/git"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+EXTRA_OEMAKE = "V=1 CROSS=${TARGET_PREFIX} LIBTOOL='${HOST_SYS}-libtool --tag cc' STRIPCMD=echo 'CP=cp'"
+
+do_compile() {
+    oe_runmake
+}
+
+do_install() {
+    oe_runmake -e install DESTDIR=${D}
+    rm -f ${D}${libdir}/libcpufreq.so.0 ${D}${libdir}/libcpufreq.so
+    ln -s libcpufreq.so.0.0.0 ${D}${libdir}/libcpufreq.so.0
+    ln -s libcpufreq.so.0.0.0 ${D}${libdir}/libcpufreq.so
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/cryptsetup/cryptsetup_1.7.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/cryptsetup/cryptsetup_1.7.0.bb
new file mode 100644
index 0000000..16c21d3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/cryptsetup/cryptsetup_1.7.0.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Manage plain dm-crypt and LUKS encrypted volumes"
+DESCRIPTION = "Cryptsetup is used to conveniently setup dm-crypt managed \
+device-mapper mappings. These include plain dm-crypt volumes and \
+LUKS volumes. The difference is that LUKS uses a metadata header \
+and can hence offer more features than plain dm-crypt. On the other \
+hand, the header is visible and vulnerable to damage."
+HOMEPAGE = "http://code.google.com/p/cryptsetup/"
+SECTION = "console"
+LICENSE = "GPL-2.0-with-OpenSSL-exception"
+LIC_FILES_CHKSUM = "file://COPYING;md5=32107dd283b1dfeb66c9b3e6be312326"
+
+DEPENDS = "util-linux lvm2 popt libgcrypt"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v1.7/${BP}.tar.xz"
+SRC_URI[md5sum] = "56c385fe87fc2b6873df4b7f89202d0f"
+SRC_URI[sha256sum] = "075524a7cc0db36d12119fa79116750accb1c6c8825d5faa2534b74b8ce3d148"
+
+inherit autotools gettext pkgconfig
+
+# Use openssl because libgcrypt drops root privileges
+# if libgcrypt is linked with libcap support
+PACKAGECONFIG ??= "openssl"
+PACKAGECONFIG[openssl] = "--with-crypto_backend=openssl,,openssl"
+PACKAGECONFIG[gcrypt] = "--with-crypto_backend=gcrypt,,libgcrypt"
+
+RRECOMMENDS_${PN} = "kernel-module-aes-generic \
+                     kernel-module-dm-crypt \
+                     kernel-module-md5 \
+                     kernel-module-cbc \
+                     kernel-module-sha256-generic \
+"
+
+EXTRA_OECONF = "--enable-static"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/ctapi-common/ctapi-common_1.1-11.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/ctapi-common/ctapi-common_1.1-11.bb
new file mode 100644
index 0000000..a3b67f7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/ctapi-common/ctapi-common_1.1-11.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Common files and packaging infrastructure for CT-API modules"
+HOMEPAGE = "http://fedoraproject.org/"
+SECTION = "System Environment/Libraries"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://../ctapi-common.LICENSE;md5=8744cd52545ecb45befebd0da6f70f0a"
+
+SRC_URI = "http://ftp.riken.jp/Linux/fedora/releases/20/Fedora/source/SRPMS/c/${BPN}-${PV}.fc20.src.rpm;extract=ctapi-common.LICENSE \
+           http://ftp.riken.jp/Linux/fedora/releases/20/Fedora/source/SRPMS/c/${BPN}-${PV}.fc20.src.rpm;extract=ctapi-common.README"
+SRC_URI[md5sum] = "f02e67487c48319376800563a2659502"
+SRC_URI[sha256sum] = "32399819b0a1cac1abb2b8f0f180c572c93809faad36c46825dd536e4844c7cf"
+
+do_compile() {
+    install -pm 644 ${WORKDIR}/ctapi-common.LICENSE LICENSE
+    install -pm 644 ${WORKDIR}/ctapi-common.README README
+    echo ${libdir}/ctapi > ctapi.conf
+}
+
+do_install() {
+    install -Dpm 644 ctapi.conf ${D}${sysconfdir}/ld.so.conf.d/ctapi-${TARGET_ARCH}.conf
+    install -dm 755 ${D}${libdir}/ctapi
+}
+
+FILES_${PN} += "${libdir}/ctapi"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/daemonize/daemonize_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/daemonize/daemonize_git.bb
new file mode 100644
index 0000000..8b1591c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/daemonize/daemonize_git.bb
@@ -0,0 +1,14 @@
+SUMMARY = "A tool to run a command as a daemon"
+HOMEPAGE = "http://software.clapper.org/daemonize/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=3cf9084faa88bc8554a9139d8d7dd35f"
+PV = "1.7.3+git${SRCPV}"
+
+inherit autotools
+
+SRCREV = "a4ac64a243af91dc434b7a3915f43482d528a2b1"
+SRC_URI = "git://github.com/bmc/daemonize.git"
+
+S = "${WORKDIR}/git"
+
+EXTRA_AUTORECONF += "--exclude=autoheader"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/0001-error.h-include-errno.h-instead-of-extern-int.diff b/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/0001-error.h-include-errno.h-instead-of-extern-int.diff
new file mode 100644
index 0000000..ce19597
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/0001-error.h-include-errno.h-instead-of-extern-int.diff
@@ -0,0 +1,25 @@
+From d3e7651e2f2492dd1031d09a99713644b604cab5 Mon Sep 17 00:00:00 2001
+From: Gerrit Pape <pape@smarden.org>
+Date: Wed, 12 Dec 2007 13:44:15 +0000
+Subject: [PATCH] error.h: '#include <errno.h>' instead of 'extern int errno;'
+
+---
+ daemontools-0.76/src/error.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git daemontools-0.76.orig/src/error.h daemontools-0.76/src/error.h
+index 086fb55..f7e8273 100644
+--- daemontools-0.76.orig/src/error.h
++++ daemontools-0.76/src/error.h
+@@ -3,7 +3,7 @@
+ #ifndef ERROR_H
+ #define ERROR_H
+ 
+-extern int errno;
++#include <errno.h>
+ 
+ extern int error_intr;
+ extern int error_nomem;
+-- 
+1.5.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff b/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff
new file mode 100644
index 0000000..73dce90
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff
@@ -0,0 +1,47 @@
+From 7ee585cab1d5b68f804a5601a66ae87799c8a7c3 Mon Sep 17 00:00:00 2001
+From: Gerrit Pape <pape@smarden.org>
+Date: Sun, 24 Feb 2008 10:54:26 +0000
+Subject: [PATCH] supervise.c: ./supervise may be a symlink, if it's dangling, create link target
+
+---
+ daemontools-0.76/src/supervise.c |   17 ++++++++++++++++-
+ 1 files changed, 16 insertions(+), 1 deletions(-)
+
+diff --git daemontools-0.76.orig/src/supervise.c daemontools-0.76/src/supervise.c
+index 2482ad2..f43cabf 100644
+--- daemontools-0.76.orig/src/supervise.c
++++ daemontools-0.76/src/supervise.c
+@@ -208,6 +208,8 @@ void doit(void)
+ int main(int argc,char **argv)
+ {
+   struct stat st;
++  int r;
++  char buf[256];
+ 
+   dir = argv[1];
+   if (!dir || argv[2])
+@@ -232,7 +234,20 @@ int main(int argc,char **argv)
+     if (errno != error_noent)
+       strerr_die4sys(111,FATAL,"unable to stat ",dir,"/down: ");
+ 
+-  mkdir("supervise",0700);
++  if (mkdir("supervise",0700) == -1) {
++    if ((r = readlink("supervise", buf, 256)) != -1) {
++      if (r == 256) {
++        errno = EOVERFLOW;
++        strerr_die1sys(111,"unable to readlink ./supervise: ");
++      }
++      buf[r] = 0;
++      mkdir(buf, 0700);
++    }
++    else {
++      if ((errno != ENOENT) && (errno != EINVAL))
++        strerr_die1sys(111, "unable to readlink ./supervise: ");
++    }
++  }
+   fdlock = open_append("supervise/lock");
+   if ((fdlock == -1) || (lock_exnb(fdlock) == -1))
+     strerr_die4sys(111,FATAL,"unable to acquire ",dir,"/supervise/lock: ");
+-- 
+1.5.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch
new file mode 100644
index 0000000..f164c2d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch
@@ -0,0 +1,45 @@
+make sure it can be compiled for cross target
+
+1. never try to compile target binary by native gcc
+2. target's chkshsgr doesn't work on native.
+3. it's wrong to do target tests on native.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp daemontools-0.76.orig/src/conf-cc daemontools-0.76/src/conf-cc
+--- daemontools-0.76.orig/src/conf-cc	2001-07-13 00:49:49.000000000 +0800
++++ daemontools-0.76/src/conf-cc	2014-11-26 09:34:38.828812162 +0800
+@@ -1,3 +1,3 @@
+-gcc -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings
++${CC} -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings
+ 
+ This will be used to compile .c files.
+diff -Nurp daemontools-0.76.orig/src/conf-ld daemontools-0.76/src/conf-ld
+--- daemontools-0.76.orig/src/conf-ld	2001-07-13 00:49:49.000000000 +0800
++++ daemontools-0.76/src/conf-ld	2014-11-26 09:34:49.880811730 +0800
+@@ -1,3 +1,3 @@
+-gcc -s
++${CC}
+ 
+ This will be used to link .o files into an executable.
+diff -Nurp daemontools-0.76.orig/src/Makefile daemontools-0.76/src/Makefile
+--- daemontools-0.76.orig/src/Makefile	2001-07-13 00:49:49.000000000 +0800
++++ daemontools-0.76/src/Makefile	2014-11-26 09:38:47.120802459 +0800
+@@ -165,7 +165,7 @@ hassgprm.h: choose compile hassgprm.h1 h
+ 
+ hasshsgr.h: chkshsgr choose compile hasshsgr.h1 hasshsgr.h2 load \
+ tryshsgr.c warn-shsgr
+-	./chkshsgr || ( cat warn-shsgr; exit 1 )
++	chkshsgr || ( cat warn-shsgr; exit 1 )
+ 	./choose clr tryshsgr hasshsgr.h1 hasshsgr.h2 > hasshsgr.h
+ 
+ haswaitp.h: choose compile haswaitp.h1 haswaitp.h2 load trywaitp.c
+@@ -265,7 +265,7 @@ readproctitle.o: compile error.h readpro
+ rts: envdir envuidgid fghack matchtest multilog pgrphack \
+ readproctitle rts.tests setlock setuidgid softlimit supervise svc \
+ svok svscan svscanboot svstat tai64n tai64nlocal
+-	env - /bin/sh rts.tests 2>&1 | cat -v > rts
++	echo "Warning: We can not run test on cross target."
+ 
+ scan_ulong.o: compile scan.h scan_ulong.c
+ 	./compile scan_ulong.c
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb
new file mode 100644
index 0000000..161f92f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb
@@ -0,0 +1,47 @@
+SUMMARY = "DJB daemontools"
+DESCRIPTION = "supervise monitors a service. It starts the service and restarts the \
+service if it dies. The companion svc program stops, pauses, or restarts \
+the service on sysadmin request. The svstat program prints a one-line \
+status report. \
+multilog saves error messages to one or more logs.  It optionally timestamps \
+each line and, for each log, includes or excludes lines matching specified \
+patterns.  It automatically rotates logs to limit the amount of disk space \
+used.  If the disk fills up, it pauses and tries again, without losing any \
+data."
+
+SECTION = "System/Servers"
+
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/PD;md5=b3597d12946881e13cb3b548d1173851"
+LICENSE = "PD"
+
+SRC_URI = "http://cr.yp.to/daemontools/${BPN}-${PV}.tar.gz \
+           file://0001-error.h-include-errno.h-instead-of-extern-int.diff \
+           file://0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff "
+
+SRC_URI_append_class-target = "file://cross-compile.patch"
+
+SRC_URI[md5sum] = "1871af2453d6e464034968a0fbcb2bfc"
+SRC_URI[sha256sum] = "a55535012b2be7a52dcd9eccabb9a198b13be50d0384143bd3b32b8710df4c1f"
+
+S = "${WORKDIR}/admin/${BPN}-${PV}"
+
+DEPENDS += "daemontools-native"
+DEPENDS_class-native = ""
+
+do_compile() {
+    ./package/compile
+}
+
+do_install() {
+    install -d ${D}/${bindir}
+}
+
+do_install_append_class-native() {
+    install -m 755 ${S}/compile/chkshsgr ${D}/${bindir}
+}
+
+do_install_append_class-target() {
+    install -m755 ${S}/command/* ${D}/${bindir}
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/devicekit/devicekit-power_014.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/devicekit/devicekit-power_014.bb
new file mode 100644
index 0000000..c2b7e66
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/devicekit/devicekit-power_014.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Devicekit power"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=756cf97871f77233638937da21b025d3"
+
+DEPENDS = "libusb-compat libusb1 udev glib-2.0 dbus-glib polkit intltool-native libgudev"
+
+SRC_URI = "http://upower.freedesktop.org/releases/DeviceKit-power-${PV}.tar.gz;name=archive"
+SRC_URI[archive.md5sum] = "935d37f1e14b3c8a1d6dabcd9a38d3ca"
+SRC_URI[archive.sha256sum] = "ad3e9a8bd9525d66fadc7fa53ef99e0632aa8cca8fd5bc27483956261153b373"
+
+S = "${WORKDIR}/DeviceKit-power-${PV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --with-backend=linux"
+
+do_configure_prepend() {
+    sed -i -e s:-nonet:\:g ${S}/doc/man/Makefile.am
+    sed -i -e 's: doc : :g' ${S}/Makefile.am
+}    
+
+FILES_${PN} += "${datadir}/dbus-1/ \
+                ${datadir}/polkit-1/ \
+                ${base_libdir}/udev/* \
+"
+
+FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
+
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2.bb
new file mode 100644
index 0000000..e48cc92
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Simple program to read/write from/to any location in memory"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://devmem2.c;endline=28;md5=dd68f2b0a5184b3db3dc25c99e0bd0cd"
+PR = "r7"
+
+SRC_URI = "http://www.lartmaker.nl/lartware/port/devmem2.c \
+           file://devmem2-fixups-2.patch;apply=yes;striplevel=0"
+S = "${WORKDIR}"
+
+CFLAGS += "-DFORCE_STRICT_ALIGNMENT"
+
+do_compile() {
+    ${CC} -o devmem2 devmem2.c ${CFLAGS} ${LDFLAGS}
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install devmem2 ${D}${bindir}
+}
+
+SRC_URI[md5sum] = "be12c0132a1ae118cbf5e79d98427c1d"
+SRC_URI[sha256sum] = "ec382c90af3ef2f49695ff14a4d6521e58ac482c4e29d6c9ebca8768f699c191"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2/devmem2-fixups-2.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2/devmem2-fixups-2.patch
new file mode 100644
index 0000000..4517797
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2/devmem2-fixups-2.patch
@@ -0,0 +1,91 @@
+--- devmem2.c	2004-08-05 01:55:25.000000000 +0200
++++ devmem2_modif.c	2011-01-13 15:48:37.798799784 +0100
+@@ -45,12 +45,16 @@
+ #define MAP_SIZE 4096UL
+ #define MAP_MASK (MAP_SIZE - 1)
+ 
++static inline void *fixup_addr(void *addr, size_t size);
++
+ int main(int argc, char **argv) {
+     int fd;
+     void *map_base, *virt_addr; 
+-	unsigned long read_result, writeval;
++	unsigned long read_result, write_val;
+ 	off_t target;
+ 	int access_type = 'w';
++	char fmt_str[128];
++	size_t data_size;
+ 	
+ 	if(argc < 2) {
+ 		fprintf(stderr, "\nUsage:\t%s { address } [ type [ data ] ]\n"
+@@ -79,38 +83,51 @@
+     virt_addr = map_base + (target & MAP_MASK);
+     switch(access_type) {
+ 		case 'b':
++			data_size = sizeof(unsigned char);
++			virt_addr = fixup_addr(virt_addr, data_size);
+ 			read_result = *((unsigned char *) virt_addr);
+ 			break;
+ 		case 'h':
++			data_size = sizeof(unsigned short);
++			virt_addr = fixup_addr(virt_addr, data_size);
+ 			read_result = *((unsigned short *) virt_addr);
+ 			break;
+ 		case 'w':
++			data_size = sizeof(unsigned long);
++			virt_addr = fixup_addr(virt_addr, data_size);
+ 			read_result = *((unsigned long *) virt_addr);
+ 			break;
+ 		default:
+ 			fprintf(stderr, "Illegal data type '%c'.\n", access_type);
+ 			exit(2);
+ 	}
+-    printf("Value at address 0x%X (%p): 0x%X\n", target, virt_addr, read_result); 
++	sprintf(fmt_str, "Read at address  0x%%08lX (%%p): 0x%%0%dlX\n", 2*data_size);
++    printf(fmt_str, (unsigned long)target, virt_addr, read_result);
+     fflush(stdout);
+ 
+ 	if(argc > 3) {
+-		writeval = strtoul(argv[3], 0, 0);
++		write_val = strtoul(argv[3], 0, 0);
+ 		switch(access_type) {
+ 			case 'b':
+-				*((unsigned char *) virt_addr) = writeval;
++				virt_addr = fixup_addr(virt_addr, sizeof(unsigned char));
++				*((unsigned char *) virt_addr) = write_val;
+ 				read_result = *((unsigned char *) virt_addr);
+ 				break;
+ 			case 'h':
+-				*((unsigned short *) virt_addr) = writeval;
++				virt_addr = fixup_addr(virt_addr, sizeof(unsigned short));
++				*((unsigned short *) virt_addr) = write_val;
+ 				read_result = *((unsigned short *) virt_addr);
+ 				break;
+ 			case 'w':
+-				*((unsigned long *) virt_addr) = writeval;
++				virt_addr = fixup_addr(virt_addr, sizeof(unsigned long));
++				*((unsigned long *) virt_addr) = write_val;
+ 				read_result = *((unsigned long *) virt_addr);
+ 				break;
+ 		}
+-		printf("Written 0x%X; readback 0x%X\n", writeval, read_result); 
++		sprintf(fmt_str, "Write at address 0x%%08lX (%%p): 0x%%0%dlX, "
++			"readback 0x%%0%dlX\n",	2*data_size, 2*data_size);
++		printf(fmt_str, (unsigned long)target, virt_addr,
++			write_val, read_result);
+ 		fflush(stdout);
+ 	}
+ 	
+@@ -119,3 +136,12 @@
+     return 0;
+ }
+ 
++static inline void *fixup_addr(void *addr, size_t size)
++{
++#ifdef FORCE_STRICT_ALIGNMENT
++	unsigned long aligned_addr = (unsigned long)addr;
++	aligned_addr &= ~(size - 1);
++	addr = (void *)aligned_addr;
++#endif
++	return addr;
++}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb
new file mode 100644
index 0000000..7a7a662
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb
@@ -0,0 +1,16 @@
+require dfu-util_${PV}.bb
+
+inherit native deploy
+
+DEPENDS = "libusb1-native"
+
+SRC_URI += "file://0001-Revert-Makefile.am-Drop-static-dfu-util.patch"
+
+do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
+do_deploy() {
+    install -d ${DEPLOY_DIR_TOOLS}
+    install -m 0755 src/dfu-util_static ${DEPLOY_DIR_TOOLS}/dfu-util-${PV}
+    rm -f ${DEPLOY_DIR_TOOLS}/dfu-util
+    ln -sf ./dfu-util-${PV} ${DEPLOY_DIR_TOOLS}/dfu-util
+}
+addtask deploy before do_package after do_install
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util/0001-Revert-Makefile.am-Drop-static-dfu-util.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util/0001-Revert-Makefile.am-Drop-static-dfu-util.patch
new file mode 100644
index 0000000..1c6ad08
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util/0001-Revert-Makefile.am-Drop-static-dfu-util.patch
@@ -0,0 +1,68 @@
+From c2aab3b9ae1febcb6b4c6561a59df1930a57b394 Mon Sep 17 00:00:00 2001
+From: Martin JaMa Jansa <Martin.Jansa@gmail.com>
+Date: Thu, 11 Aug 2011 11:19:52 +0200
+Subject: [PATCH] Revert "Makefile.am: Drop static dfu-util"
+
+This reverts commit fe0426ddc04f503d148c5e5f931f16b8f674f071.
+
+Signed-off-by: Martin JaMa Jansa <Martin.Jansa@gmail.com>
+---
+ configure.ac    |  2 +-
+ src/Makefile.am | 22 +++++++++++++++++++++-
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index f5a43b8..6a3757e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -21,7 +21,7 @@ AS_IF([test x$native_libusb = xno], [
+         AC_MSG_ERROR([*** Required libusb-1.0 >= 1.0.0 not installed ***]))
+ ])
+ 
+-LIBS="$LIBS $USB_LIBS"
++LIBS="$LIBS $USB_LIBS -lpthread"
+ CFLAGS="$CFLAGS $USB_CFLAGS"
+ 
+ # Checks for header files.
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 70179c4..e8736ee 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -1,6 +1,6 @@
+ AM_CFLAGS = -Wall -Wextra
+ 
+-bin_PROGRAMS = dfu-util dfu-suffix dfu-prefix
++bin_PROGRAMS = dfu-util dfu-util_static dfu-suffix dfu-prefix
+ dfu_util_SOURCES = main.c \
+ 		portable.h \
+ 		dfu_load.c \
+@@ -19,6 +19,26 @@ dfu_util_SOURCES = main.c \
+ 		quirks.c \
+ 		quirks.h
+ 
++dfu_util_static_SOURCES = main.c \
++		portable.h \
++		dfu_load.c \
++		dfu_load.h \
++		dfu_util.c \
++		dfu_util.h \
++		dfuse.c \
++		dfuse.h \
++		dfuse_mem.c \
++		dfuse_mem.h \
++		dfu.c \
++		dfu.h \
++		usb_dfu.h \
++		dfu_file.c \
++		dfu_file.h \
++		quirks.c \
++		quirks.h
++
++dfu_util_static_LDFLAGS = -static
++
+ dfu_suffix_SOURCES = suffix.c \
+ 		dfu_file.h \
+ 		dfu_file.c
+-- 
+2.7.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.9.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.9.bb
new file mode 100644
index 0000000..01bca22
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.9.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "USB Device Firmware Upgrade utility"
+SECTION = "devel"
+AUTHOR = "Harald Welte <laforge@openmoko.org>"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = "http://dfu-util.gnumonks.org/releases/${BP}.tar.gz"
+
+inherit autotools pkgconfig
+
+DEPENDS = "libusb1"
+
+SRC_URI[md5sum] = "233bb1e08ef4b405062445d84e28fde6"
+SRC_URI[sha256sum] = "36428c6a6cb3088cad5a3592933385253da5f29f2effa61518ee5991ea38f833"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp/makefile-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp/makefile-fix.patch
new file mode 100644
index 0000000..c0d552d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp/makefile-fix.patch
@@ -0,0 +1,20 @@
+digitemp: allow override of CC and CFLAGS vars
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+
+--- a/Makefile	2008-08-28 21:37:00.000000000 +0000
++++ b/Makefile	2011-11-24 22:22:39.882511272 +0000
+@@ -11,8 +11,9 @@
+ 
+ VERSION = 3.6.0
+ 
+-CC	= gcc
+-CFLAGS	= -I./src -I./userial -O2 -Wall # -g
++CC	?= gcc
++CFLAGS	?=  -O2 -Wall # -g
++CFLAGS += -I./src -I./userial
+ 
+ OBJS		=	src/digitemp.o src/device_name.o src/ds2438.o
+ HDRS		= 	src/digitemp.h src/device_name.h
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_3.6.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_3.6.0.bb
new file mode 100644
index 0000000..2582820
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_3.6.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "read temperature sensors in a 1-Wire net"
+SECTION = "util"
+DEPENDS = "libusb1"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=44fee82a1d2ed0676cf35478283e0aa0"
+
+PR = "r2"
+
+SRC_URI = "http://www.digitemp.com/software/linux/digitemp-${PV}.tar.gz \
+           file://makefile-fix.patch"
+SRC_URI[md5sum] = "9be2e48db37920f21925ae6e88f83b84"
+SRC_URI[sha256sum] = "14cfc584cd3714fe8c9a2cdc8388be49e08b5e395d95e6bcd11d4410e2505ca2"
+
+EXTRA_OEMAKE = "ds9097 ds9097u \
+                SYSTYPE='Linux' \
+"
+# Fix GNU_HASH QA errors
+TARGET_CC_ARCH += "${CFLAGS} ${LDFLAGS}"
+
+do_configure() {
+    rm -f digitemp_*
+}
+
+do_install() {
+    install -d ${D}${sbindir}
+    install digitemp_* ${D}${sbindir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/dstat/dstat_0.7.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/dstat/dstat_0.7.2.bb
new file mode 100644
index 0000000..63f1812
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/dstat/dstat_0.7.2.bb
@@ -0,0 +1,23 @@
+SUMMARY = "versatile resource statics tool"
+DESCRIPTION = "Dstat is a versatile replacement for vmstat, iostat, netstat and ifstat. \
+Dstat overcomes some of their limitations and adds some extra features, more counters \
+and flexibility. Dstat is handy for monitoring systems during performance tuning tests, \
+benchmarks or troubleshooting."
+HOMEPAGE = "http://dag.wiee.rs/home-made/dstat"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+SRC_URI = "git://github.com/dagwieers/dstat.git"
+SRC_URI[md5sum] = "798e050e2e024f08a272dd4b0e1eba41"
+SRC_URI[sha256sum] = "96d1e6ea2434e477fa97322d92778f68458d7e57bc55bc4f72e29467a52cffd1"
+
+SRCREV = "5251397eb8d3b284a90bfdfaec0c8e1210146e3f"
+
+S = "${WORKDIR}/git"
+
+do_compile_prepend() {
+    #undo the step "make docs"
+    sed -i -e 's/$(MAKE) -C docs docs/# $(MAKE) -C docs docs/;' ${S}/Makefile
+}
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/edac-utils/edac-utils_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/edac-utils/edac-utils_git.bb
new file mode 100644
index 0000000..c0ad665
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/edac-utils/edac-utils_git.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Userspace helper for Linux kernel EDAC drivers"
+HOMEPAGE = "https://github.com/grondo/edac-utils"
+SECTION = "Applications/System"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = " sysfsutils"
+
+SRCREV = "f9aa96205f610de39a79ff43c7478b7ef02e3138"
+PV = "0.18+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://github.com/grondo/edac-utils \
+    file://make-init-script-be-able-to-automatically-load-EDAC-.patch \
+    file://add-restart-to-initscript.patch \
+"
+
+inherit autotools-brokensep
+
+do_configure_prepend () {
+    touch ${S}/ChangeLog
+    ${S}/bootstrap
+}
+
+RDEPENDS_${PN}_x86 = "dmidecode"
+RDEPENDS_${PN}_x86-64 = "dmidecode"
+RDEPENDS_${PN}_arm = "dmidecode"
+RDEPENDS_${PN}_aarch64 = "dmidecode"
+RDEPENDS_${PN}_powerpc = "dmidecode"
+RDEPENDS_${PN}_powerpc64 = "dmidecode"
+RDEPENDS_${PN}_append = " \
+    perl-module-file-basename perl-module-file-find perl-module-getopt-long perl-module-posix \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/edac-utils/files/add-restart-to-initscript.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/edac-utils/files/add-restart-to-initscript.patch
new file mode 100644
index 0000000..87051da
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/edac-utils/files/add-restart-to-initscript.patch
@@ -0,0 +1,33 @@
+From 3ade837f64de0cfe2aed5bc52f7919760f350531 Mon Sep 17 00:00:00 2001
+From: Wenzong Fan <wenzong.fan@windriver.com>
+Date: Fri, 7 Mar 2014 00:57:12 -0500
+Subject: [PATCH] edac: add restart to initscript
+
+Upstream-Status: Pending
+
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+---
+ src/etc/edac.init.in |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/etc/edac.init.in b/src/etc/edac.init.in
+index adf76ee..007a519 100644
+--- a/src/etc/edac.init.in
++++ b/src/etc/edac.init.in
+@@ -155,8 +155,12 @@ case "$1" in
+   status)
+     service_status
+     ;;
++  restart)
++    service_stop
++    service_start
++    ;;
+   *)
+-    COMMANDS="start|stop|status"
++    COMMANDS="start|stop|status|restart"
+     echo "Usage: $0 {${COMMANDS}}"
+     exit 2
+     ;;
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/edac-utils/files/make-init-script-be-able-to-automatically-load-EDAC-.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/edac-utils/files/make-init-script-be-able-to-automatically-load-EDAC-.patch
new file mode 100644
index 0000000..fddc25f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/edac-utils/files/make-init-script-be-able-to-automatically-load-EDAC-.patch
@@ -0,0 +1,98 @@
+make init script be able to automatically load EDAC module.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ src/etc/edac.init.in |   49 +++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 47 insertions(+), 2 deletions(-)
+
+diff --git a/src/etc/edac.init.in b/src/etc/edac.init.in
+index 7a51da9..5b568c4 100644
+--- a/src/etc/edac.init.in
++++ b/src/etc/edac.init.in
+@@ -42,7 +42,6 @@ for dir in "$sysconfdir/default" "$sysconfdir/sysconfig"; do
+   [ -f "$dir/$SERVICE" ] && . "$dir/$SERVICE"
+ done
+ 
+-
+ ###############################################################################
+ 
+ service_start ()
+@@ -52,6 +51,46 @@ service_start ()
+ # Assume that if EDAC_DRIVER is not set, then EDAC is configured
+ #  automatically, thus return successfully, but don't do anything.
+ #
++    if [ ! -f /etc/edac/edac-driver ]; then
++         [ -d /sys/bus/edac/devices/mc/mc0 ] && \
++         echo `lsmod | grep _edac | cut -d" " -f1` > /etc/edac/edac-driver
++    fi
++
++    [ -f /etc/edac/edac-driver ] && EDAC_DRIVER=`cat /etc/edac/edac-driver`
++
++    if [ -z "$EDAC_DRIVER" ]; then
++
++        DRIVER_PATH=/lib/modules/`uname -r`/kernel/drivers/edac
++        oldpath=`pwd`
++        if [ -d $DRIVER_PATH ]; then
++
++            cd $DRIVER_PATH
++
++            for i in $(/bin/ls | /usr/bin/cut -d. -f1) ; do
++                /sbin/modprobe $i 2>/dev/null
++                if [ -d /sys/bus/edac/devices/mc/mc0 ]; then
++                    echo $i> /etc/edac/edac-driver
++                    EDAC_DRIVER=$i
++                    break
++                fi
++                /sbin/modprobe -r $i 2>/dev/null
++            done
++
++            cd "$oldpath"
++
++
++            if [ -z "$EDAC_DRIVER" ]; then
++                echo "This board may not support EDAC, or EDAC module may not be compiled in"
++                exit
++            fi
++
++        else
++            echo "This board may not support EDAC, or EDAC module may not be compiled in"
++            exit
++        fi
++
++    fi
++
+   if [ -n "$EDAC_DRIVER" ]; then
+      echo -n "Starting ${SERVICE}: "
+      modprobe $EDAC_DRIVER
+@@ -76,12 +115,15 @@ service_start ()
+ service_stop ()
+ {
+   echo -n "Disabling ${SERVICE}: "
++
++  [ -f /etc/edac/edac-driver ] && EDAC_DRIVER=`cat /etc/edac/edac-driver`
++
+   if [ -n "$EDAC_DRIVER" ]; then
+     modprobe -r $EDAC_DRIVER
+     STATUS=$?
+     [ $STATUS -eq 0 ] && echo success || echo failure
+   else
+-    echo "Not supported for this configuration."
++    echo "Not supported for this configuration, or EDAC Module is not loaded."
+     STATUS=6
+   fi
+ }
+@@ -92,6 +134,9 @@ service_status ()
+ {
+ # Print the current status of the service.  Required by LSB.
+ #
++  [ -f /etc/edac/edac-driver ] && EDAC_DRIVER=`cat /etc/edac/edac-driver`
++  [ -z "$EDAC_DRIVER" ] && STATUS=1 && exit
++
+   edac-ctl --status
+   STATUS=0
+ }
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-2.1.1-verbose.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-2.1.1-verbose.patch
new file mode 100644
index 0000000..7403606
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-2.1.1-verbose.patch
@@ -0,0 +1,19 @@
+Kept to help with debugging
+
+Upstream-Status: Pending
+
+Signed-off-by: Morgan Little <morgan.little@windriver.com>
+
+--- eject-2.1.1/eject.c.tn	2005-08-24 11:27:42.000000000 +0200
++++ eject-2.1.1/eject.c	2005-08-24 11:33:05.000000000 +0200
+@@ -638,7 +638,9 @@
+ 	unsigned char sense_buffer[32];
+ 
+ 	if ((ioctl(fd, SG_GET_VERSION_NUM, &k) < 0) || (k < 30000)) {
+-	  printf("not an sg device, or old sg driver\n");
++	  if (v_option) {
++		  printf(_("not an sg device, or old sg driver\n"));
++	  }
+ 	  return 0;
+ 	}
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-2.1.5-error-return.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-2.1.5-error-return.patch
new file mode 100644
index 0000000..5e13036
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-2.1.5-error-return.patch
@@ -0,0 +1,12 @@
+Upstream-Status: Inappropriate [the upstream is no longer active]
+
+--- eject/eject.c.orig	2013-09-11 18:08:36.000000000 +0800
++++ eject/eject.c	2013-09-11 18:09:05.000000000 +0800
+@@ -207,7 +207,6 @@
+ "If omitted, name defaults to `%s'.\n"
+ "By default tries -r, -s, -f, and -q in order until success.\n"),
+ 			DEFAULTDEVICE);
+-  exit(1);
+ }
+ 
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-2.1.5-spaces.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-2.1.5-spaces.patch
new file mode 100644
index 0000000..a16c4b1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-2.1.5-spaces.patch
@@ -0,0 +1,66 @@
+Kept to help with spaces in the mount path
+
+Upstream-Status: Backport
+
+Linux mangles spaces in mount points by changing them to an octal string
+of '\040'.  So lets scan the mount point and fix it up by replacing all
+occurrences off '\0##' with the ASCII value of 0##.  Requires a writable
+string as input as we mangle in place.  Some of this was taken from the
+util-linux package.
+
+Signed-off-by: Morgan Little <morgan.little@windriver.com>
+--- eject/eject.c.ori   2007-06-24 00:08:44 -0700
++++ eject/eject.c       2007-06-24 00:12:44 -0700
+@@ -370,6 +370,30 @@
+ 
+ 
+ /*
++ * Linux mangles spaces in mount points by changing them to an octal string
++ * of '\040'.  So lets scan the mount point and fix it up by replacing all
++ * occurrences off '\0##' with the ASCII value of 0##.  Requires a writable
++ * string as input as we mangle in place.  Some of this was taken from the
++ * util-linux package.
++ */
++#define octalify(a) ((a) & 7)
++#define tooctal(s) (64*octalify(s[1]) + 8*octalify(s[2]) + octalify(s[3]))
++#define isoctal(a) (((a) & ~7) == '0')
++static char *DeMangleMount(char *s)
++{
++	char *tmp = s;
++	while ((tmp = strchr(tmp, '\\')) != NULL) {
++		if (isoctal(tmp[1]) && isoctal(tmp[2]) && isoctal(tmp[3])) {
++			tmp[0] = tooctal(tmp);
++			memmove(tmp+1, tmp+4, strlen(tmp)-3);
++		}
++		++tmp;
++	}
++	return s;
++}
++
++
++/*
+  * Given name, such as foo, see if any of the following exist:
+  *
+  * foo (if foo starts with '.' or '/')
+@@ -884,8 +908,8 @@
+ 			if (((strcmp(s1, name) == 0) || (strcmp(s2, name) == 0)) ||
+ 				((maj != -1) && (maj == mtabmaj) && (min == mtabmin))) {
+ 				FCLOSE(fp);
+-				*deviceName = strdup(s1);
+-				*mountName = strdup(s2);
++				*deviceName = DeMangleMount(strdup(s1));
++				*mountName = DeMangleMount(strdup(s2));
+ 				return 1;
+ 			}
+ 		}
+@@ -928,8 +952,8 @@
+ 		rc = sscanf(line, "%1023s %1023s", s1, s2);
+ 		if (rc >= 2 && s1[0] != '#' && strcmp(s2, name) == 0) {
+ 			FCLOSE(fp);
+-			*deviceName = strdup(s1);
+-			*mountName = strdup(s2);
++			*deviceName = DeMangleMount(strdup(s1));
++			*mountName = DeMangleMount(strdup(s2));
+ 			return 1;
+ 		}
+ 	}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-timeout.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-timeout.patch
new file mode 100644
index 0000000..de8146f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject/eject-timeout.patch
@@ -0,0 +1,17 @@
+allow a longer timeout
+
+Upstream-Status: Backport 
+
+Signed-off-by: Morgan Little <morgan.little@windriver.com>
+
+--- eject/eject.c.orig	2006-08-07 16:35:15.000000000 +0200
++++ eject/eject.c	2006-08-07 16:35:54.000000000 +0200
+@@ -723,7 +723,7 @@
+ 	io_hdr.dxfer_len = 0;
+ 	io_hdr.dxferp = inqBuff;
+ 	io_hdr.sbp = sense_buffer;
+-	io_hdr.timeout = 2000;
++	io_hdr.timeout = 10000;
+ 
+ 	io_hdr.cmdp = allowRmBlk;
+ 	status = ioctl(fd, SG_IO, (void *)&io_hdr);
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
new file mode 100644
index 0000000..0440f0c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Eject allows removable media (typically a CD-ROM, floppy disk, tape, or JAZ or ZIP disk) to be ejected under software control."
+HOMEPAGE = "http://eject.sourceforge.net/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+
+inherit autotools gettext update-alternatives
+
+SRC_URI = "http://sources.openembedded.org/${BP}.tar.gz \
+           file://eject-2.1.5-error-return.patch \
+           file://eject-2.1.1-verbose.patch \
+           file://eject-2.1.5-spaces.patch \
+           file://eject-timeout.patch \
+"
+
+SRC_URI[md5sum] = "b96a6d4263122f1711db12701d79f738"
+SRC_URI[sha256sum] = "ef9f7906484cfde4ba223b2682a37058f9a3c7d3bb1adda7a34a67402e2ffe55"
+
+S = "${WORKDIR}/${BPN}"
+
+PR = "r1"
+
+do_compile_prepend() {
+    # PO subdir must be in build directory
+    if [ ! ${S} = ${B} ]; then
+        mkdir -p ${B}/po
+        cp -r ${S}/po/* ${B}/po/
+    fi
+}
+
+ALTERNATIVE_${PN} = "volname eject"
+ALTERNATIVE_LINK_NAME[volname] = "${bindir}/volname"
+ALTERNATIVE_LINK_NAME[eject] = "${bindir}/eject"
+ALTERNATIVE_PRIORITY[volname] = "100"
+ALTERNATIVE_PRIORITY[eject] = "100"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs-23.4/nostdlib-unwind.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs-23.4/nostdlib-unwind.patch
new file mode 100644
index 0000000..4200301
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs-23.4/nostdlib-unwind.patch
@@ -0,0 +1,16 @@
+Fix linking problem:
+undefined reference to `__aeabi_unwind_cpp_pr0'
+undefined reference to `__aeabi_unwind_cpp_pr1'
+Index: emacs/src/Makefile.in
+===================================================================
+--- emacs.orig/src/Makefile.in	2008-08-16 14:20:18.000000000 +0000
++++ emacs/src/Makefile.in	2008-08-16 14:51:25.000000000 +0000
+@@ -443,7 +443,7 @@
+    ask GCC explicitly where to find libgcc.a.  */
+ 
+ #ifndef LINKER
+-#define LINKER $(CC) -nostdlib
++#define LINKER $(CC) -nostdlib -lgcc_s
+ #endif
+ 
+ #ifndef LIB_GCC
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs-23.4/use-qemu.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs-23.4/use-qemu.patch
new file mode 100644
index 0000000..c15207a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs-23.4/use-qemu.patch
@@ -0,0 +1,104 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+diff -uNr emacs-23.4/Makefile.in emacs-23.4.new/Makefile.in
+--- emacs-23.4/Makefile.in	2012-01-11 13:35:01.000000000 +0100
++++ emacs-23.4.new/Makefile.in	2012-07-31 00:54:07.223590866 +0200
+@@ -336,7 +336,7 @@
+ # all preloaded elisp files, and only then dump the actual src/emacs, which
+ # is not wrong, but is overkill in 99.99% of the cases.
+ src: Makefile FRC
+-	boot=bootstrap-emacs$(EXEEXT);                         \
++	boot=${QEMU} bootstrap-emacs$(EXEEXT);                         \
+ 	if [ ! -x "src/$$boot" ]; then                                     \
+ 	    cd $@; $(MAKE) all $(MFLAGS)                                   \
+ 	      CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}'         \
+diff -uNr emacs-23.4/leim/Makefile.in emacs-23.4.new/leim/Makefile.in
+--- emacs-23.4/leim/Makefile.in	2012-01-11 13:35:01.000000000 +0100
++++ emacs-23.4.new/leim/Makefile.in	2012-07-31 00:54:07.179590866 +0200
+@@ -51,7 +51,7 @@
+ 
+ # How to run Emacs.
+ RUN-EMACS = EMACSLOADPATH=$(buildlisppath) LC_ALL=C \
+-	${BUILT-EMACS} -batch --no-init-file --no-site-file --multibyte
++	${QEMU} ${BUILT-EMACS} -batch --no-init-file --no-site-file --multibyte
+ 
+ # Subdirectories to be made if ${srcdir} is different from the current
+ # directory.
+diff -uNr emacs-23.4/lib-src/Makefile.in emacs-23.4.new/lib-src/Makefile.in
+--- emacs-23.4/lib-src/Makefile.in	2012-01-11 13:35:01.000000000 +0100
++++ emacs-23.4.new/lib-src/Makefile.in	2012-07-31 00:54:07.180590866 +0200
+@@ -23,7 +23,7 @@
+ SHELL = /bin/sh
+ 
+ # Following ../lisp/Makefile.in.
+-EMACS = ../src/emacs
++EMACS = ${QEMU} ../src/emacs
+ EMACSOPT = -batch --no-site-file --multibyte
+ 
+ # ==================== Things `configure' will edit ====================
+@@ -372,7 +372,7 @@
+    clobbered too.  */
+ test-distrib${EXEEXT}: ${srcdir}/test-distrib.c
+ 	$(CC) ${ALL_CFLAGS} -o test-distrib ${srcdir}/test-distrib.c
+-	./test-distrib ${srcdir}/testfile
++	${QEMU} ./test-distrib ${srcdir}/testfile
+ 
+ /* We need the following in order to create a <getopt.h> when the system
+    does not have one that works with the given compiler.  */
+diff -uNr emacs-23.4/lisp/Makefile.in emacs-23.4.new/lisp/Makefile.in
+--- emacs-23.4/lisp/Makefile.in	2012-01-11 13:35:01.000000000 +0100
++++ emacs-23.4.new/lisp/Makefile.in	2012-07-31 00:54:07.195590866 +0200
+@@ -26,8 +26,7 @@
+ # You can specify a different executable on the make command line,
+ # e.g. "make EMACS=../src/emacs ...".
+ 
+-EMACS = ../src/emacs
+-
++EMACS = "${QEMU} ../src/emacs"
+ # Command line flags for Emacs.  This must include --multibyte,
+ # otherwise some files will not compile.
+ 
+diff -uNr emacs-23.4/src/Makefile.in emacs-23.4.new/src/Makefile.in
+--- emacs-23.4/src/Makefile.in	2012-01-12 11:27:54.000000000 +0100
++++ emacs-23.4.new/src/Makefile.in	2012-07-31 00:55:30.344593847 +0200
+@@ -482,7 +482,7 @@
+    this with the shell''s ``for'' construct.
+    Note that some people do not have '.'  in their paths, so we must
+    use ./prefix-args.  */
+-#define YMF_PASS_LDFLAGS(flags) `./prefix-args -Xlinker flags`
++#define YMF_PASS_LDFLAGS(flags) `${QEMU} ./prefix-args -Xlinker flags`
+ #else
+ #define YMF_PASS_LDFLAGS(flags) flags
+ #endif
+@@ -919,9 +919,9 @@
+    $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR)
+ 
+ #ifdef HAVE_SHM
+-RUN_TEMACS = `/bin/pwd`/temacs -nl
++RUN_TEMACS = ${QEMU} temacs -nl
+ #else
+-RUN_TEMACS = `/bin/pwd`/temacs
++RUN_TEMACS = ${QEMU} temacs
+ #endif
+ 
+ all: emacs${EXEEXT} $(OTHER_FILES)
+@@ -936,7 +936,7 @@
+ 	@: This new Emacs is as functional and more efficient then
+ 	@: bootstrap-emacs, so let us replace it.
+ 	-ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
+-	-./emacs -q -batch -f list-load-path-shadows
++	-${QEMU} ./emacs -q -batch -f list-load-path-shadows
+ #endif /* ! defined (CANNOT_DUMP) */
+ 
+ /* We run make-docfile twice because the command line may get too long
+@@ -954,8 +954,8 @@
+    only in order to reduce the command line length.  --Stef  */
+ ${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
+ 	-rm -f ${etc}DOC
+-	${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
+-	${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
++	${QEMU}${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
++	${QEMU} ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
+ 
+ ${libsrc}make-docfile${EXEEXT}:
+ 	cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs.inc
new file mode 100644
index 0000000..ffb5c50
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs.inc
@@ -0,0 +1,147 @@
+DESCRIPTION = "Emacs"
+HOMEPAGE = "http://www.gnu.org/software/emacs/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+SECTION = "editor"
+# and it needs to run some generated binaries..
+DEPENDS += "qemu-native"
+
+DEPENDS +=" liblockfile"
+
+X11DEPENDS = " \
+    libice libsm atk cairo dbus expat libffi fontconfig freetype gconf giflib \
+    jpeg xz pixman libpng librsvg tiff libcroco \
+    libx11 libxau libxcomposite libxcursor libxdamage libxdmcp libxext libxfixes \
+    libxft libxpm libxrandr libxrender \
+    gdk-pixbuf glib-2.0 gtk+ pango libxcb harfbuzz icu \
+" 
+
+EXTRA_OECONF =  "--without-sound --with-crt-dir=${STAGING_LIBDIR} "
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG[x11] = "--with-x-toolkit=gtk,--without-x --without-dbus,${X11DEPENDS}"
+
+
+inherit autotools
+
+PACKAGES =+ "${PN}-el"
+
+FILES_${PN}-el = "${datadir}/emacs/*/*/*.el.gz \
+                  ${datadir}/emacs/*/*/*/*.el.gz"
+
+FILES_${PN} += "${datadir}/emacs ${datadir}/icons"
+
+FILES_${PN}-dbg += "${libexecdir}/emacs/*/*/.debug ${datadir}/emacs/*/*/.debug"
+
+TREEDIR = "${WORKDIR}/qemu-treedir"
+
+QEMUARCH= "${TARGET_ARCH}"
+QEMUARCH_x86 = "i386"
+
+# Large stack is required at least on x86_64 host, otherwise random segfaults appear:
+QEMU = "qemu-${QEMUARCH} ${QEMU_OPTIONS} -s 1048576 -L ${TREEDIR} "
+
+export LOGNAME = "$(whoami)"
+
+do_compile_prepend() {
+    sed -i ':1;s:\(START.* \|LIB_STANDARD.* \|LIBES.* \)/usr/lib:\1${STAGING_LIBDIR}:;t1' ${S}/src/s/gnu-linux.h `find "${S}" -name Makefile`
+    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${TOOLCHAIN_PATH}/${TARGET_SYS}/lib"
+# Ugly hack, see files/use-qemu.patch for more:
+    ln -sf ../src/emacs lisp/emacs
+    ln -sf ../src/emacs lib-src/emacs
+    ln -sf ../src/emacs leim/emacs
+#copy STAGING_DIR_TARGET and libgcc_s.so* to WORKDIR/qemu-treedir #copied code from glibc-package.bbclass
+    treedir=${TREEDIR}
+    if [ -e $treedir ];then
+        rm -rf $treedir
+    fi
+    
+    mkdir -p $treedir/${base_libdir}
+
+    if [ -f ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so ]; then
+        cp -pPR ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so $treedir/${base_libdir}
+    fi
+    if [ -f ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so.* ]; then
+        cp -pPR ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so.* $treedir/${base_libdir}
+    fi
+    # stupid hack, but without it, it tries to use /usr/lib/libc.so from host and fails
+    # temacs: error while loading shared libraries: /usr/lib/libc.so: ELF file version does not match current one
+    if [ ! -f $treedir/${base_libdir}/libc.so ]; then
+        ln -s libc.so.6 $treedir/${base_libdir}/libc.so
+    fi
+
+    # copy only as much stuff as we need
+    # before: 5.5G   ../../qemu-treedir/
+    # after:   17M   ../../qemu-treedir/
+    cp -pPR \
+    ${STAGING_DIR_TARGET}/${base_libdir}/ld-* \
+    ${STAGING_DIR_TARGET}/${base_libdir}/libc.* \
+    ${STAGING_DIR_TARGET}/${base_libdir}/libc-* \
+    ${STAGING_DIR_TARGET}/${base_libdir}/libm-* \
+    ${STAGING_DIR_TARGET}/${base_libdir}/libm.* \
+    ${STAGING_DIR_TARGET}/${base_libdir}/libtinfo.so.* \
+    ${STAGING_DIR_TARGET}/${base_libdir}/libresolv* \
+    ${STAGING_DIR_TARGET}/${base_libdir}/libdl* \
+    ${STAGING_DIR_TARGET}/${base_libdir}/librt* \
+    ${STAGING_DIR_TARGET}/${base_libdir}/libgcc_s.so.* \
+    ${STAGING_DIR_TARGET}/${base_libdir}/libpthread* $treedir/${base_libdir}/
+
+    if [ ! -z "${@bb.utils.contains('PACKAGECONFIG', 'x11', 'x11', '', d)}" ] ; then
+        echo "X11 build enabled"
+        # copy only as much stuff as we need
+        # before: 5.5G   ../../qemu-treedir/
+        # after:   86M   ../../qemu-treedir/
+        cp -pPR \
+        ${STAGING_DIR_TARGET}/${base_libdir}/libuuid.so.* \
+        ${STAGING_DIR_TARGET}/${base_libdir}/libz.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libICE.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libSM.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libatk-1.0.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libcairo.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libdbus-1.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libdbus-glib-1.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libexpat.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libffi.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libfontconfig.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libfreetype.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libgconf-2.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libgif.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libjpeg.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/liblzma.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libpixman-1.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libpng1*.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/librsvg-2.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libstdc++.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libtiff.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libxml2.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libcroco-0.6.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libharfbuzz.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libicule.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libicuuc.so.* \
+        ${STAGING_DIR_TARGET}/${libdir}/libicudata.so.* $treedir/${base_libdir}/
+
+        # X11 Xau Xcomposite Xcursor Xdamage Xdmcp Xext Xfixes Xft Xpm Xrandr Xrender
+        cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libX*.so.* $treedir/${base_libdir}/
+
+        # gdk-x11 gdk_pixbuf gio glib gmodule gobject gthread gtk-x11
+        cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libg*-2.0.so.* $treedir/${base_libdir}/
+
+        # pango pangocairo pangoft2
+        cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libpango*-1.0.so.* $treedir/${base_libdir}/
+
+        # xcb-render xcb-shm xcb
+        cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libxcb*.so.* $treedir/${base_libdir}/
+    fi
+}
+
+do_install_append() {
+    # freaks package.bbclass and whole bitbake call returns error code
+    # ERROR: runstrip: ''arm-oe-linux-gnueabi-strip'  '/var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/emacs-23.4-r0/package/usr/share/emacs/23.4/etc/tutorials/TUTORIAL.ko'' strip command failed
+    mv ${D}${datadir}/${BPN}/${PV}/etc/tutorials/TUTORIAL.ko ${D}${datadir}/${BPN}/${PV}/etc/tutorials/TUTORIAL.KO
+    # Info dir listing isn't interesting at this point so remove it if it exists.
+    if [ -e "${D}${infodir}/dir" ]; then
+        rm -f ${D}${infodir}/dir
+    fi
+}
+
+EXTRA_OEMAKE += 'QEMU="${QEMU}"'
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs_23.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs_23.4.bb
new file mode 100644
index 0000000..a324828
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/emacs/emacs_23.4.bb
@@ -0,0 +1,12 @@
+require emacs.inc
+
+PR = "r4"
+
+PNBLACKLIST[emacs] ?= "qemu: uncaught target signal 11 (Segmentation fault) - core dumped"
+
+SRC_URI = "${GNU_MIRROR}/emacs/emacs-${PV}.tar.gz;name=tarball \
+           file://use-qemu.patch \
+           file://nostdlib-unwind.patch \
+"
+SRC_URI[tarball.md5sum] = "34405165fcd978fbc8b304cbd99ccf4f"
+SRC_URI[tarball.sha256sum] = "b9a2b8434052771f797d2032772eba862ff9aa143029efc72295170607289c18"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/configure-hack.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/configure-hack.patch
new file mode 100644
index 0000000..85abcdc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/configure-hack.patch
@@ -0,0 +1,12 @@
+--- enca-1.9/configure.ac.orig	2006-02-15 00:57:39.000000000 -0800
++++ enca-1.9/configure.ac	2006-02-15 00:57:46.000000000 -0800
+@@ -92,9 +92,6 @@
+ dnl And for gtk-doc
+ gtk_CHECK_GTK_DOC
+ 
+-dnl Check for good random number sources
+-AC_CHECK_FILES(/dev/random /dev/urandom /dev/srandom /dev/arandom)
+-
+ dnl Dirty path hack.  Helps some people with badly set up search paths.
+ if test "$prefix" = "NONE"; then
+   LDFLAGS="$LDFLAGS -L$ac_default_prefix/lib"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/configure-remove-dumbness.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/configure-remove-dumbness.patch
new file mode 100644
index 0000000..6f6f3e3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/configure-remove-dumbness.patch
@@ -0,0 +1,26 @@
+--- enca-1.9/configure.ac.orig	2006-06-29 15:30:44.000000000 +0100
++++ enca-1.9/configure.ac	2006-06-29 15:31:41.000000000 +0100
+@@ -92,14 +92,15 @@
+ dnl And for gtk-doc
+ gtk_CHECK_GTK_DOC
+ 
+-dnl Dirty path hack.  Helps some people with badly set up search paths.
+-if test "$prefix" = "NONE"; then
+-  LDFLAGS="$LDFLAGS -L$ac_default_prefix/lib"
+-  CPPFLAGS="$CPPFLAGS -I$ac_default_prefix/include"
+-else
+-  LDFLAGS="$LDFLAGS -L$prefix/lib"
+-  CPPFLAGS="$CPPFLAGS -I$prefix/include"
+-fi
++# This is really dumb code
++#dnl Dirty path hack.  Helps some people with badly set up search paths.
++#if test "$prefix" = "NONE"; then
++#  LDFLAGS="$LDFLAGS -L$ac_default_prefix/lib"
++#  CPPFLAGS="$CPPFLAGS -I$ac_default_prefix/include"
++#else
++#  LDFLAGS="$LDFLAGS -L$prefix/lib"
++#  CPPFLAGS="$CPPFLAGS -I$prefix/include"
++#fi
+ 
+ dnl Checks for libraries.
+ ye_CHECK_LIBM
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/dont-run-tests.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/dont-run-tests.patch
new file mode 100644
index 0000000..321d1e6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/dont-run-tests.patch
@@ -0,0 +1,13 @@
+Index: enca-1.9/Makefile.am
+===================================================================
+--- enca-1.9.orig/Makefile.am	2005-11-24 11:21:32.000000000 +0100
++++ enca-1.9/Makefile.am	2006-04-11 11:14:21.832502904 +0200
+@@ -2,7 +2,7 @@
+ if MAINTAINER_MODE
+ SUBDIRS = tools data script lib src devel-docs test
+ else
+-SUBDIRS = tools script lib src devel-docs test
++SUBDIRS = tools script lib src devel-docs
+ endif
+ man_MANS = man/enca.1
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/libenca-003-iconv.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/libenca-003-iconv.patch
new file mode 100644
index 0000000..dbf0fb8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/libenca-003-iconv.patch
@@ -0,0 +1,28 @@
+From 7e144495093187143a3d1589f74c2eac37e4d790 Mon Sep 17 00:00:00 2001
+From: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
+Date: Sun, 4 May 2014 15:49:28 +0200
+Subject: [PATCH] libiconv.m4: Fix AM_ICONV macro usage
+
+This patch come straight from the Buildroot source tree.
+
+Signed-off-by: Bernd Kuhls <berndkuhls@hotmail.com>
+Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
+---
+ m4/libiconv.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/m4/libiconv.m4 b/m4/libiconv.m4
+index fc8c6f8..3a59549 100644
+--- a/m4/libiconv.m4
++++ b/m4/libiconv.m4
+@@ -17,7 +17,7 @@ AC_REQUIRE([AC_C_CONST])dnl
+ dnl
+ 
+ dnl Use standard iconv test
+-AM_ICONV
++m4_pattern_allow([AM_ICONV])
+ CONVERTOR_LIBS="$CONVERTOR_LIBS $LIBICONV"
+ 
+ dnl Compile iconvcap.c and run it to determine what encodings iconv actually
+-- 
+1.9.3
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/makefile-remove-tools.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/makefile-remove-tools.patch
new file mode 100644
index 0000000..accfbcc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca/makefile-remove-tools.patch
@@ -0,0 +1,13 @@
+--- enca-1.9/Makefile.am.orig	2006-06-29 15:34:55.000000000 +0100
++++ enca-1.9/Makefile.am	2006-06-29 15:35:20.000000000 +0100
+@@ -1,8 +1,8 @@
+ # @(#) $Id: Makefile.am,v 1.35 2005/11/24 10:21:32 yeti Exp $
+ if MAINTAINER_MODE
+-SUBDIRS = tools data script lib src devel-docs test
++SUBDIRS = data script lib src devel-docs test
+ else
+-SUBDIRS = tools script lib src devel-docs
++SUBDIRS = script lib src devel-docs
+ endif
+ man_MANS = man/enca.1
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca_1.9.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca_1.9.bb
new file mode 100644
index 0000000..bf19843
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/enca/enca_1.9.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Enca is an Extremely Naive Charset Analyser"
+SECTION = "libs"
+HOMEPAGE = "http://trific.ath.cx/software/enca/"
+
+DEPENDS += "gettext-native"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=24b9569831c46d4818450b55282476b4"
+
+SRC_URI = "http://www.sourcefiles.org/Networking/Tools/Miscellanenous/enca-${PV}.tar.bz2 \
+    file://configure-hack.patch \
+    file://dont-run-tests.patch \
+    file://configure-remove-dumbness.patch \
+    file://makefile-remove-tools.patch \
+    file://libenca-003-iconv.patch "
+
+SRC_URI[md5sum] = "b3581e28d68d452286fb0bfe58bed3b3"
+SRC_URI[sha256sum] = "02acfef2b24a9c842612da49338138311f909f1cd33933520c07b8b26c410f4d"
+
+inherit autotools
+
+do_configure_prepend() {
+    # remove failing test which checks for something that isn't even used
+    sed -i -e '/ye_FUNC_SCANF_MODIF_SIZE_T/d' ${S}/configure.ac
+}
+
+do_configure_append() {
+    sed -i s:-I/usr/include::g ${B}/Makefile
+    sed -i s:-I/usr/include::g ${B}/*/Makefile
+}
+
+do_compile() {
+    cd ${S}/tools && ${BUILD_CC} -o make_hash make_hash.c
+    cd ${B}
+    oe_runmake
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/engine-pkcs11/engine-pkcs11_0.2.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/engine-pkcs11/engine-pkcs11_0.2.0.bb
new file mode 100644
index 0000000..f2a2258
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/engine-pkcs11/engine-pkcs11_0.2.0.bb
@@ -0,0 +1,29 @@
+SUMMARY = "A PKCS"
+DESCRIPTION = "\
+Engine_pkcs11 is an implementation of an engine for OpenSSL. It can be \
+loaded using code, config file or command line and will pass any function \
+call by openssl to a PKCS cards and software for using smart cards in PKCS"
+HOMEPAGE = "https://github.com/OpenSC/engine_pkcs11"
+SECTION = "Development/Libraries"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://src/engine_pkcs11.h;startline=1;endline=26;md5=973a19f8a6105de047f2adfbbfc04c33"
+DEPENDS = "openssl libp11"
+
+SRC_URI = "git://github.com/OpenSC/engine_pkcs11.git;protocol=http"
+SRCREV = "6909d6761c8820e1750fa0bf4fa8532c82f34e35"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "\
+    --disable-static \
+    --libdir ${libdir}/openssl \
+"
+
+do_install_append () {
+    rm -f ${D}${libdir}/openssl/engines/libpkcs11.la
+}
+
+FILES_${PN} += "${libdir}/openssl/engines/libpkcs11.so*"
+FILES_${PN}-dbg += "${libdir}/openssl/engines/.debug/*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/epeg/epeg_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/epeg/epeg_git.bb
new file mode 100644
index 0000000..8fe19b5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/epeg/epeg_git.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Epeg is a small library for handling thumbnails"
+DESCRIPTION = "Insanely fast JPEG/ JPG thumbnail scaling with the minimum fuss and CPU overhead. It makes use of libjpeg features of being able to load an image by only decoding the DCT coefficients needed to reconstruct an image of the size desired."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e7732a9290ea1e4b034fdc15cf49968d \
+                    file://COPYING-PLAIN;md5=f59cacc08235a546b0c34a5422133035"
+DEPENDS = "jpeg libexif"
+
+SRC_URI = "git://github.com/mattes/epeg.git"
+SRCREV = "d78becc558a682f1be0a78b1af90d1b4a08e5b4e"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.37.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.37.bb
new file mode 100644
index 0000000..914bf36
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.37.bb
@@ -0,0 +1,27 @@
+require espeak.inc
+
+inherit native
+
+PACKAGES = "${PN}"
+FILES_${PN} = "${layout_datadir}"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+TARGET_ARCH = "${MACHINE_ARCH}"
+
+do_compile() {
+    # Fixing byte order of phoneme data files
+    cd "${S}/platforms/big_endian"
+    sed -i '/^ *CC *=/d' Makefile
+    sed -i 's/\(.*BYTE_ORDER\)/#undef BYTE_ORDER\n#define BYTE_ORDER BIG_ENDIAN\n\1/' espeak-phoneme-data.c
+    oe_runmake
+    ./espeak-phoneme-data "${S}/espeak-data"
+    cp -f phondata phonindex phontab "${S}/espeak-data"
+}
+
+do_install() {
+    install -d ${D}${layout_datadir}/espeak-data
+    install -m 0644 ${S}/espeak-data/phon* ${D}${layout_datadir}/espeak-data
+}
+
+SRC_URI[md5sum] = "5c7b292d0537232868b4ac1317d76c02"
+SRC_URI[sha256sum] = "77f406c345362185ec4f362bf49f61d202e01ac9b9cd5c14f803195a544ce6d3"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc
new file mode 100644
index 0000000..98a1765
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "eSpeak is a compact open source software speech synthesizer"
+SECTION = "base"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://License.txt;md5=cb7a20edb4c9f5f478de6523dcd7362c"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/espeak/espeak-${PV}-source.zip"
+
+S = "${WORKDIR}/espeak-${PV}-source"
+
+DEPENDS = "portaudio-v19"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.37.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.37.bb
new file mode 100644
index 0000000..273fe34
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.37.bb
@@ -0,0 +1,44 @@
+require espeak.inc
+inherit siteinfo
+
+EXTRA_PHONEMES = '${@bb.utils.contains("SITEINFO_ENDIANNESS", "be",  "espeak-data (= ${PV})", "", d)}'
+RDEPENDS_${PN} = "portaudio-v19 ${EXTRA_PHONEMES}"
+
+SRC_URI[md5sum] = "5c7b292d0537232868b4ac1317d76c02"
+SRC_URI[sha256sum] = "77f406c345362185ec4f362bf49f61d202e01ac9b9cd5c14f803195a544ce6d3"
+
+CXXFLAGS += "-DUSE_PORTAUDIO"
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+FILES_${PN} += "${datadir}/espeak-data"
+
+do_configure() {
+    #  "speak" binary, a TTS engine, uses portaudio in either APIs V18 or V19, use V19
+    cp "${S}/src/portaudio19.h" "${S}/src/portaudio.h"
+}
+
+do_compile() {
+    cd src
+    oe_runmake
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -d ${D}${libdir}
+    install -d ${D}${includedir}/espeak
+    install -d ${D}${datadir}/espeak-data
+
+    # we do not ship "speak" binary though.
+    install -m 0755 ${S}/src/espeak ${D}${bindir}
+    install -m 0644 ${S}/src/speak_lib.h ${D}${includedir}/espeak/
+    ln -sf espeak/espeak.h ${D}${includedir}/
+    oe_libinstall -so -C src libespeak ${D}${libdir}
+
+    if [ "${SITEINFO_ENDIANNESS}" = "be" ] ; then
+        # the big-endian phon* files are provided by the package espeak-data
+        rm -f ${S}/espeak-data/phon*
+    fi
+
+    cp -prf ${S}/espeak-data/* ${D}${datadir}/espeak-data
+    chown -R root:root ${D}${datadir}/espeak-data
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/eventlog/eventlog_0.2.13.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/eventlog/eventlog_0.2.13.bb
new file mode 100644
index 0000000..349507d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/eventlog/eventlog_0.2.13.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Replacement syslog API"
+DESCRIPTION = "The EventLog library aims to be a replacement of the \
+              simple syslog() API provided on UNIX systems. The \
+              major difference between EventLog and syslog is that \
+              EventLog tries to add structure to messages. EventLog \
+              provides an interface to build, format and output an \
+              event record. The exact format and output method can \
+              be customized by the administrator via a configuration \
+              file. his package is the runtime part of the library. \
+"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b8ba8e77bcda9a53fac0fe39fe957767"
+
+SRC_URI = "http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.4.2/source/${BPN}_${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+SRC_URI[md5sum] = "68ec8d1ea3b98fa35002bb756227c315"
+SRC_URI[sha256sum] = "7cb4e6f316daede4fa54547371d5c986395177c12dbdec74a66298e684ac8b85"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/evtest/evtest_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/evtest/evtest_git.bb
new file mode 100644
index 0000000..96feab7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/evtest/evtest_git.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Simple tool for input event debugging"
+HOMEPAGE = "http://people.freedesktop.org/~whot/evtest/"
+AUTHOR = "Vojtech Pavlik <vojtech@suse.cz>"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "libxml2"
+
+SRCREV = "b8343ec1124da18bdabcc04809a8731b9e39295d"
+SRC_URI = "git://anongit.freedesktop.org/evtest;protocol=git"
+
+PV = "1.32+${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/farsight/farsight2_0.0.22.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/farsight/farsight2_0.0.22.bb
new file mode 100644
index 0000000..2989850
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/farsight/farsight2_0.0.22.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "FarSight is an audio/video conferencing framework specifically designed for Instant Messengers."
+HOMEPAGE = "http://farsight.sf.net"
+SRC_URI = "http://farsight.freedesktop.org/releases/farsight2/${BP}.tar.gz"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+
+PR = "r3"
+
+DEPENDS = "libnice glib-2.0 libxml2 zlib dbus gstreamer gst-plugins-base"
+
+inherit autotools
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gupnp] = "--enable-gupnp,--disable-gupnp,gupnp-igd"
+
+EXTRA_OECONF = " \
+    --disable-debug \
+    --disable-gtk-doc \
+    --disable-python \
+"
+
+FILES_${PN} += "${libdir}/*/*.so"
+FILES_${PN}-dev += "${libdir}/*/*.la"
+FILES_${PN}-staticdev += "${libdir}/*/*.a"
+FILES_${PN}-dbg += "${libdir}/*/.debug"
+
+
+SRC_URI[md5sum] = "e1f540cf3ebab06c3d7db1f46b44ac88"
+SRC_URI[sha256sum] = "3ae59aa61a8071c9fad111e5fd606aabc27961eb4192f8729987a27dae6b3974"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.0.13.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.0.13.bb
new file mode 100644
index 0000000..620ee1f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.0.13.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Interactive Connectivity Establishment library"
+DESCRIPTION = "Libnice is an implementation of the IETF's draft Interactive Connectivity Establishment standard (ICE)."
+HOMEPAGE = "http://nice.freedesktop.org/wiki/"
+SRC_URI = "http://nice.freedesktop.org/releases/libnice-${PV}.tar.gz"
+
+LICENSE = "LGPLv2.1 & MPLv1.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9c42325015702feda4f4d2f19a55b767 \
+                    file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+                    file://COPYING.MPL;md5=3c617710e51cdbe0fc00716f056dfb1a \
+"
+
+PR = "r4"
+
+DEPENDS = "glib-2.0 gstreamer"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gupnp] = "--enable-gupnp,--disable-gupnp,gupnp-igd"
+
+inherit autotools pkgconfig gtk-doc
+
+FILES_${PN} += "${libdir}/gstreamer-0.10/*.so"
+FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la"
+FILES_${PN}-staticdev += "${libdir}/gstreamer-0.10/*.a"
+FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug"
+
+do_configure_prepend() {
+    mkdir ${S}/m4 || true
+}
+
+do_compile_append() {
+    for i in $(find ${B} -name "*.pc") ; do
+        sed -i -e s:${STAGING_DIR_TARGET}::g \
+               -e s:/${TARGET_SYS}::g \
+                  $i
+    done
+}
+
+
+SRC_URI[md5sum] = "e5b9f799a57cb939ea2658ec35253ab9"
+SRC_URI[sha256sum] = "d8dd260c486a470a6052a5323920878a084e44a19df09b15728b85c9e3d6edf0"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-2.1/fbset-2.1-fix-makefile-dep.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-2.1/fbset-2.1-fix-makefile-dep.patch
new file mode 100644
index 0000000..41ab8af
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-2.1/fbset-2.1-fix-makefile-dep.patch
@@ -0,0 +1,31 @@
+From 3db6782de1de7ca4f1bb9ee7652c4f2808e57539 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Thu, 10 Jan 2013 12:24:33 +0800
+Subject: [PATCH] fbset 2.1 fix makefile dep modes.tab.c
+
+Upstream-Status: Inappropriate [no upstream]
+
+fix the error in parallel build:
+make: *** No rule to make target `modes.tab.h', needed by `lex.yy.o'.  Stop. 
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ Makefile |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 61536c1..09183e5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -15,7 +15,7 @@ fbset:		fbset.o modes.tab.o lex.yy.o
+ 
+ fbset.o:	fbset.c fbset.h fb.h
+ modes.tab.o:	modes.tab.c fbset.h fb.h
+-lex.yy.o:	lex.yy.c fbset.h modes.tab.h
++lex.yy.o:	lex.yy.c fbset.h modes.tab.c
+ 
+ lex.yy.c:	modes.l
+ 		$(FLEX) modes.l
+-- 
+1.7.4.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-2.1/makefile.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-2.1/makefile.patch
new file mode 100644
index 0000000..82b1c61
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-2.1/makefile.patch
@@ -0,0 +1,11 @@
+--- fbset-2.1/Makefile.orig	2006-05-28 04:04:27.412095480 +0200
++++ fbset-2.1/Makefile	2006-05-28 04:14:05.379231120 +0200
+@@ -2,7 +2,7 @@
+ # Linux Frame Buffer Device Configuration
+ #
+ 
+-CC =		gcc -Wall -O2 -I.
++CFLAGS =	-Wall -O2 -I.
+ BISON =		bison -d
+ FLEX =		flex
+ INSTALL =	install
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb
new file mode 100644
index 0000000..88f7a4f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Default display timings and resolutions for fbset"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+PV = "0.1.0"
+PR = "r6"
+
+SRC_URI = "file://fb.modes"
+S = "${WORKDIR}"
+
+do_install() {
+    install -d ${D}${sysconfdir}
+    install -m 0644 ${WORKDIR}/fb.modes ${D}${sysconfdir}
+}
+
+inherit allarch
+
+# fb.modes file is MACHINE_ARCH, base.bbclass correctly changes it to MACHINE_ARCH, but too late for allarch.bbclass
+# to disable "all" behavior (found when comparing qemuarm and qemux86 signatures)
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+CONFFILES_${PN} = "${sysconfdir}/fb.modes"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/fb.modes b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/fb.modes
new file mode 100644
index 0000000..ba5e6ed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/fb.modes
@@ -0,0 +1,3 @@
+# By default there is nothing in this file just a reminder to define some
+# modes in OE
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/om-gta01/fb.modes b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/om-gta01/fb.modes
new file mode 100644
index 0000000..446d23d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/om-gta01/fb.modes
@@ -0,0 +1,29 @@
+# Timings for GTA01 VGA and QVGA mode
+
+mode "480x640"
+    # D: 26.000 MHz, H: 43.334 kHz, V: 65.657 Hz
+    geometry 480 640 480 640 16
+    timings 38461 104 8 2 16 8 2
+    accel false
+endmode
+
+mode "vga"
+    # D: 26.000 MHz, H: 43.334 kHz, V: 65.657 Hz
+    geometry 480 640 480 640 16
+    timings 38461 104 8 2 16 8 2
+    accel false
+endmode
+
+mode "240x320"
+    # D: 8.475 MHz, H: 24.635 kHz, V: 75.569 Hz
+    geometry 240 320 240 320 16
+    timings 118000 88 8 2 2 8 2
+    accel false
+endmode
+
+mode "qvga"
+    # D: 8.475 MHz, H: 24.635 kHz, V: 75.569 Hz
+    geometry 240 320 240 320 16
+    timings 118000 88 8 2 2 8 2
+    accel false
+endmode
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/omap3-pandora/fb.modes b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/omap3-pandora/fb.modes
new file mode 100644
index 0000000..0c87401
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/omap3-pandora/fb.modes
@@ -0,0 +1,6 @@
+mode "800x480-65"
+    # D: 36.001 MHz, H: 34.124 kHz, V: 64.998 Hz
+    geometry 800 480 800 480 16
+    timings 27777 40 214 10 34 1 1
+    rgba 5/11,6/5,5/0,0/0
+endmode
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/qemuarm/fb.modes b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/qemuarm/fb.modes
new file mode 100644
index 0000000..1114564
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/qemuarm/fb.modes
@@ -0,0 +1,17 @@
+# QEMU versatilepb machine, qemuarm in OE
+
+mode "vga" "640x480"
+    geometry 640 480 640 480 16
+endmode
+
+mode "vga-portrait" "480x640"
+    geometry 480 640 480 640 16
+endmode
+
+mode "qvga" "320x240"
+    geometry 320 240 320 240 16
+endmode
+
+mode "qvga-portrait" "240x320"
+    geometry 240 320 240 320 16
+endmode
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/qemumips/fb.modes b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/qemumips/fb.modes
new file mode 100644
index 0000000..1114564
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes/qemumips/fb.modes
@@ -0,0 +1,17 @@
+# QEMU versatilepb machine, qemuarm in OE
+
+mode "vga" "640x480"
+    geometry 640 480 640 480 16
+endmode
+
+mode "vga-portrait" "480x640"
+    geometry 480 640 480 640 16
+endmode
+
+mode "qvga" "320x240"
+    geometry 320 240 320 240 16
+endmode
+
+mode "qvga-portrait" "240x320"
+    geometry 240 320 240 320 16
+endmode
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset/0001-fbset-including-asm-types.h-is-needed-on-all-linux-s.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset/0001-fbset-including-asm-types.h-is-needed-on-all-linux-s.patch
new file mode 100644
index 0000000..7f45dbe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset/0001-fbset-including-asm-types.h-is-needed-on-all-linux-s.patch
@@ -0,0 +1,34 @@
+From 06edd88833da93361d5408b880fbb890df332497 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 19 Jan 2016 01:55:47 +0000
+Subject: [PATCH] fbset: including asm/types.h is needed on all linux systems
+
+including asm/types.h is needed to get Linux typedef's like
+__s32 and so on which are independent of C library therefore this
+define should not be guarded by __GLIBC__ but by __linux__
+
+Helps to compile it on musl systems
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ fbset.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fbset.h b/fbset.h
+index 9b1d2ac..0d8def8 100644
+--- a/fbset.h
++++ b/fbset.h
+@@ -15,7 +15,7 @@
+ #include <stdio.h>
+ #include <sys/types.h>
+ 
+-#ifdef __GLIBC__
++#ifdef __linux__
+ #include <asm/types.h>
+ #endif
+ 
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb
new file mode 100644
index 0000000..cbbe6ca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb
@@ -0,0 +1,37 @@
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php for a copy of the license)
+#
+# Filename: fbset_2.1.bb
+# Date: 28-May-06
+
+SUMMARY = "The fbset console tool"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://fbset.c;endline=19;md5=bf326f82cdfcac391af208f019c5603f"
+RRECOMMENDS_${PN} = "fbset-modes"
+DEPENDS = "bison-native flex-native"
+
+PR = "r4"
+
+SRC_URI = "http://ftp.debian.org/debian/pool/main/f/fbset/fbset_2.1.orig.tar.gz \
+           file://makefile.patch \
+           file://fbset-2.1-fix-makefile-dep.patch \
+           file://0001-fbset-including-asm-types.h-is-needed-on-all-linux-s.patch \
+"
+
+inherit update-alternatives
+
+do_install() {
+    install -d ${D}${sbindir} ${D}${datadir}/man/man8 ${D}${datadir}/man/man5
+    install -m 0755 ${B}/fbset ${D}${sbindir}/fbset.real
+    install -m 0644 ${B}/*.5 ${D}${datadir}/man/man5
+    install -m 0644 ${B}/*.8 ${D}${datadir}/man/man8
+}
+
+ALTERNATIVE_fbset = "fbset"
+ALTERNATIVE_LINK_NAME[fbset] = "${sbindir}/fbset"
+ALTERNATIVE_TARGET[fbset] = "${sbindir}/fbset.real"
+ALTERNATIVE_PRIORITY[fbset] = "55"
+
+SRC_URI[md5sum] = "40ed9608f46d787bfb65fd1269f7f459"
+SRC_URI[sha256sum] = "517fa062d7b2d367f931a1c6ebb2bef84907077f0ce3f0c899e34490bbea9338"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fbtest/fb-test_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/fbtest/fb-test_git.bb
new file mode 100644
index 0000000..13f9e37
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fbtest/fb-test_git.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Test suite for Linux framebuffer"
+
+PV = "1.1.0"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+SRCREV = "063ec650960c2d79ac51f5c5f026cb05343a33e2"
+SRC_URI = "git://github.com/prpplague/fb-test-app.git"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+	install -d ${D}${bindir}
+	install -m 0755 fb-test ${D}${bindir}
+	# avoid collisions with perf (perf) and mesa-demos (offset)
+	for prog in perf rect offset ; do
+		install -m 0755 $prog ${D}${bindir}/fb-$prog
+	done
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/benchfft_3.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/benchfft_3.1.bb
new file mode 100644
index 0000000..d859386
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/benchfft_3.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "FFTW benchmarks"
+SECTION = "libs"
+LICENSE = "GPLv2"
+
+# single precision fftw is called fftwf 
+DEPENDS = "virtual/fftw"
+
+SRC_URI = "http://www.fftw.org/benchfft/benchfft-${PV}.tar.gz"
+
+EXTRA_OECONF = "--disable-fortran --enable-single --enable-shared"
+
+inherit autotools pkgconfig
+
+do_compile_prepend() {
+    sed -i -e 's:all-recursive:$(RECURSIVE_TARGETS):g' ${S}/Makefile
+}
+
+SRC_URI[md5sum] = "9356e5e9dcb3f1481977009720a2ccf8"
+SRC_URI[sha256sum] = "1b4a5b5e48ad5e61a21586b7b59d5c0a88691a981e73e2c6dc5868197461791b"
+
+PNBLACKLIST[benchfft] ?= "does not build with distroless qemuarm as reported in 'State of bitbake world' thread, nobody volunteered to fix them"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftw.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftw.inc
new file mode 100644
index 0000000..1522ea0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftw.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "FFTW"
+SECTION = "libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+PROVIDES = "virtual/fftw"
+
+RPROVIDES_${PN} += "libfftw3"
+
+SRC_URI = "http://www.fftw.org/fftw-${PV}.tar.gz"
+
+S = "${WORKDIR}/fftw-${PV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-fortran --enable-shared --enable-threads"
+
+do_configure_prepend() {
+    echo 'AM_PROG_AS' >> ${S}/configure.ac 
+}
+
+PACKAGES =+ "lib${BPN}"
+FILES_lib${BPN} = "${libdir}/lib*.so.*"
+
+# rename binary in /bin and use u-a tpo choose between different precision implementations?
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.4.bb
new file mode 100644
index 0000000..990f01e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.4.bb
@@ -0,0 +1,6 @@
+require fftw.inc
+
+SRC_URI[md5sum] = "2edab8c06b24feeb3b82bbb3ebf3e7b3"
+SRC_URI[sha256sum] = "8f0cde90929bc05587c3368d2f15cd0530a60b8a9912a8e2979a72dbe5af0982"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftwf_3.3.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftwf_3.3.4.bb
new file mode 100644
index 0000000..4a65986
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftwf_3.3.4.bb
@@ -0,0 +1,11 @@
+require fftw.inc
+
+# conflicts with fftw and fftwl
+EXCLUDE_FROM_WORLD = "1"
+
+EXTRA_OECONF += "--enable-single \
+    ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--enable-neon', '', d)} \
+"
+
+SRC_URI[md5sum] = "2edab8c06b24feeb3b82bbb3ebf3e7b3"
+SRC_URI[sha256sum] = "8f0cde90929bc05587c3368d2f15cd0530a60b8a9912a8e2979a72dbe5af0982"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftwl_3.3.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftwl_3.3.4.bb
new file mode 100644
index 0000000..432ff12
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fftw/fftwl_3.3.4.bb
@@ -0,0 +1,9 @@
+require fftw.inc
+
+# conflicts with fftw and fftwf
+EXCLUDE_FROM_WORLD = "1"
+
+EXTRA_OECONF += "--enable-long-double"
+
+SRC_URI[md5sum] = "2edab8c06b24feeb3b82bbb3ebf3e7b3"
+SRC_URI[sha256sum] = "8f0cde90929bc05587c3368d2f15cd0530a60b8a9912a8e2979a72dbe5af0982"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite-alsa-1.3/flite-1.3-alsa_support-1.2.diff b/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite-alsa-1.3/flite-1.3-alsa_support-1.2.diff
new file mode 100644
index 0000000..b3e4b7a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite-alsa-1.3/flite-1.3-alsa_support-1.2.diff
@@ -0,0 +1,6615 @@
+Index: lang/usenglish/Makefile
+===================================================================
+--- flite-1.3-release/lang/usenglish/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/lang/usenglish/Makefile	(.../release-1.2)	(revision 7)
+@@ -38,6 +38,7 @@
+ DIRNAME=lang/usenglish
+ BUILD_DIRS = 
+ ALL_DIRS= 
++include $(TOP)/config/config
+ H = usenglish.h us_int_accent_cart.h us_int_tone_cart.h us_durz_cart.h \
+     us_ffeatures.h us_phrasing_cart.h us_text.h us_f0.h us_nums_cart.h
+ SRCS = us_int_accent_cart.c us_int_tone_cart.c us_f0_model.c \
+@@ -45,7 +46,11 @@
+        us_phoneset.c us_ffeatures.c us_phrasing_cart.c \
+        us_gpos.c us_text.c us_expand.c us_postlex.c \
+        us_nums_cart.c us_aswd.c usenglish.c 
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_usenglish
+Index: lang/cmu_us_kal/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmu_us_kal/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/lang/cmu_us_kal/Makefile	(.../release-1.2)	(revision 7)
+@@ -43,7 +43,12 @@
+        cmu_us_kal_lpc.c \
+        cmu_us_kal_res.c \
+        cmu_us_kal_residx.c
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_cmu_us_kal
+Index: lang/cmu_us_kal16/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmu_us_kal16/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/lang/cmu_us_kal16/Makefile	(.../release-1.2)	(revision 7)
+@@ -44,7 +44,12 @@
+        cmu_us_kal16_lpc.c \
+        cmu_us_kal16_res.c \
+        cmu_us_kal16_residx.c
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_cmu_us_kal16
+Index: lang/cmu_time_awb/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmu_time_awb/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/lang/cmu_time_awb/Makefile	(.../release-1.2)	(revision 7)
+@@ -45,7 +45,12 @@
+ 	cmu_time_awb_mcep.c \
+ 	cmu_time_awb_lpc.c \
+ 	cmu_time_awb_lex_entry.c
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_cmu_time_awb
+Index: lang/cmulex/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmulex/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/lang/cmulex/Makefile	(.../release-1.2)	(revision 7)
+@@ -38,13 +38,20 @@
+ DIRNAME=lang/cmulex
+ BUILD_DIRS = 
+ ALL_DIRS= 
++
+ H = cmu_lts_model.h cmulex.h
+ SRCS = cmu_lts_rules.c cmu_lts_model.c \
+        cmu_lex.c cmu_lex_entries.c cmu_lex_data.c
+ LEX_DATA_INCLUDES = cmu_lex_data_raw.c cmu_lex_num_bytes.c \
+      cmu_lex_phones_huff_table.c cmu_lex_entries_huff_table.c
+ 
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
++
+ SCRIPTS=make_cmulex  
+ 
+ SCM=
+Index: configure
+===================================================================
+--- flite-1.3-release/configure	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/configure	(.../release-1.2)	(revision 7)
+@@ -1,324 +1,38 @@
+ #! /bin/sh
++
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.57.
++# Generated automatically using autoconf version 2.13 
++# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+ #
+-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+-# Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+-## --------------------- ##
+-## M4sh Initialization.  ##
+-## --------------------- ##
+ 
+-# Be Bourne compatible
+-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+-  emulate sh
+-  NULLCMD=:
+-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+-  # is contrary to our usage.  Disable this feature.
+-  alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+-  set -o posix
+-fi
+-
+-# Support unset when possible.
+-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+-  as_unset=unset
+-else
+-  as_unset=false
+-fi
+-
+-
+-# Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
+-PS1='$ '
+-PS2='> '
+-PS4='+ '
+-
+-# NLS nuisances.
+-for as_var in \
+-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+-  LC_TELEPHONE LC_TIME
+-do
+-  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+-    eval $as_var=C; export $as_var
+-  else
+-    $as_unset $as_var
+-  fi
+-done
+-
+-# Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
+-  as_expr=expr
+-else
+-  as_expr=false
+-fi
+-
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+-  as_basename=basename
+-else
+-  as_basename=false
+-fi
+-
+-
+-# Name of the executable.
+-as_me=`$as_basename "$0" ||
+-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+-	 X"$0" : 'X\(//\)$' \| \
+-	 X"$0" : 'X\(/\)$' \| \
+-	 .     : '\(.\)' 2>/dev/null ||
+-echo X/"$0" |
+-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+-  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+-  	  /^X\/\(\/\).*/{ s//\1/; q; }
+-  	  s/.*/./; q'`
+-
+-
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+-
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+-  echo "#! /bin/sh" >conf$$.sh
+-  echo  "exit 0"   >>conf$$.sh
+-  chmod +x conf$$.sh
+-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+-    PATH_SEPARATOR=';'
+-  else
+-    PATH_SEPARATOR=:
+-  fi
+-  rm -f conf$$.sh
+-fi
+-
+-
+-  as_lineno_1=$LINENO
+-  as_lineno_2=$LINENO
+-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+-  test "x$as_lineno_1" != "x$as_lineno_2" &&
+-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+-  # Find who we are.  Look in the path if we contain no path at all
+-  # relative or not.
+-  case $0 in
+-    *[\\/]* ) as_myself=$0 ;;
+-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
+-
+-       ;;
+-  esac
+-  # We did not find ourselves, most probably we were run as `sh COMMAND'
+-  # in which case we are not to be found in the path.
+-  if test "x$as_myself" = x; then
+-    as_myself=$0
+-  fi
+-  if test ! -f "$as_myself"; then
+-    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+-   { (exit 1); exit 1; }; }
+-  fi
+-  case $CONFIG_SHELL in
+-  '')
+-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for as_base in sh bash ksh sh5; do
+-	 case $as_dir in
+-	 /*)
+-	   if ("$as_dir/$as_base" -c '
+-  as_lineno_1=$LINENO
+-  as_lineno_2=$LINENO
+-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+-  test "x$as_lineno_1" != "x$as_lineno_2" &&
+-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+-	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+-	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+-	     CONFIG_SHELL=$as_dir/$as_base
+-	     export CONFIG_SHELL
+-	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+-	   fi;;
+-	 esac
+-       done
+-done
+-;;
+-  esac
+-
+-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+-  # uniformly replaced by the line number.  The first 'sed' inserts a
+-  # line-number line before each line; the second 'sed' does the real
+-  # work.  The second script uses 'N' to pair each line-number line
+-  # with the numbered line, and appends trailing '-' during
+-  # substitution so that $LINENO is not a special case at line end.
+-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+-  sed '=' <$as_myself |
+-    sed '
+-      N
+-      s,$,-,
+-      : loop
+-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+-      t loop
+-      s,-$,,
+-      s,^['$as_cr_digits']*\n,,
+-    ' >$as_me.lineno &&
+-  chmod +x $as_me.lineno ||
+-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+-   { (exit 1); exit 1; }; }
+-
+-  # Don't try to exec as it changes $[0], causing all sort of problems
+-  # (the dirname of $[0] is not the place where we might find the
+-  # original and so on.  Autoconf is especially sensible to this).
+-  . ./$as_me.lineno
+-  # Exit status is that of the last command.
+-  exit
+-}
+-
+-
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+-  *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T='	' ;;
+-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+-esac
+-
+-if expr a : '\(a\)' >/dev/null 2>&1; then
+-  as_expr=expr
+-else
+-  as_expr=false
+-fi
+-
+-rm -f conf$$ conf$$.exe conf$$.file
+-echo >conf$$.file
+-if ln -s conf$$.file conf$$ 2>/dev/null; then
+-  # We could just check for DJGPP; but this test a) works b) is more generic
+-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+-  if test -f conf$$.exe; then
+-    # Don't use ln at all; we don't have any links
+-    as_ln_s='cp -p'
+-  else
+-    as_ln_s='ln -s'
+-  fi
+-elif ln conf$$.file conf$$ 2>/dev/null; then
+-  as_ln_s=ln
+-else
+-  as_ln_s='cp -p'
+-fi
+-rm -f conf$$ conf$$.exe conf$$.file
+-
+-if mkdir -p . 2>/dev/null; then
+-  as_mkdir_p=:
+-else
+-  as_mkdir_p=false
+-fi
+-
+-as_executable_p="test -f"
+-
+-# Sed expression to map a string onto a valid CPP name.
+-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+-
+-# Sed expression to map a string onto a valid variable name.
+-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+-
+-
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" 	$as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+-
+-# Name of the host.
+-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+-# so uname gets run too.
+-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+-
+-exec 6>&1
+-
+-#
+-# Initializations.
+-#
++# Defaults:
++ac_help=
+ ac_default_prefix=/usr/local
+-ac_config_libobj_dir=.
+-cross_compiling=no
+-subdirs=
+-MFLAGS=
+-MAKEFLAGS=
+-SHELL=${CONFIG_SHELL-/bin/sh}
++# Any additions from configure.in:
++ac_help="$ac_help
++  --disable-shared     without shared library support"
++ac_help="$ac_help
++  --disable-sockets     without socket support"
++ac_help="$ac_help
++  --with-audio          with specific audio support (none linux freebsd etc) "
++ac_help="$ac_help
++  --with-lang           with language "
++ac_help="$ac_help
++  --with-vox            with vox "
++ac_help="$ac_help
++  --with-lex            with lexicon "
+ 
+-# Maximum number of lines to put in a shell here document.
+-# This variable seems obsolete.  It should probably be removed, and
+-# only ac_max_sed_lines should be used.
+-: ${ac_max_here_lines=38}
+-
+-# Identity of this package.
+-PACKAGE_NAME=
+-PACKAGE_TARNAME=
+-PACKAGE_VERSION=
+-PACKAGE_STRING=
+-PACKAGE_BUGREPORT=
+-
+-ac_unique_file="include/flite.h"
+-# Factoring default headers for most tests.
+-ac_includes_default="\
+-#include <stdio.h>
+-#if HAVE_SYS_TYPES_H
+-# include <sys/types.h>
+-#endif
+-#if HAVE_SYS_STAT_H
+-# include <sys/stat.h>
+-#endif
+-#if STDC_HEADERS
+-# include <stdlib.h>
+-# include <stddef.h>
+-#else
+-# if HAVE_STDLIB_H
+-#  include <stdlib.h>
+-# endif
+-#endif
+-#if HAVE_STRING_H
+-# if !STDC_HEADERS && HAVE_MEMORY_H
+-#  include <memory.h>
+-# endif
+-# include <string.h>
+-#endif
+-#if HAVE_STRINGS_H
+-# include <strings.h>
+-#endif
+-#if HAVE_INTTYPES_H
+-# include <inttypes.h>
+-#else
+-# if HAVE_STDINT_H
+-#  include <stdint.h>
+-# endif
+-#endif
+-#if HAVE_UNISTD_H
+-# include <unistd.h>
+-#endif"
+-
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR ac_ct_AR TARGET_OS TARGET_CPU M68KCC LEXDEFS VOXDEFS HOST_OS HOST_CPU OTHERLIBS SHFLAGS MMAPTYPE STDIOTYPE CPP EGREP AUDIODRIVER AUDIODEFS AUDIOLIBS FL_LANG FL_VOX FL_LEX LIBOBJS LTLIBOBJS'
+-ac_subst_files=''
+-
+ # Initialize some variables set by options.
+-ac_init_help=
+-ac_init_version=false
+ # The variables have the same names as the options, with
+ # dashes changed to underlines.
+-cache_file=/dev/null
++build=NONE
++cache_file=./config.cache
+ exec_prefix=NONE
++host=NONE
+ no_create=
++nonopt=NONE
+ no_recursion=
+ prefix=NONE
+ program_prefix=NONE
+@@ -327,15 +41,10 @@
+ silent=
+ site=
+ srcdir=
++target=NONE
+ verbose=
+ x_includes=NONE
+ x_libraries=NONE
+-
+-# Installation directory options.
+-# These are left unexpanded so users can "make install exec_prefix=/foo"
+-# and all the variables that are supposed to be based on exec_prefix
+-# by default will actually change.
+-# Use braces instead of parens because sh, perl, etc. also accept them.
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+@@ -349,9 +58,17 @@
+ infodir='${prefix}/info'
+ mandir='${prefix}/man'
+ 
++# Initialize some other variables.
++subdirs=
++MFLAGS= MAKEFLAGS=
++SHELL=${CONFIG_SHELL-/bin/sh}
++# Maximum number of lines to put in a shell here document.
++ac_max_here_lines=12
++
+ ac_prev=
+ for ac_option
+ do
++
+   # If the previous option needs an argument, assign it.
+   if test -n "$ac_prev"; then
+     eval "$ac_prev=\$ac_option"
+@@ -359,59 +76,59 @@
+     continue
+   fi
+ 
+-  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
++  case "$ac_option" in
++  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
++  *) ac_optarg= ;;
++  esac
+ 
+   # Accept the important Cygnus configure options, so we can diagnose typos.
+ 
+-  case $ac_option in
++  case "$ac_option" in
+ 
+   -bindir | --bindir | --bindi | --bind | --bin | --bi)
+     ac_prev=bindir ;;
+   -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+-    bindir=$ac_optarg ;;
++    bindir="$ac_optarg" ;;
+ 
+   -build | --build | --buil | --bui | --bu)
+-    ac_prev=build_alias ;;
++    ac_prev=build ;;
+   -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+-    build_alias=$ac_optarg ;;
++    build="$ac_optarg" ;;
+ 
+   -cache-file | --cache-file | --cache-fil | --cache-fi \
+   | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+     ac_prev=cache_file ;;
+   -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+   | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+-    cache_file=$ac_optarg ;;
++    cache_file="$ac_optarg" ;;
+ 
+-  --config-cache | -C)
+-    cache_file=config.cache ;;
+-
+   -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+     ac_prev=datadir ;;
+   -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+   | --da=*)
+-    datadir=$ac_optarg ;;
++    datadir="$ac_optarg" ;;
+ 
+   -disable-* | --disable-*)
+-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
++    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+     # Reject names that are not valid shell variable names.
+-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+-   { (exit 1); exit 1; }; }
+-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+-    eval "enable_$ac_feature=no" ;;
++    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
++      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
++    fi
++    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
++    eval "enable_${ac_feature}=no" ;;
+ 
+   -enable-* | --enable-*)
+-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
++    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+     # Reject names that are not valid shell variable names.
+-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+-   { (exit 1); exit 1; }; }
+-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+-    case $ac_option in
+-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
++      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
++    fi
++    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
++    case "$ac_option" in
++      *=*) ;;
+       *) ac_optarg=yes ;;
+     esac
+-    eval "enable_$ac_feature='$ac_optarg'" ;;
++    eval "enable_${ac_feature}='$ac_optarg'" ;;
+ 
+   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+   | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -420,47 +137,95 @@
+   -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+   | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+   | --exec=* | --exe=* | --ex=*)
+-    exec_prefix=$ac_optarg ;;
++    exec_prefix="$ac_optarg" ;;
+ 
+   -gas | --gas | --ga | --g)
+     # Obsolete; use --with-gas.
+     with_gas=yes ;;
+ 
+-  -help | --help | --hel | --he | -h)
+-    ac_init_help=long ;;
+-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+-    ac_init_help=recursive ;;
+-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+-    ac_init_help=short ;;
++  -help | --help | --hel | --he)
++    # Omit some internal or obsolete options to make the list less imposing.
++    # This message is too long to be a string in the A/UX 3.1 sh.
++    cat << EOF
++Usage: configure [options] [host]
++Options: [defaults in brackets after descriptions]
++Configuration:
++  --cache-file=FILE       cache test results in FILE
++  --help                  print this message
++  --no-create             do not create output files
++  --quiet, --silent       do not print \`checking...' messages
++  --version               print the version of autoconf that created configure
++Directory and file names:
++  --prefix=PREFIX         install architecture-independent files in PREFIX
++                          [$ac_default_prefix]
++  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
++                          [same as prefix]
++  --bindir=DIR            user executables in DIR [EPREFIX/bin]
++  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
++  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
++  --datadir=DIR           read-only architecture-independent data in DIR
++                          [PREFIX/share]
++  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
++  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
++                          [PREFIX/com]
++  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
++  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
++  --includedir=DIR        C header files in DIR [PREFIX/include]
++  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
++  --infodir=DIR           info documentation in DIR [PREFIX/info]
++  --mandir=DIR            man documentation in DIR [PREFIX/man]
++  --srcdir=DIR            find the sources in DIR [configure dir or ..]
++  --program-prefix=PREFIX prepend PREFIX to installed program names
++  --program-suffix=SUFFIX append SUFFIX to installed program names
++  --program-transform-name=PROGRAM
++                          run sed PROGRAM on installed program names
++EOF
++    cat << EOF
++Host type:
++  --build=BUILD           configure for building on BUILD [BUILD=HOST]
++  --host=HOST             configure for HOST [guessed]
++  --target=TARGET         configure for TARGET [TARGET=HOST]
++Features and packages:
++  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
++  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
++  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
++  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
++  --x-includes=DIR        X include files are in DIR
++  --x-libraries=DIR       X library files are in DIR
++EOF
++    if test -n "$ac_help"; then
++      echo "--enable and --with options recognized:$ac_help"
++    fi
++    exit 0 ;;
+ 
+   -host | --host | --hos | --ho)
+-    ac_prev=host_alias ;;
++    ac_prev=host ;;
+   -host=* | --host=* | --hos=* | --ho=*)
+-    host_alias=$ac_optarg ;;
++    host="$ac_optarg" ;;
+ 
+   -includedir | --includedir | --includedi | --included | --include \
+   | --includ | --inclu | --incl | --inc)
+     ac_prev=includedir ;;
+   -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+   | --includ=* | --inclu=* | --incl=* | --inc=*)
+-    includedir=$ac_optarg ;;
++    includedir="$ac_optarg" ;;
+ 
+   -infodir | --infodir | --infodi | --infod | --info | --inf)
+     ac_prev=infodir ;;
+   -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+-    infodir=$ac_optarg ;;
++    infodir="$ac_optarg" ;;
+ 
+   -libdir | --libdir | --libdi | --libd)
+     ac_prev=libdir ;;
+   -libdir=* | --libdir=* | --libdi=* | --libd=*)
+-    libdir=$ac_optarg ;;
++    libdir="$ac_optarg" ;;
+ 
+   -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+   | --libexe | --libex | --libe)
+     ac_prev=libexecdir ;;
+   -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+   | --libexe=* | --libex=* | --libe=*)
+-    libexecdir=$ac_optarg ;;
++    libexecdir="$ac_optarg" ;;
+ 
+   -localstatedir | --localstatedir | --localstatedi | --localstated \
+   | --localstate | --localstat | --localsta | --localst \
+@@ -469,19 +234,19 @@
+   -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+   | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+   | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+-    localstatedir=$ac_optarg ;;
++    localstatedir="$ac_optarg" ;;
+ 
+   -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+     ac_prev=mandir ;;
+   -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+-    mandir=$ac_optarg ;;
++    mandir="$ac_optarg" ;;
+ 
+   -nfp | --nfp | --nf)
+     # Obsolete; use --without-fp.
+     with_fp=no ;;
+ 
+   -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+-  | --no-cr | --no-c | -n)
++  | --no-cr | --no-c)
+     no_create=yes ;;
+ 
+   -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+@@ -495,26 +260,26 @@
+   -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+   | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+   | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+-    oldincludedir=$ac_optarg ;;
++    oldincludedir="$ac_optarg" ;;
+ 
+   -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+     ac_prev=prefix ;;
+   -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+-    prefix=$ac_optarg ;;
++    prefix="$ac_optarg" ;;
+ 
+   -program-prefix | --program-prefix | --program-prefi | --program-pref \
+   | --program-pre | --program-pr | --program-p)
+     ac_prev=program_prefix ;;
+   -program-prefix=* | --program-prefix=* | --program-prefi=* \
+   | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+-    program_prefix=$ac_optarg ;;
++    program_prefix="$ac_optarg" ;;
+ 
+   -program-suffix | --program-suffix | --program-suffi | --program-suff \
+   | --program-suf | --program-su | --program-s)
+     ac_prev=program_suffix ;;
+   -program-suffix=* | --program-suffix=* | --program-suffi=* \
+   | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+-    program_suffix=$ac_optarg ;;
++    program_suffix="$ac_optarg" ;;
+ 
+   -program-transform-name | --program-transform-name \
+   | --program-transform-nam | --program-transform-na \
+@@ -531,7 +296,7 @@
+   | --program-transfo=* | --program-transf=* \
+   | --program-trans=* | --program-tran=* \
+   | --progr-tra=* | --program-tr=* | --program-t=*)
+-    program_transform_name=$ac_optarg ;;
++    program_transform_name="$ac_optarg" ;;
+ 
+   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+   | -silent | --silent | --silen | --sile | --sil)
+@@ -541,7 +306,7 @@
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+   | --sbi=* | --sb=*)
+-    sbindir=$ac_optarg ;;
++    sbindir="$ac_optarg" ;;
+ 
+   -sharedstatedir | --sharedstatedir | --sharedstatedi \
+   | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+@@ -552,57 +317,58 @@
+   | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+   | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+   | --sha=* | --sh=*)
+-    sharedstatedir=$ac_optarg ;;
++    sharedstatedir="$ac_optarg" ;;
+ 
+   -site | --site | --sit)
+     ac_prev=site ;;
+   -site=* | --site=* | --sit=*)
+-    site=$ac_optarg ;;
++    site="$ac_optarg" ;;
+ 
+   -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+     ac_prev=srcdir ;;
+   -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+-    srcdir=$ac_optarg ;;
++    srcdir="$ac_optarg" ;;
+ 
+   -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+   | --syscon | --sysco | --sysc | --sys | --sy)
+     ac_prev=sysconfdir ;;
+   -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+   | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+-    sysconfdir=$ac_optarg ;;
++    sysconfdir="$ac_optarg" ;;
+ 
+   -target | --target | --targe | --targ | --tar | --ta | --t)
+-    ac_prev=target_alias ;;
++    ac_prev=target ;;
+   -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+-    target_alias=$ac_optarg ;;
++    target="$ac_optarg" ;;
+ 
+   -v | -verbose | --verbose | --verbos | --verbo | --verb)
+     verbose=yes ;;
+ 
+-  -version | --version | --versio | --versi | --vers | -V)
+-    ac_init_version=: ;;
++  -version | --version | --versio | --versi | --vers)
++    echo "configure generated by autoconf version 2.13"
++    exit 0 ;;
+ 
+   -with-* | --with-*)
+-    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
++    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+     # Reject names that are not valid shell variable names.
+-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+-      { echo "$as_me: error: invalid package name: $ac_package" >&2
+-   { (exit 1); exit 1; }; }
++    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
++      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
++    fi
+     ac_package=`echo $ac_package| sed 's/-/_/g'`
+-    case $ac_option in
+-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++    case "$ac_option" in
++      *=*) ;;
+       *) ac_optarg=yes ;;
+     esac
+-    eval "with_$ac_package='$ac_optarg'" ;;
++    eval "with_${ac_package}='$ac_optarg'" ;;
+ 
+   -without-* | --without-*)
+-    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
++    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+     # Reject names that are not valid shell variable names.
+-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+-      { echo "$as_me: error: invalid package name: $ac_package" >&2
+-   { (exit 1); exit 1; }; }
+-    ac_package=`echo $ac_package | sed 's/-/_/g'`
+-    eval "with_$ac_package=no" ;;
++    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
++      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
++    fi
++    ac_package=`echo $ac_package| sed 's/-/_/g'`
++    eval "with_${ac_package}=no" ;;
+ 
+   --x)
+     # Obsolete; use --with-x.
+@@ -613,110 +379,99 @@
+     ac_prev=x_includes ;;
+   -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+   | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+-    x_includes=$ac_optarg ;;
++    x_includes="$ac_optarg" ;;
+ 
+   -x-libraries | --x-libraries | --x-librarie | --x-librari \
+   | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+     ac_prev=x_libraries ;;
+   -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+-    x_libraries=$ac_optarg ;;
++    x_libraries="$ac_optarg" ;;
+ 
+-  -*) { echo "$as_me: error: unrecognized option: $ac_option
+-Try \`$0 --help' for more information." >&2
+-   { (exit 1); exit 1; }; }
++  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+     ;;
+ 
+-  *=*)
+-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+-    # Reject names that are not valid shell variable names.
+-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+-   { (exit 1); exit 1; }; }
+-    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+-    eval "$ac_envvar='$ac_optarg'"
+-    export $ac_envvar ;;
+-
+   *)
+-    # FIXME: should be removed in autoconf 3.0.
+-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+-      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
++    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
++      echo "configure: warning: $ac_option: invalid host type" 1>&2
++    fi
++    if test "x$nonopt" != xNONE; then
++      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
++    fi
++    nonopt="$ac_option"
+     ;;
+ 
+   esac
+ done
+ 
+ if test -n "$ac_prev"; then
+-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+-  { echo "$as_me: error: missing argument to $ac_option" >&2
+-   { (exit 1); exit 1; }; }
++  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+ fi
+ 
+-# Be sure to have absolute paths.
+-for ac_var in exec_prefix prefix
+-do
+-  eval ac_val=$`echo $ac_var`
+-  case $ac_val in
+-    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+-   { (exit 1); exit 1; }; };;
+-  esac
+-done
++trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+ 
+-# Be sure to have absolute paths.
+-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+-              localstatedir libdir includedir oldincludedir infodir mandir
++# File descriptor usage:
++# 0 standard input
++# 1 file creation
++# 2 errors and warnings
++# 3 some systems may open it to /dev/tty
++# 4 used on the Kubota Titan
++# 6 checking for... messages and results
++# 5 compiler messages saved in config.log
++if test "$silent" = yes; then
++  exec 6>/dev/null
++else
++  exec 6>&1
++fi
++exec 5>./config.log
++
++echo "\
++This file contains any messages produced by compilers while
++running configure, to aid debugging if configure makes a mistake.
++" 1>&5
++
++# Strip out --no-create and --no-recursion so they do not pile up.
++# Also quote any args containing shell metacharacters.
++ac_configure_args=
++for ac_arg
+ do
+-  eval ac_val=$`echo $ac_var`
+-  case $ac_val in
+-    [\\/$]* | ?:[\\/]* ) ;;
+-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+-   { (exit 1); exit 1; }; };;
++  case "$ac_arg" in
++  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
++  | --no-cr | --no-c) ;;
++  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
++  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
++  *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
++  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
++  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+   esac
+ done
+ 
+-# There might be people who depend on the old broken behavior: `$host'
+-# used to hold the argument of --host etc.
+-# FIXME: To remove some day.
+-build=$build_alias
+-host=$host_alias
+-target=$target_alias
++# NLS nuisances.
++# Only set these to C if already set.  These must not be set unconditionally
++# because not all systems understand e.g. LANG=C (notably SCO).
++# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
++# Non-C LC_CTYPE values break the ctype check.
++if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
++if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
++if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
++if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+ 
+-# FIXME: To remove some day.
+-if test "x$host_alias" != x; then
+-  if test "x$build_alias" = x; then
+-    cross_compiling=maybe
+-    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+-    If a cross compiler is detected then cross compile mode will be used." >&2
+-  elif test "x$build_alias" != "x$host_alias"; then
+-    cross_compiling=yes
+-  fi
+-fi
++# confdefs.h avoids OS command line length limits that DEFS can exceed.
++rm -rf conftest* confdefs.h
++# AIX cpp loses on an empty file, so make sure it contains at least a newline.
++echo > confdefs.h
+ 
+-ac_tool_prefix=
+-test -n "$host_alias" && ac_tool_prefix=$host_alias-
++# A filename unique to this package, relative to the directory that
++# configure is in, which we can look for to find out if srcdir is correct.
++ac_unique_file=include/flite.h
+ 
+-test "$silent" = yes && exec 6>/dev/null
+-
+-
+ # Find the source files, if location was not specified.
+ if test -z "$srcdir"; then
+   ac_srcdir_defaulted=yes
+   # Try the directory containing this script, then its parent.
+-  ac_confdir=`(dirname "$0") 2>/dev/null ||
+-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+-         X"$0" : 'X\(//\)[^/]' \| \
+-         X"$0" : 'X\(//\)$' \| \
+-         X"$0" : 'X\(/\)' \| \
+-         .     : '\(.\)' 2>/dev/null ||
+-echo X"$0" |
+-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+-  	  /^X\(\/\/\)$/{ s//\1/; q; }
+-  	  /^X\(\/\).*/{ s//\1/; q; }
+-  	  s/.*/./; q'`
++  ac_prog=$0
++  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
++  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+   srcdir=$ac_confdir
+   if test ! -r $srcdir/$ac_unique_file; then
+     srcdir=..
+@@ -726,441 +481,13 @@
+ fi
+ if test ! -r $srcdir/$ac_unique_file; then
+   if test "$ac_srcdir_defaulted" = yes; then
+-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+-   { (exit 1); exit 1; }; }
++    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+   else
+-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+-   { (exit 1); exit 1; }; }
++    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+   fi
+ fi
+-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+-  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+-   { (exit 1); exit 1; }; }
+-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+-ac_env_build_alias_set=${build_alias+set}
+-ac_env_build_alias_value=$build_alias
+-ac_cv_env_build_alias_set=${build_alias+set}
+-ac_cv_env_build_alias_value=$build_alias
+-ac_env_host_alias_set=${host_alias+set}
+-ac_env_host_alias_value=$host_alias
+-ac_cv_env_host_alias_set=${host_alias+set}
+-ac_cv_env_host_alias_value=$host_alias
+-ac_env_target_alias_set=${target_alias+set}
+-ac_env_target_alias_value=$target_alias
+-ac_cv_env_target_alias_set=${target_alias+set}
+-ac_cv_env_target_alias_value=$target_alias
+-ac_env_CC_set=${CC+set}
+-ac_env_CC_value=$CC
+-ac_cv_env_CC_set=${CC+set}
+-ac_cv_env_CC_value=$CC
+-ac_env_CFLAGS_set=${CFLAGS+set}
+-ac_env_CFLAGS_value=$CFLAGS
+-ac_cv_env_CFLAGS_set=${CFLAGS+set}
+-ac_cv_env_CFLAGS_value=$CFLAGS
+-ac_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_env_LDFLAGS_value=$LDFLAGS
+-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_cv_env_LDFLAGS_value=$LDFLAGS
+-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_env_CPPFLAGS_value=$CPPFLAGS
+-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+-ac_env_CPP_set=${CPP+set}
+-ac_env_CPP_value=$CPP
+-ac_cv_env_CPP_set=${CPP+set}
+-ac_cv_env_CPP_value=$CPP
++srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+ 
+-#
+-# Report the --help message.
+-#
+-if test "$ac_init_help" = "long"; then
+-  # Omit some internal or obsolete options to make the list less imposing.
+-  # This message is too long to be a string in the A/UX 3.1 sh.
+-  cat <<_ACEOF
+-\`configure' configures this package to adapt to many kinds of systems.
+-
+-Usage: $0 [OPTION]... [VAR=VALUE]...
+-
+-To assign environment variables (e.g., CC, CFLAGS...), specify them as
+-VAR=VALUE.  See below for descriptions of some of the useful variables.
+-
+-Defaults for the options are specified in brackets.
+-
+-Configuration:
+-  -h, --help              display this help and exit
+-      --help=short        display options specific to this package
+-      --help=recursive    display the short help of all the included packages
+-  -V, --version           display version information and exit
+-  -q, --quiet, --silent   do not print \`checking...' messages
+-      --cache-file=FILE   cache test results in FILE [disabled]
+-  -C, --config-cache      alias for \`--cache-file=config.cache'
+-  -n, --no-create         do not create output files
+-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+-
+-_ACEOF
+-
+-  cat <<_ACEOF
+-Installation directories:
+-  --prefix=PREFIX         install architecture-independent files in PREFIX
+-                          [$ac_default_prefix]
+-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+-                          [PREFIX]
+-
+-By default, \`make install' will install all the files in
+-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+-for instance \`--prefix=\$HOME'.
+-
+-For better control, use the options below.
+-
+-Fine tuning of the installation directories:
+-  --bindir=DIR           user executables [EPREFIX/bin]
+-  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+-  --libexecdir=DIR       program executables [EPREFIX/libexec]
+-  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+-  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+-  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+-  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+-  --libdir=DIR           object code libraries [EPREFIX/lib]
+-  --includedir=DIR       C header files [PREFIX/include]
+-  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+-  --infodir=DIR          info documentation [PREFIX/info]
+-  --mandir=DIR           man documentation [PREFIX/man]
+-_ACEOF
+-
+-  cat <<\_ACEOF
+-
+-System types:
+-  --build=BUILD     configure for building on BUILD [guessed]
+-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+-  --target=TARGET   configure for building compilers for TARGET [HOST]
+-_ACEOF
+-fi
+-
+-if test -n "$ac_init_help"; then
+-
+-  cat <<\_ACEOF
+-
+-Optional Features:
+-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+-  --disable-shared     without shared library support
+-  --disable-sockets     without socket support
+-
+-Optional Packages:
+-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+-  --with-audio          with specific audio support (none linux freebsd etc)
+-  --with-lang           with language
+-  --with-vox            with vox
+-  --with-lex            with lexicon
+-
+-Some influential environment variables:
+-  CC          C compiler command
+-  CFLAGS      C compiler flags
+-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+-              nonstandard directory <lib dir>
+-  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+-              headers in a nonstandard directory <include dir>
+-  CPP         C preprocessor
+-
+-Use these variables to override the choices made by `configure' or to help
+-it to find libraries and programs with nonstandard names/locations.
+-
+-_ACEOF
+-fi
+-
+-if test "$ac_init_help" = "recursive"; then
+-  # If there are subdirs, report their specific --help.
+-  ac_popdir=`pwd`
+-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+-    test -d $ac_dir || continue
+-    ac_builddir=.
+-
+-if test "$ac_dir" != .; then
+-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+-  # A "../" for each directory in $ac_dir_suffix.
+-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+-  ac_dir_suffix= ac_top_builddir=
+-fi
+-
+-case $srcdir in
+-  .)  # No --srcdir option.  We are building in place.
+-    ac_srcdir=.
+-    if test -z "$ac_top_builddir"; then
+-       ac_top_srcdir=.
+-    else
+-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+-    fi ;;
+-  [\\/]* | ?:[\\/]* )  # Absolute path.
+-    ac_srcdir=$srcdir$ac_dir_suffix;
+-    ac_top_srcdir=$srcdir ;;
+-  *) # Relative path.
+-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
+-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+-# absolute.
+-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+-
+-    cd $ac_dir
+-    # Check for guested configure; otherwise get Cygnus style configure.
+-    if test -f $ac_srcdir/configure.gnu; then
+-      echo
+-      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+-    elif test -f $ac_srcdir/configure; then
+-      echo
+-      $SHELL $ac_srcdir/configure  --help=recursive
+-    elif test -f $ac_srcdir/configure.ac ||
+-           test -f $ac_srcdir/configure.in; then
+-      echo
+-      $ac_configure --help
+-    else
+-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+-    fi
+-    cd $ac_popdir
+-  done
+-fi
+-
+-test -n "$ac_init_help" && exit 0
+-if $ac_init_version; then
+-  cat <<\_ACEOF
+-
+-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+-Free Software Foundation, Inc.
+-This configure script is free software; the Free Software Foundation
+-gives unlimited permission to copy, distribute and modify it.
+-_ACEOF
+-  exit 0
+-fi
+-exec 5>config.log
+-cat >&5 <<_ACEOF
+-This file contains any messages produced by compilers while
+-running configure, to aid debugging if configure makes a mistake.
+-
+-It was created by $as_me, which was
+-generated by GNU Autoconf 2.57.  Invocation command line was
+-
+-  $ $0 $@
+-
+-_ACEOF
+-{
+-cat <<_ASUNAME
+-## --------- ##
+-## Platform. ##
+-## --------- ##
+-
+-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+-uname -m = `(uname -m) 2>/dev/null || echo unknown`
+-uname -r = `(uname -r) 2>/dev/null || echo unknown`
+-uname -s = `(uname -s) 2>/dev/null || echo unknown`
+-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+-
+-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+-
+-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+-hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+-
+-_ASUNAME
+-
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  echo "PATH: $as_dir"
+-done
+-
+-} >&5
+-
+-cat >&5 <<_ACEOF
+-
+-
+-## ----------- ##
+-## Core tests. ##
+-## ----------- ##
+-
+-_ACEOF
+-
+-
+-# Keep a trace of the command line.
+-# Strip out --no-create and --no-recursion so they do not pile up.
+-# Strip out --silent because we don't want to record it for future runs.
+-# Also quote any args containing shell meta-characters.
+-# Make two passes to allow for proper duplicate-argument suppression.
+-ac_configure_args=
+-ac_configure_args0=
+-ac_configure_args1=
+-ac_sep=
+-ac_must_keep_next=false
+-for ac_pass in 1 2
+-do
+-  for ac_arg
+-  do
+-    case $ac_arg in
+-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+-    | -silent | --silent | --silen | --sile | --sil)
+-      continue ;;
+-    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+-      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+-    esac
+-    case $ac_pass in
+-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+-    2)
+-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+-      if test $ac_must_keep_next = true; then
+-        ac_must_keep_next=false # Got value, back to normal.
+-      else
+-        case $ac_arg in
+-          *=* | --config-cache | -C | -disable-* | --disable-* \
+-          | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+-          | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+-          | -with-* | --with-* | -without-* | --without-* | --x)
+-            case "$ac_configure_args0 " in
+-              "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+-            esac
+-            ;;
+-          -* ) ac_must_keep_next=true ;;
+-        esac
+-      fi
+-      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+-      # Get rid of the leading space.
+-      ac_sep=" "
+-      ;;
+-    esac
+-  done
+-done
+-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+-
+-# When interrupted or exit'd, cleanup temporary files, and complete
+-# config.log.  We remove comments because anyway the quotes in there
+-# would cause problems or look ugly.
+-# WARNING: Be sure not to use single quotes in there, as some shells,
+-# such as our DU 5.0 friend, will then `close' the trap.
+-trap 'exit_status=$?
+-  # Save into config.log some information that might help in debugging.
+-  {
+-    echo
+-
+-    cat <<\_ASBOX
+-## ---------------- ##
+-## Cache variables. ##
+-## ---------------- ##
+-_ASBOX
+-    echo
+-    # The following way of writing the cache mishandles newlines in values,
+-{
+-  (set) 2>&1 |
+-    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+-    *ac_space=\ *)
+-      sed -n \
+-        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+-    	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+-      ;;
+-    *)
+-      sed -n \
+-        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+-      ;;
+-    esac;
+-}
+-    echo
+-
+-    cat <<\_ASBOX
+-## ----------------- ##
+-## Output variables. ##
+-## ----------------- ##
+-_ASBOX
+-    echo
+-    for ac_var in $ac_subst_vars
+-    do
+-      eval ac_val=$`echo $ac_var`
+-      echo "$ac_var='"'"'$ac_val'"'"'"
+-    done | sort
+-    echo
+-
+-    if test -n "$ac_subst_files"; then
+-      cat <<\_ASBOX
+-## ------------- ##
+-## Output files. ##
+-## ------------- ##
+-_ASBOX
+-      echo
+-      for ac_var in $ac_subst_files
+-      do
+-	eval ac_val=$`echo $ac_var`
+-        echo "$ac_var='"'"'$ac_val'"'"'"
+-      done | sort
+-      echo
+-    fi
+-
+-    if test -s confdefs.h; then
+-      cat <<\_ASBOX
+-## ----------- ##
+-## confdefs.h. ##
+-## ----------- ##
+-_ASBOX
+-      echo
+-      sed "/^$/d" confdefs.h | sort
+-      echo
+-    fi
+-    test "$ac_signal" != 0 &&
+-      echo "$as_me: caught signal $ac_signal"
+-    echo "$as_me: exit $exit_status"
+-  } >&5
+-  rm -f core core.* *.core &&
+-  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+-    exit $exit_status
+-     ' 0
+-for ac_signal in 1 2 13 15; do
+-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+-done
+-ac_signal=0
+-
+-# confdefs.h avoids OS command line length limits that DEFS can exceed.
+-rm -rf conftest* confdefs.h
+-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+-echo >confdefs.h
+-
+-# Predefined preprocessor variables.
+-
+-cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_NAME "$PACKAGE_NAME"
+-_ACEOF
+-
+-
+-cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+-_ACEOF
+-
+-
+-cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+-_ACEOF
+-
+-
+-cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_STRING "$PACKAGE_STRING"
+-_ACEOF
+-
+-
+-cat >>confdefs.h <<_ACEOF
+-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+-_ACEOF
+-
+-
+-# Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+ if test -z "$CONFIG_SITE"; then
+   if test "x$prefix" != xNONE; then
+@@ -1171,106 +498,42 @@
+ fi
+ for ac_site_file in $CONFIG_SITE; do
+   if test -r "$ac_site_file"; then
+-    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+-echo "$as_me: loading site script $ac_site_file" >&6;}
+-    sed 's/^/| /' "$ac_site_file" >&5
++    echo "loading site script $ac_site_file"
+     . "$ac_site_file"
+   fi
+ done
+ 
+ if test -r "$cache_file"; then
+-  # Some versions of bash will fail to source /dev/null (special
+-  # files actually), so we avoid doing that.
+-  if test -f "$cache_file"; then
+-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+-echo "$as_me: loading cache $cache_file" >&6;}
+-    case $cache_file in
+-      [\\/]* | ?:[\\/]* ) . $cache_file;;
+-      *)                      . ./$cache_file;;
+-    esac
+-  fi
++  echo "loading cache $cache_file"
++  . $cache_file
+ else
+-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+-echo "$as_me: creating cache $cache_file" >&6;}
+-  >$cache_file
++  echo "creating cache $cache_file"
++  > $cache_file
+ fi
+ 
+-# Check that the precious variables saved in the cache have kept the same
+-# value.
+-ac_cache_corrupted=false
+-for ac_var in `(set) 2>&1 |
+-               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+-  eval ac_new_set=\$ac_env_${ac_var}_set
+-  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+-  eval ac_new_val="\$ac_env_${ac_var}_value"
+-  case $ac_old_set,$ac_new_set in
+-    set,)
+-      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+-      ac_cache_corrupted=: ;;
+-    ,set)
+-      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+-      ac_cache_corrupted=: ;;
+-    ,);;
+-    *)
+-      if test "x$ac_old_val" != "x$ac_new_val"; then
+-        { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+-        { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+-echo "$as_me:   former value:  $ac_old_val" >&2;}
+-        { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+-echo "$as_me:   current value: $ac_new_val" >&2;}
+-        ac_cache_corrupted=:
+-      fi;;
+-  esac
+-  # Pass precious variables to config.status.
+-  if test "$ac_new_set" = set; then
+-    case $ac_new_val in
+-    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+-      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+-    *) ac_arg=$ac_var=$ac_new_val ;;
+-    esac
+-    case " $ac_configure_args " in
+-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+-    esac
+-  fi
+-done
+-if $ac_cache_corrupted; then
+-  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+-  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+-   { (exit 1); exit 1; }; }
+-fi
+-
+ ac_ext=c
++# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ 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_compiler_gnu=$ac_cv_c_compiler_gnu
++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
++ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
++cross_compiling=$ac_cv_prog_cc_cross
+ 
++ac_exeext=
++ac_objext=o
++if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
++  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
++  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
++    ac_n= ac_c='
++' ac_t='	'
++  else
++    ac_n=-n ac_c= ac_t=
++  fi
++else
++  ac_n= ac_c='\c' ac_t=
++fi
+ 
+ 
+ 
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+ ac_aux_dir=
+ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+   if test -f $ac_dir/install-sh; then
+@@ -1281,740 +544,312 @@
+     ac_aux_dir=$ac_dir
+     ac_install_sh="$ac_aux_dir/install.sh -c"
+     break
+-  elif test -f $ac_dir/shtool; then
+-    ac_aux_dir=$ac_dir
+-    ac_install_sh="$ac_aux_dir/shtool install -c"
+-    break
+   fi
+ done
+ if test -z "$ac_aux_dir"; then
+-  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+-   { (exit 1); exit 1; }; }
++  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+ fi
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
++ac_config_guess=$ac_aux_dir/config.guess
++ac_config_sub=$ac_aux_dir/config.sub
++ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+ 
+-# Make sure we can run config.sub.
+-$ac_config_sub sun4 >/dev/null 2>&1 ||
+-  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+-   { (exit 1); exit 1; }; }
+ 
+-echo "$as_me:$LINENO: checking build system type" >&5
+-echo $ECHO_N "checking build system type... $ECHO_C" >&6
+-if test "${ac_cv_build+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  ac_cv_build_alias=$build_alias
+-test -z "$ac_cv_build_alias" &&
+-  ac_cv_build_alias=`$ac_config_guess`
+-test -z "$ac_cv_build_alias" &&
+-  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+-   { (exit 1); exit 1; }; }
+-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+-   { (exit 1); exit 1; }; }
++# Do some error checking and defaulting for the host and target type.
++# The inputs are:
++#    configure --host=HOST --target=TARGET --build=BUILD NONOPT
++#
++# The rules are:
++# 1. You are not allowed to specify --host, --target, and nonopt at the
++#    same time.
++# 2. Host defaults to nonopt.
++# 3. If nonopt is not specified, then host defaults to the current host,
++#    as determined by config.guess.
++# 4. Target and build default to nonopt.
++# 5. If nonopt is not specified, then target and build default to host.
+ 
++# The aliases save the names the user supplied, while $host etc.
++# will get canonicalized.
++case $host---$target---$nonopt in
++NONE---*---* | *---NONE---* | *---*---NONE) ;;
++*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
++esac
++
++
++# Make sure we can run config.sub.
++if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
++else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+-echo "${ECHO_T}$ac_cv_build" >&6
+-build=$ac_cv_build
+-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+ 
++echo $ac_n "checking host system type""... $ac_c" 1>&6
++echo "configure:585: checking host system type" >&5
+ 
+-echo "$as_me:$LINENO: checking host system type" >&5
+-echo $ECHO_N "checking host system type... $ECHO_C" >&6
+-if test "${ac_cv_host+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  ac_cv_host_alias=$host_alias
+-test -z "$ac_cv_host_alias" &&
+-  ac_cv_host_alias=$ac_cv_build_alias
+-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+-   { (exit 1); exit 1; }; }
++host_alias=$host
++case "$host_alias" in
++NONE)
++  case $nonopt in
++  NONE)
++    if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
++    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
++    fi ;;
++  *) host_alias=$nonopt ;;
++  esac ;;
++esac
+ 
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+-echo "${ECHO_T}$ac_cv_host" >&6
+-host=$ac_cv_host
+-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
++host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
++host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
++host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++echo "$ac_t""$host" 1>&6
+ 
++echo $ac_n "checking target system type""... $ac_c" 1>&6
++echo "configure:606: checking target system type" >&5
+ 
+-echo "$as_me:$LINENO: checking target system type" >&5
+-echo $ECHO_N "checking target system type... $ECHO_C" >&6
+-if test "${ac_cv_target+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  ac_cv_target_alias=$target_alias
+-test "x$ac_cv_target_alias" = "x" &&
+-  ac_cv_target_alias=$ac_cv_host_alias
+-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
+-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
+-   { (exit 1); exit 1; }; }
++target_alias=$target
++case "$target_alias" in
++NONE)
++  case $nonopt in
++  NONE) target_alias=$host_alias ;;
++  *) target_alias=$nonopt ;;
++  esac ;;
++esac
+ 
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+-echo "${ECHO_T}$ac_cv_target" >&6
+-target=$ac_cv_target
+-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
++target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
++target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
++target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++echo "$ac_t""$target" 1>&6
+ 
++echo $ac_n "checking build system type""... $ac_c" 1>&6
++echo "configure:624: checking build system type" >&5
+ 
+-# The aliases save the names the user supplied, while $host etc.
+-# will get canonicalized.
+-test -n "$target_alias" &&
++build_alias=$build
++case "$build_alias" in
++NONE)
++  case $nonopt in
++  NONE) build_alias=$host_alias ;;
++  *) build_alias=$nonopt ;;
++  esac ;;
++esac
++
++build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
++build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
++build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
++build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++echo "$ac_t""$build" 1>&6
++
++test "$host_alias" != "$target_alias" &&
+   test "$program_prefix$program_suffix$program_transform_name" = \
+     NONENONEs,x,x, &&
+   program_prefix=${target_alias}-
+-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_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.
+-set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  if test -n "$CC"; then
+-  ac_cv_prog_CC="$CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+ 
+-fi
+-fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+-  echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+-  ac_ct_CC=$CC
+-  # Extract the first word of "gcc", so it can be a program name with args.
++# Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++echo "configure:649: checking for $ac_word" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  if test -n "$ac_ct_CC"; then
+-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_ac_ct_CC="gcc"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
+-else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-  CC=$ac_ct_CC
+-else
+-  CC="$ac_cv_prog_CC"
+-fi
+-
+-if test -z "$CC"; then
+-  if test -n "$ac_tool_prefix"; then
+-  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+   if test -n "$CC"; then
+   ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_CC="${ac_tool_prefix}cc"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
++  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
++  ac_dummy="$PATH"
++  for ac_dir in $ac_dummy; do
++    test -z "$ac_dir" && ac_dir=.
++    if test -f $ac_dir/$ac_word; then
++      ac_cv_prog_CC="gcc"
++      break
++    fi
++  done
++  IFS="$ac_save_ifs"
+ fi
+ fi
+-CC=$ac_cv_prog_CC
++CC="$ac_cv_prog_CC"
+ if test -n "$CC"; then
+-  echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++  echo "$ac_t""$CC" 1>&6
+ else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++  echo "$ac_t""no" 1>&6
+ fi
+ 
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+-  ac_ct_CC=$CC
+-  # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  if test -n "$ac_ct_CC"; then
+-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_ac_ct_CC="cc"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
+-else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-  CC=$ac_ct_CC
+-else
+-  CC="$ac_cv_prog_CC"
+-fi
+-
+-fi
+ if test -z "$CC"; then
+   # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++echo "configure:679: checking for $ac_word" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   if test -n "$CC"; then
+   ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
++  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
+   ac_prog_rejected=no
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+-       ac_prog_rejected=yes
+-       continue
+-     fi
+-    ac_cv_prog_CC="cc"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
++  ac_dummy="$PATH"
++  for ac_dir in $ac_dummy; do
++    test -z "$ac_dir" && ac_dir=.
++    if test -f $ac_dir/$ac_word; then
++      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
++        ac_prog_rejected=yes
++	continue
++      fi
++      ac_cv_prog_CC="cc"
++      break
++    fi
++  done
++  IFS="$ac_save_ifs"
+ if test $ac_prog_rejected = yes; then
+   # We found a bogon in the path, so make sure we never use it.
+   set dummy $ac_cv_prog_CC
+   shift
+-  if test $# != 0; then
++  if test $# -gt 0; then
+     # We chose a different compiler from the bogus one.
+     # However, it has the same basename, so the bogon will be chosen
+     # first if we set CC to just the basename; use the full file name.
+     shift
+-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
++    set dummy "$ac_dir/$ac_word" "$@"
++    shift
++    ac_cv_prog_CC="$@"
+   fi
+ fi
+ fi
+ fi
+-CC=$ac_cv_prog_CC
++CC="$ac_cv_prog_CC"
+ if test -n "$CC"; then
+-  echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++  echo "$ac_t""$CC" 1>&6
+ else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++  echo "$ac_t""no" 1>&6
+ fi
+ 
+-fi
+-if test -z "$CC"; then
+-  if test -n "$ac_tool_prefix"; then
+-  for ac_prog in cl
+-  do
+-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++  if test -z "$CC"; then
++    case "`uname -s`" in
++    *win32* | *WIN32*)
++      # Extract the first word of "cl", so it can be a program name with args.
++set dummy cl; ac_word=$2
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++echo "configure:730: checking for $ac_word" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   if test -n "$CC"; then
+   ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
++  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
++  ac_dummy="$PATH"
++  for ac_dir in $ac_dummy; do
++    test -z "$ac_dir" && ac_dir=.
++    if test -f $ac_dir/$ac_word; then
++      ac_cv_prog_CC="cl"
++      break
++    fi
++  done
++  IFS="$ac_save_ifs"
+ fi
+ fi
+-CC=$ac_cv_prog_CC
++CC="$ac_cv_prog_CC"
+ if test -n "$CC"; then
+-  echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++  echo "$ac_t""$CC" 1>&6
+ else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++  echo "$ac_t""no" 1>&6
+ fi
+-
+-    test -n "$CC" && break
+-  done
+-fi
+-if test -z "$CC"; then
+-  ac_ct_CC=$CC
+-  for ac_prog in cl
+-do
+-  # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  if test -n "$ac_ct_CC"; then
+-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_ac_ct_CC="$ac_prog"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
++ ;;
++    esac
+   fi
+-done
+-done
+-
++  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+ fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
+-else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+ 
+-  test -n "$ac_ct_CC" && break
+-done
++echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
++echo "configure:762: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+ 
+-  CC=$ac_ct_CC
+-fi
++ac_ext=c
++# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
++ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
++cross_compiling=$ac_cv_prog_cc_cross
+ 
+-fi
++cat > conftest.$ac_ext << EOF
+ 
++#line 773 "configure"
++#include "confdefs.h"
+ 
+-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: no acceptable C compiler found in \$PATH
+-See \`config.log' for more details." >&2;}
+-   { (exit 1); exit 1; }; }
+-
+-# Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+-     "checking for C compiler version" >&5
+-ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+-  (eval $ac_compiler --version </dev/null >&5) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+-  (eval $ac_compiler -v </dev/null >&5) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+-  (eval $ac_compiler -V </dev/null >&5) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }
+-
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-
+-int
+-main ()
+-{
+-
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-ac_clean_files_save=$ac_clean_files
+-ac_clean_files="$ac_clean_files a.out a.exe b.out"
+-# Try to create an executable without -o first, disregard a.out.
+-# It will help us diagnose broken compilers, and finding out an intuition
+-# of exeext.
+-echo "$as_me:$LINENO: checking for C compiler default output" >&5
+-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+-  (eval $ac_link_default) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; then
+-  # Find the output, starting from the most likely.  This scheme is
+-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+-# resort.
+-
+-# Be careful to initialize this variable, since it used to be cached.
+-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+-ac_cv_exeext=
+-# b.out is created by i960 compilers.
+-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+-do
+-  test -f "$ac_file" || continue
+-  case $ac_file in
+-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+-        ;;
+-    conftest.$ac_ext )
+-        # This is the source file.
+-        ;;
+-    [ab].out )
+-        # We found the default executable, but exeext='' is most
+-        # certainly right.
+-        break;;
+-    *.* )
+-        ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+-        # FIXME: I believe we export ac_cv_exeext for Libtool,
+-        # but it would be cool to find out if it's true.  Does anybody
+-        # maintain Libtool? --akim.
+-        export ac_cv_exeext
+-        break;;
+-    * )
+-        break;;
+-  esac
+-done
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: C compiler cannot create executables
+-See \`config.log' for more details." >&2;}
+-   { (exit 77); exit 77; }; }
+-fi
+-
+-ac_exeext=$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6
+-
+-# Check the compiler produces executables we can run.  If not, either
+-# the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+-# If not cross compiling, check that we can run a simple program.
+-if test "$cross_compiling" != yes; then
+-  if { ac_try='./$ac_file'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-    cross_compiling=no
++main(){return(0);}
++EOF
++if { (eval echo configure:778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++  ac_cv_prog_cc_works=yes
++  # If we can't run a trivial program, we are probably using a cross compiler.
++  if (./conftest; exit) 2>/dev/null; then
++    ac_cv_prog_cc_cross=no
+   else
+-    if test "$cross_compiling" = maybe; then
+-	cross_compiling=yes
+-    else
+-	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+-If you meant to cross compile, use \`--host'.
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot run C compiled programs.
+-If you meant to cross compile, use \`--host'.
+-See \`config.log' for more details." >&2;}
+-   { (exit 1); exit 1; }; }
+-    fi
++    ac_cv_prog_cc_cross=yes
+   fi
++else
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  ac_cv_prog_cc_works=no
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++rm -fr conftest*
++ac_ext=c
++# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
++ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
++cross_compiling=$ac_cv_prog_cc_cross
+ 
+-rm -f a.out a.exe conftest$ac_cv_exeext b.out
+-ac_clean_files=$ac_clean_files_save
+-# Check the compiler produces executables we can run.  If not, either
+-# the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+-echo "$as_me:$LINENO: result: $cross_compiling" >&5
+-echo "${ECHO_T}$cross_compiling" >&6
+-
+-echo "$as_me:$LINENO: checking for suffix of executables" >&5
+-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+-  (eval $ac_link) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; then
+-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+-# work properly (i.e., refer to `conftest.exe'), while it won't with
+-# `rm'.
+-for ac_file in conftest.exe conftest conftest.*; do
+-  test -f "$ac_file" || continue
+-  case $ac_file in
+-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+-          export ac_cv_exeext
+-          break;;
+-    * ) break;;
+-  esac
+-done
+-else
+-  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+-See \`config.log' for more details." >&2;}
+-   { (exit 1); exit 1; }; }
++echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
++if test $ac_cv_prog_cc_works = no; then
++  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+ fi
++echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
++echo "configure:804: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
++echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
++cross_compiling=$ac_cv_prog_cc_cross
+ 
+-rm -f conftest$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6
+-
+-rm -f conftest.$ac_ext
+-EXEEXT=$ac_cv_exeext
+-ac_exeext=$EXEEXT
+-echo "$as_me:$LINENO: checking for suffix of object files" >&5
+-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+-if test "${ac_cv_objext+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
++echo "configure:809: checking whether we are using GNU C" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-
+-int
+-main ()
+-{
+-
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.o conftest.obj
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; then
+-  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+-  case $ac_file in
+-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+-       break;;
+-  esac
+-done
++  cat > conftest.c <<EOF
++#ifdef __GNUC__
++  yes;
++#endif
++EOF
++if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
++  ac_cv_prog_gcc=yes
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute suffix of object files: cannot compile
+-See \`config.log' for more details." >&2;}
+-   { (exit 1); exit 1; }; }
++  ac_cv_prog_gcc=no
+ fi
+-
+-rm -f conftest.$ac_cv_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+-echo "${ECHO_T}$ac_cv_objext" >&6
+-OBJEXT=$ac_cv_objext
+-ac_objext=$OBJEXT
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+-if test "${ac_cv_c_compiler_gnu+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+ 
+-int
+-main ()
+-{
+-#ifndef __GNUC__
+-       choke me
+-#endif
++echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+ 
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  ac_compiler_gnu=yes
++if test $ac_cv_prog_gcc = yes; then
++  GCC=yes
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_compiler_gnu=no
++  GCC=
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-ac_cv_c_compiler_gnu=$ac_compiler_gnu
+ 
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+-GCC=`test $ac_compiler_gnu = yes && echo yes`
+-ac_test_CFLAGS=${CFLAGS+set}
+-ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_g+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++ac_test_CFLAGS="${CFLAGS+set}"
++ac_save_CFLAGS="$CFLAGS"
++CFLAGS=
++echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
++echo "configure:837: checking whether ${CC-cc} accepts -g" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-
+-int
+-main ()
+-{
+-
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
++  echo 'void f(){}' > conftest.c
++if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+   ac_cv_prog_cc_g=yes
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++  ac_cv_prog_cc_g=no
++fi
++rm -f conftest*
+ 
+-ac_cv_prog_cc_g=no
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
++
++echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+ if test "$ac_test_CFLAGS" = set; then
+-  CFLAGS=$ac_save_CFLAGS
++  CFLAGS="$ac_save_CFLAGS"
+ elif test $ac_cv_prog_cc_g = yes; then
+   if test "$GCC" = yes; then
+     CFLAGS="-g -O2"
+@@ -2028,304 +863,37 @@
+     CFLAGS=
+   fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  ac_cv_prog_cc_stdc=no
+-ac_save_CC=$CC
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <stdarg.h>
+-#include <stdio.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+-struct buf { int x; };
+-FILE * (*rcsopen) (struct buf *, struct stat *, int);
+-static char *e (p, i)
+-     char **p;
+-     int i;
+-{
+-  return p[i];
+-}
+-static char *f (char * (*g) (char **, int), char **p, ...)
+-{
+-  char *s;
+-  va_list v;
+-  va_start (v,p);
+-  s = g (p, va_arg (v,int));
+-  va_end (v);
+-  return s;
+-}
+-int test (int i, double x);
+-struct s1 {int (*f) (int a);};
+-struct s2 {int (*f) (double a);};
+-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+-int argc;
+-char **argv;
+-int
+-main ()
+-{
+-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX			-qlanglvl=ansi
+-# Ultrix and OSF/1	-std1
+-# HP-UX 10.20 and later	-Ae
+-# HP-UX older versions	-Aa -D_HPUX_SOURCE
+-# SVR4			-Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+-do
+-  CC="$ac_save_CC $ac_arg"
+-  rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  ac_cv_prog_cc_stdc=$ac_arg
+-break
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+ 
+-fi
+-rm -f conftest.$ac_objext
+-done
+-rm -f conftest.$ac_ext conftest.$ac_objext
+-CC=$ac_save_CC
+-
+-fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+-  x|xno)
+-    echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
+-  *)
+-    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+-    CC="$CC $ac_cv_prog_cc_stdc" ;;
+-esac
+-
+-# Some people use a C++ compiler to compile C.  Since we use `exit',
+-# in C++ we need to declare it.  In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
+-cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+-  choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  for ac_declaration in \
+-   ''\
+-   '#include <stdlib.h>' \
+-   'extern "C" void std::exit (int) throw (); using std::exit;' \
+-   'extern "C" void std::exit (int); using std::exit;' \
+-   'extern "C" void exit (int) throw ();' \
+-   'extern "C" void exit (int);' \
+-   'void exit (int);'
+-do
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <stdlib.h>
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  :
++# Extract the first word of "ranlib", so it can be a program name with args.
++set dummy ranlib; ac_word=$2
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++echo "configure:871: checking for $ac_word" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-continue
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  break
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+-  echo '#ifdef __cplusplus' >>confdefs.h
+-  echo $ac_declaration      >>confdefs.h
+-  echo '#endif'             >>confdefs.h
+-fi
+-
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-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_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-if test -n "$ac_tool_prefix"; then
+-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_RANLIB+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+   if test -n "$RANLIB"; then
+   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+ else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
++  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
++  ac_dummy="$PATH"
++  for ac_dir in $ac_dummy; do
++    test -z "$ac_dir" && ac_dir=.
++    if test -f $ac_dir/$ac_word; then
++      ac_cv_prog_RANLIB="ranlib"
++      break
++    fi
++  done
++  IFS="$ac_save_ifs"
++  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
+ fi
+ fi
+-RANLIB=$ac_cv_prog_RANLIB
++RANLIB="$ac_cv_prog_RANLIB"
+ if test -n "$RANLIB"; then
+-  echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++  echo "$ac_t""$RANLIB" 1>&6
+ else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++  echo "$ac_t""no" 1>&6
+ fi
+ 
+-fi
+-if test -z "$ac_cv_prog_RANLIB"; then
+-  ac_ct_RANLIB=$RANLIB
+-  # Extract the first word of "ranlib", so it can be a program name with args.
+-set dummy ranlib; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  if test -n "$ac_ct_RANLIB"; then
+-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_ac_ct_RANLIB="ranlib"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
+-  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+-fi
+-fi
+-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+-if test -n "$ac_ct_RANLIB"; then
+-  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
+-else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-  RANLIB=$ac_ct_RANLIB
+-else
+-  RANLIB="$ac_cv_prog_RANLIB"
+-fi
+-
+ # Find a good install program.  We prefer a C program (faster),
+ # so one script is as good as another.  But avoid the broken or
+ # incompatible versions:
+@@ -2333,306 +901,158 @@
+ # SunOS /usr/etc/install
+ # IRIX /sbin/install
+ # AIX /bin/install
+-# AmigaOS /C/install, which installs bootblocks on floppy discs
+ # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+ # AFS /usr/afsws/bin/install, which mishandles nonexistent args
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
++echo "configure:910: checking for a BSD compatible install" >&5
+ if test -z "$INSTALL"; then
+-if test "${ac_cv_path_install+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  # Account for people who put trailing slashes in PATH elements.
+-case $as_dir/ in
+-  ./ | .// | /cC/* | \
+-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+-  /usr/ucb/* ) ;;
+-  *)
+-    # OSF1 and SCO ODT 3.0 have their own names for install.
+-    # Don't use installbsd from OSF since it installs stuff as root
+-    # by default.
+-    for ac_prog in ginstall scoinst install; do
+-      for ac_exec_ext in '' $ac_executable_extensions; do
+-        if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+-          if test $ac_prog = install &&
+-            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+-            # AIX install.  It has an incompatible calling convention.
+-            :
+-          elif test $ac_prog = install &&
+-            grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+-            # program-specific install script used by HP pwplus--don't use.
+-            :
+-          else
+-            ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+-            break 3
+-          fi
+-        fi
++    IFS="${IFS= 	}"; ac_save_IFS="$IFS"; IFS=":"
++  for ac_dir in $PATH; do
++    # Account for people who put trailing slashes in PATH elements.
++    case "$ac_dir/" in
++    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
++    *)
++      # OSF1 and SCO ODT 3.0 have their own names for install.
++      # Don't use installbsd from OSF since it installs stuff as root
++      # by default.
++      for ac_prog in ginstall scoinst install; do
++        if test -f $ac_dir/$ac_prog; then
++	  if test $ac_prog = install &&
++            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
++	    # AIX install.  It has an incompatible calling convention.
++	    :
++	  else
++	    ac_cv_path_install="$ac_dir/$ac_prog -c"
++	    break 2
++	  fi
++	fi
+       done
+-    done
+-    ;;
+-esac
+-done
++      ;;
++    esac
++  done
++  IFS="$ac_save_IFS"
+ 
+-
+ fi
+   if test "${ac_cv_path_install+set}" = set; then
+-    INSTALL=$ac_cv_path_install
++    INSTALL="$ac_cv_path_install"
+   else
+     # As a last resort, use the slow shell script.  We don't cache a
+     # path for INSTALL within a source directory, because that will
+     # break other packages using the cache if that directory is
+     # removed, or if the path is relative.
+-    INSTALL=$ac_install_sh
++    INSTALL="$ac_install_sh"
+   fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++echo "$ac_t""$INSTALL" 1>&6
+ 
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+ test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+ 
+-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
++test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+ 
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+ 
+-if test -n "$ac_tool_prefix"; then
+-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
++if test $host != $build; then
++  ac_tool_prefix=${host_alias}-
++else
++  ac_tool_prefix=
++fi
++
++# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}ar; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_AR+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++echo "configure:971: checking for $ac_word" >&5
++if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   if test -n "$AR"; then
+   ac_cv_prog_AR="$AR" # Let the user override the test.
+ else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_AR="${ac_tool_prefix}ar"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
++  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
++  ac_dummy="$PATH"
++  for ac_dir in $ac_dummy; do
++    test -z "$ac_dir" && ac_dir=.
++    if test -f $ac_dir/$ac_word; then
++      ac_cv_prog_AR="${ac_tool_prefix}ar"
++      break
++    fi
++  done
++  IFS="$ac_save_ifs"
++  test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
+ fi
+ fi
+-AR=$ac_cv_prog_AR
++AR="$ac_cv_prog_AR"
+ if test -n "$AR"; then
+-  echo "$as_me:$LINENO: result: $AR" >&5
+-echo "${ECHO_T}$AR" >&6
++  echo "$ac_t""$AR" 1>&6
+ else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++  echo "$ac_t""no" 1>&6
+ fi
+ 
+-fi
+-if test -z "$ac_cv_prog_AR"; then
+-  ac_ct_AR=$AR
+-  # Extract the first word of "ar", so it can be a program name with args.
+-set dummy ar; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  if test -n "$ac_ct_AR"; then
+-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_ac_ct_AR="ar"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+ 
+-fi
+-fi
+-ac_ct_AR=$ac_cv_prog_ac_ct_AR
+-if test -n "$ac_ct_AR"; then
+-  echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+-echo "${ECHO_T}$ac_ct_AR" >&6
+-else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+ 
+-  AR=$ac_ct_AR
++echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
++echo "configure:1001: checking whether byte ordering is bigendian" >&5
++if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  AR="$ac_cv_prog_AR"
+-fi
+-
+-
+-echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6
+-if test "${ac_cv_c_bigendian+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  # See if sys/param.h defines the BYTE_ORDER macro.
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
++  ac_cv_c_bigendian=unknown
++# See if sys/param.h defines the BYTE_ORDER macro.
++cat > conftest.$ac_ext <<EOF
++#line 1008 "configure"
++#include "confdefs.h"
+ #include <sys/types.h>
+ #include <sys/param.h>
++int main() {
+ 
+-int
+-main ()
+-{
+ #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+  bogus endian macros
+ #endif
+-
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
++; return 0; }
++EOF
++if { (eval echo configure:1019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++  rm -rf conftest*
+   # It does; now see whether it defined to BIG_ENDIAN or not.
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
++cat > conftest.$ac_ext <<EOF
++#line 1023 "configure"
++#include "confdefs.h"
+ #include <sys/types.h>
+ #include <sys/param.h>
++int main() {
+ 
+-int
+-main ()
+-{
+ #if BYTE_ORDER != BIG_ENDIAN
+  not big endian
+ #endif
+-
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
++; return 0; }
++EOF
++if { (eval echo configure:1034: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++  rm -rf conftest*
+   ac_cv_c_bigendian=yes
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_cv_c_bigendian=no
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  ac_cv_c_bigendian=no
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
++rm -f conftest*
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-# It does not; compile a test program.
+-if test "$cross_compiling" = yes; then
+-  # try to guess the endianness by grepping values into an object file
+-  ac_cv_c_bigendian=unknown
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+-short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+-void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }
+-short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+-short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+-void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }
+-int
+-main ()
+-{
+- _ascii (); _ebcdic ();
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then
+-  ac_cv_c_bigendian=yes
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
+ fi
+-if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+-  if test "$ac_cv_c_bigendian" = unknown; then
+-    ac_cv_c_bigendian=no
+-  else
+-    # finding both strings is unlikely to happen, but who knows?
+-    ac_cv_c_bigendian=unknown
+-  fi
+-fi
++rm -f conftest*
++if test $ac_cv_c_bigendian = unknown; then
++if test "$cross_compiling" = yes; then
++    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-else
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-int
+-main ()
+-{
++  cat > conftest.$ac_ext <<EOF
++#line 1054 "configure"
++#include "confdefs.h"
++main () {
+   /* Are we little or big endian?  From Harbison&Steele.  */
+   union
+   {
+@@ -2642,52 +1062,31 @@
+   u.l = 1;
+   exit (u.c[sizeof (long) - 1] == 1);
+ }
+-_ACEOF
+-rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+-  (eval $ac_link) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
++EOF
++if { (eval echo configure:1067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++then
+   ac_cv_c_bigendian=no
+ else
+-  echo "$as_me: program exited with status $ac_status" >&5
+-echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-( exit $ac_status )
+-ac_cv_c_bigendian=yes
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -fr conftest*
++  ac_cv_c_bigendian=yes
+ fi
+-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -fr conftest*
+ fi
++
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+-echo "${ECHO_T}$ac_cv_c_bigendian" >&6
+-case $ac_cv_c_bigendian in
+-  yes)
+ 
+-cat >>confdefs.h <<\_ACEOF
++echo "$ac_t""$ac_cv_c_bigendian" 1>&6
++if test $ac_cv_c_bigendian = yes; then
++  cat >> confdefs.h <<\EOF
+ #define WORDS_BIGENDIAN 1
+-_ACEOF
+- ;;
+-  no)
+-     ;;
+-  *)
+-    { { echo "$as_me:$LINENO: error: unknown endianness
+-presetting ac_cv_c_bigendian=no (or yes) will help" >&5
+-echo "$as_me: error: unknown endianness
+-presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
+-   { (exit 1); exit 1; }; } ;;
+-esac
++EOF
+ 
++fi
+ 
++
+ if test "x$GCC" = "xyes"; then
+ 	CFLAGS="$CFLAGS -Wall"
+ fi
+@@ -2697,14 +1096,13 @@
+   case "${enableval}" in
+                  yes) shared=true ;;
+                  no) shared=false ;;
+-                 *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for shared options" >&5
+-echo "$as_me: error: bad value ${enableval} for shared options" >&2;}
+-   { (exit 1); exit 1; }; } ;;
++                 *) { echo "configure: error: bad value ${enableval} for shared options" 1>&2; exit 1; } ;;
+                  esac
+ else
+   shared=false
+-fi;
++fi
+ 
++
+ case "$target_cpu" in
+      i386|i486|i586|i686)
+ 	TARGET_CPU=i386
+@@ -2712,7 +1110,7 @@
+      *)
+         TARGET_CPU=$target_cpu
+      ;;
+-esac
++esac     
+ TARGET_OS=$target_os
+ 
+ M68KCC=
+@@ -2726,7 +1124,7 @@
+ 		M68KCC=/usr/m68k-palmos/bin/gcc
+ 		# Generic build is ARM or M68K (probably ARM though)
+                 CC="/usr/$TARGET_CPU-palmos/bin/gcc"
+-		if test "$target_cpu" = "arm"
++		if test "$target_cpu" = "arm" 
+                 then
+                    CC="$CC -fPIC -march=armv4t"
+                 fi
+@@ -2762,7 +1160,7 @@
+      *)
+         HOST_CPU=$host_cpu
+      ;;
+-esac
++esac     
+ HOST_OS=$host_os
+ 
+ 
+@@ -2800,138 +1198,91 @@
+   case "${enableval}" in
+                  yes) sockets=true ;;
+                  no) sockets=false ;;
+-                 *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for sockets options" >&5
+-echo "$as_me: error: bad value ${enableval} for sockets options" >&2;}
+-   { (exit 1); exit 1; }; } ;;
++                 *) { echo "configure: error: bad value ${enableval} for sockets options" 1>&2; exit 1; } ;;
+                  esac
+ else
+   sockets=true
+-fi;
++fi
++
+ if test "$sockets" = false; then
+-   cat >>confdefs.h <<\_ACEOF
++   cat >> confdefs.h <<\EOF
+ #define CST_NO_SOCKETS 1
+-_ACEOF
++EOF
+ 
+ fi
+ 
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
++cat > conftest.$ac_ext <<EOF
++#line 1216 "configure"
++#include "confdefs.h"
+ #include <stdio.h>
+-int
+-main ()
+-{
++int main() {
+  struct a { union { float b; int c; } d; };
+-                 const struct a e = { .d={ .b=3.14 } };
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
++                 const struct a e = { .d={ .b=3.14 } }; 
++; return 0; }
++EOF
++if { (eval echo configure:1224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++  rm -rf conftest*
+   unioninit=yes
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-unioninit=no
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  unioninit=no
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
++rm -f conftest*
+ if test "$unioninit" = no; then
+-   cat >>confdefs.h <<\_ACEOF
++   cat >> confdefs.h <<\EOF
+ #define NO_UNION_INITIALIZATION 1
+-_ACEOF
++EOF
+ 
+ fi
+ 
+-echo "$as_me:$LINENO: checking for mmap" >&5
+-echo $ECHO_N "checking for mmap... $ECHO_C" >&6
+-if test "${ac_cv_func_mmap+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++echo $ac_n "checking for mmap""... $ac_c" 1>&6
++echo "configure:1242: checking for mmap" >&5
++if eval "test \"`echo '$''{'ac_cv_func_mmap'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
++  cat > conftest.$ac_ext <<EOF
++#line 1247 "configure"
++#include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+-    which can conflict with char mmap (); below.
+-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+-    <limits.h> exists even on freestanding compilers.  */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
++    which can conflict with char mmap(); below.  */
++#include <assert.h>
+ /* Override any gcc2 internal prototype to avoid an error.  */
+-#ifdef __cplusplus
+-extern "C"
+-{
+-#endif
+ /* We use char because int might match the return type of a gcc2
+-   builtin and then its argument prototype would still apply.  */
+-char mmap ();
++    builtin and then its argument prototype would still apply.  */
++char mmap();
++
++int main() {
++
+ /* The GNU C library defines this for functions which it implements
+     to always fail with ENOSYS.  Some functions are actually named
+     something starting with __ and the normal name is an alias.  */
+ #if defined (__stub_mmap) || defined (__stub___mmap)
+ choke me
+ #else
+-char (*f) () = mmap;
++mmap();
+ #endif
+-#ifdef __cplusplus
+-}
+-#endif
+ 
+-int
+-main ()
+-{
+-return f != mmap;
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+-  (eval $ac_link) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest$ac_exeext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  ac_cv_func_mmap=yes
++; return 0; }
++EOF
++if { (eval echo configure:1270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++  rm -rf conftest*
++  eval "ac_cv_func_mmap=yes"
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_cv_func_mmap=no
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  eval "ac_cv_func_mmap=no"
+ fi
+-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
++rm -f conftest*
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_func_mmap" >&5
+-echo "${ECHO_T}$ac_cv_func_mmap" >&6
+-if test $ac_cv_func_mmap = yes; then
++
++if eval "test \"`echo '$ac_cv_func_'mmap`\" = yes"; then
++  echo "$ac_t""yes" 1>&6
+   MMAPTYPE=posix
++else
++  echo "$ac_t""no" 1>&6
+ fi
+ 
+ 
+@@ -2956,1028 +1307,266 @@
+ 
+ 
+ AUDIODRIVER=none
+-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_compiler_gnu=$ac_cv_c_compiler_gnu
+-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
++echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
++echo "configure:1312: checking how to run the C preprocessor" >&5
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+   CPP=
+ fi
+ if test -z "$CPP"; then
+-  if test "${ac_cv_prog_CPP+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-      # Double quotes because CPP needs to be expanded
+-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+-    do
+-      ac_preproc_ok=false
+-for ac_c_preproc_warn_flag in '' yes
+-do
+-  # Use a header file that comes with gcc, so configuring glibc
+-  # with a fresh cross-compiler works.
+-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+-  # <limits.h> exists even on freestanding compilers.
++    # This must be in double quotes, not single quotes, because CPP may get
++  # substituted into the Makefile and "${CC-cc}" will confuse make.
++  CPP="${CC-cc} -E"
+   # On the NeXT, cc -E runs the code through the compiler's parser,
+-  # not just through cpp. "Syntax error" is here to catch this case.
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
+-                     Syntax error
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } >/dev/null; then
+-  if test -s conftest.err; then
+-    ac_cpp_err=$ac_c_preproc_warn_flag
+-  else
+-    ac_cpp_err=
+-  fi
+-else
+-  ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++  # not just through cpp.
++  cat > conftest.$ac_ext <<EOF
++#line 1327 "configure"
++#include "confdefs.h"
++#include <assert.h>
++Syntax Error
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1333: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
+   :
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-  # Broken: fails on valid input.
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-
+-  # OK, works on sane cases.  Now check whether non-existent headers
+-  # can be detected and how.
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <ac_nonexistent.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } >/dev/null; then
+-  if test -s conftest.err; then
+-    ac_cpp_err=$ac_c_preproc_warn_flag
+-  else
+-    ac_cpp_err=
+-  fi
+-else
+-  ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
+-  # Broken: success on invalid input.
+-continue
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-  # Passes both tests.
+-ac_preproc_ok=:
+-break
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-
+-done
+-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+-rm -f conftest.err conftest.$ac_ext
+-if $ac_preproc_ok; then
+-  break
+-fi
+-
+-    done
+-    ac_cv_prog_CPP=$CPP
+-
+-fi
+-  CPP=$ac_cv_prog_CPP
+-else
+-  ac_cv_prog_CPP=$CPP
+-fi
+-echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6
+-ac_preproc_ok=false
+-for ac_c_preproc_warn_flag in '' yes
+-do
+-  # Use a header file that comes with gcc, so configuring glibc
+-  # with a fresh cross-compiler works.
+-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+-  # <limits.h> exists even on freestanding compilers.
+-  # On the NeXT, cc -E runs the code through the compiler's parser,
+-  # not just through cpp. "Syntax error" is here to catch this case.
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
+-                     Syntax error
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } >/dev/null; then
+-  if test -s conftest.err; then
+-    ac_cpp_err=$ac_c_preproc_warn_flag
+-  else
+-    ac_cpp_err=
+-  fi
+-else
+-  ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++  echo "$ac_err" >&5
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  CPP="${CC-cc} -E -traditional-cpp"
++  cat > conftest.$ac_ext <<EOF
++#line 1344 "configure"
++#include "confdefs.h"
++#include <assert.h>
++Syntax Error
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1350: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
+   :
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-  # Broken: fails on valid input.
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-
+-  # OK, works on sane cases.  Now check whether non-existent headers
+-  # can be detected and how.
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <ac_nonexistent.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } >/dev/null; then
+-  if test -s conftest.err; then
+-    ac_cpp_err=$ac_c_preproc_warn_flag
+-  else
+-    ac_cpp_err=
+-  fi
+-else
+-  ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
+-  # Broken: success on invalid input.
+-continue
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-  # Passes both tests.
+-ac_preproc_ok=:
+-break
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-
+-done
+-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+-rm -f conftest.err conftest.$ac_ext
+-if $ac_preproc_ok; then
++  echo "$ac_err" >&5
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  CPP="${CC-cc} -nologo -E"
++  cat > conftest.$ac_ext <<EOF
++#line 1361 "configure"
++#include "confdefs.h"
++#include <assert.h>
++Syntax Error
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1367: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
+   :
+ else
+-  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+-See \`config.log' for more details." >&2;}
+-   { (exit 1); exit 1; }; }
++  echo "$ac_err" >&5
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  CPP=/lib/cpp
+ fi
+-
+-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_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-
+-echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+-if test "${ac_cv_prog_egrep+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+-    then ac_cv_prog_egrep='grep -E'
+-    else ac_cv_prog_egrep='egrep'
+-    fi
++rm -f conftest*
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+- EGREP=$ac_cv_prog_egrep
+-
+-
+-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+-if test "${ac_cv_header_stdc+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <stdlib.h>
+-#include <stdarg.h>
+-#include <string.h>
+-#include <float.h>
+-
+-int
+-main ()
+-{
+-
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  ac_cv_header_stdc=yes
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_cv_header_stdc=no
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-
+-if test $ac_cv_header_stdc = yes; then
+-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <string.h>
+-
+-_ACEOF
+-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+-  $EGREP "memchr" >/dev/null 2>&1; then
+-  :
+-else
+-  ac_cv_header_stdc=no
+-fi
+ rm -f conftest*
+-
+ fi
+-
+-if test $ac_cv_header_stdc = yes; then
+-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <stdlib.h>
+-
+-_ACEOF
+-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+-  $EGREP "free" >/dev/null 2>&1; then
+-  :
+-else
+-  ac_cv_header_stdc=no
+-fi
+ rm -f conftest*
+-
++  ac_cv_prog_CPP="$CPP"
+ fi
+-
+-if test $ac_cv_header_stdc = yes; then
+-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+-  if test "$cross_compiling" = yes; then
+-  :
++  CPP="$ac_cv_prog_CPP"
+ else
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <ctype.h>
+-#if ((' ' & 0x0FF) == 0x020)
+-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+-#else
+-# define ISLOWER(c) \
+-                   (('a' <= (c) && (c) <= 'i') \
+-                     || ('j' <= (c) && (c) <= 'r') \
+-                     || ('s' <= (c) && (c) <= 'z'))
+-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+-#endif
+-
+-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+-int
+-main ()
+-{
+-  int i;
+-  for (i = 0; i < 256; i++)
+-    if (XOR (islower (i), ISLOWER (i))
+-        || toupper (i) != TOUPPER (i))
+-      exit(2);
+-  exit (0);
+-}
+-_ACEOF
+-rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+-  (eval $ac_link) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  :
+-else
+-  echo "$as_me: program exited with status $ac_status" >&5
+-echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-( exit $ac_status )
+-ac_cv_header_stdc=no
++  ac_cv_prog_CPP="$CPP"
+ fi
+-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+-fi
+-fi
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+-echo "${ECHO_T}$ac_cv_header_stdc" >&6
+-if test $ac_cv_header_stdc = yes; then
++echo "$ac_t""$CPP" 1>&6
+ 
+-cat >>confdefs.h <<\_ACEOF
+-#define STDC_HEADERS 1
+-_ACEOF
+-
+-fi
+-
+-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+-                  inttypes.h stdint.h unistd.h
+-do
+-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++ac_safe=`echo "sys/soundcard.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for sys/soundcard.h""... $ac_c" 1>&6
++echo "configure:1393: checking for sys/soundcard.h" >&5
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-$ac_includes_default
+-
+-#include <$ac_header>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  eval "$as_ac_Header=yes"
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-eval "$as_ac_Header=no"
+-fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+-  cat >>confdefs.h <<_ACEOF
+-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+-_ACEOF
+-
+-fi
+-
+-done
+-
+-
+-if test "${ac_cv_header_sys_soundcard_h+set}" = set; then
+-  echo "$as_me:$LINENO: checking for sys/soundcard.h" >&5
+-echo $ECHO_N "checking for sys/soundcard.h... $ECHO_C" >&6
+-if test "${ac_cv_header_sys_soundcard_h+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_sys_soundcard_h" >&5
+-echo "${ECHO_T}$ac_cv_header_sys_soundcard_h" >&6
+-else
+-  # Is the header compilable?
+-echo "$as_me:$LINENO: checking sys/soundcard.h usability" >&5
+-echo $ECHO_N "checking sys/soundcard.h usability... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-$ac_includes_default
++  cat > conftest.$ac_ext <<EOF
++#line 1398 "configure"
++#include "confdefs.h"
+ #include <sys/soundcard.h>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  ac_header_compiler=yes
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
++  rm -rf conftest*
++  eval "ac_cv_header_$ac_safe=yes"
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_header_compiler=no
++  echo "$ac_err" >&5
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  eval "ac_cv_header_$ac_safe=no"
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
+-
+-# Is the header present?
+-echo "$as_me:$LINENO: checking sys/soundcard.h presence" >&5
+-echo $ECHO_N "checking sys/soundcard.h presence... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <sys/soundcard.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } >/dev/null; then
+-  if test -s conftest.err; then
+-    ac_cpp_err=$ac_c_preproc_warn_flag
+-  else
+-    ac_cpp_err=
+-  fi
+-else
+-  ac_cpp_err=yes
++rm -f conftest*
+ fi
+-if test -z "$ac_cpp_err"; then
+-  ac_header_preproc=yes
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-  ac_header_preproc=no
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
+-
+-# So?  What about this header?
+-case $ac_header_compiler:$ac_header_preproc in
+-  yes:no )
+-    { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&5
+-echo "$as_me: WARNING: sys/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&2;}
+-    (
+-      cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+-    ) |
+-      sed "s/^/$as_me: WARNING:     /" >&2
+-    ;;
+-  no:yes )
+-    { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: present but cannot be compiled" >&5
+-echo "$as_me: WARNING: sys/soundcard.h: present but cannot be compiled" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: check for missing prerequisite headers?" >&5
+-echo "$as_me: WARNING: sys/soundcard.h: check for missing prerequisite headers?" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&2;}
+-    (
+-      cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+-    ) |
+-      sed "s/^/$as_me: WARNING:     /" >&2
+-    ;;
+-esac
+-echo "$as_me:$LINENO: checking for sys/soundcard.h" >&5
+-echo $ECHO_N "checking for sys/soundcard.h... $ECHO_C" >&6
+-if test "${ac_cv_header_sys_soundcard_h+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  ac_cv_header_sys_soundcard_h=$ac_header_preproc
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_sys_soundcard_h" >&5
+-echo "${ECHO_T}$ac_cv_header_sys_soundcard_h" >&6
+-
+-fi
+-if test $ac_cv_header_sys_soundcard_h = yes; then
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++  echo "$ac_t""yes" 1>&6
+   AUDIODRIVER="oss"
+                AUDIODEFS=-DCST_AUDIO_LINUX
++else
++  echo "$ac_t""no" 1>&6
+ fi
+ 
+-
+-if test "${ac_cv_header_machine_soundcard_h+set}" = set; then
+-  echo "$as_me:$LINENO: checking for machine/soundcard.h" >&5
+-echo $ECHO_N "checking for machine/soundcard.h... $ECHO_C" >&6
+-if test "${ac_cv_header_machine_soundcard_h+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_machine_soundcard_h" >&5
+-echo "${ECHO_T}$ac_cv_header_machine_soundcard_h" >&6
++ac_safe=`echo "machine/soundcard.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for machine/soundcard.h""... $ac_c" 1>&6
++echo "configure:1427: checking for machine/soundcard.h" >&5
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  # Is the header compilable?
+-echo "$as_me:$LINENO: checking machine/soundcard.h usability" >&5
+-echo $ECHO_N "checking machine/soundcard.h usability... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-$ac_includes_default
++  cat > conftest.$ac_ext <<EOF
++#line 1432 "configure"
++#include "confdefs.h"
+ #include <machine/soundcard.h>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  ac_header_compiler=yes
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1437: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
++  rm -rf conftest*
++  eval "ac_cv_header_$ac_safe=yes"
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_header_compiler=no
++  echo "$ac_err" >&5
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  eval "ac_cv_header_$ac_safe=no"
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
+-
+-# Is the header present?
+-echo "$as_me:$LINENO: checking machine/soundcard.h presence" >&5
+-echo $ECHO_N "checking machine/soundcard.h presence... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <machine/soundcard.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } >/dev/null; then
+-  if test -s conftest.err; then
+-    ac_cpp_err=$ac_c_preproc_warn_flag
+-  else
+-    ac_cpp_err=
+-  fi
+-else
+-  ac_cpp_err=yes
++rm -f conftest*
+ fi
+-if test -z "$ac_cpp_err"; then
+-  ac_header_preproc=yes
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-  ac_header_preproc=no
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
+-
+-# So?  What about this header?
+-case $ac_header_compiler:$ac_header_preproc in
+-  yes:no )
+-    { echo "$as_me:$LINENO: WARNING: machine/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&5
+-echo "$as_me: WARNING: machine/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: machine/soundcard.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: machine/soundcard.h: proceeding with the preprocessor's result" >&2;}
+-    (
+-      cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+-    ) |
+-      sed "s/^/$as_me: WARNING:     /" >&2
+-    ;;
+-  no:yes )
+-    { echo "$as_me:$LINENO: WARNING: machine/soundcard.h: present but cannot be compiled" >&5
+-echo "$as_me: WARNING: machine/soundcard.h: present but cannot be compiled" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: machine/soundcard.h: check for missing prerequisite headers?" >&5
+-echo "$as_me: WARNING: machine/soundcard.h: check for missing prerequisite headers?" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: machine/soundcard.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: machine/soundcard.h: proceeding with the preprocessor's result" >&2;}
+-    (
+-      cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+-    ) |
+-      sed "s/^/$as_me: WARNING:     /" >&2
+-    ;;
+-esac
+-echo "$as_me:$LINENO: checking for machine/soundcard.h" >&5
+-echo $ECHO_N "checking for machine/soundcard.h... $ECHO_C" >&6
+-if test "${ac_cv_header_machine_soundcard_h+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  ac_cv_header_machine_soundcard_h=$ac_header_preproc
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_machine_soundcard_h" >&5
+-echo "${ECHO_T}$ac_cv_header_machine_soundcard_h" >&6
+-
+-fi
+-if test $ac_cv_header_machine_soundcard_h = yes; then
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++  echo "$ac_t""yes" 1>&6
+   AUDIODRIVER="oss"
+                AUDIODEFS=-DCST_AUDIO_FREEBSD
++else
++  echo "$ac_t""no" 1>&6
+ fi
+ 
+-
+-if test "${ac_cv_header_sys_audioio_h+set}" = set; then
+-  echo "$as_me:$LINENO: checking for sys/audioio.h" >&5
+-echo $ECHO_N "checking for sys/audioio.h... $ECHO_C" >&6
+-if test "${ac_cv_header_sys_audioio_h+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_sys_audioio_h" >&5
+-echo "${ECHO_T}$ac_cv_header_sys_audioio_h" >&6
++ac_safe=`echo "sys/audioio.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for sys/audioio.h""... $ac_c" 1>&6
++echo "configure:1461: checking for sys/audioio.h" >&5
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  # Is the header compilable?
+-echo "$as_me:$LINENO: checking sys/audioio.h usability" >&5
+-echo $ECHO_N "checking sys/audioio.h usability... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-$ac_includes_default
++  cat > conftest.$ac_ext <<EOF
++#line 1466 "configure"
++#include "confdefs.h"
+ #include <sys/audioio.h>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  ac_header_compiler=yes
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1471: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
++  rm -rf conftest*
++  eval "ac_cv_header_$ac_safe=yes"
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_header_compiler=no
++  echo "$ac_err" >&5
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  eval "ac_cv_header_$ac_safe=no"
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
+-
+-# Is the header present?
+-echo "$as_me:$LINENO: checking sys/audioio.h presence" >&5
+-echo $ECHO_N "checking sys/audioio.h presence... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <sys/audioio.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } >/dev/null; then
+-  if test -s conftest.err; then
+-    ac_cpp_err=$ac_c_preproc_warn_flag
+-  else
+-    ac_cpp_err=
+-  fi
+-else
+-  ac_cpp_err=yes
++rm -f conftest*
+ fi
+-if test -z "$ac_cpp_err"; then
+-  ac_header_preproc=yes
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-  ac_header_preproc=no
+-fi
+-rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
+-
+-# So?  What about this header?
+-case $ac_header_compiler:$ac_header_preproc in
+-  yes:no )
+-    { echo "$as_me:$LINENO: WARNING: sys/audioio.h: accepted by the compiler, rejected by the preprocessor!" >&5
+-echo "$as_me: WARNING: sys/audioio.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: sys/audioio.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: sys/audioio.h: proceeding with the preprocessor's result" >&2;}
+-    (
+-      cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+-    ) |
+-      sed "s/^/$as_me: WARNING:     /" >&2
+-    ;;
+-  no:yes )
+-    { echo "$as_me:$LINENO: WARNING: sys/audioio.h: present but cannot be compiled" >&5
+-echo "$as_me: WARNING: sys/audioio.h: present but cannot be compiled" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: sys/audioio.h: check for missing prerequisite headers?" >&5
+-echo "$as_me: WARNING: sys/audioio.h: check for missing prerequisite headers?" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: sys/audioio.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: sys/audioio.h: proceeding with the preprocessor's result" >&2;}
+-    (
+-      cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+-    ) |
+-      sed "s/^/$as_me: WARNING:     /" >&2
+-    ;;
+-esac
+-echo "$as_me:$LINENO: checking for sys/audioio.h" >&5
+-echo $ECHO_N "checking for sys/audioio.h... $ECHO_C" >&6
+-if test "${ac_cv_header_sys_audioio_h+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  ac_cv_header_sys_audioio_h=$ac_header_preproc
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_sys_audioio_h" >&5
+-echo "${ECHO_T}$ac_cv_header_sys_audioio_h" >&6
+-
+-fi
+-if test $ac_cv_header_sys_audioio_h = yes; then
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++  echo "$ac_t""yes" 1>&6
+   AUDIODRIVER="sun"
+                AUDIODEFS=-DCST_AUDIO_SUNOS
++else
++  echo "$ac_t""no" 1>&6
+ fi
+ 
+-
+-if test "${ac_cv_header_mmsystem_h+set}" = set; then
+-  echo "$as_me:$LINENO: checking for mmsystem.h" >&5
+-echo $ECHO_N "checking for mmsystem.h... $ECHO_C" >&6
+-if test "${ac_cv_header_mmsystem_h+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_mmsystem_h" >&5
+-echo "${ECHO_T}$ac_cv_header_mmsystem_h" >&6
++ ac_safe=`echo "alsa/asoundlib.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for alsa/asoundlib.h""... $ac_c" 1>&6
++echo "configure:1495: checking for alsa/asoundlib.h" >&5
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  # Is the header compilable?
+-echo "$as_me:$LINENO: checking mmsystem.h usability" >&5
+-echo $ECHO_N "checking mmsystem.h usability... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-$ac_includes_default
+-#include <mmsystem.h>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+-  (eval $ac_compile) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } &&
+-         { ac_try='test -s conftest.$ac_objext'
+-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+-  (eval $ac_try) 2>&5
+-  ac_status=$?
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); }; }; then
+-  ac_header_compiler=yes
++  cat > conftest.$ac_ext <<EOF
++#line 1500 "configure"
++#include "confdefs.h"
++#include <alsa/asoundlib.h>
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1505: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
++  rm -rf conftest*
++  eval "ac_cv_header_$ac_safe=yes"
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_header_compiler=no
++  echo "$ac_err" >&5
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  eval "ac_cv_header_$ac_safe=no"
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
+-
+-# Is the header present?
+-echo "$as_me:$LINENO: checking mmsystem.h presence" >&5
+-echo $ECHO_N "checking mmsystem.h presence... $ECHO_C" >&6
+-cat >conftest.$ac_ext <<_ACEOF
+-#line $LINENO "configure"
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-#include <mmsystem.h>
+-_ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } >/dev/null; then
+-  if test -s conftest.err; then
+-    ac_cpp_err=$ac_c_preproc_warn_flag
+-  else
+-    ac_cpp_err=
+-  fi
+-else
+-  ac_cpp_err=yes
++rm -f conftest*
+ fi
+-if test -z "$ac_cpp_err"; then
+-  ac_header_preproc=yes
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++  echo "$ac_t""yes" 1>&6
++  AUDIODRIVER="alsa"
++	       AUDIODEFS=-DCST_AUDIO_ALSA
++               AUDIOLIBS=-lasound
+ else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-  ac_header_preproc=no
++  echo "$ac_t""no" 1>&6
+ fi
+-rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
+ 
+-# So?  What about this header?
+-case $ac_header_compiler:$ac_header_preproc in
+-  yes:no )
+-    { echo "$as_me:$LINENO: WARNING: mmsystem.h: accepted by the compiler, rejected by the preprocessor!" >&5
+-echo "$as_me: WARNING: mmsystem.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: mmsystem.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: mmsystem.h: proceeding with the preprocessor's result" >&2;}
+-    (
+-      cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+-    ) |
+-      sed "s/^/$as_me: WARNING:     /" >&2
+-    ;;
+-  no:yes )
+-    { echo "$as_me:$LINENO: WARNING: mmsystem.h: present but cannot be compiled" >&5
+-echo "$as_me: WARNING: mmsystem.h: present but cannot be compiled" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: mmsystem.h: check for missing prerequisite headers?" >&5
+-echo "$as_me: WARNING: mmsystem.h: check for missing prerequisite headers?" >&2;}
+-    { echo "$as_me:$LINENO: WARNING: mmsystem.h: proceeding with the preprocessor's result" >&5
+-echo "$as_me: WARNING: mmsystem.h: proceeding with the preprocessor's result" >&2;}
+-    (
+-      cat <<\_ASBOX
+-## ------------------------------------ ##
+-## Report this to bug-autoconf@gnu.org. ##
+-## ------------------------------------ ##
+-_ASBOX
+-    ) |
+-      sed "s/^/$as_me: WARNING:     /" >&2
+-    ;;
+-esac
+-echo "$as_me:$LINENO: checking for mmsystem.h" >&5
+-echo $ECHO_N "checking for mmsystem.h... $ECHO_C" >&6
+-if test "${ac_cv_header_mmsystem_h+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
++ac_safe=`echo "mmsystem.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for mmsystem.h""... $ac_c" 1>&6
++echo "configure:1530: checking for mmsystem.h" >&5
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++  echo $ac_n "(cached) $ac_c" 1>&6
+ else
+-  ac_cv_header_mmsystem_h=$ac_header_preproc
++  cat > conftest.$ac_ext <<EOF
++#line 1535 "configure"
++#include "confdefs.h"
++#include <mmsystem.h>
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1540: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
++if test -z "$ac_err"; then
++  rm -rf conftest*
++  eval "ac_cv_header_$ac_safe=yes"
++else
++  echo "$ac_err" >&5
++  echo "configure: failed program was:" >&5
++  cat conftest.$ac_ext >&5
++  rm -rf conftest*
++  eval "ac_cv_header_$ac_safe=no"
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_mmsystem_h" >&5
+-echo "${ECHO_T}$ac_cv_header_mmsystem_h" >&6
+-
++rm -f conftest*
+ fi
+-if test $ac_cv_header_mmsystem_h = yes; then
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++  echo "$ac_t""yes" 1>&6
+   AUDIODRIVER="wince"
+ 	       AUDIODEFS=-DCST_AUDIO_WINCE
+ 	       AUDIOLIBS=-lwinmm
++else
++  echo "$ac_t""no" 1>&6
+ fi
+ 
+ 
+-
+-
+ # Check whether --with-audio or --without-audio was given.
+ if test "${with_audio+set}" = set; then
+   withval="$with_audio"
+-  AUDIODRIVER=$with_audio
+-fi;
++  AUDIODRIVER=$with_audio 
++fi
+ 
++
+ if test "x$AUDIODEFS" = x; then
+     case "$AUDIODRIVER" in
+ 	linux|oss)
+@@ -4006,34 +1595,34 @@
+ 
+ 
+ 
+-
+ # Check whether --with-lang or --without-lang was given.
+ if test "${with_lang+set}" = set; then
+   withval="$with_lang"
+-  FL_LANG=$with_lang
+-fi;
++  FL_LANG=$with_lang 
++fi
++
+ if test "x$with_lang" = "x"; then
+         FL_LANG="usenglish"
+ fi
+ 
+ 
+-
+ # Check whether --with-vox or --without-vox was given.
+ if test "${with_vox+set}" = set; then
+   withval="$with_vox"
+-  FL_VOX=$with_vox
+-fi;
++  FL_VOX=$with_vox 
++fi
++
+ if test "x$with_vox" = "x"; then
+         FL_VOX="cmu_us_kal"
+ fi
+ 
+ 
+-
+ # Check whether --with-lex or --without-lex was given.
+ if test "${with_lex+set}" = set; then
+   withval="$with_lex"
+-  FL_LEX=$with_lex
+-fi;
++  FL_LEX=$with_lex 
++fi
++
+ if test "x$with_lex" = "x"; then
+         FL_LEX="cmulex"
+ fi
+@@ -4041,921 +1630,300 @@
+ 
+ 
+ 
+-                    ac_config_files="$ac_config_files config/config config/system.mak"
+-cat >confcache <<\_ACEOF
++trap '' 1 2 15
++cat > confcache <<\EOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+-# scripts and configure runs, see configure's option --config-cache.
+-# It is not useful on other systems.  If it contains results you don't
+-# want to keep, you may remove or edit it.
++# scripts and configure runs.  It is not useful on other systems.
++# If it contains results you don't want to keep, you may remove or edit it.
+ #
+-# config.status only pays attention to the cache file if you give it
+-# the --recheck option to rerun configure.
++# By default, configure uses ./config.cache as the cache file,
++# creating it if it does not exist already.  You can give configure
++# the --cache-file=FILE option to use a different cache file; that is
++# what configure does when it calls configure scripts in
++# subdirectories, so they share the cache.
++# Giving --cache-file=/dev/null disables caching, for debugging configure.
++# config.status only pays attention to the cache file if you give it the
++# --recheck option to rerun configure.
+ #
+-# `ac_cv_env_foo' variables (set or unset) will be overridden when
+-# loading this file, other *unset* `ac_cv_foo' will be assigned the
+-# following values.
+-
+-_ACEOF
+-
++EOF
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+ # So, don't put newlines in cache variables' values.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
+-  (set) 2>&1 |
+-    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+-    *ac_space=\ *)
+-      # `set' does not quote correctly, so add quotes (double-quote
+-      # substitution turns \\\\ into \\, and sed turns \\ into \).
+-      sed -n \
+-        "s/'/'\\\\''/g;
+-    	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+-      ;;
+-    *)
+-      # `set' quotes correctly as required by POSIX, so do not add quotes.
+-      sed -n \
+-        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+-      ;;
+-    esac;
+-} |
+-  sed '
+-     t clear
+-     : clear
+-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+-     t end
+-     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+-     : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
++(set) 2>&1 |
++  case `(ac_space=' '; set | grep ac_space) 2>&1` in
++  *ac_space=\ *)
++    # `set' does not quote correctly, so add quotes (double-quote substitution
++    # turns \\\\ into \\, and sed turns \\ into \).
++    sed -n \
++      -e "s/'/'\\\\''/g" \
++      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
++    ;;
++  *)
++    # `set' quotes correctly as required by POSIX, so do not add quotes.
++    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
++    ;;
++  esac >> confcache
++if cmp -s $cache_file confcache; then
++  :
++else
+   if test -w $cache_file; then
+-    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+-    cat confcache >$cache_file
++    echo "updating cache $cache_file"
++    cat confcache > $cache_file
+   else
+     echo "not updating unwritable cache $cache_file"
+   fi
+ fi
+ rm -f confcache
+ 
++trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
++
+ test "x$prefix" = xNONE && prefix=$ac_default_prefix
+ # Let make expand exec_prefix.
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+ 
+-# VPATH may cause trouble with some makes, so we remove $(srcdir),
+-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+-# trailing colons and then remove the whole line if VPATH becomes empty
+-# (actually we leave an empty line to preserve line numbers).
++# Any assignment to VPATH causes Sun make to only execute
++# the first set of double-colon rules, so remove it if not needed.
++# If there is a colon in the path, we need to keep it.
+ if test "x$srcdir" = x.; then
+-  ac_vpsub='/^[ 	]*VPATH[ 	]*=/{
+-s/:*\$(srcdir):*/:/;
+-s/:*\${srcdir}:*/:/;
+-s/:*@srcdir@:*/:/;
+-s/^\([^=]*=[ 	]*\):*/\1/;
+-s/:*$//;
+-s/^[^=]*=[ 	]*$//;
+-}'
++  ac_vpsub='/^[ 	]*VPATH[ 	]*=[^:]*$/d'
+ fi
+ 
++trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
++
+ # Transform confdefs.h into DEFS.
+ # Protect against shell expansion while executing Makefile rules.
+ # Protect against Makefile macro expansion.
+-#
+-# If the first sed substitution is executed (which looks for macros that
+-# take arguments), then we branch to the quote section.  Otherwise,
+-# look for a macro that doesn't take arguments.
+-cat >confdef2opt.sed <<\_ACEOF
+-t clear
+-: clear
+-s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	(][^ 	(]*([^)]*)\)[ 	]*\(.*\),-D\1=\2,g
+-t quote
+-s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	][^ 	]*\)[ 	]*\(.*\),-D\1=\2,g
+-t quote
+-d
+-: quote
+-s,[ 	`~#$^&*(){}\\|;'"<>?],\\&,g
+-s,\[,\\&,g
+-s,\],\\&,g
+-s,\$,$$,g
+-p
+-_ACEOF
+-# We use echo to avoid assuming a particular line-breaking character.
+-# The extra dot is to prevent the shell from consuming trailing
+-# line-breaks from the sub-command output.  A line-break within
+-# single-quotes doesn't work because, if this script is created in a
+-# platform that uses two characters for line-breaks (e.g., DOS), tr
+-# would break.
+-ac_LF_and_DOT=`echo; echo .`
+-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
+-rm -f confdef2opt.sed
++cat > conftest.defs <<\EOF
++s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
++s%[ 	`~#$^&*(){}\\|;'"<>?]%\\&%g
++s%\[%\\&%g
++s%\]%\\&%g
++s%\$%$$%g
++EOF
++DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
++rm -f conftest.defs
+ 
+ 
+-ac_libobjs=
+-ac_ltlibobjs=
+-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+-  # 1. Remove the extension, and $U if already installed.
+-  ac_i=`echo "$ac_i" |
+-         sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+-  # 2. Add them.
+-  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+-  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+-done
+-LIBOBJS=$ac_libobjs
+-
+-LTLIBOBJS=$ac_ltlibobjs
+-
+-
+-
++# Without the "./", some shells look in PATH for config.status.
+ : ${CONFIG_STATUS=./config.status}
+-ac_clean_files_save=$ac_clean_files
+-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+-echo "$as_me: creating $CONFIG_STATUS" >&6;}
+-cat >$CONFIG_STATUS <<_ACEOF
+-#! $SHELL
+-# Generated by $as_me.
++
++echo creating $CONFIG_STATUS
++rm -f $CONFIG_STATUS
++cat > $CONFIG_STATUS <<EOF
++#! /bin/sh
++# Generated automatically by configure.
+ # Run this file to recreate the current configuration.
++# This directory was configured as follows,
++# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++#
++# $0 $ac_configure_args
++#
+ # Compiler output produced by configure, useful for debugging
+-# configure, is in config.log if it exists.
++# configure, is in ./config.log if it exists.
+ 
+-debug=false
+-ac_cs_recheck=false
+-ac_cs_silent=false
+-SHELL=\${CONFIG_SHELL-$SHELL}
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-## --------------------- ##
+-## M4sh Initialization.  ##
+-## --------------------- ##
+-
+-# Be Bourne compatible
+-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+-  emulate sh
+-  NULLCMD=:
+-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+-  # is contrary to our usage.  Disable this feature.
+-  alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+-  set -o posix
+-fi
+-
+-# Support unset when possible.
+-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+-  as_unset=unset
+-else
+-  as_unset=false
+-fi
+-
+-
+-# Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
+-PS1='$ '
+-PS2='> '
+-PS4='+ '
+-
+-# NLS nuisances.
+-for as_var in \
+-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+-  LC_TELEPHONE LC_TIME
++ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
++for ac_option
+ do
+-  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+-    eval $as_var=C; export $as_var
+-  else
+-    $as_unset $as_var
+-  fi
++  case "\$ac_option" in
++  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
++    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
++    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
++  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
++    echo "$CONFIG_STATUS generated by autoconf version 2.13"
++    exit 0 ;;
++  -help | --help | --hel | --he | --h)
++    echo "\$ac_cs_usage"; exit 0 ;;
++  *) echo "\$ac_cs_usage"; exit 1 ;;
++  esac
+ done
+ 
+-# Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
+-  as_expr=expr
+-else
+-  as_expr=false
+-fi
++ac_given_srcdir=$srcdir
++ac_given_INSTALL="$INSTALL"
+ 
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+-  as_basename=basename
+-else
+-  as_basename=false
+-fi
++trap 'rm -fr `echo "config/config config/system.mak" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
++EOF
++cat >> $CONFIG_STATUS <<EOF
+ 
++# Protect against being on the right side of a sed subst in config.status.
++sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
++ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
++$ac_vpsub
++$extrasub
++s%@SHELL@%$SHELL%g
++s%@CFLAGS@%$CFLAGS%g
++s%@CPPFLAGS@%$CPPFLAGS%g
++s%@CXXFLAGS@%$CXXFLAGS%g
++s%@FFLAGS@%$FFLAGS%g
++s%@DEFS@%$DEFS%g
++s%@LDFLAGS@%$LDFLAGS%g
++s%@LIBS@%$LIBS%g
++s%@exec_prefix@%$exec_prefix%g
++s%@prefix@%$prefix%g
++s%@program_transform_name@%$program_transform_name%g
++s%@bindir@%$bindir%g
++s%@sbindir@%$sbindir%g
++s%@libexecdir@%$libexecdir%g
++s%@datadir@%$datadir%g
++s%@sysconfdir@%$sysconfdir%g
++s%@sharedstatedir@%$sharedstatedir%g
++s%@localstatedir@%$localstatedir%g
++s%@libdir@%$libdir%g
++s%@includedir@%$includedir%g
++s%@oldincludedir@%$oldincludedir%g
++s%@infodir@%$infodir%g
++s%@mandir@%$mandir%g
++s%@host@%$host%g
++s%@host_alias@%$host_alias%g
++s%@host_cpu@%$host_cpu%g
++s%@host_vendor@%$host_vendor%g
++s%@host_os@%$host_os%g
++s%@target@%$target%g
++s%@target_alias@%$target_alias%g
++s%@target_cpu@%$target_cpu%g
++s%@target_vendor@%$target_vendor%g
++s%@target_os@%$target_os%g
++s%@build@%$build%g
++s%@build_alias@%$build_alias%g
++s%@build_cpu@%$build_cpu%g
++s%@build_vendor@%$build_vendor%g
++s%@build_os@%$build_os%g
++s%@CC@%$CC%g
++s%@RANLIB@%$RANLIB%g
++s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
++s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
++s%@INSTALL_DATA@%$INSTALL_DATA%g
++s%@AR@%$AR%g
++s%@TARGET_OS@%$TARGET_OS%g
++s%@TARGET_CPU@%$TARGET_CPU%g
++s%@M68KCC@%$M68KCC%g
++s%@LEXDEFS@%$LEXDEFS%g
++s%@VOXDEFS@%$VOXDEFS%g
++s%@HOST_OS@%$HOST_OS%g
++s%@HOST_CPU@%$HOST_CPU%g
++s%@OTHERLIBS@%$OTHERLIBS%g
++s%@SHFLAGS@%$SHFLAGS%g
++s%@MMAPTYPE@%$MMAPTYPE%g
++s%@STDIOTYPE@%$STDIOTYPE%g
++s%@CPP@%$CPP%g
++s%@AUDIODRIVER@%$AUDIODRIVER%g
++s%@AUDIODEFS@%$AUDIODEFS%g
++s%@AUDIOLIBS@%$AUDIOLIBS%g
++s%@FL_LANG@%$FL_LANG%g
++s%@FL_VOX@%$FL_VOX%g
++s%@FL_LEX@%$FL_LEX%g
++s%@EXEEXT@%$EXEEXT%g
+ 
+-# Name of the executable.
+-as_me=`$as_basename "$0" ||
+-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+-	 X"$0" : 'X\(//\)$' \| \
+-	 X"$0" : 'X\(/\)$' \| \
+-	 .     : '\(.\)' 2>/dev/null ||
+-echo X/"$0" |
+-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+-  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+-  	  /^X\/\(\/\).*/{ s//\1/; q; }
+-  	  s/.*/./; q'`
++CEOF
++EOF
+ 
++cat >> $CONFIG_STATUS <<\EOF
+ 
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+-
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+-  echo "#! /bin/sh" >conf$$.sh
+-  echo  "exit 0"   >>conf$$.sh
+-  chmod +x conf$$.sh
+-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+-    PATH_SEPARATOR=';'
++# Split the substitutions into bite-sized pieces for seds with
++# small command number limits, like on Digital OSF/1 and HP-UX.
++ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
++ac_file=1 # Number of current file.
++ac_beg=1 # First line for current file.
++ac_end=$ac_max_sed_cmds # Line after last line for current file.
++ac_more_lines=:
++ac_sed_cmds=""
++while $ac_more_lines; do
++  if test $ac_beg -gt 1; then
++    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+   else
+-    PATH_SEPARATOR=:
++    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+   fi
+-  rm -f conf$$.sh
+-fi
+-
+-
+-  as_lineno_1=$LINENO
+-  as_lineno_2=$LINENO
+-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+-  test "x$as_lineno_1" != "x$as_lineno_2" &&
+-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+-  # Find who we are.  Look in the path if we contain no path at all
+-  # relative or not.
+-  case $0 in
+-    *[\\/]* ) as_myself=$0 ;;
+-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
+-
+-       ;;
+-  esac
+-  # We did not find ourselves, most probably we were run as `sh COMMAND'
+-  # in which case we are not to be found in the path.
+-  if test "x$as_myself" = x; then
+-    as_myself=$0
+-  fi
+-  if test ! -f "$as_myself"; then
+-    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+-   { (exit 1); exit 1; }; }
+-  fi
+-  case $CONFIG_SHELL in
+-  '')
+-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for as_base in sh bash ksh sh5; do
+-	 case $as_dir in
+-	 /*)
+-	   if ("$as_dir/$as_base" -c '
+-  as_lineno_1=$LINENO
+-  as_lineno_2=$LINENO
+-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+-  test "x$as_lineno_1" != "x$as_lineno_2" &&
+-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+-	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+-	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+-	     CONFIG_SHELL=$as_dir/$as_base
+-	     export CONFIG_SHELL
+-	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+-	   fi;;
+-	 esac
+-       done
+-done
+-;;
+-  esac
+-
+-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+-  # uniformly replaced by the line number.  The first 'sed' inserts a
+-  # line-number line before each line; the second 'sed' does the real
+-  # work.  The second script uses 'N' to pair each line-number line
+-  # with the numbered line, and appends trailing '-' during
+-  # substitution so that $LINENO is not a special case at line end.
+-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+-  sed '=' <$as_myself |
+-    sed '
+-      N
+-      s,$,-,
+-      : loop
+-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+-      t loop
+-      s,-$,,
+-      s,^['$as_cr_digits']*\n,,
+-    ' >$as_me.lineno &&
+-  chmod +x $as_me.lineno ||
+-    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+-   { (exit 1); exit 1; }; }
+-
+-  # Don't try to exec as it changes $[0], causing all sort of problems
+-  # (the dirname of $[0] is not the place where we might find the
+-  # original and so on.  Autoconf is especially sensible to this).
+-  . ./$as_me.lineno
+-  # Exit status is that of the last command.
+-  exit
+-}
+-
+-
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+-  *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T='	' ;;
+-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+-esac
+-
+-if expr a : '\(a\)' >/dev/null 2>&1; then
+-  as_expr=expr
+-else
+-  as_expr=false
+-fi
+-
+-rm -f conf$$ conf$$.exe conf$$.file
+-echo >conf$$.file
+-if ln -s conf$$.file conf$$ 2>/dev/null; then
+-  # We could just check for DJGPP; but this test a) works b) is more generic
+-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+-  if test -f conf$$.exe; then
+-    # Don't use ln at all; we don't have any links
+-    as_ln_s='cp -p'
++  if test ! -s conftest.s$ac_file; then
++    ac_more_lines=false
++    rm -f conftest.s$ac_file
+   else
+-    as_ln_s='ln -s'
++    if test -z "$ac_sed_cmds"; then
++      ac_sed_cmds="sed -f conftest.s$ac_file"
++    else
++      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
++    fi
++    ac_file=`expr $ac_file + 1`
++    ac_beg=$ac_end
++    ac_end=`expr $ac_end + $ac_max_sed_cmds`
+   fi
+-elif ln conf$$.file conf$$ 2>/dev/null; then
+-  as_ln_s=ln
+-else
+-  as_ln_s='cp -p'
+-fi
+-rm -f conf$$ conf$$.exe conf$$.file
+-
+-if mkdir -p . 2>/dev/null; then
+-  as_mkdir_p=:
+-else
+-  as_mkdir_p=false
+-fi
+-
+-as_executable_p="test -f"
+-
+-# Sed expression to map a string onto a valid CPP name.
+-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+-
+-# Sed expression to map a string onto a valid variable name.
+-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+-
+-
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" 	$as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+-exec 6>&1
+-
+-# Open the log real soon, to keep \$[0] and so on meaningful, and to
+-# report actual input values of CONFIG_FILES etc. instead of their
+-# values after options handling.  Logging --version etc. is OK.
+-exec 5>>config.log
+-{
+-  echo
+-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+-} >&5
+-cat >&5 <<_CSEOF
+-
+-This file was extended by $as_me, which was
+-generated by GNU Autoconf 2.57.  Invocation command line was
+-
+-  CONFIG_FILES    = $CONFIG_FILES
+-  CONFIG_HEADERS  = $CONFIG_HEADERS
+-  CONFIG_LINKS    = $CONFIG_LINKS
+-  CONFIG_COMMANDS = $CONFIG_COMMANDS
+-  $ $0 $@
+-
+-_CSEOF
+-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+-echo >&5
+-_ACEOF
+-
+-# Files that config.status was made for.
+-if test -n "$ac_config_files"; then
+-  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_headers"; then
+-  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_links"; then
+-  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_commands"; then
+-  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+-fi
+-
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-ac_cs_usage="\
+-\`$as_me' instantiates files from templates according to the
+-current configuration.
+-
+-Usage: $0 [OPTIONS] [FILE]...
+-
+-  -h, --help       print this help, then exit
+-  -V, --version    print version number, then exit
+-  -q, --quiet      do not print progress messages
+-  -d, --debug      don't remove temporary files
+-      --recheck    update $as_me by reconfiguring in the same conditions
+-  --file=FILE[:TEMPLATE]
+-                   instantiate the configuration file FILE
+-
+-Configuration files:
+-$config_files
+-
+-Report bugs to <bug-autoconf@gnu.org>."
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-ac_cs_version="\\
+-config.status
+-configured by $0, generated by GNU Autoconf 2.57,
+-  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+-
+-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+-Free Software Foundation, Inc.
+-This config.status script is free software; the Free Software Foundation
+-gives unlimited permission to copy, distribute and modify it."
+-srcdir=$srcdir
+-INSTALL="$INSTALL"
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-# If no file are specified by the user, then we need to provide default
+-# value.  By we need to know if files were specified by the user.
+-ac_need_defaults=:
+-while test $# != 0
+-do
+-  case $1 in
+-  --*=*)
+-    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+-    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+-    ac_shift=:
+-    ;;
+-  -*)
+-    ac_option=$1
+-    ac_optarg=$2
+-    ac_shift=shift
+-    ;;
+-  *) # This is not an option, so the user has probably given explicit
+-     # arguments.
+-     ac_option=$1
+-     ac_need_defaults=false;;
+-  esac
+-
+-  case $ac_option in
+-  # Handling of the options.
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+-    ac_cs_recheck=: ;;
+-  --version | --vers* | -V )
+-    echo "$ac_cs_version"; exit 0 ;;
+-  --he | --h)
+-    # Conflict between --help and --header
+-    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&2;}
+-   { (exit 1); exit 1; }; };;
+-  --help | --hel | -h )
+-    echo "$ac_cs_usage"; exit 0 ;;
+-  --debug | --d* | -d )
+-    debug=: ;;
+-  --file | --fil | --fi | --f )
+-    $ac_shift
+-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+-    ac_need_defaults=false;;
+-  --header | --heade | --head | --hea )
+-    $ac_shift
+-    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+-    ac_need_defaults=false;;
+-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+-    ac_cs_silent=: ;;
+-
+-  # This is an error.
+-  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2;}
+-   { (exit 1); exit 1; }; } ;;
+-
+-  *) ac_config_targets="$ac_config_targets $1" ;;
+-
+-  esac
+-  shift
+ done
+-
+-ac_configure_extra_args=
+-
+-if $ac_cs_silent; then
+-  exec 6>/dev/null
+-  ac_configure_extra_args="$ac_configure_extra_args --silent"
++if test -z "$ac_sed_cmds"; then
++  ac_sed_cmds=cat
+ fi
++EOF
+ 
+-_ACEOF
+-cat >>$CONFIG_STATUS <<_ACEOF
+-if \$ac_cs_recheck; then
+-  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+-  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+-fi
++cat >> $CONFIG_STATUS <<EOF
+ 
+-_ACEOF
+-
+-
+-
+-
+-
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-for ac_config_target in $ac_config_targets
+-do
+-  case "$ac_config_target" in
+-  # Handling of arguments.
+-  "config/config" ) CONFIG_FILES="$CONFIG_FILES config/config" ;;
+-  "config/system.mak" ) CONFIG_FILES="$CONFIG_FILES config/system.mak" ;;
+-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+-   { (exit 1); exit 1; }; };;
++CONFIG_FILES=\${CONFIG_FILES-"config/config config/system.mak"}
++EOF
++cat >> $CONFIG_STATUS <<\EOF
++for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
++  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
++  case "$ac_file" in
++  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
++       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
++  *) ac_file_in="${ac_file}.in" ;;
+   esac
+-done
+ 
+-# If the user did not use the arguments to specify the items to instantiate,
+-# then the envvar interface is used.  Set only those that are not.
+-# We use the long form for the default assignment because of an extremely
+-# bizarre bug on SunOS 4.1.3.
+-if $ac_need_defaults; then
+-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+-fi
++  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+ 
+-# Have a temporary directory for convenience.  Make it in the build tree
+-# simply because there is no reason to put it here, and in addition,
+-# creating and moving files from /tmp can sometimes cause problems.
+-# Create a temporary directory, and hook for its removal unless debugging.
+-$debug ||
+-{
+-  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+-  trap '{ (exit 1); exit 1; }' 1 2 13 15
+-}
+-
+-# Create a (secure) tmp directory for tmp files.
+-
+-{
+-  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+-  test -n "$tmp" && test -d "$tmp"
+-}  ||
+-{
+-  tmp=./confstat$$-$RANDOM
+-  (umask 077 && mkdir $tmp)
+-} ||
+-{
+-   echo "$me: cannot create a temporary directory in ." >&2
+-   { (exit 1); exit 1; }
+-}
+-
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-
+-#
+-# CONFIG_FILES section.
+-#
+-
+-# No need to generate the scripts if there are no CONFIG_FILES.
+-# This happens for instance when ./config.status config.h
+-if test -n "\$CONFIG_FILES"; then
+-  # Protect against being on the right side of a sed subst in config.status.
+-  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+-   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+-s,@SHELL@,$SHELL,;t t
+-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+-s,@exec_prefix@,$exec_prefix,;t t
+-s,@prefix@,$prefix,;t t
+-s,@program_transform_name@,$program_transform_name,;t t
+-s,@bindir@,$bindir,;t t
+-s,@sbindir@,$sbindir,;t t
+-s,@libexecdir@,$libexecdir,;t t
+-s,@datadir@,$datadir,;t t
+-s,@sysconfdir@,$sysconfdir,;t t
+-s,@sharedstatedir@,$sharedstatedir,;t t
+-s,@localstatedir@,$localstatedir,;t t
+-s,@libdir@,$libdir,;t t
+-s,@includedir@,$includedir,;t t
+-s,@oldincludedir@,$oldincludedir,;t t
+-s,@infodir@,$infodir,;t t
+-s,@mandir@,$mandir,;t t
+-s,@build_alias@,$build_alias,;t t
+-s,@host_alias@,$host_alias,;t t
+-s,@target_alias@,$target_alias,;t t
+-s,@DEFS@,$DEFS,;t t
+-s,@ECHO_C@,$ECHO_C,;t t
+-s,@ECHO_N@,$ECHO_N,;t t
+-s,@ECHO_T@,$ECHO_T,;t t
+-s,@LIBS@,$LIBS,;t t
+-s,@build@,$build,;t t
+-s,@build_cpu@,$build_cpu,;t t
+-s,@build_vendor@,$build_vendor,;t t
+-s,@build_os@,$build_os,;t t
+-s,@host@,$host,;t t
+-s,@host_cpu@,$host_cpu,;t t
+-s,@host_vendor@,$host_vendor,;t t
+-s,@host_os@,$host_os,;t t
+-s,@target@,$target,;t t
+-s,@target_cpu@,$target_cpu,;t t
+-s,@target_vendor@,$target_vendor,;t t
+-s,@target_os@,$target_os,;t t
+-s,@CC@,$CC,;t t
+-s,@CFLAGS@,$CFLAGS,;t t
+-s,@LDFLAGS@,$LDFLAGS,;t t
+-s,@CPPFLAGS@,$CPPFLAGS,;t t
+-s,@ac_ct_CC@,$ac_ct_CC,;t t
+-s,@EXEEXT@,$EXEEXT,;t t
+-s,@OBJEXT@,$OBJEXT,;t t
+-s,@RANLIB@,$RANLIB,;t t
+-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+-s,@AR@,$AR,;t t
+-s,@ac_ct_AR@,$ac_ct_AR,;t t
+-s,@TARGET_OS@,$TARGET_OS,;t t
+-s,@TARGET_CPU@,$TARGET_CPU,;t t
+-s,@M68KCC@,$M68KCC,;t t
+-s,@LEXDEFS@,$LEXDEFS,;t t
+-s,@VOXDEFS@,$VOXDEFS,;t t
+-s,@HOST_OS@,$HOST_OS,;t t
+-s,@HOST_CPU@,$HOST_CPU,;t t
+-s,@OTHERLIBS@,$OTHERLIBS,;t t
+-s,@SHFLAGS@,$SHFLAGS,;t t
+-s,@MMAPTYPE@,$MMAPTYPE,;t t
+-s,@STDIOTYPE@,$STDIOTYPE,;t t
+-s,@CPP@,$CPP,;t t
+-s,@EGREP@,$EGREP,;t t
+-s,@AUDIODRIVER@,$AUDIODRIVER,;t t
+-s,@AUDIODEFS@,$AUDIODEFS,;t t
+-s,@AUDIOLIBS@,$AUDIOLIBS,;t t
+-s,@FL_LANG@,$FL_LANG,;t t
+-s,@FL_VOX@,$FL_VOX,;t t
+-s,@FL_LEX@,$FL_LEX,;t t
+-s,@LIBOBJS@,$LIBOBJS,;t t
+-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+-CEOF
+-
+-_ACEOF
+-
+-  cat >>$CONFIG_STATUS <<\_ACEOF
+-  # Split the substitutions into bite-sized pieces for seds with
+-  # small command number limits, like on Digital OSF/1 and HP-UX.
+-  ac_max_sed_lines=48
+-  ac_sed_frag=1 # Number of current file.
+-  ac_beg=1 # First line for current file.
+-  ac_end=$ac_max_sed_lines # Line after last line for current file.
+-  ac_more_lines=:
+-  ac_sed_cmds=
+-  while $ac_more_lines; do
+-    if test $ac_beg -gt 1; then
+-      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+-    else
+-      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+-    fi
+-    if test ! -s $tmp/subs.frag; then
+-      ac_more_lines=false
+-    else
+-      # The purpose of the label and of the branching condition is to
+-      # speed up the sed processing (if there are no `@' at all, there
+-      # is no need to browse any of the substitutions).
+-      # These are the two extra sed commands mentioned above.
+-      (echo ':t
+-  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+-      if test -z "$ac_sed_cmds"; then
+-  	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+-      else
+-  	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+-      fi
+-      ac_sed_frag=`expr $ac_sed_frag + 1`
+-      ac_beg=$ac_end
+-      ac_end=`expr $ac_end + $ac_max_sed_lines`
+-    fi
+-  done
+-  if test -z "$ac_sed_cmds"; then
+-    ac_sed_cmds=cat
++  # Remove last slash and all that follows it.  Not all systems have dirname.
++  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
++  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
++    # The file is in a subdirectory.
++    test ! -d "$ac_dir" && mkdir "$ac_dir"
++    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
++    # A "../" for each directory in $ac_dir_suffix.
++    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
++  else
++    ac_dir_suffix= ac_dots=
+   fi
+-fi # test -n "$CONFIG_FILES"
+ 
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+-  case $ac_file in
+-  - | *:- | *:-:* ) # input from stdin
+-        cat >$tmp/stdin
+-        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+-  * )   ac_file_in=$ac_file.in ;;
++  case "$ac_given_srcdir" in
++  .)  srcdir=.
++      if test -z "$ac_dots"; then top_srcdir=.
++      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
++  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
++  *) # Relative path.
++    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
++    top_srcdir="$ac_dots$ac_given_srcdir" ;;
+   esac
+ 
+-  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+-  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+-         X"$ac_file" : 'X\(//\)[^/]' \| \
+-         X"$ac_file" : 'X\(//\)$' \| \
+-         X"$ac_file" : 'X\(/\)' \| \
+-         .     : '\(.\)' 2>/dev/null ||
+-echo X"$ac_file" |
+-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+-  	  /^X\(\/\/\)$/{ s//\1/; q; }
+-  	  /^X\(\/\).*/{ s//\1/; q; }
+-  	  s/.*/./; q'`
+-  { if $as_mkdir_p; then
+-    mkdir -p "$ac_dir"
+-  else
+-    as_dir="$ac_dir"
+-    as_dirs=
+-    while test ! -d "$as_dir"; do
+-      as_dirs="$as_dir $as_dirs"
+-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+-         X"$as_dir" : 'X\(//\)[^/]' \| \
+-         X"$as_dir" : 'X\(//\)$' \| \
+-         X"$as_dir" : 'X\(/\)' \| \
+-         .     : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+-  	  /^X\(\/\/\)$/{ s//\1/; q; }
+-  	  /^X\(\/\).*/{ s//\1/; q; }
+-  	  s/.*/./; q'`
+-    done
+-    test ! -n "$as_dirs" || mkdir $as_dirs
+-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+-   { (exit 1); exit 1; }; }; }
++  case "$ac_given_INSTALL" in
++  [/$]*) INSTALL="$ac_given_INSTALL" ;;
++  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
++  esac
+ 
+-  ac_builddir=.
+-
+-if test "$ac_dir" != .; then
+-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+-  # A "../" for each directory in $ac_dir_suffix.
+-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+-  ac_dir_suffix= ac_top_builddir=
+-fi
+-
+-case $srcdir in
+-  .)  # No --srcdir option.  We are building in place.
+-    ac_srcdir=.
+-    if test -z "$ac_top_builddir"; then
+-       ac_top_srcdir=.
+-    else
+-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+-    fi ;;
+-  [\\/]* | ?:[\\/]* )  # Absolute path.
+-    ac_srcdir=$srcdir$ac_dir_suffix;
+-    ac_top_srcdir=$srcdir ;;
+-  *) # Relative path.
+-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
+-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+-# absolute.
+-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+-
+-
+-  case $INSTALL in
+-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+-  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
++  echo creating "$ac_file"
++  rm -f "$ac_file"
++  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
++  case "$ac_file" in
++  *Makefile*) ac_comsub="1i\\
++# $configure_input" ;;
++  *) ac_comsub= ;;
+   esac
+ 
+-  if test x"$ac_file" != x-; then
+-    { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+-    rm -f "$ac_file"
+-  fi
+-  # Let's still pretend it is `configure' which instantiates (i.e., don't
+-  # use $as_me), people would be surprised to read:
+-  #    /* config.h.  Generated by config.status.  */
+-  if test x"$ac_file" = x-; then
+-    configure_input=
+-  else
+-    configure_input="$ac_file.  "
+-  fi
+-  configure_input=$configure_input"Generated from `echo $ac_file_in |
+-                                     sed 's,.*/,,'` by configure."
++  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
++  sed -e "$ac_comsub
++s%@configure_input@%$configure_input%g
++s%@srcdir@%$srcdir%g
++s%@top_srcdir@%$top_srcdir%g
++s%@INSTALL@%$INSTALL%g
++" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
++fi; done
++rm -f conftest.s*
+ 
+-  # First look for the input files in the build tree, otherwise in the
+-  # src tree.
+-  ac_file_inputs=`IFS=:
+-    for f in $ac_file_in; do
+-      case $f in
+-      -) echo $tmp/stdin ;;
+-      [\\/$]*)
+-         # Absolute (can't be DOS-style, as IFS=:)
+-         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+-   { (exit 1); exit 1; }; }
+-         echo $f;;
+-      *) # Relative
+-         if test -f "$f"; then
+-           # Build tree
+-           echo $f
+-         elif test -f "$srcdir/$f"; then
+-           # Source tree
+-           echo $srcdir/$f
+-         else
+-           # /dev/null tree
+-           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+-   { (exit 1); exit 1; }; }
+-         fi;;
+-      esac
+-    done` || { (exit 1); exit 1; }
+-_ACEOF
+-cat >>$CONFIG_STATUS <<_ACEOF
+-  sed "$ac_vpsub
+-$extrasub
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-:t
+-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s,@configure_input@,$configure_input,;t t
+-s,@srcdir@,$ac_srcdir,;t t
+-s,@abs_srcdir@,$ac_abs_srcdir,;t t
+-s,@top_srcdir@,$ac_top_srcdir,;t t
+-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+-s,@builddir@,$ac_builddir,;t t
+-s,@abs_builddir@,$ac_abs_builddir,;t t
+-s,@top_builddir@,$ac_top_builddir,;t t
+-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+-s,@INSTALL@,$ac_INSTALL,;t t
+-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+-  rm -f $tmp/stdin
+-  if test x"$ac_file" != x-; then
+-    mv $tmp/out $ac_file
+-  else
+-    cat $tmp/out
+-    rm -f $tmp/out
+-  fi
++EOF
++cat >> $CONFIG_STATUS <<EOF
+ 
+-done
+-_ACEOF
++EOF
++cat >> $CONFIG_STATUS <<\EOF
+ 
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-{ (exit 0); exit 0; }
+-_ACEOF
++exit 0
++EOF
+ chmod +x $CONFIG_STATUS
+-ac_clean_files=$ac_clean_files_save
++rm -fr confdefs* $ac_clean_files
++test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+ 
+-
+-# configure is writing to config.log, and then calls config.status.
+-# config.status does its own redirection, appending to config.log.
+-# Unfortunately, on DOS this fails, as config.log is still kept open
+-# by configure, so config.status won't be able to write to it; its
+-# output is simply discarded.  So we exec the FD to /dev/null,
+-# effectively closing config.log, so it can be properly (re)opened and
+-# appended to by config.status.  When coming back to configure, we
+-# need to make the FD available again.
+-if test "$no_create" != yes; then
+-  ac_cs_success=:
+-  ac_config_status_args=
+-  test "$silent" = yes &&
+-    ac_config_status_args="$ac_config_status_args --quiet"
+-  exec 5>/dev/null
+-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+-  exec 5>>config.log
+-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+-  # would make configure fail if this is the last instruction.
+-  $ac_cs_success || { (exit 1); exit 1; }
+-fi
+-
+Index: configure.in
+===================================================================
+--- flite-1.3-release/configure.in	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/configure.in	(.../release-1.2)	(revision 7)
+@@ -206,10 +206,10 @@
+ AC_CHECK_HEADER(sys/audioio.h,
+               [AUDIODRIVER="sun"
+                AUDIODEFS=-DCST_AUDIO_SUNOS])
+-dnl AC_CHECK_HEADER(sys/asoundlib.h,
+-dnl              [AUDIODRIVER="alsa"
+-dnl	       AUDIODEFS=-DCST_AUDIO_ALSA
+-dnl               AUDIOLIBS=-lasound])
++ AC_CHECK_HEADER(alsa/asoundlib.h,
++              [AUDIODRIVER="alsa"
++	       AUDIODEFS=-DCST_AUDIO_ALSA
++               AUDIOLIBS=-lasound])
+ AC_CHECK_HEADER(mmsystem.h,
+ 	      [AUDIODRIVER="wince"
+ 	       AUDIODEFS=-DCST_AUDIO_WINCE
+Index: src/hrg/Makefile
+===================================================================
+--- flite-1.3-release/src/hrg/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/src/hrg/Makefile	(.../release-1.2)	(revision 7)
+@@ -39,9 +39,14 @@
+ BUILD_DIRS = 
+ ALL_DIRS= 
+ H = 
++include $(TOP)/config/config
+ SRCS = cst_utterance.c cst_relation.c cst_item.c cst_ffeature.c \
+        cst_rel_io.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+ 
+Index: src/utils/Makefile
+===================================================================
+--- flite-1.3-release/src/utils/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/src/utils/Makefile	(.../release-1.2)	(revision 7)
+@@ -44,8 +44,13 @@
+        cst_tokenstream.c cst_val.c cst_features.c \
+        cst_endian.c cst_socket.c cst_val_const.c \
+        cst_val_user.c cst_args.c 
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os) $(MMAPTYPE:%=cst_mmap_%.os) \
++        $(STDIOTYPE:%=cst_file_%.os)
++else
+ OBJS := $(SRCS:.c=.o) $(MMAPTYPE:%=cst_mmap_%.o) \
+         $(STDIOTYPE:%=cst_file_%.o)
++endif
+ FILES = Makefile $(H) $(SRCS) \
+ 	cst_mmap_posix.c cst_mmap_win32.c cst_mmap_none.c \
+ 	cst_file_stdio.c cst_file_wince.c cst_file_palmos.c
+Index: src/audio/au_alsa.c
+===================================================================
+--- flite-1.3-release/src/audio/au_alsa.c	(.../flite-1.3-orig)	(revision 0)
++++ flite-1.3-release/src/audio/au_alsa.c	(.../release-1.2)	(revision 7)
+@@ -0,0 +1,311 @@
++/*************************************************************************/
++/*                                                                       */
++/*                  Language Technologies Institute                      */
++/*                     Carnegie Mellon University                        */
++/*                        Copyright (c) 2000                             */
++/*                        All Rights Reserved.                           */
++/*                                                                       */
++/*  Permission is hereby granted, free of charge, to use and distribute  */
++/*  this software and its documentation without restriction, including   */
++/*  without limitation the rights to use, copy, modify, merge, publish,  */
++/*  distribute, sublicense, and/or sell copies of this work, and to      */
++/*  permit persons to whom this work is furnished to do so, subject to   */
++/*  the following conditions:                                            */
++/*   1. The code must retain the above copyright notice, this list of    */
++/*      conditions and the following disclaimer.                         */
++/*   2. Any modifications must be clearly marked as such.                */
++/*   3. Original authors' names are not deleted.                         */
++/*   4. The authors' names are not used to endorse or promote products   */
++/*      derived from this software without specific prior written        */
++/*      permission.                                                      */
++/*                                                                       */
++/*  CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK         */
++/*  DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING      */
++/*  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT   */
++/*  SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE      */
++/*  FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    */
++/*  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN   */
++/*  AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,          */
++/*  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF       */
++/*  THIS SOFTWARE.                                                       */
++/*                                                                       */
++/*********************************************************************** */
++/*             Author:  Lukas Loehrer (                                  */
++/*               Date:  January 2005                                     */
++/*************************************************************************/
++/*                                                                       */
++/*  Native access to alsa audio devices on Linux                         */
++/*  Tested with libasound version 1.0.10                                 */
++/*************************************************************************/
++
++#include <stdlib.h>
++#include <unistd.h>
++#include <sys/types.h>
++#include <assert.h>
++#include <errno.h>
++
++#include "cst_string.h"
++#include "cst_wave.h"
++#include "cst_audio.h"
++
++#include <alsa/asoundlib.h>
++
++
++/*static char *pcm_dev_name = "hw:0,0"; */
++static char *pcm_dev_name ="default";
++
++static inline void print_pcm_state(snd_pcm_t *handle, char *msg)
++{
++  fprintf(stderr, "PCM state at %s = %s\n", msg,
++		  snd_pcm_state_name(snd_pcm_state(handle)));
++}
++
++cst_audiodev *audio_open_alsa(int sps, int channels, cst_audiofmt fmt)
++{
++  cst_audiodev *ad;
++  unsigned 	int real_rate;
++  int err;
++
++  /* alsa specific stuff */
++  snd_pcm_t *pcm_handle;          
++  snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;
++  snd_pcm_hw_params_t *hwparams;
++  snd_pcm_format_t format;
++  snd_pcm_access_t access = SND_PCM_ACCESS_RW_INTERLEAVED;
++
++  /* Allocate the snd_pcm_hw_params_t structure on the stack. */
++  snd_pcm_hw_params_alloca(&hwparams);
++
++  /* Open pcm device */
++  err = snd_pcm_open(&pcm_handle, pcm_dev_name, stream, 0);
++  if (err < 0) 
++  {
++	cst_errmsg("audio_open_alsa: failed to open audio device %s. %s\n",
++			   pcm_dev_name, snd_strerror(err));
++	return NULL;
++  }
++
++  /* Init hwparams with full configuration space */
++  err = snd_pcm_hw_params_any(pcm_handle, hwparams);
++  if (err < 0) 
++  {
++	snd_pcm_close(pcm_handle);
++	cst_errmsg("audio_open_alsa: failed to get hardware parameters from audio device. %s\n", snd_strerror(err));
++	return NULL;
++  }
++
++  /* Set access mode */
++  err = snd_pcm_hw_params_set_access(pcm_handle, hwparams, access);
++  if (err < 0) 
++  {
++	snd_pcm_close(pcm_handle);
++	cst_errmsg("audio_open_alsa: failed to set access mode. %s.\n", snd_strerror(err));
++	return NULL;
++  }
++
++  /* Determine matching alsa sample format */
++  /* This could be implemented in a more */
++  /* flexible way (byte order conversion). */
++  switch (fmt)
++  {
++  case CST_AUDIO_LINEAR16:
++	if (CST_LITTLE_ENDIAN)
++	  format = SND_PCM_FORMAT_S16_LE;
++	else
++	  format = SND_PCM_FORMAT_S16_BE;
++	break;
++  case CST_AUDIO_LINEAR8:
++	format = SND_PCM_FORMAT_U8;
++	break;
++  case CST_AUDIO_MULAW:
++	format = SND_PCM_FORMAT_MU_LAW;
++	break;
++  default:
++	snd_pcm_close(pcm_handle);
++	cst_errmsg("audio_open_alsa: failed to find suitable format.\n");
++	return NULL;
++	break;
++  }
++
++  /* Set samble format */
++  err = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format);
++  if (err <0) 
++  {
++	snd_pcm_close(pcm_handle);
++	cst_errmsg("audio_open_alsa: failed to set format. %s.\n", snd_strerror(err));
++	return NULL;
++  }
++
++  /* Set sample rate near the disired rate */
++  real_rate = sps;
++  err = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &real_rate, 0);
++  if (err < 0)   
++  {
++	snd_pcm_close(pcm_handle);
++	cst_errmsg("audio_open_alsa: failed to set sample rate near %d. %s.\n", sps, snd_strerror(err));
++	return NULL;
++  }
++  /*FIXME:  This is probably too strict */
++  assert(sps == real_rate);
++
++  /* Set number of channels */
++  assert(channels >0);
++  err = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, channels);
++  if (err < 0) 
++  {
++	snd_pcm_close(pcm_handle);
++	cst_errmsg("audio_open_alsa: failed to set number of channels to %d. %s.\n", channels, snd_strerror(err));
++	return NULL;
++  }
++
++  /* Commit hardware parameters */
++  err = snd_pcm_hw_params(pcm_handle, hwparams);
++  if (err < 0) 
++  {
++	snd_pcm_close(pcm_handle);
++	cst_errmsg("audio_open_alsa: failed to set hw parameters. %s.\n", snd_strerror(err));
++	return NULL;
++  }
++
++  /* Make sure the device is ready to accept data */
++  assert(snd_pcm_state(pcm_handle) == SND_PCM_STATE_PREPARED);
++
++  /* Write hardware parameters to flite audio device data structure */
++  ad = cst_alloc(cst_audiodev, 1);
++  assert(ad != NULL);
++  ad->real_sps = ad->sps = sps;
++  ad->real_channels = ad->channels = channels;
++  ad->real_fmt = ad->fmt = fmt;
++  ad->platform_data = (void *) pcm_handle;
++
++  return ad;
++}
++
++int audio_close_alsa(cst_audiodev *ad)
++{
++  int result;
++  snd_pcm_t *pcm_handle;
++
++  if (ad == NULL)
++	return 0;
++
++  pcm_handle = (snd_pcm_t *) ad->platform_data;
++  result = snd_pcm_close(pcm_handle);
++  if (result < 0)
++  {
++	cst_errmsg("audio_close_alsa: Error: %s.\n", snd_strerror(result));
++  }
++  cst_free(ad);
++  return result;
++}
++
++/* Returns zero if recovery was successful. */
++static int recover_from_error(snd_pcm_t *pcm_handle, ssize_t res)
++{
++  if (res == -EPIPE) /* xrun */
++  {
++	res = snd_pcm_prepare(pcm_handle);
++	if (res < 0) 
++	{
++	  /* Failed to recover from xrun */
++	  cst_errmsg("recover_from_write_error: failed to recover from xrun. %s\n.", snd_strerror(res));
++	  return res;
++	}
++  } 
++  else if (res == -ESTRPIPE) /* Suspend */
++  {
++	while ((res = snd_pcm_resume(pcm_handle)) == -EAGAIN) 
++	{
++	  snd_pcm_wait(pcm_handle, 1000);
++	}
++	if (res < 0) 
++	{
++	  res = snd_pcm_prepare(pcm_handle);
++	  if (res <0) 
++	  {
++		/* Resume failed */
++		cst_errmsg("audio_recover_from_write_error: failed to resume after suspend. %s\n.", snd_strerror(res));
++		return res;
++	  }
++	}
++  } 
++  else if (res < 0) 
++  {
++	/* Unknown failure */
++	cst_errmsg("audio_recover_from_write_error: %s.\n", snd_strerror(res));
++	return res;
++  }
++  return 0;
++}
++
++int audio_write_alsa(cst_audiodev *ad, void *samples, int num_bytes)
++{
++  size_t frame_size;
++  ssize_t num_frames, res;
++  snd_pcm_t *pcm_handle;
++  char *buf = (char *) samples;
++
++  /* Determine frame size in bytes */
++  frame_size  = audio_bps(ad->real_fmt) * ad->real_channels;
++  /* Require that only complete frames are handed in */
++  assert((num_bytes % frame_size) == 0);
++  num_frames = num_bytes / frame_size;
++  pcm_handle = (snd_pcm_t *) ad->platform_data;
++
++  while (num_frames > 0) 
++  {
++	res = snd_pcm_writei(pcm_handle, buf, num_frames);
++	if (res != num_frames) 
++	{
++	  if (res == -EAGAIN || (res > 0 && res < num_frames)) 
++	  {
++		snd_pcm_wait(pcm_handle, 100);
++	  }
++	  else if (recover_from_error(pcm_handle, res) < 0) 
++	  {
++		return -1;
++	  }
++	}
++
++	if (res >0) 
++	{
++	  num_frames -= res;
++	  buf += res * frame_size;
++	}
++  }
++  return num_bytes;
++}
++
++int audio_flush_alsa(cst_audiodev *ad)
++{
++  int result;
++  result = snd_pcm_drain((snd_pcm_t *) ad->platform_data);
++  if (result < 0)
++  {
++	cst_errmsg("audio_flush_alsa: Error: %s.\n", snd_strerror(result));
++  }
++	/* Prepare device for more data */
++  result = snd_pcm_prepare((snd_pcm_t *) ad->platform_data);
++if (result < 0)
++  {
++	cst_errmsg("audio_flush_alsa: Error: %s.\n", snd_strerror(result));
++  }
++  return result;
++}
++
++int audio_drain_alsa(cst_audiodev *ad)
++{
++  int result;
++  result = snd_pcm_drop((snd_pcm_t *) ad->platform_data);
++  if (result < 0)
++  {
++	cst_errmsg("audio_drain_alsa: Error: %s.\n", snd_strerror(result));
++  }
++/* Prepare device for more data */
++  result = snd_pcm_prepare((snd_pcm_t *) ad->platform_data);
++if (result < 0)
++  {
++	cst_errmsg("audio_drain_alsa: Error: %s.\n", snd_strerror(result));
++  }
++  return result;
++}
+Index: src/audio/Makefile
+===================================================================
+--- flite-1.3-release/src/audio/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/src/audio/Makefile	(.../release-1.2)	(revision 7)
+@@ -43,9 +43,13 @@
+ 
+ BASESRCS = auclient.c auserver.c audio.c 
+ SRCS = $(BASESRCS) $(AUDIODRIVER:%=au_%.c)
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(BASESRCS) au_command.c au_none.c \
+-	au_oss.c au_sun.c au_wince.c au_palmos.c
++	au_oss.c au_sun.c au_wince.c au_palmos.c au_alsa.c
+ LIBNAME = flite
+ 
+ LOCAL_INCLUDES = -I. $(AUDIODEFS)
+Index: src/lexicon/Makefile
+===================================================================
+--- flite-1.3-release/src/lexicon/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/src/lexicon/Makefile	(.../release-1.2)	(revision 7)
+@@ -38,8 +38,13 @@
+ DIRNAME=src/lexicon
+ BUILD_DIRS = 
+ ALL_DIRS= 
++include $(TOP)/config/config
+ SRCS = cst_lexicon.c cst_lts.c cst_lts_rewrites.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(SRCS)
+ LIBNAME = flite
+ 
+Index: src/synth/Makefile
+===================================================================
+--- flite-1.3-release/src/synth/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/src/synth/Makefile	(.../release-1.2)	(revision 7)
+@@ -38,9 +38,14 @@
+ DIRNAME=src/synth
+ BUILD_DIRS = 
+ ALL_DIRS= 
++include $(TOP)/config/config
+ SRCS = cst_synth.c cst_utt_utils.c cst_voice.c cst_phoneset.c \
+        flite.c 
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(SRCS)
+ LIBNAME = flite
+ 
+Index: src/speech/Makefile
+===================================================================
+--- flite-1.3-release/src/speech/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/src/speech/Makefile	(.../release-1.2)	(revision 7)
+@@ -39,9 +39,14 @@
+ BUILD_DIRS = 
+ ALL_DIRS= 
+ H = 
++include $(TOP)/config/config
+ SRCS = cst_wave.c cst_wave_io.c cst_track.c cst_track_io.c \
+        cst_wave_utils.c cst_lpcres.c rateconv.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+ 
+Index: src/wavesynth/Makefile
+===================================================================
+--- flite-1.3-release/src/wavesynth/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/src/wavesynth/Makefile	(.../release-1.2)	(revision 7)
+@@ -38,9 +38,14 @@
+ DIRNAME=src/wavesynth
+ BUILD_DIRS = 
+ ALL_DIRS=
++include $(TOP)/config/config
+ SRCS = cst_units.c cst_sigpr.c cst_clunits.c cst_diphone.c \
+        cst_sigprFP.c cst_sts.c cst_reflpc.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ LIBNAME = flite
+ FILES = Makefile $(SRCS)
+ 
+Index: src/regex/Makefile
+===================================================================
+--- flite-1.3-release/src/regex/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/src/regex/Makefile	(.../release-1.2)	(revision 7)
+@@ -42,8 +42,13 @@
+ DIRNAME=src/regex
+ BUILD_DIRS = 
+ ALL_DIRS= 
++include $(TOP)/config/config
+ SRCS = cst_regex.c regexp.c regsub.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+ 
+Index: src/stats/Makefile
+===================================================================
+--- flite-1.3-release/src/stats/Makefile	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/src/stats/Makefile	(.../release-1.2)	(revision 7)
+@@ -39,8 +39,13 @@
+ BUILD_DIRS = 
+ ALL_DIRS= 
+ H = 
++include $(TOP)/config/config
+ SRCS = cst_cart.c cst_viterbi.c cst_ss.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+ 
+Index: config/common_make_rules
+===================================================================
+--- flite-1.3-release/config/common_make_rules	(.../flite-1.3-orig)	(revision 7)
++++ flite-1.3-release/config/common_make_rules	(.../release-1.2)	(revision 7)
+@@ -73,12 +73,13 @@
+ ifdef SHFLAGS
+ SOOBJS = $(OBJS:.o=.os)
+ FULLSHOBJS = $(SOOBJS:%=$(OBJDIR)/%)
+-ifdef LIBNAME
+-ALL += $(OBJDIR)/.build_so
++#ifdef LIBNAME
++#ALL += $(OBJDIR)/.build_so
++#endif
+ endif
+-endif
+ ifdef LIBNAME
+ ALL += $(OBJDIR)/.build_lib
++ALL += $(OBJDIR)/.build_so
+ endif
+ # Only do some directories when you are not cross compiling
+ ifeq ($(HOST_PLATFORM),$(TARGET_PLATFORM))
+@@ -117,14 +118,17 @@
+ 	@ touch $(OBJDIR)/.build_so
+ 
+ # Used in the lib/ directory and in building new voices
+-$(OBJDIR)/%.so: %.shared.a
++#$(OBJDIR)/%.so: %.shared.a
++%.so: %.shared.a
+ 	@ echo making $@
+ 	@ rm -rf shared_os && mkdir shared_os
+ 	@ rm -f $@ $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION} 
+ 	@ (cd shared_os && ar x ../$<)
+ 	@ (cd shared_os && $(CC) -shared -Wl,-soname,$@.${PROJECT_SHLIB_VERSION} -o ../$@.${PROJECT_VERSION} *.os)
+-	@ ln -s $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
+-	@ ln -s $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION} $(LIBDIR)/$@
++	#@ ln -s $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
++	#@ ln -s $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION} $(LIBDIR)/$@
++	@ ln -s $@.${PROJECT_VERSION} $@.${PROJECT_SHLIB_VERSION}
++	@ ln -s $@.${PROJECT_SHLIB_VERSION} $@
+ 	@ rm -rf shared_os
+ 
+ $(OBJDIR)/.make_build_dirs:
+Index: lib/Makefile
+===================================================================
+--- flite-1.3-release/lib/Makefile	(.../flite-1.3-orig)	(revision 0)
++++ flite-1.3-release/lib/Makefile	(.../release-1.2)	(revision 7)
+@@ -0,0 +1,70 @@
++###########################################################################
++##                                                                       ##
++##                  Language Technologies Institute                      ##
++##                     Carnegie Mellon University                        ##
++##                        Copyright (c) 1999                             ##
++##                        All Rights Reserved.                           ##
++##                                                                       ##
++##  Permission is hereby granted, free of charge, to use and distribute  ##
++##  this software and its documentation without restriction, including   ##
++##  without limitation the rights to use, copy, modify, merge, publish,  ##
++##  distribute, sublicense, and/or sell copies of this work, and to      ##
++##  permit persons to whom this work is furnished to do so, subject to   ##
++##  the following conditions:                                            ##
++##   1. The code must retain the above copyright notice, this list of    ##
++##      conditions and the following disclaimer.                         ##
++##   2. Any modifications must be clearly marked as such.                ##
++##   3. Original authors' names are not deleted.                         ##
++##   4. The authors' names are not used to endorse or promote products   ##
++##      derived from this software without specific prior written        ##
++##      permission.                                                      ##
++##                                                                       ##
++##  CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK         ##
++##  DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING      ##
++##  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT   ##
++##  SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE      ##
++##  FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    ##
++##  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN   ##
++##  AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,          ##
++##  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF       ##
++##  THIS SOFTWARE.                                                       ##
++##                                                                       ##
++###########################################################################
++##                                                                       ##
++##    FLITE libraries                                                    ##
++##                                                                       ##
++###########################################################################
++TOP=..
++DIRNAME=lib
++BUILD_DIRS = 
++ALL_DIRS=
++FILES = Makefile
++LIBNAMES = flite flite_cmulex flite_usenglish \
++           flite_cmu_us_kal flite_cmu_us_kal16 flite_cmu_time_awb
++
++STATICLIBS= $(LIBNAMES:%=lib%.a)
++SHAREDARLIBS= $(LIBNAMES:%=lib%.shared.a)
++#SHAREDLIBS = $(LIBNAMES:%=lib%.so)
++SHAREDLIBS = $(SHAREDARLIBS:%.shared.a=%.so)
++VERSIONSHAREDLIBS = $(SHAREDLIBS:%=%.${PROJECT_VERSION}) \
++                    $(SHAREDLIBS:%=%.${PROJECT_SHLIB_VERSION})
++ALL_LIBS = $(STATICLIBS) $(SHAREDLIBS) $(VERSIONSHAREDLIBS)
++
++ALL = shared_libs
++
++LOCAL_CLEAN=*.a *.so *.so.${PROJECT_VERSION} *.so.${PROJECT_SHLIB_VERSION}
++
++include $(TOP)/config/common_make_rules
++
++ifdef SHFLAGS
++shared_libs: $(SHAREDLIBS)
++else
++shared_libs: nothing
++endif
++
++install:
++	@ cp -vf $(LIBDIR)/* .
++	@ $(MAKE) shared_libs
++	@ echo ARLIBS: $(SHAREDARLIBS)
++	@ echo SHARLIBS: $(SHAREDLIBS)
++	@ tar cvf - $(ALL_LIBS) | ( cd $(INSTALLLIBDIR) && tar xf -)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite-alsa-1.3/flite-alsa-1.3-configure-with-audio.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite-alsa-1.3/flite-alsa-1.3-configure-with-audio.patch
new file mode 100644
index 0000000..e1e7aed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite-alsa-1.3/flite-alsa-1.3-configure-with-audio.patch
@@ -0,0 +1,12 @@
+--- flite-1.3-release/configure.in.old	2008-01-06 02:17:47.000000000 -0600
++++ flite-1.3-release/configure.in	2008-01-06 02:19:56.000000000 -0600
+@@ -220,7 +220,8 @@ dnl allow the user to override the one d
+ dnl
+ AC_ARG_WITH( audio,
+ 	[  --with-audio          with specific audio support (none linux freebsd etc) ],
+-        AUDIODRIVER=$with_audio )
++        [AUDIODRIVER=$with_audio
++         AUDIODEFS=])
+ 
+ if test "x$AUDIODEFS" = x; then
+     case "$AUDIODRIVER" in
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite-alsa_1.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite-alsa_1.3.bb
new file mode 100644
index 0000000..51012e6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite-alsa_1.3.bb
@@ -0,0 +1,12 @@
+require flite.inc
+
+PR = "r1"
+
+EXTRA_OECONF = "--with-audio=alsa --enable-shared"
+
+SRC_URI = "http://www.speech.cs.cmu.edu/flite/packed/flite-${PV}/flite-${PV}-release.tar.gz \
+           file://flite-1.3-alsa_support-1.2.diff \
+           file://flite-alsa-1.3-configure-with-audio.patch"
+
+SRC_URI[md5sum] = "ae0aca1cb7b4801f4372f3a75a9e52b5"
+SRC_URI[sha256sum] = "922225f7001e57a0fbace8833b0a48790a68f6c7b491f2d47c78ad537ab78a8b"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite.inc
new file mode 100644
index 0000000..0ef82c0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/flite/flite.inc
@@ -0,0 +1,33 @@
+DESCRIPTION = "flite - the festival light speech synthesizer"
+HOMEPAGE = "http://www.speech.cs.cmu.edu/flite/"
+SECTION = "console/utils"
+LICENSE = "flite"
+LIC_FILES_CHKSUM = "file://COPYING;md5=68a16b1ee49c96c36f232ccdcd287650"
+DEPENDS = "alsa-oss"
+
+PARALLEL_MAKE = ""
+
+S = "${WORKDIR}/flite-${PV}-release"
+
+CFLAGS += " -lasound "
+
+inherit autotools-brokensep
+
+PACKAGES += "lib${PN} lib${PN}-vox8 lib${PN}-vox16"
+
+FILES_${PN} = "${bindir}"
+
+FILES_lib${PN} ="${libdir}/libflite.so.* \
+    ${libdir}/libflite_cmu_time_awb.so.* \
+    ${libdir}/libflite_cmulex.so.* \
+    ${libdir}/libflite_usenglish.so.*"
+
+FILES_lib${PN}-vox8 = "${libdir}/libflite_cmu_us_kal.so.*"
+
+FILES_lib${PN}-vox16 = "${libdir}/libflite_cmu_us_kal16.so.*"
+
+LEAD_SONAME = "libflite.so"
+
+do_install() {
+    oe_runmake INSTALLBINDIR="${D}${bindir}" INSTALLLIBDIR="${D}${libdir}" INSTALLINCDIR="${D}${includedir}" install
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk/disable_test.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk/disable_test.patch
new file mode 100644
index 0000000..1f5fd25
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk/disable_test.patch
@@ -0,0 +1,11 @@
+--- a/Makefile.orig	2015-11-26 15:35:31.485357862 +0800
++++ b/Makefile	2015-11-26 15:35:37.037357764 +0800
+@@ -18,7 +18,7 @@
+ 
+ include makeinclude
+ 
+-DIRS = $(IMAGEDIRS) src $(CAIRODIR) fluid test documentation
++DIRS = $(IMAGEDIRS) src $(CAIRODIR) fluid documentation
+ 
+ all: makeinclude fltk-config
+ 	for dir in $(DIRS); do\
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk/fix-boolean-issue-with-jpeg9.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk/fix-boolean-issue-with-jpeg9.patch
new file mode 100644
index 0000000..014184d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk/fix-boolean-issue-with-jpeg9.patch
@@ -0,0 +1,40 @@
+From 14c22398f8370e33a798360ed0dad513af8f1470 Mon Sep 17 00:00:00 2001
+From: AlbrechtS <AlbrechtS@ea41ed52-d2ee-0310-a9c1-e6b18d33e121>
+Date: Sun, 15 Mar 2015 19:32:33 +0000
+Subject: [PATCH] Fix 'boolean' issue with jpeg-9 library compatibility (STR
+ #2920).
+
+According to comments in STR #2920 and my own tests this is also
+compatible with older jpeg libraries (at least jpeg-8).
+
+Upstream-Status: Backport
+
+---
+ src/Fl_JPEG_Image.cxx |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/Fl_JPEG_Image.cxx b/src/Fl_JPEG_Image.cxx
+index 47120a7..6cebe88 100644
+--- a/src/Fl_JPEG_Image.cxx
++++ b/src/Fl_JPEG_Image.cxx
+@@ -155,7 +155,7 @@ Fl_JPEG_Image::Fl_JPEG_Image(const char *filename)	// I - File to load
+   
+   jpeg_create_decompress(&dinfo);
+   jpeg_stdio_src(&dinfo, fp);
+-  jpeg_read_header(&dinfo, 1);
++  jpeg_read_header(&dinfo, TRUE);
+   
+   dinfo.quantize_colors      = (boolean)FALSE;
+   dinfo.out_color_space      = JCS_RGB;
+@@ -337,7 +337,7 @@ Fl_JPEG_Image::Fl_JPEG_Image(const char *name, const unsigned char *data)
+   
+   jpeg_create_decompress(&dinfo);
+   jpeg_mem_src(&dinfo, data);
+-  jpeg_read_header(&dinfo, 1);
++  jpeg_read_header(&dinfo, TRUE);
+   
+   dinfo.quantize_colors      = (boolean)FALSE;
+   dinfo.out_color_space      = JCS_RGB;
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk/fltk-no-freetype-config.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk/fltk-no-freetype-config.patch
new file mode 100644
index 0000000..4d13ffc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk/fltk-no-freetype-config.patch
@@ -0,0 +1,20 @@
+--- a/configure.in.orig	2015-11-26 14:30:17.893426966 +0800
++++ b/configure.in	2015-11-26 14:33:00.285424099 +0800
+@@ -969,12 +969,12 @@ case $host_os_gui in
+         AC_ARG_ENABLE(xft, [  --enable-xft            turn on Xft support [[default=yes]]])
+ 
+ 	if test x$enable_xft != xno; then
+-            AC_PATH_PROG(FTCONFIG,freetype-config)
++            AC_PATH_PROG(PKGCONFIG,pkg-config)
+ 
+-	    if test "x$FTCONFIG" != x; then
+-	        CPPFLAGS="`$FTCONFIG --cflags` $CPPFLAGS"
+-	        CFLAGS="`$FTCONFIG --cflags` $CFLAGS"
+-	        CXXFLAGS="`$FTCONFIG --cflags` $CXXFLAGS"
++	    if test "x$PKGCONFIG" != x; then
++	        CPPFLAGS="`$PKGCONFIG --cflags xft` $CPPFLAGS"
++	        CFLAGS="`$PKGCONFIG --cflags xft` $CFLAGS"
++	        CXXFLAGS="`$PKGCONFIG --cflags xft` $CXXFLAGS"
+ 
+ 	        AC_CHECK_LIB(fontconfig, FcPatternCreate)
+ 		AC_CHECK_HEADER(X11/Xft/Xft.h,
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk_1.3.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk_1.3.3.bb
new file mode 100644
index 0000000..117ecc3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/fltk/fltk_1.3.3.bb
@@ -0,0 +1,49 @@
+SUMMARY = "FLTK is a cross-platform C++ GUI toolkit"
+HOMEPAGE = "http://www.fltk.org"
+SECTION = "libs"
+LICENSE = "LGPLv2 & FLTK"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f6b26344a24a941a01a5b0826e80b5ca"
+
+DEPENDS = "alsa-lib zlib jpeg libpng libxext libxft"
+
+SRC_URI = "http://fltk.org/pub/fltk/${PV}/${BP}-source.tar.gz \
+           file://disable_test.patch \
+           file://fltk-no-freetype-config.patch \
+           file://fix-boolean-issue-with-jpeg9.patch \
+"
+
+SRC_URI[md5sum] = "9ccdb0d19dc104b87179bd9fd10822e3"
+SRC_URI[sha256sum] = "f8398d98d7221d40e77bc7b19e761adaf2f1ef8bb0c30eceb7beb4f2273d0d97"
+
+inherit autotools-brokensep binconfig pkgconfig lib_package
+
+TARGET_CC_ARCH += "${LDFLAGS} -DXFT_MAJOR=2"
+
+EXTRA_OECONF = "--enable-shared \
+                --enable-threads \
+                --enable-xdbe \
+                --enable-xft \
+"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl', '', d)}"
+
+PACKAGECONFIG[opengl] = "--enable-gl,--disable-gl,virtual/libgl"
+PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,libxinerama"
+PACKAGECONFIG[xfixes] = "--enable-xfixes,--disable-xfixes,libxfixes"
+PACKAGECONFIG[xcursor] = "--enable-xcursor,--disable-xcursor,libxcursor"
+
+do_configure() {
+    oe_runconf
+}
+
+do_install_append_class-target() {
+    sed -i -e 's,${STAGING_DIR_HOST},,g' ${D}${bindir}/fltk-config
+}
+
+python populate_packages_prepend () {
+    if (d.getVar('DEBIAN_NAMES', 1)):
+        d.setVar('PKG_${BPN}', 'libfltk${PV}')
+}
+
+LEAD_SONAME = "libfltk.so"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0001-FindGStreamer_1_0-fix-build-failure-for-new-gstreame.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0001-FindGStreamer_1_0-fix-build-failure-for-new-gstreame.patch
new file mode 100644
index 0000000..d5f6485
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0001-FindGStreamer_1_0-fix-build-failure-for-new-gstreame.patch
@@ -0,0 +1,71 @@
+From bea27fd919b64ee8d97996409e279e1e83d13594 Mon Sep 17 00:00:00 2001
+From: Jean-Louis Dupond <jean-louis@dupond.be>
+Date: Sun, 4 Oct 2015 18:17:33 +0200
+Subject: [PATCH] FindGStreamer_1_0: fix build failure for new gstreamer
+ versions
+
+---
+ cmake/FindGStreamer_1_0.cmake | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/cmake/FindGStreamer_1_0.cmake b/cmake/FindGStreamer_1_0.cmake
+index f7bf990..3aa8fc6 100644
+--- a/cmake/FindGStreamer_1_0.cmake
++++ b/cmake/FindGStreamer_1_0.cmake
+@@ -53,17 +53,17 @@ set(GSTREAMER_1_0_MINIMUM_VERSION 1.0.5)
+ # Helper macro to find a Gstreamer plugin (or Gstreamer itself)
+ #   _component_prefix is prepended to the _INCLUDE_DIRS and _LIBRARIES variables (eg. "GSTREAMER_1_0_AUDIO")
+ #   _pkgconfig_name is the component's pkg-config name (eg. "gstreamer-1.0", or "gstreamer-video-1.0").
+-#   _header is the component's header, relative to the gstreamer-1.0 directory (eg. "gst/gst.h").
+ #   _library is the component's library name (eg. "gstreamer-1.0" or "gstvideo-1.0")
+-macro(FIND_GSTREAMER_COMPONENT _component_prefix _pkgconfig_name _header _library)
++macro(FIND_GSTREAMER_COMPONENT _component_prefix _pkgconfig_name _library)
+     # FIXME: The QUIET keyword can be used once we require CMake 2.8.2.
+-    pkg_check_modules(PC_${_component_prefix} ${_pkgconfig_name})
+ 
+-    find_path(${_component_prefix}_INCLUDE_DIRS
+-        NAMES ${_header}
+-        HINTS ${PC_${_component_prefix}_INCLUDE_DIRS} ${PC_${_component_prefix}_INCLUDEDIR}
+-        PATH_SUFFIXES gstreamer-1.0
+-    )
++    string(REGEX MATCH "(.*)>=(.*)" _dummy "${_pkgconfig_name}")
++    if ("${CMAKE_MATCH_2}" STREQUAL "")
++        pkg_check_modules(PC_${_component_prefix} "${_pkgconfig_name} >= ${GStreamer_FIND_VERSION}")
++    else ()
++        pkg_check_modules(PC_${_component_prefix} ${_pkgconfig_name})
++    endif ()
++    set(${_component_prefix}_INCLUDE_DIRS ${PC_${_component_prefix}_INCLUDE_DIRS})
+ 
+     find_library(${_component_prefix}_LIBRARIES
+         NAMES ${_library} gstreamer_android
+@@ -78,8 +78,8 @@ endmacro()
+ # 1.1. Find headers and libraries
+ set(GLIB_ROOT_DIR ${GSTREAMER_1_0_ROOT_DIR})
+ find_package(Glib REQUIRED)
+-FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0 gstreamer-1.0 gst/gst.h gstreamer-1.0)
+-FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_BASE gstreamer-base-1.0 gst/gst.h gstbase-1.0)
++FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0 gstreamer-1.0 gstreamer-1.0)
++FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_BASE gstreamer-base-1.0 gstbase-1.0)
+ 
+ # 1.2. Check Gstreamer version
+ if (GSTREAMER_1_0_INCLUDE_DIRS)
+@@ -110,11 +110,11 @@ endif ()
+ # 2. Find Gstreamer plugins
+ # -------------------------
+ 
+-FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_APP gstreamer-app-1.0 gst/app/gstappsink.h gstapp-1.0)
+-FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_AUDIO gstreamer-audio-1.0 gst/audio/audio.h gstaudio-1.0)
+-FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_FFT gstreamer-fft-1.0 gst/fft/gstfft.h gstfft-1.0)
+-FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_PBUTILS gstreamer-pbutils-1.0 gst/pbutils/pbutils.h gstpbutils-1.0)
+-FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_VIDEO gstreamer-video-1.0 gst/video/video.h gstvideo-1.0)
++FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_APP gstreamer-app-1.0 gstapp-1.0)
++FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_AUDIO gstreamer-audio-1.0 gstaudio-1.0)
++FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_FFT gstreamer-fft-1.0 gstfft-1.0)
++FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_PBUTILS gstreamer-pbutils-1.0 gstpbutils-1.0)
++FIND_GSTREAMER_COMPONENT(GSTREAMER_1_0_VIDEO gstreamer-video-1.0 gstvideo-1.0)
+ 
+ # ------------------------------------------------
+ # 3. Process the COMPONENTS passed to FIND_PACKAGE
+-- 
+2.6.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/winpr-makecert-Build-with-install-RPATH.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/winpr-makecert-Build-with-install-RPATH.patch
new file mode 100644
index 0000000..d279d6d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/winpr-makecert-Build-with-install-RPATH.patch
@@ -0,0 +1,31 @@
+From 253eafc8c8da83fc2b1a99a9e43824efc6105c7a Mon Sep 17 00:00:00 2001
+From: Manuel Bachmann <manuel.bachmann@iot.bzh>
+Date: Sun, 4 Oct 2015 10:44:49 +0200
+Subject: [PATCH] winpr-makecert: Build with install RPATH
+
+As we are installing "winpr-makecert" manually, we do want
+to refer to the library in DESTDIR, not the one resting in
+the build tree.
+
+Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
+---
+ winpr/tools/makecert/cli/CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/winpr/tools/makecert/cli/CMakeLists.txt b/winpr/tools/makecert/cli/CMakeLists.txt
+index 17954c4..90c446b 100644
+--- a/winpr/tools/makecert/cli/CMakeLists.txt
++++ b/winpr/tools/makecert/cli/CMakeLists.txt
+@@ -45,5 +45,9 @@ set(${MODULE_PREFIX}_LIBS winpr-makecert-tool)
+ 
+ target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
+ 
++set_target_properties(${MODULE_NAME} PROPERTIES 
++	BUILD_WITH_INSTALL_RPATH 1)
++
+ set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/Tools")
+ 
++
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_git.bb
new file mode 100644
index 0000000..339a053
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_git.bb
@@ -0,0 +1,90 @@
+# Copyright (C) 2010-2012 O.S. Systems Software Ltda. All Rights Reserved
+# Released under the MIT license
+
+DESCRIPTION = "FreeRDP RDP client & server library"
+HOMEPAGE = "http://www.freerdp.com"
+DEPENDS = "openssl alsa-lib pcsc-lite"
+SECTION = "net"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit pkgconfig cmake gitpkgv
+
+PV = "1.2.5+gitr${SRCPV}"
+PKGV = "${GITPKGVTAG}"
+
+SRCREV = "62da9d28c674814c81c245c1c7882eb0da7be76b"
+SRC_URI = "git://github.com/FreeRDP/FreeRDP.git \
+    file://winpr-makecert-Build-with-install-RPATH.patch \
+    file://0001-FindGStreamer_1_0-fix-build-failure-for-new-gstreame.patch \
+"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE += " \
+    -DWITH_ALSA=ON \
+    -DWITH_PCSC=ON \
+    -DWITH_FFMPEG=OFF \
+    -DWITH_CUNIT=OFF \
+    -DWITH_NEON=OFF \
+    -DBUILD_STATIC_LIBS=OFF \
+    -DCMAKE_POSITION_INDEPENDANT_CODE=ON \
+    -DWITH_MANPAGES=OFF \
+"
+
+PACKAGECONFIG ??= "  \
+                ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}\
+                ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}\
+                ${@bb.utils.contains('DISTRO_FEATURES', 'directfb', 'directfb', '', d)}\
+                ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}\
+                ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)}\
+                gstreamer cups \
+                "
+
+X11_DEPS = "virtual/libx11 libxinerama libxext libxcursor libxv libxi libxrender libxfixes libxdamage libxrandr libxkbfile"
+PACKAGECONFIG[x11] = "-DWITH_X11=ON -DWITH_XINERAMA=ON -DWITH_XEXT=ON -DWITH_XCURSOR=ON -DWITH_XV=ON -DWITH_XI=ON -DWITH_XRENDER=ON -DWITH_XFIXES=ON -DWITH_XDAMAGE=ON -DWITH_XRANDR=ON -DWITH_XKBFILE=ON,-DWITH_X11=OFF,${X11_DEPS}"
+PACKAGECONFIG[wayland] = "-DWITH_WAYLAND=ON,-DWITH_WAYLAND=OFF,wayland"
+PACKAGECONFIG[directfb] = "-DWITH_DIRECTFB=ON,-DWITH_DIRECTFB=OFF,directfb"
+PACKAGECONFIG[pam] = "-DWITH_PAM=ON,-DWITH_PAM=OFF,libpam"
+PACKAGECONFIG[pulseaudio] = "-DWITH_PULSEAUDIO=ON,-DWITH_PULSEAUDIO=OFF,pulseaudio"
+PACKAGECONFIG[gstreamer] = "-DWITH_GSTREAMER_1_0=ON,-DWITH_GSTREAMER_1_0=OFF,gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG[cups] = "-DWITH_CUPS=ON,-DWITH_CUPS=OFF,cups"
+
+PACKAGES =+ "libfreerdp"
+
+LEAD_SONAME = "libfreerdp.so"
+FILES_libfreerdp = "${libdir}/lib*${SOLIBS}"
+
+PACKAGES_DYNAMIC += "^libfreerdp-plugin-.*"
+
+# we will need winpr-makecert to generate TLS certificates
+do_install_append () {
+    install -d ${D}${bindir}
+    install -m755 winpr/tools/makecert/cli/winpr-makecert ${D}${bindir}
+    rm -rf ${D}${libdir}/cmake
+    rm -rf ${D}${libdir}/freerdp
+}
+
+python populate_packages_prepend () {
+    freerdp_root = d.expand('${libdir}/freerdp')
+
+    do_split_packages(d, freerdp_root, '^(audin_.*)\.so$',
+        output_pattern='libfreerdp-plugin-%s',
+        description='FreeRDP plugin %s',
+        prepend=True, extra_depends='libfreerdp-plugin-audin')
+
+    do_split_packages(d, freerdp_root, '^(rdpsnd_.*)\.so$',
+        output_pattern='libfreerdp-plugin-%s',
+        description='FreeRDP plugin %s',
+        prepend=True, extra_depends='libfreerdp-plugin-rdpsnd')
+
+    do_split_packages(d, freerdp_root, '^(tsmf_.*)\.so$',
+        output_pattern='libfreerdp-plugin-%s',
+        description='FreeRDP plugin %s',
+        prepend=True, extra_depends='libfreerdp-plugin-tsmf')
+
+    do_split_packages(d, freerdp_root, '^([^-]*)\.so$',
+        output_pattern='libfreerdp-plugin-%s',
+        description='FreeRDP plugin %s',
+        prepend=True, extra_depends='')
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gd/gd_2.1.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/gd/gd_2.1.1.bb
new file mode 100644
index 0000000..85c7e6a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gd/gd_2.1.1.bb
@@ -0,0 +1,47 @@
+SUMMARY = "gd is a library used to create PNG, JPEG, or WBMP images"
+DESCRIPTION = "The gd graphics library allows your code to quickly draw images \
+complete with lines, arcs, text, multiple colors, cut and paste from other \
+images, and flood fills, and to write out the result as a PNG or JPEG file. \
+This is particularly useful in Web applications, where PNG and JPEG are two \
+of the formats accepted for inline images by most browsers. Note that gd is not \
+a paint program."
+HOMEPAGE = "http://libgd.bitbucket.org/"
+
+SECTION = "libs"
+LICENSE = "GD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c97638cafd3581eb87abd37332137669"
+DEPENDS = "freetype libpng jpeg zlib tiff"
+
+SRC_URI = "https://bitbucket.org/libgd/gd-libgd/downloads/libgd-${PV}.tar.bz2 \
+"
+SRC_URI[md5sum] = "d3f1a992ac9c550ebc6da89c147f89af"
+SRC_URI[sha256sum] = "895ea9c6fcab187b0a908ae3e9e6b06423756f8a643d362349b0caab4014bd0d"
+
+S = "${WORKDIR}/libgd-${PV}"
+
+inherit autotools binconfig gettext pkgconfig
+
+EXTRA_OECONF += " --disable-rpath \
+                  --with-jpeg=${STAGING_LIBDIR}/.. \
+                  --with-freetype=yes \
+                  --without-fontconfig \
+                  --without-xpm \
+                  --without-x \
+                  --without-vpx \
+                "
+
+EXTRA_OEMAKE = 'LDFLAGS="${LDFLAGS}"'
+
+do_install_append() {
+	# cleanup buildpaths from gdlib.pc
+	sed -i -e 's#${STAGING_DIR_HOST}##g' ${D}${libdir}/pkgconfig/gdlib.pc
+}
+
+PACKAGES += "${PN}-tools"
+
+FILES_${PN} = "${libdir}/lib*${SOLIBS}"
+FILES_${PN}-tools = "${bindir}/*"
+
+PROVIDES += "${PN}-tools"
+RPROVIDES_${PN}-tools = "${PN}-tools"
+RDEPENDS_${PN}-tools = "perl perl-module-strict"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/glog/glog.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/glog/glog.inc
new file mode 100644
index 0000000..8a1fb42
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/glog/glog.inc
@@ -0,0 +1,11 @@
+DESCRIPTION = "The glog library implements application-level logging. This \
+library provides logging APIs based on C++-style streams and various helper \
+macros."
+HOMEPAGE = "https://code.google.com/p/google-glog/"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dc9db360e0bbd4e46672f3fd91dd6c4b"
+
+DEPENDS = "libunwind"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.3.bb
new file mode 100644
index 0000000..de3f076
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.3.bb
@@ -0,0 +1,6 @@
+require glog.inc
+
+SRC_URI = "http://google-glog.googlecode.com/files/glog-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "a6fd2c22f8996846e34c763422717c18"
+SRC_URI[sha256sum] = "fbf90c2285ba0561db7a40f8a4eefb9aa963e7d399bd450363e959929fe849d0"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_git.bb
new file mode 100644
index 0000000..766e41a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_git.bb
@@ -0,0 +1,34 @@
+SUMMARY = "The GNU portability library"
+DESCRIPTION = "A collection of software subroutines which are designed to \
+be usable on many operating systems. The goal of the project \
+is to make it easy for free software authors to make their \
+software run on many operating systems. Since source is designed \
+to be copied from gnulib, it is not a library per-se, as much \
+as a collection of portable idioms to be used in other projects."
+
+HOMEPAGE = "http://www.gnu.org/software/gnulib/"
+SECTION = "devel"
+LICENSE = "LGPLv2+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e4cf3810f33a067ea7ccd2cd889fed21"
+SRCREV = "24379a9217fa4bd62685795aaaa010fd90ced9e3"
+SRC_URI = "git://git.sv.gnu.org/gnulib;protocol=git \
+"
+S = "${WORKDIR}/git"
+
+do_install () {
+    cd ${S}
+    git checkout master
+    git clone ${S} ${D}/${datadir}/gnulib
+}
+
+do_patch[noexec] = "1"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+do_package[noexec] = "1"
+do_packagedata[noexec] = "1"
+do_package_write_ipk[noexec] = "1"
+do_package_write_deb[noexec] = "1"
+do_package_write_rpm[noexec] = "1"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.4.bb
new file mode 100644
index 0000000..3d8e2a9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.4.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Fast, multi-threaded malloc() and nifty performance analysis tools"
+HOMEPAGE = "http://code.google.com/p/gperftools/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=762732742c73dc6c7fbe8632f06c059a"
+DEPENDS = "libunwind"
+
+SRC_URI = "http://pkgs.fedoraproject.org/repo/pkgs/gperftools/gperftools-2.4.tar.gz/2171cea3bbe053036fb5d5d25176a160/gperftools-2.4.tar.gz"
+
+SRC_URI[md5sum] = "2171cea3bbe053036fb5d5d25176a160"
+SRC_URI[sha256sum] = "982a37226eb42f40714e26b8076815d5ea677a422fb52ff8bfca3704d9c30a2d"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/eglibc-2.17.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/eglibc-2.17.patch
new file mode 100644
index 0000000..e43bdcb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/eglibc-2.17.patch
@@ -0,0 +1,12 @@
+Upstream-Status: pending
+
+--- gpm-1.99.7.orig/src/daemon/open_console.c	2008-07-24 12:33:05.000000000 +0200
++++ gpm-1.99.7/src/daemon/open_console.c	2013-01-10 12:39:47.975461947 +0100
+@@ -23,6 +23,7 @@
+ #include <fcntl.h>              /* open and co.  */
+ #include <sys/stat.h>           /* stat() */
+ #include <sys/ioctl.h>          /* ioctl() */
++#include <sys/types.h>          /* major() */
+ 
+ /* Linux specific (to be outsourced in gpm2 */
+ #include <linux/serial.h>       /* for serial console check */
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/init b/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/init
new file mode 100644
index 0000000..2dcf9ab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/init
@@ -0,0 +1,32 @@
+#! /bin/sh  
+
+# Grab the common functions
+#. /etc/init.d/functions
+
+# FIXME: 
+# Add a configuration file for GPM here
+
+test -x /usr/sbin/gpm || exit 0
+
+case "$1" in
+  start)
+    if [ ! -p /dev/gpmdata ]; then
+        mkfifo /dev/gpmdata
+    fi
+
+    echo "Starting GPM:" 
+    start-stop-daemon -S -x /usr/sbin/gpm -- -R -m /dev/psaux -t ps2
+    ;;
+  stop)
+    echo "Stopping GPM:" 
+    start-stop-daemon -K -x /usr/sbin/gpm
+    ;;
+  restart|force-reload) 
+    $0 stop
+    $0 start
+    ;;
+  *)
+    usage /etc/init.d/gpm
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/no-docs.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/no-docs.patch
new file mode 100644
index 0000000..f10217a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/no-docs.patch
@@ -0,0 +1,18 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: gpm-1.99.7/Makefile.in
+===================================================================
+--- gpm-1.99.7.orig/Makefile.in	2008-07-24 03:36:35.000000000 -0700
++++ gpm-1.99.7/Makefile.in	2010-06-22 18:28:45.269507001 -0700
+@@ -19,7 +19,7 @@
+ # user-overridable flags, but it's also all the implicit rule looks at.
+ # missing ?
+ 
+-SUBDIRS = src doc contrib gpm2
++SUBDIRS = src
+ 
+ 
+ ### simple, but effective rules
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/processcreds.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/processcreds.patch
new file mode 100644
index 0000000..d647eca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm-1.99.7/processcreds.patch
@@ -0,0 +1,12 @@
+Index: gpm-1.99.7/src/daemon/processconn.c
+===================================================================
+--- gpm-1.99.7.orig/src/daemon/processconn.c	2010-09-29 17:36:18.571782951 +0400
++++ gpm-1.99.7/src/daemon/processconn.c	2010-09-29 17:42:44.659991758 +0400
+@@ -20,6 +20,7 @@
+  *
+  ********/
+ 
++#define _GNU_SOURCE
+ #include <sys/socket.h>         /* accept */
+ #include <stdlib.h>             /* malloc */
+ #include <unistd.h>             /* close */
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm_1.99.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm_1.99.7.bb
new file mode 100644
index 0000000..7022057
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gpm/gpm_1.99.7.bb
@@ -0,0 +1,52 @@
+DESCRIPTION = "GPM (General Purpose Mouse) is a mouse server \
+for the console and xterm, with sample clients included \
+(emacs, etc)."
+SECTION = "console/utils"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://gpm2/core/main.c;endline=19;md5=66d3c205c4e7ee5704b2ee351dfed72f"
+
+PR = "r2"
+
+DEPENDS = "ncurses"
+
+SRC_URI = "ftp://arcana.linux.it/pub/gpm/gpm-${PV}.tar.bz2 \
+           file://no-docs.patch \
+           file://processcreds.patch \
+           file://eglibc-2.17.patch \
+           file://init"
+
+inherit autotools-brokensep update-rc.d
+
+INITSCRIPT_NAME = "gpm"
+INITSCRIPT_PARAMS = "defaults"
+
+#export LIBS = "-lm"
+
+# all fields are /* FIXME: gpm 1.99.13 */
+# gpm-1.99.7/src/lib/libhigh.c:171:43: error: parameter 'clientdata' set but not used [-Werror=unused-but-set-parameter]
+# gpm-1.99.7/src/lib/report-lib.c:28:21: error: parameter 'line' set but not used [-Werror=unused-but-set-parameter]
+# gpm-1.99.7/src/lib/report-lib.c:28:33: error: parameter 'file' set but not used [-Werror=unused-but-set-parameter]
+# gpm-1.99.7/src/drivers/empty/i.c:26:23: error: parameter 'fd' set but not used [-Werror=unused-but-set-parameter]
+# gpm-1.99.7/src/drivers/empty/i.c:26:42: error: parameter 'flags' set but not used [-Werror=unused-but-set-parameter]
+# gpm-1.99.7/src/drivers/etouch/i.c:34:43: error: parameter 'flags' set but not used [-Werror=unused-but-set-parameter]
+# gpm-1.99.7/src/drivers/msc/r.c:32:12: error: variable 'dy' set but not used [-Werror=unused-but-set-variable]
+# gpm-1.99.7/src/drivers/msc/r.c:32:8: error: variable 'dx' set but not used [-Werror=unused-but-set-variable]
+# cc1: all warnings being treated as errors
+CFLAGS += "-Wno-extra -Wno-error=unused-but-set-parameter -Wno-error=unused-but-set-variable"
+
+# twiddler is WIP in 1.99.7 and probably not worth fixing (a lot of changes in gpm-2-dev after 1.99.7
+# gpm-1.99.7/src/drivers/twid/twiddler.c:503:14: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
+# /gpm-1.99.7/src/mice.c:221:5: error: (near initialization for 'mice[32].init') [-Werror]
+CFLAGS += "-Wno-error=int-to-pointer-cast -Wno-error"
+
+do_install () {
+    oe_runmake 'DESTDIR=${D}' install
+    install -m 0644 src/headers/gpm.h ${D}${includedir}
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/gpm
+    cd ${D}${libdir} && ln -sf libgpm.so.1.19.0 libgpm.so.1
+}
+SRC_URI[md5sum] = "9fdddf5f53cb11d40bb2bb671d3ac544"
+SRC_URI[sha256sum] = "6071378b24494e36ca3ef6377606e7e565040413c86704753a162d2180af32ee"
+
+FILES_${PN} += "${datadir}/emacs"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gradm/gradm/0001-Makefile-remove-strip.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/gradm/gradm/0001-Makefile-remove-strip.patch
new file mode 100644
index 0000000..f0c697c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gradm/gradm/0001-Makefile-remove-strip.patch
@@ -0,0 +1,61 @@
+From fbf7b9e5a8e2978acd5b0a7a8311912a080ee9b9 Mon Sep 17 00:00:00 2001
+From: Qian Lei <qianl.fnst@cn.fujitsu.com>
+Date: Thu, 18 Dec 2014 11:09:01 +0800
+Subject: [PATCH] Makefile: remove strip
+
+Avoid QA error by removing strip from Makefile
+
+[...]
+ERROR: QA Issue: File '/sbin/gradm' from gradm was already stripped,
+this will prevent future debugging! [already-stripped]
+ERROR: QA Issue: File '/sbin/grlearn' from gradm was already stripped,
+this will prevent future debugging! [already-stripped]
+[...]
+
+Upstream-Status: Pending
+
+Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
+
+---
+ Makefile | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 6c33fee..3570a4e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,7 +24,6 @@ MKNOD=/bin/mknod
+ #CC=/usr/bin/diet /usr/bin/gcc
+ CC=/usr/bin/gcc
+ FIND=/usr/bin/find
+-STRIP=/usr/bin/strip
+ LIBS := $(shell if [ "`uname -m`" != "sparc64" -a "`uname -m`" != "x86_64" ]; then echo "-lfl" ; else echo "" ; fi)
+ OPT_FLAGS := -O2
+ # for older versions of grsecurity, comment the above line and uncomment the below:
+@@ -140,15 +139,12 @@ install: $(GRADM_BIN) gradm.8 policy grlearn
+ 	@mkdir -p $(DESTDIR)/sbin
+ 	@echo "Installing gradm..."
+ 	@$(INSTALL) -m 0755 $(GRADM_BIN) $(DESTDIR)/sbin
+-	@$(STRIP) $(DESTDIR)/sbin/$(GRADM_BIN)
+ 	@if [ -f $(GRADM_PAM) ] ; then \
+ 		echo "Installing gradm_pam..." ; \
+		$(INSTALL) -m 4755 $(GRADM_PAM) $(DESTDIR)/sbin ; \
+-		$(STRIP) $(DESTDIR)/sbin/$(GRADM_PAM) ; \
+ 	fi
+ 	@echo "Installing grlearn..."
+ 	@$(INSTALL) -m 0700 grlearn $(DESTDIR)/sbin
+-	@$(STRIP) $(DESTDIR)/sbin/grlearn
+ 	@mkdir -p -m 700 $(DESTDIR)$(GRSEC_DIR)
+ 	@if [ ! -f $(DESTDIR)$(GRSEC_DIR)/policy ] ; then \
+ 		if [ -f $(DESTDIR)$(GRSEC_DIR)/acl ] ; then \
+@@ -168,6 +164,7 @@ install: $(GRADM_BIN) gradm.8 policy grlearn
+ 			$(MKNOD) -m 0622 $(DESTDIR)/dev/grsec c 1 13 ; \
+ 		fi \
+ 	fi
++	@mkdir -p $(DESTDIR)/etc/udev/rules.d
+ 	@if [ -d $(DESTDIR)/etc/udev/rules.d ] ; then \
+ 		echo "ACTION!=\"add|change\", GOTO=\"permissions_end\"" > $(DESTDIR)/etc/udev/rules.d/80-grsec.rules ; \
+ 		echo "KERNEL==\"grsec\",          MODE=\"0622\"" >> $(DESTDIR)/etc/udev/rules.d/80-grsec.rules ; \
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1.bb
new file mode 100644
index 0000000..252b19d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Administration program for the grsecurity RBAC syste"
+DESCRIPTION = "\
+gradm is the userspace RBAC parsing and authentication program for \
+grsecurity grsecurity aims to be a complete security system. gradm \
+performs several tasks for the RBAC system including authenticated \
+via a password to the kernel and parsing rules to be passed to the \
+kernel"
+HOMEPAGE = "http://grsecurity.net/index.php"
+SECTION = "admin"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4641e94ec96f98fabc56ff9cc48be14b"
+DEPENDS = "flex-native bison-native ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+SRC_URI = "http://grsecurity.net/stable/${BP}-201507191652.tar.gz \
+           file://0001-Makefile-remove-strip.patch"
+SRC_URI[md5sum] = "ecec72d3a9b6d84c00eda97957b707b6"
+SRC_URI[sha256sum] = "2f14c357bf0459e502a4e108b76c3f6240aa484762d07bb1687796b9b9297a50"
+
+S = "${WORKDIR}/gradm"
+
+inherit autotools-brokensep
+
+do_compile() {
+    oe_runmake 'CC=${CC}'                               \
+               'OPT_FLAGS=${CFLAGS}'                    \
+               'LLEX=${STAGING_BINDIR_NATIVE}/lex'      \
+               'FLEX=${STAGING_BINDIR_NATIVE}/flex'     \
+               'BISON=${STAGING_BINDIR_NATIVE}/bison'   \
+               ${@bb.utils.contains('DISTRO_FEATURES', 'pam', ' ', 'nopam', d)}
+}
+
+do_install() {
+    oe_runmake 'CC=${CC}'                               \
+               'DESTDIR=${D}'                           \
+               'LLEX=${STAGING_BINDIR_NATIVE}/lex'      \
+               'FLEX=${STAGING_BINDIR_NATIVE}/flex'     \
+               'BISON=${STAGING_BINDIR_NATIVE}/bison'   \
+               install
+
+    # The device nodes are generated by postinstall or udev
+    rm -rf ${D}/dev
+}
+
+pkg_postinst_${PN}() {
+    # make sure running on the target
+    if [ x"$D" != "x" ]; then
+        exit 1
+    fi
+    /bin/mknod -m 0622 /dev/grsec c 1 13
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gsl/gsl.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/gsl/gsl.inc
new file mode 100644
index 0000000..4061393
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gsl/gsl.inc
@@ -0,0 +1,9 @@
+DESCRIPTION = "GNU Scientific Library"
+HOMEPAGE = "http://www.gnu.org/software/gsl/"
+SECTION = "libs"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+inherit autotools pkgconfig binconfig
+
+LEAD_SONAME = "libgsl.so"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gsl/gsl_1.15.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/gsl/gsl_1.15.bb
new file mode 100644
index 0000000..620e780
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gsl/gsl_1.15.bb
@@ -0,0 +1,7 @@
+include gsl.inc
+
+SRC_URI = "${GNU_MIRROR}/gsl/gsl-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "494ffefd90eef4ada678c306bab4030b"
+SRC_URI[sha256sum] = "85b907e57902e2b7606ef3aef960302ffdd13bd9dc5b8fcbfa75e4f0bf340ea3"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.12.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.12.bb
new file mode 100644
index 0000000..6da08ac
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.12.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "The gSOAP toolkit provides a unique SOAP-to-C/C++ language binding \
+for the development of SOAP Web Services and clients."
+SECTION = "devel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b338b08b1b61e028e0f399a4de25e58f"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}2/${BPN}_${PV}.zip"
+SRC_URI[md5sum] = "5700d26fc6fe3073d038349e19c3640d"
+SRC_URI[sha256sum] = "51eef118544fa846f4d2dea2eedf91c84c46a1abeafc5eee3dcff783f4015a00"
+
+inherit autotools
+
+BBCLASSEXTEND = "native"
+
+PR = "r1"
+
+S = "${WORKDIR}/${BPN}-2.8"
+
+PARALLEL_MAKE = ""
+
+EXTRA_OEMAKE_class-target = "SOAP=${STAGING_BINDIR_NATIVE}/soapcpp2"
+
+DEPENDS = "openssl zlib flex bison"
+DEPENDS_append_class-target = " gsoap-native"
+
+do_install_append() {
+    install -d ${D}${libdir}
+    for lib in libgsoapssl libgsoapssl++ libgsoap libgsoapck++ libgsoap++ libgsoapck
+    do
+        oe_libinstall -C gsoap $lib ${D}${libdir}
+    done
+}
+
+do_install_class-native() {
+    oe_runmake DESTDIR=${D} BINDIR=${D}${bindir} install
+}
+
+FILES_${PN} = "${bindir}/wsdl2h ${bindir}/soapcpp2"
+FILES_${PN} += "${datadir}"
+FILES_${PN}-staticdev = "${libdir}"
+FILES_${PN}-dev = "${includedir}"
+RRECOMMENDS_${PN}-dev = "${PN}-staticdev"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp-0.3-beta15-autodetect-717479.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp-0.3-beta15-autodetect-717479.patch
new file mode 100644
index 0000000..19f8380
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp-0.3-beta15-autodetect-717479.patch
@@ -0,0 +1,90 @@
+Auto-detect disks if none specified
+
+Refer to:
+https://bugzilla.redhat.com/show_bug.cgi?id=717479
+
+diff -up hddtemp-0.3-beta15/doc/hddtemp.8~ hddtemp-0.3-beta15/doc/hddtemp.8
+--- hddtemp-0.3-beta15/doc/hddtemp.8~	2011-08-18 00:36:05.689001470 +0300
++++ hddtemp-0.3-beta15/doc/hddtemp.8	2011-08-18 00:44:46.753006253 +0300
+@@ -19,7 +19,7 @@
+ hddtemp \- Utility to monitor hard drive temperature
+ .SH SYNOPSIS
+ .B hddtemp
+-.RI [ options ] " [type:]disk" ...
++.RI [ options ] " [[type:]disk]" ...
+ .SH "DESCRIPTION"
+ .PP
+ .B hddtemp 
+@@ -35,7 +35,8 @@ You can specify one or more device drive
+ with a
+ .B type
+ like PATA, SATA or SCSI to force hddtemp too use one of these type
+-(because detection can fail).
++(because detection can fail). If no paths are specified, autodetection of
++installed drives is attempted.
+ 
+ 
+ .SH "OPTIONS"
+diff -up hddtemp-0.3-beta15/src/hddtemp.c~ hddtemp-0.3-beta15/src/hddtemp.c
+--- hddtemp-0.3-beta15/src/hddtemp.c~	2011-08-18 00:36:05.638996861 +0300
++++ hddtemp-0.3-beta15/src/hddtemp.c	2011-08-18 00:35:55.485060798 +0300
+@@ -54,6 +54,7 @@
+ #include <linux/hdreg.h>
+ #include <ctype.h>
+ #include <assert.h>
++#include <glob.h>
+ 
+ // Application specific includes
+ #include "ata.h"
+@@ -255,6 +256,7 @@ int main(int argc, char* argv[]) {
+   int 		ret = 0;
+   int           show_db;
+   struct        disk * ldisks;
++  glob_t        diskglob;
+ 
+   backtrace_sigsegv();
+   backtrace_sigill();
+@@ -419,11 +421,6 @@ int main(int argc, char* argv[]) {
+      exit(0);
+   }
+   
+-  if(argc - optind <= 0) {
+-    fprintf(stderr, _("Too few arguments: you must specify one drive, at least.\n"));
+-    exit(1);
+-  }
+-
+   if(debug) {
+     /*    argc = optind + 1;*/
+     quiet = 1;
+@@ -434,6 +431,23 @@ int main(int argc, char* argv[]) {
+     exit(1);
+   }
+ 
++  memset(&diskglob, 0, sizeof(glob_t));
++  if(argc - optind <= 0) {
++    if(glob("/dev/[hs]d[a-z]", 0, NULL, &diskglob) == 0) {
++      argc = diskglob.gl_pathc;
++      argv = diskglob.gl_pathv;
++      optind = 0;
++    } else {
++      argc = 0;
++    }
++  }
++
++  if(argc - optind <= 0) {
++    globfree(&diskglob);
++    fprintf(stderr, _("Too few arguments: you must specify one drive, at least.\n"));
++    exit(1);
++  }
++
+   init_bus_types();
+ 
+   /* collect disks informations */
+@@ -527,6 +541,7 @@ int main(int argc, char* argv[]) {
+   else {
+     do_direct_mode(ldisks);
+   }
++  globfree(&diskglob);
+ 
+   return ret;
+ }
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp-no-nls-support.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp-no-nls-support.patch
new file mode 100644
index 0000000..8f6b9c3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp-no-nls-support.patch
@@ -0,0 +1,66 @@
+diff -ru hddtemp-0.3-beta15.orig/configure.in hddtemp-0.3-beta15/configure.in
+--- hddtemp-0.3-beta15.orig/configure.in	2005-10-17 20:14:19.000000000 +0100
++++ hddtemp-0.3-beta15/configure.in	2008-06-27 00:00:46.000000000 +0100
+@@ -17,6 +17,7 @@
+ # append the host alias to the tools for cross compiling
+ AC_HEADER_STDC
+ AC_CHECK_HEADERS(fcntl.h)
++AC_CHECK_HEADERS(iconv.h)
+ AC_CHECK_HEADERS(netinet/in.h)
+ AC_CHECK_TYPE(in_addr_t, ,[AC_DEFINE_UNQUOTED([in_addr_t], [uint32_t], [Define to 'uint32_t' if <netinet/in.h> does not define.])], [#include <netinet/in.h>])
+ 
+@@ -29,6 +30,8 @@
+ AM_GNU_GETTEXT
+ #AM_GNU_GETTEXT([external])
+ 
++AC_CHECK_FUNCS([bindtextdomain textdomain iconv])
++
+ dnl reasonable guesses for where stuff is installed
+ dnl if we don't do that now, the config.h will use ${prefix}
+ dnl for DEFAULT_DATABASE_PATH.
+diff -ru hddtemp-0.3-beta15.orig/src/hddtemp.c hddtemp-0.3-beta15/src/hddtemp.c
+--- hddtemp-0.3-beta15.orig/src/hddtemp.c	2006-04-19 03:37:35.000000000 +0100
++++ hddtemp-0.3-beta15/src/hddtemp.c	2008-06-26 23:59:40.000000000 +0100
+@@ -276,8 +276,12 @@
+   backtrace_sigbus();
+ 
+   setlocale (LC_ALL, "");
++#ifdef HAVE_BINDTEXTDOMAIN
+   bindtextdomain (PACKAGE, LOCALEDIR);
++#endif
++#ifdef HAVE_TEXTDOMAIN
+   textdomain (PACKAGE);
++#endif
+   
+   show_db = debug = numeric = quiet = wakeup = af_hint = syslog_interval = 0;
+   unit = DEFAULT;
+diff -ru hddtemp-0.3-beta15.orig/src/utf8.c hddtemp-0.3-beta15/src/utf8.c
+--- hddtemp-0.3-beta15.orig/src/utf8.c	2006-04-19 03:37:02.000000000 +0100
++++ hddtemp-0.3-beta15/src/utf8.c	2008-06-27 00:02:15.000000000 +0100
+@@ -23,7 +23,9 @@
+ 
+ // Standard includes
+ #include <stdlib.h>
++#ifdef HAVE_ICONV_H
+ #include <iconv.h>
++#endif
+ #include <langinfo.h>
+ #include <locale.h>
+ #include <string.h>
+@@ -34,6 +36,7 @@
+ 
+ static char *iconv_from_utf8_to_locale(const char *string, const char* fallback_string)
+ {
++#ifdef HAVE_ICONV
+   const size_t buffer_inc = 80;	// Increment buffer size in 80 bytes step
+   const char *charset;
+   iconv_t cd;
+@@ -93,6 +96,8 @@
+   if (dest_buffer != NULL)
+     free(dest_buffer);  		// free buffer
+   free(src_buffer);			// free string
++#endif
++
+   return strdup(fallback_string); 	// and return fallback string
+ }
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp.db b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp.db
new file mode 100644
index 0000000..7b0cbd9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp.db
@@ -0,0 +1,531 @@
+#
+# Insert a regular expression for support of the model or the serie of your hard drive.
+# If you don't know what to put in the second field, put the number
+# that appears most often for your brand :o)
+# A value of zero meens that we know that the drive doesn't have
+# a temperature sensor (you can set the unit to C or F).
+#
+############################################################################
+# The following list was found at (http://www.almico.com/forumharddisks.php)
+# If your drive is in the list send me a mail.
+#
+# Manufacturer	 Model	 Size	Notes
+# FUJITSU FUJITSU MPF3102AH 10.0GB
+# FUJITSU FUJITSU MPG3204AH E 20.0GB
+# FUJITSU FUJITSU MPG3307AT 30.0GB
+# FUJITSU FUJITSU MPG3409AH 40.0GB
+# FUJITSU FUJITSU MPG3409AH EF 40.0GB
+# HITACHI HITACHI_DK23CA-10 9.8GB
+# HITACHI HITACHI_DK23CA-15 14.7GB
+# SAMSUNG SAMSUNG SV3012H 29.4GB
+# SEAGATE ST310210A 10.0GB
+# SEAGATE ST310211A 9.8GB
+# SEAGATE ST310215A 10.0GB
+# SEAGATE ST315320A 14.9GB
+# SEAGATE ST320410A 19.6GB
+# SEAGATE ST320413A 19.6GB
+# SEAGATE ST320420A 19.9GB
+# SEAGATE ST330610A 29.3GB
+# SEAGATE ST330620A 29.3GB
+# SEAGATE ST330621A 29.3GB
+# SEAGATE ST330630A 29.9GB
+# SEAGATE ST340016A 39.1GB
+# SEAGATE ST340810ACE 39.1GB
+# SEAGATE ST380020ACE 78.2GB
+# WESTERN DIGITAL WDC AC210200D 10.0GB
+# WESTERN DIGITAL WDC AC29100D 8.9GB
+# WESTERN DIGITAL WDC AC420400D 19.9GB
+# WESTERN DIGITAL WDC WD102AA 10.0GB
+#
+#################################################
+
+########################################
+############# ExcelStor drives
+########################################
+# "ExcelStor Technology CT215"	  ??? ? "ExcelStor CT215"
+"ExcelStor Technology J3.0" 194 C "ExcelStor Technology 3xy (xy GB)"
+"ExcelStor Technology J6.0" 194 C "ExcelStor Technology 6xy (xy GB)"
+"ExcelStor Technology J680" 194 C "ExcelStor Technology J680 (80 GB)"
+"ExcelStor Technology J860" 194 C "ExcelStor Technology J860 (60 GB)"
+"ExcelStor Technology J880" 194 C "ExcelStor Technology J880 (80 GB)"
+
+
+
+########################################
+############# Fujitsu drives
+########################################
+"FUJITSU MHM2100AT"		0    C	"Fujitsu MHM2100AT"
+
+"FUJITSU MHN2150AT"		194  C	"Fujitsu MHN2150AT"
+"FUJITSU MHN2200AT"		194  C	"Fujitsu MHN2200AT"
+"FUJITSU MHN2300AT"		194  C	"Fujitsu MHN2300AT"
+
+"FUJITSU MHR2020AT"		194  C	"Fujitsu MHR2020AT"
+"FUJITSU MHR2030AT"		194  C	"Fujitsu MHR2030AT"
+
+"FUJITSU MHS2030AT"		194  C	"Fujitsu MHS2030AT"
+"FUJITSU MHS2040AT"		194  C	"Fujitsu MHS2040AT"
+"FUJITSU MHS2060AT"		194  C	"Fujitsu MHS2060AT (Apple PowerBook G4)"
+
+"FUJITSU MHT2030AC"		194  C	"Fujitsu Mobile 30GB, 2MB, 4200RPM (automotive)"
+
+"FUJITSU MHT2030AT"		194  C	"Fujitsu MHT2030AT"
+"FUJITSU MHT2040AH"		194  C	"Fujitsu MHT2040AH"
+"FUJITSU MHT2040AT"		194  C	"Fujitsu MHT2040AT"
+"FUJITSU MHT2060AH"		194  C	"Fujitsu MHT2060AH"
+"FUJITSU MHT2060AT"		194  C	"Fujitsu MHT2060AT"
+"FUJITSU MHT2080AH"		194  C	"Fujitsu MHT2080AH"
+
+"FUJITSU MHU2100AT"		194  C	"Fujitsu MHU2100AT 100GB, 8MB (4200RPM)"
+
+"FUJITSU MHV2100AH"		194  C	"FUJITSU MHV2100AH" 
+"FUJITSU MHV2100AT"		194  C	"FUJITSU MHV2100AT" 
+"FUJITSU MHV2100BH"		194  C  "FUJITSU MHV2100BH" 
+"FUJITSU MHV2060AH"		194  C  "FUJITSU MHV2060AH"
+"FUJITSU MHV2080[AB]H"		194  C	"FUJITSU MHV2080AH"
+
+"FUJITSU MPF3204AH"		194  C	"Fujitsu MPF3204AH"
+
+"FUJITSU MPG3204AT.*"		194  C	"Fujitsu MPG3204AT"
+"FUJITSU MPG3307AT"		194  C	"Fujitsu MPG3307AT"
+"FUJITSU MPG3409AT.*"		194  C	"Fujitsu MPG3409AT E"
+"FUJITSU MPG3409AH.*"		194  C	"Fujitsu MPG3409AH E"
+"FUJITSU MPG3204AH"		194  C	"Fujitsu MPG3204AH"
+"FUJITSU MPG3102AT E"		194  C	"FUJITSU MPG3102AT E"
+
+
+
+########################################
+############# Hitachi drives
+########################################
+"HITACHI_DK13FA-40B"			194  C	"Hitachi DK13FA-40B"
+"HITACHI_DK228A-65"			0    C	"Hitachi DK228A-65"
+"HITACHI_DK23CA-(15|20|30|30B|75)"	194  C	"Hitachi DK23CA series"
+"HITACHI_DK23DA-[234]0"			194  C	"Hitachi DK23DA series"
+"HITACHI_DK23EA-[2346]0"		194  C	"Hitachi DK23EA series"
+"HITACHI_DK23EB-40"			194  C	"Hitachi DK23EB series"
+"HITACHI_DK23FA-[468]0"			194  C	"Hitachi DK23FA series"
+"HITACHI_DK23FB-[46]0"			194  C	"Hitachi DK23FB series"
+
+"HDS722516VLAT[28]0"		194  C	"Hitachi Deskstar 7K250 160GB 2/8MB cache"
+"HDS722525VLAT80"		194  C	"Hitachi Deskstar 7K250 200/250GB, 7200RPM, 8MB, Parallel-ATA"
+"HDS722512VLAT80"		194  C	"Hitachi Deskstar 7K250 80GB"
+"HDS722540VLAT20"		194  C	"Hitachi Deskstar 7K250, 40GB, 7200RPM, 2MB cache"
+"HDS722580VLAT20"		194  C	"Deskstar 7K250 60GB"
+"HDS724040KLSA80"		194  C	"Hitachi Deskstar 7K250 400GB, 7200RPM, 8MB, Serial-ATA"
+"HDS728080PLAT20"		194  C	"Hitachi Deskstar 7K80 80GB"
+
+"HDS722525VLSA80"		194  C	"Hitachi Deskstar 7K250 250GB, 7200RPM, 8MB, SATA"
+"HDS722516VLSA80"               194  C  "Hitachi Deskstar 7K250 160GB 8Mo cache SATA"
+"HDS722580VLSA80"		194  C	"Hitachi Deskstar 7K250 80GB SATA"
+"HDS728040PLAT20"		194  C	"Hitachi Deskstar 7K80 40GB"
+
+"HDS724040KLAT80"               194  C  "Hitachi Deskstar 7K400  400GB 8Mo cache PATA"
+
+"HDT7225(16|25)DLAT80"		194  C	"Hitachi Deskstar T7K250 series, 7200RPM, 8MB, PATA"
+"HDT722516DLA380 V43O"		194  C	"Hitachi T7K250 SATA"
+"HDT722525DLA380"               194  C  "Hitachi Deskstar T7K250 250GB 8Mo cache SATAII"
+"HDT725050VLA360"               194  C  "Hitachi Deskstar T7K500 500GB, 7200RPM, 16MB, SATA II"
+
+"HTE721010G9AT00"		194  C	"Hitachi Travelstar 100GB (7200RPM)"
+"HTE726060M9AT00"		194  C	"Hitachi Travelstar 60GB (7200RPM)"
+"HTS424030M9AT00"		194  C	"Hitachi Travelstar 30GB (4200RPM)"
+"HTS424040M9AT00"		194  C	"Hitachi Travelstar 4K40 40GB 2MB cache (4200RPM)"
+"HTS541010G9SA00"		194  C  "Hitachi Travelstar 100GB SATA"
+"HTS541040G9AT00"		194  C	"Hitachi Travelstar 40GB (5400RPM)"
+"HTS541080G9AT00"		194  C	"Hitachi Travelstar 80GB (5400RPM)"
+"HTS548020M9AT00"		194  C	"Hitachi Travelstar 20GB (5400RPM)"
+"HTS548030M9AT00"		194  C	"Hitachi Travelstar 30GB (5400RPM)"
+"HTS548040M9AT00"		194  C	"Hitachi Travelstar 40GB (5400RPM)"
+"HTS548060M9AT00"		194  C	"Hitachi Travelstar 60GB (5400RPM)"
+"HTS548080M9AT00"		194  C	"Hitachi Travelstar 80GB (5400RPM)"
+"HTS721080G9AT00"		194  C	"Hitachi Travelstar 7K100 80GB (7200RPM)"
+"HTS726060M9AT00"		194  C	"Hitachi Travelstar 60GB"
+
+
+########################################
+############# IBM drives
+########################################
+
+# DJSA serie is using F0h command to report temperature and also have
+# SMART capabilties but it was reported not to work.
+# "DJSA-2(30|32|10|20|05)"	0    C	"IBM Travelstar 20GN, 32GH, 30GT series"
+
+"IBM-DARA-212000"		0    C	"IBM Travelstar 12GN"
+"IBM-DTTA-35*"			0    C	"IBM Deskstar 16GP serie"
+
+# according to specifications they do not seems to have sensor
+# but I prefer waiting for a report
+#"IBM-DTTA-37*"			0    C	"IBM Deskstar 14GXP serie"
+
+"IBM-DJNA-35.*"			231  C	"IBM Deskstar 25 GP serie"
+"IBM-DJNA-37.*"			231  C	"IBM Deskstar 22 GXP serie"
+"IBM-DHEA-(34330|36480)"	0    C	"IBM Deskstar 5 serie"
+"IBM-DHEA-(34331|36481|38451)"	0    C	"IBM Deskstar 8 serie"
+"IBM-DPTA-37.*"			231  C	"IBM Deskstar 34GXP serie"
+"IBM-DPTA-35.*"			231  C	"IBM Deskstar 37GP serie"
+"IBM-DTLA-30[57]0[123467][05]"	194  C	"IBM Deskstar 40GV & 75GXP series"
+"IC25N0[1234]0ATCS04-0"		194  C	"IBM Travelstar 40GN serie"
+"IC25N0[24]0ATC[SX]05-0"	194  C	"IBM Travelstar 40GNX serie"
+"IC25N0(10|15|20|30)ATDA04-0"	194  C	"IBM Travelstar 30GN serie"
+"IC25N0[23468]0ATMR04*"		194  C	"Hitachi Travelstar 80GN"
+"IC25T048ATDA05-0"		194  C	"IBM Travelstar 48GH serie"
+"IC25T060ATC[SX]05-0"		194  C	"IBM Travelstar 60GH serie"
+"IC35L0[12346]0AVER07"		194  C	"IBM Deskstar 60GXP serie"
+"IC35L[01][02468]0AVV[AN]07*"	194  C	"IBM Deskstar 120GXP serie"  
+"IC35L[01][23689]0AVV207*"	194  C	"IBM Deskstar 180GXP serie"
+
+########################################
+############# Maxtor drives
+########################################
+#"Maxtor 2B0[012][04568]H1"				???  C	"Maxtor Fireball 541DX"
+"Maxtor 2F0[234]0[LJ]0"					194  C	"Maxtor Fireball 3" 
+# which one must I trust ?
+#"Maxtor 4D040H2"					9    C	"Maxtor DiamondMax D540X-4D"
+#"Maxtor 4D040H2"					0    C	"Maxtor 4D040H2"
+#"Maxtor 4D080H4"					12   C	"Maxtor DiamondMax D540X-4D"
+#"Maxtor 4D060H3"					12   C	"Maxtor DiamondMax D540X-4D"
+#"Maxtor 4D080H4"					9    C	"Maxtor DiamondMax D540X-4D"
+"MAXTOR 4K0[468]0H[234]"				194  C	"Maxtor DiamondMax D540X serie"
+"MAXTOR 4K020H1"					194  C	"Maxtor 4K020H1"
+"Maxtor 4A300J0"                                        194  C  "Maxtor MaxLine II 300GB 5400RPM"
+"Maxtor 4[RA](25|16|12|08|06)0[LJ]0"			194  C	"Maxtor DiamondMax 16"
+"Maxtor 5(1024|1369|2049|2732|3073|4098)U(2|3|4|6|8)"	0    C	"Maxtor DiamondMax Plus 40"
+"Maxtor 5A250J0"					194  C	"Maxtor MaXline II 250GB 5400RPM"
+"Maxtor 5A300J0"					194  C	"Maxtor 5A300J0"
+"Maxtor 5T0[24]0H[24]"					0    C	"Maxtor DiamondMax Plus 60"
+"Maxtor 6E0[234]0L0"					194  C	"Maxtor DiamondMax Plus 8"
+"MAXTOR 6L0[2468]0[LJ][1234]"				194  C	"Maxtor DiamondMax Plus D740X family"
+"Maxtor 6V320F0"					194  C  "Maxtor Diamond Max 10 SATA II 320 GB"
+"Maxtor 6Y(06|08|12|16|20|25)0[LPM]0"			194  C	"Maxtor DiamondMax Plus 9" 
+"Maxtor 7L300[RS]0"					194  C  "Maxtor 7L300R0 MaxLine+III 300GB 7200rpm"
+"Maxtor 7Y250[PM]0"					194  C	"Maxtor MaXLine Plus II 250GB 7200RPM"
+"Maxtor 94098U8"					11   C	"Maxtor DiamondMax 40 94098U8"
+
+#"Maxtor 6(B|L)(08|12|16|20|25|30)0[RSPM]0"		194  C	"Maxtor DiamondMax Plus 10"
+"Maxtor 6B080M0"					194  C  "Maxtor DiamondMax 10 80GB 8MB SATA"
+"Maxtor 6B120M0"					194  C  "Maxtor DiamondMax 10 120GB 8MB SATA"
+"Maxtor 6B160M0"					194  C  "Maxtor DiamondMax 10 160GB 8MB SATA"
+"Maxtor 6B160P0"					194  C  "Maxtor DiamondMax 10 160GB 8MB ATA/133"
+"Maxtor 6B200M0"					194  C  "Maxtor DiamondMax 10 200GB 8MB SATA"
+"Maxtor 6B200P0"					194  C  "Maxtor DiamondMax 10 200GB 8MB ATA/133"
+"Maxtor 6B250R0"					194  C  "Maxtor DiamondMax 10 250GB 16MB ATA/133"
+"Maxtor 6B250S0"					194  C  "Maxtor DiamondMax 10 250GB 16MB SATA"
+"Maxtor 6B300R0"					194  C  "Maxtor DiamondMax 10 300GB 16MB ATA/133"
+"Maxtor 6B300S0"					194  C  "Maxtor DiamondMax 10 300GB 16MB SATA"
+"Maxtor 6L080L0"					194  C  "Maxtor DiamondMax 10 80GB 2MB ATA/133 RoHS"
+"Maxtor 6L080M0"					194  C  "Maxtor DiamondMax 10 80GB 8MB SATA RoHS"
+"Maxtor 6L080P0"					194  C  "Maxtor DiamondMax 10 80GB 8MB ATA/133 RoHS"
+"Maxtor 6L120M0"					194  C  "Maxtor DiamondMax 10 120GB 8MB SATA RoHS"
+"Maxtor 6L120P0"					194  C  "Maxtor DiamondMax 10 120GB 8MB ATA/133 RoHS"
+"Maxtor 6L160M0"					194  C  "Maxtor DiamondMax 10 160GB 8MB SATA RoHS"
+"Maxtor 6L160P0"					194  C  "Maxtor DiamondMax 10 160GB 8MB ATA/133 RoHS"
+"Maxtor 6L200M0"					194  C  "Maxtor DiamondMax 10 200GB 8MB SATA RoHS"
+"Maxtor 6L200P0"					194  C  "Maxtor DiamondMax 10 200GB 8MB ATA/133 RoHS"
+"Maxtor 6L250R0"					194  C  "Maxtor DiamondMax 10 250GB 16MB ATA/133 RoHS"
+"Maxtor 6L250S0"					194  C  "Maxtor DiamondMax 10 250GB 16MB SATA RoHS"
+"Maxtor 6L300R0"					194  C  "Maxtor DiamondMax 10 300GB 16MB ATA/133 RoHS"
+"Maxtor 6L300S0"					194  C  "Maxtor DiamondMax 10 300GB 16MB SATA RoHS"
+"Maxtor 6V080E0"					194  C  "Maxtor DiamondMax 10 80GB 8MB SATAII RoHS"
+"Maxtor 6V160E0"					194  C  "Maxtor DiamondMax 10 160GB 8MB SATAII RoHS"
+"Maxtor 6V200E0"					194  C  "Maxtor DiamondMax 10 200GB 8MB SATAII RoHS"
+"Maxtor 6V250F0"					194  C  "Maxtor DiamondMax 10 250GB 16MB SATAII RoHS"
+"Maxtor 6V300F0"					194  C  "Maxtor DiamondMax 10 300GB 16MB SATAII RoHS"
+
+
+
+########################################
+############# Quantum drives
+########################################
+"QUANTUM FIREBALLP AS40.0"		0  C  "Quantum Fireball AS40"
+"QUANTUM FIREBALL CX10.2A"		0  C  "Quantum Fireball CX10.2A"
+#"QUANTUM FIREBALLlct10 20"		4  C  "Quantum Fireball CT10 20GB"
+# I suspect the QUANTUM FIREBALL_TM2110A to have a sensor in field 9...
+# "QUANTUM FIREBALL_TM2110A"		9  C  "Quantum Fireball TM2110A"
+
+
+
+########################################
+############# Samsung drives
+########################################
+# somenone reported a problem with the SP8004H which reports a temperature
+# 10°C below the ambient temperature
+"SAMSUNG HA(200|250)JC"					194  C	"Samsung SpinPoint V120CE series"
+"SAMSUNG HD160JJ"                                       194  C  "Samsung 160GB, 7200RPM, 8MB cache, SATA" 
+"SAMSUNG HD160JJ/P"					194  C	"Samsung SpinPoint P80 SD 160GB (7200RPM, 8MB cache)"
+"SAMSUNG HD[30|32|40][01]L[DJ]"                         194  C  "Samsung SpinPoint T133 series (300-400MB)"
+"SAMSUNG HD250KD"                                       194  C  "Samsung SpinPoint T133 series (250 MB PATA)"
+"SAMSUNG HD321KJ"					194  C  "Samsung Spinpoint T166 (7200RPM, 16MB cache) - SATA"
+"SAMSUNG HD501LJ"					194  C  "Samsung HD501LJ"
+"SAMSUNG MP0(302|402|603|804)H"				194  C	"Samsung SpinPoint M40 2.5inch"
+"SAMSUNG SW0434A"					0    C	"Samsung SW0434A"
+"SAMSUNG SP(2001|4002|6003|8004|40A2)H"			194  C	"Samsung SpinPoint P40 serie"
+"SAMSUNG SP(0612|0802|1203|1604|0812|1213|1614)N"	194  C	"Samsung SpinPoint P80 serie"
+"SAMSUNG SP(0612|0802|1203|1604|0812|1213|1614)C"	194  C	"Samsung SpinPoint P80 series - SATA"
+"SAMSUNG SP0411N"					194  C	"Samsung SpinPoint PL40 serie"
+"SAMSUNG SP0822N"					194  C	"Samsung SP0822N"
+"SAMSUNG SP(0812|1213|1614)C"				194  C	"Samsung Spinpoint 160G SATA"
+"SAMSUNG SP2[05]14N"					194  C	"Samsung SpinPoint P120 series (7200RPM, 8MB cache)"
+"SAMSUNG SP2[05]04C"					194  C	"Samsung SpinPoint P120 series - SATA"
+"SAMSUNG SV0432A"					0    C	"Samsung SV0432A"
+"SAMSUNG SV3002H"					0    C	"Samsung SpinPoint V30 serie"
+"SAMSUNG SV(2001|4002|4012|6003|8004)H"			194  C	"Samsung SpinPoint V40 serie"
+#"SAMSUNG SV(0221|0602|0813|1204)H"			9    C	"Samsung SpinPoint V60 serie"
+#"SAMSUNG SV1204H"					194  C	"Samsung 120G"
+"SAMSUNG SV(0401|0802|1203|1604)N"			194  C	"Samsung SpinPoint V80 serie"
+"SAMSUNG SV4012H"					194  C	"Samsung 40GB, 5400RPM, 2MB cache"
+
+########################################
+############# Seagate drives
+########################################
+"Seagate Technology 1275MB - ST31276A"	0    C	"Seagate ST31276A"
+"ST3412A"				0    C	"Seagate ST3412A"
+"ST38641A"				0    C	"Seagate ST38641A"
+"ST310014A"				194  C	"Seagate ST310014A"
+"ST310210A"				0    C	"Seagate ST310210A"
+"ST310211A"				194  C	"Seagate ST310211A"
+"ST310220A"				0    C	"Seagate ST310220A"
+# SEAGATE ST313021A 13.0GB
+"ST313021A"				0    C	"Seagate U8 ST313021A"
+"ST310240A"				0    C	"Seagate Medalist 10240 Ultra ATA-3"
+"ST315320A"				194  C	"Seagate ST315320A"
+"ST320423A"				0    C	"Seagate U10 20423, Ultra ATA/66"
+"ST320011A"				194  C	"Seagate ST320011A"
+"ST320014A"				194  C	"Seagate ST320014A (5400 rpm, 20Gb)"
+"ST320410A"				194  C	"Seagate ST320410A"
+"ST320413A"				194  C	"Seagate ST320413A"
+"ST320414A"				194  C	"Seagate ST320414A"
+"ST320420A"				194  C	"Seagate Barracuda II ST320420A"
+"ST330013A"				194  C	"Seagate ST330013A Barracuda ATA V 30GB, 7200 rpm"
+"ST330620A"				194  C	"Seagate ST330620A"
+"ST330621A"				194  C	"Seagate ST330621A"
+"ST330630A"				194  C	"Seagate Barracuda ST330630A"
+"ST340014A"				194  C	"Seagate Barracuda 7200.7 40Gb"
+"ST340015A"				194  C	"Seagate Barracuda 5400.1 40GB" 
+"ST340016A"				194  C	"Seagate ST340016A"
+"ST340810A"				194  C	"Seagate U Series 40810 (40Gb, Ultra ATA/100, 5400 rpm)"
+"ST340823A"				194  C	"Seagate U Series 5 40823"
+"ST340824A"				194  C	"Seagate Barracuda III"
+"ST360015A"				194  C	"Seagate Barracuda V ST360015A"
+"ST360020A"				194  C	"Seagate U Series 60020"
+"ST360021A"				194  C	"Seagate Barracuda IV ST360021A"
+"ST380011A"				194  C	"Seagate Barracuda 7200.7 80GB"
+"ST380012A"				194  C	"Seagate ST380012A 80GB"
+"ST380013A"				194  C	"Seagate Barracuda 7200.7 80GB" 
+"ST380013AS"				194  C	"Seagate Barracuda 7200.7 80GB (Serial ATA)"
+"ST380020A"				194  C	"Seagate U Series 80020 (80Gb, Ultra ATA/100, 5400 rpm)"
+"ST380021A"				194  C	"Seagate Barracuda IV ST380021A"
+"ST380022A"				194  C	"Seagate Barracuda U7 80022, Ultra ATA/100"
+"ST380023A"				194  C	"Seagate Barracuda V ST380023A"
+"ST380817AS"				194  C	"Seagate Barracuda 7200.7 80GB - SATA"
+"ST39111A"				194  C	"Seagate ST39111A (from Sun Ultra)"
+"ST3120020A"				194  C	"Seagate ST3120020A"
+"ST3120022A"				194  C	"Seagate Baraccuda 7200.7 120GB"
+"ST3120023A"				194  C	"Seagate Barracuda V ST3120023A"
+"ST3120024A"				194  C	"Seagate Barracuda V ST3120024A"
+"ST3120025ACE"				194  C	"Seagate Barracuda V ST3120025ACE"
+"ST3120026A"				194  C	"Seagate Barracuda V ST3120026A"
+"ST3160021A"				194  C	"Seagate Barracuda 7200.7 - ST3160021A"
+"ST3160023(A|AS)"			194  C	"Seagate Barracuda V ST3160023A and AS (160Gb, ATA100 or Serial ATA)"
+"ST316081[12](A|AS)"			194  C  "Seagate Barracuda 7200.9 160GB" 
+"ST3160827AS"				194  C	"Seagate Barracuda 7200.7 160GB (Serial ATA)" 
+"ST3200021A"				194  C	"Seagate Barracuda 7200.7 Plus 200GB"
+"ST3200822(A|AS)"			194  C	"Seagate Barracuda 7200.7 Plus 200GB (PATA or SATA)"
+"ST3200826A"				194  C	"Seagate Barracuda 7200.8 200GB"
+"ST3250623A"				194  C	"Seagate Barracuda 7200.16 250GB"
+"ST3250624AS"				194  C  "Seagate Barracuda 7200.9 250GB SATA"
+"ST3250624NS"				194  C  "Seagate NL35 SATA (RAID-Edition) 7200 250GB"
+"ST3250823A"				194  C	"Seagate Barracuda 7200.8 250GB"
+"ST3250823A"				194  C	"Seagate Barracuda 7200.7 Plus 250GB"
+"ST3250823NS"				194  C	"Seagate NL35 SATA (RAID-Edition) 7200 250GB"
+"ST3300831A"				194  C	"Seagate 300GB ST3300831A"
+"ST3400832A"				194  C	"Seagate Barracuda 7200.8 Plus 400GB"
+"ST3400633(A|AS)"                       194  C  "Seagate Barracuda 7200.7 400 GB"
+"ST3500630NS"				194  C  "Seagate"
+"ST3400632NS"				194  C	"Seagate"
+"ST380[28]110(A|AS)"				194  C	"Seagate Barracuda 7200.9 80 GB"
+"ST910021A"				194  C	"Seagate Momentus 7200.1 100GB" 
+"ST910082[35]A"				194  C	"Seagate Momentus 5400.2 100GB"
+"ST9120821A"				194  C	"Seagate Momentus 5400.2 120GB"
+"ST94019A"				194  C	"Seagate ST94019A"
+"ST94813A"				194  C	"Seagate Momentus 5400.2 40GB"
+"ST94[08]11A"				194  C	"Seagate ST94011A"
+"ST960821A"				194  C	"Seagate ST960821A"
+"ST960822A"				194  C	"Seagate Momentus 5400.2 60GB"
+"ST96812AS"				194  C	"Seagate Momentus 5400.2 60GB SATA"
+"ST9808211A"				194  C	"Seagate Momentus 5400.2 80GB"
+"ST98823AS"				194  C  "Seagate Momentus 5400.2 80GB SATA"
+
+########################################
+############# TOSHIBA Laptops
+########################################
+"MK4313MAT"				220  C	"Toshiba MK4313MAT"
+"TOSHIBA MK1032GAX"			194  C	"Toshiba MK1032GAX"
+"TOSHIBA MK1032GSX"			194  C  "Toshiba MK1032GSX"
+"TOSHIBA MK1517GAP"			0    C	"Toshiba MK1517GAP"
+"TOSHIBA MK2018GAS"			226  F	"Toshiba MK2018GAS"
+"TOSHIBA MK2023GAS"			194  C	"Toshiba MK2023GAS"
+
+"TOSHIBA MK3017GAP"			0    C	"Toshiba MK3017GAP"
+"TOSHIBA MK3021GAS"			194  C	"Toshiba MK3021GAS"
+"TOSHIBA MK3025GAS"			194  C	"Toshiba MK3025GAS" 
+
+#"TOSHIBA MK4019GAX"			222  C	"Toshiba MK4019GAX"
+"TOSHIBA MK4021GAS"			194  C	"Toshiba MK4021GAS"
+"TOSHIBA MK4025GAS"			194  C	"Toshiba MK4025GAS 40 Go"
+"TOSHIBA MK4026GAS"			194  C	"Toshiba MK4026GAS 40 Go"
+"TOSHIBA MK4032GAX"			194  C	"Toshiba MK4032GAX" 
+
+"TOSHIBA MK6021GAS"			194  C	"Toshiba MK6021GAS"
+"TOSHIBA MK6022GAX"			194  C	"Toshiba MK6022GAX"
+"TOSHIBA MK6025GAS"			194  C	"Toshiba MK6025GAS"
+"TOSHIBA MK6026GAX"			194  C	"Toshiba MK6026GAX" 
+"TOSHIBA MK8025GAS"			194  C	"Toshiba MK8025GAS"
+"TOSHIBA MK8026GAX"			194  C	"Toshiba MK8026GAX" 
+"TOSHIBA MK8032GSX"			194  C  "Toshiba MK8032GSX" 
+
+"MK4025GAS"				194  C	"Toshiba MK4025GAS"
+
+
+########################################
+############# Western Digital drives
+########################################
+# WDC AC310100B and WDC AC2850F are reported not working
+# no more informations were given
+"WDC AC22000L"							  0 C "Western Digital Caviar AC22000"
+"WDC AC420400D"							231 C "Western Digital Caviar AC420400D"
+"WDC AC418000D"							231 C "Western Digital AC418000D"
+"WDC WD135BA"							231 C "Western Digital WD135BA"
+
+"WDC WD100EB-00BHF0"						  0 C "Western Digital 100EB-00BHF0"
+"WDC WD200BB-00AUA1"						  0 C "Western Digital Caviar WD200BB"
+#"WDC WD200BB-60DGA0"						  0 C "Western Digital Caviar WD200BB"
+"WDC WD300BB-00CAA0"						  0 C "Western Digital WD300BB"
+"WDC WD360GD-00FNA0"						194 C "Western Digital SATA Raptor 36.7GB"
+"WDC WD400BB-00CAA0"						  0 C "Western Digital 400BB-00CAA0"
+"WDC WD400BB-00[DJ][KH]A0"					194 C "Western Digital Caviar WD400BB"
+"WDC WD400BB-23JHC0"						194 C "Western Digital 23JHC0"
+#"WDC WD400BB-00GFA0"						  0 C ""
+"WDC WD400BB-55HEA0"						194 C "Western Digital Caviar WD400BB"
+"WDC WD400BB-(18CA|00DE)A0"					  0 C "Western Digital Caviar WD400BB"
+"WDC WD400BB-75FJA1"						194 C "Western Digital Caviar WD400BB"
+"WDC WD400EB-00CPF0"						  0 C "Western Digital 400EB-00CPF0"
+"WDC WD400JB-00(JJ|FM|FS)A0"					194 C "Western Digital Caviar 40GB Special Edition 8MB"
+"WDC WD400JB-00ETA0"						194 C "Western Digital 400JB-00ETA0"
+"WDC WD400JB-00JJC0"						194 C "Western Digital 400JB-00JJC0 40GB"
+"WDC WD400LB-00DNA0"						194 C "Western Digital 400LB-00DNA0"
+"WDC WD400UE-22HCT0"						194 C "Western Digital 40GB Notebook HDD"
+"WDC WD400VE-75HDT1"						194 C "Western Digital Scorpio 40GB"
+"WDC WD600BB-32BSA0"						  0 C "Western Digital 600BB-32BSA0"
+"WDC WD600JB-00ETA0"						194 C "Western Digital 600JB-00ETA0"
+"WDC WD600LB-00DNA0"						194 C "Western Digital 60GB"
+"WDC WD600VE-75HDT0"						194 C "Western Digital 600VE-75HDT0"
+"WDC WD600VE-00HDT0"						194 C "Western Digital 600VE-00HDT0"
+"WDC WD740GD-00FL21.0"						194 C "Western Digital SATA Raptor"
+"WDC WD740GD-([05]0FL[AC][01]|75FLA1)"				194 C "Western Digital SATA Raptor 74GB 8MB"
+"WDC WD800BB-00CAA1"						  0 C "Western Digital WD800BB-00CAA1"
+"WDC WD800BB-(00|22)DKA0"					194 C "Western Digital WD800BB 80 Go"
+"WDC WD800BB-32CCB0"						194 C "Western Digital 800BB-32CCB0"
+"WDC WD800BB-55HEA0"						194 C "Western Digital 800BB-55HEA0"
+"WDC WD800BB-00JHA0"						194 C "Western Digital 800BB-00JHA0" 
+"WDC WD800BB-00JKA0"						194 C "Western Digital 800BB-00JKA0" 
+"WDC WD800BB-55JKA0"						194 C "Western Digital 800BB-55JKA0" 
+"WDC WD800BB-75FRA0"						194 C "Western Digital Caviar WD800BB"				
+"WDC WD800JB-00CRA1"						  0 C "Western Digital Caviar WD800JB"
+"WDC WD800JB-00(ET|FM|FS)A0"					194 C "Western Digital Caviar 80GB Special Edition 8MB"
+"WDC WD800JB-00JJ[AC]0"						194 C "Western Digital WD800JB"
+"WDC WD800JD-(00|55|75)(HK|JR|JN)[AC]0"				194 C "Western Digital SATA 80GB, 8MB Cache"
+"WDC WD800LB-(00|55)DNA0"					194 C "Western Digital Caviar WD800LB 80 Go ATA-100"
+"WDC WD800VE-07HDT0"						194 C "Western Digital 800VE-07HDT0"
+"WDC WD1200BB-00(FTA|GUA)0"					194 C "Western Digital Caviar EIDE 2MB Cache"
+"WDC WD1200JB-00(EV|FU|GV|RE)A0"				194 C "Western Digital Caviar 120GB Special Edition 8MB" 
+"WDC WD1200JB-22GVA0"						194 C "Western Digital Caviar 120GB"
+"WDC WD1200JD-00(FYB|GBB|HBC)0"					194 C "Western Digital WD1200JD"
+"WDC WD1200LB-55EDA0"						194 C "Western Digital WD1220LB"
+"WDC WD1200SB-01KB[AC]0"					194 C "Western Digital Caviar RE (Raid Edition) 120 GB"
+"WDC WD1600BB-00DWA0"						194 C "Western Digital Caviar WD1600BB"
+"WDC WD1600JB-(00EV|00FU|00GV|22GV|75GV)A0"			194 C "Western Digital Caviar 160GB Special Edition 8MB"
+"WDC WD2000BB-00FTA0"						194 C "Western Digital WD2000BB"
+"WDC WD2000JB-(00EV|32EV|34EV|00FU|00GV|55GV|98GV|00KF)A0"	194 C "Western Digital Caviar 200GB Special Edition 8MB"
+"WDC WD2000JB-00GVC0"						194 C "Western Digital WD2000JB"
+"WDC WD2000JD-00FYB0"						194 C "Western Digital WD2000JD"
+"WDC WD2000JS-00MHB1"						194 C "Western Digital SATA 200GB"
+"WDC WD2500JB-(00RE|00EV|00FU|32FU|00GV|55GV)A0"		194 C "Western Digital Caviar 250GB Special Edition 8MB"
+"WDC WD2500JB-00GVC0"						194 C "Western Digital 250GB"
+"WDC WD2500JD-(00G|32H|75H)BB0"					194 C "Western Digital SATA Caviar 250GB Special Edition 8MB"
+"WDC WD2500JD-40HBC0"						194 C "Western Digital WD2500JD-40HBC0" 
+"WDC WD2500PB-98FBA0"						194 C "Western Digital Caviar 250GB Special Edition 8MB"
+"WDC WD2500PD-00FZB1"						194 C "Western Digital WD2500PD-00FZB1" 
+"WDC WD2500SD-01KCB0"						194 C "Western Digital Caviar RE 250GB 8MB"
+"WDC WD3000JB-00KFA0"						194 C "Western Digital WD3000JB"
+"WDC WD3200JB-00KFA0"						194 C "Western Digital Caviar 320GB 8MB"
+"WDC WD4000KD-00NAB0"						194 C "Western Digital Caviar SE16 400GB 16MB"
+"WDC WD4000YR-01PLB0"						194 C "Western Digital Caviar RE2 400GB 16MB"
+"WD4000YS-01MPB0"						194  C  "Western Digital RE2 7200 SATA II 400 GB"
+
+# not sure for next
+# "WDC WD1200JB-00CRA1"		9   C "Western Digital 1200JB-00CRA1"
+# "WDC WD273BA"			9   C "Western Digital WD273BA"
+
+
+
+
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+########################################################################################################################
+
+"ST3750640AS"                           194    C  "Seagate Barracuda 7200.10 SATA 750GB"
+"ST3750840AS"                           194    C  "Seagate Barracuda 7200.10 SATA 750GB"
+"ST3500630AS"                           194    C  "Seagate Barracuda 7200.10 SATA 500GB"
+"ST3500830AS"                           194    C  "Seagate Barracuda 7200.10 SATA 500GB"
+"ST3400620AS"                           194    C  "Seagate Barracuda 7200.10 SATA 400GB"
+"ST3400620A"                            194    C  "Seagate Barracuda 7200.10 400GB"
+"ST3400820AS"                           194    C  "Seagate Barracuda 7200.10 SATA 400GB"
+"ST3320620AS"                           194    C  "Seagate Barracuda 7200.10 SATA 320GB"
+"ST3320820AS"                           194    C  "Seagate Barracuda 7200.10 SATA 320GB"
+"ST3300620AS"                           194    C  "Seagate Barracuda 7200.10 SATA 300GB"
+"ST3300820AS"                           194    C  "Seagate Barracuda 7200.10 SATA 300GB"
+"ST3250620AS"                           194    C  "Seagate Barracuda 7200.10 SATA 250GB"
+"ST3250820AS"                           194    C  "Seagate Barracuda 7200.10 SATA 250GB"
+"ST3250410AS"                           194    C  "Seagate Barracuda 7200.10 SATA 250GB"
+"ST3250310AS"                           194    C  "Seagate Barracuda 7200.10 SATA 250GB"
+"ST3200820AS"                           194    C  "Seagate Barracuda 7200.10 SATA 200GB"
+"ST3160815AS"                           194    C  "Seagate Barracuda 7200.10 SATA 160GB"
+"ST3160215AS"                           194    C  "Seagate Barracuda 7200.10 SATA 160GB"
+"ST3120815AS"                           194    C  "Seagate Barracuda 7200.10 SATA 120GB"
+"ST3120215AS"                           194    C  "Seagate Barracuda 7200.10 SATA 120GB"
+"ST380815AS"                            194    C  "Seagate Barracuda 7200.10 SATA 80GB"
+"ST380215AS"                            194    C  "Seagate Barracuda 7200.10 SATA 80GB"
+"ST340815AS"                            194    C  "Seagate Barracuda 7200.10 SATA 40GB"
+"ST340215AS"                            194    C  "Seagate Barracuda 7200.10 SATA 40GB"
+"ST3300622AS"				194  C  "Seagate Barracuda 7200.9 SATA2.5 300GB"
+"ST3300831A"				194  C	"Seagate Barracuda 7200.8 PATA 300GB"
+
+"Maxtor 7(L|V)250(F|R|S)0"		194 C "Maxtor MaXLine III 250GB 7200rpm"
+"Maxtor 7(L|V)300(F|R|S)0"		194 C "Maxtor MaXLine III 300GB 7200rpm"
+"MAXTOR STM3320620AS"			194 C ""
+
+"WDC WD1500ADFD-00NLR[01]"                                         194 C "Western Digital Raptor 150GB"
+"WDC WD1600JS-00NCB1"						194 C "Western Digital Caviar 1600JS 160GB Sata"
+"WDC WD1600SD-01KCC0"						194 C "Western Digital Caviar RE Serial ATA series"
+"WDC WD2500JD-57HBC0"                                           194 C "Western Digital Caviar SE (Serial ATA) 250 GB"
+"WDC WD2500JS"							194 C "Western Digital WD2500JS"
+"WDC WD2500JS-41MVB1"						194 C "Western Digital SATAII Caviar 250GB Special Edition 8MB"
+"WDC WD2500JD-00HBB0"						194 C   "Western Digital SATA 250GB" 
+"WDC WD2500KS-00MJB0"						194 C "Western Digital SATA-II Caviar 250GB Special Edition 16MB"
+"WDC WD2500YD-01NVB1"						194 C "Western Digital Caviar RE 250GB 16MB"
+"WDC WD3000JS-00PDB0"						194 C "Western Digital WD3000JS"
+"WDC WD3200KS-00PFB0"						194 C "Western Digital Caviar 320GB 16MB"
+"WDC WD3200JD-22KLB0"                                           194 C "Western Digital Caviar SE 320GB 8MB" 
+"WDC WD3200SD-01KNB0"						194 C "Western Digital Caviar RE 320GB SATA 8MB"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp_0.3-beta15-52.diff b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp_0.3-beta15-52.diff
new file mode 100644
index 0000000..f61c164
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/hddtemp_0.3-beta15-52.diff
@@ -0,0 +1,2256 @@
+Megapatch from debian
+
+Original URL: http://ftp.debian.org/debian/pool/main/h/hddtemp/hddtemp_0.3-beta15-52.diff.gz
+
+Filtered with:
+  filterdiff -p1 -x README -x 'debian/*'
+
+
+Upstream-Status: unmaintained
+
+--- hddtemp-0.3-beta15.orig/doc/hddtemp.8
++++ hddtemp-0.3-beta15/doc/hddtemp.8
+@@ -58,6 +58,10 @@
+ .B \-f, \-\-file=\fIfile\fI
+ Specify the database file to use.
+ .TP
++.B \-F, \-\-foreground
++Don't fork into the background even in daemon mode.  This is useful
++when running under a process supervisor.
++.TP
+ .B \-l, \-\-listen=\fIaddr\fR
+ Listen on a specific address.  \fIaddr\fR is a string containing a
+ host name or a numeric host address string.  The numeric host address
+@@ -80,6 +84,9 @@
+ .B \-q, \-\-quiet
+ Don't check if the drive is supported.
+ .TP
++.B \-u, \-\-unit=\fIC|F\fR
++Force output temperature either in Celsius or Fahrenheit.
++.TP
+ .B \-v, \-\-version
+ Display hddtemp version number.
+ .TP
+@@ -96,7 +103,7 @@
+ .SH "DRIVE DATABASE"
+ If you know your drive has a temperature sensor but it is being
+ reported unsupported, tell me which model and which manufacturer it
+-is, and/or just add a new entry in /usr/share/misc/hddtemp.db.  Each
++is, and/or just add a new entry in /etc/hddtemp.db.  Each
+ line of hddtemp.db is either a comment, a blank line or a line
+ containing:
+ .TP
+@@ -112,7 +119,7 @@
+ Feedback is welcome (see the REPORT section below).
+ 
+ .SH "TCP/IP DAEMON MODE"
+-Exemple of type forcing:
++Example of type forcing:
+ .PP
+ # hddtemp SATA:/dev/sda PATA:/dev/hda
+ .PP
+@@ -120,7 +127,7 @@
+ .B hddtemp
+ in daemon mode, start it like this:
+ .PP
+-# hddtemp -d /dev/hd[abcd]
++# hddtemp \-d /dev/hd[abcd]
+ .PP
+ .PP
+ and use
+@@ -165,8 +172,8 @@
+ investigation they do not.  But fields 194 (which is the standard
+ field for temperature) and 231 are good candidates.
+ .PP
+-Then, you can send me a report with outputs from `hddtemp --debug ...',
+-`smartctl' or `hdparm -i ...', and/or add an entry in hddtemp.db
++Then, you can send me a report with outputs from `hddtemp \-\-debug ...',
++`smartctl' or `hdparm \-i ...', and/or add an entry in hddtemp.db
+ yourself.
+ 
+ .SH "BUGS"
+@@ -183,5 +190,5 @@
+ .PP
+ Emmanuel Varagnat (hddtemp@guzu.net).
+ .PP
+-This manual page was originaly written by Aurelien Jarno <aurel32@debian.org>,
++This manual page was originally written by Aurelien Jarno <aurel32@debian.org>,
+ for the Debian GNU/Linux system (but may be used by others).
+--- hddtemp-0.3-beta15.orig/po/fr.po
++++ hddtemp-0.3-beta15/po/fr.po
+@@ -7,9 +7,9 @@
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: fr\n"
+-"Report-Msgid-Bugs-To: hddtemp@guzu.net\n"
+-"POT-Creation-Date: 2005-02-25 22:43+0100\n"
+-"PO-Revision-Date: 2003-06-03 00:58GMT+1\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2006-06-29 16:24+0200\n"
++"PO-Revision-Date: 2011-08-30 16:38+0200\n"
+ "Last-Translator: Aurelien Jarno <aurelien@aurel32.net>\n"
+ "Language-Team: FRANCAIS <fr@li.org>\n"
+ "MIME-Version: 1.0\n"
+@@ -17,23 +17,7 @@
+ "Content-Transfer-Encoding: 8bit\n"
+ "X-Generator: KBabel 1.0.1\n"
+ 
+-#: src/hddtemp.c:112
+-#, c-format
+-msgid ""
+-"\n"
+-"Regexp%s| Value | Description\n"
+-"------%s---------------------\n"
+-msgstr ""
+-"\n"
+-"Regexp%s| Valeur | Description\n"
+-"------%s----------------------\n"
+-
+-#: src/hddtemp.c:118
+-#, c-format
+-msgid "%s%s| %5d | %s\n"
+-msgstr "%s%s|  %5d | %s\n"
+-
+-#: src/hddtemp.c:161
++#: src/hddtemp.c:156
+ #, c-format
+ msgid ""
+ "\n"
+@@ -46,7 +30,7 @@
+ "Modèle: %s\n"
+ "\n"
+ 
+-#: src/hddtemp.c:188
++#: src/hddtemp.c:189
+ #, c-format
+ msgid ""
+ "WARNING: Drive %s doesn't seem to have a temperature sensor.\n"
+@@ -60,75 +44,60 @@
+ "net).\n"
+ "ATTENTION : Voir les options --help, --debug et --drivebase.\n"
+ 
+-#: src/hddtemp.c:192
++#: src/hddtemp.c:197
+ #, c-format
+ msgid "%s: %s:  no sensor\n"
+ msgstr "%s: %s :  pas de capteur\n"
+ 
+-#: src/hddtemp.c:197
+-#, c-format
+-msgid ""
+-"WARNING: Drive %s doesn't appear in the database of supported drives\n"
+-"WARNING: But using a common value, it reports something.\n"
+-"WARNING: Note that the temperature shown could be wrong.\n"
+-"WARNING: See --help, --debug and --drivebase options.\n"
+-"WARNING: And don't forget you can add your drive to hddtemp.db\n"
+-msgstr ""
+-"ATTENTION : Le lecteur %s n'apparait pas dans la base de données des "
+-"lecteurs supportés\n"
+-"ATTENTION : Mais en utilisant une valeur courante, il renvoie quelque "
+-"chose.\n"
+-"ATTENTION : Notez que la température renvoyée peut être erronée.\n"
+-"ATTENTION : Voir les options --help, --debug et --drivebase.\n"
+-"ATTENTION : Et n'oubliez pas d'ajouter votre lecteur au fichier hddtemp.db\n"
+-
+-#: src/hddtemp.c:202
++#: src/hddtemp.c:211
+ #, c-format
+ msgid "%s: %s:  %d%sC or %sF\n"
+ msgstr "%s: %s :  %d%sC ou %sF\n"
+ 
+-#: src/hddtemp.c:214
++#: src/hddtemp.c:235
+ #, c-format
+ msgid "%s: %s: drive is sleeping\n"
+ msgstr "%s: %s : le lecteur est en veille\n"
+ 
+-#: src/hddtemp.c:217
++#: src/hddtemp.c:242
+ #, c-format
+-msgid "%s: %s:  known drive, but it doesn't have a temperature sensor.\n"
++msgid "%s: %s:  drive supported, but it doesn't have a temperature sensor.\n"
+ msgstr ""
+ "%s: %s:  lecteur connu, mais il ne possède pas de capteur de température.\n"
+ 
+-#: src/hddtemp.c:220
++#: src/hddtemp.c:246
+ #, c-format
+ msgid "ERROR: %s: %s: unknown returned status\n"
+ msgstr "ERREUR : %s : %s : status inconnu\n"
+ 
+-#: src/hddtemp.c:235
++#: src/hddtemp.c:261
+ #, c-format
+ msgid ""
+ "\n"
+ "If one of the field value seems to match the temperature, be sure to read\n"
+-"the hddtemp man page before sending me a report (section REPORT). Thanks.\n"
++"the hddtemp man page before sending a report (section REPORT). Thanks.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:308
++#: src/hddtemp.c:338
+ #, c-format
+ msgid "ERROR: invalid separator.\n"
+ msgstr "ERREUR : séparateur invalide.\n"
+ 
+-#: src/hddtemp.c:319
++#: src/hddtemp.c:349
+ #, c-format
+ msgid "ERROR: invalid port number.\n"
+ msgstr "ERREUR : numéro de port invalide.\n"
+ 
+-#: src/hddtemp.c:329
+-#, fuzzy, c-format
++#: src/hddtemp.c:371
++#, c-format
+ msgid ""
+-" Usage: hddtemp [OPTIONS] DISK1 [DISK2]...\n"
++" Usage: hddtemp [OPTIONS] [TYPE:]DISK1 [[TYPE:]DISK2]...\n"
+ "\n"
+ "   hddtemp displays the temperature of drives supplied in argument.\n"
+ "   Drives must support S.M.A.R.T.\n"
+ "\n"
++"  TYPE could be SATA, PATA or SCSI. If omitted hddtemp will try to guess.\n"
++"\n"
+ "  -b   --drivebase   :  display database file content that allow hddtemp to\n"
+ "                        recognize supported drives.\n"
+ "  -D   --debug       :  display various S.M.A.R.T. fields and their values.\n"
+@@ -138,6 +107,7 @@
+ "  -d   --daemon      :  run hddtemp in TCP/IP daemon mode (port %d by "
+ "default.)\n"
+ "  -f   --file=FILE   :  specify database file to use.\n"
++"  -F   --foreground  :  don't daemonize, stay in foreground.\n"
+ "  -l   --listen=addr :  listen on a specific interface (in TCP/IP daemon "
+ "mode).\n"
+ "  -n   --numeric     :  print only the temperature.\n"
+@@ -145,6 +115,8 @@
+ "  -s   --separator=C :  separator to use between fields (in TCP/IP daemon "
+ "mode).\n"
+ "  -S   --syslog=s    :  log temperature to syslog every s seconds.\n"
++"  -u   --unit=[C|F]  :  force output temperature either in Celsius or "
++"Fahrenheit.\n"
+ "  -q   --quiet       :  do not check if the drive is supported.\n"
+ "  -v   --version     :  display hddtemp version number.\n"
+ "  -w   --wake-up     :  wake-up the drive if need.\n"
+@@ -153,11 +125,14 @@
+ "\n"
+ "Report bugs or new drives to <hddtemp@guzu.net>.\n"
+ msgstr ""
+-" Utilisation: hddtemp [OPTIONS] DISQUE1 [DISQUE2]...\n"
++" Utilisation: hddtemp [OPTIONS] [TYPE:]DISQUE1 [[TYPE:]DISQUE2]...\n"
+ "\n"
+ "   hddtemp affiche la température des lecteurs passés en argument.\n"
+ "   Les lecteurs doivent avoir le support S.M.A.R.T.\n"
+ "\n"
++"  TYPE peut être SATA, PATA ou SCSI. Si le type est omis, hddtemp essaiera\n"
++"  de le deviner.\n"
++"\n"
+ "  -b   --drivebase   :  affiche le contenu du fichier de base de donnée "
+ "qui \n"
+ "                        permet à hddtemp de reconnaître les lecteurs "
+@@ -172,6 +147,7 @@
+ "défaut).\n"
+ "  -f   --file=FILE   :  specifie le fichier à utiliser comme base de "
+ "données.\n"
++"  -F   --foreground  :  ne pas démoniser, rester au premier plan.\n"
+ "  -l   --listen=addr :  écoute sur une interface spécifique (en mode démon "
+ "TCP/IP).\n"
+ "  -n   --numeric     :  affiche seulement la température.\n"
+@@ -180,6 +156,8 @@
+ "démon TCP/IP).\n"
+ "  -S   --syslog=s    :  enregistre la température dans syslog tous les s "
+ "secondes.\n"
++"  -u   --unit=[C|F]  :  affiche la température en degrés Celsius ou "
++"Fahrenheit.\n"
+ "  -q   --quiet       :  ne vérifie pas si le lecteur est supporté.\n"
+ "  -v   --version     :  affiche la version de hddtemp.\n"
+ "  -w   --wake-up     :  réveiller le lecteur si nécessaire.\n"
+@@ -188,62 +166,95 @@
+ "\n"
+ "Report bugs or new drives to <hddtemp@guzu.net>.\n"
+ 
+-#: src/hddtemp.c:522
++#: src/hddtemp.c:402
+ #, c-format
+ msgid "hddtemp version %s\n"
+ msgstr "hddtemp version %s\n"
+ 
+-#: src/hddtemp.c:547
++#: src/hddtemp.c:418
+ #, c-format
+ msgid "ERROR: invalid interval.\n"
+ msgstr "ERREUR : intervalle invalide.\n"
+ 
+-#: src/hddtemp.c:547
++#: src/hddtemp.c:438
++#, c-format
+ msgid "Too few arguments: you must specify one drive, at least.\n"
+ msgstr "Trop peu d'arguments : vous devez spécifier au moins un lecteur.\n"
+ 
+-#: src/hddtemp.c:557
++#: src/hddtemp.c:448
++#, c-format
+ msgid "ERROR: can't use --debug and --daemon or --syslog options together.\n"
+ msgstr ""
+ "ERREUR: impossible d'utiliser les options --debug et --daemon ou --syslog en "
+ "même temps.\n"
+ 
+-#: src/hddtemp.c:583
++#: src/hddtemp.c:505
+ #, c-format
+ msgid "ERROR: %s: can't determine bus type (or this bus type is unknown)\n"
+ msgstr ""
+ "ERREUR: %s: impossible de déterminer le type de bus (ou ce type de bus est "
+ "inconnu)\n"
+ 
+-#: src/ata.c:66 src/scsi.c:68
++#: src/ata.c:66 src/scsi.c:64
+ msgid "unknown"
+ msgstr "inconnu"
+ 
+-#: src/ata.c:98
++#: src/ata.c:85 src/ata.c:104 src/scsi.c:91
+ #, c-format
+-msgid "field(%d)\t = %d\n"
+-msgstr "champ(%d)\t = %d\n"
+-
+-#: src/ata.c:167
+ msgid "S.M.A.R.T. not available"
+ msgstr "S.M.A.R.T. non disponible"
+ 
+-#: src/db.c:180
++#: src/db.c:115
++#, c-format
++msgid ""
++"\n"
++"Regexp%s| Value | Description\n"
++"------%s---------------------\n"
++msgstr ""
++"\n"
++"Regexp%s| Valeur | Description\n"
++"------%s----------------------\n"
++
++#: src/db.c:121
++#, c-format
++msgid "%s%s| %5d | %s\n"
++msgstr "%s%s|  %5d | %s\n"
++
++#: src/db.c:236
+ #, c-format
+ msgid "hddtemp: can't open %1$s: %2$s\n"
+ msgstr "hddtemp: ne peut ouvrir %1$s: %2$s\n"
+ 
+-#: src/db.c:194
++#: src/db.c:250
+ #, c-format
+ msgid "ERROR: syntax error at line %1$d in %2$s\n"
+ msgstr "ERREUR: erreur de syntaxe à la ligne %1$d: %2$s\n"
+ 
+-#: src/db.c:201
++#: src/db.c:257
+ #, c-format
+ msgid "  ERROR: line exceed %1$d characters in %2$s.\n"
+ msgstr "  ERREUR: ligne exécdant %1$d caractères dans %2$s.\n"
+ 
+-#: src/scsi.c:112 src/scsi.c:130
++#: src/scsi.c:111 src/scsi.c:129
+ #, c-format
+ msgid "log sense failed : %s"
+ msgstr "echec de 'log sense' : %s "
++
++#~ msgid ""
++#~ "WARNING: Drive %s doesn't appear in the database of supported drives\n"
++#~ "WARNING: But using a common value, it reports something.\n"
++#~ "WARNING: Note that the temperature shown could be wrong.\n"
++#~ "WARNING: See --help, --debug and --drivebase options.\n"
++#~ "WARNING: And don't forget you can add your drive to hddtemp.db\n"
++#~ msgstr ""
++#~ "ATTENTION : Le lecteur %s n'apparait pas dans la base de données des "
++#~ "lecteurs supportés\n"
++#~ "ATTENTION : Mais en utilisant une valeur courante, il renvoie quelque "
++#~ "chose.\n"
++#~ "ATTENTION : Notez que la température renvoyée peut être erronée.\n"
++#~ "ATTENTION : Voir les options --help, --debug et --drivebase.\n"
++#~ "ATTENTION : Et n'oubliez pas d'ajouter votre lecteur au fichier hddtemp."
++#~ "db\n"
++
++#~ msgid "field(%d)\t = %d\n"
++#~ msgstr "champ(%d)\t = %d\n"
+--- hddtemp-0.3-beta15.orig/po/ru.po
++++ hddtemp-0.3-beta15/po/ru.po
+@@ -6,8 +6,8 @@
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: hddtemp 0.3-beta3\n"
+-"Report-Msgid-Bugs-To: hddtemp@guzu.net\n"
+-"POT-Creation-Date: 2005-02-25 22:43+0100\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2006-06-29 16:24+0200\n"
+ "PO-Revision-Date: 2003-03-08 16:42+0300\n"
+ "Last-Translator: Michael Shigorin <mike@altlinux.ru>\n"
+ "Language-Team: Russian <ru@li.org>\n"
+@@ -15,23 +15,7 @@
+ "Content-Type: text/plain; charset=koi8-r\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ 
+-#: src/hddtemp.c:112
+-#, c-format
+-msgid ""
+-"\n"
+-"Regexp%s| Value | Description\n"
+-"------%s---------------------\n"
+-msgstr ""
+-"\n"
+-"òÅÇÜËÓ%s| úÎÁÞ. | ïÐÉÓÁÎÉÅ   \n"
+-"------%s---------------------\n"
+-
+-#: src/hddtemp.c:118
+-#, c-format
+-msgid "%s%s| %5d | %s\n"
+-msgstr ""
+-
+-#: src/hddtemp.c:161
++#: src/hddtemp.c:156
+ #, c-format
+ msgid ""
+ "\n"
+@@ -40,7 +24,7 @@
+ "\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:188
++#: src/hddtemp.c:189
+ #, c-format
+ msgid ""
+ "WARNING: Drive %s doesn't seem to have a temperature sensor.\n"
+@@ -53,72 +37,59 @@
+ "÷îéíáîéå: åÓÌÉ ×Ù ÔÏÞÎÏ ÚÎÁÅÔÅ, ÞÔÏ ÄÁÔÞÉË ÅÓÔØ, ÎÁÐÉÛÉÔÅ hddtemp@guzu.net\n"
+ "÷îéíáîéå: (ÓÍ. ÏÐÃÉÉ --help, --debug É --drivebase).\n"
+ 
+-#: src/hddtemp.c:192
++#: src/hddtemp.c:197
+ #, c-format
+ msgid "%s: %s:  no sensor\n"
+ msgstr "%s: %s:  ÎÅÔ ÄÁÔÞÉËÁ\n"
+ 
+-#: src/hddtemp.c:197
+-#, c-format
+-msgid ""
+-"WARNING: Drive %s doesn't appear in the database of supported drives\n"
+-"WARNING: But using a common value, it reports something.\n"
+-"WARNING: Note that the temperature shown could be wrong.\n"
+-"WARNING: See --help, --debug and --drivebase options.\n"
+-"WARNING: And don't forget you can add your drive to hddtemp.db\n"
+-msgstr ""
+-"÷îéíáîéå: äÉÓË %s ÎÅ ×ËÌÀÞÅÎ × ÂÁÚÕ ÄÁÎÎÙÈ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ÐÒÉ×ÏÄÏ×.\n"
+-"÷îéíáîéå: îÏ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÒÁÓÐÒÏÓÔÒÁÎÅÎÎÙÈ ÐÁÒÁÍÅÔÒÏ× ÏÎ ÞÔÏ-ÔÏ ×ÙÄÁÅÔ.\n"
+-"÷îéíáîéå: úÁÍÅÔØÔÅ, ÞÔÏ ÐÏËÁÚÁÎÎÁÑ ÔÅÍÐÅÒÁÔÕÒÁ ÍÏÖÅÔ ÔÁËÏ×ÏÊ ÎÅ Ñ×ÌÑÔØÓÑ.\n"
+-"÷îéíáîéå: óÍ. ÏÐÃÉÉ --help, --debug É --drivebase.\n"
+-"÷îéíáîéå: é ÎÅ ÚÁÂÕÄØÔÅ, ÞÔÏ ÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÐÒÉ×ÏÄ × hddtemp.db\n"
+-
+-#: src/hddtemp.c:202
++#: src/hddtemp.c:211
+ #, c-format
+ msgid "%s: %s:  %d%sC or %sF\n"
+ msgstr "%s: %s:  %d%sC ÉÌÉ %sF\n"
+ 
+-#: src/hddtemp.c:214
++#: src/hddtemp.c:235
+ #, c-format
+ msgid "%s: %s: drive is sleeping\n"
+ msgstr "%s: %s:  ÎÅÔ ÄÁÔÞÉËÁ\n"
+ 
+-#: src/hddtemp.c:217
+-#, c-format
+-msgid "%s: %s:  known drive, but it doesn't have a temperature sensor.\n"
++#: src/hddtemp.c:242
++#, fuzzy, c-format
++msgid "%s: %s:  drive supported, but it doesn't have a temperature sensor.\n"
+ msgstr "%s: %s:  ÉÚ×ÅÓÔÎÙÊ ÄÉÓË, ÎÅ ÓÏÄÅÒÖÁÝÉÊ ÄÁÔÞÉËÁ ÔÅÍÐÅÒÁÔÕÒÙ.\n"
+ 
+-#: src/hddtemp.c:220
++#: src/hddtemp.c:246
+ #, c-format
+ msgid "ERROR: %s: %s: unknown returned status\n"
+ msgstr "ïûéâëá: %s: %s: ÎÅÉÚ×ÅÓÔÎÙÊ ÓÔÁÔÕÓ ×ÏÚ×ÒÁÔÁ\n"
+ 
+-#: src/hddtemp.c:235
++#: src/hddtemp.c:261
+ #, c-format
+ msgid ""
+ "\n"
+ "If one of the field value seems to match the temperature, be sure to read\n"
+-"the hddtemp man page before sending me a report (section REPORT). Thanks.\n"
++"the hddtemp man page before sending a report (section REPORT). Thanks.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:308
++#: src/hddtemp.c:338
+ #, c-format
+ msgid "ERROR: invalid separator.\n"
+ msgstr "ïûéâëá: ÎÅ×ÅÒÎÙÊ ÒÁÚÄÅÌÉÔÅÌØ.\n"
+ 
+-#: src/hddtemp.c:319
++#: src/hddtemp.c:349
+ #, c-format
+ msgid "ERROR: invalid port number.\n"
+ msgstr "ïýéâëá: ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ ÐÏÒÔÁ.\n"
+ 
+-#: src/hddtemp.c:329
++#: src/hddtemp.c:371
+ #, fuzzy, c-format
+ msgid ""
+-" Usage: hddtemp [OPTIONS] DISK1 [DISK2]...\n"
++" Usage: hddtemp [OPTIONS] [TYPE:]DISK1 [[TYPE:]DISK2]...\n"
+ "\n"
+ "   hddtemp displays the temperature of drives supplied in argument.\n"
+ "   Drives must support S.M.A.R.T.\n"
+ "\n"
++"  TYPE could be SATA, PATA or SCSI. If omitted hddtemp will try to guess.\n"
++"\n"
+ "  -b   --drivebase   :  display database file content that allow hddtemp to\n"
+ "                        recognize supported drives.\n"
+ "  -D   --debug       :  display various S.M.A.R.T. fields and their values.\n"
+@@ -128,6 +99,7 @@
+ "  -d   --daemon      :  run hddtemp in TCP/IP daemon mode (port %d by "
+ "default.)\n"
+ "  -f   --file=FILE   :  specify database file to use.\n"
++"  -F   --foreground  :  don't daemonize, stay in foreground.\n"
+ "  -l   --listen=addr :  listen on a specific interface (in TCP/IP daemon "
+ "mode).\n"
+ "  -n   --numeric     :  print only the temperature.\n"
+@@ -135,6 +107,8 @@
+ "  -s   --separator=C :  separator to use between fields (in TCP/IP daemon "
+ "mode).\n"
+ "  -S   --syslog=s    :  log temperature to syslog every s seconds.\n"
++"  -u   --unit=[C|F]  :  force output temperature either in Celsius or "
++"Fahrenheit.\n"
+ "  -q   --quiet       :  do not check if the drive is supported.\n"
+ "  -v   --version     :  display hddtemp version number.\n"
+ "  -w   --wake-up     :  wake-up the drive if need.\n"
+@@ -168,59 +142,90 @@
+ "\n"
+ "óÏÏÂÝÅÎÉÑ Ï ÏÛÉÂËÁÈ É ÄÁÎÎÙÅ ÄÌÑ ÄÉÓËÏ× ÏÔÐÒÁ×ÌÑÊÔÅ ÎÁ <hddtemp@guzu.net>.\n"
+ 
+-#: src/hddtemp.c:522
++#: src/hddtemp.c:402
+ #, c-format
+ msgid "hddtemp version %s\n"
+ msgstr "÷ÅÒÓÉÑ hddtemp: %s\n"
+ 
+-#: src/hddtemp.c:547
++#: src/hddtemp.c:418
+ #, fuzzy, c-format
+ msgid "ERROR: invalid interval.\n"
+ msgstr "ïûéâëá: ÎÅ×ÅÒÎÙÊ ÒÁÚÄÅÌÉÔÅÌØ.\n"
+ 
+-#: src/hddtemp.c:547
++#: src/hddtemp.c:438
++#, c-format
+ msgid "Too few arguments: you must specify one drive, at least.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:557
+-#, fuzzy
++#: src/hddtemp.c:448
++#, fuzzy, c-format
+ msgid "ERROR: can't use --debug and --daemon or --syslog options together.\n"
+ msgstr "ïûéâëá: ÏÄÎÏ×ÒÅÍÅÎÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ --debug É --daemon ÎÅÄÏÐÕÓÔÉÍÏ.\n"
+ 
+-#: src/hddtemp.c:583
++#: src/hddtemp.c:505
+ #, c-format
+ msgid "ERROR: %s: can't determine bus type (or this bus type is unknown)\n"
+ msgstr "ïûéâëá: %s: ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÔÉÐ ÛÉÎÙ\n"
+ 
+-#: src/ata.c:66 src/scsi.c:68
++#: src/ata.c:66 src/scsi.c:64
+ msgid "unknown"
+ msgstr "ÎÅÉÚ×."
+ 
+-#: src/ata.c:98
++#: src/ata.c:85 src/ata.c:104 src/scsi.c:91
+ #, c-format
+-msgid "field(%d)\t = %d\n"
+-msgstr "ÐÏÌÅ(%d)\t = %d\n"
+-
+-#: src/ata.c:167
+ msgid "S.M.A.R.T. not available"
+ msgstr "S.M.A.R.T. ÎÅÄÏÓÔÕÐÅÎ"
+ 
+-#: src/db.c:180
++#: src/db.c:115
++#, c-format
++msgid ""
++"\n"
++"Regexp%s| Value | Description\n"
++"------%s---------------------\n"
++msgstr ""
++"\n"
++"òÅÇÜËÓ%s| úÎÁÞ. | ïÐÉÓÁÎÉÅ   \n"
++"------%s---------------------\n"
++
++#: src/db.c:121
++#, c-format
++msgid "%s%s| %5d | %s\n"
++msgstr ""
++
++#: src/db.c:236
+ #, c-format
+ msgid "hddtemp: can't open %1$s: %2$s\n"
+ msgstr "hddtemp: ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ %1$s: %2$s\n"
+ 
+-#: src/db.c:194
++#: src/db.c:250
+ #, c-format
+ msgid "ERROR: syntax error at line %1$d in %2$s\n"
+ msgstr "óÉÎÔÁËÓÉÞÅÓËÁÑ ïûéâëá × ÓÔÒÏËÅ %1$d ÆÁÊÌÁ %2$s\n"
+ 
+-#: src/db.c:201
++#: src/db.c:257
+ #, c-format
+ msgid "  ERROR: line exceed %1$d characters in %2$s.\n"
+ msgstr "ïûéâëá: ÓÔÒÏËÁ ÄÌÉÎÎÅÅ %1$d ÓÉÍ×ÏÌÏ× × %2$s.\n"
+ 
+-#: src/scsi.c:112 src/scsi.c:130
++#: src/scsi.c:111 src/scsi.c:129
+ #, c-format
+ msgid "log sense failed : %s"
+ msgstr ""
++
++#~ msgid ""
++#~ "WARNING: Drive %s doesn't appear in the database of supported drives\n"
++#~ "WARNING: But using a common value, it reports something.\n"
++#~ "WARNING: Note that the temperature shown could be wrong.\n"
++#~ "WARNING: See --help, --debug and --drivebase options.\n"
++#~ "WARNING: And don't forget you can add your drive to hddtemp.db\n"
++#~ msgstr ""
++#~ "÷îéíáîéå: äÉÓË %s ÎÅ ×ËÌÀÞÅÎ × ÂÁÚÕ ÄÁÎÎÙÈ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ÐÒÉ×ÏÄÏ×.\n"
++#~ "÷îéíáîéå: îÏ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÒÁÓÐÒÏÓÔÒÁÎÅÎÎÙÈ ÐÁÒÁÍÅÔÒÏ× ÏÎ ÞÔÏ-ÔÏ "
++#~ "×ÙÄÁÅÔ.\n"
++#~ "÷îéíáîéå: úÁÍÅÔØÔÅ, ÞÔÏ ÐÏËÁÚÁÎÎÁÑ ÔÅÍÐÅÒÁÔÕÒÁ ÍÏÖÅÔ ÔÁËÏ×ÏÊ ÎÅ "
++#~ "Ñ×ÌÑÔØÓÑ.\n"
++#~ "÷îéíáîéå: óÍ. ÏÐÃÉÉ --help, --debug É --drivebase.\n"
++#~ "÷îéíáîéå: é ÎÅ ÚÁÂÕÄØÔÅ, ÞÔÏ ÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÐÒÉ×ÏÄ × hddtemp.db\n"
++
++#~ msgid "field(%d)\t = %d\n"
++#~ msgstr "ÐÏÌÅ(%d)\t = %d\n"
+--- hddtemp-0.3-beta15.orig/po/sv.po
++++ hddtemp-0.3-beta15/po/sv.po
+@@ -6,8 +6,8 @@
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: hddtemp 0.3-beta14-4\n"
+-"Report-Msgid-Bugs-To: hddtemp@guzu.net\n"
+-"POT-Creation-Date: 2005-02-25 22:43+0100\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2006-06-29 16:24+0200\n"
+ "PO-Revision-Date: 2005-11-02 19:03+0100\n"
+ "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+ "Language-Team: Swedish <sv@li.org>\n"
+@@ -17,23 +17,7 @@
+ "X-Poedit-Language: swe\n"
+ "X-Poedit-Country: swe\n"
+ 
+-#: src/hddtemp.c:112
+-#, c-format
+-msgid ""
+-"\n"
+-"Regexp%s| Value | Description\n"
+-"------%s---------------------\n"
+-msgstr ""
+-"\n"
+-"Regexp%s| Värde | Beskrivning\n"
+-"------%s---------------------\n"
+-
+-#: src/hddtemp.c:118
+-#, c-format
+-msgid "%s%s| %5d | %s\n"
+-msgstr "%s%s| %5d | %s\n"
+-
+-#: src/hddtemp.c:161
++#: src/hddtemp.c:156
+ #, c-format
+ msgid ""
+ "\n"
+@@ -46,7 +30,7 @@
+ "Modell: %s\n"
+ "\n"
+ 
+-#: src/hddtemp.c:188
++#: src/hddtemp.c:189
+ #, c-format
+ msgid ""
+ "WARNING: Drive %s doesn't seem to have a temperature sensor.\n"
+@@ -60,76 +44,63 @@
+ "net).\n"
+ "VARNING: Se --help, --debug och --drivebase flaggorna.\n"
+ 
+-#: src/hddtemp.c:192
++#: src/hddtemp.c:197
+ #, c-format
+ msgid "%s: %s:  no sensor\n"
+ msgstr "%s: %s:  ingen sensor\n"
+ 
+-#: src/hddtemp.c:197
+-#, c-format
+-msgid ""
+-"WARNING: Drive %s doesn't appear in the database of supported drives\n"
+-"WARNING: But using a common value, it reports something.\n"
+-"WARNING: Note that the temperature shown could be wrong.\n"
+-"WARNING: See --help, --debug and --drivebase options.\n"
+-"WARNING: And don't forget you can add your drive to hddtemp.db\n"
+-msgstr ""
+-"VARNING: Disken %s verkar inte finnas i databasen över diskar som stöds\n"
+-"VARNING: Men använder man ett vanligt värde rapporterar den något.\n"
+-"VARNING: Notera att temperaturen som visas kan vara felaktig.\n"
+-"VARNING: Se --help, --debug och --drivebase flaggorna.\n"
+-"VARNING: Och glöm inte att du kan lägga till din disk till hddtemp.db\n"
+-
+-#: src/hddtemp.c:202
++#: src/hddtemp.c:211
+ #, c-format
+ msgid "%s: %s:  %d%sC or %sF\n"
+ msgstr "%s: %s:  %d%sC eller %sF\n"
+ 
+-#: src/hddtemp.c:214
++#: src/hddtemp.c:235
+ #, c-format
+ msgid "%s: %s: drive is sleeping\n"
+ msgstr "%s: %s: disken sover\n"
+ 
+-#: src/hddtemp.c:217
+-#, c-format
+-msgid "%s: %s:  known drive, but it doesn't have a temperature sensor.\n"
++#: src/hddtemp.c:242
++#, fuzzy, c-format
++msgid "%s: %s:  drive supported, but it doesn't have a temperature sensor.\n"
+ msgstr "%s: %s:  känd disk men den har ingen temperatursensor.\n"
+ 
+-#: src/hddtemp.c:220
++#: src/hddtemp.c:246
+ #, c-format
+ msgid "ERROR: %s: %s: unknown returned status\n"
+ msgstr "FEL: %s: %s: okänd returnerad status\n"
+ 
+-#: src/hddtemp.c:235
+-#, c-format
++#: src/hddtemp.c:261
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+ "If one of the field value seems to match the temperature, be sure to read\n"
+-"the hddtemp man page before sending me a report (section REPORT). Thanks.\n"
++"the hddtemp man page before sending a report (section REPORT). Thanks.\n"
+ msgstr ""
+ "\n"
+ "Om ett av fältvärdena verkar matcha temperaturen, var säker på att du\n"
+ "läst manualsidan för hddtemp före du skickar en rapport till mig (sektionen\n"
+ "REPORT). Tack.\n"
+ 
+-#: src/hddtemp.c:308
++#: src/hddtemp.c:338
+ #, c-format
+ msgid "ERROR: invalid separator.\n"
+ msgstr "FEL: ogiltig separator.\n"
+ 
+-#: src/hddtemp.c:319
++#: src/hddtemp.c:349
+ #, c-format
+ msgid "ERROR: invalid port number.\n"
+ msgstr "FEL: ogiltigt portnummer.\n"
+ 
+-#: src/hddtemp.c:329
+-#, c-format
++#: src/hddtemp.c:371
++#, fuzzy, c-format
+ msgid ""
+-" Usage: hddtemp [OPTIONS] DISK1 [DISK2]...\n"
++" Usage: hddtemp [OPTIONS] [TYPE:]DISK1 [[TYPE:]DISK2]...\n"
+ "\n"
+ "   hddtemp displays the temperature of drives supplied in argument.\n"
+ "   Drives must support S.M.A.R.T.\n"
+ "\n"
++"  TYPE could be SATA, PATA or SCSI. If omitted hddtemp will try to guess.\n"
++"\n"
+ "  -b   --drivebase   :  display database file content that allow hddtemp to\n"
+ "                        recognize supported drives.\n"
+ "  -D   --debug       :  display various S.M.A.R.T. fields and their values.\n"
+@@ -139,6 +110,7 @@
+ "  -d   --daemon      :  run hddtemp in TCP/IP daemon mode (port %d by "
+ "default.)\n"
+ "  -f   --file=FILE   :  specify database file to use.\n"
++"  -F   --foreground  :  don't daemonize, stay in foreground.\n"
+ "  -l   --listen=addr :  listen on a specific interface (in TCP/IP daemon "
+ "mode).\n"
+ "  -n   --numeric     :  print only the temperature.\n"
+@@ -146,6 +118,8 @@
+ "  -s   --separator=C :  separator to use between fields (in TCP/IP daemon "
+ "mode).\n"
+ "  -S   --syslog=s    :  log temperature to syslog every s seconds.\n"
++"  -u   --unit=[C|F]  :  force output temperature either in Celsius or "
++"Fahrenheit.\n"
+ "  -q   --quiet       :  do not check if the drive is supported.\n"
+ "  -v   --version     :  display hddtemp version number.\n"
+ "  -w   --wake-up     :  wake-up the drive if need.\n"
+@@ -184,61 +158,91 @@
+ "\n"
+ "Rapportera buggar eller nya hårddiskar till <hddtemp@guzu.net>.\n"
+ 
+-#: src/hddtemp.c:522
++#: src/hddtemp.c:402
+ #, c-format
+ msgid "hddtemp version %s\n"
+ msgstr "hddtemp version %s\n"
+ 
+-#: src/hddtemp.c:547
++#: src/hddtemp.c:418
+ #, c-format
+ msgid "ERROR: invalid interval.\n"
+ msgstr "FEL: ogiltigt intervall.\n"
+ 
+-#: src/hddtemp.c:547
++#: src/hddtemp.c:438
++#, c-format
+ msgid "Too few arguments: you must specify one drive, at least.\n"
+ msgstr "För få argument: du måste specificera åtminstone en disk.\n"
+ 
+-#: src/hddtemp.c:557
++#: src/hddtemp.c:448
++#, c-format
+ msgid "ERROR: can't use --debug and --daemon or --syslog options together.\n"
+ msgstr ""
+ "FEL: kan inte använda --debug och --daemon eller --syslog flaggorna "
+ "tillsammans.\n"
+ 
+-#: src/hddtemp.c:583
++#: src/hddtemp.c:505
+ #, c-format
+ msgid "ERROR: %s: can't determine bus type (or this bus type is unknown)\n"
+ msgstr ""
+ "FEL: %s: kan inte fastställa busstyp (eller så är denna busstyp okänd)\n"
+ 
+-#: src/ata.c:66 src/scsi.c:68
++#: src/ata.c:66 src/scsi.c:64
+ msgid "unknown"
+ msgstr "okänd"
+ 
+-#: src/ata.c:98
++#: src/ata.c:85 src/ata.c:104 src/scsi.c:91
+ #, c-format
+-msgid "field(%d)\t = %d\n"
+-msgstr "fält(%d)\t = %d\n"
+-
+-#: src/ata.c:167
+ msgid "S.M.A.R.T. not available"
+ msgstr "S.M.A.R.T. är inte tillgänglig"
+ 
+-#: src/db.c:180
++#: src/db.c:115
++#, c-format
++msgid ""
++"\n"
++"Regexp%s| Value | Description\n"
++"------%s---------------------\n"
++msgstr ""
++"\n"
++"Regexp%s| Värde | Beskrivning\n"
++"------%s---------------------\n"
++
++#: src/db.c:121
++#, c-format
++msgid "%s%s| %5d | %s\n"
++msgstr "%s%s| %5d | %s\n"
++
++#: src/db.c:236
+ #, c-format
+ msgid "hddtemp: can't open %1$s: %2$s\n"
+ msgstr "hddtemp: kan inte öppna %1$s: %2$s\n"
+ 
+-#: src/db.c:194
++#: src/db.c:250
+ #, c-format
+ msgid "ERROR: syntax error at line %1$d in %2$s\n"
+ msgstr "FEL: syntaxfel på rad %1$d i %2$s\n"
+ 
+-#: src/db.c:201
++#: src/db.c:257
+ #, c-format
+ msgid "  ERROR: line exceed %1$d characters in %2$s.\n"
+ msgstr " FEL: raden överstiger %1$d tecken i %2$s.\n"
+ 
+-#: src/scsi.c:112 src/scsi.c:130
++#: src/scsi.c:111 src/scsi.c:129
+ #, c-format
+ msgid "log sense failed : %s"
+ msgstr "igenkänning av logg misslyckades : %s"
++
++#~ msgid ""
++#~ "WARNING: Drive %s doesn't appear in the database of supported drives\n"
++#~ "WARNING: But using a common value, it reports something.\n"
++#~ "WARNING: Note that the temperature shown could be wrong.\n"
++#~ "WARNING: See --help, --debug and --drivebase options.\n"
++#~ "WARNING: And don't forget you can add your drive to hddtemp.db\n"
++#~ msgstr ""
++#~ "VARNING: Disken %s verkar inte finnas i databasen över diskar som stöds\n"
++#~ "VARNING: Men använder man ett vanligt värde rapporterar den något.\n"
++#~ "VARNING: Notera att temperaturen som visas kan vara felaktig.\n"
++#~ "VARNING: Se --help, --debug och --drivebase flaggorna.\n"
++#~ "VARNING: Och glöm inte att du kan lägga till din disk till hddtemp.db\n"
++
++#~ msgid "field(%d)\t = %d\n"
++#~ msgstr "fält(%d)\t = %d\n"
+--- hddtemp-0.3-beta15.orig/po/pt.po
++++ hddtemp-0.3-beta15/po/pt.po
+@@ -7,7 +7,7 @@
+ msgstr ""
+ "Project-Id-Version: hddtemp 0.3-beta14\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2005-02-25 22:43+0100\n"
++"POT-Creation-Date: 2006-06-29 16:24+0200\n"
+ "PO-Revision-Date: 2006-03-29 23:22+0000\n"
+ "Last-Translator: Miguel Figueiredo <elmig@debianp.org>\n"
+ "Language-Team: Portuguese <traduz@debianpt.org>\n"
+@@ -15,23 +15,7 @@
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ 
+-#: src/hddtemp.c:112
+-#, c-format
+-msgid ""
+-"\n"
+-"Regexp%s| Value | Description\n"
+-"------%s---------------------\n"
+-msgstr ""
+-"\n"
+-"Regexp%s| Valor | Descrição\n"
+-"------%s-------------------\n"
+-
+-#: src/hddtemp.c:118
+-#, c-format
+-msgid "%s%s| %5d | %s\n"
+-msgstr "%s%s| %5d | %s\n"
+-
+-#: src/hddtemp.c:161
++#: src/hddtemp.c:156
+ #, c-format
+ msgid ""
+ "\n"
+@@ -44,7 +28,7 @@
+ "Modelo: %s\n"
+ "\n"
+ 
+-#: src/hddtemp.c:188
++#: src/hddtemp.c:189
+ #, c-format
+ msgid ""
+ "WARNING: Drive %s doesn't seem to have a temperature sensor.\n"
+@@ -54,79 +38,68 @@
+ msgstr ""
+ "AVISO: O disco %s não parece ter um sensor de temperatura.\n"
+ "AVISO: Isto não significa que não tem nenhum.\n"
+-"AVISO: Se tem a certeza que tem um, por favor contacte-me (hddtemp@guzu.net).\n"
++"AVISO: Se tem a certeza que tem um, por favor contacte-me (hddtemp@guzu."
++"net).\n"
+ "AVISO: Veja as opções --help, --debug e --drivebase.\n"
+ 
+-#: src/hddtemp.c:192
++#: src/hddtemp.c:197
+ #, c-format
+ msgid "%s: %s:  no sensor\n"
+ msgstr "%s: %s: sem sensor\n"
+ 
+-#: src/hddtemp.c:197
+-#, c-format
+-msgid ""
+-"WARNING: Drive %s doesn't appear in the database of supported drives\n"
+-"WARNING: But using a common value, it reports something.\n"
+-"WARNING: Note that the temperature shown could be wrong.\n"
+-"WARNING: See --help, --debug and --drivebase options.\n"
+-"WARNING: And don't forget you can add your drive to hddtemp.db\n"
+-msgstr ""
+-"AVISO: O disco %s não parece estar na base de dados de discos suportados\n"
+-"AVISO: Mas ao utilizar um valor usual, relata alguma coisa.\n"
+-"AVISO: Note que a temperatura mostrada pode estar errada.\n"
+-"AVISO: Veja as opções --help, --debug e --frivebase.\n"
+-"AVISO: E não se esqueça de adicionar o seu disco a hddtemp.db\n"
+-
+-#: src/hddtemp.c:202
++#: src/hddtemp.c:211
+ #, c-format
+ msgid "%s: %s:  %d%sC or %sF\n"
+ msgstr "%s: %s: %d%sC ou %sF\n"
+ 
+-#: src/hddtemp.c:214
++#: src/hddtemp.c:235
+ #, c-format
+ msgid "%s: %s: drive is sleeping\n"
+ msgstr "%s: %s: o disco está adormecido\n"
+ 
+-#: src/hddtemp.c:217
+-#, c-format
+-msgid "%s: %s:  known drive, but it doesn't have a temperature sensor.\n"
++#: src/hddtemp.c:242
++#, fuzzy, c-format
++msgid "%s: %s:  drive supported, but it doesn't have a temperature sensor.\n"
+ msgstr "%s: %s: disco conhecido, mas não tem um sensor de temperatura.\n"
+ 
+-#: src/hddtemp.c:220
++#: src/hddtemp.c:246
+ #, c-format
+ msgid "ERROR: %s: %s: unknown returned status\n"
+ msgstr "ERRO: %s: %s: estado devolvido desconhecido\n"
+ 
+-#: src/hddtemp.c:235
+-#, c-format
++#: src/hddtemp.c:261
++#, fuzzy, c-format
+ msgid ""
+ "\n"
+ "If one of the field value seems to match the temperature, be sure to read\n"
+-"the hddtemp man page before sending me a report (section REPORT). Thanks.\n"
++"the hddtemp man page before sending a report (section REPORT). Thanks.\n"
+ msgstr ""
+ "\n"
+-"Se um dos campos de valores parecer coincidir com a temperatura, assegure-se\n"
++"Se um dos campos de valores parecer coincidir com a temperatura, assegure-"
++"se\n"
+ "que lê a página do manual hddtemp antes de me enviar um relatório (secção\n"
+ "REPORT). Obrigado.\n"
+ 
+-#: src/hddtemp.c:308
++#: src/hddtemp.c:338
+ #, c-format
+ msgid "ERROR: invalid separator.\n"
+ msgstr "ERRO: separador inválido.\n"
+ 
+-#: src/hddtemp.c:319
++#: src/hddtemp.c:349
+ #, c-format
+ msgid "ERROR: invalid port number.\n"
+ msgstr "ERRO: número de port inválido\n"
+ 
+-#: src/hddtemp.c:329
+-#, c-format
++#: src/hddtemp.c:371
++#, fuzzy, c-format
+ msgid ""
+-" Usage: hddtemp [OPTIONS] DISK1 [DISK2]...\n"
++" Usage: hddtemp [OPTIONS] [TYPE:]DISK1 [[TYPE:]DISK2]...\n"
+ "\n"
+ "   hddtemp displays the temperature of drives supplied in argument.\n"
+ "   Drives must support S.M.A.R.T.\n"
+ "\n"
++"  TYPE could be SATA, PATA or SCSI. If omitted hddtemp will try to guess.\n"
++"\n"
+ "  -b   --drivebase   :  display database file content that allow hddtemp to\n"
+ "                        recognize supported drives.\n"
+ "  -D   --debug       :  display various S.M.A.R.T. fields and their values.\n"
+@@ -136,6 +109,7 @@
+ "  -d   --daemon      :  run hddtemp in TCP/IP daemon mode (port %d by "
+ "default.)\n"
+ "  -f   --file=FILE   :  specify database file to use.\n"
++"  -F   --foreground  :  don't daemonize, stay in foreground.\n"
+ "  -l   --listen=addr :  listen on a specific interface (in TCP/IP daemon "
+ "mode).\n"
+ "  -n   --numeric     :  print only the temperature.\n"
+@@ -143,6 +117,8 @@
+ "  -s   --separator=C :  separator to use between fields (in TCP/IP daemon "
+ "mode).\n"
+ "  -S   --syslog=s    :  log temperature to syslog every s seconds.\n"
++"  -u   --unit=[C|F]  :  force output temperature either in Celsius or "
++"Fahrenheit.\n"
+ "  -q   --quiet       :  do not check if the drive is supported.\n"
+ "  -v   --version     :  display hddtemp version number.\n"
+ "  -w   --wake-up     :  wake-up the drive if need.\n"
+@@ -156,19 +132,23 @@
+ "   hddtemp mostra a temperatura dos discos indicados no argumento.\n"
+ "   Os discos têm de suportar S.M.A.R.T.\n"
+ "\n"
+-"  -b	 --drivebase   :  mostrar o conteúdo do ficheiro de base de dados que\n"
++"  -b\t --drivebase   :  mostrar o conteúdo do ficheiro de base de dados que\n"
+ "                        permite ao hddtemp reconhecer os discos suportados.\n"
+-"  -D	 --debug       :  mostrar vários campos S.M.A.R.T. e os seus valores.\n"
+-"                        Útil para encontrar um valor que pareça coincidir com "
+-"                        a temperatura e/ou para me enviar um relatório.\n"
++"  -D\t --debug       :  mostrar vários campos S.M.A.R.T. e os seus valores.\n"
++"                        Útil para encontrar um valor que pareça coincidir "
++"com                         a temperatura e/ou para me enviar um relatório.\n"
+ "                        (feito para cada disco indicado).\n"
+-"  -d   --daemon      :  correr o hddtemp no modo daemon TCP/IP\n (porto %d por omissão.)\n"
++"  -d   --daemon      :  correr o hddtemp no modo daemon TCP/IP\n"
++" (porto %d por omissão.)\n"
+ "  -f   --file=FILE   :  especificar o ficheiro de base de dados a utilizar.\n"
+-"  -l   --listen=addr :  escutar um interface específico (no modo daemon TCP/IP).\n"
++"  -l   --listen=addr :  escutar um interface específico (no modo daemon TCP/"
++"IP).\n"
+ "  -n   --numeric     :  escrever apenas a temperatura.\n"
+ "  -p   --port=#      :  port para escutar (no modo daemon TCP/IP).\n"
+-"  -s   --separator=C :  separador a utilizar entre campos (no modo daemon TCP/IP).\n"
+-"  -S   --syslog=s    :  registar a temperatura para o syslog a cada s segundos.\n"
++"  -s   --separator=C :  separador a utilizar entre campos (no modo daemon "
++"TCP/IP).\n"
++"  -S   --syslog=s    :  registar a temperatura para o syslog a cada s "
++"segundos.\n"
+ "  -q   --quiet       :  não verificar se o disco é suportado.\n"
+ "  -v   --version     :  mostrar o número da versão do hddtemp.\n"
+ "  -w   --wake-up     :  acordar o disco se necessário.\n"
+@@ -177,58 +157,93 @@
+ "\n"
+ "Relatar bugs ou novos discos para <hddtemp@guzu.net>.\n"
+ 
+-#: src/hddtemp.c:522
++#: src/hddtemp.c:402
+ #, c-format
+ msgid "hddtemp version %s\n"
+ msgstr "hddtemp versão %s\n"
+ 
+-#: src/hddtemp.c:547
++#: src/hddtemp.c:418
+ #, c-format
+ msgid "ERROR: invalid interval.\n"
+ msgstr "ERRO: intervalo inválido.\n"
+ 
+-#: src/hddtemp.c:547
++#: src/hddtemp.c:438
++#, c-format
+ msgid "Too few arguments: you must specify one drive, at least.\n"
+-msgstr "Número de argumentos insuficiente: tem de especificar pelo menos um disco.\n"
++msgstr ""
++"Número de argumentos insuficiente: tem de especificar pelo menos um disco.\n"
+ 
+-#: src/hddtemp.c:557
++#: src/hddtemp.c:448
++#, c-format
+ msgid "ERROR: can't use --debug and --daemon or --syslog options together.\n"
+-msgstr "ERRO: não pode utilizar em conjunto as opções --debug e --daemon ou --syslog.\n"
++msgstr ""
++"ERRO: não pode utilizar em conjunto as opções --debug e --daemon ou --"
++"syslog.\n"
+ 
+-#: src/hddtemp.c:583
++#: src/hddtemp.c:505
+ #, c-format
+ msgid "ERROR: %s: can't determine bus type (or this bus type is unknown)\n"
+-msgstr "ERRO: %s: não é possível determinar o tipo do bus (ou este tipo de bus é desconhecido)\n"
++msgstr ""
++"ERRO: %s: não é possível determinar o tipo do bus (ou este tipo de bus é "
++"desconhecido)\n"
+ 
+-#: src/ata.c:66 src/scsi.c:68
++#: src/ata.c:66 src/scsi.c:64
+ msgid "unknown"
+ msgstr "desconhecido"
+ 
+-#: src/ata.c:98
++#: src/ata.c:85 src/ata.c:104 src/scsi.c:91
+ #, c-format
+-msgid "field(%d)\t = %d\n"
+-msgstr "campo(%d)\t = %d\n"
+-
+-#: src/ata.c:167
+ msgid "S.M.A.R.T. not available"
+ msgstr "S.M.A.R.T. não está disponível"
+ 
+-#: src/db.c:180
++#: src/db.c:115
++#, c-format
++msgid ""
++"\n"
++"Regexp%s| Value | Description\n"
++"------%s---------------------\n"
++msgstr ""
++"\n"
++"Regexp%s| Valor | Descrição\n"
++"------%s-------------------\n"
++
++#: src/db.c:121
++#, c-format
++msgid "%s%s| %5d | %s\n"
++msgstr "%s%s| %5d | %s\n"
++
++#: src/db.c:236
+ #, c-format
+ msgid "hddtemp: can't open %1$s: %2$s\n"
+ msgstr "hddtemp: não pode abrir %1$s: %2$s\n"
+ 
+-#: src/db.c:194
++#: src/db.c:250
+ #, c-format
+ msgid "ERROR: syntax error at line %1$d in %2$s\n"
+ msgstr "ERRO: erro de sintaxe na linha %1$d em %2$s\n"
+ 
+-#: src/db.c:201
++#: src/db.c:257
+ #, c-format
+ msgid "  ERROR: line exceed %1$d characters in %2$s.\n"
+ msgstr "  ERRO: a linha execedeu %1$d caracteres em %2$s.\n"
+ 
+-#: src/scsi.c:112 src/scsi.c:130
++#: src/scsi.c:111 src/scsi.c:129
+ #, c-format
+ msgid "log sense failed : %s"
+ msgstr "detecção de log falhou: %s"
++
++#~ msgid ""
++#~ "WARNING: Drive %s doesn't appear in the database of supported drives\n"
++#~ "WARNING: But using a common value, it reports something.\n"
++#~ "WARNING: Note that the temperature shown could be wrong.\n"
++#~ "WARNING: See --help, --debug and --drivebase options.\n"
++#~ "WARNING: And don't forget you can add your drive to hddtemp.db\n"
++#~ msgstr ""
++#~ "AVISO: O disco %s não parece estar na base de dados de discos suportados\n"
++#~ "AVISO: Mas ao utilizar um valor usual, relata alguma coisa.\n"
++#~ "AVISO: Note que a temperatura mostrada pode estar errada.\n"
++#~ "AVISO: Veja as opções --help, --debug e --frivebase.\n"
++#~ "AVISO: E não se esqueça de adicionar o seu disco a hddtemp.db\n"
++
++#~ msgid "field(%d)\t = %d\n"
++#~ msgstr "campo(%d)\t = %d\n"
+--- hddtemp-0.3-beta15.orig/po/de.po
++++ hddtemp-0.3-beta15/po/de.po
+@@ -0,0 +1,250 @@
++# German translation of hddtemp.
++# Copyright (C) 2008 Free Software Foundation, Inc.
++# This file is distributed under the same license as the hddtemp package.
++# Vinzenz Vietzke <vinz@v1nz.org>, 2008.
++# ,
++#
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: hddtemp 0.3-beta15-44\n"
++"Report-Msgid-Bugs-To: hddtemp@packages.debian.org\n"
++"POT-Creation-Date: 2006-06-29 16:24+0200\n"
++"PO-Revision-Date: 2011-08-30 16:40+0200\n"
++"Last-Translator: Vinzenz Vietzke <vinz@v1nz.org>\n"
++"Language-Team: <debian-l10n-german@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit"
++
++#: src/hddtemp.c:156
++#, c-format
++msgid ""
++"\n"
++"================= hddtemp %s ==================\n"
++"Model: %s\n"
++"\n"
++msgstr ""
++"\n"
++"================= hddtemp %s ==================\n"
++"Modell: %s\n"
++"\n"
++
++#: src/hddtemp.c:189
++#, c-format
++msgid ""
++"WARNING: Drive %s doesn't seem to have a temperature sensor.\n"
++"WARNING: This doesn't mean it hasn't got one.\n"
++"WARNING: If you are sure it has one, please contact me (hddtemp@guzu."
++"net).\n"
++"WARNING: See --help, --debug and --drivebase options.\n"
++msgstr ""
++"WARNUNG: Laufwerk %s scheint keinen Temperatur-Sensor zu haben.\n"
++"WARNUNG: Das bedeutet nicht, dass es keinen besitzt.\n"
++"WARNUNG: Falls Sie sicher sind, dass es einen besitzt, kontaktieren Sie "
++"mich bitte (hddtemp@guzu.net).\n"
++"WARNUNG: Siehe Optionen --help, --debug und --drivebase.\n"
++
++#: src/hddtemp.c:197
++#, c-format
++msgid "%s: %s:  no sensor\n"
++msgstr "%s: %s: kein Sensor\n"
++
++#: src/hddtemp.c:211
++#, c-format
++msgid "%s: %s:  %d%sC or %sF\n"
++msgstr "%s: %s:  %d%s°C oder %s°F\n"
++
++#: src/hddtemp.c:235
++#, c-format
++msgid "%s: %s: drive is sleeping\n"
++msgstr "%s: %s: Laufwerk schläft\n"
++
++#: src/hddtemp.c:242
++#, c-format
++msgid "%s: %s:  drive supported, but it doesn't have a temperature sensor.\n"
++msgstr ""
++"%s: %s:  Laufwerk unterstützt, aber es hat keinen Temperatur-Sensor.\n"
++
++#: src/hddtemp.c:246
++#, c-format
++msgid "ERROR: %s: %s: unknown returned status\n"
++msgstr "FEHLER: %s: %s: zurückgegebener Status unbekannt\n"
++
++#: src/hddtemp.c:261
++#, c-format
++msgid ""
++"\n"
++"If one of the field value seems to match the temperature, be sure to read\n"
++"the hddtemp man page before sending a report (section REPORT). Thanks.\n"
++msgstr ""
++"\n"
++"Falls einer der Feldwerte der Temperatur zu entsprechen scheint, stellen "
++"Sie\n"
++"sicher, die hddtemp-Handbuchseite gelesen zu haben, bevor Sie einen "
++"Bericht\n"
++"senden (Abschnitt BERICHT). Danke.\n"
++
++#: src/hddtemp.c:338
++#, c-format
++msgid "ERROR: invalid separator.\n"
++msgstr "FEHLER: ungültiges Trennzeichen.\n"
++
++#: src/hddtemp.c:349
++#, c-format
++msgid "ERROR: invalid port number.\n"
++msgstr "FEHLER: ungültige Portnummer.\n"
++
++#: src/hddtemp.c:371
++#, c-format
++msgid ""
++" Usage: hddtemp [OPTIONS] [TYPE:]DISK1 [[TYPE:]DISK2]...\n"
++"\n"
++"   hddtemp displays the temperature of drives supplied in argument.\n"
++"   Drives must support S.M.A.R.T.\n"
++"\n"
++"  TYPE could be SATA, PATA or SCSI. If omitted hddtemp will try to guess.\n"
++"\n"
++"  -b   --drivebase   :  display database file content that allow hddtemp "
++"to\n"
++"                        recognize supported drives.\n"
++"  -D   --debug       :  display various S.M.A.R.T. fields and their "
++"values.\n"
++"                        Useful to find a value that seems to match the\n"
++"                        temperature and/or to send me a report.\n"
++"                        (done for every drive supplied).\n"
++"  -d   --daemon      :  run hddtemp in TCP/IP daemon mode (port %d by "
++"default.)\n"
++"  -f   --file=FILE   :  specify database file to use.\n"
++"  -F   --foreground  :  don't daemonize, stay in foreground.\n"
++"  -l   --listen=addr :  listen on a specific interface (in TCP/IP daemon "
++"mode).\n"
++"  -n   --numeric     :  print only the temperature.\n"
++"  -p   --port=#      :  port to listen to (in TCP/IP daemon mode).\n"
++"  -s   --separator=C :  separator to use between fields (in TCP/IP daemon "
++"mode).\n"
++"  -S   --syslog=s    :  log temperature to syslog every s seconds.\n"
++"  -u   --unit=[C|F]  :  force output temperature either in Celsius or "
++"Fahrenheit.\n"
++"  -q   --quiet       :  do not check if the drive is supported.\n"
++"  -v   --version     :  display hddtemp version number.\n"
++"  -w   --wake-up     :  wake-up the drive if need.\n"
++"  -4                 :  listen on IPv4 sockets only.\n"
++"  -6                 :  listen on IPv6 sockets only.\n"
++"\n"
++"Report bugs or new drives to <hddtemp@guzu.net>.\n"
++msgstr ""
++" Verwendung: hddtemp [OPTIONEN] [TYP:]LAUFWERK1 [[TYP:]LAUFWERK2]...\n"
++"\n"
++"  hddtemp zeigt die Temperatur der via Argument angegeben Laufwerke.\n"
++"  Laufwerke müssen S.M.A.R.T. unterstützen.\n"
++"\n"
++"  TYP kann SATA, PATA oder SCSI sein. Falls ausgelassen, wird hddtemp \n"
++"  versuchen, diesen zu erraten.\n"
++"\n"
++"  -b   --drivebase   :  Datenbank-Datei-Inhalt anzeigen, der hddtemp "
++"erlaubt\n"
++"                        unterstützte Laufwerke zu erkennen.\n"
++"  -D   --debug       :  verschiedene S.M.A.R.T.-Felder und deren Werte "
++"anzeigen.\n"
++"                       Nützlich, um Werte zu finden, die der Temperatur "
++"entsprechen\n"
++"                       und/oder um mir einen Bericht zu senden.\n"
++"                       (bereits erledigt für jedes bereitgestellte "
++"Laufwerk).\n"
++"  -d   --daemon      :  hddtemp im TCP/IP-Daemon-Modus ausführen "
++"(Standardmäßig Port %d)\n"
++"  -f   --file=DATEI  :  zu verwendende Datenbank-Datei festlegen.\n"
++"  -F   --foreground  :  nicht daemonisieren, im Vordergrund bleiben.\n"
++"  -l   --listen=addr :  auf einer bestimmten Schnittstelle auf Anfragen "
++"warten (im TCP/IP-Daemon-Modus).\n"
++"  -n   --numeric     :  nur die Temperatur ausgeben.\n"
++"  -p   --port=#      :  Port, auf dem auf Anfragen gewartet werden soll "
++"(im TCP/IP-Daemon-Modus).\n"
++"  -s   --separator=C :  Trennzeichen zur Verwendung zwischen Feldern (im "
++"TCP/IP-Daemon-Modus).\n"
++"  -S   --syslog=s    :  Temperatur alle s Sekunden in das syslog "
++"eintragen.\n"
++"  -u   --unit=[C|F]  :  Ausgabe der Temperatur entweder in Celsius oder "
++"Fahrenheit erzwingen.\n"
++"  -q   --quiet       :  nicht prüfen, ob das Laufwerk unterstützt wird.\n"
++"  -v   --version     :  Versionsnummer von hddtemp anzeigen.\n"
++"  -w   --wake-up     :  Laufwerk bei Bedarf aufwecken.\n"
++"  -4                 :  nur auf IPv4-Sockets auf Anfragen warten.\n"
++"  -6                 :  nur auf IPv6-Sockets auf Anfragen warten.\n"
++"\n"
++"Fehler oder neue Laufwerke an <hddtemp@guzu.net> melden.\n"
++
++#: src/hddtemp.c:402
++#, c-format
++msgid "hddtemp version %s\n"
++msgstr "hddtemp Version %s\n"
++
++#: src/hddtemp.c:418
++#, c-format
++msgid "ERROR: invalid interval.\n"
++msgstr "FEHLER: ungültiges Intervall.\n"
++
++#: src/hddtemp.c:438
++#, c-format
++msgid "Too few arguments: you must specify one drive, at least.\n"
++msgstr "Zu wenige Argumente: Sie müssen mindestens ein Laufwerk angeben.\n"
++
++#: src/hddtemp.c:448
++#, c-format
++msgid "ERROR: can't use --debug and --daemon or --syslog options together.\n"
++msgstr ""
++"FEHLER: kann Optionen --debug und --daemon oder --syslog nicht zusammen "
++"verwenden.\n"
++
++#: src/hddtemp.c:505
++#, c-format
++msgid "ERROR: %s: can't determine bus type (or this bus type is unknown)\n"
++msgstr ""
++"FEHLER: %s: kann Bus-Typ nicht ermitteln (oder dieser Bus-Typ ist "
++"unbekannt)\n"
++
++#: src/ata.c:66 src/scsi.c:64
++msgid "unknown"
++msgstr "unbekannt"
++
++#: src/ata.c:85 src/ata.c:104 src/scsi.c:91
++#, c-format
++msgid "S.M.A.R.T. not available"
++msgstr "S.M.A.R.T. nicht verfügbar"
++
++#: src/db.c:115
++#, c-format
++msgid ""
++"\n"
++"Regexp%s| Value | Description\n"
++"------%s---------------------\n"
++msgstr ""
++"\n"
++"Regexp%s| Wert | Beschreibung\n"
++"------%s---------------------\n"
++
++#: src/db.c:121
++#, c-format
++msgid "%s%s| %5d | %s\n"
++msgstr "%s%s| %5d | %s\n"
++
++#: src/db.c:236
++#, c-format
++msgid "hddtemp: can't open %1$s: %2$s\n"
++msgstr "hddtemp: kann %1$s nicht öffnen: %2$s\n"
++
++#: src/db.c:250
++#, c-format
++msgid "ERROR: syntax error at line %1$d in %2$s\n"
++msgstr "FEHLER: Syntaxfehler in Zeile %1$d in %2$s\n"
++
++#: src/db.c:257
++#, c-format
++msgid "  ERROR: line exceed %1$d characters in %2$s.\n"
++msgstr "  FEHLER: Zeile überschreitet %1$d Zeichen in %2$s.\n"
++
++#: src/scsi.c:111 src/scsi.c:129
++#, c-format
++msgid "log sense failed : %s"
++msgstr "Protokoll-Erkennung fehlgeschlagen : %s"
+--- hddtemp-0.3-beta15.orig/po/LINGUAS
++++ hddtemp-0.3-beta15/po/LINGUAS
+@@ -1,2 +1,2 @@
+ # Set of available languages.
+-fr pt ru sv 
++de fr pt ru sv 
+--- hddtemp-0.3-beta15.orig/po/hddtemp.pot
++++ hddtemp-0.3-beta15/po/hddtemp.pot
+@@ -1,35 +1,22 @@
+-
+-# Copyright (C) 2006 Free Software Foundation, Inc.
+-# This file is distributed under the same license as the 'hddtemp' package.
+-# Emmanuel VARAGNAT <hddtemp@guzu.net>, 2006.
++# SOME DESCRIPTIVE TITLE.
++# Copyright (C) YEAR Free Software Foundation, Inc.
++# This file is distributed under the same license as the PACKAGE package.
++# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+ #
+ #, fuzzy
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+-"Report-Msgid-Bugs-To: hddtemp@guzu.net\n"
+-"POT-Creation-Date: 2005-02-25 22:43+0100\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2006-06-29 16:24+0200\n"
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+-"Last-Translator: Emmanuel Varagnat <hddtemp@guzu.net>\n"
++"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL@li.org>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=CHARSET\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ 
+-#: src/hddtemp.c:112
+-#, c-format
+-msgid ""
+-"\n"
+-"Regexp%s| Value | Description\n"
+-"------%s---------------------\n"
+-msgstr ""
+-
+-#: src/hddtemp.c:118
+-#, c-format
+-msgid "%s%s| %5d | %s\n"
+-msgstr ""
+-
+-#: src/hddtemp.c:161
++#: src/hddtemp.c:156
+ #, c-format
+ msgid ""
+ "\n"
+@@ -38,7 +25,7 @@
+ "\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:188
++#: src/hddtemp.c:189
+ #, c-format
+ msgid ""
+ "WARNING: Drive %s doesn't seem to have a temperature sensor.\n"
+@@ -47,67 +34,59 @@
+ "WARNING: See --help, --debug and --drivebase options.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:192
+-#, c-format
+-msgid "%s: %s:  no sensor\n"
+-msgstr ""
+-
+ #: src/hddtemp.c:197
+ #, c-format
+-msgid ""
+-"WARNING: Drive %s doesn't appear in the database of supported drives\n"
+-"WARNING: But using a common value, it reports something.\n"
+-"WARNING: Note that the temperature shown could be wrong.\n"
+-"WARNING: See --help, --debug and --drivebase options.\n"
+-"WARNING: And don't forget you can add your drive to hddtemp.db\n"
++msgid "%s: %s:  no sensor\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:202
++#: src/hddtemp.c:211
+ #, c-format
+ msgid "%s: %s:  %d%sC or %sF\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:214
++#: src/hddtemp.c:235
+ #, c-format
+ msgid "%s: %s: drive is sleeping\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:217
++#: src/hddtemp.c:242
+ #, c-format
+-msgid "%s: %s:  known drive, but it doesn't have a temperature sensor.\n"
++msgid "%s: %s:  drive supported, but it doesn't have a temperature sensor.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:220
++#: src/hddtemp.c:246
+ #, c-format
+ msgid "ERROR: %s: %s: unknown returned status\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:235
++#: src/hddtemp.c:261
+ #, c-format
+ msgid ""
+ "\n"
+ "If one of the field value seems to match the temperature, be sure to read\n"
+-"the hddtemp man page before sending me a report (section REPORT). Thanks.\n"
++"the hddtemp man page before sending a report (section REPORT). Thanks.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:308
++#: src/hddtemp.c:338
+ #, c-format
+ msgid "ERROR: invalid separator.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:319
++#: src/hddtemp.c:349
+ #, c-format
+ msgid "ERROR: invalid port number.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:329
++#: src/hddtemp.c:371
+ #, c-format
+ msgid ""
+-" Usage: hddtemp [OPTIONS] DISK1 [DISK2]...\n"
++" Usage: hddtemp [OPTIONS] [TYPE:]DISK1 [[TYPE:]DISK2]...\n"
+ "\n"
+ "   hddtemp displays the temperature of drives supplied in argument.\n"
+ "   Drives must support S.M.A.R.T.\n"
+ "\n"
++"  TYPE could be SATA, PATA or SCSI. If omitted hddtemp will try to guess.\n"
++"\n"
+ "  -b   --drivebase   :  display database file content that allow hddtemp to\n"
+ "                        recognize supported drives.\n"
+ "  -D   --debug       :  display various S.M.A.R.T. fields and their values.\n"
+@@ -117,6 +96,7 @@
+ "  -d   --daemon      :  run hddtemp in TCP/IP daemon mode (port %d by "
+ "default.)\n"
+ "  -f   --file=FILE   :  specify database file to use.\n"
++"  -F   --foreground  :  don't daemonize, stay in foreground.\n"
+ "  -l   --listen=addr :  listen on a specific interface (in TCP/IP daemon "
+ "mode).\n"
+ "  -n   --numeric     :  print only the temperature.\n"
+@@ -124,6 +104,8 @@
+ "  -s   --separator=C :  separator to use between fields (in TCP/IP daemon "
+ "mode).\n"
+ "  -S   --syslog=s    :  log temperature to syslog every s seconds.\n"
++"  -u   --unit=[C|F]  :  force output temperature either in Celsius or "
++"Fahrenheit.\n"
+ "  -q   --quiet       :  do not check if the drive is supported.\n"
+ "  -v   --version     :  display hddtemp version number.\n"
+ "  -w   --wake-up     :  wake-up the drive if need.\n"
+@@ -133,58 +115,69 @@
+ "Report bugs or new drives to <hddtemp@guzu.net>.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:522
++#: src/hddtemp.c:402
+ #, c-format
+ msgid "hddtemp version %s\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:547
++#: src/hddtemp.c:418
+ #, c-format
+ msgid "ERROR: invalid interval.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:547
++#: src/hddtemp.c:438
++#, c-format
+ msgid "Too few arguments: you must specify one drive, at least.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:557
++#: src/hddtemp.c:448
++#, c-format
+ msgid "ERROR: can't use --debug and --daemon or --syslog options together.\n"
+ msgstr ""
+ 
+-#: src/hddtemp.c:583
++#: src/hddtemp.c:505
+ #, c-format
+ msgid "ERROR: %s: can't determine bus type (or this bus type is unknown)\n"
+ msgstr ""
+ 
+-#: src/ata.c:66 src/scsi.c:68
++#: src/ata.c:66 src/scsi.c:64
+ msgid "unknown"
+ msgstr ""
+ 
+-#: src/ata.c:98
++#: src/ata.c:85 src/ata.c:104 src/scsi.c:91
+ #, c-format
+-msgid "field(%d)\t = %d\n"
++msgid "S.M.A.R.T. not available"
+ msgstr ""
+ 
+-#: src/ata.c:167
+-msgid "S.M.A.R.T. not available"
++#: src/db.c:115
++#, c-format
++msgid ""
++"\n"
++"Regexp%s| Value | Description\n"
++"------%s---------------------\n"
++msgstr ""
++
++#: src/db.c:121
++#, c-format
++msgid "%s%s| %5d | %s\n"
+ msgstr ""
+ 
+-#: src/db.c:180
++#: src/db.c:236
+ #, c-format
+ msgid "hddtemp: can't open %1$s: %2$s\n"
+ msgstr ""
+ 
+-#: src/db.c:194
++#: src/db.c:250
+ #, c-format
+ msgid "ERROR: syntax error at line %1$d in %2$s\n"
+ msgstr ""
+ 
+-#: src/db.c:201
++#: src/db.c:257
+ #, c-format
+ msgid "  ERROR: line exceed %1$d characters in %2$s.\n"
+ msgstr ""
+ 
+-#: src/scsi.c:112 src/scsi.c:130
++#: src/scsi.c:111 src/scsi.c:129
+ #, c-format
+ msgid "log sense failed : %s"
+ msgstr ""
+--- hddtemp-0.3-beta15.orig/src/sata.c
++++ hddtemp-0.3-beta15/src/sata.c
+@@ -118,11 +118,22 @@
+   int              i;
+   u16 *            p;
+ 
+-  if(dsk->db_entry && dsk->db_entry->attribute_id == 0) {
++  if(dsk->db_entry->attribute_id == 0) {
+     close(dsk->fd);
+     dsk->fd = -1;
+     return GETTEMP_NOSENSOR;
+   }
++
++  switch(ata_get_powermode(dsk->fd)) {
++  case PWM_STANDBY:
++  case PWM_SLEEPING:
++    if (!wakeup)
++      return GETTEMP_DRIVE_SLEEP;
++  case PWM_UNKNOWN:
++  case PWM_ACTIVE: /* active or idle */
++  default:
++    break;
++  }
+   
+   /* get SMART values */
+   if(sata_enable_smart(dsk->fd) != 0) {
+@@ -154,24 +165,15 @@
+   }
+ 
+   /* temperature */
+-  if(dsk->db_entry && dsk->db_entry->attribute_id > 0)
+-    field = sata_search_temperature(values, dsk->db_entry->attribute_id);
+-  else
+-    field = sata_search_temperature(values, DEFAULT_ATTRIBUTE_ID);
++  field = sata_search_temperature(values, dsk->db_entry->attribute_id);
+ 
+   if(field)
+     dsk->value = *(field+3);
+ 
+   if(dsk->db_entry && dsk->value != -1)
+     return GETTEMP_KNOWN;
+-  else {
+-    if(dsk->value != -1) {
+-      return GETTEMP_GUESS;
+-    }
+-    else {
+-      return GETTEMP_UNKNOWN;
+-    }
+-  }
++  else
++    return GETTEMP_UNKNOWN;
+ 
+   /* never reached */
+ }
+--- hddtemp-0.3-beta15.orig/src/satacmds.c
++++ hddtemp-0.3-beta15/src/satacmds.c
+@@ -39,7 +39,7 @@
+ #include <sys/ioctl.h>
+ #include <scsi/sg.h>
+ #include <linux/hdreg.h>
+-#include <netinet/in.h>
++#include <byteswap.h>
+ 
+ // Application specific includes
+ #include "satacmds.h"
+@@ -80,8 +80,8 @@
+ 
+   ret = scsi_SG_IO(device, cdb, sizeof(cdb), buffer, cmd[3] * 512, sense, sizeof(sense), dxfer_direction);
+  
+-  /* Verify SATA magics */
+-  if (sense[0] != 0x72 || sense[7] != 0x0e || sense[9] != 0x0e || sense[10] != 0x00)
++  /* Verify SATA magic */
++  if (sense[0] != 0x72)
+     return 1;		  
+   else 
+     return ret;
+@@ -95,10 +95,10 @@
+   p = s;
+   end = &s[bytecount & ~1]; /* bytecount must be even */
+ 
+-  /* convert from big-endian to host byte order */
++  /* convert from big-endian to string order */
+   for (p = end ; p != s;) {
+     unsigned short *pp = (unsigned short *) (p -= 2);
+-    *pp = ntohs(*pp);
++    *pp = bswap_16(*pp);
+   }
+ 
+   /* strip leading blanks */
+--- hddtemp-0.3-beta15.orig/src/backtrace.c
++++ hddtemp-0.3-beta15/src/backtrace.c
+@@ -16,9 +16,10 @@
+  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+  */
+ 
++#define _GNU_SOURCE
+ #include <features.h>
+ 
+-#if defined(__i386__) && defined(__GLIBC__)
++#if (defined(__i386__) || defined(__x86_64__)) && defined(__GLIBC__)
+ 
+ #include <execinfo.h>
+ 
+@@ -31,8 +32,12 @@
+ #include <bits/sigcontext.h>
+ #include <sys/param.h>
+ 
+-#define __USE_GNU
+ #include <ucontext.h>
++#if defined(__i386__)
++#  define REG_IP REG_EIP
++#elif defined(__x86_64__)
++#  define REG_IP REG_RIP
++#endif
+ 
+ #define MAX_BTSIZE 64
+ 
+@@ -42,7 +47,6 @@
+   static char **messages = NULL;
+   static size_t btsize = 0;
+   static size_t i;
+-  static unsigned int old_eip, old_ebp;
+   static char *strerr = "???";
+   static FILE *fstrm;
+ 
+@@ -61,10 +65,10 @@
+       SIC_CASE(SEGV_MAPERR);
+       SIC_CASE(SEGV_ACCERR);
+     }
+-    fprintf(fstrm, "=== SEGFAULT (%s) : invalid access to %p, in 0x%08x\n",
++    fprintf(fstrm, "=== SEGFAULT (%s) : invalid access to %p, in %p\n",
+ 	    strerr,
+ 	    ist->si_addr,
+-	    puc->uc_mcontext.gregs[REG_EIP]);
++	    (void*)puc->uc_mcontext.gregs[REG_IP]);
+     break;
+   case SIGILL:
+     switch(ist->si_code) {
+@@ -77,10 +81,10 @@
+       SIC_CASE(ILL_COPROC);
+       SIC_CASE(ILL_BADSTK);
+     }
+-    fprintf(fstrm, "=== ILLEGAL INSTR (%s) : invalid access to %p, in 0x%08x\n",
++    fprintf(fstrm, "=== ILLEGAL INSTR (%s) : invalid access to %p, in %p\n",
+ 	    strerr,
+ 	    ist->si_addr,
+-	    puc->uc_mcontext.gregs[REG_EIP]);
++	    (void*)puc->uc_mcontext.gregs[REG_IP]);
+     break;
+   case SIGBUS:
+     switch(ist->si_code) {
+@@ -88,10 +92,10 @@
+       SIC_CASE(BUS_ADRERR);
+       SIC_CASE(BUS_OBJERR);
+     }
+-    fprintf(fstrm, "=== BUS ERROR (%p) : invalid access to %p, in 0x%08x\n",
++    fprintf(fstrm, "=== BUS ERROR (%p) : invalid access to %p, in %p\n",
+ 	    strerr,
+ 	    ist->si_addr,
+-	    puc->uc_mcontext.gregs[REG_EIP]);
++	    (void*)puc->uc_mcontext.gregs[REG_IP]);
+     break;
+   }
+   fflush(fstrm);
+@@ -101,7 +105,7 @@
+   /*
+     old_eip = *(unsigned int*)((void*)&n-4);
+     old_ebp = *(unsigned int*)((void*)&n-8);
+-    *(unsigned int*)((void*)&n-4) = puc->uc_mcontext.gregs[REG_EIP];
++    *(unsigned int*)((void*)&n-4) = puc->uc_mcontext.gregs[REG_IP];
+     *(unsigned int*)((void*)&n-8) = puc->uc_mcontext.gregs[REG_EBP];    
+     
+     btsize = backtrace(btinfo, MAX_BTSIZE);
+@@ -111,14 +115,14 @@
+   */
+   
+   btsize = backtrace(btinfo, MAX_BTSIZE);
+-  btinfo[1] = (void*) puc->uc_mcontext.gregs[REG_EIP];
++  btinfo[1] = (void*) puc->uc_mcontext.gregs[REG_IP];
+ 
+   messages = backtrace_symbols(btinfo, btsize);
+ 
+   for(i = 1;
+       i < btsize;
+       i++)
+-    fprintf(fstrm, "[%d] #%d: %s\n", getpid(), i, messages[i]);
++    fprintf(fstrm, "[%d] #%zu: %s\n", getpid(), i, messages[i]);
+   fflush(fstrm);
+   fclose(fstrm);
+ 
+--- hddtemp-0.3-beta15.orig/src/daemon.c
++++ hddtemp-0.3-beta15/src/daemon.c
+@@ -163,19 +163,16 @@
+ 
+     switch(dsk->ret) {
+     case GETTEMP_NOT_APPLICABLE:
+-      n = snprintf(msg, sizeof(msg), "%s%c%s%c%s%c%c",
++      n = snprintf(msg, sizeof(msg), "%s%c%s%cNA%c*",
+                    dsk->drive, separator,
+                    dsk->model, separator,
+-                   "NA",       separator,
+-                   '*');
++                   separator);
+       break;
+-    case GETTEMP_GUESS:
+     case GETTEMP_UNKNOWN:
+-      n = snprintf(msg, sizeof(msg), "%s%c%s%c%s%c%c",
++      n = snprintf(msg, sizeof(msg), "%s%c%s%cUNK%c*",
+                    dsk->drive, separator,
+-                   dsk->model, separator,
+-                   "UNK",     separator,
+-                   '*');
++                   dsk->model, separator, 
++		   separator);
+       break;
+     case GETTEMP_KNOWN:
+       n = snprintf(msg, sizeof(msg), "%s%c%s%c%d%c%c",
+@@ -185,26 +182,23 @@
+                    get_unit(dsk));
+       break;
+     case GETTEMP_NOSENSOR:
+-      n = snprintf(msg, sizeof(msg), "%s%c%s%c%s%c%c",
++      n = snprintf(msg, sizeof(msg), "%s%c%s%cNOS%c*",
+                    dsk->drive, separator,
+                    dsk->model, separator,
+-                   "NOS",      separator,
+-                   '*');
++                   separator);
+       break;
+     case GETTEMP_DRIVE_SLEEP:
+-      n = snprintf(msg, sizeof(msg), "%s%c%s%c%s%c%c",
++      n = snprintf(msg, sizeof(msg), "%s%c%s%cSLP%c*",
+                    dsk->drive, separator,
+                    dsk->model, separator,
+-                   "SLP",      separator,
+-                   '*');
++                   separator);
+       break;
+     case GETTEMP_ERROR:
+     default:
+-      n = snprintf(msg, sizeof(msg), "%s%c%s%c%s%c%c",
++      n = snprintf(msg, sizeof(msg), "%s%c%s%cERR%c*",
+                    dsk->drive,                        separator,
+                    (dsk->model) ? dsk->model : "???", separator,
+-                   "ERR",                             separator,
+-                   '*');
++                   separator);
+       break;
+     }
+     write(cfd,&separator, 1);
+@@ -222,14 +216,11 @@
+   for(dsk = ldisks; dsk; dsk = dsk->next) {
+     switch(dsk->ret) {
+     case GETTEMP_KNOWN:
+-    case GETTEMP_GUESS:
+-      value_to_unit(dsk);
+-
+       syslog(LOG_INFO, "%s: %s: %d %c", 
+              dsk->drive,
+ 	     dsk->model,
+-	     dsk->value,
+-	     dsk->db_entry->unit);
++	     value_to_unit(dsk),
++	     get_unit(dsk));
+       break;
+     case GETTEMP_DRIVE_SLEEP:
+       syslog(LOG_WARNING, _("%s: %s: drive is sleeping"), 
+@@ -270,28 +261,30 @@
+   fd_set             deffds;
+   time_t             next_time;
+ 
+-  switch(fork()) {
+-  case -1:
+-    perror("fork");
+-    exit(2);
+-    break;
+-  case 0:
+-    break;
+-  default:
+-    exit(0);
+-  }
+-  
+-  setsid();
+-  
+-  switch(fork()) {
+-  case -1:
+-    perror("fork");
+-    exit(2);
+-    break;
+-  case 0:
+-    break;
+-  default:
+-    exit(0);
++if (!foreground) {
++    switch(fork()) {
++    case -1:
++      perror("fork");
++      exit(2);
++      break;
++    case 0:
++      break;
++    default:
++      exit(0);
++    }
++
++    setsid();
++
++    switch(fork()) {
++    case -1:
++      perror("fork");
++      exit(2);
++      break;
++    case 0:
++      break;
++    default:
++      exit(0);
++    }
+   }
+   chdir("/");
+   umask(0);
+--- hddtemp-0.3-beta15.orig/src/hddtemp.c
++++ hddtemp-0.3-beta15/src/hddtemp.c
+@@ -75,7 +75,7 @@
+ char               separator = SEPARATOR;
+ 
+ struct bustype *   bus[BUS_TYPE_MAX];
+-int                tcp_daemon, debug, quiet, numeric, wakeup, af_hint;
++int                tcp_daemon, debug, quiet, numeric, wakeup, foreground, af_hint;
+ 
+ static enum { DEFAULT, CELSIUS, FAHRENHEIT } unit;
+ 
+@@ -194,23 +194,7 @@
+     if (numeric && quiet)
+       printf("0\n");      
+     else
+-      printf(_("%s: %s:  no sensor\n"), dsk->drive, dsk->model);
+-
+-    break;
+-  case GETTEMP_GUESS:
+-
+-    if(!quiet)
+-      fprintf(stderr,
+-	      _("WARNING: Drive %s doesn't appear in the database of supported drives\n"
+-		"WARNING: But using a common value, it reports something.\n"
+-		"WARNING: Note that the temperature shown could be wrong.\n"
+-		"WARNING: See --help, --debug and --drivebase options.\n"
+-		"WARNING: And don't forget you can add your drive to hddtemp.db\n"), dsk->drive);
+-
+-    if (! numeric)
+-      printf(_("%s: %s:  %d%sC or %sF\n"), dsk->drive, dsk->model, dsk->value, degree, degree);
+-    else
+-      printf("%d\n", value_to_unit(dsk));
++      fprintf(stderr, _("%s: %s:  no sensor\n"), dsk->drive, dsk->model);
+ 
+     break;
+   case GETTEMP_KNOWN:
+@@ -232,14 +216,14 @@
+     if (numeric && quiet)
+       printf("0\n");      
+     else
+-      printf(_("%s: %s: drive is sleeping\n"), dsk->drive, dsk->model);
++      fprintf(stderr, _("%s: %s: drive is sleeping\n"), dsk->drive, dsk->model);
+ 
+     break;
+   case GETTEMP_NOSENSOR:
+     if (numeric && quiet)
+       printf("0\n");      
+     else
+-      printf(_("%s: %s:  drive supported, but it doesn't have a temperature sensor.\n"), dsk->drive, dsk->model);
++      fprintf(stderr, _("%s: %s:  drive supported, but it doesn't have a temperature sensor.\n"), dsk->drive, dsk->model);
+       
+     break;
+   default:
+@@ -268,8 +252,9 @@
+ 
+ int main(int argc, char* argv[]) {
+   int           i, c, lindex = 0, db_loaded = 0;
++  int 		ret = 0;
+   int           show_db;
+-  struct disk * ldisks;
++  struct        disk * ldisks;
+ 
+   backtrace_sigsegv();
+   backtrace_sigill();
+@@ -279,7 +264,7 @@
+   bindtextdomain (PACKAGE, LOCALEDIR);
+   textdomain (PACKAGE);
+   
+-  show_db = debug = numeric = quiet = wakeup = af_hint = syslog_interval = 0;
++  show_db = debug = numeric = quiet = wakeup = af_hint = syslog_interval = foreground = 0;
+   unit = DEFAULT;
+   portnum = PORT_NUMBER;
+   listen_addr = NULL;
+@@ -294,6 +279,7 @@
+       {"drivebase",  0, NULL, 'b'},
+       {"debug",      0, NULL, 'D'},
+       {"file",       1, NULL, 'f'},
++      {"foreground", 0, NULL, 'F'},
+       {"listen",     1, NULL, 'l'},
+       {"version",    0, NULL, 'v'},
+       {"port",       1, NULL, 'p'},
+@@ -305,7 +291,7 @@
+       {0, 0, 0, 0}
+     };
+  
+-    c = getopt_long (argc, argv, "bDdf:l:hp:qs:u:vnw46S:", long_options, &lindex);
++    c = getopt_long (argc, argv, "bDdf:l:hp:qs:u:vnw46FS:", long_options, &lindex);
+     if (c == -1)
+       break;
+     
+@@ -382,12 +368,13 @@
+ 		 "                        (done for every drive supplied).\n"
+ 		 "  -d   --daemon      :  run hddtemp in TCP/IP daemon mode (port %d by default.)\n"
+ 		 "  -f   --file=FILE   :  specify database file to use.\n"
++		 "  -F   --foreground  :  don't daemonize, stay in foreground.\n"
+ 		 "  -l   --listen=addr :  listen on a specific interface (in TCP/IP daemon mode).\n"
+                  "  -n   --numeric     :  print only the temperature.\n"
+ 		 "  -p   --port=#      :  port to listen to (in TCP/IP daemon mode).\n"
+ 		 "  -s   --separator=C :  separator to use between fields (in TCP/IP daemon mode).\n"
+ 		 "  -S   --syslog=s    :  log temperature to syslog every s seconds.\n"
+-                 "  -u   --unit=[C|F]  :  force output temperature either in Celius or Fahrenheit.\n"
++                 "  -u   --unit=[C|F]  :  force output temperature either in Celsius or Fahrenheit.\n"
+ 		 "  -q   --quiet       :  do not check if the drive is supported.\n"
+ 		 "  -v   --version     :  display hddtemp version number.\n"
+ 		 "  -w   --wake-up     :  wake-up the drive if need.\n"
+@@ -418,6 +405,9 @@
+ 	  }
+         }
+ 	break;
++      case 'F':
++        foreground = 1;
++	break;
+       default:
+ 	exit(1);
+       }
+@@ -489,6 +479,7 @@
+     if( (dsk->fd = open(dsk->drive, O_RDONLY | O_NONBLOCK)) < 0) {
+       snprintf(dsk->errormsg, MAX_ERRORMSG_SIZE, "open: %s\n", strerror(errno));
+       dsk->type = ERROR;
++      ret = 1;
+       continue;
+     }
+ 
+@@ -501,6 +492,7 @@
+ 
+       ldisks = dsk->next;
+       free(dsk);
++      ret = 1;
+       continue;
+     }
+ 
+@@ -514,11 +506,17 @@
+ 	db_loaded = 1;
+       }      
+ 
++      dsk->db_entry = (struct harddrive_entry *)malloc(sizeof(struct harddrive_entry));
+       dbe = is_a_supported_drive(dsk->model);
+-      if(dbe) {
+-	dsk->db_entry = (struct harddrive_entry *)malloc(sizeof(struct harddrive_entry));
++      if(dbe)
+ 	memcpy(dsk->db_entry, dbe, sizeof(struct harddrive_entry));
+-      }	
++      else {
++        dsk->db_entry->regexp       = "";
++        dsk->db_entry->description  = "";
++        dsk->db_entry->attribute_id = DEFAULT_ATTRIBUTE_ID;
++        dsk->db_entry->unit         = 'C';
++        dsk->db_entry->next         = NULL;
++      }
+     }
+   }
+ 
+@@ -530,5 +528,5 @@
+     do_direct_mode(ldisks);
+   }
+ 
+-  return 0;
++  return ret;
+ }
+--- hddtemp-0.3-beta15.orig/src/ata.c
++++ hddtemp-0.3-beta15/src/ata.c
+@@ -75,7 +75,7 @@
+   int              i;
+   u16 *            p;
+ 
+-  if(dsk->db_entry && dsk->db_entry->attribute_id == 0) {
++  if(dsk->db_entry->attribute_id == 0) {
+     close(dsk->fd);
+     dsk->fd = -1;
+     return GETTEMP_NOSENSOR;
+@@ -140,24 +140,15 @@
+   */
+ 
+   /* temperature */
+-  if(dsk->db_entry && dsk->db_entry->attribute_id > 0)
+-    field = ata_search_temperature(values, dsk->db_entry->attribute_id);
+-  else
+-    field = ata_search_temperature(values, DEFAULT_ATTRIBUTE_ID);
++  field = ata_search_temperature(values, dsk->db_entry->attribute_id);
+ 
+   if(field)
+     dsk->value = *(field+3);
+ 
+-  if(dsk->db_entry && dsk->value != -1)
++  if(dsk->value != -1)
+     return GETTEMP_KNOWN;
+-  else {
+-    if(dsk->value != -1) {
+-      return GETTEMP_GUESS;
+-    }
+-    else {
+-      return GETTEMP_UNKNOWN;
+-    }
+-  }
++  else
++    return GETTEMP_UNKNOWN;
+ 
+   /* never reached */
+ }
+--- hddtemp-0.3-beta15.orig/src/hddtemp.h
++++ hddtemp-0.3-beta15/src/hddtemp.h
+@@ -39,8 +39,6 @@
+   GETTEMP_ERROR,            /* Error */
+   GETTEMP_NOT_APPLICABLE,   /* */
+   GETTEMP_UNKNOWN,          /* Drive is not in database */
+-  GETTEMP_GUESS,            /* Not in database, but something was guessed, user must
+-			       check that the temperature returned is correct */
+   GETTEMP_KNOWN,            /* Drive appear in database */
+   GETTEMP_NOSENSOR,         /* Drive appear in database but is known to have no sensor */
+   GETTEMP_DRIVE_SLEEP       /* Drive is sleeping */
+@@ -78,7 +76,7 @@
+ 
+ extern struct bustype *   bus[BUS_TYPE_MAX];
+ extern char               errormsg[MAX_ERRORMSG_SIZE];
+-extern int                tcp_daemon, debug, quiet, wakeup, af_hint;
++extern int                tcp_daemon, debug, quiet, wakeup, af_hint, foreground;
+ extern char               separator;
+ extern long               portnum, syslog_interval;
+ extern char *             listen_addr;
+--- hddtemp-0.3-beta15.orig/src/scsicmds.c
++++ hddtemp-0.3-beta15/src/scsicmds.c
+@@ -147,6 +147,7 @@
+     return 1;
+   else {
+     scsi_fixstring(buffer + 8, 24);
++    buffer[32] = 0;
+     return 0;
+   }
+ }
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/init b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/init
new file mode 100644
index 0000000..0df8f67
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/init
@@ -0,0 +1,100 @@
+#!/bin/sh
+#
+# skeleton        example file to build /etc/init.d/ scripts.
+#                This file should be used to construct scripts for /etc/init.d.
+#
+#                Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+#                Modified for Debian GNU/Linux
+#                by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+#
+# Version:        @(#)skeleton  1.8  03-Mar-1998  miquels@cistron.nl
+#
+
+### BEGIN INIT INFO
+# Provides:          hddtemp
+# Required-Start:    $remote_fs $syslog $network
+# Required-Stop:     $remote_fs $syslog $network
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: disk temperature monitoring daemon
+# Description:       hddtemp is a disk temperature monitoring daemon
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+NAME=hddtemp
+DAEMON=/usr/sbin/$NAME
+DESC="disk temperature monitoring daemon"
+
+DISKS="/dev/hd[a-z] /dev/hd[a-z][a-z]"
+DISKS="$DISKS /dev/sd[a-z] /dev/sd[a-z][a-z]"
+DISKS="$DISKS /dev/sr[a-z] /dev/sr[a-z][a-z]"
+INTERFACE="0.0.0.0"
+PORT="7634"
+SEPARATOR="|"
+RUN_SYSLOG="0"
+
+# Reads config file (will override defaults above)
+[ -r /etc/default/hddtemp ] && . /etc/default/hddtemp
+
+if [ -n "$RUN_SYSLOG" ] && [ "$RUN_SYSLOG" != "0" ] ; then
+  SYSLOG_ARG="-S $RUN_SYSLOG"
+fi
+
+if [ "$RUN_DAEMON" = "true" ] || [ "$RUN_DAEMON" = "yes" ] ; then
+  DAEMON_ARG="-d -l $INTERFACE -p $PORT -s $SEPARATOR"
+fi
+
+[ -x "$DAEMON" ] || exit 0
+
+. /lib/lsb/init-functions
+
+case "$1" in
+  start)
+    # master switch
+    if [ -n "$DAEMON_ARG" ] || [ -n "$SYSLOG_ARG" ] ; then
+      log_daemon_msg "Starting $DESC" "$NAME:"
+      CDROMS_LIST=$(sed -ne 's/^drive name:\t\+\(.*\)$/ \/dev\/\1/p' /proc/sys/dev/cdrom/info 2>/dev/null) || :
+      CDROMS_LIST="$CDROMS_LIST $(grep -sl '^ide-scsi ' /proc/ide/hd*/driver | awk -F / '{ print "/dev/"$4 }')"
+      for disk in $DISKS ; do
+        echo $CDROMS_LIST | grep -wq $disk && continue
+        echo $DISKS_NOPROBE | grep -wq $disk && continue
+        if $DAEMON -wn $OPTIONS $disk 2>/dev/null | grep -q '^[0-9]\+$' ; then
+          DISKS_LIST="$DISKS_LIST $disk";
+        fi
+      done
+      if [ -n "$DISKS_LIST" ] || [ -n "$DISKS_NOPROBE" ] ; then
+        start-stop-daemon --start --quiet --exec $DAEMON -- $DAEMON_ARG $SYSLOG_ARG $OPTIONS $DISKS_NOPROBE $DISKS_LIST
+        ret=$?
+        log_progress_msg "$DISKS_NOPROBE$DISKS_LIST"
+        log_end_msg $ret
+      else
+        log_progress_msg "no disks with monitoring capability were found."
+        log_end_msg 0
+      fi
+    fi
+    ;;
+  stop)
+    # master switch
+    if [ "$RUN_DAEMON" = "true" ] || [ "$RUN_DAEMON" = "yes" ] || [ "$RUN_SYSLOG" != "0" ] ; then
+      log_daemon_msg "Stopping $DESC" "$NAME"
+      start-stop-daemon --stop --oknodo --exec $DAEMON --retry 30
+      log_end_msg $?
+    fi
+    ;;
+  force-reload|reload)
+    exit 3
+    ;;
+  restart)
+    $0 stop && $0 start
+    ;;
+  status)
+    status_of_proc $DAEMON $NAME
+    exit $?
+    ;;
+  *)
+    echo "Usage: /etc/init.d/$NAME {start|stop|restart|status}" >&2
+    exit 1
+    ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
new file mode 100644
index 0000000..601b7b1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Hard disk temperature monitor daemon"
+SECTION = "console/network"
+LICENSE = "GPLv2+"
+
+PR = "r1"
+
+SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/hddtemp/hddtemp-0.3-beta15.tar.bz2 \
+           file://hddtemp-no-nls-support.patch \
+           file://hddtemp_0.3-beta15-52.diff \
+           file://hddtemp-0.3-beta15-autodetect-717479.patch \
+           file://hddtemp.db \
+           file://init \
+"
+
+SRC_URI[md5sum] = "8b829339e1ae9df701684ec239021bb8"
+SRC_URI[sha256sum] = "618541584054093d53be8a2d9e81c97174f30f00af91cb8700a97e442d79ef5b"
+
+LIC_FILES_CHKSUM = "file://GPL-2;md5=eb723b61539feef013de476e68b5c50a"
+
+inherit autotools gettext update-rc.d
+
+FILES_${PN} += "/usr/share/misc/hddtemp.db"
+
+do_install_append() {
+    install -d ${D}/usr/share/misc/
+    install -m 0644 ${WORKDIR}/hddtemp.db ${D}/usr/share/misc/hddtemp.db
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0644 ${WORKDIR}/init ${D}${sysconfdir}/init.d/hddtemp
+}
+
+INITSCRIPT_NAME = "hddtemp"
+INITSCRIPT_PARAMS = "start 99 2 3 4 5 . stop 20 0 1 6 ."
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/hidapi/hidapi_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/hidapi/hidapi_git.bb
new file mode 100644
index 0000000..a34797f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/hidapi/hidapi_git.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Multi-platform library to interface with USB and Bluetooth HID-Class devices"
+AUTHOR = "Alan Ott"
+HOMEPAGE = "http://www.signal11.us/oss/hidapi/"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause | GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7c3949a631240cb6c31c50f3eb696077"
+DEPENDS = "libusb udev"
+PV = "0.7.99+0.8.0-rc1+git${SRCPV}"
+
+SRCREV = "d17db57b9d4354752e0af42f5f33007a42ef2906"
+SRC_URI = "git://github.com/signal11/hidapi.git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/htop/htop_1.0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/htop/htop_1.0.3.bb
new file mode 100644
index 0000000..4e445c8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/htop/htop_1.0.3.bb
@@ -0,0 +1,22 @@
+SUMMARY = "htop process monitor"
+HOMEPAGE = "http://htop.sf.net"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=c312653532e8e669f30e5ec8bdc23be3"
+
+DEPENDS = "ncurses"
+RDEPENDS_${PN} = "ncurses-terminfo"
+
+SRC_URI = "http://hisham.hm/htop/releases/${PV}/htop-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "e768b9b55c033d9c1dffda72db3a6ac7"
+SRC_URI[sha256sum] = "055c57927f75847fdc222b5258b079a9542811a9dcf5421c615c7e17f55d1829"
+
+LDFLAGS_append_libc-uclibc = " -lubacktrace"
+
+do_configure_prepend () {
+	rm -rf ${S}/config.h
+}
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.3.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.3.3.bb
new file mode 100644
index 0000000..9e6f774
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.3.3.bb
@@ -0,0 +1,18 @@
+SUMMARY = "A spell checker and morphological analyzer library"
+HOMEPAGE = "http://hunspell.sourceforge.net/"
+LICENSE = "LGPLv2.1 | GPLv2 | MPLv1.1"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=ed3a37b3ba6d6be3e08ab45987cf1b88 \
+    file://COPYING.LGPL;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
+    file://COPYING.MPL;md5=bfe1f75d606912a4111c90743d6c7325 \
+"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/Hunspell/${PV}/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "4967da60b23413604c9e563beacc63b4"
+SRC_URI[sha256sum] = "a7b2c0de0e2ce17426821dc1ac8eb115029959b3ada9d80a81739fa19373246c"
+
+inherit autotools pkgconfig gettext
+
+RDEPENDS_${PN} = "perl"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.288.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.288.bb
new file mode 100644
index 0000000..67199e9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.288.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Hardware identification and configuration data"
+HOMEPAGE = "http://git.fedorahosted.org/git/hwdata.git"
+SECTION = "System/Base"
+
+LICENSE = "GPL-2.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57"
+SRC_URI = "https://git.fedorahosted.org/cgit/${BPN}.git/snapshot/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "f3fa1c5edb66ce5b376d95e772b2d303"
+SRC_URI[sha256sum] = "56fc26275b102e538fcfcf9c1093a09f476a1ea8d4e0c733d3c578442923693d"
+
+do_configure() {
+    ${S}/configure --datadir=${datadir} --libdir=${libdir}
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+}
+
+FILES_${PN} = "${libdir}/* \
+               ${datadir}/* "
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel-1.4/r25.diff b/import-layers/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel-1.4/r25.diff
new file mode 100644
index 0000000..e666ce0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel-1.4/r25.diff
@@ -0,0 +1,32 @@
+Taken from upstream subversion repository:
+
+http://code.google.com/p/iksemel/source/detail?r=25
+
+===================================================================
+---
+ configure.ac |   10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+--- iksemel-1.4.orig/configure.ac
++++ iksemel-1.4/configure.ac
+@@ -43,11 +43,19 @@ AM_CONDITIONAL(DO_POSIX, test "x$defio"
+ dnl Checks for library functions
+ AC_SEARCH_LIBS(recv,socket)
+ AC_CHECK_FUNCS(getopt_long)
+ AC_CHECK_FUNCS(getaddrinfo)
+ 
+-AM_PATH_LIBGNUTLS(,AC_DEFINE(HAVE_GNUTLS,,"Use libgnutls"))
++dnl Check GNU TLS
++PKG_CHECK_MODULES(GNUTLS, gnutls >= 2.0.0, have_gnutls=yes, have_gnutls=no)
++if test "x$have_gnutls" = "xyes"; then
++  LIBGNUTLS_CFLAGS="$GNUTLS_CFLAGS"
++  LIBGNUTLS_LIBS="$GNUTLS_LIBS"
++  AC_SUBST(LIBGNUTLS_CFLAGS)
++  AC_SUBST(LIBGNUTLS_LIBS)
++  AC_DEFINE(HAVE_GNUTLS, 1, [whether to use GnuTSL support.])
++fi
+ 
+ dnl Check -Wall flag of GCC
+ if test "x$GCC" = "xyes"; then
+   if test -z "`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`" ; then
+     CFLAGS="$CFLAGS -Wall"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.4.bb
new file mode 100644
index 0000000..f1276f9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.4.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Fast and portable XML parser and Jabber protocol library"
+AUTHOR = "Gurer Ozen <meduketto at gmail.com>"
+HOMEPAGE = "http://iksemel.googlecode.com"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
+DEPENDS = "gnutls"
+
+PR = "r1"
+
+# http://errors.yoctoproject.org/Errors/Details/25825/
+PNBLACKLIST[iksemel] ?= "Not compatible with gnutls version 3.4 currently in oe-core"
+
+SRC_URI = "http://iksemel.googlecode.com/files/${BP}.tar.gz;name=archive \
+           file://r25.diff"
+SRC_URI[archive.md5sum] = "532e77181694f87ad5eb59435d11c1ca"
+SRC_URI[archive.sha256sum] = "458c1b8fb3349076a6cecf26c29db1d561315d84e16bfcfba419f327f502e244"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_6.9.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_6.9.2.bb
new file mode 100644
index 0000000..a9f0134
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_6.9.2.bb
@@ -0,0 +1,89 @@
+SUMMARY = "ImageMagick is an image convertion tools"
+SECTION = "console/utils"
+LICENSE = "ImageMagick"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0887b670be7ef0c3cb37092b64d57514"
+# FIXME: There are many more checked libraries. All should be added or explicitly disabled to get consistent results.
+DEPENDS = "lcms bzip2 jpeg libpng librsvg tiff zlib virtual/fftw freetype"
+
+# Important note: tarballs for all patchsets within a version are deleted when
+# a new pachset is created. To avoid multiple patches for each patchset, try to
+# update to the last pachset of a version
+PATCHSET = "0"
+SRC_URI = "http://www.imagemagick.org/download/releases/ImageMagick-${PV}-${PATCHSET}.tar.xz \
+"
+SRC_URI[md5sum] = "99471c8c3f38c9264faf5c4ca7a31287"
+SRC_URI[sha256sum] = "07a2de28f7f9ab888ef47c02eb7e10cc3e0dd0e9797c5d71d6e71d19f842399e"
+
+S = "${WORKDIR}/ImageMagick-${PV}-${PATCHSET}"
+
+inherit autotools pkgconfig update-alternatives
+
+# xml disabled because it's using xml2-config --prefix to determine prefix which returns just /usr with our libxml2
+# if someone needs xml support then fix it first
+EXTRA_OECONF = "--program-prefix= --program-suffix=.im6 --without-perl --disable-openmp --without-xml --disable-opencl"
+
+CACHED_CONFIGUREVARS = "ac_cv_sys_file_offset_bits=yes"
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG[jp2] = "--with-jp2,,jasper"
+PACKAGECONFIG[lzma] = "--with-lzma,--without-lzma,xz"
+PACKAGECONFIG[openjpeg] = "--with-openjp2,--without-openjp2,openjpeg"
+PACKAGECONFIG[pango] = "--with-pango,--without-pango,pango cairo"
+PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp"
+PACKAGECONFIG[wmf] = "--with-wmf,--without-wmf,libwmf"
+PACKAGECONFIG[x11] = "--with-x,--without-x,virtual/libx11 libxext libxt"
+
+FILES_${PN} += "${libdir}/ImageMagick-${PV}/modules-Q16/*/*.so \
+                ${libdir}/ImageMagick-${PV}/modules-Q16/*/*.la \
+                ${libdir}/ImageMagick-${PV}/modules-Q16/filters \
+                ${libdir}/ImageMagick-${PV}/modules-Q16/coders \
+                ${libdir}/ImageMagick-${PV}/config-Q16 \
+                ${datadir}/ImageMagick-6 "
+
+FILES_${PN}-dev += "${libdir}/ImageMagick-${PV}/modules-Q16/*/*.a"
+
+FILES_${PN}-dbg += "${libdir}/ImageMagick-${PV}/modules-Q16/*/.debug/*"
+
+BBCLASSEXTEND = "native"
+
+ALTERNATIVE_PRIORITY = "100"
+
+ALTERNATIVE_${PN} = "animate compare composite conjure convert display \
+    identify import mogrify montage stream"
+
+ALTERNATIVE_TARGET[animate] = "${bindir}/animate.im6"
+ALTERNATIVE_TARGET[compare] = "${bindir}/compare.im6"
+ALTERNATIVE_TARGET[composite] = "${bindir}/composite.im6"
+ALTERNATIVE_TARGET[conjure] = "${bindir}/conjure.im6"
+ALTERNATIVE_TARGET[convert] = "${bindir}/convert.im6"
+ALTERNATIVE_TARGET[display] = "${bindir}/display.im6"
+ALTERNATIVE_TARGET[identify] = "${bindir}/identify.im6"
+ALTERNATIVE_TARGET[import] = "${bindir}/import.im6"
+ALTERNATIVE_TARGET[mogrify] = "${bindir}/mogrify.im6"
+ALTERNATIVE_TARGET[montage] = "${bindir}/montage.im6"
+ALTERNATIVE_TARGET[stream] = "${bindir}/stream.im6"
+
+ALTERNATIVE_${PN}-doc = "animate.1 compare.1 composite.1 conjure.1 \
+    convert.1 display.1 identify.1 import.1 mogrify.1 montage.1 stream.1"
+
+ALTERNATIVE_LINK_NAME[animate.1] = "${mandir}/man1/animate.1"
+ALTERNATIVE_TARGET[animate.1] = "${mandir}/man1/animate.im6.1"
+ALTERNATIVE_LINK_NAME[compare.1] = "${mandir}/man1/compare.1"
+ALTERNATIVE_TARGET[compare.1] = "${mandir}/man1/compare.im6.1"
+ALTERNATIVE_LINK_NAME[composite.1] = "${mandir}/man1/composite.1"
+ALTERNATIVE_TARGET[composite.1] = "${mandir}/man1/composite.im6.1"
+ALTERNATIVE_LINK_NAME[conjure.1] = "${mandir}/man1/conjure.1"
+ALTERNATIVE_TARGET[conjure.1] = "${mandir}/man1/conjure.im6.1"
+ALTERNATIVE_LINK_NAME[convert.1] = "${mandir}/man1/convert.1"
+ALTERNATIVE_TARGET[convert.1] = "${mandir}/man1/convert.im6.1"
+ALTERNATIVE_LINK_NAME[display.1] = "${mandir}/man1/display.1"
+ALTERNATIVE_TARGET[display.1] = "${mandir}/man1/display.im6.1"
+ALTERNATIVE_LINK_NAME[identify.1] = "${mandir}/man1/identify.1"
+ALTERNATIVE_TARGET[identify.1] = "${mandir}/man1/identify.im6.1"
+ALTERNATIVE_LINK_NAME[import.1] = "${mandir}/man1/import.1"
+ALTERNATIVE_TARGET[import.1] = "${mandir}/man1/import.im6.1"
+ALTERNATIVE_LINK_NAME[mogrify.1] = "${mandir}/man1/mogrify.1"
+ALTERNATIVE_TARGET[mogrify.1] = "${mandir}/man1/mogrify.im6.1"
+ALTERNATIVE_LINK_NAME[montage.1] = "${mandir}/man1/montage.1"
+ALTERNATIVE_TARGET[montage.1] = "${mandir}/man1/montage.im6.1"
+ALTERNATIVE_LINK_NAME[stream.1] = "${mandir}/man1/stream.1"
+ALTERNATIVE_TARGET[stream.1] = "${mandir}/man1/stream.im6.1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb
new file mode 100644
index 0000000..5030c78
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb
@@ -0,0 +1,19 @@
+SUMMARY = "C and C++ INI Library"
+HOMEPAGE = "http://code.google.com/p/inih/"
+PV = "0.0+gitr${SRCPV}"
+PKGV = "${GITPKGVTAG}"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dae28cbf28207425e0d0b3eb835f4bde"
+
+PR = "r3"
+
+# The github repository provides a cmake and pkg-config integration
+SRCREV = "25078f7156eb8647b3b35dd25f9ae6f8c4ee0589"
+SRC_URI = "git://github.com/OSSystems/inih.git"
+
+S = "${WORKDIR}/git"
+
+inherit gitpkgv cmake
+
+# We don't have libinih since we only have static libraries
+ALLOW_EMPTY_${PN} = "1"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/ipmiutil/ipmiutil/fix_systemd_path.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/ipmiutil/ipmiutil/fix_systemd_path.patch
new file mode 100644
index 0000000..2fa7c68
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/ipmiutil/ipmiutil/fix_systemd_path.patch
@@ -0,0 +1,318 @@
+allow systemd path to be defined by configure option.
+
+The configure probes the host for systemd path information.
+
+Upstream Status: Inappropriate [Embedded]
+
+Signed-off-By: Armin Kuster <akuster@mvista.com>
+
+Index: ipmiutil-2.9.6/configure
+===================================================================
+--- ipmiutil-2.9.6.orig/configure
++++ ipmiutil-2.9.6/configure
+@@ -792,7 +792,6 @@ LTLIBOBJS
+ LIBOBJS
+ pkgconfigdir
+ SHR_LINK
+-SYSTEMD_DIR
+ CROSS_LFLAGS
+ CROSS_CFLAGS
+ SUBDIR_S
+@@ -999,7 +998,7 @@ psdir='${docdir}'
+ libdir='${exec_prefix}/lib'
+ localedir='${datarootdir}/locale'
+ mandir='${datarootdir}/man'
+-
++systemddir='${datarootdir}/ipmiutil'
+ ac_prev=
+ ac_dashdash=
+ for ac_option
+@@ -1594,7 +1593,10 @@ Optional Features:
+   --enable-standalone    build standalone, with no GPL or LanPlus libs.
+   --enable-libsensors	 build libipmiutil with sensor modules [default=no]
+   --enable-gpl           build with some GPL code [default=no]
+-  --enable-systemd       enable systemd service type=notify support and %_unitdir [default=disabled]
++  --enable-systemd[=systemddir]      install systemd unit file.  If 'yes'
++                probe the system for unit directory.
++                If a path is specified, assume that
++                is a valid install path.  [default=disabled]
+ 
+ Optional Packages:
+   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+@@ -12980,7 +12982,6 @@ CROSS_LFLAGS=""
+ CROSS_CFLAGS=""
+ LIBSENSORS=""
+ SAM2OBJ="isensor2.o ievents2.o"
+-SYSTEMD_DIR=/usr/share/ipmiutil
+ 
+ # Check whether --enable-useflags was given.
+ if test "${enable_useflags+set}" = set; then
+@@ -13032,31 +13033,43 @@ if test "${enable_gpl+set}" = set; then
+     fi
+ 
+ fi
+-
++#
++# Check for systemd unit files direectory exists if unit file installation
++# is requested
++#
+ 
+ # Check whether --enable-systemd was given.
+-if test "${enable_systemd+set}" = set; then
+-  enableval=$enable_systemd;
+-fi
+-
+-if test "x$enable_systemd" = "xyes"; then
+-   GPL_CFLAGS="$GPL_CFLAGS -DENABLE_SYSTEMD"
+-   # if systemd enabled, install service scripts in unitdir
+-   SYSTEMD_DIR=`rpm --eval "%{_unitdir}"`
+-else
+-   # otherwise install the systemd service scripts in the data dir
+-  if test  "x$sysname" = "xDarwin" ; then
+-    # MacOS 'which' command returns 0 always
+-    SYSTEMD_DIR=/usr/share/ipmiutil
+-  else
++if test "${enable_systemd+set}" = set; then :
++  withval=$enable_systemd; if test "$withval" = yes; then
++  GPL_CFLAGS="$GPL_CFLAGS -DENABLE_SYSTEMD"
++  if test -z "$systemddir"; then
++    { $as_echo "$as_me:${as_lineno-$LINENO}: checking location of the systemd unit files directory" >&5
++$as_echo_n "checking location of the systemd unit files directory... " >&6; }
++    _rpmdir = ""
+     which rpm >/dev/null 2>&1
+     if test  $? -eq 0 ; then
+-       datad=`rpm --eval "%{_datadir}"`
+-       SYSTEMD_DIR=${datad}/ipmiutil
+-    else
+-       SYSTEMD_DIR=/usr/share/ipmiutil
++      _rpmdir = `rpm --eval "%{_unitdir}"`
+     fi
++    for systemd_d in ${datadir}/usr/share/ipmiutil ${_rpmdir} /usr/share/ipmiutil; do
++      if test -z "$systemddir"; then
++        if test -d "$systemd_d"; then
++          systemddir="$systemd_d"
++        fi
++      fi
++    done
+   fi
++  if test -n "$systemddir"; then
++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $systemddir" >&5
++$as_echo "$systemddir" >&6; }
++  else
++    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
++$as_echo "not found" >&6; }
++ fi
++else
++ if test "$withval" != no; then
++  systemddir=$withval
++ fi
++fi
+ fi
+ 
+ case "$archm" in
+Index: ipmiutil-2.9.6/configure.ac
+===================================================================
+--- ipmiutil-2.9.6.orig/configure.ac
++++ ipmiutil-2.9.6/configure.ac
+@@ -140,7 +140,6 @@ CROSS_LFLAGS=""
+ CROSS_CFLAGS=""
+ LIBSENSORS=""
+ SAM2OBJ="isensor2.o ievents2.o"
+-SYSTEMD_DIR=/usr/share/ipmiutil
+ 
+ AC_ARG_ENABLE([useflags],
+     [  --enable-useflags    include environment CFLAGS and LDFLAGS.],
+@@ -191,25 +190,42 @@ AC_ARG_ENABLE([gpl],
+ 
+ dnl Does this Linux have systemd enabled?  Otherwise use sysv init.
+ AC_ARG_ENABLE([systemd],
+-    [  --enable-systemd       enable systemd service type=notify support and %_unitdir [[default=disabled]]],)
+-if test "x$enable_systemd" = "xyes"; then
+-   GPL_CFLAGS="$GPL_CFLAGS -DENABLE_SYSTEMD"
+-   # if systemd enabled, install service scripts in unitdir
+-   SYSTEMD_DIR=`rpm --eval "%{_unitdir}"`
++    [  --enable-systemd[=systemddir]      install systemd unit file.  If 'yes'
++        probe the system for unit directory.
++        If a path is specified, assume that
++        is a valid install path. [[default=disabled]]],)
++# Check whether --enable-systemd was given.
++if test "${enable_systemd+set}" = set; then :
++	withval=$enable_systemd; if test "$withval" = yes; then
++	GPL_CFLAGS="$GPL_CFLAGS -DENABLE_SYSTEMD"
++	if test -z "$systemddir"; then
++		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking location of the systemd unit files directory" >&5
++		$as_echo_n "checking location of the systemd unit files directory... " >&6; }
++		_rpmdir = ""
++		which rpm >/dev/null 2>&1
++		if test  $? -eq 0 ; then
++			_rpmdir = `rpm --eval "%{_unitdir}"`
++		fi
++		for systemd_d in ${datadir}/usr/share/ipmiutil ${_rpmdir} /usr/share/ipmiutil; do
++			if test -z "$systemddir"; then
++				if test -d "$systemd_d"; then
++					systemddir="$systemd_d"
++				fi
++			fi
++		done
++	fi
++	if test -n "$systemddir"; then
++		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $systemddir" >&5
++		$as_echo "$systemddir" >&6; }
++	else
++		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
++		$as_echo "not found" >&6; }
++	fi
+ else
+-   # otherwise install the systemd service scripts in the data dir
+-  if test  "x$sysname" = "xDarwin" ; then
+-    # MacOS 'which' command returns 0 always
+-    SYSTEMD_DIR=/usr/share/ipmiutil
+-  else
+-    which rpm >/dev/null 2>&1
+-    if test  $? -eq 0 ; then
+-       datad=`rpm --eval "%{_datadir}"`
+-       SYSTEMD_DIR=${datad}/ipmiutil
+-    else
+-       SYSTEMD_DIR=/usr/share/ipmiutil
+-    fi
+-  fi
++	if test "$withval" != no; then
++		systemddir=$withval
++	fi
++fi
+ fi
+ 
+ dnl start main logic
+@@ -481,7 +497,7 @@ AC_SUBST(INS_LIB)
+ AC_SUBST(SUBDIR_S)
+ AC_SUBST(CROSS_CFLAGS)
+ AC_SUBST(CROSS_LFLAGS)
+-AC_SUBST(SYSTEMD_DIR)
++AC_SUBST(systemddir)
+ AC_SUBST(SHR_LINK)
+ AC_SUBST(pkgconfigdir)
+ 
+Index: ipmiutil-2.9.6/Makefile.in
+===================================================================
+--- ipmiutil-2.9.6.orig/Makefile.in
++++ ipmiutil-2.9.6/Makefile.in
+@@ -182,7 +182,7 @@ SHELL = @SHELL@
+ SHR_LINK = @SHR_LINK@
+ STRIP = @STRIP@
+ SUBDIR_S = @SUBDIR_S@
+-SYSTEMD_DIR = @SYSTEMD_DIR@
++SYSTEMD_DIR = @systemddir@
+ VERSION = @VERSION@
+ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@
+@@ -233,6 +233,7 @@ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ srcdir = @srcdir@
+ sysconfdir = @sysconfdir@
++systemddir = @systemddir@
+ target_alias = @target_alias@
+ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+Index: ipmiutil-2.9.6/scripts/Makefile.in
+===================================================================
+--- ipmiutil-2.9.6.orig/scripts/Makefile.in
++++ ipmiutil-2.9.6/scripts/Makefile.in
+@@ -126,7 +126,7 @@ SHELL = @SHELL@
+ SHR_LINK = @SHR_LINK@
+ STRIP = @STRIP@
+ SUBDIR_S = @SUBDIR_S@
+-SYSTEMD_DIR = @SYSTEMD_DIR@
++SYSTEMD_DIR = @systemddir@
+ VERSION = @VERSION@
+ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@
+@@ -195,7 +195,8 @@ cronto = ${DESTDIR}${etcdir}/cron.daily
+ sbinto = ${DESTDIR}${sbindir}
+ varto = ${DESTDIR}/var/lib/ipmiutil
+ initto = ${DESTDIR}@INIT_DIR@
+-sysdto = ${DESTDIR}@SYSTEMD_DIR@
++sysdto = ${DESTDIR}@systemddir@
++systemddir = @systemddir@
+ sysvinit = ${datato}
+ sbinfls = ialarms ihealth ifru igetevent ireset icmd isol ilan isensor isel iserial iwdt iconfig ipicmg ifirewall ifwum ihpm
+ all: all-am
+@@ -398,11 +399,14 @@ install:
+ 	${INSTALL_SCRIPT_SH} evt.sh       ${datato}
+ 	if [ -f /etc/debian_version ]; then \
+ 	   sysvinit=${initto}; fi
+-	${INSTALL_SCRIPT_SH} ipmiutil_wdt ${sysvinit}/ipmiutil_wdt
+-	${INSTALL_SCRIPT_SH} ipmiutil_asy ${sysvinit}/ipmiutil_asy
+-	${INSTALL_SCRIPT_SH} ipmiutil_evt ${sysvinit}/ipmiutil_evt
+-	${INSTALL_SCRIPT_SH} ipmi_port.sh ${sysvinit}/ipmi_port
+-	${INSTALL_SCRIPT_SH} ipmi_info    ${sysvinit}/ipmi_info
++	if [ ! -z "${systemddir}" ]; then \
++		$(MKDIR) ${sysdto}; \
++		${INSTALL_SCRIPT_SH} ipmiutil_wdt ${sysvinit}/ipmiutil_wdt; \
++		${INSTALL_SCRIPT_SH} ipmiutil_asy ${sysvinit}/ipmiutil_asy; \
++		${INSTALL_SCRIPT_SH} ipmiutil_evt ${sysvinit}/ipmiutil_evt; \
++		${INSTALL_SCRIPT_SH} ipmi_port.sh ${sysvinit}/ipmi_port; \
++		${INSTALL_SCRIPT_SH} ipmi_info    ${sysvinit}/ipmi_info; \
++	fi
+ 	${INSTALL_SCRIPT_SH} checksel     ${datato}
+ 	${INSTALL_DATA_SH} ipmiutil_wdt.service ${sysdto}
+ 	${INSTALL_DATA_SH} ipmiutil_asy.service ${sysdto}
+Index: ipmiutil-2.9.6/scripts/Makefile.am
+===================================================================
+--- ipmiutil-2.9.6.orig/scripts/Makefile.am
++++ ipmiutil-2.9.6/scripts/Makefile.am
+@@ -17,7 +17,8 @@ cronto = ${DESTDIR}${etcdir}/cron.daily
+ sbinto = ${DESTDIR}${sbindir}
+ varto  = ${DESTDIR}/var/lib/ipmiutil
+ initto = ${DESTDIR}@INIT_DIR@
+-sysdto = ${DESTDIR}@SYSTEMD_DIR@
++sysdto = ${DESTDIR}@systemddir@
++systemddir = @systemddir@
+ sysvinit = ${datato}
+ sbinfls = ialarms ihealth ifru igetevent ireset icmd isol ilan isensor isel iserial iwdt iconfig ipicmg ifirewall ifwum ihpm
+ 
+@@ -47,10 +48,14 @@ install:
+ 	${INSTALL_SCRIPT_SH} ipmi_port.sh ${sysvinit}/ipmi_port
+ 	${INSTALL_SCRIPT_SH} ipmi_info    ${sysvinit}/ipmi_info
+ 	${INSTALL_SCRIPT_SH} checksel     ${datato}
+-	${INSTALL_DATA_SH} ipmiutil_wdt.service ${sysdto}
+-	${INSTALL_DATA_SH} ipmiutil_asy.service ${sysdto}
+-	${INSTALL_DATA_SH} ipmiutil_evt.service ${sysdto}
+-	${INSTALL_DATA_SH} ipmi_port.service    ${sysdto}
++	
++	if [ ! -z "${systemddir}" ]; then \
++		$(MKDIR) ${sysdto}; \
++		${INSTALL_DATA_SH} ipmiutil_wdt.service ${sysdto}; \
++		${INSTALL_DATA_SH} ipmiutil_asy.service ${sysdto}; \
++		${INSTALL_DATA_SH} ipmiutil_evt.service ${sysdto}; \
++		${INSTALL_DATA_SH} ipmi_port.service    ${sysdto}; \
++	fi
+ 	${INSTALL_SCRIPT_SH} ipmiutil.env     ${datato}
+ 	${INSTALL_SCRIPT_SH} ipmiutil.pre     ${datato}
+ 	${INSTALL_SCRIPT_SH} ipmiutil.setup   ${datato}
+Index: ipmiutil-2.9.6/lib/Makefile.in
+===================================================================
+--- ipmiutil-2.9.6.orig/lib/Makefile.in
++++ ipmiutil-2.9.6/lib/Makefile.in
+@@ -128,7 +128,7 @@ SHELL = @SHELL@
+ SHR_LINK = @SHR_LINK@
+ STRIP = @STRIP@
+ SUBDIR_S = @SUBDIR_S@
+-SYSTEMD_DIR = @SYSTEMD_DIR@
++SYSTEMD_DIR = @systemddir@
+ VERSION = @VERSION@
+ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@
+Index: ipmiutil-2.9.6/lib/lanplus/Makefile.in
+===================================================================
+--- ipmiutil-2.9.6.orig/lib/lanplus/Makefile.in
++++ ipmiutil-2.9.6/lib/lanplus/Makefile.in
+@@ -177,7 +177,8 @@ SHELL = @SHELL@
+ SHR_LINK = @SHR_LINK@
+ STRIP = @STRIP@
+ SUBDIR_S = @SUBDIR_S@
+-SYSTEMD_DIR = @SYSTEMD_DIR@
++SYSTEMD_DIR = @systemddir@
++systemddir = @systemddir@
+ VERSION = @VERSION@
+ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/ipmiutil/ipmiutil_2.9.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/ipmiutil/ipmiutil_2.9.6.bb
new file mode 100644
index 0000000..a4273fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/ipmiutil/ipmiutil_2.9.6.bb
@@ -0,0 +1,60 @@
+SUMMARY = "ipmiutil is an easy-to-use set of IPMI server management utilities.\
+It can get/set sensor thresholds, automate SEL management, do SOL console, etc."
+
+DESCRIPTION = "The IPMI Management Utilities currently work with platforms that \
+support the IPMI 1.5 or 2.0 specification.   IPMI servers can be managed\
+locally, or remotely via IPMI LAN, even when the OS or main CPU is not\
+functional.\n \
+The ipmiutil utilities will use an IPMI Driver, either the Intel IPMI package \
+(ipmidrvr, /dev/imb), MontaVista OpenIPMI (/dev/ipmi0), the valinux IPMI \
+Driver (/dev/ipmikcs), or the LANDesk ldipmi daemon.  The ipmiutil utilities \
+can also use direct user-space I/Os in Linux or FreeBSD if no IPMI driver \
+is detected."
+
+HOMEPAGE = "http://ipmiutil.sourceforge.net"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f9372493401f309e6149dd2ce0a044b"
+
+#PARALLEL_MAKE = ""
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/ipmiutil/ipmiutil-${PV}.tar.gz \
+    file://fix_systemd_path.patch "
+
+SRC_URI[md5sum] = "462087995f05fa9e692ed7f55c840f71"
+SRC_URI[sha256sum] = "884c1f3d8bfb0b33c303973d286c3166f5a537976451a0312e3524af54771519"
+
+inherit autotools-brokensep pkgconfig systemd
+
+PACKAGECONFIG ?= "lanplus gpl"
+PACKAGECONFIG += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+PACKAGECONFIG[systemd] = "--enable-systemd=${datadir}/${BPN}, --enable-systemd=no"
+PACKAGECONFIG[sha256] = "--enable-sha256, --enable-sha256=no, openssl-native, openssl"
+PACKAGECONFIG[lanplus] = "--enable-lanplus, --enable-lanplus=no, openssl-native, openssl"
+PACKAGECONFIG[landesk] = "--enable-landesk, --enable-landesk=no"
+PACKAGECONFIG[sensors] = "--enable-libsensors, --enable-libsensors=no" 
+
+#build with some GPL code
+PACKAGECONFIG[gpl] = "--enable-gpl, --enable-gpl=no"
+#no GPL or LanPlus libs
+PACKAGECONFIG[standalone] = "--enable-standalone, --enable-standalone=no"
+
+CFLAGS += "-I${STAGING_INCDIR}"
+LDFLAGS += "-L${STAGING_LIBDIR}"
+
+do_configure () {
+    aclocal
+    libtoolize --automake --copy --force
+    autoheader
+    automake --foreign --add-missing --copy
+
+    aclocal
+    autoconf
+    automake --foreign
+    ./configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
+}
+
+do_install () {
+    oe_runmake install DESTDIR=${D}
+}
+
+COMPATIBLE_HOST = '(x86_64|i.86).*-linux'
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/joe/joe_3.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/joe/joe_3.1.bb
new file mode 100644
index 0000000..fb9a9fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/joe/joe_3.1.bb
@@ -0,0 +1,15 @@
+SECTION = "console/utils"
+SUMMARY = "Console text editor with good functionality, good choice for vi-haters"
+HOMEPAGE = "http://joe-editor.sourceforge.net/"
+LICENSE = "GPLv1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=da10ed7cf8038981c580e11c1d3e8fb6"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/joe-editor/joe-${PV}.tar.gz"
+
+PACKAGECONFIG ??= "curses"
+PACKAGECONFIG[curses] = "--enable-curses,--disable-curses,ncurses,ncurses-terminfo"
+
+inherit autotools
+
+SRC_URI[md5sum] = "2a6ef018870fca9b7df85401994fb0e0"
+SRC_URI[sha256sum] = "252390e4bc687957f09f334095904c8cc53b39c7b663ed47861ae1d11aef5946"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.7.bb
new file mode 100644
index 0000000..12ccb20
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.7.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Little cms is a small-footprint, speed optimized color management engine"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6c786c3b7a4afbd3c990f1b81261d516"
+SRC_URI = "${SOURCEFORGE_MIRROR}/lcms/lcms2-${PV}.tar.gz"
+SRC_URI[md5sum] = "06c1626f625424a811fb4b5eb070839d"
+SRC_URI[sha256sum] = "4524234ae7de185e6b6da5d31d6875085b2198bc63b1211f7dde6e2d197d6a53"
+
+DEPENDS = "tiff"
+
+BBCLASSEXTEND = "native"
+
+S = "${WORKDIR}/lcms2-${PV}"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.11.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.11.bb
new file mode 100644
index 0000000..5f3b889
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.11.bb
@@ -0,0 +1,28 @@
+SUMMARY = "A graphical front-end for gcov"
+HOMEPAGE = "http://ltp.sourceforge.net/coverage/lcov.php"
+DESCRIPTION = "LCOV is a graphical front-end for GCC's coverage testing \
+tool gcov. It collects gcov data for multiple source files and creates \
+HTML pages containing the source code annotated with coverage information. \
+It also adds overview pages for easy navigation within the file structure. \
+LCOV supports statement, function and branch coverage measurement." 
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+RDEPENDS_${PN} += " \
+    gcov \
+    perl \
+    perl-module-filehandle \
+    perl-module-getopt-std \
+    perl-module-digest-sha \
+"
+
+SRC_URI = "http://downloads.sourceforge.net/ltp/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "e79b799ae3ce149aa924c7520e993024"
+SRC_URI[sha256sum] = "c282de8d678ecbfda32ce4b5c85fc02f77c2a39a062f068bd8e774d29ddc9bf8"
+
+do_install() {
+    oe_runmake install PREFIX=${D}
+    sed -i -e '1s,#!.*perl,#! ${USRBINPATH}/env perl,' ${D}${bindir}/*
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libatasmart/libatasmart_0.19.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libatasmart/libatasmart_0.19.bb
new file mode 100644
index 0000000..16657b4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libatasmart/libatasmart_0.19.bb
@@ -0,0 +1,19 @@
+SUMMARY = "ATA S.M.A.R.T. Reading and Parsing Library"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+DEPENDS = "udev"
+
+SRCREV = "de6258940960443038b4c1651dfda3620075e870"
+SRC_URI = "git://git.0pointer.de/libatasmart.git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools lib_package pkgconfig
+
+do_install_append() {
+    sed -i -e s://:/:g -e 's:=${libdir}/libudev.la:-ludev:g' ${D}${libdir}/libatasmart.la
+}
+
+PACKAGES =+ "${PN}-dev-vala"
+FILES_${PN}-dev-vala = "${datadir}/vala"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libcanberra/files/0001-build-gtk-and-gtk3-version-for-canberra_gtk_play.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libcanberra/files/0001-build-gtk-and-gtk3-version-for-canberra_gtk_play.patch
new file mode 100644
index 0000000..4e0984f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libcanberra/files/0001-build-gtk-and-gtk3-version-for-canberra_gtk_play.patch
@@ -0,0 +1,92 @@
+From 4a89ddffbb14d747adbe3365ace4db87de52ba39 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Mon, 16 Sep 2013 16:08:28 +0200
+Subject: [PATCH] build gtk- and gtk3-version for canberra_gtk_play
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ src/Makefile.am |   25 +++++++++++++++----------
+ 1 files changed, 15 insertions(+), 10 deletions(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 56ed96d..fc72e1f 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -319,9 +319,6 @@ endif
+ 
+ if HAVE_GTK_ANY
+ 
+-bin_PROGRAMS += \
+-	canberra-gtk-play
+-
+ include_HEADERS += \
+ 	canberra-gtk.h
+ 
+@@ -329,6 +326,9 @@ endif
+ 
+ if HAVE_GTK3
+ 
++bin_PROGRAMS += \
++	canberra-gtk3-play
++
+ lib_LTLIBRARIES += \
+ 	libcanberra-gtk3.la
+ 
+@@ -367,6 +367,9 @@ endif
+ 
+ if HAVE_GTK
+ 
++bin_PROGRAMS += \
++	canberra-gtk-play
++
+ lib_LTLIBRARIES += \
+ 	libcanberra-gtk.la
+ 
+@@ -399,14 +402,17 @@ endif
+ 
+ if HAVE_GTK3
+ 
+-canberra_gtk_play_LDADD = \
++canberra_gtk3_play_LDADD = \
+ 	$(GTK3_LIBS) \
+ 	libcanberra.la \
+ 	libcanberra-gtk3.la
+-canberra_gtk_play_CFLAGS = \
++canberra_gtk3_play_CFLAGS = \
+ 	$(GTK3_CFLAGS)
+ 
+-else
++canberra_gtk3_play_SOURCES = \
++	canberra-gtk-play.c
++
++endif
+ if HAVE_GTK
+ 
+ canberra_gtk_play_LDADD = \
+@@ -416,7 +422,9 @@ canberra_gtk_play_LDADD = \
+ canberra_gtk_play_CFLAGS = \
+ 	$(GTK_CFLAGS)
+ 
+-endif
++canberra_gtk_play_SOURCES = \
++	canberra-gtk-play.c
++
+ endif
+ 
+ if HAVE_GTK_ANY
+@@ -424,9 +432,6 @@ if HAVE_GTK_ANY
+ dist_gsdgtkmodules_DATA = \
+ 	canberra-gtk-module.desktop
+ 
+-canberra_gtk_play_SOURCES = \
+-	canberra-gtk-play.c
+-
+ EXTRA_DIST += \
+ 	libcanberra-login-sound.desktop.in \
+ 	libcanberra-ready-sound.desktop.in \
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb
new file mode 100644
index 0000000..f473775
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb
@@ -0,0 +1,63 @@
+SUMMARY = "Implementation of XDG Sound Theme and Name Specifications"
+DESCRIPTION = "Libcanberra is an implementation of the XDG Sound Theme and Name Specifications, for generating event sounds on free desktops."
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+                    file://src/canberra.h;beginline=7;endline=24;md5=c616c687cf8da540a14f917e0d23ab03"
+
+DEPENDS = "libtool libvorbis"
+
+inherit autotools gtk-doc
+
+SRC_URI = " \
+    http://0pointer.de/lennart/projects/${BPN}/${BPN}-${PV}.tar.xz \
+    file://0001-build-gtk-and-gtk3-version-for-canberra_gtk_play.patch \
+"
+SRC_URI[md5sum] = "34cb7e4430afaf6f447c4ebdb9b42072"
+SRC_URI[sha256sum] = "c2b671e67e0c288a69fc33dc1b6f1b534d07882c2aceed37004bf48c601afa72"
+
+EXTRA_OECONF = "\
+    --enable-null \
+    --disable-oss \
+    --disable-tdb \
+    --disable-lynx \
+"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES','alsa','alsa','',d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES','pulseaudio','pulseaudio','',d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES','x11','gtk gtk3','',d)} \
+"
+PACKAGECONFIG[alsa] = "--enable-alsa, --disable-alsa, alsa-lib"
+PACKAGECONFIG[pulseaudio] = "--enable-pulse, --disable-pulse, pulseaudio"
+PACKAGECONFIG[gstreamer] = "--enable-gstreamer, --disable-gstreamer, gstreamer1.0"
+PACKAGECONFIG[gtk] = "--enable-gtk, --disable-gtk, gtk+"
+PACKAGECONFIG[gtk3] = "--enable-gtk3, --disable-gtk3, gtk+3"
+
+python populate_packages_prepend() {
+    plugindir = d.expand('${libdir}/${BPN}-${PV}/')
+    do_split_packages(d, plugindir, '^libcanberra-(.*)\.so$', 'libcanberra-%s', '%s support library', extra_depends='' )
+    do_split_packages(d, plugindir, '^libcanberra-(.*)\.la$', 'libcanberra-%s', '%s support library', extra_depends='' )
+}
+
+PACKAGES =+ "${PN}-gnome ${PN}-gtk2 ${PN}-gtk3 ${PN}-systemd"
+PACKAGES_DYNAMIC += "^libcanberra-.*"
+
+FILES_${PN} = "${bindir}/ ${libdir}/${BPN}.so.*"
+
+FILES_${PN}-dev += "${datadir}/vala/vapi ${libdir}/*/modules/*.la ${libdir}/*/*.la"
+
+FILES_${PN}-dbg += "${libdir}/${BPN}-${PV}/.debug ${libdir}/gtk-*/modules/.debug"
+
+FILES_${PN}-gtk2 = "${libdir}/${BPN}-gtk.so.* \
+                    ${libdir}/gtk-2.0/modules/*.so \
+                    ${bindir}/canberra-gtk-play"
+
+# -gtk3 ships a symlink to a .so
+INSANE_SKIP_${PN}-gtk3 = "dev-so"
+FILES_${PN}-gtk3 = "${libdir}/${BPN}-gtk3.so.* \
+                    ${libdir}/gtk-3.0/modules/*.so \
+                    ${bindir}/canberra-gtk3-play"
+
+FILES_${PN}-gnome = "${libdir}/gnome-settings-daemon-3.0/ \
+                     ${datadir}/gdm/ ${datadir}/gnome/"
+
+FILES_${PN}-systemd = "${systemd_unitdir}/system/*.service"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi-drivers.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi-drivers.inc
new file mode 100644
index 0000000..b509532
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi-drivers.inc
@@ -0,0 +1,51 @@
+# libdbi-drivers OE build file
+# Copyright (C) 2005, Koninklijke Philips Electronics NV.  All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION = "Database Drivers for libdbi"
+HOMEPAGE = "http://libdbi-drivers.sourceforge.net/"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
+SECTION = "libs"
+
+PROVIDES = "libdbd-sqlite"
+DEPENDS = "libdbi sqlite sqlite3 mysql5 postgresql"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libdbi-drivers/libdbi-drivers-${PV}.tar.gz"
+
+inherit autotools
+
+PACKAGES += "libdbd-sqlite3 libdbd-sqlite libdbd-pgsql libdbd-mysql"
+
+EXTRA_OECONF = "--with-dbi-incdir=${STAGING_INCDIR} \
+                --with-dbi-libdir=${STAGING_LIBDIR} \
+                --with-sqlite \
+                --with-sqlite3 \
+                --with-pgsql \
+                --with-mysql \
+                --with-sqlite-libdir=${STAGING_LIBDIR} \
+                --with-sqlite-incdir=${STAGING_INCDIR} \
+                --with-sqlite3-incdir=${STAGING_INCDIR} \
+                --with-sqlite3-libdir=${STAGING_LIBDIR} \
+                --with-mysql-incdir=${STAGING_INCDIR} \
+                --with-mysql-libdir=${STAGING_LIBDIR} \
+                --with-pgsql-incdir=${STAGING_INCDIR} \
+                --with-pgsql-libdir=${STAGING_LIBDIR} \
+                --disable-docs"
+
+FILES_${PN}-dbg += " ${libdir}/dbd/.debug/*.so"
+FILES_${PN}-dev += " ${libdir}/dbd/*.la"
+FILES_${PN}-staticdev += " ${libdir}/dbd/*.a"
+
+DESCRIPTION_libdbd-sqlite = "SQLite database driver for libdbi"
+FILES_libdbd-sqlite = "${libdir}/dbd/libdbdsqlite.so"
+
+DESCRIPTION_libdbd-sqlite3 =  "SQLite3 database driver for libdbi"
+FILES_libdbd-sqlite3 = "${libdir}/dbd/libdbdsqlite3.so"
+
+DESCRIPTION_libdbd-mysql = "MySQL4 database driver for libdbi"
+FILES_libdbd-mysql = "${libdir}/dbd/libdbdmysql.so"
+
+DESCRIPTION_libdbd-psql = "Postgres SQL database driver for libdbi"
+FILES_libdbd-pgsql = "${libdir}/dbd/libdbdpgsql.so"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi-drivers_0.8.3-1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi-drivers_0.8.3-1.bb
new file mode 100644
index 0000000..ec869c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi-drivers_0.8.3-1.bb
@@ -0,0 +1,8 @@
+require ${PN}.inc
+
+
+SRC_URI[md5sum] = "4de79b323162a5a7652b65b608eca6cd"
+SRC_URI[sha256sum] = "4ab9944398ce769c0deeb64d2f73555c67bc25ccd2ade1ccf552226c7b2acf72"
+
+# libdbi-drivers-0.8.3-1/drivers/mysql/dbd_mysql.c:232:5: error: conflicting types for 'dbd_goto_row'
+PNBLACKLIST[libdbi-drivers] ?= "BROKEN: fails to build with gcc-5"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi.inc
new file mode 100644
index 0000000..cea2838
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi.inc
@@ -0,0 +1,17 @@
+# libdbi OE build file
+# Copyright (C) 2005, Koninklijke Philips Electronics NV.  All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION = "Database Independent Abstraction Layer for C"
+HOMEPAGE = "http://libdbi.sourceforge.net/"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
+SECTION = "libs"
+
+INC_PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libdbi/libdbi-${PV}.tar.gz"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-docs"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi_0.9.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi_0.9.0.bb
new file mode 100644
index 0000000..24eae28
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libdbi/libdbi_0.9.0.bb
@@ -0,0 +1,6 @@
+require ${PN}.inc
+
+PR = "${INC_PR}.0"
+
+SRC_URI[md5sum] = "05e2ceeac4bc85fbe40de8b4b22d9ab3"
+SRC_URI[sha256sum] = "dafb6cdca524c628df832b6dd0bf8fabceb103248edb21762c02d3068fca4503"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee.inc
new file mode 100644
index 0000000..256fa05
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee.inc
@@ -0,0 +1,39 @@
+SUMMARY = "An Event Expression Library inspired by CEE"
+DESCRIPTION = "The core idea of libee is to provide a small \
+but hopefully convenient API layer above the CEE standard."
+
+HOMEPAGE = "http://www.libee.org"
+SECTION = "base"
+
+LICENSE = "LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1c2687de35e36ba3b999136236a66cd6"
+
+SRC_URI = "http://www.libee.org/download/files/download/${BPN}-${PV}.tar.gz\
+           file://libee-parallel-make.patch \
+           file://run-ptest \
+           file://ezapi1.sh \
+"
+
+inherit autotools ptest pkgconfig
+
+DEPENDS += "libestr"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'testbench', '', d)}"
+
+PACKAGECONFIG[debug] = "--enable-debug,--disable-debug,,"
+PACKAGECONFIG[testbench] = "--enable-testbench,--disable-testbench,,"
+
+TESTDIR = "tests"
+
+# We presume the tests we are going to install so just build them directly.
+#
+do_compile_ptest() {
+	oe_runmake -C ${TESTDIR} genfile ezapi1
+}
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}
+	install -m 0755 ${B}/${TESTDIR}/genfile ${D}${PTEST_PATH}
+	install -m 0755 ${B}/${TESTDIR}/.libs/ezapi1 ${D}${PTEST_PATH}
+	install -m 0755 ${WORKDIR}/ezapi1.sh ${D}${PTEST_PATH}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee/ezapi1.sh b/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee/ezapi1.sh
new file mode 100755
index 0000000..e9db5e6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee/ezapi1.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+echo ---------------------------------------------------------------------------
+echo A very basic test for the event class
+echo ---------------------------------------------------------------------------
+rm -f infile
+./genfile 100 > infile
+./ezapi1 -iinfile
+if [ $? -ne 0 ] ; then
+   echo "FAIL: $0"
+   exit 1
+fi
+echo "PASS: $0"
+rm -f infile
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee/libee-parallel-make.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee/libee-parallel-make.patch
new file mode 100644
index 0000000..25e5c6a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee/libee-parallel-make.patch
@@ -0,0 +1,20 @@
+fix parallel compiling problem
+
+without specifying libee_convert_DEPENDENCIES = libee.la, libee_convert
+can't find libee.la when linking as libee is not generated yet.
+ 
+Upstream-Status: pending
+
+Signed-off-by: Yao Zhao <yao.zhao@windriver.com>
+---
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 08aaa9e..f0c78f7 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -46,5 +46,6 @@ libee_la_LDFLAGS = -version-info 0:0:0
+ libee_convert_SOURCES = convert.c
+ libee_convert_CPPFLAGS =  -I$(top_srcdir) $(LIBEE_CFLAGS) $(LIBESTR_CFLAGS) $(LIBXML2_CFLAGS)
+ libee_convert_LDADD = $(LIBEE_LIBS) $(LIBXML2_LIBS) $(LIBESTR_LIBS)
++libee_convert_DEPENDENCIES = libee.la
+ 
+ include_HEADERS = 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee/run-ptest b/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee/run-ptest
new file mode 100755
index 0000000..3cb6607
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+#
+./ezapi1.sh
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee_0.4.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee_0.4.1.bb
new file mode 100644
index 0000000..ef2c20d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libee/libee_0.4.1.bb
@@ -0,0 +1,4 @@
+require ${BPN}.inc
+
+SRC_URI[md5sum] = "7bbf4160876c12db6193c06e2badedb2"
+SRC_URI[sha256sum] = "c0dac01938593deee06c3d161e4eda4ecc0fd7317e1321bd96e301aceb7fb027"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen/0001-CMakeLists.txt-install-FindEigen3.cmake-script.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen/0001-CMakeLists.txt-install-FindEigen3.cmake-script.patch
new file mode 100644
index 0000000..761dadb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen/0001-CMakeLists.txt-install-FindEigen3.cmake-script.patch
@@ -0,0 +1,28 @@
+From fd8bc66efac1059c1068f804746b01b90177c333 Mon Sep 17 00:00:00 2001
+From: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
+Date: Sun, 18 Oct 2015 16:52:25 +0200
+Subject: [PATCH] CMakeLists.txt: install FindEigen3.cmake script
+
+Upstream-Status: Pending
+
+Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
+---
+ CMakeLists.txt | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 76a11b9..ec6c6ea 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -342,6 +342,8 @@ if(EIGEN_BUILD_PKGCONFIG)
+         )
+ endif(EIGEN_BUILD_PKGCONFIG)
+ 
++install(FILES "${PROJECT_SOURCE_DIR}/cmake/FindEigen3.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/cmake/Modules")
++
+ add_subdirectory(Eigen)
+ 
+ add_subdirectory(doc EXCLUDE_FROM_ALL)
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.2.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.2.6.bb
new file mode 100644
index 0000000..89a25a9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.2.6.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms."
+AUTHOR = "Benoît Jacob and Gaël Guennebaud and others"
+HOMEPAGE = "http://eigen.tuxfamily.org/"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING.MPL2;md5=815ca599c9df247a0c7f619bab123dad"
+
+SRC_URI = "http://bitbucket.org/eigen/eigen/get/${PV}.tar.bz2 \
+           file://0001-CMakeLists.txt-install-FindEigen3.cmake-script.patch"
+SRC_URI[md5sum] = "87274966745d2d3e7964fcc654d0a24b"
+SRC_URI[sha256sum] = "8a3352f9a5361fe90e451a7305fb1896fc7f771dc16cc0edd8e6b157f52c343e"
+
+S = "${WORKDIR}/eigen-eigen-c58038c56923"
+
+inherit cmake
+
+EXTRA_OECMAKE += "-Dpkg_config_libdir=${libdir}"
+
+FILES_${PN} = "${includedir} ${libdir}"
+FILES_${PN}-dev = "${datadir}/cmake/Modules"
+
+# ${PN} is empty so we need to tweak -dev and -dbg package dependencies
+RDEPENDS_${PN}-dev = ""
+RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.10.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.10.bb
new file mode 100644
index 0000000..9bff4f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.10.bb
@@ -0,0 +1,11 @@
+SUMMARY = "some essentials for string handling (and a bit more)"
+HOMEPAGE = "http://libestr.adiscon.com/"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9d6c993486c18262afba4ca5bcb894d0"
+
+SRC_URI = "http://libestr.adiscon.com/files/download/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "f4c9165a23587e77f7efe65d676d5e8e"
+SRC_URI[sha256sum] = "bd655e126e750edd18544b88eb1568d200a424a0c23f665eb14bbece07ac703c"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan-0.57/libetpan-autoreconf.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan-0.57/libetpan-autoreconf.patch
new file mode 100644
index 0000000..d05967d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan-0.57/libetpan-autoreconf.patch
@@ -0,0 +1,12 @@
+Index: libetpan-0.57/configure.ac
+===================================================================
+--- libetpan-0.57.orig/configure.ac	2008-10-08 19:54:20.000000000 +0000
++++ libetpan-0.57/configure.ac	2008-11-11 16:34:33.000000000 +0000
+@@ -106,6 +106,7 @@
+ 
+ # Check the C compiler.
+ AC_PROG_CC
++AC_PROG_CXX
+ 
+ # Compiler flags.
+ AC_ARG_ENABLE(debug,   [  --enable-debug          setup flags (gcc) for debugging (default=no)],
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan-0.57/libetpan-ldflags.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan-0.57/libetpan-ldflags.patch
new file mode 100644
index 0000000..438f44f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan-0.57/libetpan-ldflags.patch
@@ -0,0 +1,11 @@
+--- libetpan-0.57/configure.ac~	2009-09-21 23:31:42.000000000 +0200
++++ libetpan-0.57/configure.ac	2009-09-21 23:31:42.000000000 +0200
+@@ -457,7 +457,7 @@
+       LDFLAGS="-$flag $LDFLAGS"
+       AC_TRY_LINK([], [pthread_create();], 
+                       [pthflag=yes; checkpthread=no], 
+-                      [pthflag=no; LDFLAGS="$OLDCFLAGS"])
++                      [pthflag=no; LDFLAGS="$OLDFLAGS"])
+       AC_MSG_RESULT($pthflag)
+     fi
+   done
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan-0.57/sepbuild.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan-0.57/sepbuild.patch
new file mode 100644
index 0000000..4f01617
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan-0.57/sepbuild.patch
@@ -0,0 +1,16 @@
+Index: libetpan-0.57/rules.mk
+===================================================================
+--- libetpan-0.57.orig/rules.mk
++++ libetpan-0.57/rules.mk
+@@ -134,9 +134,9 @@ prepare-am: prepare-local
+ 	         if test -e ../../$(subdir)/$${hdr}; then \
+ 	           echo "$(LN_S) -f ../../$(subdir)/$${hdr} ."; \
+ 	           $(LN_S) -f ../../$(subdir)/$${hdr} .; \
+              else \
+-	           echo "$(LN_S) -f ../../$(subdir)/$(srcdir)/$${hdr} ."; \
+-	           $(LN_S) -f ../../$(subdir)/$(srcdir)/$${hdr} .; \
++	           echo "$(LN_S) -f $(srcdir)/$${hdr} ."; \
++	           $(LN_S) -f $(srcdir)/$${hdr} .; \
+              fi; \
+            fi; \
+ 	     done; \
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan_0.57.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan_0.57.bb
new file mode 100644
index 0000000..1091bb0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libetpan/libetpan_0.57.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "libetpan is a library for communicating with mail and news servers. \
+It supports the protocols SMTP, POP3, IMAP and NNTP."
+HOMEPAGE = "http://www.etpan.org"
+SECTION = "libs"
+DEPENDS = "gnutls liblockfile curl"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=f18ebe7e452708c26f83954f81062ba7"
+
+PR = "r1"
+
+# http://errors.yoctoproject.org/Errors/Details/25823/
+PNBLACKLIST[libetpan] ?= "Not compatible with gnutls version 3.4 currently in oe-core"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libetpan/libetpan-${PV}.tar.gz \
+           file://libetpan-autoreconf.patch \
+           file://libetpan-ldflags.patch \
+           file://sepbuild.patch"
+
+inherit autotools pkgconfig gettext binconfig
+
+EXTRA_OECONF = "--without-openssl --without-sasl --with-gnutls --disable-db"
+
+PARALLEL_MAKE = ""
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev = "${bindir} ${includedir} ${libdir}/lib*.so ${libdir}/*.la ${libdir}/*.a ${libdir}/pkgconfig"
+
+
+SRC_URI[md5sum] = "8ce8c6c071e81884a475b12b7f9a9cc0"
+SRC_URI[sha256sum] = "1f3fda5c9e2961d1a6298dc8aadae321493d37727d8db45bc2e8d58f20547011"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.2.bb
new file mode 100644
index 0000000..9b290fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.2.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "libftdi is a library to talk to FTDI chips.\
+FT232BM/245BM, FT2232C/D and FT232/245R using libusb,\
+including the popular bitbang mode."
+HOMEPAGE = "http://www.intra2net.com/en/developer/libftdi/"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1 & GPLv2"
+LIC_FILES_CHKSUM= "\
+    file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe \
+    file://COPYING.LIB;md5=db979804f025cf55aabec7129cb671ed \
+"
+
+DEPENDS = "libusb1"
+
+SRC_URI = "http://www.intra2net.com/en/developer/${BPN}/download/${BPN}1-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "89dff802d89c4c0d55d8b4665fd52d0b"
+SRC_URI[sha256sum] = "a6ea795c829219015eb372b03008351cee3fb39f684bff3bf8a4620b558488d6"
+
+S = "${WORKDIR}/${BPN}1-${PV}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[cpp-wrapper] = "-DFTDI_BUILD_CPP=on -DFTDIPP=on,-DFTDI_BUILD_CPP=off -DFTDIPP=off,boost"
+
+inherit cmake binconfig pkgconfig
+
+EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib', True).replace('lib', '')}"
+
+FILES_${PN}-dev += "${libdir}/cmake"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery_1.7.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery_1.7.2.bb
new file mode 100644
index 0000000..ec8f360
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery_1.7.2.bb
@@ -0,0 +1,24 @@
+SUMMARY = "JavaScript library for dynamic web applications"
+LICENSE = "MIT | BSD | GPL-2"
+LIC_FILES_CHKSUM = "file://usr/share/doc/libjs-jquery/copyright;md5=5d1ec6f95e0a91d38e2f71de93ddb00e"
+
+SRC_URI = "http://kr.archive.ubuntu.com/ubuntu/pool/main/j/jquery/${BPN}_${PV}+debian-1ubuntu1~ubuntu12.04.1_all.deb;subdir=${BP}"
+SRC_URI[md5sum] = "fa511ab67f6e960c5b6d39a4d665e47f"
+SRC_URI[sha256sum] = "190ca18a71e35c8ab2ba73fe5be3c7cc601fe20b45709d801110818f1b602cc1"
+
+JQUERYDIR = "${datadir}/javascript/jquery"
+JQUERYDOCDIR = "${docdir}/libjs-jquery"
+
+do_install() {
+    install -d -m 0755 ${D}${JQUERYDIR}
+    install -m 0644 ${S}${JQUERYDIR}/jquery.js ${D}${JQUERYDIR}/
+    install -m 0644 ${S}${JQUERYDIR}/jquery.min.js ${D}${JQUERYDIR}/
+
+    ln -sf jquery.min.js ${D}${JQUERYDIR}/jquery.lite.js
+    ln -sf jquery.min.js ${D}${JQUERYDIR}/jquery.pack.js
+
+    install -d -m 0644 ${D}${JQUERYDOCDIR}
+    install -m 0644 ${S}${JQUERYDOCDIR}/copyright ${D}${JQUERYDOCDIR}/
+}
+
+FILES_${PN} = "/usr/share/javascript/jquery"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libjs/libjs-sizzle_1.10.18.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libjs/libjs-sizzle_1.10.18.bb
new file mode 100644
index 0000000..92ab31f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libjs/libjs-sizzle_1.10.18.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Pure-JavaScript CSS selector engine"
+LICENSE = "GPL-2.0 & MIT & AFL-2.1"
+LIC_FILES_CHKSUM = "file://MIT-LICENSE.txt;md5=e43aa437a6a1ba421653bd5034333bf9"
+
+SRC_URI = "http://kr.archive.ubuntu.com/ubuntu/pool/universe/s/sizzle/sizzle_1.10.18.orig.tar.gz"
+SRC_URI[md5sum] = "91477c1edeef9f8100ffd6c4d31725b5"
+SRC_URI[sha256sum] = "8e04ab84bb74b2e338dffc63cd2e52b007f1d8af01b3d25da4d2e07f2b5890f8"
+
+S = "${WORKDIR}/sizzle-${PV}"
+
+SIZZLEDIR = "${S}/dist"
+
+do_install() {
+    install -d -m 0755 ${D}/${datadir}/javascript/sizzle/
+    install -m 0644 ${SIZZLEDIR}/*.js ${D}/${datadir}/javascript/sizzle/
+}
+
+FILES_${PN} = "${datadir}/javascript/sizzle/"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/liblinebreak/liblinebreak_1.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/liblinebreak/liblinebreak_1.2.bb
new file mode 100644
index 0000000..d0463a6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/liblinebreak/liblinebreak_1.2.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Liblinebreak is an implementation of the line breaking algorithm as described in Unicode 5.1.0 Standard Annex 14, Revision 22"
+HOMEPAGE = "http://vimgadgets.sourceforge.net/liblinebreak/"
+SECTION = "libs"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=3715191da62bafb5cfc4ff36195b2ec3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/vimgadgets/liblinebreak/${PV}/liblinebreak-${PV}.tar.gz"
+SRC_URI[md5sum] = "d18039259001ccb24b5dd4648c49c5ad"
+SRC_URI[sha256sum] = "9efcb0cb1afc75ad1e92d2b2dbf4d9c77b072d6656c5f1a150af8b718d0c7b76"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libmcrypt/libmcrypt_2.5.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libmcrypt/libmcrypt_2.5.8.bb
new file mode 100644
index 0000000..2a133c6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libmcrypt/libmcrypt_2.5.8.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Replacement for the old crypt() package and crypt(1) command, with extensions"
+HOMEPAGE = "http://mcrypt.sourceforge.net/"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff"
+DEPENDS = "libtool"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/mcrypt/Libmcrypt/${PV}/libmcrypt-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "0821830d930a86a5c69110837c55b7da"
+SRC_URI[sha256sum] = "e4eb6c074bbab168ac47b947c195ff8cef9d51a211cdd18ca9c9ef34d27a373e"
+
+inherit autotools-brokensep gettext binconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.34.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.34.bb
new file mode 100644
index 0000000..a4a0f38
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.34.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "A small C library that is supposed to make it easy to run an HTTP server as part of another application"
+HOMEPAGE = "http://www.gnu.org/software/libmicrohttpd/"
+LICENSE = "LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9331186f4f80db7da0e724bdd6554ee5"
+SECTION = "net"
+DEPENDS = "libgcrypt gnutls file"
+
+SRC_URI = "http://ftp.gnu.org/gnu/libmicrohttpd/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "2947eee13c2c8affb95023a0cb6fda0c"
+SRC_URI[sha256sum] = "29a2bfd4fd2ddf60c756b8c283291a134898e3cc143843be421a040be1b25a88"
+
+inherit autotools lib_package
+
+# disable spdy, because it depends on openssl
+EXTRA_OECONF += "--disable-static --with-gnutls=${STAGING_LIBDIR}/../ --disable-spdy"
+
+PACKAGECONFIG ?= "curl"
+PACKAGECONFIG_append_class-target = "\
+        ${@bb.utils.contains('DISTRO_FEATURES', 'largefile', 'largefile', '', d)} \
+"
+PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile,,"
+PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl,"
+
+do_compile_append() {
+	sed -i s:-L${STAGING_LIBDIR}::g libmicrohttpd.pc
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb
new file mode 100644
index 0000000..3311da5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb
@@ -0,0 +1,16 @@
+# Copyright (C) 2014 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "C library implementing OAuth Core RFC 5849"
+HOMEPAGE = "http://liboauth.sourceforge.net"
+LICENSE = "MIT|GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING.MIT;md5=6266718a5241c045c8099d9be48817df \
+                    file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
+SECTION = "libs"
+DEPENDS = "curl openssl"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BP}.tar.gz"
+SRC_URI[md5sum] = "689b46c2b3ab1a39735ac33f714c4f7f"
+SRC_URI[sha256sum] = "0df60157b052f0e774ade8a8bac59d6e8d4b464058cc55f9208d72e41156811f"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libol/libol/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libol/libol/configure.patch
new file mode 100644
index 0000000..87695fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libol/libol/configure.patch
@@ -0,0 +1,14 @@
+Index: libol-0.3.18/configure.in
+===================================================================
+--- libol-0.3.18.orig/configure.in	2006-03-27 14:44:52.000000000 +0000
++++ libol-0.3.18/configure.in	2014-07-18 07:05:56.029481372 +0000
+@@ -1,7 +1,7 @@
+ dnl Process this file with autoconf to produce a configure script.
+-AC_INIT(src/abstract_io.c)
++AC_INIT(libol, "0.3.18")
+ 
+-AM_INIT_AUTOMAKE(libol, "0.3.18", 1)
++AM_INIT_AUTOMAKE([foreign])
+ if test -n "$SNAPSHOT_VERSION"; then
+         VERSION=$VERSION+$SNAPSHOT_VERSION
+ fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libol/libol_0.3.18.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libol/libol_0.3.18.bb
new file mode 100644
index 0000000..c31f483
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libol/libol_0.3.18.bb
@@ -0,0 +1,19 @@
+SUMMARY = "A tiny C support library"
+SECTION = "libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
+
+SRC_URI = "http://www.balabit.com/downloads/files/libol/0.3/${BP}.tar.gz \
+           file://configure.patch"
+SRC_URI[md5sum] = "cbadf4b7ea276dfa85acc38a1cc5ff17"
+SRC_URI[sha256sum] = "9de3bf13297ff882e02a1e6e5f6bf760a544aff92a9d8a1cf4328a32005cefe7"
+
+inherit autotools binconfig
+
+do_compile_prepend() {
+    install ${S}/utils/make_class.in ${B}/utils
+}
+
+do_install_append() {
+    rm -fr ${D}${bindir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.3.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.3.0.bb
new file mode 100644
index 0000000..d97bfc6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.3.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Library for using PKCS"
+DESCRIPTION = "\
+Libp11 is a library implementing a small layer on top of PKCS \
+make using PKCS"
+HOMEPAGE = "http://www.opensc-project.org/libp11"
+SECTION = "Development/Libraries"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fad9b3332be894bab9bc501572864b29"
+DEPENDS = "libtool openssl"
+
+SRC_URI = "git://github.com/OpenSC/libp11.git;protocol=http"
+SRCREV = "6f71240991aa831f6fc2cc5431faf6ebec627ed2"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-static"
+
+do_install_append () {
+    rm -rf ${D}${libdir}/*.la
+    rm -rf ${D}${docdir}/${BPN}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libraw1394/libraw1394_2.1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libraw1394/libraw1394_2.1.0.bb
new file mode 100644
index 0000000..811829e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libraw1394/libraw1394_2.1.0.bb
@@ -0,0 +1,11 @@
+SUMMARY = "base library for low-level IEEE 1394 accesses"
+HOMEPAGE = "https://ieee1394.wiki.kernel.org/index.php/Libraries#libraw1394"
+SECTION = "libs"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=d8045f3b8f929c1cb29a1e3fd737b499"
+
+SRC_URI = "https://www.kernel.org/pub/linux/libs/ieee1394/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "d06cccb776b240b6ab5efdee33b87af2"
+SRC_URI[sha256sum] = "a83cff16fb8885831bc29d7d17f3c570dc39251d89e20795c08e87720de0ba70"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/files/use.pkg-config.for.freetype2.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/files/use.pkg-config.for.freetype2.patch
new file mode 100644
index 0000000..8a11f66
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/files/use.pkg-config.for.freetype2.patch
@@ -0,0 +1,57 @@
+freetype-config was removed from oe-core in
+
+commit 5870bd272b0b077d0826fb900b251884c1c05061
+Author: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date:   Thu May 22 10:59:33 2014 +0100
+
+    binconfig-disabled: Add class and use
+
+diff --git a/configure.in b/configure.in
+index 408e8d6..5f9e730 100644
+--- a/configure.in
++++ b/configure.in
+@@ -86,39 +86,11 @@ case "$host" in
+ esac
+ AM_CONDITIONAL(USE_VERSION_RC, test x$use_version_rc = xtrue)
+ 
+-dnl Check for the FreeType 2 library
+-dnl
+-dnl Get the cflags and libraries from the freetype-config script
+-dnl
+-AC_ARG_WITH(freetype-prefix,[  --with-freetype-prefix=PFX   Prefix where FREETYPE is 
+-installed (optional)],
+-            freetype_prefix="$withval", freetype_prefix="")
+-AC_ARG_WITH(freetype-exec-prefix,[  --with-freetype-exec-prefix=PFX Exec prefix 
+-where FREETYPE is installed (optional)],
+-            freetype_exec_prefix="$withval", freetype_exec_prefix="")
+-
+-if test x$freetype_exec_prefix != x ; then
+-     freetype_args="$freetype_args --exec-prefix=$freetype_exec_prefix"
+-     if test x${FREETYPE_CONFIG+set} != xset ; then
+-        FREETYPE_CONFIG=$freetype_exec_prefix/bin/freetype-config
+-     fi
+-fi
+-if test x$freetype_prefix != x ; then
+-     freetype_args="$freetype_args --prefix=$freetype_prefix"
+-     if test x${FREETYPE_CONFIG+set} != xset ; then
+-        FREETYPE_CONFIG=$freetype_prefix/bin/freetype-config
+-     fi
+-fi
+-AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
+-no_freetype=""
+-if test "$FREETYPE_CONFIG" = "no" ; then
+-    AC_MSG_ERROR([
+-*** Unable to find FreeType2 library (http://www.freetype.org/)
+-])
+-else
+-    CFLAGS="$CFLAGS `$FREETYPE_CONFIG $freetypeconf_args --cflags`"
+-    LIBS="$LIBS `$FREETYPE_CONFIG $freetypeconf_args --libs`"
+-fi
++PKG_CHECK_MODULES(FREETYPE2, freetype2, 
++    CFLAGS="$CFLAGS $FREETYPE2_CFLAGS"
++    LIBS="$LIBS $FREETYPE2_LIBS",
++    AC_MSG_ERROR([*** Unable to find FreeType2 library (http://www.freetype.org/)])
++)
+ 
+ dnl Check for SDL
+ SDL_VERSION=2.0.0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl-ttf_2.0.11.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl-ttf_2.0.11.bb
new file mode 100644
index 0000000..0249abe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl-ttf_2.0.11.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Simple DirectMedia Layer truetype font library"
+SECTION = "libs"
+DEPENDS = "virtual/libsdl freetype"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://COPYING;md5=22800d1b3701377aae0b61ee36f5c303"
+
+SRC_URI = "http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-${PV}.tar.gz \
+           file://use.pkg-config.for.freetype2.patch \
+"
+SRC_URI[md5sum] = "61e29bd9da8d245bc2471d1b2ce591aa"
+SRC_URI[sha256sum] = "724cd895ecf4da319a3ef164892b72078bd92632a5d812111261cde248ebcdb7"
+
+S = "${WORKDIR}/SDL_ttf-${PV}"
+
+inherit autotools
+
+do_configure_prepend() {
+    # make autoreconf happy
+    touch ${S}/NEWS ${S}/AUTHORS ${S}/ChangeLog
+
+    # Removing these files fixes a libtool version mismatch.
+    MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4"
+
+    for i in ${MACROS}; do
+        rm -f ${S}/acinclude/$i
+    done
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl2-ttf_2.0.14.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl2-ttf_2.0.14.bb
new file mode 100644
index 0000000..af5a55c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl2-ttf_2.0.14.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Simple DirectMedia Layer truetype font library"
+SECTION = "libs"
+DEPENDS = "virtual/libsdl2 freetype"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=cb33e7c4df9fbde389f149ad6bc93ce5"
+
+SRC_URI = " \
+    http://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-${PV}.tar.gz \
+    file://use.pkg-config.for.freetype2.patch \
+"
+SRC_URI[md5sum] = "e53c05e1e7f1382c316afd6c763388b1"
+SRC_URI[sha256sum] = "34db5e20bcf64e7071fe9ae25acaa7d72bdc4f11ab3ce59acc768ab62fe39276"
+
+S = "${WORKDIR}/SDL2_ttf-${PV}"
+
+inherit autotools
+
+do_configure_prepend() {
+    touch ${S}/NEWS ${S}/README ${S}/AUTHORS ${S}/ChangeLog
+
+    # Removing these files fixes a libtool version mismatch.
+    MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4"
+
+    for i in ${MACROS}; do
+        rm -f ${S}/acinclude/$i
+    done
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi/libsmi-fix-the-test-dump-files.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi/libsmi-fix-the-test-dump-files.patch
new file mode 100644
index 0000000..134a8bb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi/libsmi-fix-the-test-dump-files.patch
@@ -0,0 +1,277 @@
+From 460d3a5ef450c30b34a663a073ee53329441ef6e Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Tue, 23 Feb 2016 16:34:38 +0800
+Subject: [PATCH] libsmi: fix the test dump files
+
+These test dump files were generated by smidump 0.4.5
+which would not match with the ones generated by 0.4.8,
+so update them with the ones for 0.4.8.
+
+Upstream-Status: Pending
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ test/dumps/cm/MAU-MIB       |  8 ++++----
+ test/dumps/cm/RMON2-MIB     |  6 +++---
+ test/dumps/sming/IF-MIB     | 22 +++++++++++++---------
+ test/dumps/sming/MAU-MIB    | 19 +++++++++++--------
+ test/dumps/sming/RMON2-MIB  | 40 ++++++++++++++++++++++++----------------
+ test/dumps/sming/SNMPv2-MIB | 11 +++++++----
+ 6 files changed, 62 insertions(+), 44 deletions(-)
+
+diff --git a/test/dumps/cm/MAU-MIB b/test/dumps/cm/MAU-MIB
+index 0d97284..0cfd4e1 100644
+--- a/test/dumps/cm/MAU-MIB
++++ b/test/dumps/cm/MAU-MIB
+@@ -53,7 +53,7 @@
+   <attribute name="text">
+     <composite type="text">
+       <attribute name="string">
+-        <string>#Conceptual model of MAU-MIB - generated by smidump 0.4.5#</string>
++        <string>#Conceptual model of MAU-MIB - generated by smidump 0.4.8#</string>
+       </attribute>
+       <attribute name="font">
+         <font name="Courier"/>
+@@ -1294,7 +1294,7 @@
+         <point val="29.52,49.18"/>
+      </attribute>
+       <attribute name="obj_bb">
+-       <rectangle val="28.67,32.93;30.37,34.63"/>
++       <rectangle val="28.67,32.93;30.37,34.62"/>
+      </attribute>
+      <attribute name="orth_points">
+        <point val="29.52,49.18"/>
+@@ -1678,7 +1678,7 @@
+         <point val="37.68,49.18"/>
+      </attribute>
+       <attribute name="obj_bb">
+-       <rectangle val="28.67,32.93;30.37,34.63"/>
++       <rectangle val="28.67,32.93;30.37,34.62"/>
+      </attribute>
+      <attribute name="orth_points">
+        <point val="37.68,49.18"/>
+@@ -1737,7 +1737,7 @@
+         <point val="29.52,35.78"/>
+      </attribute>
+       <attribute name="obj_bb">
+-       <rectangle val="28.67,32.93;30.37,34.63"/>
++       <rectangle val="28.67,32.93;30.37,34.62"/>
+      </attribute>
+      <attribute name="orth_points">
+        <point val="29.52,35.78"/>
+diff --git a/test/dumps/cm/RMON2-MIB b/test/dumps/cm/RMON2-MIB
+index 30ae8dd..1b9d268 100644
+--- a/test/dumps/cm/RMON2-MIB
++++ b/test/dumps/cm/RMON2-MIB
+@@ -53,7 +53,7 @@
+   <attribute name="text">
+     <composite type="text">
+       <attribute name="string">
+-        <string>#Conceptual model of RMON2-MIB - generated by smidump 0.4.5#</string>
++        <string>#Conceptual model of RMON2-MIB - generated by smidump 0.4.8#</string>
+       </attribute>
+       <attribute name="font">
+         <font name="Courier"/>
+@@ -2841,8 +2841,8 @@
+      </attribute>
+      <attribute name="orth_points">
+        <point val="18.80,55.45"/>
+-       <point val="18.80,68.63"/>
+-       <point val="22.80,68.63"/>
++       <point val="18.80,68.62"/>
++       <point val="22.80,68.62"/>
+        <point val="22.80,81.80"/>
+      </attribute>
+       <attribute name="orth_orient">
+diff --git a/test/dumps/sming/IF-MIB b/test/dumps/sming/IF-MIB
+index 21432cb..c2ffc06 100644
+--- a/test/dumps/sming/IF-MIB
++++ b/test/dumps/sming/IF-MIB
+@@ -1,16 +1,18 @@
+ //
+-// This module has been generated by smidump 0.4.5. Do not edit.
++// This module has been generated by smidump 0.4.8. Do not edit.
+ //
+ module IF-MIB {
+ 
+-  import IANAifType-MIB       (IANAifType);
+-  import IRTF-NMRG-SMING      (Counter32, Counter64, 
+-                               DisplayString255, Gauge32, 
+-                               PhysAddress, TimeStamp, TimeTicks, 
+-                               TruthValue);
+-  import IRTF-NMRG-SMING-SNMP (AutonomousType, RowStatus, 
+-                               TestAndIncr, mib-2);
+-  import SNMPv2-MIB           (snmpTraps);
++  import SNMPv2-SMI     (MODULE-IDENTITY, OBJECT-TYPE, Counter32, 
++                         Gauge32, Counter64, Integer32, TimeTicks, 
++                         mib-2, NOTIFICATION-TYPE);
++  import SNMPv2-TC      (TEXTUAL-CONVENTION, DisplayString, 
++                         PhysAddress, TruthValue, RowStatus, 
++                         TimeStamp, AutonomousType, TestAndIncr);
++  import SNMPv2-CONF    (MODULE-COMPLIANCE, OBJECT-GROUP, 
++                         NOTIFICATION-GROUP);
++  import SNMPv2-MIB     (snmpTraps);
++  import IANAifType-MIB (IANAifType);
+ 
+ //
+ // MODULE META INFORMATION
+@@ -79,6 +81,7 @@ module IF-MIB {
+   typedef InterfaceIndex {
+     type            Integer32 (1..2147483647);
+     format          "d";
++    status          current;
+     description     
+        "A unique value, greater than zero, for each interface or
+         interface sub-layer in the managed system.  It is
+@@ -91,6 +94,7 @@ module IF-MIB {
+   typedef InterfaceIndexOrZero {
+     type            Integer32 (0..2147483647);
+     format          "d";
++    status          current;
+     description     
+        "This textual convention is an extension of the
+         InterfaceIndex convention.  The latter defines a greater
+diff --git a/test/dumps/sming/MAU-MIB b/test/dumps/sming/MAU-MIB
+index 2cffd99..64cf714 100644
+--- a/test/dumps/sming/MAU-MIB
++++ b/test/dumps/sming/MAU-MIB
+@@ -1,15 +1,18 @@
+ //
+-// This module has been generated by smidump 0.4.5. Do not edit.
++// This module has been generated by smidump 0.4.8. Do not edit.
+ //
+ module MAU-MIB {
+ 
+-  import IANA-MAU-MIB         (IANAifJackType, 
+-                               IANAifMauAutoNegCapBits, 
+-                               IANAifMauMediaAvailable, 
+-                               IANAifMauTypeListBits);
+-  import IF-MIB               (InterfaceIndex);
+-  import IRTF-NMRG-SMING      (Counter32, Counter64, TruthValue);
+-  import IRTF-NMRG-SMING-SNMP (AutonomousType, mib-2);
++  import SNMPv2-SMI   (Counter32, Integer32, Counter64, OBJECT-TYPE, 
++                       MODULE-IDENTITY, NOTIFICATION-TYPE, mib-2);
++  import SNMPv2-TC    (TruthValue, AutonomousType, 
++                       TEXTUAL-CONVENTION);
++  import SNMPv2-CONF  (OBJECT-GROUP, MODULE-COMPLIANCE, 
++                       NOTIFICATION-GROUP);
++  import IF-MIB       (InterfaceIndex);
++  import IANA-MAU-MIB (IANAifMauTypeListBits, 
++                       IANAifMauMediaAvailable, 
++                       IANAifMauAutoNegCapBits, IANAifJackType);
+ 
+ //
+ // MODULE META INFORMATION
+diff --git a/test/dumps/sming/RMON2-MIB b/test/dumps/sming/RMON2-MIB
+index 423b9bc..04763e5 100644
+--- a/test/dumps/sming/RMON2-MIB
++++ b/test/dumps/sming/RMON2-MIB
+@@ -1,23 +1,26 @@
+ //
+-// This module has been generated by smidump 0.4.5. Do not edit.
++// This module has been generated by smidump 0.4.8. Do not edit.
+ //
+ module RMON2-MIB {
+ 
+-  import IF-MIB               (ifIndex);
+-  import IRTF-NMRG-SMING      (Counter32, DisplayString255, 
+-                               Gauge32, IpAddress, TimeStamp, 
+-                               TimeTicks);
+-  import IRTF-NMRG-SMING-SNMP (RowStatus, mib-2);
+-  import RMON-MIB             (OwnerString, channelEntry, 
+-                               etherStatsEntry, filter, 
+-                               filterEntry, history, 
+-                               historyControlEntry, 
+-                               hostControlEntry, hosts, matrix, 
+-                               matrixControlEntry, statistics);
+-  import TOKEN-RING-RMON-MIB  (ringStationControlEntry, 
+-                               sourceRoutingStatsEntry, 
+-                               tokenRing, tokenRingMLStatsEntry, 
+-                               tokenRingPStatsEntry);
++  import SNMPv2-SMI          (MODULE-IDENTITY, OBJECT-TYPE, 
++                              Counter32, Integer32, Gauge32, 
++                              IpAddress, TimeTicks, mib-2);
++  import SNMPv2-TC           (TEXTUAL-CONVENTION, RowStatus, 
++                              DisplayString, TimeStamp);
++  import SNMPv2-CONF         (MODULE-COMPLIANCE, OBJECT-GROUP);
++  import IF-MIB              (ifIndex);
++  import RMON-MIB            (OwnerString, statistics, history, 
++                              hosts, matrix, filter, 
++                              etherStatsEntry, 
++                              historyControlEntry, 
++                              hostControlEntry, 
++                              matrixControlEntry, filterEntry, 
++                              channelEntry);
++  import TOKEN-RING-RMON-MIB (tokenRing, tokenRingMLStatsEntry, 
++                              tokenRingPStatsEntry, 
++                              ringStationControlEntry, 
++                              sourceRoutingStatsEntry);
+ 
+ //
+ // MODULE META INFORMATION
+@@ -167,6 +170,7 @@ module RMON2-MIB {
+ 
+   typedef ZeroBasedCounter32 {
+     type            Gauge32;
++    status          current;
+     description     
+        "This TC describes an object that counts events with the
+         following semantics: objects of this type will be set to
+@@ -188,6 +192,7 @@ module RMON2-MIB {
+ 
+   typedef LastCreateTime {
+     type            TimeTicks;
++    status          current;
+     description     
+        "This TC describes an object that stores the value of the
+         sysUpTime object at the last time its entry was created.
+@@ -208,6 +213,7 @@ module RMON2-MIB {
+ 
+   typedef TimeFilter {
+     type            TimeTicks;
++    status          current;
+     description     
+        "To be used for the index to a table.  Allows an application
+         to download only those rows changed since a particular time.
+@@ -424,6 +430,7 @@ module RMON2-MIB {
+ 
+   typedef DataSource {
+     type            ObjectIdentifier;
++    status          current;
+     description     
+        "Identifies the source of the data that the associated
+         function is configured to analyze.  This source can be any
+@@ -439,6 +446,7 @@ module RMON2-MIB {
+ 
+   typedef ControlString {
+     type            OctetString (0..255);
++    status          current;
+     description     
+        "This data type is used to communicate with a modem or a
+         
+diff --git a/test/dumps/sming/SNMPv2-MIB b/test/dumps/sming/SNMPv2-MIB
+index ca355c8..0c88939 100644
+--- a/test/dumps/sming/SNMPv2-MIB
++++ b/test/dumps/sming/SNMPv2-MIB
+@@ -1,11 +1,14 @@
+ //
+-// This module has been generated by smidump 0.4.5. Do not edit.
++// This module has been generated by smidump 0.4.8. Do not edit.
+ //
+ module SNMPv2-MIB {
+ 
+-  import IRTF-NMRG-SMING      (Counter32, DisplayString255, 
+-                               TimeStamp, TimeTicks, snmpModules);
+-  import IRTF-NMRG-SMING-SNMP (TestAndIncr, mib-2);
++  import SNMPv2-SMI  (MODULE-IDENTITY, OBJECT-TYPE, 
++                      NOTIFICATION-TYPE, TimeTicks, Counter32, 
++                      snmpModules, mib-2);
++  import SNMPv2-TC   (DisplayString, TestAndIncr, TimeStamp);
++  import SNMPv2-CONF (MODULE-COMPLIANCE, OBJECT-GROUP, 
++                      NOTIFICATION-GROUP);
+ 
+ //
+ // MODULE META INFORMATION
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi/smi.conf b/import-layers/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi/smi.conf
new file mode 100644
index 0000000..7e4da86
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi/smi.conf
@@ -0,0 +1,48 @@
+#
+# smi.conf - Global/User SMI configuration file. (EXAMPLE)
+#
+# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig.
+#
+# See the file "COPYING" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# @(#) $Id: smi.conf-example 1134 2001-06-11 09:59:13Z strauss $
+#
+#
+# See smi_config(3) for detailed information on configuration files.
+#
+
+# Extend (note the semicolon) the libsmi default module search path.
+path :/usr/share/mibs/iana
+path :/usr/share/mibs/ietf
+path :/usr/share/mibs/irtf
+path :/usr/share/mibs/tubs
+
+# EXPERIMENTAL: Add a caching method (works only on UNIX systems).
+# NOTE: the cache directory must exist and permissions must be
+# handled appropriately. A simple but insecure way is to apply
+# a tmp flag to the directory (chmod 1777 /usr/local/share/mibs/cache).
+#cache /usr/local/share/mibs/cache /usr/local/bin/smicache -d /usr/local/share/mibs/cache -p http://www.ibr.cs.tu-bs.de/projects/libsmi/smicache/
+
+# Don't show any errors by default.
+level 0
+
+# Preload some basic SMIv2 modules.
+load SNMPv2-SMI
+load SNMPv2-TC
+load SNMPv2-CONF
+
+# Make smilint shout loud to report all errors and warnings.
+smilint: level 9
+
+# But please don't claim about any names longer than 32 chars.
+# (note: this is the prefix of errors `namelength-32-module,
+#  -type, -object, -enumeration, and -bit)
+smilint: hide namelength-32
+
+# Preloading some more modules for special applications.
+tcpdump: load DISMAN-SCRIPT-MIB
+tcpdump: load IF-MIB
+
+smiquery: load IF-MIB
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
new file mode 100644
index 0000000..b049067
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "A Library to Access SMI MIB Information"
+HOMEPAGE = "https://www.ibr.cs.tu-bs.de/projects/libsmi"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3ad3076f9332343a21636cfd351f05b7"
+
+SRC_URI = "https://www.ibr.cs.tu-bs.de/projects/${BPN}/download/${BP}.tar.gz \
+           file://smi.conf \
+           file://libsmi-fix-the-test-dump-files.patch \
+          "
+
+SRC_URI[md5sum] = "4bf47483c06c9f07d1b10fbc74eddf11"
+SRC_URI[sha256sum] = "f21accdadb1bb328ea3f8a13fc34d715baac6e2db66065898346322c725754d3"
+
+inherit autotools
+
+EXTRA_OECONF = "ac_cv_path_SH=${base_bindir}/sh"
+
+do_install_append () {
+    install -d ${D}${sysconfdir}
+    install -m 0644 ${WORKDIR}/smi.conf ${D}${sysconfdir}/smi.conf
+}
+
+PACKAGES += "${PN}-mibs ${PN}-pibs ${PN}-yang"
+
+FILES_${PN}-mibs += "${datadir}/mibs"
+FILES_${PN}-pibs += "${datadir}/pibs"
+FILES_${PN}-yang += "${datadir}/yang"
+
+RRECOMMENDS_${PN} = "${BPN}-mibs"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.7.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.7.1.bb
new file mode 100644
index 0000000..911e0ba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.7.1.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Library for interfacing with common SoC peripherals"
+DESCRIPTION = "libsoc is a C library to interface with common peripherals (gpio, i2c, spi, pwm) \
+               found in SoC (System on Chips) through generic Linux Kernel interfaces."
+
+HOMEPAGE = "https://github.com/jackmitch/libsoc"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e0bfebea12a718922225ba987b2126a5"
+
+inherit autotools
+
+SRCREV = "2919c35e706fe7c311f83f9343865420fa4b37fe"
+SRC_URI = "git://github.com/jackmitch/libsoc.git"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN} = "libgcc"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libsodium/libsodium_1.0.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libsodium/libsodium_1.0.8.bb
new file mode 100644
index 0000000..a2eef4b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libsodium/libsodium_1.0.8.bb
@@ -0,0 +1,11 @@
+SUMMARY = "The Sodium crypto library"
+HOMEPAGE = "http://libsodium.org/"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=092a09b78c3be486fac807435bf17b7a"
+
+SRC_URI = "https://download.libsodium.org/libsodium/releases/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "0a66b86fd3aab3fe4c858edcd2772760"
+SRC_URI[sha256sum] = "c0f191d2527852641e0a996b7b106d2e04cbc76ea50731b2d0babd3409301926"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.7.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.7.1.bb
new file mode 100644
index 0000000..371e1ab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.7.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Multiplatform C library implementing the SSHv2 and SSHv1 protocol"
+HOMEPAGE = "http://www.libssh.org"
+SECTION = "libs"
+
+DEPENDS = "zlib openssl libgcrypt"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=388a4fb1dea8ceae0be78ba9b01fc139"
+
+SRC_URI = "git://git.libssh.org/projects/libssh.git;branch=v0-7"
+SRCREV = "053f72c671a83b32238dc01b56a66752fb15b7ec"
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE = " \
+    -DWITH_GCRYPT=1 \
+    -DWITH_PCAP=1 \
+    -DWITH_SFTP=1 \
+    -DWITH_ZLIB=1 \
+    -DLIB_SUFFIX=${@d.getVar('baselib', True).replace('lib', '')} \
+    "
+
+PACKAGECONFIG ??=""
+PACKAGECONFIG[gssapi] = "-DWITH_GSSAPI=1, -DWITH_GSSAPI=0, krb5, "
+
+inherit cmake
+
+do_configure_prepend () {
+    # Disable building of examples
+    sed -i -e '/add_subdirectory(examples)/s/^/#DONOTWANT/' ${S}/CMakeLists.txt \
+        || bbfatal "Failed to disable examples"
+}
+
+FILES_${PN}-dev += "${libdir}/cmake"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.6.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.6.0.bb
new file mode 100644
index 0000000..c43164e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.6.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "A client-side C library implementing the SSH2 protocol"
+HOMEPAGE = "http://www.libssh2.org/"
+SECTION = "libs"
+
+DEPENDS = "zlib"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c5cf34fc0acb44b082ef50ef5e4354ca"
+
+SRC_URI = "http://www.libssh2.org/download/${BP}.tar.gz"
+SRC_URI[md5sum] = "00aabd6e714a5f42a4fb82ace20db1dd"
+SRC_URI[sha256sum] = "5a202943a34a1d82a1c31f74094f2453c207bf9936093867f41414968c8e8215"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF += "\
+                 --with-libz \
+                 --with-libz-prefix=${STAGING_LIBDIR} \
+                "
+
+# only one of openssl and gcrypt could be set
+PACKAGECONFIG ??= "openssl"
+PACKAGECONFIG[openssl] = "--with-openssl --with-libssl-prefix=${STAGING_LIBDIR},--without-openssl,openssl"
+PACKAGECONFIG[gcrypt] = "--with-libgcrypt --with-libgcrypt-prefix=${STAGING_EXECPREFIXDIR},--without-libgcrypt,libgcrypt"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml/enforce-use-stl.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml/enforce-use-stl.patch
new file mode 100644
index 0000000..88c962b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml/enforce-use-stl.patch
@@ -0,0 +1,20 @@
+Description: TinyXml is built with TIXML_USE_STL, so we have to
+ enforce it when the library is used.
+Author: Felix Geyer <debfx-pkg@fobos.de>
+
+Upstream-Status: Pending
+
+diff -Nur tinyxml-2.5.3/tinyxml.h tinyxml-2.5.3.patch/tinyxml.h
+--- tinyxml-2.5.3/tinyxml.h	2007-05-07 00:41:23.000000000 +0200
++++ tinyxml-2.5.3.patch/tinyxml.h	2009-07-08 22:32:03.000000000 +0200
+@@ -26,6 +26,10 @@
+ #ifndef TINYXML_INCLUDED
+ #define TINYXML_INCLUDED
+ 
++#ifndef TIXML_USE_STL
++	#define TIXML_USE_STL
++#endif
++
+ #ifdef _MSC_VER
+ #pragma warning( push )
+ #pragma warning( disable : 4530 )
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml/entity-encoding.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml/entity-encoding.patch
new file mode 100644
index 0000000..b801506
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml/entity-encoding.patch
@@ -0,0 +1,62 @@
+Description: TinyXML incorrectly encodes text element containing
+ an ampersand followed by either x or #.
+
+Origin: http://sourceforge.net/tracker/index.php?func=detail&aid=3031828&group_id=13559&atid=313559
+
+Upstream-Status: Pending
+
+diff -u -r1.105 tinyxml.cpp
+--- a/tinyxml.cpp
++++ b/tinyxml.cpp
+@@ -57,30 +57,7 @@
+ 	{
+ 		unsigned char c = (unsigned char) str[i];
+ 
+-		if (    c == '&' 
+-		     && i < ( (int)str.length() - 2 )
+-			 && str[i+1] == '#'
+-			 && str[i+2] == 'x' )
+-		{
+-			// Hexadecimal character reference.
+-			// Pass through unchanged.
+-			// &#xA9;	-- copyright symbol, for example.
+-			//
+-			// The -1 is a bug fix from Rob Laveaux. It keeps
+-			// an overflow from happening if there is no ';'.
+-			// There are actually 2 ways to exit this loop -
+-			// while fails (error case) and break (semicolon found).
+-			// However, there is no mechanism (currently) for
+-			// this function to return an error.
+-			while ( i<(int)str.length()-1 )
+-			{
+-				outString->append( str.c_str() + i, 1 );
+-				++i;
+-				if ( str[i] == ';' )
+-					break;
+-			}
+-		}
+-		else if ( c == '&' )
++		if ( c == '&' )
+ 		{
+ 			outString->append( entity[0].str, entity[0].strLength );
+ 			++i;
+diff -u -r1.89 xmltest.cpp
+--- a/xmltest.cpp
++++ b/xmltest.cpp
+@@ -1340,6 +1340,16 @@
+ 		}*/
+ 	}
+ 
++	#ifdef TIXML_USE_STL
++	{
++		TiXmlDocument xml;
++		xml.Parse("<foo>foo&amp;#xa+bar</foo>");
++		std::string str;
++		str << xml;
++		XmlTest( "Entity escaping", "<foo>foo&amp;#xa+bar</foo>", str.c_str() );
++	}
++	#endif
++
+ 	/*  1417717 experiment
+ 	{
+ 		TiXmlDocument xml;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml_2.6.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml_2.6.2.bb
new file mode 100644
index 0000000..e09a539
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml_2.6.2.bb
@@ -0,0 +1,45 @@
+# (c) Copyright 2012  Hewlett-Packard Development Company, L.P. 
+
+SUMMARY = "a simple, small, minimal, C++ XML parser"
+HOMEPAGE = "http://www.sourceforge.net/projects/tinyxml"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://readme.txt;md5=f8f366f3370dda889f60faa7db162cf4"
+SECTION = "libs"
+
+PR = "r5"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/tinyxml/tinyxml_${@'${PV}'.replace('.', '_')}.tar.gz \
+           file://enforce-use-stl.patch \
+           file://entity-encoding.patch"
+SRC_URI[md5sum] = "c1b864c96804a10526540c664ade67f0"
+SRC_URI[sha256sum] = "15bdfdcec58a7da30adc87ac2b078e4417dbe5392f3afb719f9ba6d062645593"
+
+S = "${WORKDIR}/tinyxml"
+
+EXTRA_CXXFLAGS = "-I. -fPIC"
+
+do_compile() {
+    ${CXX} ${CXXFLAGS} ${EXTRA_CXXFLAGS} -c -o tinyxml.o tinyxml.cpp
+    ${CXX} ${CXXFLAGS} ${EXTRA_CXXFLAGS} -c -o tinyxmlerror.o tinyxmlerror.cpp
+    ${CXX} ${CXXFLAGS} ${EXTRA_CXXFLAGS} -c -o tinyxmlparser.o tinyxmlparser.cpp
+    ${CXX} ${CXXFLAGS} \
+            -shared \
+            -Wl,-soname,libtinyxml.so.${PV} \
+            -o libtinyxml.so.${PV} \
+            ${LDFLAGS} \
+            tinyxml.o \
+            tinyxmlparser.o \
+            tinyxmlerror.o
+
+}
+
+do_install() {
+    install -d ${D}${libdir}
+    install -m 0755 ${S}/libtinyxml.so.${PV} ${D}${libdir}
+    ln -sf libtinyxml.so.${PV} ${D}${libdir}/libtinyxml.so
+
+    install -d ${D}${includedir}
+    install -m 0644 ${S}/tinyxml.h ${D}${includedir}
+}
+
+BBCLASSEXTEND += "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_3.0.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_3.0.0.bb
new file mode 100644
index 0000000..af0b785
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_3.0.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "TinyXML-2 is a simple, small, efficient, C++ XML parser that can be easily integrating into other programs"
+HOMEPAGE = "http://www.grinninglizard.com/tinyxml2/"
+SECTION = "libs"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://tinyxml2.cpp;endline=22;md5=c19221dbd8a66ad3090462af4c5de5e7"
+
+SRC_URI = "git://github.com/leethomason/tinyxml2.git"
+
+SRCREV = "1977a7258cc66fd4da7f1e9da05a4933646a7803"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg/0001-Fix-out-of-tree-builds.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg/0001-Fix-out-of-tree-builds.patch
new file mode 100644
index 0000000..6be49fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg/0001-Fix-out-of-tree-builds.patch
@@ -0,0 +1,39 @@
+From 6118c6ec1291a5c731aa8d4f0c1eb8cce43d47ad Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Mon, 4 Aug 2014 09:04:08 +0200
+Subject: [PATCH] Fix out-of-tree builds
+
+The include flag should point to the source directory, not the build
+directory.
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+Upstream-status: Submitted [https://github.com/libusbg/libusbg/pull/9]
+---
+ examples/Makefile.am | 2 +-
+ src/Makefile.am      | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/examples/Makefile.am b/examples/Makefile.am
+index f9f9407..ef4f81e 100644
+--- a/examples/Makefile.am
++++ b/examples/Makefile.am
+@@ -1,5 +1,5 @@
+ bin_PROGRAMS = show-gadgets gadget-acm-ecm 
+ gadget_acm_ecm_SOURCES = gadget-acm-ecm.c
+ show_gadgets_SOURCES = show-gadgets.c
+-AM_CPPFLAGS=-I../include/
++AM_CPPFLAGS=-I$(top_srcdir)/include/
+ AM_LDFLAGS=-L../src/ -lusbg
+diff --git a/src/Makefile.am b/src/Makefile.am
+index d955a4c..2f71366 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -1,4 +1,4 @@
+ lib_LTLIBRARIES = libusbg.la
+ libusbg_la_SOURCES = usbg.c
+ libusbg_la_LDFLAGS = -version-info 0:1:0
+-AM_CPPFLAGS=-I../include/
++AM_CPPFLAGS=-I$(top_srcdir)/include/
+-- 
+1.9.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb
new file mode 100644
index 0000000..97d60a6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb
@@ -0,0 +1,16 @@
+SUMMARY = "USB Gadget Configfs Library"
+
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c"
+
+inherit autotools
+
+PV = "0.1.0"
+SRCREV = "a826d136e0e8fa53815f1ba05893e6dd74208c15"
+SRC_URI = "git://github.com/libusbg/libusbg.git \
+           file://0001-Fix-out-of-tree-builds.patch \
+          "
+
+S = "${WORKDIR}/git"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb
new file mode 100644
index 0000000..0282ba5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb
@@ -0,0 +1,39 @@
+SUMMARY = "A privileged helper for utmp/wtmp updates"
+DESCRIPTION = "\
+This library provides interface for terminal emulators such as \
+screen and xterm to record user sessions to utmp and wtmp files."
+HOMEPAGE = "ftp://ftp.altlinux.org/pub/people/ldv/utempter"
+SECTION = "System Environment/Libraries"
+LICENSE = "GPLv2 & GPLv2+ & LGPLv2 & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+SRCREV = "3ef74fff310f09e2601e241b9f042cd39d591018"
+PV = "1.1.6-alt2+git${SRCPV}"
+
+SRC_URI = "git://git.altlinux.org/people/ldv/packages/libutempter.git \
+    file://0001-Fix-macro-error.patch"
+
+S = "${WORKDIR}/git/${BPN}"
+
+CFLAGS += "-DLIBEXECDIR=${libexecdir}"
+
+do_compile() {
+    oe_runmake                      \
+        libdir=${libdir}            \
+        libexecdir=${libexecdir}
+}
+
+do_install() {
+    oe_runmake install              \
+        DESTDIR=${D}                \
+        libdir="${libdir}"          \
+        libexecdir="${libexecdir}"  \
+        includedir=${includedir}    \
+        mandir=${mandir}
+
+    rm -f ${D}${libdir}/*.a
+}
+
+FILES_${PN} = "${libdir}/*.so.*"
+FILES_${PN} += "${libexecdir}/utempter/utempter"
+FILES_${PN}-dbg += "${libexecdir}/utempter/.debug/utempter"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter/0001-Fix-macro-error.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter/0001-Fix-macro-error.patch
new file mode 100644
index 0000000..8140ea3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter/0001-Fix-macro-error.patch
@@ -0,0 +1,36 @@
+From fc2bd592ad17d1c2a2a989750e69dfaedc28c633 Mon Sep 17 00:00:00 2001
+From: Qian Lei <qianl.fnst@cn.fujitsu.com>
+Date: Fri, 9 Jan 2015 10:40:29 +0800
+Subject: [PATCH] Fix macro error
+
+compile error when build on almost all architectures.
+
+Upstream-Status: Pending
+Signed-off-by: Qian Lei <qianl.fnst@cn.fujitsu.com>
+---
+ iface.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/iface.c b/iface.c
+index 5951d81..27793f0 100644
+--- a/iface.c
++++ b/iface.c
+@@ -43,7 +43,14 @@
+        __result; }))
+ #endif
+ 
+-#define	UTEMPTER_DEFAULT_PATHNAME	LIBEXECDIR "/utempter/utempter"
++#ifdef  LIBEXECDIR
++#  define CAT_PATH(DIR1,DIR2)           DIR1##DIR2
++#  define RAW_UTEMPTER_PATH             CAT_PATH(LIBEXECDIR,/utempter/utempter)
++#else
++#  define RAW_UTEMPTER_PATH             /usr/lib/libtempter/utempter/utempter
++#endif
++#define STR_PATH(RAW_STR)               #RAW_STR
++#define UTEMPTER_DEFAULT_PATHNAME       STR_PATH(RAW_UTEMPTER_PATH)
+ 
+ static const char *utempter_pathname;
+ static int saved_fd = -1;
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/links/files/ac-prog-cxx.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/links/files/ac-prog-cxx.patch
new file mode 100644
index 0000000..41c3826
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/links/files/ac-prog-cxx.patch
@@ -0,0 +1,11 @@
+--- links-2.1pre20/configure.in.orig	2005-12-21 15:23:49.000000000 +0000
++++ links-2.1pre20/configure.in	2005-12-21 15:23:59.000000000 +0000
+@@ -18,7 +18,7 @@
+ dnl Checks for programs.
+ AC_PROG_CC
+ 
+-#AC_PROG_CXX
++AC_PROG_CXX
+ #AC_PROG_AWK
+ #AM_PROG_LEX
+ #AC_PROG_YACC
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/links/files/links2.desktop b/import-layers/meta-openembedded/meta-oe/recipes-support/links/files/links2.desktop
new file mode 100644
index 0000000..a05bce1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/links/files/links2.desktop
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Links
+Comment=Links is a browser very similar to lynx
+Comment[es]=El links es un browser para modo texto, similar a lynx
+Comment[pl]=Links jest przeglądarką podobną do lynksa
+Comment[pt]=O links é um browser para modo texto, similar ao lynx
+Comment[pt_BR]=O links é um browser para modo texto, similar ao lynx
+Exec=links -g
+Terminal=true
+Icon=links2
+Type=Application
+Categories=Application;ConsoleOnly;Network;WebBrowser;
+# vi: encoding=utf-8
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.7.bb
new file mode 100644
index 0000000..2ae11ac
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.7.bb
@@ -0,0 +1,31 @@
+require links.inc
+
+DEPENDS += "virtual/libx11"
+RCONFLICTS_${PN} = "links"
+
+inherit distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI += " file://links2.desktop \
+             http://www.xora.org.uk/oe/links2.png;name=icon"
+
+S = "${WORKDIR}/links-${PV}"
+
+EXTRA_OECONF = "--enable-graphics \
+                --with-ssl=${STAGING_LIBDIR}/.. --with-libjpeg \
+                --without-libtiff --without-svgalib --without-fb \
+                --without-directfb --without-pmshell --without-atheos \
+                --with-x --without-gpm"
+
+do_install_append() {
+    install -d ${D}/${datadir}/applications
+    install -m 0644 ${WORKDIR}/links2.desktop ${D}/${datadir}/applications
+    install -d ${D}/${datadir}/pixmaps
+    install -m 0644 ${WORKDIR}/links2.png ${D}/${datadir}/pixmaps
+}
+
+SRC_URI[md5sum] = "d06aa6e14b2172d73188871a5357185a"
+SRC_URI[sha256sum] = "0c182b1cbcdfd5cdcd2f75a6032d1a4b660d07c1225c1e07757cec81d3302130"
+SRC_URI[icon.md5sum] = "477e8787927c634614bac01b44355a33"
+SRC_URI[icon.sha256sum] = "eddcd8b8c8698aa621d1a453943892d77b72ed492e0d14e0dbac5c6a57e52f47"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/links/links.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/links/links.inc
new file mode 100644
index 0000000..e072408
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/links/links.inc
@@ -0,0 +1,17 @@
+DESCRIPTION = "Links is graphics and text mode WWW \
+browser, similar to Lynx."
+HOMEPAGE = "http://links.twibright.com/"
+SECTION = "console/network"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=65e735be2e05d5943803344148f57603"
+DEPENDS = "jpeg libpng flex openssl zlib"
+
+SRC_URI = "http://links.twibright.com/download/links-${PV}.tar.bz2 \
+           file://ac-prog-cxx.patch \
+"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2"
+PACKAGECONFIG[lzma] = "--with-lzma,--without-lzma,xz"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/links/links_2.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/links/links_2.7.bb
new file mode 100644
index 0000000..e80dd7b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/links/links_2.7.bb
@@ -0,0 +1,13 @@
+require links.inc
+
+DEPENDS += "gpm"
+RCONFLICTS_${PN} = "links-x11"
+
+EXTRA_OECONF = "--enable-graphics \
+                --with-ssl=${STAGING_LIBDIR}/.. --with-libjpeg \
+                --without-libtiff --without-svgalib --with-fb \
+                --without-directfb --without-pmshell --without-atheos \
+                --without-x"
+
+SRC_URI[md5sum] = "d06aa6e14b2172d73188871a5357185a"
+SRC_URI[sha256sum] = "0c182b1cbcdfd5cdcd2f75a6032d1a4b660d07c1225c1e07757cec81d3302130"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
new file mode 100644
index 0000000..35ba161
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
@@ -0,0 +1,60 @@
+SUMMARY = "lio-utils"
+DESCRIPTION = "a simple low-level configuration tool set for the Target+iSCSI (LIO)"
+HOMEPAGE = "http://linux-iscsi.org/index.php/Lio-utils"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=c3ea231a32635cbb5debedf3e88aa3df"
+
+PV = "4.1+git${SRCPV}"
+
+SRC_URI = "git://risingtidesystems.com/lio-utils.git"
+SRCREV = "28bd928655bdc7bd3cf380f0196630690c51e05f"
+S = "${WORKDIR}/git"
+
+inherit distutils
+
+EXTRA_OEMAKE += "DESTDIR=${D}"
+
+do_compile() {
+    cd ${S}/tcm-py
+    distutils_do_compile
+
+    cd ${S}/lio-py
+    distutils_do_compile
+
+    if test -d ${S}/tools; then
+        oe_runmake -C ${S}/tools
+    fi
+}
+
+do_install() {
+    cd ${S}/tcm-py
+    distutils_do_install
+
+    cd ${S}/lio-py
+    distutils_do_install
+
+    SITE_PACKAGES=${D}/${PYTHON_SITEPACKAGES_DIR}
+    install -d ${D}/${sbindir}
+    for var in tcm_node tcm_dump tcm_loop tcm_fabric lio_dump lio_node; do
+        if [ ! -h ${D}/${sbindir}/${var} ];then
+            chmod a+x ${SITE_PACKAGES}/${var}.py
+            ln -s ${PYTHON_SITEPACKAGES_DIR}/${var}.py ${D}/${sbindir}/${var}
+        fi
+    done
+
+    if test -d ${S}/tools; then
+        oe_runmake -C ${S}/tools install
+    fi
+
+    install -d ${D}/etc/target/
+    install -d ${D}/etc/init.d/
+    install -m 755 ${S}/scripts/rc.target ${D}/etc/init.d/
+    install -m 755 ${S}/conf/tcm_start.default ${D}/etc/target/tcm_start.sh
+    install -m 755 ${S}/conf/lio_start.default ${D}/etc/target/lio_start.sh
+}
+
+RDEPENDS_${PN} += "python-stringold python-subprocess python-shell \
+    python-datetime python-textutils python-crypt python-netclient python-email \
+    bash"
+
+FILES_${PN} += "${sbindir}/* /etc/init.d/* /etc/target/*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/fancontrol b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/fancontrol
new file mode 100644
index 0000000..1f03a2b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/fancontrol
@@ -0,0 +1,2 @@
+# fancontrol configuration file.
+# Place your device specific configuration in this file.
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensord b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensord
new file mode 100644
index 0000000..a58362e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensord
@@ -0,0 +1,16 @@
+# configuration for hardware sensors monitoring daemon
+# in intervals use suffix "m" for minutes, "s" for seconds, "h" for hours
+# 0 means turning facility off
+
+# interval between scanning alarms
+INTERVAL=1m
+
+# interval between logging
+LOG_INTERVAL=20m
+
+# interval between RRD logging
+# RRD_INTERVAL=1m
+
+# RRD db location
+# RRD_LOGFILE=/var/log/sensors.rrd
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensord.cgi b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensord.cgi
new file mode 100644
index 0000000..b1aad05
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensord.cgi
@@ -0,0 +1,10 @@
+#!/usr/bin/rrdcgi
+
+<html>
+<head>
+<title>sensord</title>
+</head>
+<body>
+Generate a valid sensord.cgi script and install it in your BSP.
+</body>
+</html>
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensord.conf b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensord.conf
new file mode 100644
index 0000000..6b48cf6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensord.conf
@@ -0,0 +1,16 @@
+# Default sensord configuration file
+# Syntax: sensord {options} {chips}
+# -i, --interval <time>     -- interval between scanning alarms (default 60s)
+# -l, --log-interval <time> -- interval between logging sensors (default 30m)
+# -t, --rrd-interval <time> -- interval between updating RRD file (default 5m)
+# -T, --rrd-no-average      -- switch RRD in non-average mode
+# -r, --rrd-file <file>     -- RRD file (default <none>)
+# -c, --config-file <file>  -- configuration file
+# -p, --pid-file <file>     -- PID file (default /var/run/sensord.pid)
+# -f, --syslog-facility <f> -- syslog facility to use (default local4)
+# -g, --rrd-cgi <img-dir>   -- output an RRD CGI script and exit
+# -a, --load-average        -- include load average in RRD file
+# -d, --debug               -- display some debug information
+# -v, --version             -- display version and exit
+# -h, --help                -- display help and exit
+SENSORD_ARGS="-i60s -l30m -t1m -r/var/lib/sensord.rrd -a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensors.conf b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensors.conf
new file mode 100644
index 0000000..bb8c93d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config/sensors.conf
@@ -0,0 +1,2 @@
+# sensors configuration file.
+# Place your device specific configuration in this file.
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config_1.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config_1.0.bb
new file mode 100644
index 0000000..3638019
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors-config_1.0.bb
@@ -0,0 +1,63 @@
+SUMMARY = "lm_sensors configuration files"
+DESCRIPTION = "Hardware health monitoring configuration files"
+HOMEPAGE = "http://www.lm-sensors.org/"
+LICENSE = "MIT-X"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+SRC_URI = "file://fancontrol \
+           file://sensord.cgi \
+           file://sensord.conf \
+           file://sensors.conf \
+           file://sensord \
+"
+S = "${WORKDIR}"
+
+RDEPENDS_${PN}-dev = ""
+
+do_install() {
+    # Install fancontrol configuration file
+    install -d ${D}${sysconfdir}/sysconfig
+    install -m 0644 ${WORKDIR}/fancontrol ${D}${sysconfdir}
+    install -m 0644 ${WORKDIR}/sensord ${D}${sysconfdir}/sysconfig
+    # Install libsensors configuration file
+    install -d ${D}${sysconfdir}/sensors.d
+    install -m 0644 ${WORKDIR}/sensors.conf ${D}${sysconfdir}/sensors.d
+
+    # Install sensord configuration file
+    install -m 0644 ${WORKDIR}/sensord.conf ${D}${sysconfdir}
+
+    # Install sensord.cgi script and create world-writable
+    # web-accessible sensord directory
+    install -d ${D}/www/pages/cgi-bin
+    install -m 0755 ${WORKDIR}/sensord.cgi ${D}/www/pages/cgi-bin
+    install -d -m a=rwxs ${D}/www/pages/sensord
+}
+
+# libsensors configuration
+PACKAGES =+ "${PN}-libsensors"
+
+# sensord logging daemon configuration
+PACKAGES =+ "${PN}-sensord"
+
+# fancontrol script configuration
+PACKAGES =+ "${PN}-fancontrol"
+
+# sensord web cgi support
+PACKAGES =+ "${PN}-cgi"
+RRECOMMENDS_${PN}-cgi = "lighttpd lighttpd-module-cgi"
+RDEPENDS_${PN}-cgi = "${PN}-sensord rrdtool"
+FILES_${PN}-cgi = "/www/*" 
+
+# libsensors configuration file
+FILES_${PN}-libsensors = "${sysconfdir}/sensors.d/sensors.conf"
+
+# sensord logging daemon configuration files
+FILES_${PN}-sensord = "\
+    ${sysconfdir}/sensord.conf \
+    ${sysconfdir}/sysconfig/sensord \
+"
+
+# fancontrol script configuration file
+FILES_${PN}-fancontrol = "${sysconfdir}/fancontrol"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors/fancontrol.init b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors/fancontrol.init
new file mode 100644
index 0000000..4433020
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors/fancontrol.init
@@ -0,0 +1,47 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          fancontrol
+# Required-Start:    $local_fs
+# Should-Start:
+# Required-Stop:     $local_fs
+# Should-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: fancontrol initscript
+# Description:       Starts and controls the fancontrol daemon
+### END INIT INFO
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+DESC="fan control daemon"
+NAME="fancontrol"
+FANCONTROL=`which $NAME`
+PIDFILE="/var/run/fancontrol.pid"
+
+# Exit if the package is not installed
+[ -x "$FANCONTROL" ] || exit 0
+
+case "$1" in
+    start)
+        echo -n "Starting $DESC: $NAME... "
+        start-stop-daemon -S -p $PIDFILE -b -x $FANCONTROL
+        echo "done."
+        ;;
+    stop)
+        echo -n "Stopping $DESC: $NAME... "
+        start-stop-daemon -K -p $PIDFILE
+        echo "done."
+        ;;
+    restart)
+        echo "Restarting $DESC: $NAME... "
+        $0 stop
+        $0 start
+        echo "done."
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors/sensord.init b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors/sensord.init
new file mode 100644
index 0000000..5a09cd3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors/sensord.init
@@ -0,0 +1,49 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          sensord
+# Required-Start:    $local_fs
+# Should-Start:
+# Required-Stop:     $local_fs
+# Should-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: sensord initscript
+# Description:       Starts the sensord logging daemon
+### END INIT INFO
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+DESC="sensors logging daemon"
+NAME="sensord"
+SENSORD=`which $NAME`
+
+. /etc/init.d/functions || exit 1
+. /etc/sensord.conf || exit 1
+
+# Exit if the package is not installed
+[ -x "$SENSORD" ] || exit 0
+
+case "$1" in
+    start)
+        echo -n "Starting $DESC: $NAME... "
+        start-stop-daemon -S -x $SENSORD -- $SENSORD_ARGS
+        echo "done."
+        ;;
+    stop)
+        echo -n "Stopping $DESC: $NAME... "
+        start-stop-daemon -K -x $SENSORD
+        echo "done."
+        ;;
+    restart)
+        echo "Restarting $DESC: $NAME... "
+        $0 stop
+        $0 start
+        echo "done."
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors_3.4.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors_3.4.0.bb
new file mode 100644
index 0000000..857a57b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lm_sensors/lmsensors_3.4.0.bb
@@ -0,0 +1,133 @@
+SUMMARY = "lm_sensors"
+DESCRIPTION = "Hardware health monitoring applications"
+HOMEPAGE = "http://www.lm-sensors.org/"
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+                    file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "sysfsutils virtual/libiconv bison-native flex-native rrdtool"
+
+SRC_URI = "http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-${PV}.tar.bz2 \
+           file://fancontrol.init \
+           file://sensord.init \
+"
+SRC_URI[md5sum] = "c03675ae9d43d60322110c679416901a"
+SRC_URI[sha256sum] = "e0579016081a262dd23eafe1d22b41ebde78921e73a1dcef71e05e424340061f"
+
+inherit update-rc.d systemd
+
+RDEPENDS_${PN}-dev = ""
+
+INITSCRIPT_PACKAGES = "${PN}-fancontrol ${PN}-sensord"
+INITSCRIPT_NAME_${PN}-fancontrol = "fancontrol"
+INITSCRIPT_NAME_${PN}-sensord = "sensord"
+INITSCRIPT_PARAMS_${PN}-fancontrol = "defaults 66"
+INITSCRIPT_PARAMS_${PN}-sensord = "defaults 67"
+
+SYSTEMD_PACKAGES = "${PN}-sensord"
+SYSTEMD_SERVICE_${PN}-sensord = "sensord.service lm_sensors.service fancontrol.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+S = "${WORKDIR}/lm_sensors-${PV}"
+
+EXTRA_OEMAKE = 'EXLDFLAGS="${LDFLAGS}" \
+        MACHINE=${TARGET_ARCH} PREFIX=${prefix} MANDIR=${mandir} \
+        LIBDIR=${libdir} \
+        CC="${CC}" AR="${AR}"'
+
+do_compile() {
+    oe_runmake user PROG_EXTRA="sensors sensord"
+}
+
+do_install() {
+    oe_runmake user_install DESTDIR=${D}
+    install -m 0755 ${S}/prog/sensord/sensord ${D}${sbindir}
+    install -m 0644 ${S}/prog/sensord/sensord.8 ${D}${mandir}/man8
+
+    # Install directory
+    install -d ${D}${sysconfdir}/init.d
+
+    # Install fancontrol init script
+    install -m 0755 ${WORKDIR}/fancontrol.init \
+        ${D}${sysconfdir}/init.d/fancontrol
+
+    # Install sensord init script
+    install -m 0755 ${WORKDIR}/sensord.init ${D}${sysconfdir}/init.d/sensord
+
+    # Insall sensord service script
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${S}/prog/init/*.service ${D}${systemd_unitdir}/system
+    fi
+}
+
+# libsensors packages
+PACKAGES =+ "${PN}-libsensors ${PN}-libsensors-dbg ${PN}-libsensors-dev ${PN}-libsensors-staticdev ${PN}-libsensors-doc"
+
+# sensors command packages
+PACKAGES =+ "${PN}-sensors ${PN}-sensors-dbg ${PN}-sensors-doc"
+
+# sensord logging daemon
+PACKAGES =+ "${PN}-sensord ${PN}-sensord-dbg ${PN}-sensord-doc"
+
+# fancontrol script
+PACKAGES =+ "${PN}-fancontrol ${PN}-fancontrol-doc"
+
+# sensors-detect script
+PACKAGES =+ "${PN}-sensorsdetect ${PN}-sensorsdetect-doc"
+
+# sensors-conf-convert script
+PACKAGES =+ "${PN}-sensorsconfconvert ${PN}-sensorsconfconvert-doc"
+
+# pwmconfig script
+PACKAGES =+ "${PN}-pwmconfig ${PN}-pwmconfig-doc"
+
+# isadump and isaset helper program
+PACKAGES =+ "${PN}-isatools ${PN}-isatools-dbg ${PN}-isatools-doc"
+
+# libsensors files
+FILES_${PN}-libsensors = "${libdir}/libsensors.so.* ${sysconfdir}/sensors3.conf ${sysconfdir}/sensors.d"
+FILES_${PN}-libsensors-dbg = "${libdir}/.debug ${prefix}/src/debug"
+FILES_${PN}-libsensors-dev = "${libdir}/libsensors.so ${includedir}"
+FILES_${PN}-libsensors-staticdev = "${libdir}/libsensors.a"
+FILES_${PN}-libsensors-doc = "${mandir}/man3"
+RRECOMMENDS_${PN}-libsensors = "lmsensors-config-libsensors"
+
+# sensors command files
+FILES_${PN}-sensors = "${bindir}/sensors"
+FILES_${PN}-sensors-dbg = "${bindir}/.debug/sensors"
+FILES_${PN}-sensors-doc = "${mandir}/man1 ${mandir}/man5"
+RDEPENDS_${PN}-sensors = "${PN}-libsensors"
+
+# sensord logging daemon
+FILES_${PN}-sensord = "${sbindir}/sensord ${sysconfdir}/init.d/sensord ${systemd_unitdir}/system/sensord.service"
+FILES_${PN}-sensord-dbg = "${bindir}/.debug/sensord"
+FILES_${PN}-sensord-doc = "${mandir}/man8/sensord.8"
+RDEPENDS_${PN}-sensord = "${PN}-sensors rrdtool"
+RRECOMMENDS_${PN}-sensord = "lmsensors-config-sensord"
+
+# fancontrol script files
+FILES_${PN}-fancontrol = "${sbindir}/fancontrol ${sysconfdir}/init.d/fancontrol"
+FILES_${PN}-fancontrol-doc = "${mandir}/man8/fancontrol.8"
+RDEPENDS_${PN}-fancontrol = "bash"
+RRECOMMENDS_${PN}-fancontrol = "lmsensors-config-fancontrol"
+
+# sensors-detect script files
+FILES_${PN}-sensorsdetect = "${sbindir}/sensors-detect"
+FILES_${PN}-sensorsdetect-doc = "${mandir}/man8/sensors-detect.8"
+RDEPENDS_${PN}-sensorsdetect = "${PN}-sensors perl perl-modules"
+
+# sensors-conf-convert script files
+FILES_${PN}-sensorsconfconvert = "${bindir}/sensors-conf-convert"
+FILES_${PN}-sensorsconfconvert-doc = "${mandir}/man8/sensors-conf-convert.8"
+RDEPENDS_${PN}-sensorsconfconvert = "${PN}-sensors perl perl-modules"
+
+# pwmconfig script files
+FILES_${PN}-pwmconfig = "${sbindir}/pwmconfig"
+FILES_${PN}-pwmconfig-doc = "${mandir}/man8/pwmconfig.8"
+RDEPENDS_${PN}-pwmconfig = "${PN}-fancontrol"
+
+# isadump and isaset helper program files
+FILES_${PN}-isatools = "${sbindir}/isa*"
+FILES_${PN}-isatools-dbg = "${sbindir}/.debug/isa*"
+FILES_${PN}-isatools-doc = "${mandir}/man8/isa*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb
new file mode 100644
index 0000000..023b9a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Locking devices library"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM="file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+PV = "1.0.3+git${SRCPV}"
+
+SRCREV = "16b899645d32012cc94cc9232f64d4ddaaf0b795"
+SRC_URI = "git://anonscm.debian.org/lockdev/lockdev.git"
+
+S = "${WORKDIR}/git"
+
+inherit lib_package autotools-brokensep
+
+do_configure_prepend () {
+    ./scripts/git-version > VERSION
+
+    # Make automake happy
+    touch ChangeLog
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/log4c/log4c/fix_configure_with-expat.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/log4c/log4c/fix_configure_with-expat.patch
new file mode 100644
index 0000000..4872eb4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/log4c/log4c/fix_configure_with-expat.patch
@@ -0,0 +1,21 @@
+The original use of AC_ARG_WITH is buggy and causes expat support
+to be *disabled* if "--with-expat" is passed to configure.
+
+Upstream status: pending
+
+Index: log4c-1.2.4/configure.in
+===================================================================
+--- log4c-1.2.4.orig/configure.in
++++ log4c-1.2.4/configure.in
+@@ -217,9 +217,9 @@ AC_ARG_WITH(expat,
+                     have any effect and Log4C uses some bundled yacc/lex code
+                     for parsing it's configuration file.
+                     ]),
+-                    with_expat=no,
++                    [],
+                     with_expat=yes)
+-if test x$with_expat = xyes ; then
++if test x$with_expat != xno ; then
+  use_expat=yes
+  AM_PATH_EXPAT(1.95.1)
+ fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/log4c/log4c_1.2.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/log4c/log4c_1.2.4.bb
new file mode 100644
index 0000000..3286b08
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/log4c/log4c_1.2.4.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Log4c is a C library for flexible logging to files, syslog and other destinations"
+HOMEPAGE = "http://log4c.sourceforge.net"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz \
+           file://fix_configure_with-expat.patch"
+
+SRC_URI[md5sum] = "0d94919136e1d16b68427562e74cb3dd"
+SRC_URI[sha256sum] = "5991020192f52cc40fa852fbf6bbf5bd5db5d5d00aa9905c67f6f0eadeed48ea"
+
+PACKAGECONFIG ??= "expat"
+PACKAGECONFIG[expat] = "--with-expat,--without-expat,expat"
+
+BINCONFIG = "${bindir}/log4c-config"
+
+inherit autotools binconfig-disabled
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/log4cpp/files/fix-pc.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/log4cpp/files/fix-pc.patch
new file mode 100644
index 0000000..b8fb42e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/log4cpp/files/fix-pc.patch
@@ -0,0 +1,20 @@
+diff -Nurd ./log4cpp.orig/configure.in ./log4cpp/configure.in
+--- ./log4cpp.orig/configure.in	2009-09-07 16:57:46.000000000 -0400
++++ ./log4cpp/configure.in	2016-02-23 12:57:11.567240018 -0500
+@@ -130,7 +130,6 @@
+ # ----------------------------------------------------------------------------
+ 
+ AC_CONFIG_LIBCONFIG_IN([log4cpp])
+-AC_CONFIG_PKGCONFIG_IN([log4cpp], [C++ library for flexible logging, modeled after Log4j])
+ 
+ AC_CONFIG_FILES([
+ Makefile
+diff -Nurd ./log4cpp.orig/log4cpp.pc.in ./log4cpp/log4cpp.pc.in
+--- ./log4cpp.orig/log4cpp.pc.in	2004-01-27 05:24:25.000000000 -0500
++++ ./log4cpp/log4cpp.pc.in	2016-02-22 15:06:55.769327491 -0500
+@@ -7,4 +7,4 @@
+ Description: C++ library for flexible logging, modeled after Log4j
+ Version: @VERSION@
+ Libs: -L${libdir} @log4cpp_libs@
+-Cflags: -I${includedir} @log4cpp_cflags@
++Cflags: -I${includedir}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.1.bb
new file mode 100644
index 0000000..c7bf288
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.1.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations."
+HOMEPAGE = "http://sourceforge.net/projects/log4cpp/"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+SRC_URI[md5sum] = "1e173df8ee97205f412ff84aa93b8fbe"
+SRC_URI[sha256sum] = "35abf332630a6809c969276b1d60b90c81a95daf24c86cfd7866ffef72f9bed0"
+
+SRC_URI = "http://downloads.sourceforge.net/${BPN}/${BP}.tar.gz \
+           file://fix-pc.patch;striplevel=2 \
+          "
+
+S = "${WORKDIR}/${BPN}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "\
+    --enable-doxygen=no \
+    --enable-dot=no \
+    --enable-html-docs=no \
+    --enable-latex-docs=no \
+    LDFLAGS=-pthread \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
new file mode 100644
index 0000000..3a5e1c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
@@ -0,0 +1,68 @@
+SECTION = "utils"
+DESCRIPTION = "LVM2 is a set of utilities to manage logical volumes in Linux."
+DEPENDS = "udev"
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://COPYING.LIB;md5=fbc093901857fcd118f065f900982c24"
+
+SRC_URI = "ftp://sources.redhat.com/pub/lvm2/old/LVM2.${PV}.tgz \
+           file://lvm.conf \
+           file://0001-implement-libc-specific-_reopen_stream.patch \
+           file://0002-use-PTHREAD_MUTEX_RECURSIVE-instead-of-PTHREAD_MUTEX.patch \
+           file://0003-Guard-use-of-mallinfo-with-__GLIBC__.patch \
+           file://0004-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch \
+           "
+
+S = "${WORKDIR}/LVM2.${PV}"
+
+inherit autotools-brokensep pkgconfig systemd
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)}"
+
+PACKAGECONFIG[readline] = "--enable-readline,--disable-readline,readline"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
+
+# Unset user/group to unbreak install.
+EXTRA_OECONF = "--with-user= \
+                --with-group= \
+                --disable-o_direct \
+                --enable-realtime \
+                --enable-applib \
+                --enable-cmdlib \
+                --enable-udev_sync \
+                --enable-udev_rules \
+                --enable-pkgconfig \
+                --enable-dmeventd \
+                --enable-lvmetad \
+                --with-udev-prefix= \
+                --with-usrlibdir=${libdir} \
+                --with-systemdsystemunitdir=${systemd_system_unitdir} \
+"
+
+do_install_append() {
+    # Install machine specific configuration file
+    install -m 0644 ${WORKDIR}/lvm.conf ${D}${sysconfdir}/lvm/lvm.conf
+    sed -i -e 's:@libdir@:${libdir}:g' ${D}${sysconfdir}/lvm/lvm.conf
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        oe_runmake 'DESTDIR=${D}' install install_systemd_units
+        sed -i -e 's:/usr/bin/true:${base_bindir}/true:g' ${D}${systemd_system_unitdir}/blk-availability.service
+    else
+        oe_runmake 'DESTDIR=${D}' install install_initscripts
+        mv ${D}${sysconfdir}/rc.d/init.d ${D}${sysconfdir}/init.d
+        rm -rf ${D}${sysconfdir}/rc.d
+    fi
+}
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "lvm2-monitor.service dm-event.socket dm-event.service lvm2-lvmetad.socket \
+                         lvm2-pvscan@.service blk-availability.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+FILES_${PN} += "${libdir}/device-mapper/*.so ${base_libdir}/udev"
+FILES_${PN}-dbg += "${libdir}/device-mapper/.debug"
+
+RDEPENDS_${PN} = "bash"
+
+CONFFILES_${PN} += "${sysconfdir}/lvm/lvm.conf"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-implement-libc-specific-_reopen_stream.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-implement-libc-specific-_reopen_stream.patch
new file mode 100644
index 0000000..f0b4e71
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-implement-libc-specific-_reopen_stream.patch
@@ -0,0 +1,139 @@
+From 089c9c701a1b68b721f479dfc0c58c35b9dd4175 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Jan 2016 04:39:53 +0000
+Subject: [PATCH 1/4] implement libc specific _reopen_stream
+
+musl defines stdin/stdio/stderr as constant types which means
+we can not assign to them as we are doing here but works ok with glibc
+therefore abstract out the _reopen_stream definition depending upon if
+we are using glibc or otherwise
+
+Origin:
+http://git.alpinelinux.org/cgit/aports/tree/main/lvm2/fix-stdio-usage.patch
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ lib/commands/toolcontext.c | 22 +++++++++++-----------
+ tools/lvmcmdline.c         |  6 +++---
+ 2 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
+index a2f21b8..7f796e4 100644
+--- a/lib/commands/toolcontext.c
++++ b/lib/commands/toolcontext.c
+@@ -1637,7 +1637,10 @@ static void _init_globals(struct cmd_context *cmd)
+ /*
+  * Close and reopen stream on file descriptor fd.
+  */
+-static int _reopen_stream(FILE *stream, int fd, const char *mode, const char *name, FILE **new_stream)
++#ifdef __GLIBC__
++#define _reopen_stream(stream, fd, mode, name) __reopen_stream(stream, fd, mode, name, &stream)
++
++static int __reopen_stream(FILE *stream, int fd, const char *mode, const char *name, FILE **new_stream)
+ {
+ 	int fd_copy, new_fd;
+ 
+@@ -1664,6 +1667,9 @@ static int _reopen_stream(FILE *stream, int fd, const char *mode, const char *na
+ 
+ 	return 1;
+ }
++#else
++#define _reopen_stream(stream, fd, mode, name) (freopen(NULL, mode, stream) != NULL)
++#endif
+ 
+ static int _init_lvmetad(struct cmd_context *cmd)
+ {
+@@ -1741,7 +1747,6 @@ struct cmd_context *create_toolcontext(unsigned is_long_lived,
+ 				       unsigned set_filters)
+ {
+ 	struct cmd_context *cmd;
+-	FILE *new_stream;
+ 	int flags;
+ 
+ #ifdef M_MMAP_MAX
+@@ -1791,9 +1796,8 @@ struct cmd_context *create_toolcontext(unsigned is_long_lived,
+ 		if (is_valid_fd(STDIN_FILENO) &&
+ 		    ((flags = fcntl(STDIN_FILENO, F_GETFL)) > 0) &&
+ 		    (flags & O_ACCMODE) != O_WRONLY) {
+-			if (!_reopen_stream(stdin, STDIN_FILENO, "r", "stdin", &new_stream))
++			if (!_reopen_stream(stdin, STDIN_FILENO, "r", "stdin"))
+ 				goto_out;
+-			stdin = new_stream;
+ 			if (setvbuf(stdin, cmd->linebuffer, _IOLBF, linebuffer_size)) {
+ 				log_sys_error("setvbuf", "");
+ 				goto out;
+@@ -1803,9 +1807,8 @@ struct cmd_context *create_toolcontext(unsigned is_long_lived,
+ 		if (is_valid_fd(STDOUT_FILENO) &&
+ 		    ((flags = fcntl(STDOUT_FILENO, F_GETFL)) > 0) &&
+ 		    (flags & O_ACCMODE) != O_RDONLY) {
+-			if (!_reopen_stream(stdout, STDOUT_FILENO, "w", "stdout", &new_stream))
++			if (!_reopen_stream(stdout, STDOUT_FILENO, "w", "stdout"))
+ 				goto_out;
+-			stdout = new_stream;
+ 			if (setvbuf(stdout, cmd->linebuffer + linebuffer_size,
+ 				     _IOLBF, linebuffer_size)) {
+ 				log_sys_error("setvbuf", "");
+@@ -2131,7 +2134,6 @@ int refresh_toolcontext(struct cmd_context *cmd)
+ void destroy_toolcontext(struct cmd_context *cmd)
+ {
+ 	struct dm_config_tree *cft_cmdline;
+-	FILE *new_stream;
+ 	int flags;
+ 
+ 	if (cmd->dump_filter && cmd->filter && cmd->filter->dump &&
+@@ -2167,8 +2169,7 @@ void destroy_toolcontext(struct cmd_context *cmd)
+ 		if (is_valid_fd(STDIN_FILENO) &&
+ 		    ((flags = fcntl(STDIN_FILENO, F_GETFL)) > 0) &&
+ 		    (flags & O_ACCMODE) != O_WRONLY) {
+-			if (_reopen_stream(stdin, STDIN_FILENO, "r", "stdin", &new_stream)) {
+-				stdin = new_stream;
++			if (_reopen_stream(stdin, STDIN_FILENO, "r", "stdin")) {
+ 				setlinebuf(stdin);
+ 			} else
+ 				cmd->linebuffer = NULL;	/* Leave buffer in place (deliberate leak) */
+@@ -2177,8 +2178,7 @@ void destroy_toolcontext(struct cmd_context *cmd)
+ 		if (is_valid_fd(STDOUT_FILENO) &&
+ 		    ((flags = fcntl(STDOUT_FILENO, F_GETFL)) > 0) &&
+ 		    (flags & O_ACCMODE) != O_RDONLY) {
+-			if (_reopen_stream(stdout, STDOUT_FILENO, "w", "stdout", &new_stream)) {
+-				stdout = new_stream;
++			if (_reopen_stream(stdout, STDOUT_FILENO, "w", "stdout")) {
+ 				setlinebuf(stdout);
+ 			} else
+ 				cmd->linebuffer = NULL;	/* Leave buffer in place (deliberate leak) */
+diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
+index 6577977..a33258a 100644
+--- a/tools/lvmcmdline.c
++++ b/tools/lvmcmdline.c
+@@ -1744,7 +1744,7 @@ static int _check_standard_fds(void)
+ 	int err = is_valid_fd(STDERR_FILENO);
+ 
+ 	if (!is_valid_fd(STDIN_FILENO) &&
+-	    !(stdin = fopen(_PATH_DEVNULL, "r"))) {
++	    !freopen(_PATH_DEVNULL, "r", stdin)) {
+ 		if (err)
+ 			perror("stdin stream open");
+ 		else
+@@ -1754,7 +1754,7 @@ static int _check_standard_fds(void)
+ 	}
+ 
+ 	if (!is_valid_fd(STDOUT_FILENO) &&
+-	    !(stdout = fopen(_PATH_DEVNULL, "w"))) {
++	    !freopen(_PATH_DEVNULL, "w", stdout)) {
+ 		if (err)
+ 			perror("stdout stream open");
+ 		/* else no stdout */
+@@ -1762,7 +1762,7 @@ static int _check_standard_fds(void)
+ 	}
+ 
+ 	if (!is_valid_fd(STDERR_FILENO) &&
+-	    !(stderr = fopen(_PATH_DEVNULL, "w"))) {
++	    !freopen(_PATH_DEVNULL, "w", stderr)) {
+ 		printf("stderr stream open: %s\n",
+ 		       strerror(errno));
+ 		return 0;
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0002-use-PTHREAD_MUTEX_RECURSIVE-instead-of-PTHREAD_MUTEX.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0002-use-PTHREAD_MUTEX_RECURSIVE-instead-of-PTHREAD_MUTEX.patch
new file mode 100644
index 0000000..969a152
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0002-use-PTHREAD_MUTEX_RECURSIVE-instead-of-PTHREAD_MUTEX.patch
@@ -0,0 +1,44 @@
+From c8a1b669cbff3eee367fd4db3389e337bc4c98ba Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Jan 2016 04:46:26 +0000
+Subject: [PATCH 2/4] use PTHREAD_MUTEX_RECURSIVE instead of
+ PTHREAD_MUTEX_RECURSIVE_NP
+
+PTHREAD_MUTEX_RECURSIVE_NP was used for compatibility with old glibc.
+Although due to the_GNU_SOURCES define the portable,
+PTHREAD_MUTEX_RECURSIVE will be available for Linuxes since at least
+1998. Simplify things giving us compatibility with musl which
+apparently does not provide the non-portable define.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ daemons/lvmetad/lvmetad-core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
+index 7af9bde..63707c2 100644
+--- a/daemons/lvmetad/lvmetad-core.c
++++ b/daemons/lvmetad/lvmetad-core.c
+@@ -300,7 +300,7 @@ static struct dm_config_tree *lock_vg(lvmetad_state *s, const char *id) {
+ 	if (!(vg = dm_hash_lookup(s->lock.vg, id))) {
+ 		if (!(vg = malloc(sizeof(pthread_mutex_t))) ||
+ 		    pthread_mutexattr_init(&rec) ||
+-		    pthread_mutexattr_settype(&rec, PTHREAD_MUTEX_RECURSIVE_NP) ||
++		    pthread_mutexattr_settype(&rec, PTHREAD_MUTEX_RECURSIVE) ||
+ 		    pthread_mutex_init(vg, &rec))
+ 			goto bad;
+ 		if (!dm_hash_insert(s->lock.vg, id, vg)) {
+@@ -2890,7 +2890,7 @@ static int init(daemon_state *s)
+ 	ls->log = s->log;
+ 
+ 	pthread_mutexattr_init(&rec);
+-	pthread_mutexattr_settype(&rec, PTHREAD_MUTEX_RECURSIVE_NP);
++	pthread_mutexattr_settype(&rec, PTHREAD_MUTEX_RECURSIVE);
+ 	pthread_mutex_init(&ls->lock.pvid_to_pvmeta, &rec);
+ 	pthread_mutex_init(&ls->lock.vgid_to_metadata, &rec);
+ 	pthread_mutex_init(&ls->lock.pvid_to_vgid, NULL);
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0003-Guard-use-of-mallinfo-with-__GLIBC__.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0003-Guard-use-of-mallinfo-with-__GLIBC__.patch
new file mode 100644
index 0000000..3d71767
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0003-Guard-use-of-mallinfo-with-__GLIBC__.patch
@@ -0,0 +1,30 @@
+From e018d055603389b22cbc3bd68b1525f3048ebee7 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Jan 2016 04:50:26 +0000
+Subject: [PATCH 3/4] Guard use of mallinfo() with __GLIBC__
+
+This API is glibc-only
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ lib/mm/memlock.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/mm/memlock.c b/lib/mm/memlock.c
+index 969f1d7..405a7c0 100644
+--- a/lib/mm/memlock.c
++++ b/lib/mm/memlock.c
+@@ -145,7 +145,7 @@ static void _touch_memory(void *mem, size_t size)
+ 
+ static void _allocate_memory(void)
+ {
+-#ifndef VALGRIND_POOL
++#if !defined(VALGRIND_POOL) && defined(__GLIBC__)
+ 	void *stack_mem;
+ 	struct rlimit limit;
+ 	int i, area = 0, missing = _size_malloc_tmp, max_areas = 32, hblks;
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0004-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0004-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch
new file mode 100644
index 0000000..2a3b843
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0004-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch
@@ -0,0 +1,29 @@
+From 9b793d5b4adc5d8b3684e7f66943e236eae7c2db Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Jan 2016 04:52:59 +0000
+Subject: [PATCH 4/4] include fcntl.h for O_* defines and fcntl() signature
+
+On glibc _somehow_ this header gets pulled in indirectly
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ libdaemon/server/daemon-server.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
+index d9d60d1..433d100 100644
+--- a/libdaemon/server/daemon-server.c
++++ b/libdaemon/server/daemon-server.c
+@@ -18,6 +18,7 @@
+ #include "daemon-server.h"
+ #include "daemon-log.h"
+ 
++#include <fcntl.h>
+ #include <dlfcn.h>
+ #include <errno.h>
+ #include <pthread.h>
+-- 
+2.7.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/lvm.conf b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/lvm.conf
new file mode 100644
index 0000000..9e3b5fe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/lvm.conf
@@ -0,0 +1,326 @@
+# This is an example configuration file for the LVM2 system.
+# It contains the default settings that would be used if there was no
+# /etc/lvm/lvm.conf file.
+#
+# Refer to 'man lvm.conf' for further information including the file layout.
+#
+# To put this file in a different directory and override /etc/lvm set
+# the environment variable LVM_SYSTEM_DIR before running the tools.
+
+
+# This section allows you to configure which block devices should
+# be used by the LVM system.
+devices {
+
+    # Where do you want your volume groups to appear ?
+    dir = "/dev"
+
+    # An array of directories that contain the device nodes you wish
+    # to use with LVM2.
+    scan = [ "/dev" ]
+
+    # A filter that tells LVM2 to only use a restricted set of devices.
+    # The filter consists of an array of regular expressions.  These
+    # expressions can be delimited by a character of your choice, and
+    # prefixed with either an 'a' (for accept) or 'r' (for reject).
+    # The first expression found to match a device name determines if
+    # the device will be accepted or rejected (ignored).  Devices that
+    # don't match any patterns are accepted.
+
+    # Be careful if there there are symbolic links or multiple filesystem 
+    # entries for the same device as each name is checked separately against
+    # the list of patterns.  The effect is that if any name matches any 'a'
+    # pattern, the device is accepted; otherwise if any name matches any 'r'
+    # pattern it is rejected; otherwise it is accepted.
+
+    # Don't have more than one filter line active at once: only one gets used.
+
+    # Run vgscan after you change this parameter to ensure that
+    # the cache file gets regenerated (see below).
+    # If it doesn't do what you expect, check the output of 'vgscan -vvvv'.
+
+
+    # By default we accept every block device:
+    filter = [ "a/.*/" ]
+
+    # Exclude the cdrom drive
+    # filter = [ "r|/dev/cdrom|" ]
+
+    # When testing I like to work with just loopback devices:
+    # filter = [ "a/loop/", "r/.*/" ]
+
+    # Or maybe all loops and ide drives except hdc:
+    # filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
+
+    # Use anchors if you want to be really specific
+    # filter = [ "a|^/dev/hda8$|", "r/.*/" ]
+
+    # The results of the filtering are cached on disk to avoid
+    # rescanning dud devices (which can take a very long time).  By
+    # default this cache file is hidden in the /etc/lvm directory.
+    # It is safe to delete this file: the tools regenerate it.
+    cache = "/etc/lvm/.cache"
+
+    # You can turn off writing this cache file by setting this to 0.
+    write_cache_state = 1
+
+    # Advanced settings.
+
+    # List of pairs of additional acceptable block device types found 
+    # in /proc/devices with maximum (non-zero) number of partitions.
+    # types = [ "fd", 16 ]
+
+    # If sysfs is mounted (2.6 kernels) restrict device scanning to 
+    # the block devices it believes are valid.
+    # 1 enables; 0 disables.
+    sysfs_scan = 1	
+
+    # By default, LVM2 will ignore devices used as components of
+    # software RAID (md) devices by looking for md superblocks.
+    # 1 enables; 0 disables.
+    md_component_detection = 1
+}
+
+# This section that allows you to configure the nature of the
+# information that LVM2 reports.
+log {
+
+    # Controls the messages sent to stdout or stderr.
+    # There are three levels of verbosity, 3 being the most verbose.
+    verbose = 0
+
+    # Should we send log messages through syslog?
+    # 1 is yes; 0 is no.
+    syslog = 1
+
+    # Should we log error and debug messages to a file?
+    # By default there is no log file.
+    #file = "/var/log/lvm2.log"
+
+    # Should we overwrite the log file each time the program is run?
+    # By default we append.
+    overwrite = 0
+
+    # What level of log messages should we send to the log file and/or syslog?
+    # There are 6 syslog-like log levels currently in use - 2 to 7 inclusive.
+    # 7 is the most verbose (LOG_DEBUG).
+    level = 0
+    
+    # Format of output messages
+    # Whether or not (1 or 0) to indent messages according to their severity
+    indent = 1
+
+    # Whether or not (1 or 0) to display the command name on each line output
+    command_names = 0
+
+    # A prefix to use before the message text (but after the command name,
+    # if selected).  Default is two spaces, so you can see/grep the severity
+    # of each message.
+    prefix = "  "
+
+    # To make the messages look similar to the original LVM tools use:
+    #   indent = 0
+    #   command_names = 1
+    #   prefix = " -- "
+
+    # Set this if you want log messages during activation.
+    # Don't use this in low memory situations (can deadlock).
+    # activation = 0
+}
+
+# Configuration of metadata backups and archiving.  In LVM2 when we
+# talk about a 'backup' we mean making a copy of the metadata for the
+# *current* system.  The 'archive' contains old metadata configurations.
+# Backups are stored in a human readeable text format.
+backup {
+
+    # Should we maintain a backup of the current metadata configuration ?
+    # Use 1 for Yes; 0 for No.
+    # Think very hard before turning this off!
+    backup = 1
+
+    # Where shall we keep it ?
+    # Remember to back up this directory regularly!
+    backup_dir = "/etc/lvm/backup"
+
+    # Should we maintain an archive of old metadata configurations.
+    # Use 1 for Yes; 0 for No.
+    # On by default.  Think very hard before turning this off.
+    archive = 1
+
+    # Where should archived files go ?
+    # Remember to back up this directory regularly!
+    archive_dir = "/etc/lvm/archive"
+    
+    # What is the minimum number of archive files you wish to keep ?
+    retain_min = 10
+
+    # What is the minimum time you wish to keep an archive file for ?
+    retain_days = 30
+}
+
+# Settings for the running LVM2 in shell (readline) mode.
+shell {
+
+    # Number of lines of history to store in ~/.lvm_history
+    history_size = 100
+}
+
+
+# Miscellaneous global LVM2 settings
+global {
+    
+    # The file creation mask for any files and directories created.
+    # Interpreted as octal if the first digit is zero.
+    umask = 077
+
+    # Allow other users to read the files
+    #umask = 022
+
+    # Enabling test mode means that no changes to the on disk metadata
+    # will be made.  Equivalent to having the -t option on every
+    # command.  Defaults to off.
+    test = 0
+
+    # Whether or not to communicate with the kernel device-mapper.
+    # Set to 0 if you want to use the tools to manipulate LVM metadata 
+    # without activating any logical volumes.
+    # If the device-mapper kernel driver is not present in your kernel
+    # setting this to 0 should suppress the error messages.
+    activation = 1
+
+    # If we can't communicate with device-mapper, should we try running 
+    # the LVM1 tools?
+    # This option only applies to 2.4 kernels and is provided to help you
+    # switch between device-mapper kernels and LVM1 kernels.
+    # The LVM1 tools need to be installed with .lvm1 suffices
+    # e.g. vgscan.lvm1 and they will stop working after you start using
+    # the new lvm2 on-disk metadata format.
+    # The default value is set when the tools are built.
+    # fallback_to_lvm1 = 0
+
+    # The default metadata format that commands should use - "lvm1" or "lvm2".
+    # The command line override is -M1 or -M2.
+    # Defaults to "lvm1" if compiled in, else "lvm2".
+    # format = "lvm1"
+
+    # Location of proc filesystem
+    proc = "/proc"
+
+    # Type of locking to use. Defaults to file-based locking (1).
+    # Turn locking off by setting to 0 (dangerous: risks metadata corruption
+    # if LVM2 commands get run concurrently).
+    locking_type = 1
+
+    # Local non-LV directory that holds file-based locks while commands are
+    # in progress.  A directory like /tmp that may get wiped on reboot is OK.
+    locking_dir = "/var/lock/lvm"
+
+    # Other entries can go here to allow you to load shared libraries
+    # e.g. if support for LVM1 metadata was compiled as a shared library use
+    #   format_libraries = "liblvm2format1.so" 
+    # Full pathnames can be given.
+
+    # Search this directory first for shared libraries.
+    #   library_dir = "/lib"
+}
+
+activation {
+    # Device used in place of missing stripes if activating incomplete volume.
+    # For now, you need to set this up yourself first (e.g. with 'dmsetup')
+    # For example, you could make it return I/O errors using the 'error' 
+    # target or make it return zeros.
+    missing_stripe_filler = "/dev/ioerror"
+
+    # Size (in KB) of each copy operation when mirroring
+    mirror_region_size = 512
+
+    # How much stack (in KB) to reserve for use while devices suspended
+    reserved_stack = 256
+
+    # How much memory (in KB) to reserve for use while devices suspended
+    reserved_memory = 8192
+
+    # Nice value used while devices suspended
+    process_priority = -18
+
+    # If volume_list is defined, each LV is only activated if there is a
+    # match against the list.
+    #   "vgname" and "vgname/lvname" are matched exactly.
+    #   "@tag" matches any tag set in the LV or VG.
+    #   "@*" matches if any tag defined on the host is also set in the LV or VG
+    #
+    # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+}
+
+
+####################
+# Advanced section #
+####################
+
+# Metadata settings
+#
+# metadata {
+    # Default number of copies of metadata to hold on each PV.  0, 1 or 2.
+    # You might want to override it from the command line with 0 
+    # when running pvcreate on new PVs which are to be added to large VGs.
+
+    # pvmetadatacopies = 1
+
+    # Approximate default size of on-disk metadata areas in sectors.
+    # You should increase this if you have large volume groups or
+    # you want to retain a large on-disk history of your metadata changes.
+
+    # pvmetadatasize = 255
+
+    # List of directories holding live copies of text format metadata.
+    # These directories must not be on logical volumes!
+    # It's possible to use LVM2 with a couple of directories here,
+    # preferably on different (non-LV) filesystems, and with no other 
+    # on-disk metadata (pvmetadatacopies = 0). Or this can be in
+    # addition to on-disk metadata areas.
+    # The feature was originally added to simplify testing and is not
+    # supported under low memory situations - the machine could lock up.
+    #
+    # Never edit any files in these directories by hand unless you
+    # you are absolutely sure you know what you are doing! Use
+    # the supplied toolset to make changes (e.g. vgcfgrestore).
+
+    # dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
+#}
+
+# Event daemon
+#
+dmeventd {
+    # mirror_library is the library used when monitoring a mirror device.
+    #
+    # "libdevmapper-event-lvm2mirror.so" attempts to recover from
+    # failures.  It removes failed devices from a volume group and
+    # reconfigures a mirror as necessary. If no mirror library is
+    # provided, mirrors are not monitored through dmeventd.
+
+    mirror_library = "@libdir@/device-mapper/libdevmapper-event-lvm2mirror.so"
+
+    # snapshot_library is the library used when monitoring a snapshot device.
+    #
+    # "libdevmapper-event-lvm2snapshot.so" monitors the filling of
+    # snapshots and emits a warning through syslog when the use of
+    # the snapshot exceeds 80%. The warning is repeated when 85%, 90% and
+    # 95% of the snapshot is filled.
+
+    snapshot_library = "@libdir@/device-mapper/libdevmapper-event-lvm2snapshot.so"
+
+    # thin_library is the library used when monitoring a thin device.
+    #
+    # "libdevmapper-event-lvm2thin.so" monitors the filling of
+    # pool and emits a warning through syslog when the use of
+    # the pool exceeds 80%. The warning is repeated when 85%, 90% and
+    # 95% of the pool is filled.
+
+    thin_library = "@libdir@/device-mapper/libdevmapper-event-lvm2thin.so"
+
+    # Full path of the dmeventd binary.
+    #
+    # executable = "@DMEVENTD_PATH@"
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.138.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.138.bb
new file mode 100644
index 0000000..13a866e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.138.bb
@@ -0,0 +1,4 @@
+require lvm2.inc
+
+SRC_URI[md5sum] = "c660e02ad4586a1d297b6befbe85556d"
+SRC_URI[sha256sum] = "93878a4ba4f70d9f2d0d919eb85bc51652a58776b5428ec8e7e32769d332f596"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/lzip/lzip_1.16.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/lzip/lzip_1.16.bb
new file mode 100644
index 0000000..af0b6ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/lzip/lzip_1.16.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Lossless data compressor based on the LZMA algorithm"
+HOMEPAGE = "http://lzip.nongnu.org/lzip.html"
+SECTION = "console/utils"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
+                    file://decoder.cc;endline=16;md5=0809128ac32163252846e09a70c8b80b"
+
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/lzip/lzip-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "716a9876dc595ec52d4f3bda81e42471"
+SRC_URI[sha256sum] = "128cc25baf92c8b69700831e6f984d954016318cc78edca87870d0c033112751"
+
+CONFIGUREOPTS = "\
+    '--srcdir=${S}' \
+    '--prefix=${prefix}' \
+    '--exec-prefix=${exec_prefix}' \
+    '--bindir=${bindir}' \
+    '--datadir=${datadir}' \
+    '--infodir=${infodir}' \
+    '--sysconfdir=${sysconfdir}' \
+    'CXX=${CXX}' \
+    'CPPFLAGS=${CPPFLAGS}' \
+    'CXXFLAGS=${CXXFLAGS}' \
+    'LDFLAGS=${LDFLAGS}' \
+"
+EXTRA_OEMAKE = ""
+
+B = "${S}/obj"
+do_configure () {
+    ${S}/configure ${CONFIGUREOPTS}
+}
+
+do_install () {
+    oe_runmake 'DESTDIR=${D}' install
+    # Info dir listing isn't interesting at this point so remove it if it exists.
+    if [ -e "${D}${infodir}/dir" ]; then
+        rm -f ${D}${infodir}/dir
+    fi
+}
+
+BBCLASSEXTEND += "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.45.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.45.bb
new file mode 100644
index 0000000..911360f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.45.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Helper application and MIME type associations for file types"
+DESCRIPTION = "The mailcap file is used by the metamail program. Metamail reads the \
+mailcap file to determine how it should display non-text or multimedia \
+material. Basically, mailcap associates a particular type of file \
+with a particular program that a mail agent or other program can call \
+in order to handle the file. Mailcap should be installed to allow \
+certain programs to be able to handle non-text files. \
+\
+Also included in this package is the mime.types file which contains a \
+list of MIME types and their filename extension associations, used  \
+by several applications e.g. to determine MIME types for filenames."
+
+SECTION = "System Environment/Base"
+
+SRC_URI = "https://git.fedorahosted.org/cgit/${BPN}.git/snapshot/${BPN}-r2-1-45.tar.gz"
+SRC_URI[md5sum] = "2320a77b2fc82078c9d6a59b29234bc8"
+SRC_URI[sha256sum] = "a73e2f93625475014066f414873cb9f0a4b1189942d94fade9a03e59be3745b7"
+LICENSE = "PD & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=100fcfb84512ccc03ffc7d89ac391305"
+S = "${WORKDIR}/${BPN}-r2-1-45"
+do_install() {
+    oe_runmake install DESTDIR=${D} sysconfdir=${sysconfdir} mandir=${mandir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mbuffer/mbuffer_20140310.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mbuffer/mbuffer_20140310.bb
new file mode 100644
index 0000000..3467d28
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mbuffer/mbuffer_20140310.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "mbuffer is a tool for buffering data streams with a large set of unique features."
+HOMEPAGE = "http://www.maier-komor.de/mbuffer.html"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504"
+SECTION = "console/network"
+
+SRC_URI = " \
+    http://www.maier-komor.de/software/mbuffer/mbuffer-20140310.tgz \
+"
+
+SRC_URI[md5sum] = "9937d7f666c19a2e6b2499b04dbecc44"
+SRC_URI[sha256sum] = "ab90b6fdce16db2bf08bcda0bc5d2bfb053a9a163d2a24f95fbf246460549b99"
+
+inherit autotools
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[md5] = "--enable-md5,--disable-md5,openssl"
+
+do_configure() {
+    ( cd ${S}; gnu-configize )
+    oe_runconf
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb
new file mode 100644
index 0000000..f876144
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Linux machine check injector tool"
+DESCRIPTION = "mce-inject allows to inject machine check errors on the \
+software level into a running Linux kernel. This is intended for \
+validation of the kernel machine check handler."
+SECTION = "System Environment/Base"
+
+SRC_URI = "git://git.kernel.org/pub/scm/utils/cpu/mce/mce-inject.git"
+
+SRCREV = "4cbe46321b4a81365ff3aafafe63967264dbfec5"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://README;beginline=30;md5=94c18755082a2da9c9cf97cba3ad47d6"
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_HOST = '(x86_64.*|i.86.*)-linux'
+
+inherit autotools-brokensep
+
+EXTRA_OEMAKE = "destdir=${D}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/mcelog-debash.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/mcelog-debash.patch
new file mode 100644
index 0000000..bea2f62
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/mcelog-debash.patch
@@ -0,0 +1,36 @@
+From 8f57d35747a3b3fabc33466563077373090f869c Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Tue, 2 Sep 2014 07:05:15 -0700
+Subject: [PATCH] cache-error-trigger: remove bashism
+
+Use "$(cat $F)" to instead of "$(< $F)" to debash.
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ triggers/cache-error-trigger |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/triggers/cache-error-trigger b/triggers/cache-error-trigger
+index e32bfd6..785526f 100755
+--- a/triggers/cache-error-trigger
++++ b/triggers/cache-error-trigger
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ # cache error trigger. This shell script is executed by mcelog in daemon mode
+ # when a CPU reports excessive corrected cache errors. This could be a indication
+ # for future uncorrected errors.
+@@ -28,7 +28,7 @@ for i in $AFFECTED_CPUS ; do
+ 	logger -s -p daemon.crit -t mcelog "Offlining CPU $i due to cache error threshold"
+ 	F=$(printf "/sys/devices/system/cpu/cpu%d/online" $i)
+ 	echo 0 > $F
+-	if [ "$(< $F)" != "0" ] ; then
++	if [ "$(cat $F)" != "0" ] ; then
+ 		logger -s -p daemon.warn -t mcelog "Offlining CPU $i failed"
+ 		EXIT=1
+ 	fi
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/run-ptest b/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/run-ptest
new file mode 100644
index 0000000..ba7a2c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+make -C tests test
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_1.09.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_1.09.bb
new file mode 100644
index 0000000..542b2ba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_1.09.bb
@@ -0,0 +1,36 @@
+SUMMARY = "mcelog daemon accounts memory and some other errors in various ways."
+DESCRIPTION = "mcelog is required by both 32bit x86 Linux kernels (since 2.6.30) \
+and 64bit Linux kernels (since early 2.6 kernel releases) to log machine checks \
+and should run on all Linux systems that need error handling."
+HOMEPAGE = "http://mcelog.org/"
+SECTION = "System Environment/Base"
+
+SRC_URI = "git://git.kernel.org/pub/scm/utils/cpu/mce/mcelog.git \
+    file://mcelog-debash.patch \
+    file://run-ptest \
+"
+
+SRCREV = "0fc9f702232cb2d9969916f899c67c3e64deedda"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://README;md5=3eb76ca64fa07ad53ebb0ebb5b4c8ede"
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep ptest
+
+COMPATIBLE_HOST = '(x86_64.*|i.86.*)-linux'
+
+do_install_append() {
+    install -d ${D}${sysconfdir}/cron.hourly
+    install -m 0755 ${S}/mcelog.cron ${D}${sysconfdir}/cron.hourly/
+    sed -i 's/bash/sh/' ${D}${sysconfdir}/cron.hourly/mcelog.cron
+}
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}
+    cp -r ${S}/tests ${S}/input ${D}${PTEST_PATH}
+    sed -i 's#../../mcelog#mcelog#' ${D}${PTEST_PATH}/tests/test
+}
+
+RDEPENDS_${PN}-ptest += "${PN} make bash mce-inject"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mg/files/remove_ncurses_check.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/mg/files/remove_ncurses_check.patch
new file mode 100644
index 0000000..16137da
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mg/files/remove_ncurses_check.patch
@@ -0,0 +1,36 @@
+diff -uwr mg-20110905/configure mg-20110905-changed/configure
+--- mg-20110905/configure	2011-09-05 13:36:16.000000000 -0500
++++ mg-20110905-changed/configure	2014-08-14 10:46:14.168715425 -0500
+@@ -163,32 +163,6 @@
+     echo 'Fails.'
+ fi
+ 
+-
+-if [ ! -r /usr/include/term.h ]; then
+-    note 'term.h'
+-    if [ -r /usr/include/ncurses/term.h ]; then
+-	echo "Found in /usr/include/ncurses"
+-	extraflags="$extraflags -I/usr/include/ncurses"
+-    else
+-	for i in pkg local; do
+-	    if [ -r /usr/$i/include/term.h ]; then
+-		echo "Found in /usr/$i/include"
+-		extralibs="$extralibs -L/usr/$i/lib"
+-		extraflags="$extraflags -I/usr/$i/include"
+-		break
+-	    else
+-		false
+-	    fi
+-	done ||
+-	{
+-	    echo 'Not found!' >&2
+-	    echo 'Do you have the ncurses devel package installed?' >&2
+-	    echo 'If you know where term.h is, please email the author!' >&2
+-	    exit 1
+-	}
+-    fi
+-fi
+-
+ note 'base and dirname'
+ if gcc_defines "__GLIBC__" || gcc_defines "__CYGWIN__" ; then
+     echo 'Not present, adding.'
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mg/mg_20110905.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mg/mg_20110905.bb
new file mode 100644
index 0000000..e924bbd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mg/mg_20110905.bb
@@ -0,0 +1,23 @@
+SUMMARY = "A portable version of the mg maintained by the OpenBSD team"
+HOMEPAGE = "http://homepage.boetes.org/software/mg/"
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://version.c;md5=811e1b67a5cd60c12b218a2b7c1adbf2"
+DEPENDS = "ncurses"
+SECTION = "console/editors"
+
+SRC_URI = "http://homepage.boetes.org/software/mg/mg-${PV}.tar.gz \
+           file://remove_ncurses_check.patch"
+
+SRC_URI[md5sum] = "2de35316fa8ebafe6003efaae70b723e"
+SRC_URI[sha256sum] = "1cd37d7e6a3eecc890a5718c38b8f38495057ba93856762a756ccee2f9618229"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_configure () {
+    sed -i Makefile.in -e 's,^prefix=.*,prefix=${prefix},'
+    ./configure
+}
+
+do_install () {
+    oe_runmake install DESTDIR=${D}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mime-support/mime-support_3.48.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mime-support/mime-support_3.48.bb
new file mode 100644
index 0000000..d617b66
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mime-support/mime-support_3.48.bb
@@ -0,0 +1,58 @@
+SECTION = "base"
+SUMMARY = "MIME files 'mime.types' & 'mailcap', and support programs"
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://debian/README;md5=36bbe2ace0a05c3fb684b73208fbf30b"
+
+DEPENDS = "file"
+RDEPENDS_${PN} = "perl"
+RRECOMMENDS_${PN} = "file"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/m/mime-support/mime-support_${PV}-1.tar.gz"
+S = "${WORKDIR}/${BPN}"
+
+FILES_${PN} += " ${libdir}/mime"
+
+docdir_append = "/${BPN}"
+
+do_install () {
+    install -d ${D}${sysconfdir}
+    install -d ${D}${libdir}/mime/packages
+    install -d ${D}${docdir}
+    install -d ${D}${sbindir}
+    install -d ${D}${bindir}
+    install -d ${D}${mandir}/man1
+    install -d ${D}${mandir}/man5
+    install -d ${D}${mandir}/man8
+    install -m 644 mime.types         ${D}${sysconfdir}/
+    install -m 644 mailcap            ${D}${libdir}/mime/
+    install -m 644 mailcap.order           ${D}${sysconfdir}/
+    install -m 644 mailcap.man        ${D}${mandir}/man5/mailcap.5
+    install -m 644 mailcap.order.man    ${D}${mandir}/man5/mailcap.order.5
+#    install -m 755 install-mime        ${D}${sbindir}/
+#    install -m 644 install-mime.man        ${D}${mandir}/man8/install-mime.8
+    install -m 755 update-mime        ${D}${sbindir}/
+    install -m 644 update-mime.man        ${D}${mandir}/man8/update-mime.8
+    install -m 755 run-mailcap        ${D}${bindir}/
+    install -m 644 run-mailcap.man        ${D}${mandir}/man1/run-mailcap.1
+#    install -m 644 rfcs/*            ${D}${docdir}/
+    install -m 644 debian/changelog        ${D}${docdir}/changelog.Debian
+    install -m 644 debian/README        ${D}${docdir}/copyright
+    install -m 755 debian-view        ${D}${libdir}/mime/
+    install -m 755 playaudio        ${D}${libdir}/mime/
+    install -m 755 playdsp            ${D}${libdir}/mime/
+    install -m 644 mailcap.entries        ${D}${libdir}/mime/packages/mime-support
+    cd ${D}${mandir}; gzip -9fv */*
+    cd ${D}${docdir}; gzip -9v *
+    cd ${D}${docdir}; gunzip copyright.gz
+    cd ${D}${bindir}; ln -s run-mailcap see
+    cd ${D}${bindir}; ln -s run-mailcap edit
+    cd ${D}${bindir}; ln -s run-mailcap compose
+    cd ${D}${bindir}; ln -s run-mailcap print
+    cd ${D}${mandir}/man1; ln -s run-mailcap.1.gz see.1.gz
+    cd ${D}${mandir}/man1; ln -s run-mailcap.1.gz edit.1.gz
+    cd ${D}${mandir}/man1; ln -s run-mailcap.1.gz compose.1.gz
+    cd ${D}${mandir}/man1; ln -s run-mailcap.1.gz print.1.gz
+}
+
+SRC_URI[md5sum] = "d6e5d715e331147352c50c158dbdec6d"
+SRC_URI[sha256sum] = "a529c7892cb786f514af71f4ca5a4c3ebc58b538a49ff959c0d97592d38f040a"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb
new file mode 100644
index 0000000..0f1548a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb
@@ -0,0 +1,20 @@
+# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "A minimal iconv implementation w/ support for UTF-8, ASCII, ISO-8859-1"
+HOMEPAGE = "http://tinderbox.dev.gentoo.org/portage/local/misc/mini-iconv/"
+LICENSE = "MPL-1.1"
+SECTION = "libs"
+DEPENDS = ""
+PROVIDES = "virtual/libiconv"
+LIC_FILES_CHKSUM = "file://iconv.c;beginline=1;endline=6;md5=35af9d9924327fe8a0a1fe3a2cb454c8"
+SRC_URI = "http://mirror.meleeweb.net/pub/linux/gentoo/distfiles/mini-iconv.tar.bz2"
+SRC_URI[md5sum] = "84412221e26505a2b3855d4a1cdcd0e0"
+SRC_URI[sha256sum] = "3552262bf1bcf8e859a2a3a7adfb0367af8593383e730c492e981477aac0a0d4"
+
+
+S = "${WORKDIR}/${PN}"
+
+do_install() {
+    oe_runmake install DESTDIR=${D} PREFIX=${prefix} LIB=${base_libdir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/minini/minini_1.2.b.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/minini/minini_1.2.b.bb
new file mode 100644
index 0000000..6607dd8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/minini/minini_1.2.b.bb
@@ -0,0 +1,39 @@
+SUMMARY = "A minimal INI file parser"
+DESCRIPTION = "minIni is a programmer's library to read and write INI files in \
+embedded systems. minIni takes little resources, has a deterministic memory \
+footprint and can be configured for various kinds of file I/O libraries. minIni \
+provides functionality for reading, writing and deleting keys from an INI file, \
+all in 830 lines of (commented) source code (version 1.2) in C (the code also \
+compiles in C++ and comes with a wrapper class)."
+HOMEPAGE = "https://code.google.com/p/minini/"
+
+# License is Apache 2.0 with an exception to allow object code built from
+# unmodified original sources to be distributed more freely. See LICENSE
+# file for details.
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=eb21481ad45c5578ae8c8d37b8c8d76d"
+
+SRC_URI = "http://minini.googlecode.com/files/minIni_12b.zip;subdir=${BP}"
+
+SRC_URI[md5sum] = "32740621098e3f0a321c7c23f4bcbc5d"
+SRC_URI[sha256sum] = "b08839af74acb36061fb76e1123bf56711bc5cf7a08b32e189b0ad78a2e888e2"
+
+do_configure[noexec] = "1"
+
+do_compile() {
+    ${CC} ${CFLAGS} -fPIC -c minIni.c -o minIni.o
+    ${CC} ${LDFLAGS} -shared -Wl,-soname,libminini.so.0 minIni.o -o libminini.so.0.0
+}
+
+do_install () {
+
+    install -d ${D}${libdir}
+    install -m 0644 libminini.so.0.0 ${D}${libdir}/
+    ln -s libminini.so.0.0 ${D}${libdir}/libminini.so
+    ln -s libminini.so.0.0 ${D}${libdir}/libminini.so.0
+
+    install -d ${D}${includedir}/minini
+    install -m 0644 minIni.h ${D}${includedir}/minini/
+    install -m 0644 minGlue-stdio.h ${D}${includedir}/minini/minGlue.h
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch
new file mode 100644
index 0000000..09d49d2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch
@@ -0,0 +1,67 @@
+From 53368d3f4adc09dd84234a9af31771bcd8ca2757 Mon Sep 17 00:00:00 2001
+From: Sven Ebenfeld <sven.ebenfeld@gmail.com>
+Date: Fri, 15 Jan 2016 22:41:28 +0100
+Subject: [PATCH] Tell scons to use build settings from environment variables
+
+Signed-off-by: Sven Ebenfeld <sven.ebenfeld@gmail.com>
+---
+ SConstruct                | 8 ++++++--
+ src/mongo/util/SConscript | 2 ++
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index 5082a4b..3370f70 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -507,6 +507,7 @@ def variable_arch_converter(val):
+         'amd64':  'x86_64',
+         'emt64':   'x86_64',
+         'x86':    'i386',
++        'aarch64': 'arm64',
+     }
+     val = val.lower()
+ 
+@@ -568,7 +569,8 @@ env_vars.Add('ARFLAGS',
+     converter=variable_shlex_converter)
+ 
+ env_vars.Add('CC',
+-    help='Select the C compiler to use')
++    help='Select the C compiler to use',
++    default=os.getenv('CC'))
+ 
+ env_vars.Add('CCFLAGS',
+     help='Sets flags for the C and C++ compiler',
+@@ -588,7 +590,8 @@ env_vars.Add('CPPPATH',
+     converter=variable_shlex_converter)
+ 
+ env_vars.Add('CXX',
+-    help='Select the C++ compiler to use')
++    help='Select the C++ compiler to use',
++    default=os.getenv('CXX'))
+ 
+ env_vars.Add('CXXFLAGS',
+     help='Sets flags for the C++ compiler',
+@@ -818,6 +821,7 @@ envDict = dict(BUILD_ROOT=buildDir,
+                )
+ 
+ env = Environment(variables=env_vars, **envDict)
++env.PrependENVPath('PATH', os.getenv('PATH'))
+ del envDict
+ 
+ env.AddMethod(env_os_is_wrapper, 'TargetOSIs')
+diff --git a/src/mongo/util/SConscript b/src/mongo/util/SConscript
+index 6add602..8d05a62 100644
+--- a/src/mongo/util/SConscript
++++ b/src/mongo/util/SConscript
+@@ -251,6 +251,8 @@ if get_option('allocator') == 'tcmalloc':
+                 'MONGO_HAVE_GPERFTOOLS_GET_THREAD_CACHE_SIZE'
+             ]
+         )
++    if not use_system_version_of_library('valgrind'):
++        tcmspEnv.InjectThirdPartyIncludePaths('valgrind')
+ 
+     tcmspEnv.Library(
+         target='tcmalloc_set_parameter',
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mongodb/mongodb_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mongodb/mongodb_git.bb
new file mode 100644
index 0000000..6522a67
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mongodb/mongodb_git.bb
@@ -0,0 +1,57 @@
+SUMMARY = "mongodb"
+LICENSE = "AGPL-3.0 & Apache-2.0"
+LIC_FILES_CHKSUM = "file://GNU-AGPL-3.0.txt;md5=73f1eb20517c55bf9493b7dd6e480788 \
+                    file://APACHE-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS = "openssl libpcre libpcap zlib"
+
+inherit scons
+
+PV = "3.3.0+git${SRCPV}"
+SRCREV = "aacd231be0626a204cb40908afdf62c4b67bb0ad"
+SRC_URI = "git://github.com/mongodb/mongo.git;branch=master \
+           file://0001-Tell-scons-to-use-build-settings-from-environment-va.patch \
+           "
+
+S = "${WORKDIR}/git"
+
+# Wiredtiger supports only 64-bit platforms
+PACKAGECONFIG_x86-64 ??= "tcmalloc wiredtiger"
+PACKAGECONFIG_aarch64 ??= "tcmalloc wiredtiger"
+PACKAGECONFIG ??= "tcmalloc"
+# gperftools compilation fails for arm below v7 because of missing support of
+# dmb operation. So we use system-allocator instead of tcmalloc
+PACKAGECONFIG_remove_armv6 = "tcmalloc"
+
+#std::current_exception is undefined for arm < v6
+COMPATIBLE_MACHINE_armv4 = "(!.*armv4).*"
+COMPATIBLE_MACHINE_armv5 = "(!.*armv5).*"
+COMPATIBLE_MACHINE_mips64 = "(!.*mips64).*"
+
+PACKAGECONFIG[tcmalloc] = "--use-system-tcmalloc,--allocator=system,gperftools,"
+PACKAGECONFIG[wiredtiger] = "--wiredtiger=on,--wiredtiger=off,,"
+
+EXTRA_OESCONS = "--prefix=${D}${prefix} \
+                 LIBPATH=${STAGING_LIBDIR} \
+                 LINKFLAGS='${LDFLAGS}' \
+                 CXXFLAGS='${CXXFLAGS}' \
+                 TARGET_ARCH=${TARGET_ARCH} \
+                 --ssl \
+                 --disable-warnings-as-errors \
+                 --use-system-pcre \
+                 --use-system-zlib \
+                 --js-engine=none \
+                 --nostrip \
+                 ${EXTRA_OECONF} \
+                 mongod mongos"
+DISABLE_STATIC = ""
+
+scons_do_compile() {
+        ${STAGING_BINDIR_NATIVE}/scons ${PARALLEL_MAKE} ${EXTRA_OESCONS} || \
+        die "scons build execution failed."
+}
+
+scons_do_install() {
+        ${STAGING_BINDIR_NATIVE}/scons install ${EXTRA_OESCONS}|| \
+        die "scons install execution failed."
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipathd.service-Error-fix.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipathd.service-Error-fix.patch
new file mode 100644
index 0000000..1e48e1c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipathd.service-Error-fix.patch
@@ -0,0 +1,36 @@
+From 74ff5e1cf8ef83dabcf6e6b92f87d6761f7f4d51 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 7 Jul 2015 11:34:36 +0900
+Subject: [PATCH] multipathd.service: Error fix
+
+Failed to start Device-Mapper Multipath Device Controller.
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ multipathd/multipathd.service | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/multipathd/multipathd.service b/multipathd/multipathd.service
+index be3ba3f..b8d3ecd 100644
+--- a/multipathd/multipathd.service
++++ b/multipathd/multipathd.service
+@@ -6,11 +6,12 @@ DefaultDependencies=no
+ Conflicts=shutdown.target
+ 
+ [Service]
+-Type=notify
++Type=forking
+ NotifyAccess=main
+ LimitCORE=infinity
++PIDFile=/var/run/multipathd.pid
+ ExecStartPre=/sbin/modprobe dm-multipath
+-ExecStart=/sbin/multipathd -d -s
++ExecStart=/sbin/multipathd
+ ExecReload=/sbin/multipathd reconfigure
+ 
+ [Install]
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/always-use-libdevmapper-kpartx.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/always-use-libdevmapper-kpartx.patch
new file mode 100644
index 0000000..a16a854
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/always-use-libdevmapper-kpartx.patch
@@ -0,0 +1,29 @@
+Always use devmapper for kpartx
+
+Do not try to compute the LIBDM_API_COOKIE make variable
+from host information when cross-compiling.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Aws Ismail <aws.ismail@windriver.com>
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+diff --git a/kpartx/Makefile b/kpartx/Makefile
+index 2a07334..24bdabc 100644
+--- a/kpartx/Makefile
++++ b/kpartx/Makefile
+@@ -4,13 +4,7 @@
+ #
+ include ../Makefile.inc
+ 
+-CFLAGS += -I. -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+-
+-LIBDM_API_COOKIE = $(shell grep -Ecs '^[a-z]*[[:space:]]+dm_task_set_cookie' /usr/include/libdevmapper.h)
+-
+-ifneq ($(strip $(LIBDM_API_COOKIE)),0)
+-	CFLAGS += -DLIBDM_API_COOKIE
+-endif
++CFLAGS += -I. -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DLIBDM_API_COOKIE
+ 
+ LDFLAGS = -ldevmapper
+ OBJS = bsd.o dos.o kpartx.o solaris.o unixware.o dasd.o sun.o \
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/always-use-libdevmapper.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/always-use-libdevmapper.patch
new file mode 100644
index 0000000..89d2352
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/always-use-libdevmapper.patch
@@ -0,0 +1,44 @@
+Always use devmapper
+
+Do not try to compute several _API_ make variables
+from host information when cross-compiling.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Aws Ismail <aws.ismail@windriver.com>
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+diff --git a/libmultipath/Makefile b/libmultipath/Makefile
+index e5b06b3..efd6cf6 100644
+--- a/libmultipath/Makefile
++++ b/libmultipath/Makefile
+@@ -17,23 +17,18 @@ OBJS = memory.o parser.o vector.o devmapper.o \
+        log.o configure.o structs_vec.o sysfs.o prio.o checkers.o \
+        lock.o waiter.o file.o wwids.o
+ 
+-LIBDM_API_FLUSH = $(shell grep -Ecs '^[a-z]*[[:space:]]+dm_task_no_flush' /usr/include/libdevmapper.h)
+ 
+-ifneq ($(strip $(LIBDM_API_FLUSH)),0)
++#ifneq ($(strip $(LIBDM_API_FLUSH)),0)
+ 	CFLAGS += -DLIBDM_API_FLUSH -D_GNU_SOURCE
+-endif
++#endif
+ 
+-LIBDM_API_COOKIE = $(shell grep -Ecs '^[a-z]*[[:space:]]+dm_task_set_cookie' /usr/include/libdevmapper.h)
+-
+-ifneq ($(strip $(LIBDM_API_COOKIE)),0)
++#ifneq ($(strip $(LIBDM_API_COOKIE)),0)
+ 	CFLAGS += -DLIBDM_API_COOKIE
+-endif
+-
+-LIBUDEV_API_RECVBUF = $(shell grep -Ecs '^[a-z]*[[:space:]]+udev_monitor_set_resolve_buffer_size' /usr/include/libudev.h)
++#endif
+ 
+-ifneq ($(strip $(LIBUDEV_API_RECVBUF)),0)
++#ifneq ($(strip $(LIBUDEV_API_RECVBUF)),0)
+ 	CFLAGS += -DLIBUDEV_API_RECVBUF
+-endif
++#endif
+ 
+ 
+ all: $(LIBS)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/do-not-link-libmpathpersist-to-TMPDIR.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/do-not-link-libmpathpersist-to-TMPDIR.patch
new file mode 100644
index 0000000..86d5e0e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/do-not-link-libmpathpersist-to-TMPDIR.patch
@@ -0,0 +1,30 @@
+From fe65ac8face3c88d9d4e12811f44e63ad72c59ae Mon Sep 17 00:00:00 2001
+From: Bian Naimeng <biannm@cn.fujitsu.com>
+Date: Thu, 18 Jun 2015 12:25:25 +0900
+Subject: [PATCH] fix build warning
+
+  NOTE: Executing RunQueue Tasks
+  WARNING: QA Issue: Symlink /lib/libmpathpersist.so in multipath-tools-dev points to TMPDIR [symlink-to-sysroot]
+  NOTE: Tasks Summary: Attempted 1604 tasks of which 1591 didn't need to be rerun and all succeeded.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+---
+ libmpathpersist/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libmpathpersist/Makefile b/libmpathpersist/Makefile
+index c4ec1c5..62022eb 100644
+--- a/libmpathpersist/Makefile
++++ b/libmpathpersist/Makefile
+@@ -32,7 +32,7 @@ install: $(LIBS)
+ 	$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)$(man3dir)
+ 	$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)/usr/include/
+ 	$(INSTALL_PROGRAM) -m 755 -d $(DESTDIR)/usr/share/doc/mpathpersist/
+-	ln -sf $(DESTDIR)$(syslibdir)/$(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
++	ln -sf $(syslibdir)/$(LIBS) $(DESTDIR)$(syslibdir)/$(DEVLIB)
+ 	install -m 644 mpath_persistent_reserve_in.3.gz $(DESTDIR)$(man3dir)	
+ 	install -m 644 mpath_persistent_reserve_out.3.gz $(DESTDIR)$(man3dir)	
+ 	install -m 644 mpath_persist.h $(DESTDIR)/usr/include/
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/makefile_inc.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/makefile_inc.patch
new file mode 100644
index 0000000..71963e0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/makefile_inc.patch
@@ -0,0 +1,39 @@
+multipath-tools: modify Makefile.inc for cross-compilation
+
+Do not look for systemd info on the host, and allow us to pass in CFLAGS
+using the OPTFLAGS variable.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+Update for version 0.5.0-144-g770e6d0
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -21,12 +21,6 @@ ifndef LIB
+ 	endif
+ endif
+ 
+-ifndef SYSTEMD
+-	ifeq ($(shell systemctl --version > /dev/null 2>&1 && echo 1), 1)
+-		SYSTEMD = $(shell systemctl --version 2> /dev/null |  sed -n 's/systemd \([0-9]*\)/\1/p')
+-	endif
+-endif
+-
+ ifndef SYSTEMDPATH
+ 	SYSTEMDPATH=usr/lib
+ endif
+@@ -53,7 +47,10 @@ ifndef RPM_OPT_FLAGS
+ 	RPM_OPT_FLAGS = -O2 -g -pipe -Wformat-security -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4
+ endif
+ 
++ifndef OPTFLAGS
+ OPTFLAGS     = $(RPM_OPT_FLAGS) -Wunused -Wstrict-prototypes
++endif
++
+ CFLAGS	     = $(OPTFLAGS) -fPIC -DLIB_STRING=\"${LIB}\"
+ SHARED_FLAGS = -shared
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/multipathd.oe b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/multipathd.oe
new file mode 100755
index 0000000..3bdf875
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/multipathd.oe
@@ -0,0 +1,146 @@
+#!/bin/bash
+#
+# multipathd	Starts the multipath daemon
+#
+# chkconfig: - 06 87
+# description: Manages device-mapper multipath devices
+
+### BEGIN INIT INFO
+# Provides: multipathd
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description: Control multipathd
+# Description: This service monitors and manages
+#              device-mapper multipath devices
+### END INIT INFO
+
+DAEMON=/sbin/multipathd
+prog=`basename $DAEMON`
+initdir=/etc/init.d
+lockdir=/var/lock/subsys
+sysconfig=/etc/sysconfig
+syspath=/sys/block
+
+RETVAL=0
+
+teardown_slaves()
+{
+pushd $1 > /dev/null
+if [ -d "slaves" ]; then
+for slave in slaves/*;
+do
+	if [ "$slave" = "slaves/*" ]; then
+		read dev <  $1/dev
+		tablename=`dmsetup table --target multipath | sed -n "s/\(.*\): .* $dev .*/\1/p"`
+		if ! [ -z $tablename ]; then
+			echo "Root is on a multipathed device, multipathd can not be stopped"
+			exit 1
+		fi
+	else
+		local_slave=`readlink -f $slave`;
+		teardown_slaves $local_slave;
+	fi
+	done
+
+else
+		read dev <  $1/dev
+		tablename=`dmsetup table --target multipath | sed -n "s/\(.*\): .* $dev .*/\1/p"`
+		if ! [ -z $tablename ]; then
+			echo "Root is on a multipathed device, multipathd can not be stopped"
+			exit 1
+		fi
+fi
+popd > /dev/null
+}
+
+#
+# See how we were called.
+#
+
+start() {
+	test -x $DAEMON || exit 5
+	echo -n $"Starting $prog daemon: "
+	start-stop-daemon --start --quiet --exec $DAEMON
+	RETVAL=$?
+	[ $RETVAL -eq 0 ] && touch $lockdir/$prog
+	echo
+}
+
+force_stop() {
+	echo -n $"Stopping $prog daemon: "
+	killall $DAEMON
+	RETVAL=$?
+	[ $RETVAL -eq 0 ] && rm -f $lockdir/$prog
+	echo
+}
+
+stop() {
+        root_dev=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $1; }}' /etc/mtab)
+	dm_num=`dmsetup info -c --noheadings -o minor $root_dev 2> /dev/null`
+	if [ $? -eq 0 ]; then
+		root_dm_device="dm-$dm_num"
+		[ -d $syspath/$root_dm_device ] && teardown_slaves $syspath/$root_dm_device
+	fi
+
+	force_stop
+}
+
+restart() {
+	stop
+	start
+}
+
+force_restart() {
+	force_stop
+	start
+}
+
+reload() {
+	echo -n "Reloading $prog: "
+	trap "" SIGHUP
+	killall $DAEMON -s SIGHUP -v
+	RETVAL=$?
+	echo
+}	
+
+case "$1" in
+start)
+	start
+	;;
+stop)
+	stop
+	;;
+force-stop)
+	force_stop
+	;;
+force-reload|reload)
+	reload
+	;;
+restart)
+	restart
+	;;
+force-restart)
+	force_restart
+	;;
+condrestart|try-restart)
+	if [ -f $lockdir/$prog ]; then
+	    restart
+	fi
+	;;
+status)
+    if pidof -o %PPID $DAEMON > /dev/null; then
+        echo "Running"
+        RETVAL=0
+    else
+        echo "Not running"
+        RETVAL=1
+    fi
+	;;
+*)
+	echo $"Usage: $0 {start|stop|force-stop|status|restart|force-restart|condrestart|reload}"
+	RETVAL=2
+esac
+
+exit $RETVAL
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_git.bb
new file mode 100644
index 0000000..37b5fef
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_git.bb
@@ -0,0 +1,76 @@
+SUMMARY = "The upstream project used to drive the Device Mapper multipathing driver"
+
+DEPENDS = "lvm2 libaio readline udev"
+
+LICENSE = "LGPLv2"
+
+SRC_URI = "git://git.opensvc.com/multipath-tools/.git;protocol=http \
+           file://multipathd.oe \
+           file://makefile_inc.patch \
+           file://always-use-libdevmapper.patch \
+           file://always-use-libdevmapper-kpartx.patch \
+           file://do-not-link-libmpathpersist-to-TMPDIR.patch \
+           file://0001-multipathd.service-Error-fix.patch \
+           "
+# 0.5.0
+#
+#SRCREV = "82f391e787dc02e9d9294aa391137ab424bb83c4"
+#LIC_FILES_CHKSUM = "file://COPYING;md5=7be2873b6270e45abacc503abbe2aa3d"
+
+# 0.5.0 + commits thru 7/18/2014
+#
+#SRCREV = "0d72f46c12207a6b7b89f5ef4f5ab5f87ed8bc90"
+#LIC_FILES_CHKSUM = "file://COPYING;md5=b06690e7a95c166eefe0199b39118eb1"
+
+# 0.5.0 + commits thru 9/12/2014
+#
+#    includes important systemd related structure size fix
+#
+#SRCREV = "aec68ab217fd2956443b27ceeb97dd6475267789"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b06690e7a95c166eefe0199b39118eb1"
+
+# 0.5.0 + commits thru 2/16/2015
+SRCREV = "770e6d0da035deaced82885939161c2b69225e10"
+
+inherit systemd
+
+
+S = "${WORKDIR}/git"
+
+PV = "0.5.0+git${@'${SRCPV}'.split('+')[-1]}"
+
+# The exact version of SYSTEMD does not matter but should be greater than 209.
+#
+EXTRA_OEMAKE = 'MULTIPATH_VERSION=${PV} DESTDIR=${D} syslibdir=${base_libdir} \
+                OPTFLAGS="${CFLAGS}" \
+                LIB=${base_libdir} libdir=${base_libdir}/multipath \
+                unitdir=/lib/systemd/system \
+                ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "SYSTEMD=216", "", d)} \
+               '
+
+do_install() {
+    oe_runmake install
+
+    # Copy a sample conf file, but do not rename it multipath.conf.
+    #
+    cp multipath.conf.defaults ${D}${sysconfdir}
+
+    # We copy an initscript, but do not start multipathd at init time.
+    #
+    cp ${WORKDIR}/multipathd.oe ${D}${sysconfdir}/init.d/multipathd
+
+}
+
+FILES_${PN}-dbg += "${base_libdir}/multipath/.debug"
+
+# systemd and udev stuff always goes under /lib!
+#
+FILES_${PN} += "${base_libdir}/multipath \
+                /lib/systemd"
+
+PACKAGES =+ "kpartx"
+FILES_kpartx = "${base_sbindir}/kpartx \
+                /usr/lib/udev/kpartx_id \
+               "
+
+RDEPENDS_${PN} += "kpartx"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb-native_5.5.46.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb-native_5.5.46.bb
new file mode 100644
index 0000000..4ce960d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb-native_5.5.46.bb
@@ -0,0 +1,19 @@
+require mariadb.inc
+inherit native
+
+PROVIDES += "mysql5-native"
+DEPENDS = "ncurses-native zlib-native bison-native"
+
+RDEPENDS_${PN} = ""
+PACKAGES = ""
+EXTRA_OEMAKE = ""
+
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install
+
+    install -d ${D}${bindir}
+    install -m 0755 sql/gen_lex_hash ${D}${bindir}/
+    install -m 0755 extra/comp_err ${D}${bindir}/
+    install -m 0755 scripts/comp_sql ${D}${bindir}/
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb.inc
new file mode 100644
index 0000000..4801ffe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb.inc
@@ -0,0 +1,286 @@
+SUMMARY = "A robust, scalable, and reliable SQL server"
+HOMEPAGE = "http://mariadb.org"
+SECTION = "libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "http://archive.mariadb.org/mariadb-${PV}/source/mariadb-${PV}.tar.gz \
+           file://fix-cmake-module-path.patch \
+           file://remove-bad-path.patch \
+           file://fix-mysqlclient-r-version.patch \
+           file://my.cnf \
+           file://mysqld.service \
+           file://install_db.service \
+           file://install_db \
+           file://mysql-systemd-start \
+           file://configure.cmake-fix-valgrind.patch \
+           file://fix-a-building-failure.patch \
+          "
+
+SRC_URI[md5sum] = "92f682b00eb137af01e59ea93f7e31f7"
+SRC_URI[sha256sum] = "45b66b7adc87cad32e553df1d5211e5b6426b78a3bc318a5ccde088bf93e6e10"
+
+S = "${WORKDIR}/mariadb-${PV}"
+
+BINCONFIG_GLOB = "mysql_config"
+
+inherit cmake gettext binconfig update-rc.d useradd systemd
+
+INITSCRIPT_PACKAGES = "${PN}-server ${PN}-setupdb"
+INITSCRIPT_NAME_${PN}-server = "mysqld"
+INITSCRIPT_PARAMS_${PN}-server ?= "start 45 5 . stop 45 0 6 1 ."
+
+USERADD_PACKAGES = "${PN}-server"
+USERADD_PARAM_${PN}-server = "--system --home-dir /var/mysql -g mysql --shell /bin/false mysql"
+GROUPADD_PARAM_${PN}-server = "--system mysql"
+
+INITSCRIPT_NAME_${PN}-setupdb = "install_db"
+INITSCRIPT_PARAMS_${PN}-setupdb ?= "defaults 44 44"
+
+SYSTEMD_PACKAGES = "${PN}-server ${PN}-setupdb"
+SYSTEMD_SERVICE_${PN}-server = "mysqld.service"
+SYSTEMD_AUTO_ENABLE_${PN}-server ?= "disable"
+
+SYSTEMD_SERVICE_${PN}-setupdb = "install_db.service"
+SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
+ALLOW_EMPTY_${PN}-setupdb ?= "1"
+FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
+
+EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} setupdb"
+PACKAGECONFIG_class-native = ""
+PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
+PACKAGECONFIG[valgrind] = "-DWITH_VALGRIND=TRUE,-DWITH_VALGRIND=FALSE,valgrind"
+PACKAGECONFIG[libedit] = "-DLIBEDIT_INTERFACE=TRUE,-DLIBEDIT_INTERFACE=FALSE,libedit"
+PACKAGECONFIG[krb5] = ", ,krb5"
+PACKAGECONFIG[setupdb] = ", ,,${PN}-setupdb"
+
+# MariaDB doesn't link properly with gold
+# https://mariadb.atlassian.net/browse/MDEV-5982
+TARGET_CFLAGS += "-fuse-ld=bfd"
+
+BUILD_CFLAGS += "-fuse-ld=bfd"
+BUILD_CXXFLAGS += "-fuse-ld=bfd"
+
+EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
+                 -DWITH_JEMALLOC=no \
+                 -DWITHOUT_TOKUDB=TRUE \
+                 -DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE \
+                 -DGROFF=FALSE \
+                 -DNROFF=FALSE \
+                 -DENABLE_DTRACE=FALSE \
+                 -DWITH_PIC=ON \
+                 -DINSTALL_LAYOUT=RPM \
+                 -DINSTALL_DOCDIR:PATH=${datadir}/doc/${BPN} \
+                 -DINSTALL_LIBDIR:PATH=${baselib} \
+                 -DINSTALL_PLUGINDIR:PATH=${baselib}/plugin \
+                 -DINSTALL_SYSCONFDIR:PATH=${sysconfdir} \
+                 -DMYSQL_DATADIR:PATH=/var/mysql \
+                 -DCAT_EXECUTABLE=`which cat` \
+                 -DCMAKE_AR:FILEPATH=${AR}"
+
+do_configure_append() {
+    # handle distros with different values of ${libexecdir}
+    libexecdir2=`echo ${libexecdir} | sed -e 's+/usr/++g'`
+    sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysql_install_db.sh
+    sed -i -e "s:mysqld libexec:mysqld $libexecdir2:g" ${S}/scripts/mysql_install_db.sh
+    sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysqld_safe.sh
+}
+
+do_generate_toolchain_file_append_class-native () {
+    # If these are set cmake will assume we're cross-compiling, which will
+    # result in certain things we want being disabled
+    sed -i "/set( CMAKE_SYSTEM_NAME/d" ${WORKDIR}/toolchain.cmake
+    sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
+}
+
+do_compile_prepend_class-target () {
+    # These need to be in-tree or make will think they need to be built,
+    # and since we're cross-compiling that is disabled
+    cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
+    cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
+
+    if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
+        if ! [ -e ${B}/include/openssl/kssl.h ] ; then
+            mkdir -p ${B}/include/openssl
+            echo "#ifndef KSSL_H" >${B}/include/openssl/kssl.h
+            echo "#define KSSL_H" >>${B}/include/openssl/kssl.h
+            echo "#include <openssl/opensslconf.h>">>${B}/include/openssl/kssl.h
+            echo "#endif" >>${B}/include/openssl/kssl.h
+        fi
+    fi
+}
+
+SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
+
+# We need to append this so it runs *after* binconfig's preprocess function
+#
+# We really don't care exactly what the directories were set to originally.
+# plugindir is not fixed, but we don't create any plugins.
+#
+mariadb_sysroot_preprocess () {
+    sed -i -es,^pkgincludedir=.*,pkgincludedir=\'${STAGING_INCDIR}/mysql\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config
+    sed -i -es,^pkglibdir=.*,pkglibdir=\'${STAGING_LIBDIR}\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config
+}
+
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install
+
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 0644 ${WORKDIR}/my.cnf ${D}/${sysconfdir}/
+    install -m 0755 ${WORKDIR}/install_db ${D}/${sysconfdir}/init.d/
+    mv ${D}/${sysconfdir}/init.d/mysql ${D}/${sysconfdir}/init.d/mysqld
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/mysqld.service ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/install_db.service ${D}${systemd_unitdir}/system
+    sed -i -e 's,@BINDIR@,${bindir},g' -e 's,@PREFIX@,${prefix},g' ${D}${systemd_unitdir}/system/mysqld.service \
+                                                                   ${D}${systemd_unitdir}/system/install_db.service
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+	install -d ${D}${sysconfdir}/tmpfiles.d
+	echo "f /var/log/mysqld.err 0640 mysql mysql -" \
+            > ${D}${sysconfdir}/tmpfiles.d/99-mysqld.conf
+    fi
+    install -d ${D}${bindir}
+    install -m 755 ${WORKDIR}/mysql-systemd-start ${D}${bindir}
+    install -d ${D}${datadir}/doc/${PN}
+    if [ -f ${D}${datadir}/doc/README ]; then
+        mv ${D}${datadir}/doc/README ${D}${datadir}/doc/${PN}/
+    fi
+}
+
+PACKAGES = "${PN}-dbg ${PN} \
+    libmysqlclient-r libmysqlclient-r-dev libmysqlclient-r-staticdev libmysqlclient-r-dbg \
+    libmysqlclient libmysqlclient-dev libmysqlclient-staticdev libmysqlclient-dbg \
+    libmysqld libmysqld-dev ${PN}-client ${PN}-server ${PN}-setupdb ${PN}-leftovers"
+CONFFILES_${PN}-server += "${sysconfdir}/my.cnf ${sysconfdir}/my.cnf.d/server.cnf"
+CONFFILES_${PN}-client += "${sysconfdir}/my.cnf.d/mysql-clients.cnf"
+CONFFILES_libmysqlclient += "${sysconfdir}/my.cnf.d/client.cnf"
+
+FILES_${PN} = " "
+RDEPENDS_${PN} = "${PN}-client ${PN}-server"
+ALLOW_EMPTY_${PN} = "1"
+
+RDEPENDS_${PN}-client = "perl perl-module-getopt-long perl-module-file-temp \
+    perl-module-fcntl perl-module-sys-hostname perl-module-ipc-open3 \
+    perl-module-exporter"
+RDEPENDS_${PN}-server = "perl perl-module-getopt-long perl-module-data-dumper \
+    perl-module-file-basename perl-module-file-path perl-module-sys-hostname \
+    perl-module-file-copy perl-module-file-temp perl-module-posix \
+    ${PN}-client"
+RDEPENDS_${PN}-leftovers = "perl perl-module-cwd perl-module-benchmark perl-module-getopt-long \
+    perl-module-posix perl-module-data-dumper perl-module-sigtrap perl-module-threads \
+    perl-module-threads-shared perl-module-io-socket perl-module-sys-hostname perl-module-file-copy \
+    perl-module-file-spec perl-module-file-find perl-module-file-basename perl-module-file-path \
+    perl-module-constant perl-module-lib perl-module-file-temp perl-module-file-spec-functions \
+    perl-module-io-socket-inet perl-module-io-select"
+
+# Allow old code to link to the backward compatible library
+RDEPENDS_libmysqlclient-dev = "libmysqlclient-r-dev"
+
+FILES_libmysqlclient = "\
+    ${libdir}/libmysqlclient.so.* \
+    ${sysconfdir}/my.cnf.d/client.cnf"
+FILES_libmysqlclient-dev = " \
+    ${includedir}/mysql/ \
+    ${libdir}/libmysqlclient.so \
+    ${sysconfdir}/aclocal \
+    ${bindir}/mysql_config"
+FILES_libmysqlclient-staticdev = "\
+    ${libdir}/*.a"
+FILES_libmysqlclient-dbg = "${libdir}/plugin/.debug/ \
+    ${datadir}/mysql-test/lib/My/SafeProcess/.debug/my_safe_process"
+
+# Avoid warnings about ha_xtradb.so.0.0.0 and ha_innodb_plugin.so.0.0.0
+# which are intentionally non-PIC on 32-bit x86 (see e.g.
+# storage/xtradb/plug.in in the source)
+INSANE_SKIP_libmysqlclient_append_x86 = " textrel"
+
+FILES_libmysqlclient-r = "${libdir}/libmysqlclient_r.so.*"
+FILES_libmysqlclient-r-dev = "\
+    ${libdir}/libmysqlclient_r.so"
+FILES_libmysqlclient-r-staticdev = "${libdir}/libmysqlclient_r.a"
+FILES_libmysqlclient-r-dbg = "${libdir}/plugin/.debuglibmysqlclient_r.so.*"
+
+FILES_libmysqld = "\
+    ${libdir}/libmysqld.so.*"
+FILES_libmysqld-dev = "\
+    ${libdir}/libmysqld.so"
+
+FILES_${PN}-client = "\
+    ${bindir}/myisam_ftdump \
+    ${bindir}/mysql \
+    ${bindir}/mysql_client_test \
+    ${bindir}/mysql_client_test_embedded \
+    ${bindir}/mysql_find_rows \
+    ${bindir}/mysql_fix_extensions \
+    ${bindir}/mysql_waitpid \
+    ${bindir}/mysqlaccess \
+    ${bindir}/mysqladmin \
+    ${bindir}/mysqlbug \
+    ${bindir}/mysqlcheck \
+    ${bindir}/mysqldump \
+    ${bindir}/mysqldumpslow \
+    ${bindir}/mysqlimport \
+    ${bindir}/mysqlshow \
+    ${bindir}/mysqlslap \
+    ${bindir}/mysqltest_embedded \
+    ${libexecdir}/mysqlmanager \
+    ${sysconfdir}/my.cnf.d/mysql-clients.cnf"
+
+FILES_${PN}-server = "\
+    ${bindir}/comp_err \
+    ${bindir}/isamchk \
+    ${bindir}/isamlog \
+    ${bindir}/msql2mysql \
+    ${bindir}/my_print_defaults \
+    ${bindir}/myisamchk \
+    ${bindir}/myisamlog \
+    ${bindir}/myisampack \
+    ${bindir}/mysql_convert_table_format \
+    ${bindir}/mysql_fix_privilege_tables \
+    ${bindir}/mysql_install_db \
+    ${bindir}/mysql_secure_installation \
+    ${bindir}/mysql_setpermission \
+    ${bindir}/mysql-systemd-start \
+    ${bindir}/mysql_tzinfo_to_sql \
+    ${bindir}/mysql_upgrade \
+    ${bindir}/mysql_plugin \
+    ${bindir}/mysql_zap \
+    ${bindir}/mysqlbinlog \
+    ${bindir}/mysqld_multi \
+    ${bindir}/mysqld_safe \
+    ${bindir}/mysqlhotcopy \
+    ${bindir}/mysqltest \
+    ${bindir}/ndb_delete_all \
+    ${bindir}/ndb_desc \
+    ${bindir}/ndb_drop_index \
+    ${bindir}/ndb_drop_table \
+    ${bindir}/ndb_mgm \
+    ${bindir}/ndb_restore \
+    ${bindir}/ndb_select_all \
+    ${bindir}/ndb_select_count \
+    ${bindir}/ndb_show_tables \
+    ${bindir}/ndb_waiter \
+    ${bindir}/pack_isam \
+    ${bindir}/perror \
+    ${bindir}/replace \
+    ${bindir}/resolve_stack_dump \
+    ${bindir}/resolveip \
+    ${libexecdir}/mysqld \
+    ${sbindir}/mysqld \
+    ${sbindir}/ndb_cpcd \
+    ${sbindir}/ndbd \
+    ${sbindir}/ndb_mgmd \
+    ${libdir}/plugin/*.so \
+    ${datadir}/mysql/ \
+    ${localstatedir}/mysql/ \
+    ${sysconfdir}/init.d/mysqld \
+    ${sysconfdir}/my.cnf \
+    ${sysconfdir}/my.cnf.d/server.cnf \
+    ${sysconfdir}/tmpfiles.d"
+
+DESCRIPTION_${PN}-leftovers = "unpackaged and probably unneeded files for ${PN}"
+FILES_${PN}-leftovers = "/"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/configure.cmake-fix-valgrind.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/configure.cmake-fix-valgrind.patch
new file mode 100644
index 0000000..e97def6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/configure.cmake-fix-valgrind.patch
@@ -0,0 +1,41 @@
+From 5effba0d7d47071a3f1bca56823190d5a95bb1a6 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Wed, 12 Nov 2014 03:09:10 -0500
+Subject: [PATCH] configure.cmake: fix valgrind
+
+Check valgrind headers only if WITH_VALGRIND is set.
+
+mariadb uses two macros for valgrind compilations:
+HAVE_valgrind - valgrind is installed and can be set by configure option -DWITH_VALGRIND
+HAVE_VALGRIND - valgrind debug libraries is installed, set by auto check
+
+We would like to set them both by the configure option so that we can use
+PACKAGECONFIG to decide if valgrind is needed or not.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ configure.cmake | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.cmake b/configure.cmake
+index 0bd7bbe..51a098f 100644
+--- a/configure.cmake
++++ b/configure.cmake
+@@ -1047,10 +1047,10 @@ MARK_AS_ADVANCED(WITH_ATOMIC_LOCKS MY_ATOMIC_MODE_RWLOCK MY_ATOMIC_MODE_DUMMY)
+ 
+ IF(WITH_VALGRIND)
+   SET(HAVE_valgrind 1)
++  CHECK_INCLUDE_FILES("valgrind/memcheck.h;valgrind/valgrind.h"
++  HAVE_VALGRIND)
+ ENDIF()
+ 
+-CHECK_INCLUDE_FILES("valgrind/memcheck.h;valgrind/valgrind.h" 
+-  HAVE_VALGRIND)
+ 
+ #--------------------------------------------------------------------
+ # Check for IPv6 support
+-- 
+2.0.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/fix-a-building-failure.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/fix-a-building-failure.patch
new file mode 100644
index 0000000..0c4e102
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/fix-a-building-failure.patch
@@ -0,0 +1,31 @@
+[PATCH] fix a building failure
+
+Upstream-Status: Inappropriate [configuration]
+
+building failed since native does not generate import_executables.cmake
+In fact, our building system will export the needed commands
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ CMakeLists.txt | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c1ce1c5..83b3a7e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -350,11 +350,6 @@ MYSQL_CHECK_READLINE()
+ 
+ CHECK_JEMALLOC()
+ 
+-IF(CMAKE_CROSSCOMPILING)
+-  SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build")
+-  INCLUDE(${IMPORT_EXECUTABLES})
+-ENDIF()
+-
+ #
+ # Setup maintainer mode options by the end. Platform checks are
+ # not run with the warning options as to not perturb fragile checks
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/fix-cmake-module-path.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/fix-cmake-module-path.patch
new file mode 100644
index 0000000..8d9f558
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/fix-cmake-module-path.patch
@@ -0,0 +1,29 @@
+Avoid CMAKE_MODULE_PATH being overwritten
+
+OE-Core's setting of CMAKE_MODULE_PATH stomps on MariaDB's value unless
+we set it after setting the project name.
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+Upstream-Status: Inappropriate [working around OE-Core bug]
+
+--- mariadb/CMakeLists.txt	2014-07-17 11:01:07.676353047 +0100
++++ mariadb/CMakeLists.txt	2014-07-17 11:01:31.299353107 +0100
+@@ -28,8 +28,6 @@
+ 
+ MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
+ 
+-SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
+-
+ # Distinguish between community and non-community builds, with the
+ # default being a community build. This does not impact the feature
+ # set that will be compiled in; it's merely provided as a hint to
+@@ -77,6 +75,8 @@
+ ENDIF()
+ PROJECT(${MYSQL_PROJECT_NAME})
+ 
++SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
++
+ IF(BUILD_CONFIG)
+   INCLUDE(
+   ${CMAKE_SOURCE_DIR}/cmake/build_configurations/${BUILD_CONFIG}.cmake)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/fix-mysqlclient-r-version.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/fix-mysqlclient-r-version.patch
new file mode 100644
index 0000000..7516619
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/fix-mysqlclient-r-version.patch
@@ -0,0 +1,161 @@
+From 6db2a606196fb38a6d106dc409eee1cb9a40a440 Mon Sep 17 00:00:00 2001
+From: Tor Didriksen <tor.didriksen@oracle.com>
+Date: Mon, 24 Jun 2013 17:15:35 +0200
+Subject: [PATCH] Bug#16809055 MYSQL 5.6 AND 5.7 STILL USE LIBMYSQLCLIENT.SO.18
+
+With this patch, the libmysql/ directory contains:
+libmysqlclient.a
+libmysqlclient_r.a -> libmysqlclient.a
+libmysqlclient_r.so -> libmysqlclient.so*
+libmysqlclient_r.so.18 -> libmysqlclient.so.18*
+libmysqlclient_r.so.18.1.0 -> libmysqlclient.so.18.1.0*
+libmysqlclient.so -> libmysqlclient.so.18*
+libmysqlclient.so.18 -> libmysqlclient.so.18.1.0*
+libmysqlclient.so.18.1.0*
+
+This fixes libmysqlclient_r symlinks pointing to the unversioned
+libmysqlclient.so symlink (leading to package QA errors since the
+libmysqlclient-r package ends up depending on libmysqlclient-dev).
+
+Borrowed from MySQL 5.6 tree at https://github.com/percona/mysql/
+
+Upstream-Status: Pending
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+---
+ cmake/install_macros.cmake | 25 +++++++++++++++----------
+ cmake/mysql_version.cmake  |  3 ++-
+ libmysql/CMakeLists.txt    | 36 ++++++++++++++++++++++++++++--------
+ 3 files changed, 45 insertions(+), 19 deletions(-)
+
+diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake
+index b8efdf8..a0d0e68 100644
+--- a/cmake/install_macros.cmake
++++ b/cmake/install_macros.cmake
+@@ -1,4 +1,4 @@
+-# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ # 
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -111,28 +111,33 @@ FUNCTION(INSTALL_SCRIPT)
+ ENDFUNCTION()
+ 
+ # Install symbolic link to CMake target. 
+-# the link is created in the same directory as target
+-# and extension will be the same as for target file.
+-MACRO(INSTALL_SYMLINK linkname target destination component)
++# We do 'cd path; ln -s target_name link_name'
++# We also add an INSTALL target for "${path}/${link_name}"
++MACRO(INSTALL_SYMLINK target target_name link_name destination component)
+ IF(UNIX)
+   GET_TARGET_PROPERTY(location ${target} LOCATION)
+   GET_FILENAME_COMPONENT(path ${location} PATH)
+-  GET_FILENAME_COMPONENT(name ${location} NAME)
+-  SET(output ${path}/${linkname})
++  MESSAGE(STATUS "target ${target}")
++  MESSAGE(STATUS "link_name ${link_name}")
++  MESSAGE(STATUS "target_name ${target_name}")
++  MESSAGE(STATUS "path ${path}")
++  MESSAGE(STATUS "")
++
++  SET(output ${path}/${link_name})
+   ADD_CUSTOM_COMMAND(
+     OUTPUT ${output}
+     COMMAND ${CMAKE_COMMAND} ARGS -E remove -f ${output}
+     COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink 
+-      ${name} 
+-      ${linkname}
++      ${target_name} 
++      ${link_name}
+     WORKING_DIRECTORY ${path}
+     DEPENDS ${target}
+     )
+   
+-  ADD_CUSTOM_TARGET(symlink_${linkname}
++  ADD_CUSTOM_TARGET(symlink_${link_name}
+     ALL
+     DEPENDS ${output})
+-  SET_TARGET_PROPERTIES(symlink_${linkname} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
++  SET_TARGET_PROPERTIES(symlink_${link_name} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+   IF(CMAKE_GENERATOR MATCHES "Xcode")
+     # For Xcode, replace project config with install config
+     STRING(REPLACE "${CMAKE_CFG_INTDIR}" 
+diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
+index be5760f..96286ff 100644
+--- a/libmysql/CMakeLists.txt
++++ b/libmysql/CMakeLists.txt
+@@ -180,6 +180,12 @@ IF(MSVC)
+  INSTALL_DEBUG_TARGET(mysqlclient DESTINATION ${INSTALL_LIBDIR}/debug)
+ ENDIF()
+ 
++MACRO(GET_TARGET_NAME target out_name)
++  GET_TARGET_PROPERTY(location ${target} LOCATION)
++  GET_FILENAME_COMPONENT(name ${location} NAME)
++  SET(${out_name} ${name})
++ENDMACRO()
++
+ IF(UNIX)
+   MACRO(GET_VERSIONED_LIBNAME LIBNAME EXTENSION VERSION OUTNAME)
+     SET(DOT_VERSION ".${VERSION}")
+@@ -192,7 +198,13 @@ IF(UNIX)
+       SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION})
+     ENDIF() 
+   ENDMACRO()
+-  INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR} Development)
++ENDIF()
++
++IF(UNIX)
++  GET_TARGET_NAME(mysqlclient lib_name)
++  INSTALL_SYMLINK(mysqlclient
++    ${lib_name} ${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a
++    ${INSTALL_LIBDIR} Development)
+ ENDIF()
+ 
+ IF(NOT DISABLE_SHARED)
+@@ -205,10 +217,9 @@ IF(NOT DISABLE_SHARED)
+     # libtool compatability
+     IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
+       SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}")
+-    ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
+-      SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0")
+     ELSE()
+-      SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0")
++      SET(OS_SHARED_LIB_VERSION
++        "${SHARED_LIB_MAJOR_VERSION}.${SHARED_LIB_MINOR_VERSION}.0")
+     ENDIF()
+     # Name of shared library is mysqlclient on Unix
+     SET_TARGET_PROPERTIES(libmysql PROPERTIES 
+@@ -239,8 +250,13 @@ IF(NOT DISABLE_SHARED)
+       "${CMAKE_SHARED_LIBRARY_SUFFIX}"
+       ""
+       linkname)
+-    INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries)
+-    SET(OS_SHARED_LIB_SYMLINKS "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}")
++    GET_TARGET_NAME(libmysql lib_name)
++    GET_FILENAME_COMPONENT(lib_name_we ${lib_name} NAME_WE)
++    INSTALL_SYMLINK(libmysql
++      ${lib_name} ${linkname}
++      ${INSTALL_LIBDIR} SharedLibraries)
++    SET(OS_SHARED_LIB_SYMLINKS
++      "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}")
+     LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS)
+     FOREACH(ver ${OS_SHARED_LIB_SYMLINKS})
+       GET_VERSIONED_LIBNAME(
+@@ -248,7 +264,11 @@ IF(NOT DISABLE_SHARED)
+         "${CMAKE_SHARED_LIBRARY_SUFFIX}"
+         "${ver}"
+         linkname)
+-      INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries)
++      GET_VERSIONED_LIBNAME(
++        ${lib_name_we} "${CMAKE_SHARED_LIBRARY_SUFFIX}" "${ver}" lib_name_ver)
++      INSTALL_SYMLINK(libmysql
++        ${lib_name_ver} ${linkname}
++        ${INSTALL_LIBDIR} SharedLibraries)
+     ENDFOREACH()
+   ENDIF()
+ ENDIF()
+-- 
+2.0.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/install_db b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/install_db
new file mode 100755
index 0000000..512a7da
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/install_db
@@ -0,0 +1,13 @@
+#! /bin/sh
+case "$1" in
+  start)
+	echo "Starting to install database for mariadb"
+	/usr/bin/mysql-systemd-start pre
+        echo "done."
+	;;
+  *)
+	echo "Usage: /etc/init.d/install_db start"
+	exit 1
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/install_db.service b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/install_db.service
new file mode 100644
index 0000000..c8369f5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/install_db.service
@@ -0,0 +1,17 @@
+#
+# Simple install MySQL database service file
+# It shoulb be done before mysqld.service
+
+[Unit]
+Description=Install MySQL Community Server Database
+After=network.target
+After=syslog.target
+Before=mysqld.service
+
+[Install]
+WantedBy=multi-user.target
+
+[Service]
+Type=oneshot
+ExecStart=@BINDIR@/mysql-systemd-start pre
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/my.cnf b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/my.cnf
new file mode 100644
index 0000000..dc4c172
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/my.cnf
@@ -0,0 +1,25 @@
+[client]
+#password					= password
+port						= 3306
+socket						= /var/lib/mysql/mysql.sock
+
+[mysqld_safe]
+
+[mysqld]
+user 						= mysql
+port 						= 3306
+socket 						= /var/lib/mysql/mysql.sock
+pid-file 					= /var/lib/mysql/mysqld.pid
+log-error 					= /var/log/mysqld.err
+basedir 					= /usr
+datadir 					= /var/lib/mysql
+skip-external-locking
+skip-networking
+ignore-builtin-innodb
+default-storage-engine				= myisam
+bind-address					= localhost
+
+#
+# include all files from the config directory
+#
+!includedir /etc/my.cnf.d
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/mysql-systemd-start b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/mysql-systemd-start
new file mode 100644
index 0000000..189c020
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/mysql-systemd-start
@@ -0,0 +1,66 @@
+#! /bin/sh
+#
+# Needed argument: pre | post
+#
+# pre mode  :  try to run mysql_install_db and fix perms and SELinux contexts
+# post mode :  ping server until answer is received
+#
+
+get_option () {
+    local section=$1
+    local option=$2
+    local default=$3
+    ret=$(/usr/bin/my_print_defaults $section | grep '^--'${option}'=' | cut -d= -f2-)
+    [ -z $ret ] && ret=$default
+    echo $ret
+}
+
+install_db () {
+    # Note: something different than datadir=/var/lib/mysql requires SELinux policy changes (in enforcing mode)
+    datadir=$(get_option mysqld datadir "/var/lib/mysql")
+
+    # Restore log, dir, perms and SELinux contexts
+    [ -d "$datadir" ] || install -d -m 0755 -omysql -gmysql "$datadir" || exit 1
+    log=/var/log/mysqld.log
+    [ -e $log ] || touch $log
+    chmod 0640 $log
+    chown mysql:mysql $log || exit 1
+    if [ -x /usr/sbin/restorecon ]; then
+        /usr/sbin/restorecon "$datadir"
+        /usr/sbin/restorecon $log
+    fi
+
+    # If special mysql dir is in place, skip db install
+    [ -d "$datadir/mysql" ] && exit 0
+
+    # Create initial db
+    /usr/bin/mysql_install_db --rpm --datadir="$datadir" --user=mysql
+    exit 0
+}
+
+pinger () {
+    # Wait for ping to answer to signal startup completed,
+    # might take a while in case of e.g. crash recovery
+    # MySQL systemd service will timeout script if no answer
+    datadir=$(get_option mysqld datadir "/var/lib/mysql")
+    socket=$(get_option  mysqld socket "$datadir/mysql.sock")
+    case $socket in
+        /*) adminsocket="$socket" ;;
+        *) adminsocket="$datadir/$socket" ;;
+    esac
+
+    while /bin/true ; do
+        sleep 1
+        mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping >/dev/null 2>&1 && break
+    done
+    exit 0
+}
+
+# main
+case $1 in
+    "pre") install_db ;;
+    "post") pinger ;;
+esac
+
+exit 0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/mysqld.service b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/mysqld.service
new file mode 100644
index 0000000..d883617
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/mysqld.service
@@ -0,0 +1,25 @@
+[Unit]
+Description=MariaDB database server
+After=syslog.target
+After=network.target
+
+[Service]
+PIDFile=/var/lib/mysql/mysqld.pid
+Type=simple
+User=mysql
+Group=mysql
+
+# Execute post scripts as root
+PermissionsStartOnly=true
+
+# Start main service
+ExecStart=@BINDIR@/mysqld_safe --basedir=@PREFIX@
+
+# Don't signal startup success before a ping works
+ExecStartPost=@BINDIR@/mysql-systemd-start post
+
+TimeoutSec=300
+PrivateTmp=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/remove-bad-path.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/remove-bad-path.patch
new file mode 100644
index 0000000..ff26b0b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb/remove-bad-path.patch
@@ -0,0 +1,18 @@
+Remove host path from include directories
+
+Naturally this breaks cross-compilation if present.
+
+Upstream-Status: Pending
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+--- mariadb-5.5.38/storage/tokudb/ft-index/CMakeLists.txt	2014-07-17 14:37:04.529327998 +0100
++++ mariadb-5.5.38/storage/tokudb/ft-index/CMakeLists.txt	2014-07-17 14:43:56.991337895 +0100
+@@ -39,7 +39,6 @@
+ 
+ ## default includes and libraries
+ include_directories(SYSTEM
+-  /usr/local/include
+   ${ZLIB_INCLUDE_DIRS}
+   )
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb_5.5.46.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb_5.5.46.bb
new file mode 100644
index 0000000..8f998a3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mariadb_5.5.46.bb
@@ -0,0 +1,27 @@
+require mariadb.inc
+
+EXTRA_OECMAKE += "-DSTACK_DIRECTION=-1"
+
+DEPENDS += "mariadb-native ncurses zlib readline libaio libevent"
+
+PROVIDES += "mysql5"
+
+RPROVIDES_${PN} += "mysql5"
+RREPLACES_${PN} += "mysql5"
+RCONFLICTS_${PN} += "mysql5"
+
+RPROVIDES_${PN}-dbg += "mysql5-dbg"
+RREPLACES_${PN}-dbg += "mysql5-dbg"
+RCONFLICTS_${PN}-dbg += "mysql5-dbg"
+
+RPROVIDES_${PN}-leftovers += "mysql5-leftovers"
+RREPLACES_${PN}-leftovers += "mysql5-leftovers"
+RCONFLICTS_${PN}-leftovers += "mysql5-leftovers"
+
+RPROVIDES_${PN}-client += "mysql5-client"
+RREPLACES_${PN}-client += "mysql5-client"
+RCONFLICTS_${PN}-client += "mysql5-client"
+
+RPROVIDES_${PN}-server += "mysql5-server"
+RREPLACES_${PN}-server += "mysql5-server"
+RCONFLICTS_${PN}-server += "mysql5-server"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mysql-python_1.2.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mysql-python_1.2.5.bb
new file mode 100644
index 0000000..ac0df4f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/mysql/mysql-python_1.2.5.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Python interface to MySQL"
+HOMEPAGE = "https://github.com/farcepest/MySQLdb1"
+SECTION = "devel/python"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://GPL-2.0;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "mysql5"
+
+SRCNAME = "MySQL-python"
+
+SRC_URI = "https://pypi.python.org/packages/source/M/${SRCNAME}/${SRCNAME}-${PV}.zip"
+SRC_URI[md5sum] = "654f75b302db6ed8dc5a898c625e030c"
+SRC_URI[sha256sum] = "811040b647e5d5686f84db415efd697e6250008b112b6909ba77ac059e140c74"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/nano/nano-2.2.5/ncursesw.includedir.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/nano/nano-2.2.5/ncursesw.includedir.patch
new file mode 100644
index 0000000..0f224be
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/nano/nano-2.2.5/ncursesw.includedir.patch
@@ -0,0 +1,12 @@
+diff -uNr nano-2.2.5.orig//configure.ac nano-2.2.5/configure.ac
+--- nano-2.2.5.orig//configure.ac	2010-08-06 03:00:51.000000000 +0200
++++ nano-2.2.5/configure.ac	2010-08-10 14:11:52.000000000 +0200
+@@ -442,7 +442,7 @@
+     AC_CHECK_HEADERS(ncurses.h)
+ 
+     if test x$enable_utf8 != xno; then
+-	AC_CHECK_LIB(ncursesw, get_wch, [CURSES_LIB="-lncursesw" CPPFLAGS="-I/usr/include/ncursesw $CPPFLAGS" CURSES_LIB_NAME=ncursesw CURSES_LIB_WIDE=yes])
++	AC_CHECK_LIB(ncursesw, get_wch, [CURSES_LIB="-lncursesw" CURSES_LIB_NAME=ncursesw CURSES_LIB_WIDE=yes])
+     fi
+ 
+     if eval "test x$CURSES_LIB_NAME = x"; then
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/nano/nano.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/nano/nano.inc
new file mode 100644
index 0000000..bdefe9b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/nano/nano.inc
@@ -0,0 +1,19 @@
+DESCRIPTION = "GNU nano (Nano's ANOther editor, or \
+Not ANOther editor) is an enhanced clone of the \
+Pico text editor."
+HOMEPAGE = "http://www.nano-editor.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
+SECTION = "console/utils"
+DEPENDS = "ncurses"
+RDEPENDS_${PN} = "ncurses-terminfo"
+
+INC_PR = "r3"
+
+PV_MAJOR = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}"
+
+SRC_URI = "ftp://nano-editor.org/pub/nano/v${PV_MAJOR}/nano-${PV}.tar.gz"
+
+inherit autotools gettext
+
+PACKAGECONFIG[tiny] = "--enable-tiny,--enable-all,"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/nano/nano_2.2.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/nano/nano_2.2.5.bb
new file mode 100644
index 0000000..e656f46
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/nano/nano_2.2.5.bb
@@ -0,0 +1,8 @@
+include nano.inc
+
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://ncursesw.includedir.patch"
+
+SRC_URI[md5sum] = "77a10a49589f975ce98350a4527a2ebf"
+SRC_URI[sha256sum] = "9015945d1badabbada203b37c4779d3dd1066234235c714deb439989c5cd7d9e"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb
new file mode 100644
index 0000000..de97982
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "Library containing NEON-optimized implementations for a common set of functions"
+HOMEPAGE = "http://projectne10.github.io/Ne10/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=463ac0a7d64edc2b787c4206635ca2b1"
+SECTION = "libs"
+
+SRC_URI = "git://github.com/projectNe10/Ne10.git"
+SRCREV = "a08b29d88e3c94d32b5b8f827e7fcf0bc2b34ac2"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+NE10_TARGET_ARCH = ""
+EXTRA_OECMAKE = '-DGNULINUX_PLATFORM=ON -DNE10_BUILD_SHARED=ON -DNE10_LINUX_TARGET_ARCH="${NE10_TARGET_ARCH}"'
+
+COMPATIBLE_MACHINE_aarch64 = "(.*)"
+COMPATIBLE_MACHINE_armv7a = "(.*)"
+
+python () {
+    if any(t.startswith('armv7') for t in d.getVar('TUNE_FEATURES', True).split()):
+        d.setVar('NE10_TARGET_ARCH', 'armv7')
+        bb.debug(2, 'Building Ne10 for armv7')
+    elif any(t.startswith('aarch64') for t in d.getVar('TUNE_FEATURES', True).split()):
+        d.setVar('NE10_TARGET_ARCH', 'aarch64')
+        bb.debug(2, 'Building Ne10 for aarch64')
+    else:
+        raise bb.parse.SkipPackage("Incompatible with archs other than armv7 and aarch64")
+}
+
+do_install() {
+    install -d ${D}${libdir}
+    install -d ${D}${includedir}
+    install -m 0644 ${S}/inc/NE10*.h ${D}${includedir}/
+    install -m 0644 ${B}/modules/libNE10.a ${D}${libdir}/
+    install -m 0755 ${B}/modules/libNE10.so.* ${D}${libdir}/
+    cp -a ${B}/modules/libNE10.so ${D}${libdir}/
+}
+
+# ERROR: QA Issue: ELF binary 'ne10/1.2.1-r0/packages-split/ne10/usr/lib/libNE10.so.10' has relocations in .text [textrel]
+# ERROR: QA Issue: ELF binary 'ne10/1.2.1-r0/packages-split/ne10/usr/lib/libNE10.so.10' has relocations in .text [textrel]
+INSANE_SKIP_${PN} += "textrel"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/nmon/nmon_13g.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/nmon/nmon_13g.bb
new file mode 100644
index 0000000..1f75189
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/nmon/nmon_13g.bb
@@ -0,0 +1,29 @@
+SUMMARY = "nmon performance monitor"
+HOMEPAGE = "http://nmon.sf.net"
+SECTION = "console/utils"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/Documentation.txt;md5=dbb13658cf55d687c4f2ff771a696d4a"
+DEPENDS = "ncurses"
+PR = "r2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/nmon/lmon13g.c;name=lmon \
+           ${SOURCEFORGE_MIRROR}/nmon/Documentation.txt;name=doc \
+"
+
+SRC_URI[lmon.md5sum] = "b1b8e6c0123ad232394991f2d4f40494"
+SRC_URI[lmon.sha256sum] = "456ab2a342b31d1a352d0d940af5962fa65a12ae8757ff73e6e73210832ae8b5"
+SRC_URI[doc.md5sum] = "dbb13658cf55d687c4f2ff771a696d4a"
+SRC_URI[doc.sha256sum] = "1f7f83afe62a7210be5e83cd24157adb854c14599efe0b377a7ecca933869278"
+
+CFLAGS += "-D JFS -D GETUSER -Wall -D LARGEMEM"
+LDFLAGS += "-ltinfo -lncursesw"
+ASNEEDED_pn-nmon = ""
+
+do_compile() {
+    ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/lmon13g.c -o nmon
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 nmon ${D}${bindir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-define-run-test-target.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-define-run-test-target.patch
new file mode 100644
index 0000000..78ffb22
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-define-run-test-target.patch
@@ -0,0 +1,32 @@
+rename test target as run-test
+
+Upstream-Statue: Pending
+
+test target not only compile the test files, but also run them, which is
+not suitable for cross-compile environment, so rename it as run-test.
+
+and define test target to compile the test files.
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ Makefile.am | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index b6db339..de176c4 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -124,7 +124,9 @@ regress2: $(check_PROGRAMS)
+ test_numademo: numademo
+ 	./numademo -t -e 10M
+ 
+-test: all $(check_PROGRAMS) regress1 regress2 test_numademo
++test: all $(check_PROGRAMS)
++
++run-test: all $(check_PROGRAMS) regress1 regress2 test_numademo
+ 
+ TESTS_ENVIRONMENT = builddir='$(builddir)'; export builddir;
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/Fix-the-test-output-format.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/Fix-the-test-output-format.patch
new file mode 100644
index 0000000..9812ecc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/Fix-the-test-output-format.patch
@@ -0,0 +1,64 @@
+From 59fd750a84bbe5874dec936d2bee9ef11a1b6505 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 21 Jul 2015 02:01:22 +0900
+Subject: [PATCH] Fix the test output format
+
+Upstream-Status: Pending
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ test/regress  |  6 +++---
+ test/regress2 | 11 +++++------
+ 2 files changed, 8 insertions(+), 9 deletions(-)
+
+diff --git a/test/regress b/test/regress
+index 2ce1705..d086a47 100755
+--- a/test/regress
++++ b/test/regress
+@@ -74,6 +74,7 @@ probe_hardware()
+ 	if [ $numnodes -lt 2 ] ; then
+ 	    echo "need at least two nodes with at least $NEEDPAGES each of"
+ 	    echo "free memory for mempolicy regression tests"
++	    echo "FAIL: numa regress"
+	    exit 77  # Skip test
+ 	fi
+ }
+@@ -207,10 +208,9 @@ main()
+ 	rm A B
+ 
+ 	if [ "$EXIT" = 0 ] ; then
+-		echo '========SUCCESS'
++		echo 'PASS: numactl regress'
+ 	else
+-		echo '========FAILURE'
+-		exit 1
++		echo 'FAIL: numactl regress'
+ 	fi
+ }
+ 
+diff --git a/test/regress2 b/test/regress2
+index aa6ea41..450c510 100755
+--- a/test/regress2
++++ b/test/regress2
+@@ -9,12 +9,11 @@ testdir=`dirname "$0"`
+ export PATH=${builddir}:$PATH
+ 
+ T() {
+-       echo "$@" 
+-       if ! $VALGRIND "$@" ;  then
+-	  echo	$1 FAILED!!!!
+-	  exit 1
+-       fi
+-       echo
++	if ! $VALGRIND "$@" 2>&1 1>/dev/null;  then
++	   echo  "FAIL: $1"
++	else
++	   echo "PASS: $1"
++	fi
+ }
+ 
+ # still broken
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/Makefile b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/Makefile
new file mode 100644
index 0000000..9a5134c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/Makefile
@@ -0,0 +1,7 @@
+.PHONY: regress1 regress2
+
+regress1:
+	cd test ; ./regress
+
+regress2:
+	cd test ; ./regress2
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/fix-null-pointer.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/fix-null-pointer.patch
new file mode 100644
index 0000000..53952ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/fix-null-pointer.patch
@@ -0,0 +1,28 @@
+[PATCH] return 0 if distance_table is NULL
+
+Upstream-Status: Pending
+
+read_distance_table() maybe return 0, but distance_table is not set,
+if distance_table is used, and will lead to SEGFAULT
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ distance.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/distance.c b/distance.c
+index 4a26972..c6ca021 100755
+--- a/distance.c
++++ b/distance.c
+@@ -113,6 +113,8 @@ int numa_distance(int a, int b)
+ 		int err = read_distance_table();
+ 		if (err < 0)
+ 			return 0;
++		if (!distance_table)
++			return 0;
+ 	}
+ 	return distance_table[a * distance_numnodes + b];
+ }
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/run-ptest b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/run-ptest
new file mode 100755
index 0000000..215f7c2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl/run-ptest
@@ -0,0 +1,9 @@
+#!/bin/sh
+make regress1
+make regress2
+if  numademo -t -e 10M; then
+	echo "PASS: numademo"
+else
+	echo "FAIL: numademo"
+fi
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl_2.0.11.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl_2.0.11.bb
new file mode 100644
index 0000000..199726f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/numactl/numactl_2.0.11.bb
@@ -0,0 +1,57 @@
+SUMMARY = "Development package for building Applications that use numa"
+DESCRIPTION = "Simple NUMA policy support. It consists of a numactl program \
+to run other programs with a specific NUMA policy and a libnuma to do \
+allocations with NUMA policy in applications."
+LICENSE = "GPL-2.0 & LGPL-2.1"
+SECTION = "apps"
+RDEPENDS_${PN} = "perl"
+
+inherit autotools-brokensep ptest
+
+LIC_FILES_CHKSUM = "file://README;beginline=19;endline=32;md5=5644cc3851cb2499f6c48e52fe198bd9"
+
+SRC_URI = "ftp://oss.sgi.com/www/projects/libnuma/download/${BPN}-${PV}.tar.gz \
+	   file://fix-null-pointer.patch \
+	   file://Fix-the-test-output-format.patch \
+	   file://Makefile \
+	   file://run-ptest \
+	   file://0001-define-run-test-target.patch \
+          "
+SRC_URI[md5sum] = "d3bc88b7ddb9f06d60898f4816ae9127"
+SRC_URI[sha256sum] = "450c091235f891ee874a8651b179c30f57a1391ca5c4673354740ba65e527861"
+
+# ARM does not currently support NUMA
+COMPATIBLE_HOST = "^((?!arm).*)$"
+
+do_install() {
+        oe_runmake DESTDIR=${D} prefix=${D}/usr install
+	#remove the empty man2 directory
+	rm -r ${D}${mandir}/man2
+}
+
+do_compile_ptest() {
+	oe_runmake test
+}
+
+do_install_ptest() {
+	#install tests binaries
+        local test_binaries="distance ftok mbind_mig_pages migrate_pages move_pages \
+		mynode	nodemap node-parse pagesize prefered randmap realloc_test \
+		tbitmap tshared"
+
+	[ ! -d ${D}/${PTEST_PATH}/test ] && mkdir -p ${D}/${PTEST_PATH}/test
+	for i in $test_binaries; do
+		install -m 0755 ${B}/test/.libs/$i ${D}${PTEST_PATH}/test
+	done
+
+	local test_scripts="checktopology checkaffinity printcpu regress regress2 \
+			shmtest  runltp bind_range"
+	for i in $test_scripts; do
+		install -m 0755 ${B}/test/$i ${D}${PTEST_PATH}/test
+	done
+
+	install -m 0755 ${WORKDIR}/Makefile ${D}${PTEST_PATH}/
+	install -m 0755 ${B}/.libs/numactl ${D}${PTEST_PATH}/
+}
+
+RDEPENDS_${PN}-ptest = "bash"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/ode/ode/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/ode/ode/configure.patch
new file mode 100644
index 0000000..246b2e2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/ode/ode/configure.patch
@@ -0,0 +1,13 @@
+Index: ode-0.13/libccd/configure.ac
+===================================================================
+--- ode-0.13.orig/libccd/configure.ac	2013-08-19 17:48:03.000000000 +0000
++++ ode-0.13/libccd/configure.ac	2014-07-17 22:04:16.580595690 +0000
+@@ -5,7 +5,7 @@
+ AC_INIT([libccd], [1.0], [danfis@danfis.cz])
+ AC_CONFIG_SRCDIR([src/ccd.c])
+ AC_CONFIG_HEADERS([src/config.h])
+-AM_INIT_AUTOMAKE
++AM_INIT_AUTOMAKE([foreign])
+ 
+ # Checks for programs.
+ AC_PROG_CXX
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/ode/ode/install.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/ode/ode/install.patch
new file mode 100644
index 0000000..2f6cdb0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/ode/ode/install.patch
@@ -0,0 +1,23 @@
+--- ode-0.9.orig/Makefile.am	2007-02-21 15:54:54.000000000 +0100
++++ ode-0.9/Makefile.am	2010-08-21 16:15:55.000000000 +0200
+@@ -25,13 +25,13 @@
+ 
+ if USE_SONAME
+ install-exec-hook:
+-	ln -s $(libdir)/@ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
+-	$(libdir)/libode.so
+-	ln -s $(libdir)/@ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
+-	$(libdir)/@ODE_SONAME@
+-	ln -s $(libdir)/@ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
+-	$(libdir)/@ODE_SONAME@.@ODE_REVISION@
+-	/sbin/ldconfig
++	ln -s @ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
++	$(DESTDIR)/$(libdir)/libode.so
++	ln -s @ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
++	$(DESTDIR)/$(libdir)/@ODE_SONAME@
++	ln -s @ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
++	$(DESTDIR)/$(libdir)/@ODE_SONAME@.@ODE_REVISION@
++	echo /sbin/ldconfig
+ else
+ install-exec-hook:
+ endif
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/ode/ode_0.13.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/ode/ode_0.13.bb
new file mode 100644
index 0000000..2dc82a8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/ode/ode_0.13.bb
@@ -0,0 +1,28 @@
+SUMMARY = "ODE is an Open Source Physics Engine"
+SECTION = "libs"
+HOMEPAGE = "http://www.ode.org"
+LICENSE = "LGPLv2.1 & BSD"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=1de906ee96808d9776dd72a5f9a79a22 \
+    file://LICENSE.TXT;md5=771782cb6245c7fbbe74bc0ec059beff \
+"
+# LICENSE-BSD.TXT is missing in 0.13 tarball, but COPYING still says it's dual licensed
+# and svn repo still contains LICENSE-BSD.TXT so maybe it will return in next tarball
+# file://LICENSE-BSD.TXT;md5=c74e6304a772117e059458fb9763a928
+
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/opende/ode-${PV}.tar.bz2 \
+           file://configure.patch"
+SRC_URI[md5sum] = "04b32c9645c147e18caff7a597a19f84"
+SRC_URI[sha256sum] = "34ce3e236e313bf109a0cb5546d2fca462aed99f29a42e62bc1463b803c31ef9"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = "--disable-demos --enable-soname"
+
+FILES_${PN} = "${libdir}/lib*${SOLIBS}"
+
+PACKAGECONFIG ?= ""
+# if it isn't explicitly selected and "$build_os" == "$target_os", then configure will run
+# series of AC_TRY_RUN which won't work for cross-compilation and configure fails
+PACKAGECONFIG[double-precision] = "--enable-double-precision,--disable-double-precision"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/onig/files/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/onig/files/configure.patch
new file mode 100644
index 0000000..5fa700f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/onig/files/configure.patch
@@ -0,0 +1,13 @@
+Index: onig-5.9.3/configure.in
+===================================================================
+--- onig-5.9.3.orig/configure.in	2012-10-26 07:06:14.000000000 +0000
++++ onig-5.9.3/configure.in	2014-07-18 08:02:52.701574484 +0000
+@@ -3,7 +3,7 @@
+ 
+ AC_CONFIG_MACRO_DIR([m4])
+ 
+-AM_INIT_AUTOMAKE
++AM_INIT_AUTOMAKE([foreign])
+ AC_CONFIG_HEADER(config.h)
+ 
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/onig/files/do-not-use-system-headers.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/onig/files/do-not-use-system-headers.patch
new file mode 100644
index 0000000..b93602a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/onig/files/do-not-use-system-headers.patch
@@ -0,0 +1,44 @@
+Author: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
+
+When build on host with older eglibc (Ubuntu 12.04) build fails with:
+
+/tmp/OE/build/tmp-eglibc/sysroots/genericarmv8/usr/include/bits/predefs.h:23:3: error: #error "Never use <bits/predefs.h> directly; include <stdc-predef.h> instead."
+
+Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
+
+Upstream-Status: Inappropriate [embedded specific]
+
+---
+ Makefile.am        |    2 +-
+ sample/Makefile.am |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- onig-5.9.3.orig/Makefile.am
++++ onig-5.9.3/Makefile.am
+@@ -4,11 +4,11 @@ sampledir = $(top_srcdir)/sample
+ libname = libonig.la
+
+ ACLOCAL_AMFLAGS = -I m4
+ #AM_CFLAGS = -DNOT_RUBY
+ AM_CFLAGS =
+-INCLUDES  = -I$(top_srcdir) -I$(includedir)
++INCLUDES  = -I$(top_srcdir)
+
+ SUBDIRS = . sample
+
+ include_HEADERS = oniguruma.h oniggnu.h onigposix.h
+ lib_LTLIBRARIES = $(libname)
+--- onig-5.9.3.orig/sample/Makefile.am
++++ onig-5.9.3/sample/Makefile.am
+@@ -1,10 +1,10 @@
+ noinst_PROGRAMS = encode listcap names posix simple sql syntax crnl
+
+ libname = $(top_builddir)/libonig.la
+ LDADD   = $(libname)
+-INCLUDES  = -I$(top_srcdir) -I$(includedir)
++INCLUDES  = -I$(top_srcdir)
+
+ encode_SOURCES  = encode.c
+ listcap_SOURCES = listcap.c
+ names_SOURCES   = names.c
+ posix_SOURCES   = posix.c
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/onig/onig_5.9.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/onig/onig_5.9.3.bb
new file mode 100644
index 0000000..22db78a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/onig/onig_5.9.3.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Regular expressions library. The characteristics of this \
+library is that different character encoding for every regular expression \
+object can be specified."
+HOMEPAGE = "http://www.geocities.jp/kosako3/oniguruma/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0d4861b5bc0c392a5aa90d9d76ebd86f"
+
+SRC_URI = "http://www.geocities.jp/kosako3/oniguruma/archive/onig-${PV}.tar.gz \
+           file://do-not-use-system-headers.patch \
+           file://configure.patch"
+
+SRC_URI[md5sum] = "0d4eda2066d3c92970842a6790ce897a"
+SRC_URI[sha256sum] = "c3bba66b2a84760e6582c40881db97c839d94f327870009724bb8b4d0c051f2a"
+
+DEPENDS = "libevent"
+
+inherit autotools binconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/open-vcdiff/open-vcdiff_0.8.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/open-vcdiff/open-vcdiff_0.8.4.bb
new file mode 100644
index 0000000..e6942d0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/open-vcdiff/open-vcdiff_0.8.4.bb
@@ -0,0 +1,18 @@
+SUMMARY = "An encoder/decoder for the VCDIFF (RFC3284) format"
+DESCRIPTION = "A library with a simple API is included, as well as a \
+               command-line executable that can apply the encoder and \
+               decoder to source, target, and delta files. \
+               A slight variation from the draft standard is defined \
+               to allow chunk-by-chunk decoding when only a partial \
+               delta file window is available."
+HOMEPAGE = "http://code.google.com/p/open-vcdiff/"
+SECTION = "console/utils"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ff820d4ddc1ba05b6fd37b41a21506f9"
+
+SRC_URI = "https://drive.google.com/uc?id=0B5WpIi2fQU1aNGJwVE9hUjU5clU&export=download;downloadfilename=${BP}.tar.gz"
+SRC_URI[md5sum] = "5c0d378d907bebc38b51c3d7e4117011"
+SRC_URI[sha256sum] = "2b142b1027fb0a62c41347600e01a53fa274dad15445a7da48083c830c3138b3"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/etc-openct.udev.in-disablePROGRAM.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/etc-openct.udev.in-disablePROGRAM.patch
new file mode 100644
index 0000000..745f923
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/etc-openct.udev.in-disablePROGRAM.patch
@@ -0,0 +1,31 @@
+From e0d3e0bb1e38ff851696a7d8826e651d364ad8ce Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 5 Dec 2014 02:00:57 +0900
+Subject: [PATCH 1/2] etc/openct.udev.in: disablePROGRAM
+
+Bug fix: https://bugzilla.redhat.com/show_bug.cgi?id=287871
+
+Upstream-status: Pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ etc/openct.udev.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/etc/openct.udev.in b/etc/openct.udev.in
+index d11d0e1..48083c9 100644
+--- a/etc/openct.udev.in
++++ b/etc/openct.udev.in
+@@ -22,7 +22,8 @@ ACTION!="add", GOTO="openct_usb_rules_end"
+ # 2010-01-06 removed, as latest udev doesn't know WAIT_FOR_ATTR any more.
+ 
+ # sleep for 100ms - the wait_for_sysfs might not be enough
+-PROGRAM="/bin/sleep 0.1"
++# Disabled in this package - see https://bugzilla.redhat.com/287871
++# PROGRAM="/bin/sleep 0.1"
+ 
+ # ccid
+ ATTR{bInterfaceClass}=="0b", ATTR{bInterfaceSubClass}=="00", ATTR{bInterfaceProtocol}=="00", ATTRS{idVendor}=="?*"  RUN+="@udevdir@/openct_usb /dev/$parent"
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/etc-openct_usb.in-modify-UDEVINFO.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/etc-openct_usb.in-modify-UDEVINFO.patch
new file mode 100644
index 0000000..d5e3fe5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/etc-openct_usb.in-modify-UDEVINFO.patch
@@ -0,0 +1,35 @@
+From d93985a137b553b2723235d03bda341dab14064f Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 5 Dec 2014 02:04:03 +0900
+Subject: [PATCH 2/2] etc/openct_usb.in: modify UDEVINFO
+
+this patch is from Fedora
+
+Upstream-status: Pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ etc/openct_usb.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/etc/openct_usb.in b/etc/openct_usb.in
+index 32f91aa..917467d 100644
+--- a/etc/openct_usb.in
++++ b/etc/openct_usb.in
+@@ -15,10 +15,10 @@ if [ -z "$DEVNAME" ]; then
+ 	# Guess udev info interface.
+ 	# Newer udev uses udevadm
+ 	#
+-	if which udevinfo > /dev/null 2>&1; then
+-		UDEVINFO="udevinfo"
+-	else
++	if which udevadm > /dev/null 2>&1; then
+ 		UDEVINFO="udevadm info"
++	else
++		UDEVINFO="udevinfo"
+ 	fi
+ 	DEVNAME=/dev/$($UDEVINFO --query=name --path=$(dirname $DEVPATH))
+ fi
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/openct.init b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/openct.init
new file mode 100644
index 0000000..c689609
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/openct.init
@@ -0,0 +1,89 @@
+#!/bin/sh
+#
+# openct       This shell script takes care of starting and stopping OpenCT.
+#
+# chkconfig:   2345 24 89
+# description: OpenCT is a middleware framework for smart card terminals.
+#
+# processname: ifdhandler
+# config:      /etc/openct.conf
+
+### BEGIN INIT INFO
+# Provides: openct
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Should-Start: $syslog $network
+# Should-Stop: $syslog $network
+# Short-Description: Middleware framework for smart card terminals
+# Description: This starts/stops the OpenCT middleware framework support
+#              for smart card terminals.
+### END INIT INFO
+
+. /etc/init.d/functions
+
+exec="/usr/sbin/openct-control"
+prog=openct
+proc=ifdhandler
+
+OPENCT_OPTIONS=
+[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
+
+lockfile=/var/lock/subsys/$prog
+
+start() {
+    retval=0
+    if ! status $proc >/dev/null 2>&1 ; then
+        action $"Initializing OpenCT smart card terminals: " \
+            $exec $OPENCT_OPTIONS init
+        retval=$?
+        [ $retval -eq 0 ] && touch $lockfile
+    fi
+    return $retval
+}
+
+stop() {
+    if status $proc >/dev/null 2>&1 ; then
+        action $"Stopping OpenCT smart card terminals: " \
+            $exec $OPENCT_OPTIONS shutdown
+    fi
+    retval=$?
+    if [ $retval -eq 0 ] ; then
+        rm -f /var/run/openct/status
+        rm -f $lockfile
+    fi
+    return $retval
+}
+
+restart() {
+    stop
+    start
+}
+
+oct_status() {
+    status $proc
+    retval=$?
+    if [ -e /var/run/openct/status ] ; then
+        $exec $OPENCT_OPTIONS status
+        [ -e /var/run/openct/status ] && \
+            echo $"Waiting for reader attach/detach events..."
+    fi
+    return $retval
+}
+
+case "$1" in
+    start|stop|restart)
+        $1
+        ;;
+    reload|force-reload)
+        restart
+        ;;
+    status)
+        oct_status
+        ;;
+    try-restart|condrestart)
+  	[ ! -f $lockfile ] || restart
+	;;
+    *)
+        echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"
+        exit 2
+esac
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/openct.service b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/openct.service
new file mode 100644
index 0000000..c9ec497
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/openct.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Openct Middleware framework for smart card terminals
+After=syslog.target network.target
+
+[Service]
+EnvironmentFile=-/etc/sysconfig/openct
+ExecStart=/usr/sbin/openct-control $OPENCT_OPTIONS init 
+ExecStop=/usr/sbin/openct-control $OPENCT_OPTIONS shutdown
+RemainAfterExit=yes
+KillMode=none
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/openct.sysconfig b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/openct.sysconfig
new file mode 100644
index 0000000..ffc2707
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct/openct.sysconfig
@@ -0,0 +1,5 @@
+#                                                                    -*- sh -*-
+# Extra options to pass to openct-control.
+# Consult "/usr/sbin/openct-control -h" for available options.
+#
+OPENCT_OPTIONS=""
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
new file mode 100644
index 0000000..bf1ff57
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
@@ -0,0 +1,92 @@
+Summanry = "Middleware framework for smart card terminals"
+DESCRIPTION = " \
+OpenCT implements drivers for several smart card readers. \
+It comes as driver in ifdhandler format for PC/SC-Lite, \
+as CT-API driver, or as a small and lean middleware, \
+so applications can use it with minimal overhead. \
+OpenCT also has a primitive mechanism to export smart card \
+readers to remote machines via TCP/IP."
+
+DEPENDS += "libtool pcsc-lite libusb-compat"
+
+SRC_URI = " \
+    ${DEBIAN_MIRROR}/main/o/${BPN}/${BPN}_${PV}.orig.tar.gz \
+    file://etc-openct.udev.in-disablePROGRAM.patch \
+    file://etc-openct_usb.in-modify-UDEVINFO.patch \
+    file://openct.init \
+    file://openct.sysconfig \
+    file://openct.service \
+"
+
+SRC_URI[md5sum] = "a1da3358ab798f1cb9232f1dbababc21"
+SRC_URI[sha256sum] = "6cd3e2933d29eb1f875c838ee58b8071fd61f0ec8ed5922a86c01c805d181a68"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://LGPL-2.1;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+inherit ${@bb.utils.contains('VIRTUAL-RUNTIME_init_manager','systemd','systemd','', d)}
+SYSTEMD_SERVICE_${PN} += "openct.service "
+SYSTEMD_AUTO_ENABLE = "enable"
+
+EXTRA_OECONF=" \
+    --disable-static \
+    --enable-usb \
+    --enable-pcsc \
+    --enable-doc \
+    --enable-api-doc \
+    --with-udev=/lib/udev \
+    --with-bundle=${libdir}/pcsc/drivers \
+"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += " \
+    ${libdir}/ctapi \
+    /lib/udev \
+    ${libdir}/openct-ifd.so \
+    ${libdir}/pcsc \
+    /run/openct/status \
+"
+
+FILES_${PN}-dbg += " \
+    ${libdir}/ctapi/.debug \
+    ${libdir}/pcsc/drivers/openct-ifd.bundle/Contents/Linux/.debug \
+"
+
+INSANE_SKIP_${PN} += "dev-deps"
+
+
+do_install () {
+    rm -rf ${D}
+    install -d ${D}/etc
+    install -dm 755 ${D}/lib/udev
+    # fix up hardcoded paths
+    sed -i -e 's,/etc/,${sysconfdir}/,' -e 's,/usr/sbin/,${sbindir}/,' \
+        ${WORKDIR}/openct.service ${WORKDIR}/openct.init
+
+    oe_runmake install DESTDIR=${D}
+    install -dm 755 ${D}${libdir}/ctapi/
+    mv ${D}${libdir}/libopenctapi.so ${D}${libdir}/ctapi/
+    install -Dpm 644 etc/openct.udev ${D}/etc/udev/rules.d/60-openct.rules
+    install -pm 644 etc/openct.conf ${D}/etc/openct.conf
+
+    install -Dpm 755 ${WORKDIR}/openct.init ${D}/etc/init.d/openct
+    install -Dpm 644 ${WORKDIR}/openct.sysconfig ${D}/etc/sysconfig/openct
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}/${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/openct.service ${D}/${systemd_unitdir}/system
+    fi
+
+    so=$(find ${D} -name \*.so | sed "s|^${D}||")
+    sed -i -e 's|\\(LIBPATH\\s*\\).*|\\1$so|' etc/reader.conf
+    install -Dpm 644 etc/reader.conf ${D}/etc/reader.conf.d/openct.conf
+
+    install -dm 755 ${D}${localstatedir}/run/openct
+    touch ${D}${localstatedir}/run/openct/status
+    chmod 644 ${D}${localstatedir}/run/openct/status
+}
+
+pkg_postinst_${PN} () {
+    ln -sf ctapi/libopenctapi.so ${libdir}/libopenctapi.so
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv-samples_2.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv-samples_2.4.bb
new file mode 100644
index 0000000..ecaae4c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv-samples_2.4.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Opencv : The Open Computer Vision Library"
+HOMEPAGE = "http://opencv.willowgarage.com/wiki/"
+SECTION = "libs"
+LICENSE = "BSD"
+
+DEPENDS = "opencv"
+
+LIC_FILES_CHKSUM = "file://include/opencv2/opencv.hpp;endline=41;md5=6d690d8488a6fca7a2c192932466bb14 \
+"
+SRCREV = "6fae07ba8867b8fd2c53344a774aab669afa7c5e"
+SRC_URI = "git://github.com/Itseez/opencv.git;branch=2.4 \
+          "
+PV = "2.4.3+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+    cd samples/c
+    install -d ${D}/${bindir}
+    install -d ${D}/${datadir}/opencv/samples
+
+    cp * ${D}/${datadir}/opencv/samples || true
+
+    for i in *.c; do
+        echo "compiling $i"
+        ${CXX} ${CFLAGS} ${LDFLAGS} -ggdb `pkg-config --cflags opencv` -o `basename $i .c` $i `pkg-config --libs opencv` || true
+        install -m 0755 `basename $i .c` ${D}/${bindir} || true
+        rm ${D}/${datadir}/opencv/samples/`basename $i .c` || true
+    done
+    for i in *.cpp; do
+        echo "compiling $i"
+        ${CXX} ${CFLAGS} ${LDFLAGS} -ggdb `pkg-config --cflags opencv` -o `basename $i .cpp` $i `pkg-config --libs opencv` || true
+        install -m 0755 `basename $i .cpp` ${D}/${bindir} || true
+        rm ${D}/${datadir}/opencv/samples/`basename $i .cpp` || true
+    done
+}
+
+FILES_${PN}-dev += "${datadir}/opencv/samples/*.c* ${datadir}/opencv/samples/*.vcp* ${datadir}/opencv/samples/build*" 
+FILES_${PN} += "${bindir} ${datadir}/opencv"
+
+PNBLACKLIST[opencv-samples] ?= "Depends on blacklisted opencv"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch
new file mode 100644
index 0000000..d568018
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch
@@ -0,0 +1,28 @@
+From 049f931207631aa54af55a2917318d032b2ef3fa Mon Sep 17 00:00:00 2001
+From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
+Date: Thu, 31 Mar 2016 00:20:15 +0200
+Subject: [PATCH] 3rdparty/ippicv: Use pre-downloaded ipp
+
+Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
+---
+ 3rdparty/ippicv/downloader.cmake | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/3rdparty/ippicv/downloader.cmake b/3rdparty/ippicv/downloader.cmake
+index a6016dbe10bc..af4062c8e95e 100644
+--- a/3rdparty/ippicv/downloader.cmake
++++ b/3rdparty/ippicv/downloader.cmake
+@@ -31,8 +31,10 @@ function(_icv_downloader)
+     return() # Not supported
+   endif()
+ 
++  if(NOT DEFINED OPENCV_ICV_PATH)
+   set(OPENCV_ICV_UNPACK_PATH "${CMAKE_CURRENT_LIST_DIR}/unpack")
+   set(OPENCV_ICV_PATH "${OPENCV_ICV_UNPACK_PATH}${OPENCV_ICV_PACKAGE_SUBDIR}")
++  endif()
+ 
+   if(DEFINED OPENCV_ICV_PACKAGE_DOWNLOADED
+        AND OPENCV_ICV_PACKAGE_DOWNLOADED STREQUAL OPENCV_ICV_PACKAGE_HASH
+-- 
+2.8.0.rc3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Use-__vector-instead-of-vector-as-suggests-Eigen.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Use-__vector-instead-of-vector-as-suggests-Eigen.patch
new file mode 100644
index 0000000..7f809bc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Use-__vector-instead-of-vector-as-suggests-Eigen.patch
@@ -0,0 +1,49 @@
+From 711f07a34ceb504e8f75e978692201efa58268ca Mon Sep 17 00:00:00 2001
+From: Dinar Valeev <dvaleev@suse.com>
+Date: Thu, 16 Jan 2014 21:53:49 +0100
+Subject: [PATCH] Use __vector instead of vector as suggests Eigen
+
+This fixes build on PowerPC where Eigen unsets vector, bool and pixel
+
+Signed-off-by: Dinar Valeev <dvaleev@suse.com>
+
+This patch is already part of OpenCV v3.0. The patch can be obtained
+from:
+
+  https://github.com/Itseez/opencv/commit/711f07a34ceb504e8f75e978692201efa58268ca.patch
+
+Upstream-Status: Backport [commit 711f07a34c, part of version 3.0]
+
+Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
+---
+ 3rdparty/include/opencl/1.2/CL/cl_platform.h | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/3rdparty/include/opencl/1.2/CL/cl_platform.h b/3rdparty/include/opencl/1.2/CL/cl_platform.h
+index e94949a..42c35d5 100644
+--- a/3rdparty/include/opencl/1.2/CL/cl_platform.h
++++ b/3rdparty/include/opencl/1.2/CL/cl_platform.h
+@@ -332,13 +332,13 @@ typedef unsigned int cl_GLenum;
+ /* Define basic vector types */
+ #if defined( __VEC__ )
+    #include <altivec.h>   /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */
+-   typedef vector unsigned char     __cl_uchar16;
+-   typedef vector signed char       __cl_char16;
+-   typedef vector unsigned short    __cl_ushort8;
+-   typedef vector signed short      __cl_short8;
+-   typedef vector unsigned int      __cl_uint4;
+-   typedef vector signed int        __cl_int4;
+-   typedef vector float             __cl_float4;
++   typedef __vector unsigned char     __cl_uchar16;
++   typedef __vector signed char       __cl_char16;
++   typedef __vector unsigned short    __cl_ushort8;
++   typedef __vector signed short      __cl_short8;
++   typedef __vector unsigned int      __cl_uint4;
++   typedef __vector signed int        __cl_int4;
++   typedef __vector float             __cl_float4;
+    #define  __CL_UCHAR16__  1
+    #define  __CL_CHAR16__   1
+    #define  __CL_USHORT8__  1
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch
new file mode 100644
index 0000000..3aeda7d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch
@@ -0,0 +1,29 @@
+diff --git a/cmake/OpenCVGenPkgconfig.cmake b/cmake/OpenCVGenPkgconfig.cmake
+index b8cb8777c06b..75281ee964fd 100644
+--- a/cmake/OpenCVGenPkgconfig.cmake
++++ b/cmake/OpenCVGenPkgconfig.cmake
+@@ -27,7 +27,7 @@ macro(fix_prefix lst isown)
+       get_filename_component(libdir "${item}" PATH)
+       get_filename_component(libname "${item}" NAME_WE)
+       string(REGEX REPLACE "^lib(.*)" "\\1" libname "${libname}")
+-      list(APPEND _lst "-L${libdir}" "-l${libname}")
++      list(APPEND _lst "-l${libname}")
+     else()
+       list(APPEND _lst "-l${item}")
+     endif()
+@@ -66,10 +66,14 @@ ocv_list_unique(_3rdparty)
+ 
+ set(OPENCV_PC_LIBS
+   "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
++  "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}"
+   "${_modules}"
+ )
+ if (BUILD_SHARED_LIBS)
+-  set(OPENCV_PC_LIBS_PRIVATE "${_extra}")
++  set(OPENCV_PC_LIBS_PRIVATE
++    "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
++    "${_extra}"
++  )
+ else()
+   set(OPENCV_PC_LIBS_PRIVATE
+     "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv_2.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv_2.4.bb
new file mode 100644
index 0000000..eb38a5a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv_2.4.bb
@@ -0,0 +1,108 @@
+SUMMARY = "Opencv : The Open Computer Vision Library"
+HOMEPAGE = "http://opencv.org/"
+SECTION = "libs"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://include/opencv2/opencv.hpp;endline=41;md5=6d690d8488a6fca7a2c192932466bb14"
+
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
+DEPENDS = "python-numpy libtool swig swig-native python bzip2 zlib glib-2.0"
+
+SRCREV = "2c9547e3147779001811d01936aed38f560929fc"
+SRC_URI = "git://github.com/Itseez/opencv.git;branch=2.4 \
+  file://0001-Use-__vector-instead-of-vector-as-suggests-Eigen.patch"
+
+PV = "2.4.11+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+# Do an out-of-tree build
+OECMAKE_SOURCEPATH = "${S}"
+OECMAKE_BUILDPATH = "${WORKDIR}/build-${TARGET_ARCH}"
+
+EXTRA_OECMAKE = "-DPYTHON_NUMPY_INCLUDE_DIR:PATH=${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/numpy/core/include \
+                 -DBUILD_PYTHON_SUPPORT=ON \
+                 -DWITH_GSTREAMER=OFF \
+                 -DWITH_1394=OFF \
+                 -DCMAKE_SKIP_RPATH=ON \
+                 ${@bb.utils.contains("TARGET_CC_ARCH", "-msse3", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1", "", d)} \
+                 ${@bb.utils.contains("TARGET_CC_ARCH", "-msse4.1", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE41=1", "", d)} \
+                 ${@bb.utils.contains("TARGET_CC_ARCH", "-msse4.2", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE41=1 -DENABLE_SSE42=1", "", d)} \
+                 ${@base_conditional("libdir", "/usr/lib64", "-DLIB_SUFFIX=64", "", d)} \
+                 ${@base_conditional("libdir", "/usr/lib32", "-DLIB_SUFFIX=32", "", d)} \
+"
+
+PACKAGECONFIG ??= "eigen jpeg png tiff v4l libv4l \
+                   ${@bb.utils.contains("DISTRO_FEATURES", "x11", "gtk", "", d)} \
+                   ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libav", "", d)}"
+
+PACKAGECONFIG[eigen] = "-DWITH_EIGEN=ON,-DWITH_EIGEN=OFF,libeigen,"
+PACKAGECONFIG[gtk] = "-DWITH_GTK=ON,-DWITH_GTK=OFF,gtk+,"
+PACKAGECONFIG[jasper] = "-DWITH_JASPER=ON,-DWITH_JASPER=OFF,jasper,"
+PACKAGECONFIG[jpeg] = "-DWITH_JPEG=ON,-DWITH_JPEG=OFF,jpeg,"
+PACKAGECONFIG[libav] = "-DWITH_FFMPEG=ON,-DWITH_FFMPEG=OFF,libav,"
+PACKAGECONFIG[libv4l] = "-DWITH_LIBV4L=ON,-DWITH_LIBV4L=OFF,v4l-utils,"
+PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng,"
+PACKAGECONFIG[tiff] = "-DWITH_TIFF=ON,-DWITH_TIFF=OFF,tiff,"
+PACKAGECONFIG[v4l] = "-DWITH_V4L=ON,-DWITH_V4L=OFF,v4l-utils,"
+
+inherit distutils-base pkgconfig cmake
+
+export BUILD_SYS
+export HOST_SYS
+export PYTHON_CSPEC="-I${STAGING_INCDIR}/${PYTHON_DIR}"
+export PYTHON="${STAGING_BINDIR_NATIVE}/python"
+
+TARGET_CC_ARCH += "-I${S}/include "
+
+PACKAGES += "${PN}-apps python-opencv"
+
+python populate_packages_prepend () {
+    cv_libdir = d.expand('${libdir}')
+    cv_libdir_dbg = d.expand('${libdir}/.debug')
+    do_split_packages(d, cv_libdir, '^lib(.*)\.so$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev', allow_links=True)
+    do_split_packages(d, cv_libdir, '^lib(.*)\.la$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev')
+    do_split_packages(d, cv_libdir, '^lib(.*)\.a$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev')
+    do_split_packages(d, cv_libdir, '^lib(.*)\.so\.*', 'lib%s', 'OpenCV %s library', extra_depends='', allow_links=True)
+
+    pn = d.getVar('PN', 1)
+    metapkg =  pn + '-dev'
+    d.setVar('ALLOW_EMPTY_' + metapkg, "1")
+    blacklist = [ metapkg ]
+    metapkg_rdepends = [ ] 
+    packages = d.getVar('PACKAGES', 1).split()
+    for pkg in packages[1:]:
+        if not pkg in blacklist and not pkg in metapkg_rdepends and pkg.endswith('-dev'):
+            metapkg_rdepends.append(pkg)
+    d.setVar('RRECOMMENDS_' + metapkg, ' '.join(metapkg_rdepends))
+}
+
+PACKAGES_DYNAMIC += "^libopencv-.*"
+
+FILES_${PN} = ""
+FILES_${PN}-apps = "${bindir}/* ${datadir}/OpenCV"
+FILES_${PN}-dbg += "${libdir}/.debug"
+FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig"
+FILES_${PN}-doc = "${datadir}/OpenCV/doc"
+
+ALLOW_EMPTY_${PN} = "1"
+
+SUMMARY_python-opencv = "Python bindings to opencv"
+FILES_python-opencv = "${PYTHON_SITEPACKAGES_DIR}/*"
+RDEPENDS_python-opencv = "python-core python-numpy"
+
+do_install_append() {
+    cp ${S}/include/opencv/*.h ${D}${includedir}/opencv/
+    sed -i '/blobtrack/d' ${D}${includedir}/opencv/cvaux.h
+
+    # Move Python files into correct library folder (for multilib build)
+    if [ "$libdir" != "/usr/lib" ]; then
+        mv ${D}/usr/lib/* ${D}/${libdir}/
+        rm -rf ${D}/usr/lib
+    fi
+}
+
+# http://errors.yoctoproject.org/Errors/Details/40660/
+PNBLACKLIST[opencv] ?= "Not compatible with currently used ffmpeg 3"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.1.bb
new file mode 100644
index 0000000..789512f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.1.bb
@@ -0,0 +1,149 @@
+SUMMARY = "Opencv : The Open Computer Vision Library"
+HOMEPAGE = "http://opencv.org/"
+SECTION = "libs"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0ea90d28b4de883d7af5e6711f14f7bf"
+
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
+DEFAULT_PREFERENCE = "-1"
+
+DEPENDS = "python-numpy libtool swig swig-native python bzip2 zlib glib-2.0 libwebp libgphoto2 protobuf protobuf-native"
+
+SRCREV_opencv = "92387b1ef8fad15196dd5f7fb4931444a68bc93a"
+SRCREV_contrib = "5409d5ad560523c85c6796cc5a009347072d883c"
+SRCREV_party3 = "81a676001ca8075ada498583e4166079e5744668"
+IPP_MD5 = "808b791a6eac9ed78d32a7666804320e"
+
+SRCREV_FORMAT = "opencv"
+SRC_URI = "git://github.com/Itseez/opencv.git;name=opencv \
+            git://github.com/Itseez/opencv_contrib.git;destsuffix=contrib;name=contrib \
+            git://github.com/Itseez/opencv_3rdparty.git;branch=ippicv/master_20151201;destsuffix=party3;name=party3 \
+            file://0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch \
+            file://fixpkgconfig.patch"
+
+PV = "3.1+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+do_unpack_extra() {
+    tar xzf ${WORKDIR}/party3/ippicv/ippicv_linux_20151201.tgz -C ${WORKDIR}
+}
+addtask unpack_extra after do_unpack before do_patch
+
+EXTRA_OECMAKE = "-DPYTHON2_NUMPY_INCLUDE_DIRS:PATH=${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/numpy/core/include \
+		 -DOPENCV_EXTRA_MODULES_PATH=${WORKDIR}/contrib/modules \
+                 -DWITH_1394=OFF \
+                 -DCMAKE_SKIP_RPATH=ON \
+                 -DOPENCV_ICV_PACKAGE_DOWNLOADED=${IPP_MD5} \
+                 -DOPENCV_ICV_PATH=${WORKDIR}/ippicv_lnx \
+                 ${@bb.utils.contains("TARGET_CC_ARCH", "-msse3", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1", "", d)} \
+                 ${@bb.utils.contains("TARGET_CC_ARCH", "-msse4.1", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE41=1", "", d)} \
+                 ${@bb.utils.contains("TARGET_CC_ARCH", "-msse4.2", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE41=1 -DENABLE_SSE42=1", "", d)} \
+                 ${@base_conditional("libdir", "/usr/lib64", "-DLIB_SUFFIX=64", "", d)} \
+                 ${@base_conditional("libdir", "/usr/lib32", "-DLIB_SUFFIX=32", "", d)} \
+"
+EXTRA_OECMAKE_append_x86 = " -DX86=ON"
+
+PACKAGECONFIG ??= "eigen jpeg png tiff v4l libv4l gstreamer samples tbb \
+                   ${@bb.utils.contains("DISTRO_FEATURES", "x11", "gtk", "", d)} \
+		   ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libav", "", d)}"
+
+PACKAGECONFIG[amdblas] = "-DWITH_OPENCLAMDBLAS=ON,-DWITH_OPENCLAMDBLAS=OFF,libclamdblas,"
+PACKAGECONFIG[amdfft] = "-DWITH_OPENCLAMDFFT=ON,-DWITH_OPENCLAMDFFT=OFF,libclamdfft,"
+PACKAGECONFIG[eigen] = "-DWITH_EIGEN=ON,-DWITH_EIGEN=OFF,libeigen,"
+PACKAGECONFIG[gstreamer] = "-DWITH_GSTREAMER=ON,-DWITH_GSTREAMER=OFF,gstreamer1.0 gstreamer1.0-plugins-base,"
+PACKAGECONFIG[gtk] = "-DWITH_GTK=ON,-DWITH_GTK=OFF,gtk+3,"
+PACKAGECONFIG[jasper] = "-DWITH_JASPER=ON,-DWITH_JASPER=OFF,jasper,"
+PACKAGECONFIG[jpeg] = "-DWITH_JPEG=ON,-DWITH_JPEG=OFF,jpeg,"
+PACKAGECONFIG[libav] = "-DWITH_FFMPEG=ON,-DWITH_FFMPEG=OFF,libav,"
+PACKAGECONFIG[libv4l] = "-DWITH_LIBV4L=ON,-DWITH_LIBV4L=OFF,v4l-utils,"
+PACKAGECONFIG[opencl] = "-DWITH_OPENCL=ON,-DWITH_OPENCL=OFF,opencl-headers,"
+PACKAGECONFIG[oracle-java] = "-DJAVA_INCLUDE_PATH=${JAVA_HOME}/include -DJAVA_INCLUDE_PATH2=${JAVA_HOME}/include/linux -DJAVA_AWT_INCLUDE_PATH=${JAVA_HOME}/include -DJAVA_AWT_LIBRARY=${JAVA_HOME}/lib/amd64/libjawt.so -DJAVA_JVM_LIBRARY=${JAVA_HOME}/lib/amd64/server/libjvm.so,,ant-native oracle-jse-jdk oracle-jse-jdk-native,"
+PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng,"
+PACKAGECONFIG[samples] = "-DBUILD_EXAMPLES=ON -DINSTALL_PYTHON_EXAMPLES=ON,-DBUILD_EXAMPLES=OFF,,"
+PACKAGECONFIG[tbb] = "-DWITH_TBB=ON,-DWITH_TBB=OFF,tbb,"
+PACKAGECONFIG[tiff] = "-DWITH_TIFF=ON,-DWITH_TIFF=OFF,tiff,"
+PACKAGECONFIG[v4l] = "-DWITH_V4L=ON,-DWITH_V4L=OFF,v4l-utils,"
+
+inherit distutils-base pkgconfig cmake
+
+export BUILD_SYS
+export HOST_SYS
+export PYTHON_CSPEC="-I${STAGING_INCDIR}/${PYTHON_DIR}"
+export PYTHON="${STAGING_BINDIR_NATIVE}/python"
+export JAVA_HOME="${STAGING_DIR_NATIVE}/usr/bin/java"
+export ANT_DIR="${STAGING_DIR_NATIVE}/usr/share/ant/"
+
+TARGET_CC_ARCH += "-I${S}/include "
+
+PACKAGES += "${PN}-samples-dbg ${PN}-samples ${PN}-apps python-opencv \
+             ${@bb.utils.contains('PACKAGECONFIG', 'oracle-java', '${PN}-java-dbg ${PN}-java', '', d)}"
+
+python populate_packages_prepend () {
+    cv_libdir = d.expand('${libdir}')
+    cv_libdir_dbg = d.expand('${libdir}/.debug')
+    do_split_packages(d, cv_libdir, '^lib(.*)\.so$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev', allow_links=True)
+    do_split_packages(d, cv_libdir, '^lib(.*)\.la$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev')
+    do_split_packages(d, cv_libdir, '^lib(.*)\.a$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev')
+    do_split_packages(d, cv_libdir, '^lib(.*)\.so\.*', 'lib%s', 'OpenCV %s library', extra_depends='', allow_links=True)
+
+    pn = d.getVar('PN', 1)
+    metapkg =  pn + '-dev'
+    d.setVar('ALLOW_EMPTY_' + metapkg, "1")
+    blacklist = [ metapkg ]
+    metapkg_rdepends = [ ]
+    packages = d.getVar('PACKAGES', 1).split()
+    for pkg in packages[1:]:
+        if not pkg in blacklist and not pkg in metapkg_rdepends and pkg.endswith('-dev'):
+            metapkg_rdepends.append(pkg)
+    d.setVar('RRECOMMENDS_' + metapkg, ' '.join(metapkg_rdepends))
+
+    metapkg =  pn
+    blacklist = [ metapkg ]
+    metapkg_rdepends = [ ]
+    for pkg in packages[1:]:
+        if not pkg in blacklist and not pkg in metapkg_rdepends and not pkg.endswith('-dev') and not pkg.endswith('-dbg') and not pkg.endswith('-doc') and not pkg.endswith('-locale'):
+            metapkg_rdepends.append(pkg)
+    bb.data.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends), d)
+
+}
+
+PACKAGES_DYNAMIC += "^libopencv-.*"
+
+FILES_${PN} = ""
+FILES_${PN}-apps = "${bindir}/* ${datadir}/OpenCV"
+FILES_${PN}-dbg += "${libdir}/.debug"
+FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig"
+FILES_${PN}-doc = "${datadir}/OpenCV/doc"
+FILES_${PN}-java = "${datadir}/OpenCV/java"
+FILES_${PN}-java-dbg = "${datadir}/OpenCV/java/.debug/"
+FILES_${PN}-samples = "${datadir}/OpenCV/samples/"
+FILES_${PN}-samples-dbg = "${datadir}/OpenCV/samples/bin/.debug"
+
+INSANE_SKIP_${PN}-apps = "staticdev"
+INSANE_SKIP_${PN}-java = "libdir"
+INSANE_SKIP_${PN}-java-dbg = "libdir"
+
+ALLOW_EMPTY_${PN} = "1"
+
+SUMMARY_python-opencv = "Python bindings to opencv"
+FILES_python-opencv = "${PYTHON_SITEPACKAGES_DIR}/*"
+RDEPENDS_python-opencv = "python-core python-numpy"
+
+do_install_append() {
+    cp ${S}/include/opencv/*.h ${D}${includedir}/opencv/
+    sed -i '/blobtrack/d' ${D}${includedir}/opencv/cvaux.h
+
+    # Move Python files into correct library folder (for multilib build)
+    if [ "$libdir" != "/usr/lib" ]; then
+        mv ${D}/usr/lib/* ${D}/${libdir}/
+        rm -rf ${D}/usr/lib
+    fi
+
+    install -d ${D}${datadir}/OpenCV/samples/bin/
+    cp -f bin/*-tutorial-* bin/*-example-* ${D}${datadir}/OpenCV/samples/bin/
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/initscript b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/initscript
new file mode 100644
index 0000000..08d1067
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/initscript
@@ -0,0 +1,35 @@
+#! /bin/sh
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/openldap and type
+# > update-rc.d openldap defaults 60
+#
+
+# Source function library.
+. /etc/init.d/functions
+
+slapd=/usr/sbin/slapd
+test -x "$slapd" || exit 0
+
+
+case "$1" in
+  start)
+    echo -n "Starting OpenLDAP: "
+    start-stop-daemon --start --quiet --exec $slapd
+    echo "."
+    ;;
+  stop)
+    echo -n "Stopping OpenLDAP: "
+    start-stop-daemon --stop --quiet --pidfile /var/run/slapd.pid
+    echo "."
+    ;;
+  status)
+    status $slapd;
+    exit $?
+    ;;
+  *)
+    echo "Usage: /etc/init.d/openldap {start|stop|status}"
+    exit 1
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/install-strip.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/install-strip.patch
new file mode 100644
index 0000000..2992b70
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/install-strip.patch
@@ -0,0 +1,14 @@
+# This patch ensures that the install operations which strip
+# programs and libraries (LTINSTALL) work in a cross build
+# environment.
+--- openldap-2.2.24/.pc/install-strip.patch/build/top.mk	2005-01-20 09:00:55.000000000 -0800
++++ openldap-2.2.24/build/top.mk	2005-04-16 13:48:20.536710376 -0700
+@@ -116,7 +116,7 @@
+ LTLINK_MOD = $(LIBTOOL) $(LTONLY_MOD) --mode=link \
+ 	$(CC) $(LT_CFLAGS) $(LDFLAGS) $(LTFLAGS_MOD)
+ 
+-LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) 
++LTINSTALL = STRIPPROG="" $(LIBTOOL) --mode=install $(top_srcdir)/contrib/ldapc++/install-sh -c
+ LTFINISH = $(LIBTOOL) --mode=finish
+ 
+ # Misc UNIX commands used in build environment
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch
new file mode 100644
index 0000000..dcf5411
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch
@@ -0,0 +1,30 @@
+From: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
+
+slapd depends on ICU if it was built first.
+
+Upstream-status: inappropiate [embedded specific]
+---
+ configure.in |    8 --------
+ 1 file changed, 8 deletions(-)
+
+--- openldap-2.4.23.orig/configure.in
++++ openldap-2.4.23/configure.in
+@@ -2045,18 +2045,10 @@ if test $ol_enable_ndb != no ; then
+ 		SLAPD_LIBS="$SLAPD_LIBS \$(SLAPD_NDB_LIBS)"
+ 	fi
+ fi
+ 
+ dnl ----------------------------------------------------------------
+-dnl International Components for Unicode
+-OL_ICU
+-if test "$ol_icu" = no ; then
+-	AC_MSG_WARN([ICU not available])
+-else
+-	ICU_LIBS="$ol_icu"
+-fi
+-dnl ----------------------------------------------------------------
+ dnl
+ dnl Check for Cyrus SASL
+ dnl
+ WITH_SASL=no
+ ol_link_sasl=no
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-2.4.28-gnutls-gcrypt.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-2.4.28-gnutls-gcrypt.patch
new file mode 100644
index 0000000..c7b1552
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-2.4.28-gnutls-gcrypt.patch
@@ -0,0 +1,17 @@
+From http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/net-nds/openldap/files/
+
+Upstream-status: Unknown
+
+--
+
+--- openldap-2.4.28/configure.in.orig	2012-02-11 22:40:36.004360795 +0000
++++ openldap-2.4.28/configure.in	2012-02-11 22:40:13.410986851 +0000
+@@ -1214,7 +1214,7 @@
+ 				ol_with_tls=gnutls
+ 				ol_link_tls=yes
+ 
+-				TLS_LIBS="-lgnutls"
++				TLS_LIBS="-lgnutls -lgcrypt"
+ 
+ 				AC_DEFINE(HAVE_GNUTLS, 1, 
+ 					[define if you have GNUtls])
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-m4-pthread.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-m4-pthread.patch
new file mode 100644
index 0000000..b669b72
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-m4-pthread.patch
@@ -0,0 +1,20 @@
+--- openldap-2.3.11/build/openldap.m4.orig	2005-11-11 00:11:18.604322590 -0800
++++ openldap-2.3.11/build/openldap.m4	2005-11-11 00:26:21.621145856 -0800
+@@ -788,7 +788,7 @@ AC_DEFUN([OL_PTHREAD_TEST_FUNCTION],[[
+ ]])
+ 
+ AC_DEFUN([OL_PTHREAD_TEST_PROGRAM],
+-AC_LANG_SOURCE([OL_PTHREAD_TEST_INCLUDES
++[AC_LANG_SOURCE([[OL_PTHREAD_TEST_INCLUDES
+ 
+ int main(argc, argv)
+ 	int argc;
+@@ -796,7 +796,7 @@ int main(argc, argv)
+ {
+ OL_PTHREAD_TEST_FUNCTION
+ }
+-]))
++]])])
+ dnl --------------------------------------------------------------------
+ AC_DEFUN([OL_PTHREAD_TRY], [# Pthread try link: $1 ($2)
+ if test "$ol_link_threads" = no ; then
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/slapd.service b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/slapd.service
new file mode 100644
index 0000000..f5f83fd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/slapd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Standalone LDAP Daemon
+After=syslog.target network.target
+
+[Service]
+Type=forking
+ExecStart=@SBINDIR@/slapd
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/thread_stub.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/thread_stub.patch
new file mode 100644
index 0000000..540ba4a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/thread_stub.patch
@@ -0,0 +1,20 @@
+openldap: set pointer
+
+When the function ldap_pvt_thread_pool_getkey() succeeds, it
+must set the value of *data since the caller may try to use it.
+
+Upstream-Status: pending
+
+Signed-off-by: Joe Slater <jslater@windriver.com>
+
+
+--- a/libraries/libldap_r/thr_stub.c
++++ b/libraries/libldap_r/thr_stub.c
+@@ -217,6 +217,7 @@ ldap_pvt_thread_pool_unidle ( ldap_pvt_t
+ int ldap_pvt_thread_pool_getkey (
+ 	void *ctx, void *key, void **data, ldap_pvt_thread_pool_keyfree_t **kfree )
+ {
++	if (data) *data = NULL;  /* avoid problems with uninitialized *data */
+ 	return(0);
+ }
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/use-urandom.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/use-urandom.patch
new file mode 100644
index 0000000..e7b988f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap/use-urandom.patch
@@ -0,0 +1,38 @@
+openldap: assume /dev/urandom exists
+
+When we are cross-compiling, we want to assume
+that /dev/urandom exists.  We could change the source
+code to look for it, but this is the easy way out.
+
+Upstream-Status: pending
+
+Signed-off-by: Joe Slater <jslater@windriver.com>
+
+
+--- a/configure.in
++++ b/configure.in
+@@ -2142,8 +2142,8 @@ fi
+ 
+ dnl ----------------------------------------------------------------
+ dnl Check for entropy sources
++dev=no
+ if test $cross_compiling != yes && test "$ac_cv_mingw32" != yes ; then
+-	dev=no
+ 	if test -r /dev/urandom ; then
+ 		dev="/dev/urandom";
+ 	elif test -r /idev/urandom ; then
+@@ -2156,9 +2156,11 @@ if test $cross_compiling != yes && test 
+ 		dev="/idev/random";
+ 	fi
+ 
+-	if test $dev != no ; then
+-		AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
+-	fi
++elif test $cross_compiling == yes ; then
++	dev="/dev/urandom";
++fi
++if test $dev != no ; then
++	AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
+ fi
+ 
+ dnl ----------------------------------------------------------------
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.43.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.43.bb
new file mode 100644
index 0000000..8618365
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.43.bb
@@ -0,0 +1,254 @@
+# OpenLDAP, a license free (see http://www.OpenLDAP.org/license.html)
+#
+SUMMARY = "OpenLDAP Directory Service"
+DESCRIPTION = "OpenLDAP Software is an open source implementation of the Lightweight Directory Access Protocol."
+HOMEPAGE = "http://www.OpenLDAP.org/license.html"
+# The OpenLDAP Public License - see the HOMEPAGE - defines
+# the license.  www.openldap.org claims this is Open Source
+# (see http://www.openldap.org), the license appears to be
+# basically BSD.  opensource.org does not record this license
+# at present (so it is apparently not OSI certified).
+LICENSE = "OpenLDAP"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=9d845a25aef97da753144f1dacbf680c \
+                    file://LICENSE;md5=153d07ef052c4a37a8fac23bc6031972 \
+"
+SECTION = "libs"
+
+LDAP_VER = "${@'.'.join(d.getVar('PV',1).split('.')[0:2])}"
+
+SRC_URI = "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${BP}.tgz \
+    file://openldap-m4-pthread.patch \
+    file://kill-icu.patch \
+    file://openldap-2.4.28-gnutls-gcrypt.patch \
+    file://use-urandom.patch \
+    file://initscript \
+    file://slapd.service \
+    file://thread_stub.patch \
+"
+
+SRC_URI[md5sum] = "49ca65e27891fcf977d78c10f073c705"
+SRC_URI[sha256sum] = "34d78e5598a2b0360d26a9050fcdbbe198c65493b013bb607839d5598b6978c8"
+
+DEPENDS = "util-linux groff-native"
+
+# The original top.mk used INSTALL, not INSTALL_STRIP_PROGRAM when
+# installing .so and executables, this fails in cross compilation
+# environments
+SRC_URI += "file://install-strip.patch"
+
+inherit autotools-brokensep update-rc.d systemd
+
+# CV SETTINGS
+# Required to work round AC_FUNC_MEMCMP which gets the wrong answer
+# when cross compiling (should be in site?)
+EXTRA_OECONF += "ac_cv_func_memcmp_working=yes"
+
+# CONFIG DEFINITIONS
+# The following is necessary because it cannot be determined for a
+# cross compile automagically.  Select should yield fine on all OE
+# systems...
+EXTRA_OECONF += "--with-yielding-select=yes"
+# Shared libraries are nice...
+EXTRA_OECONF += "--enable-dynamic"
+
+PACKAGECONFIG ??= "gnutls modules \
+                   ldap meta monitor null passwd shell proxycache dnssrv \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)} \
+"
+#--with-tls              with TLS/SSL support auto|openssl|gnutls [auto]
+PACKAGECONFIG[gnutls] = "--with-tls=gnutls,,gnutls libgcrypt"
+PACKAGECONFIG[openssl] = "--with-tls=openssl,,openssl"
+
+PACKAGECONFIG[sasl] = "--with-cyrus-sasl,--without-cyrus-sasl,cyrus-sasl"
+PACKAGECONFIG[modules] = "lt_cv_dlopen_self=yes --enable-modules,--disable-modules,libtool"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6"
+
+# SLAPD options
+#
+# UNIX crypt(3) passwd support:
+EXTRA_OECONF += "--enable-crypt"
+
+# SLAPD BACKEND
+#
+# The backend must be set by the configuration.  This controls the
+# required database. 
+#
+# Backends="bdb dnssrv hdb ldap mdb meta monitor ndb null passwd perl relay shell sock sql"
+#
+# Note that multiple backends can be built.  The ldbm backend requires a
+# build-time choice of database API.  The bdb backend forces this to be
+# DB4.  To use the gdbm (or other) API the Berkely database module must
+# be removed from the build.
+md = "${libexecdir}/openldap"
+#
+#--enable-bdb          enable Berkeley DB backend no|yes|mod yes
+# The Berkely DB is the standard choice.  This version of OpenLDAP requires
+# the version 4 implementation or better.
+PACKAGECONFIG[bdb] = "--enable-bdb=yes,--enable-bdb=no,db"
+
+#--enable-dnssrv       enable dnssrv backend no|yes|mod no
+PACKAGECONFIG[dnssrv] = "--enable-dnssrv=mod,--enable-dnssrv=no"
+
+#--enable-hdb          enable Hierarchical DB backend no|yes|mod no
+PACKAGECONFIG[hdb] = "--enable-hdb=yes,--enable-hdb=no,db"
+
+#--enable-ldap         enable ldap backend no|yes|mod no
+PACKAGECONFIG[ldap] = "--enable-ldap=mod,--enable-ldap=no,"
+
+#--enable-mdb          enable mdb database backend no|yes|mod [yes]
+PACKAGECONFIG[mdb] = "--enable-mdb=mod,--enable-mdb=no,"
+
+#--enable-meta         enable metadirectory backend no|yes|mod no
+PACKAGECONFIG[meta] = "--enable-meta=mod,--enable-meta=no,"
+
+#--enable-monitor      enable monitor backend no|yes|mod yes
+PACKAGECONFIG[monitor] = "--enable-monitor=mod,--enable-monitor=no,"
+
+#--enable-ndb          enable MySQL NDB Cluster backend no|yes|mod [no]
+PACKAGECONFIG[ndb] = "--enable-ndb=mod,--enable-ndb=no,"
+
+#--enable-null         enable null backend no|yes|mod no
+PACKAGECONFIG[null] = "--enable-null=mod,--enable-null=no,"
+
+#--enable-passwd       enable passwd backend no|yes|mod no
+PACKAGECONFIG[passwd] = "--enable-passwd=mod,--enable-passwd=no,"
+
+#--enable-perl         enable perl backend no|yes|mod no
+#  This requires a loadable perl dynamic library, if enabled without
+#  doing something appropriate (building perl?) the build will pick
+#  up the build machine perl - not good (inherit perlnative?)
+PACKAGECONFIG[perl] = "--enable-perl=mod,--enable-perl=no,perl"
+
+#--enable-relay        enable relay backend no|yes|mod [yes]
+PACKAGECONFIG[relay] = "--enable-relay=mod,--enable-relay=no,"
+
+#--enable-shell        enable shell backend no|yes|mod no
+# configure: WARNING: Use of --without-threads is recommended with back-shell
+PACKAGECONFIG[shell] = "--enable-shell=mod --without-threads,--enable-shell=no,"
+
+#--enable-sock         enable sock backend no|yes|mod [no]
+PACKAGECONFIG[sock] = "--enable-sock=mod,--enable-sock=no,"
+
+#--enable-sql          enable sql backend no|yes|mod no
+# sql requires some sql backend which provides sql.h, sqlite* provides
+# sqlite.h (which may be compatible but hasn't been tried.)
+PACKAGECONFIG[sql] = "--enable-sql=mod,--enable-sql=no,sqlite3"
+
+#--enable-dyngroup     Dynamic Group overlay no|yes|mod no
+#  This is a demo, Proxy Cache defines init_module which conflicts with the
+#  same symbol in dyngroup
+PACKAGECONFIG[dyngroup] = "--enable-dyngroup=mod,--enable-dyngroup=no,"
+
+#--enable-proxycache   Proxy Cache overlay no|yes|mod no
+PACKAGECONFIG[proxycache] = "--enable-proxycache=mod,--enable-proxycache=no,"
+FILES_${PN}-overlay-proxycache = "${md}/pcache-*.so.*"
+PACKAGES += "${PN}-overlay-proxycache"
+
+# Append URANDOM_DEVICE='/dev/urandom' to CPPFLAGS:
+# This allows tls to obtain random bits from /dev/urandom, by default
+# it was disabled for cross-compiling.
+CPPFLAGS_append = " -D_GNU_SOURCE -DURANDOM_DEVICE=\'/dev/urandom\'"
+
+LDFLAGS += "-pthread"
+
+do_configure() {
+    cp ${STAGING_DATADIR_NATIVE}/libtool/build-aux/ltmain.sh ${S}/build
+    rm -f ${S}/libtool
+    aclocal
+    libtoolize --force --copy
+    gnu-configize
+    autoconf
+    oe_runconf
+}
+
+LEAD_SONAME = "libldap-${LDAP_VER}.so.*"
+
+# The executables go in a separate package.  This allows the
+# installation of the libraries with no daemon support.
+# Each module also has its own package - see above.
+PACKAGES += "${PN}-slapd ${PN}-slurpd ${PN}-bin"
+
+# Package contents - shift most standard contents to -bin
+FILES_${PN} = "${libdir}/lib*.so.* ${sysconfdir}/openldap/ldap.* ${localstatedir}/${BPN}/data"
+FILES_${PN}-slapd = "${sysconfdir}/init.d ${libexecdir}/slapd ${sbindir} ${localstatedir}/run ${localstatedir}/volatile/run \
+    ${sysconfdir}/openldap/slapd.* ${sysconfdir}/openldap/schema \
+    ${sysconfdir}/openldap/DB_CONFIG.example ${systemd_unitdir}/system/*"
+FILES_${PN}-slurpd = "${libexecdir}/slurpd ${localstatedir}/openldap-slurp ${localstatedir}/run ${localstatedir}/volatile/run"
+FILES_${PN}-bin = "${bindir}"
+FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la ${libdir}/*.a ${libexecdir}/openldap/*.a ${libexecdir}/openldap/*.la ${libexecdir}/openldap/*.so"
+FILES_${PN}-dbg += "${libexecdir}/openldap/.debug"
+
+do_install_append() {
+    install -d ${D}${sysconfdir}/init.d
+    cat ${WORKDIR}/initscript > ${D}${sysconfdir}/init.d/openldap
+    chmod 755 ${D}${sysconfdir}/init.d/openldap
+    # This is duplicated in /etc/openldap and is for slapd
+    rm -f ${D}${localstatedir}/openldap-data/DB_CONFIG.example
+
+    # Installing slapd under ${sbin} is more FHS and LSB compliance
+    mv ${D}${libexecdir}/slapd ${D}/${sbindir}/slapd
+    SLAPTOOLS="slapadd slapcat slapdn slapindex slappasswd slaptest slapauth slapacl slapschema"
+    cd ${D}/${sbindir}/
+    rm -f ${SLAPTOOLS}
+    for i in ${SLAPTOOLS}; do ln -sf slapd $i; done
+
+    rmdir "${D}${localstatedir}/run"
+    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}"
+
+    install -d ${D}${systemd_unitdir}/system/
+    install -m 0644 ${WORKDIR}/slapd.service ${D}${systemd_unitdir}/system/
+    sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/*.service
+
+    # Uses mdm as the database
+    #  and localstatedir as data directory ...
+    sed -e 's/# modulepath/modulepath/' \
+        -e 's/# moduleload\s*back_bdb.*/moduleload    back_mdb/' \
+        -e 's/database\s*bdb/database        mdb/' \
+        -e 's%^directory\s*.*%directory   ${localstatedir}/${BPN}/data/%' \
+        -i ${D}${sysconfdir}/openldap/slapd.conf
+
+    mkdir -p ${D}${localstatedir}/${BPN}/data
+
+
+}
+
+INITSCRIPT_PACKAGES = "${PN}-slapd"
+INITSCRIPT_NAME_${PN}-slapd = "openldap"
+INITSCRIPT_PARAMS_${PN}-slapd = "defaults"
+SYSTEMD_SERVICE_${PN}-slapd = "hostapd.service"
+SYSTEMD_AUTO_ENABLE_${PN}-slapd ?= "disable"
+
+
+PACKAGES_DYNAMIC += "^${PN}-backends.* ^${PN}-backend-.*"
+
+# The modules require their .so to be dynamicaly loaded
+INSANE_SKIP_${PN}-backend-dnssrv  += "dev-so"
+INSANE_SKIP_${PN}-backend-ldap    += "dev-so"
+INSANE_SKIP_${PN}-backend-meta    += "dev-so"
+INSANE_SKIP_${PN}-backend-mdb     += "dev-so"
+INSANE_SKIP_${PN}-backend-monitor += "dev-so"
+INSANE_SKIP_${PN}-backend-null    += "dev-so"
+INSANE_SKIP_${PN}-backend-passwd  += "dev-so"
+INSANE_SKIP_${PN}-backend-shell   += "dev-so"
+
+
+python populate_packages_prepend () {
+    backend_dir    = d.expand('${libexecdir}/openldap')
+    do_split_packages(d, backend_dir, 'back_([a-z]*)\.so$', 'openldap-backend-%s', 'OpenLDAP %s backend', prepend=True, extra_depends='', allow_links=True)
+    do_split_packages(d, backend_dir, 'back_([a-z]*)\-.*\.so\..*$', 'openldap-backend-%s', 'OpenLDAP %s backend', extra_depends='', allow_links=True)
+
+    metapkg = "${PN}-backends"
+    d.setVar('ALLOW_EMPTY_' + metapkg, "1")
+    d.setVar('FILES_' + metapkg, "")
+    metapkg_rdepends = []
+    packages = d.getVar('PACKAGES', 1).split()
+    for pkg in packages[1:]:
+        if pkg.count("openldap-backend-") and not pkg in metapkg_rdepends and not pkg.count("-dev") and not pkg.count("-dbg") and not pkg.count("static") and not pkg.count("locale"):
+            metapkg_rdepends.append(pkg)
+    d.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends))
+    d.setVar('DESCRIPTION_' + metapkg, 'OpenLDAP backends meta package')
+    packages.append(metapkg)
+    d.setVar('PACKAGES', ' '.join(packages))
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openmotif/openmotif/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/openmotif/openmotif/configure.patch
new file mode 100644
index 0000000..8868e80
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openmotif/openmotif/configure.patch
@@ -0,0 +1,15 @@
+--- a/configure.ac~	2009-10-27 14:10:23.000000000 -0200
++++ b/configure.ac	2011-05-31 10:51:00.207232036 -0300
+@@ -3,12 +3,6 @@
+ AC_CONFIG_SRCDIR([lib/Xm/Form.c])
+ AC_PREREQ(2.52)
+ AC_CONFIG_AUX_DIR(.)
+-AC_CHECK_FILE(/usr/X/include/X11/X.h,
+-  AC_PREFIX_DEFAULT(/usr/X),
+-  AC_PREFIX_DEFAULT(/usr))
+-AC_CHECK_FILE(/usr/X11R6/include/X11/X.h,
+-  AC_PREFIX_DEFAULT(/usr/X11R6),
+-  AC_PREFIX_DEFAULT(/usr))
+ 
+ dnl AM_MAINTAINER_MODE
+ AC_CANONICAL_TARGET
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openmotif/openmotif_2.3.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/openmotif/openmotif_2.3.3.bb
new file mode 100644
index 0000000..2baeda0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openmotif/openmotif_2.3.3.bb
@@ -0,0 +1,48 @@
+SECTION = "libs"
+SUMMARY = "OSM/Motif implementation"
+LICENSE = "OGPL"
+DEPENDS = "xbitmaps virtual/libx11 libxt libxft xproto"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=14f692c82491db3d52419929d2f3b343"
+
+PR = "r3"
+
+PNBLACKLIST[openmotif] ?= "BROKEN: doesn't build with B!=S"
+
+SRC_URI = "http://motif.ics.com/sites/default/files/openmotif-2.3.3.tar.gz \
+           file://configure.patch;patch=1"
+
+SRC_URI[md5sum] = "fd27cd3369d6c7d5ef79eccba524f7be"
+SRC_URI[sha256sum] = "c85f5545e218fa0c59a3789192132d472fc5a33e914a221a568eee4fc10cd103"
+
+inherit autotools
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
+PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng"
+
+EXTRA_OECONF = "X_CFLAGS=-I${STAGING_INCDIR} --disable-printing"
+
+PACKAGES += "${PN}-bin"
+
+FILES_${PN}-bin = "${bindir}"
+
+do_compile() {
+    (
+        # HACK: build a native binaries need during the build
+        unset CC LD CXX CCLD CFLAGS
+        oe_runmake -C config/util CC="${BUILD_CC}" LD="${BUILD_LD}" CXX="${BUILD_CXX}" LIBS="" makestrs
+    )
+    if [ "$?" != "0" ]; then
+        exit 1
+    fi
+    oe_runmake -C lib
+    oe_runmake -C include
+}
+
+do_install() {
+    oe_runmake DESTDIR=${D} -C lib install
+    oe_runmake DESTDIR=${D} -C include install
+}
+
+LEAD_SONAME = "libXm.so.4"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.15.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.15.0.bb
new file mode 100644
index 0000000..a11b3d8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.15.0.bb
@@ -0,0 +1,45 @@
+SUMMARY = "Smart card library and applications"
+DESCRIPTION = "OpenSC is a tool for accessing smart card devices. Basic\
+functionality (e.g. SELECT FILE, READ BINARY) should work on any ISO\
+7816-4 compatible smart card. Encryption and decryption using private\
+keys on the smart card is possible with PKCS\
+such as the FINEID (Finnish Electronic IDentity) card. Swedish Posten\
+eID cards have also been confirmed to work."
+
+HOMEPAGE = "http://www.opensc-project.org/opensc/"
+SECTION = "System Environment/Libraries"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/o/${BPN}/${BPN}_${PV}.orig.tar.gz"
+
+SRC_URI[md5sum] = "f266024e5a9630821ffa0ac14f72e369"
+SRC_URI[sha256sum] = "8f8f8cf52e0252334e4dfdccca829b876a3de6340deb772aa0bfe0c0cc10eaf5"
+
+S = "${WORKDIR}/OpenSC-${PV}"
+DEPENDS = "openct pcsc-lite virtual/libiconv openssl"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " \
+    --disable-static \
+    --enable-openct \
+    --disable-pcsc \
+    --disable-ctapi \
+    --disable-doc \
+"
+EXTRA_OEMAKE = "DESTDIR=${D}"
+
+RDEPENDS_${PN} = "readline"
+
+FILES_${PN} += "\
+    ${libdir}/opensc-pkcs11.so \
+    ${libdir}/onepin-opensc-pkcs11.so \
+    ${libdir}/pkcs11-spy.so \
+"
+FILES_${PN}-dev += "\
+    ${libdir}/pkcs11/opensc-pkcs11.so \
+    ${libdir}/pkcs11/onepin-opensc-pkcs11.so \
+    ${libdir}/pkcs11/pkcs11-spy.so \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/opensync/libsyncml_0.5.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/opensync/libsyncml_0.5.4.bb
new file mode 100644
index 0000000..ebf65c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/opensync/libsyncml_0.5.4.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Libsyncml is an implementation of the SyncML protocol"
+HOMEPAGE = "https://libsyncml.opensync.org/"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fad9b3332be894bab9bc501572864b29"
+
+DEPENDS = "libxml2 glib-2.0 libsoup-2.4 openobex wbxml2"
+
+# Depends on openobex
+PNBLACKLIST[libsyncml] ?= "${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez5 conflicts with bluez4 and bluez5 is selected in DISTRO_FEATURES', '', d)}"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libsyncml/libsyncml-${PV}.tar.gz"
+SRC_URI[md5sum] = "84879ed7cb94618530fbcb801a1a4f95"
+SRC_URI[sha256sum] = "05d6513637adb1300a3a58b6e29d53ab6373c8f370807d0d925bae72b2920e53"
+
+inherit cmake pkgconfig
+
+PACKAGES += "${PN}-tools"
+
+FILES_${PN}-tools = "${bindir}"
+FILES_${PN} = "${libdir}/*.so.*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/opensync/wbxml2_0.10.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/opensync/wbxml2_0.10.8.bb
new file mode 100644
index 0000000..bd15bba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/opensync/wbxml2_0.10.8.bb
@@ -0,0 +1,23 @@
+SUMMARY = "WBXML parsing and encoding library"
+HOMEPAGE = "http://libwbxml.opensync.org/"
+SECTION = "libs"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c1128ee5341ccd5927d8bafe4b6266e1"
+
+DEPENDS = "expat"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libwbxml/libwbxml-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "f5031e9f730ffd9dc6a2d1ded585e1d1"
+SRC_URI[sha256sum] = "a057daa098f12838eb4e635bb28413027f1b73819872c3fbf64e3207790a3f7d"
+
+S = "${WORKDIR}/libwbxml-${PV}"
+
+inherit cmake pkgconfig
+
+EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib', True).replace('lib', '')}"
+
+PACKAGES += "${PN}-tools"
+
+FILES_${PN}-tools = "${bindir}"
+FILES_${PN} = "${libdir}/*.so.*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/checkserverkey b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/checkserverkey
new file mode 100644
index 0000000..bcfa361
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/checkserverkey
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+if [ ! -f "/etc/openwbem/serverkey.pem" ]; then
+	if [ -f "/etc/ssl/servercerts/servercert.pem" \
+	     -a -f "/etc/ssl/servercerts/serverkey.pem" ]; then
+		echo "Using common server certificate /etc/ssl/servercerts/servercert.pem"
+		ln -s /etc/ssl/servercerts/server{cert,key}.pem /etc/openwbem/
+	else
+		echo "FAILED: Starting OpenWBEM server"
+		echo "There is no ssl server key available for OpenWBEM server to use."
+		echo -e "Please generate one with the following script and start the OpenWBEM service again:\n"
+		echo "##################################"
+		echo "/etc/openwbem/owgencert"
+		echo "================================="
+
+		echo "NOTE: The script uses /dev/random device for generating some random bits while generating the server key."
+		echo "      If this takes too long, you can replace the value of \"RANDFILE\" in /etc/openwsman/ssleay.cnf with /dev/urandom. Please understand the implications"
+		exit 1
+	fi
+fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/loadmof.sh b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/loadmof.sh
new file mode 100644
index 0000000..dd87811
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/loadmof.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+# 
+# options:
+# loadmof.sh <MOF_PATH> <NAMESPACE> <FILES>
+#
+# - or -
+#
+# options:
+# loadmof.sh -n <NAMESPACE> <FILES> [...]
+#
+# The former is preserved for compatibility with Pegasus and 
+# sblim providers.  The latter is preferred.  If $1 is "-n",
+# the latter code path is executed.  Otherwise the former is 
+# executed.
+
+if [ "x$1" != "x-n" -a "x$1" != "x-v" ]; then
+# OLD STYLE
+if [ -f "/etc/init.d/owcimomd" ]; then
+    /etc/init.d/owcimomd status 1>&2 > /dev/null
+    if [ $? = "0" ]; then
+        CIMOM_RUNNING="true"
+    else
+        CIMOM_RUNNING="false"
+    fi
+else
+    exit 1
+fi
+if [ "$YAST_IS_RUNNING" = "instsys" ]; then
+  CIMOM_RUNNING="false"
+fi
+
+CIMOM=$1
+shift
+case "$CIMOM" in
+    pegasus)
+        exit 0
+    ;;
+esac
+MOF_PATH=$1
+shift
+NS=$1
+shift
+
+REPOSITORY="/var/lib/openwbem"
+#tmp_dir=`mktemp -d -p /tmp openwbem.XXXXXX`
+case "$CIMOM_RUNNING" in 
+    true|false)
+    while [ "$#" -gt 0 ]
+    do
+        echo "Loading $MOF_PATH/$1"
+        #sed "s/cmpi:/cmpi::/g" $MOF_PATH/$1 > $tmp_dir/$1
+        /usr/bin/owmofc -c -n  $NS -d $REPOSITORY $MOF_PATH/$1 > /dev/null 2>&1
+        shift
+    done
+    ;;
+esac
+#rm -rf $tmp_dir
+# END OLD STYLE
+
+else
+# NEW STYLE
+if [ "x$3" = "x" ]; then
+    echo "Usage: $0 -n <NAMESPACE> <FILES> [...]"
+    exit 1
+fi
+
+if [ "x$1" = "x-v" ]; then
+  VERBOSE=1
+  shift
+fi
+
+# get rid of "-n" arg
+shift 
+
+NS="$1"
+
+shift 
+
+DBDIR=/var/lib/openwbem
+LOGFILE=$DBDIR/loadmof.log
+CIMOM_INIT=/etc/init.d/owcimomd
+if [ "$YAST_IS_RUNNING" != "instsys" ] ; then
+    $CIMOM_INIT status > /dev/null 2>&1
+    CIMOM_RUNNING=$?
+fi
+if [ "x$CIMOM_RUNNING" = "x0"  ]; then
+  $CIMOM_INIT stop > /dev/null 2>&1
+fi
+bkpdir=$DBDIR/backup-$$
+mkdir $bkpdir
+cp -a $DBDIR/*.{dat,ndx,lock} $bkpdir/
+rm -f $LOGFILE.9
+for i in 8 7 6 5 4 3 2 1 0; do
+  let newI=$i+1
+  if [ -f $LOGFILE.$i ]; then
+    mv $LOGFILE.$i $LOGFILE.$newI
+  fi
+done
+if [ -f $LOGFILE ]; then
+  mv $LOGFILE $LOGFILE.0
+fi
+if [ "x$VERBOSE" = "x1" ]; then
+  /usr/bin/owmofc -c -n $NS -d $DBDIR -s /usr/share/mof/cim-current "$@" 2>&1 | tee $LOGFILE
+else
+  /usr/bin/owmofc -c -n $NS -d $DBDIR -s /usr/share/mof/cim-current "$@" > $LOGFILE 2>&1
+fi
+RVAL=$?
+if [ "x$RVAL" != "x0" ]; then
+  echo "MOF import failed!  Check $LOGFILE for details."
+  mv $bkpdir/* $DBDIR/
+fi
+rm -rf $bkpdir
+if [ "x$CIMOM_RUNNING" = "x0"  ]; then
+  $CIMOM_INIT start > /dev/null 2>&1
+fi
+exit $RVAL
+fi
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/novell-openwbem-root-acl.mof b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/novell-openwbem-root-acl.mof
new file mode 100644
index 0000000..c9970c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/novell-openwbem-root-acl.mof
@@ -0,0 +1,21 @@
+#pragma namespace("root/security")
+
+instance of OpenWBEM_NamespaceACL
+{
+	nspace = "root";
+	capability = "";
+};
+
+instance of OpenWBEM_NamespaceACL
+{
+	nspace = "root/cimv2";
+	capability = "";
+};
+
+instance of OpenWBEM_UserACL
+{
+	nspace = "root/cimv2";
+	username = "root";
+	capability = "rw";
+};
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-etc_pam.d_openwbem b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-etc_pam.d_openwbem
new file mode 100644
index 0000000..b3785aa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-etc_pam.d_openwbem
@@ -0,0 +1,7 @@
+#%PAM-1.0
+auth       required	pam_unix2.so	nullok
+auth       required	pam_nologin.so
+account    required	pam_unix2.so
+password   required	pam_pwcheck.so	nullok
+password   required	pam_unix2.so	nullok use_first_pass use_authtok
+session    required	pam_unix2.so	none
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-owcimomd.init b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-owcimomd.init
new file mode 100644
index 0000000..47fa8a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-owcimomd.init
@@ -0,0 +1,131 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: owcimomd
+# Required-Start: $network
+# Required-Stop: $network
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6 
+# Short-Description: OpenWBEM CIMOM Daemon
+# Description: owcimomd
+#       Start/Stop the OpenWBEM CIMOM Daemon
+### END INIT INFO
+#
+#
+# chkconfig: 2345 36 64
+# description: OpenWBEM CIMOM Daemon
+# processname: owcimomd
+
+NAME=owcimomd
+DAEMON=/usr/sbin/$NAME
+OPTIONS=
+PIDFILE=/var/run/$NAME.pid
+
+if [ $EUID != 0 ]; then
+ echo "This script must be run as root."
+ exit 1;
+fi
+
+if [ "$DESCRIPTIVE" = "" ]; then
+ DESCRIPTIVE="OpenWBEM CIMOM Daemon"
+fi
+
+lockfile=${SVIlock:-/var/lock/subsys/$NAME}
+
+[ -x $DAEMON ] || exit 0
+
+# See how we were called.
+. /etc/init.d/functions
+
+start() {
+    if [ ! -f "/etc/openwbem/serverkey.pem" ]; then
+        if [ -f "/etc/ssl/servercerts/servercert.pem" \
+                -a -f "/etc/ssl/servercerts/serverkey.pem" ]; then
+            echo "Using common server certificate /etc/ssl/servercerts/servercert.pem"
+            ln -s /etc/ssl/servercerts/server{cert,key}.pem /etc/openwbem/
+        else
+            echo "Generating OpenWBEM server public certificate and private key"
+            FQDN=`hostname --fqdn`
+            if [ "x${FQDN}" = "x" ]; then
+                FQDN=localhost.localdomain
+            fi
+cat << EOF | sh /etc/openwbem/owgencert > /dev/null 2>&1
+--
+SomeState
+SomeCity
+SomeOrganization
+SomeOrganizationalUnit
+${FQDN}
+root@${FQDN}
+EOF
+        fi
+    fi
+
+    # Start daemons.
+    echo -n "Starting the $DESCRIPTIVE"
+    daemon $DAEMON $OPTIONS > /dev/null 2>&1 
+    RETVAL=$?
+
+    if [ $RETVAL -eq 0 ]; then
+        touch $lockfile
+        success
+    fi
+
+    echo
+    return $RETVAL
+}
+
+stop() {
+    # Stop daemons.
+    echo -n "Shutting down $DESCRIPTIVE"
+    killproc $DAEMON
+    RETVAL=$?
+
+    if [ $RETVAL -eq 0 ]; then
+        rm -f $lockfile
+        success
+    else
+        failure
+    fi
+    echo
+    return $RETVAL
+}
+
+restart() {
+    stop
+    start
+}
+
+case "$1" in
+    start)
+    start
+    ;;
+
+    stop)
+    stop
+    ;;
+
+    restart|force-reload)
+    restart
+    ;;
+
+    reload)
+    echo -n "Reload service $DESCRIPTIVE"
+    killproc -p $PIDFILE  -HUP $DAEMON
+    RETVAL=$?
+    echo
+    exit $RETVAL
+    ;;
+
+    status)
+    echo -n "Checking for service $DESCRIPTIVE"
+    status $DAEMON
+    RETVAL=$?
+    exit $RETVAL
+    ;;
+
+    *)
+    echo "Usage: $0 {restart|start|stop|reload|force-reload|status}"
+esac
+
+exit $RETVAL
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-rpmlintrc b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-rpmlintrc
new file mode 100644
index 0000000..785e32a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-rpmlintrc
@@ -0,0 +1,2 @@
+addFilter("devel-file-in-non-devel-package .*/lib.*\.so")
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/owcimomd.service b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/owcimomd.service
new file mode 100644
index 0000000..c6694b7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/owcimomd.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Web Based Enterprise Management (WBEM) Implementation
+After=syslog.target
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/owcimomd
+ExecStartPre=/etc/openwbem/checkserverkey
+PIDFile=/var/run/owcimomd.pid
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/rmmof.sh b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/rmmof.sh
new file mode 100644
index 0000000..a495415
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/rmmof.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+# 
+# options:
+# rmmof.sh <MOF_PATH> <NAMESPACE> <FILES>
+#
+# - or -
+#
+# options:
+# loadmof.sh -n <NAMESPACE> <FILES> [...]
+#
+# The former is preserved for compatibility with Pegasus and 
+# sblim providers.  The latter is preferred.  If $1 is "-n",
+# the latter code path is executed.  Otherwise the former is 
+# executed.
+
+if [ "x$3" = "x" ]; then
+    echo "Usage: $0 -n <NAMESPACE> <FILES> [...]"
+    exit 1
+fi
+
+# get rid of "-n" arg
+shift 
+
+NS="$1"
+
+shift 
+
+DBDIR=/var/lib/openwbem
+CIMOM_INIT=/etc/init.d/owcimomd
+if [ "$YAST_IS_RUNNING" != "instsys" ] ; then
+    $CIMOM_INIT status
+    CIMOM_RUNNING=$?
+fi
+if [ "x$CIMOM_RUNNING" = "x0"  ]; then
+  $CIMOM_INIT stop
+fi
+bkpdir=/tmp/owrep.bkp-$$
+mkdir $bkpdir
+cp -a $DBDIR $bkpdir/
+echo "Compiling MOF files"
+/usr/bin/owmofc -r -n $NS -d $DBDIR "$@" > /dev/null 2>&1
+RVAL=$?
+if [ "x$RVAL" != "x0" ]; then
+  echo "MOF import failed!"
+  rm -rf $DBDIR
+  mv $bkpdir/openwbem $DBDIR
+fi
+rm -rf $bkpdir
+if [ "x$CIMOM_RUNNING" = "x0"  ]; then
+  $CIMOM_INIT start
+fi
+exit $RVAL
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem_3.2.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem_3.2.3.bb
new file mode 100644
index 0000000..ed8ef26
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem_3.2.3.bb
@@ -0,0 +1,112 @@
+SUMMARY = "Web Based Enterprise Management (WBEM) Implementation"
+DESCRIPTION = "OpenWBEM is a set of software components that help facilitate \
+deployment of the Common Information Model (CIM) and Web-Based \
+Enterprise Management (WBEM) technologies of the Distributed Management \
+Task Force (DMTF). \
+ \
+Web-Based Enterprise Management (WBEM) is a set of management and \
+Internet standard technologies developed to unify the management of \
+distributed computing environments. WBEM provides the ability for the \
+industry to deliver a well-integrated set of standards-based management \
+tools, facilitating the exchange of data across otherwise disparate \
+technologies and platforms. \
+ \
+For more information about DMTF and its technologies, visit \
+http://www.dmtf.org/standards. "
+SECTION = "System/Management"
+HOMEPAGE = "http://openwbem.sourceforge.net/"
+
+inherit autotools-brokensep pkgconfig
+
+SOURCE1="novell-openwbem-root-acl.mof"
+SOURCE2="loadmof.sh"
+SOURCE3="rmmof.sh"
+SOURCE4="openwbem-owcimomd.init"
+SOURCE5="openwbem-etc_pam.d_openwbem"
+SOURCE6="openwbem-rpmlintrc"
+
+SRC_URI = " \
+   git://github.com/kkaempf/openwbem.git \
+   file://${SOURCE1} \
+   file://${SOURCE2} \
+   file://${SOURCE3} \
+   file://${SOURCE4} \
+   file://${SOURCE5} \
+   file://${SOURCE6} \
+   file://checkserverkey \
+   file://owcimomd.service \
+"
+SRCREV = "5c688eefc1f8e35a4b1c58529aae5f114c25c2a8"
+S = "${WORKDIR}/git"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM += "file://COPYING;md5=0504a2eb85e01aa92c9efd4125a34660"
+INSANE_SKIP_${PN} = "dev-so"
+DEPENDS += "openssl libpam bash"
+RDEPENDS_${PN} += "bash"
+EXTRA_OECONF = " \
+    --prefix=/usr \
+    --sysconfdir=/etc \
+    --libdir=${libdir} \
+    --localstatedir=/var/lib \
+    --libexecdir=${libdir}/openwbem/bin \
+    --mandir=/usr/share/man \
+    --enable-threads-run-as-user \
+"
+do_configure_prepend() {
+    autoreconf --force --install
+}
+
+do_install() {
+    oe_runmake DESTDIR=${D} install
+    install -d ${D}/etc/openwbem/openwbem.conf.d
+    install -d ${D}/var/adm/fillup-templates
+    install -m 644 etc/sysconfig/daemons/owcimomd ${D}/var/adm/fillup-templates/sysconfig.owcimomd
+    
+    # fix up hardcoded paths
+    sed -i -e 's,/usr/sbin/,${sbindir}/,' ${WORKDIR}/owcimomd.service
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}/${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/owcimomd.service ${D}/${systemd_unitdir}/system
+        install -m 755 ${WORKDIR}/checkserverkey ${D}${sysconfdir}/openwbem/
+    fi
+
+    install -d ${D}/etc/init.d
+    ln -sf ../../etc/init.d/owcimomd ${D}/usr/sbin/rcowcimomd
+    install -m 755 ${WORKDIR}/${SOURCE4} ${D}/etc/init.d/owcimomd
+    install -d ${D}${sbindir}
+    install -d ${D}/usr/bin
+    install -d ${D}/etc/pam.d
+    install -d ${D}/${libdir}/openwbem/cmpiproviders
+    install -m 644 etc/pam.d/openwbem ${D}/etc/pam.d
+    install -d ${D}/${libdir}/openwbem/c++providers
+    install -d ${D}/var/lib/openwbem
+    install -m 755 ${WORKDIR}/${SOURCE2} ${D}/usr/bin/ow-loadmof.sh
+    install -m 755 ${WORKDIR}/${SOURCE3} ${D}/usr/bin/ow-rmmof.sh
+    install -m 644 ${WORKDIR}/${SOURCE5} ${D}/etc/pam.d/openwbem
+
+    MOFPATH=${D}/usr/share/mof/openwbem
+    install -d $MOFPATH
+    mv ${D}/usr/share/openwbem/* $MOFPATH/
+    rmdir ${D}/usr/share/openwbem
+    install -m 644 ${WORKDIR}/${SOURCE1} $MOFPATH/
+
+    touch ${D}/var/lib/openwbem/{classassociation,instances,instassociation,namespaces,schema}.{dat,ndx,lock}
+}
+
+inherit ${@bb.utils.contains('VIRTUAL-RUNTIME_init_manager','systemd','systemd','', d)}
+SYSTEMD_SERVICE_${PN} = "owcimomd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+FILES_${PN} += " \
+    ${libdir} \
+    ${datadir}/mof \
+    ${systemd_unitdir} \
+"
+FILES_${PN}-dbg += " \
+    ${libdir}/openwbem/c++providers/.debug \
+    ${libdir}/openwbem/provifcs/.debug \
+    ${libdir}/openwbem/bin/openwbem/.debug \
+"
+FILES_${PN}-dev = " \
+    ${includedir} \
+    ${datadir}/aclocal/openwbem.m4 \
+"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd/fix-var-lock.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd/fix-var-lock.patch
new file mode 100644
index 0000000..aa84e18
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd/fix-var-lock.patch
@@ -0,0 +1,30 @@
+Use /var/lock instead of /var/lock/subsys
+
+Upstream-Status: Inappropriate [configuration]
+
+Index: p910nd/p910nd.8
+===================================================================
+--- p910nd.orig/p910nd.8	2011-11-14 22:41:41.904615879 +0100
++++ p910nd/p910nd.8	2011-11-14 22:49:52.299047607 +0100
+@@ -83,7 +83,7 @@
+ .SH "SEE ALSO"
+ printcap(5), hosts_access(5)
+ .SH FILES
+-/var/run/p9100d.pid, /var/lock/subsys/p9100d, /etc/hosts.allow, /etc/hosts.deny
++/var/run/p9100d.pid, /var/lock/p9100d, /etc/hosts.allow, /etc/hosts.deny
+ .SH COPYRIGHT
+ .I p910nd
+ is under the GNU Public License Version 2
+Index: p910nd/p910nd.c
+===================================================================
+--- p910nd.orig/p910nd.c	2011-11-14 22:47:41.986401420 +0100
++++ p910nd/p910nd.c	2011-11-14 22:49:27.274923524 +0100
+@@ -122,7 +122,7 @@
+ #ifdef		LOCKFILE_DIR
+ #define		LOCKFILE	LOCKFILE_DIR "/p910%cd"
+ #else
+-#define		LOCKFILE	"/var/lock/subsys/p910%cd"
++#define		LOCKFILE	"/var/lock/p910%cd"
+ #endif
+ #ifndef		PRINTERFILE
+ #define         PRINTERFILE     "/dev/lp%c"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.95.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.95.bb
new file mode 100644
index 0000000..5ebbb29
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.95.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "A small network printer daemon for embedded situations that passes the job directly to the printer"
+HOMEPAGE = "http://p910nd.sourceforge.net/"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+
+PR = "r2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/p910nd/p910nd-${PV}.tar.bz2 \
+           file://fix-var-lock.patch"
+
+SRC_URI[md5sum] = "c7ac6afdf7730ac8387a8e87198d4491"
+SRC_URI[sha256sum] = "7d78642c86dc247fbdef1ff85c56629dcdc6b2a457c786420299e284fffcb029"
+
+do_compile () {
+    ${CC} ${LDFLAGS} -o p910nd p910nd.c
+}
+
+do_install () {
+    install -D -m 0755 ${S}/p910nd ${D}${sbindir}/p910nd
+    install -D -m 0644 ${S}/p910nd.conf ${D}${sysconfdir}/p910nd.conf
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pam-passwdqc/files/1000patch-219201.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pam-passwdqc/files/1000patch-219201.patch
new file mode 100644
index 0000000..366d461
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pam-passwdqc/files/1000patch-219201.patch
@@ -0,0 +1,156 @@
+diff -urNp pam_passwdqc-1.0.5-orig/pam_passwdqc.c pam_passwdqc-1.0.5/pam_passwdqc.c
+--- pam_passwdqc-1.0.5-orig/pam_passwdqc.c	2008-02-12 15:11:13.000000000 -0500
++++ pam_passwdqc-1.0.5/pam_passwdqc.c	2009-09-28 12:10:32.171696694 -0400
+@@ -70,6 +70,8 @@ typedef struct {
+ 	passwdqc_params_t qc;
+ 	int flags;
+ 	int retry;
++	char oldpass_prompt_file[FILE_LEN+1];
++	char newpass_prompt_file[FILE_LEN+1];
+ } params_t;
+ 
+ static params_t defaults = {
+@@ -79,10 +81,13 @@ static params_t defaults = {
+ 		3,				/* passphrase_words */
+ 		4,				/* match_length */
+ 		1,				/* similar_deny */
+-		42				/* random_bits */
++		42,				/* random_bits */
++		1				/* firstupper_lastdigit_check */
+ 	},
+ 	F_ENFORCE_EVERYONE,			/* flags */
+-	3					/* retry */
++	3,					/* retry */
++	"",					/* oldpass_prompt_file */
++	""					/* newpass_prompt_file */
+ };
+ 
+ #define PROMPT_OLDPASS \
+@@ -361,6 +366,37 @@ static int parse(params_t *params, pam_h
+ 		if (!strcmp(*argv, "use_authtok")) {
+ 			params->flags |= F_USE_AUTHTOK;
+ 		} else
++		if (!strcmp(*argv, "disable_firstupper_lastdigit_check")) {
++			params->qc.firstupper_lastdigit_check = 0;
++		} else
++		if (!strncmp(*argv, "oldpass_prompt_file=", 20)) {
++			int n;
++			FILE *fp = fopen(*argv + 20, "r");
++			if (fp) {
++				n=fread(params->oldpass_prompt_file, sizeof(char), FILE_LEN, fp);
++				if (0==n || ferror(fp)!=0 ) {
++					memset(params->oldpass_prompt_file, '\0', FILE_LEN+1);
++				}
++				else {
++					feof(fp)? (params->oldpass_prompt_file[n-1]='\0'): (params->oldpass_prompt_file[n]='\0');
++				}
++				fclose(fp);
++			}
++		} else
++		if (!strncmp(*argv, "newpass_prompt_file=", 20)) {
++			int n;
++			FILE *fp = fopen(*argv + 20, "r");
++			if (fp) {
++				n=fread(params->newpass_prompt_file, sizeof(char), FILE_LEN, fp);
++				if (0==n || ferror(fp)!=0 ) {
++					memset(params->newpass_prompt_file, '\0', FILE_LEN+1);
++				}
++				else {
++                                        feof(fp)? (params->newpass_prompt_file[n-1]='\0'): (params->newpass_prompt_file[n]='\0');
++				}
++				fclose(fp);
++			}
++		} else
+ 			break;
+ 		argc--; argv++;
+ 	}
+@@ -406,7 +442,7 @@ PAM_EXTERN int pam_sm_chauthtok(pam_hand
+ 
+ 	if (ask_oldauthtok && !am_root(pamh)) {
+ 		status = converse(pamh, PAM_PROMPT_ECHO_OFF,
+-		    PROMPT_OLDPASS, &resp);
++		    strlen(params.oldpass_prompt_file) ? params.oldpass_prompt_file : PROMPT_OLDPASS, &resp);
+ 
+ 		if (status == PAM_SUCCESS) {
+ 			if (resp && resp->resp) {
+@@ -540,8 +576,7 @@ retry:
+ 		    MESSAGE_RANDOMFAILED : MESSAGE_MISCONFIGURED);
+ 		return PAM_AUTHTOK_ERR;
+ 	}
+-
+-	status = converse(pamh, PAM_PROMPT_ECHO_OFF, PROMPT_NEWPASS1, &resp);
++	status = converse(pamh, PAM_PROMPT_ECHO_OFF, strlen(params.newpass_prompt_file) ? params.newpass_prompt_file : PROMPT_NEWPASS1, &resp);
+ 	if (status == PAM_SUCCESS && (!resp || !resp->resp))
+ 		status = PAM_AUTHTOK_ERR;
+ 
+diff -urNp pam_passwdqc-1.0.5-orig/passwdqc_check.c pam_passwdqc-1.0.5/passwdqc_check.c
+--- pam_passwdqc-1.0.5-orig/passwdqc_check.c	2008-02-12 14:31:52.000000000 -0500
++++ pam_passwdqc-1.0.5/passwdqc_check.c	2009-09-25 22:45:16.080842425 -0400
+@@ -90,10 +90,12 @@ static int is_simple(passwdqc_params_t *
+ 
+ /* Upper case characters and digits used in common ways don't increase the
+  * strength of a password */
+-	c = (unsigned char)newpass[0];
+-	if (uppers && isascii(c) && isupper(c)) uppers--;
+-	c = (unsigned char)newpass[length - 1];
+-	if (digits && isascii(c) && isdigit(c)) digits--;
++	if (params->firstupper_lastdigit_check) {
++		c = (unsigned char)newpass[0];
++		if (uppers && isascii(c) && isupper(c)) uppers--;
++		c = (unsigned char)newpass[length - 1];
++		if (digits && isascii(c) && isdigit(c)) digits--;
++	}
+ 
+ /* Count the number of different character classes we've seen.  We assume
+  * that there are no non-ASCII characters for digits. */
+diff -urNp pam_passwdqc-1.0.5-orig/passwdqc.h pam_passwdqc-1.0.5/passwdqc.h
+--- pam_passwdqc-1.0.5-orig/passwdqc.h	2008-02-12 14:30:00.000000000 -0500
++++ pam_passwdqc-1.0.5/passwdqc.h	2009-09-25 14:08:56.214695858 -0400
+@@ -7,12 +7,15 @@
+ 
+ #include <pwd.h>
+ 
++#define FILE_LEN		4096	/* Max file len = 4096 */
++
+ typedef struct {
+ 	int min[5], max;
+ 	int passphrase_words;
+ 	int match_length;
+ 	int similar_deny;
+ 	int random_bits;
++	int firstupper_lastdigit_check;
+ } passwdqc_params_t;
+ 
+ extern char _passwdqc_wordset_4k[0x1000][6];
+diff -urNp pam_passwdqc-1.0.5-orig/README pam_passwdqc-1.0.5/README
+--- pam_passwdqc-1.0.5-orig/README	2008-02-12 14:43:33.000000000 -0500
++++ pam_passwdqc-1.0.5/README	2009-09-28 12:12:40.251016423 -0400
+@@ -41,9 +41,12 @@ words (see the "passphrase" option below
+ N3 and N4 are used for passwords consisting of characters from three
+ and four character classes, respectively.
+ 
++	disable_firstupper_lastdigit_check	[]
++
+ When calculating the number of character classes, upper-case letters
+ used as the first character and digits used as the last character of a
+-password are not counted.
++password are not counted. To disable this, you can specify 
++"disable_firstupper_lastdigit_check".
+ 
+ In addition to being sufficiently long, passwords are required to
+ contain enough different characters for the character classes and
+@@ -142,6 +145,14 @@ This disables user interaction within pa
+ the only difference between "use_first_pass" and "use_authtok" is that
+ the former is incompatible with "ask_oldauthtok".
+ 
++	oldpass_prompt_file=absolute-file-path	[]
++	newpass_prompt_file=abosulte-file-path	[]
++
++The options "oldpass_prompt_file" and "newpass_prompt_file" can be used
++to override prompts while requesting old password and new password, 
++respectively. The maximum size of the prompt files can be 4096 
++characters at present. If the file size is more than 4096 characters, the
++output will be truncated to 4096 characters.
+ -- 
+ Solar Designer <solar at openwall.com>
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pam-passwdqc/files/7000Makefile-fix-CC.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pam-passwdqc/files/7000Makefile-fix-CC.patch
new file mode 100644
index 0000000..536fba1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pam-passwdqc/files/7000Makefile-fix-CC.patch
@@ -0,0 +1,11 @@
+--- pam_passwdqc-1.0.5/Makefile.orig	2012-10-02 20:53:55.443592886 +0900
++++ pam_passwdqc-1.0.5/Makefile	2012-10-02 20:54:19.076108001 +0900
+@@ -2,7 +2,7 @@
+ # Copyright (c) 2000-2003,2005 by Solar Designer.  See LICENSE.
+ #
+ 
+-CC = gcc
++#CC = gcc
+ LD = $(CC)
+ RM = rm -f
+ MKDIR = mkdir -p
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pam-passwdqc/pam-passwdqc_1.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/pam-passwdqc/pam-passwdqc_1.0.5.bb
new file mode 100644
index 0000000..4e8b7d8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pam-passwdqc/pam-passwdqc_1.0.5.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Pluggable password quality-control module."
+DESCRIPTION = "pam_passwdqc is a simple password strength checking module for \
+PAM-aware password changing programs, such as passwd(1). In addition \
+to checking regular passwords, it offers support for passphrases and \
+can provide randomly generated passwords. All features are optional \
+and can be (re-)configured without rebuilding."
+
+HOMEPAGE = "http://www.openwall.com/passwdqc/"
+SECTION = "System Environment/Base"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e284d013ef08e66d4737f446c5890550"
+
+SRC_URI = "http://www.openwall.com/pam/modules/pam_passwdqc/pam_passwdqc-1.0.5.tar.gz \
+           file://1000patch-219201.patch \
+           file://7000Makefile-fix-CC.patch \
+          "
+SRC_URI[md5sum] = "cd9c014f736158b1a60384a8e2bdc28a"
+SRC_URI[sha256sum] = "32528ddf7d8219c788b6e7702361611ff16c6340b6dc0f418ff164aadc4a4a88"
+
+
+S = "${WORKDIR}/pam_passwdqc-${PV}"
+
+DEPENDS = "libpam"
+
+EXTRA_OEMAKE = "CFLAGS="${CFLAGS} -Wall -fPIC -DHAVE_SHADOW" \
+                SECUREDIR=${base_libdir}/security"
+
+do_install() {
+	oe_runmake install DESTDIR=${D}
+}
+
+FILES_${PN} += "${base_libdir}/security/pam_passwdqc.so"
+FILES_${PN}-dbg += "${base_libdir}/security/.debug"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.13.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.13.bb
new file mode 100644
index 0000000..cc72549
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.13.bb
@@ -0,0 +1,33 @@
+SUMMARY = "PC/SC Lite smart card framework and applications"
+HOMEPAGE = "http://pcsclite.alioth.debian.org/"
+LICENSE = "BSD & GPLv3+"
+LICENSE_${PN}-dev = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bcfbd85230ac3c586fb294c8b627cf32"
+DEPENDS = "udev"
+
+SRC_URI = "https://alioth.debian.org/frs/download.php/file/4126/pcsc-lite-${PV}.tar.bz2"
+SRC_URI[md5sum] = "4dcd22d20a6df8810fac5480cc320b6d"
+SRC_URI[sha256sum] = "f315047e808d63a3262c4a040f77548af2e04d1fd707e0c2759369b926fbbc3b"
+
+
+inherit autotools systemd pkgconfig
+
+EXTRA_OECONF = " \
+    --disable-libusb \
+    --enable-libudev \
+    --enable-usbdropdir=${libdir}/pcsc/drivers \
+"
+
+S = "${WORKDIR}/pcsc-lite-${PV}"
+
+PACKAGES =+ "${PN}-lib"
+
+RRECOMMENDS_${PN} = "ccid"
+
+FILES_${PN}-lib = "${libdir}/lib*${SOLIBS}"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "pcscd.socket"
+RDEPENDS_${PN} +="python"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/picocom/picocom_1.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/picocom/picocom_1.7.bb
new file mode 100644
index 0000000..dbee656
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/picocom/picocom_1.7.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Lightweight and minimal (~20K) dumb-terminal emulation program"
+SECTION = "console/utils"
+LICENSE = "GPLv2+"
+HOMEPAGE = "http://code.google.com/p/picocom/"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=393a5ca445f6965873eca0259a17f833"
+
+SRC_URI = "http://picocom.googlecode.com/files/picocom-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "8eaba1d31407e8408674d6e57af447ef"
+SRC_URI[sha256sum] = "d0f31c8f7a215a76922d30c81a52b9a2348c89e02a84935517002b3bc2c1129e"
+
+CPPFLAGS_append = '-DVERSION_STR=\\"${PV}\\" -DUUCP_LOCK_DIR=\\"/var/lock\\" -DHIGH_BAUD'
+
+do_install () {
+    install -d ${D}${bindir}
+    install -m 0755 ${BPN} pcasc pcxm pcym pczm ${D}${bindir}/
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/libotr/fix_qa-issue_include.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/libotr/fix_qa-issue_include.patch
new file mode 100644
index 0000000..b786633
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/libotr/fix_qa-issue_include.patch
@@ -0,0 +1,18 @@
+libotr: Fix QA-issue where also files from buildhost would be included
+
+Warning was:
+cc1: warning: include location "/usr/include" is unsafe for
+cross-compilation [-Wpoison-system-directories]
+
+Upstream-Status: Pending
+
+Signed-off-by: Jakob Drexel <jake42@rommel.stw.uni-erlangen.de>
+
+--- a/toolkit/Makefile.am	2012-05-03 15:52:22.000000000 +0200
++++ b/toolkit/Makefile.am	2014-01-13 12:12:26.030369357 +0100
+@@ -1,4 +1,4 @@
+-INCLUDES = -I$(includedir) -I../src @LIBGCRYPT_CFLAGS@
++INCLUDES = -I../src @LIBGCRYPT_CFLAGS@
+ 
+ noinst_HEADERS = aes.h ctrmode.h parse.h sesskeys.h readotr.h sha1hmac.h
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/libotr/sepbuild.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/libotr/sepbuild.patch
new file mode 100644
index 0000000..f66e528
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/libotr/sepbuild.patch
@@ -0,0 +1,16 @@
+Fix builds with ${B} != ${S}
+
+Upstream-Status: Pending
+
+RP 2014/7/17
+
+Index: libotr-4.0.0/toolkit/Makefile.am
+===================================================================
+--- libotr-4.0.0.orig/toolkit/Makefile.am	2014-07-16 18:09:59.777858022 +0000
++++ libotr-4.0.0/toolkit/Makefile.am	2014-07-17 06:28:51.359066155 +0000
+@@ -1,4 +1,4 @@
+-INCLUDES = -I../src @LIBGCRYPT_CFLAGS@
++INCLUDES = -I$(top_srcdir)/src @LIBGCRYPT_CFLAGS@
+ 
+ noinst_HEADERS = aes.h ctrmode.h parse.h sesskeys.h readotr.h sha1hmac.h
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/libotr_4.0.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/libotr_4.0.0.bb
new file mode 100644
index 0000000..dd9eeab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/libotr_4.0.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "(OTR) Messaging allows you to have private conversations over instant messaging"
+HOMEPAGE = "http://www.cypherpunks.ca/otr/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=92fe174bad6da3763f6e9e9eaff6df24"
+DEPENDS = "libgcrypt libgpg-error"
+
+SRC_URI = "http://www.cypherpunks.ca/otr/${BP}.tar.gz \
+           file://fix_qa-issue_include.patch \
+           file://sepbuild.patch \
+"
+
+SRC_URI[md5sum] = "00979dca82d70383fcd1b01f3974363c"
+SRC_URI[sha256sum] = "3f911994409898e74527730745ef35ed75c352c695a1822a677a34b2cf0293b4"
+
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr/ignore_extra-portability_warnings.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr/ignore_extra-portability_warnings.patch
new file mode 100644
index 0000000..db0ad87
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr/ignore_extra-portability_warnings.patch
@@ -0,0 +1,19 @@
+pidgin-otr: Silence no-extra-portability warnings
+
+Make it build with OE, was not building with warning turned on
+
+Upstream-Status: Pending
+
+Signed-off-by: Jakob Drexel <jake42@rommel.stw.uni-erlangen.de>
+
+--- a/configure.ac	2012-09-01 17:03:19.000000000 +0200
++++ b/configure.ac	2014-01-12 21:59:24.920300215 +0100
+@@ -4,7 +4,7 @@
+ 
+ AM_CONFIG_HEADER(config.h)
+ 
+-AM_INIT_AUTOMAKE([-Wall -Werror])
++AM_INIT_AUTOMAKE([-Wall -Werror -Wno-extra-portability])
+ 
+ AC_PROG_CC
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.0.bb
new file mode 100644
index 0000000..b884b5a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "(OTR) Messaging allows you to have private conversations over instant messaging"
+HOMEPAGE = "http://www.cypherpunks.ca/otr/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=92fe174bad6da3763f6e9e9eaff6df24"
+DEPENDS = "libgcrypt libotr pidgin intltool-native"
+
+PNBLACKLIST[pidgin-otr] ?= "depends on blacklisted pidgin"
+
+SRC_URI = "http://www.cypherpunks.ca/otr/${BP}.tar.gz \
+           file://ignore_extra-portability_warnings.patch \
+"
+
+SRC_URI[md5sum] = "eadb953376acc474e56041d4c12aa2c8"
+SRC_URI[sha256sum] = "d56b3f092dbe9ee6597641c7d2dd294884dc04ba47aaf4ec571cd54977df4691"
+
+
+FILES_${PN} = "${libdir}/pidgin/*"
+FILES_${PN}-dbg = "${libdir}/pidgin/.debug"
+FILES_${PN}-dbg += "${libdir}/pidgin/.debug/pidgin-otr.so"
+FILES_${PN}-dbg += "/usr/src/debug/pidgin-otr/${PV}-${PR}/${P}/*"
+inherit autotools pkgconfig
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/pidgin-cross-python-265.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/pidgin-cross-python-265.patch
new file mode 100644
index 0000000..72bf4ed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/pidgin-cross-python-265.patch
@@ -0,0 +1,34 @@
+Use pkg-config instead of ${PYTHON}-config to find python
+
+diff -uNr pidgin-2.10.12.orig/configure.ac pidgin-2.10.12/configure.ac
+--- pidgin-2.10.12.orig/configure.ac	2016-01-01 00:19:40.000000000 +0100
++++ pidgin-2.10.12/configure.ac	2016-05-05 16:55:13.258945925 +0200
+@@ -1585,20 +1585,15 @@
+ dnl Check for Python headers (currently useful only for libgnt)
+ dnl (Thanks to XChat)
+ if test "x$enable_consoleui" = "xyes" -a ! -z "$PYTHON" -a x"$PYTHON" != x"no" ; then
+-	AC_MSG_CHECKING(for Python compile flags)
+-	if test -f ${PYTHON}-config; then
+-		PY_CFLAGS=`${PYTHON}-config --includes`
+-		PY_LIBS=`${PYTHON}-config --libs`
+-		AC_DEFINE(USE_PYTHON, [1], [Define if python headers are available.])
+-		AC_MSG_RESULT(ok)
+-	else
+-		AC_MSG_RESULT([Cannot find ${PYTHON}-config])
+-		PY_CFLAGS=""
+-		PY_LIBS=""
+-	fi
++        AC_MSG_CHECKING(for Python compile flags)
++        PKG_CHECK_MODULES(PY, python, [
++                AC_SUBST(PY_CFLAGS)
++                AC_SUBST(PY_LIBS)
++        ], [
++                AC_MSG_RESULT(no)
++                AC_MSG_ERROR([Can't find python])
++        ])
+ fi
+-AC_SUBST(PY_CFLAGS)
+-AC_SUBST(PY_LIBS)
+ 
+ dnl #######################################################################
+ dnl # Check for Mono support
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/purple-OE-branding-25.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/purple-OE-branding-25.patch
new file mode 100644
index 0000000..293ef70
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/purple-OE-branding-25.patch
@@ -0,0 +1,16 @@
+Index: pidgin-2.5.0/libpurple/protocols/irc/irc.h
+===================================================================
+--- pidgin-2.5.0.orig/libpurple/protocols/irc/irc.h	2008-08-19 01:53:38.000000000 +0000
++++ pidgin-2.5.0/libpurple/protocols/irc/irc.h	2008-08-27 11:15:58.000000000 +0000
+@@ -36,9 +36,9 @@
+ 
+ #define IRC_DEFAULT_CHARSET "UTF-8"
+ #define IRC_DEFAULT_AUTODETECT FALSE
+-#define IRC_DEFAULT_ALIAS "purple"
++#define IRC_DEFAULT_ALIAS "OE-user"
+ 
+-#define IRC_DEFAULT_QUIT "Leaving."
++#define IRC_DEFAULT_QUIT "Powered by OE: www.openembedded.org"
+ 
+ #define IRC_INITIAL_BUFSIZE 1024
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/sanitize-configure.ac.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/sanitize-configure.ac.patch
new file mode 100644
index 0000000..a77d64f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/sanitize-configure.ac.patch
@@ -0,0 +1,33 @@
+--- /tmp/configure.ac	2007-05-08 17:29:02.000000000 +0200
++++ pidgin-2.0.0/configure.ac	2007-05-08 17:30:30.325251000 +0200
+@@ -472,7 +472,7 @@
+ 	if test "x$enable_consoleui" = "xyes"; then
+ 		dnl # Some distros put the headers in ncursesw/, some don't
+ 		found_ncurses_h=no
+-		for location in $ac_ncurses_includes $NCURSES_HEADERS /usr/include/ncursesw /usr/include
++		for location in $ac_ncurses_includes $NCURSES_HEADERS 
+ 		do
+ 			f="$location/ncurses.h"
+ 			AC_CHECK_HEADER($f,[
+@@ -1860,10 +1860,6 @@
+ 			KRB4_CFLAGS="$KRB4_CFLAGS -I${kerberos}/include/kerberosIV"
+ 		fi
+ 		KRB4_LDFLAGS="-L${kerberos}/lib"
+-	elif test -d /usr/local/include/kerberosIV ; then
+-		KRB4_CFLAGS="-I/usr/local/include/kerberosIV"
+-	elif test -d /usr/include/kerberosIV ; then
+-		KRB4_CFLAGS="-I/usr/include/kerberosIV"
+ 	fi
+ 	AC_DEFINE(ZEPHYR_USES_KERBEROS, 1, [Define if kerberos should be used in Zephyr.])
+ 
+@@ -1896,10 +1892,6 @@
+ 		ZEPHYR_LDFLAGS="-L${zephyr}/lib"
+ 	elif test -d /usr/athena/include/zephyr ; then
+ 		ZEPHYR_CFLAGS="-I/usr/athena/include"
+-	elif test -d /usr/include/zephyr ; then
+-		ZEPHYR_CFLAGS="-I/usr/include"
+-	elif test -d /usr/local/include/zephyr ; then
+-		ZEPHYR_CFLAGS="-I/usr/local/include"
+ 	fi
+ 	AC_DEFINE(LIBZEPHYR_EXT, 1 , [Define if external libzephyr should be used.])
+ 	AM_CONDITIONAL(EXTERNAL_LIBZEPHYR, test "x$zephyr" != "xno")
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.10.12.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.10.12.bb
new file mode 100644
index 0000000..cd46140
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.10.12.bb
@@ -0,0 +1,120 @@
+DESCRIPTION = "multi-protocol instant messaging client"
+SECTION = "x11/network"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+DEPENDS = "python virtual/libintl intltool-native libxml2 gconf"
+
+inherit autotools gettext pkgconfig gconf perlnative
+
+SRC_URI = "\
+    ${SOURCEFORGE_MIRROR}/pidgin/pidgin-${PV}.tar.bz2 \
+    file://sanitize-configure.ac.patch \
+    file://purple-OE-branding-25.patch \
+    file://pidgin-cross-python-265.patch \
+"
+
+SRC_URI[md5sum] = "14e0f5cfb2ed065e4dc80391a806ac76"
+SRC_URI[sha256sum] = "2c7523f0fefe89749c03b2b738ab9f7bd186da435be4762f1487eee31e77ffdd"
+
+PACKAGECONFIG ??= "gnutls consoleui avahi dbus idn \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 gtk startup-notification', '', d)} \
+"
+PACKAGECONFIG[farsight2] = "--enable-farstream,--disable-farstream,farsight2"
+#  --disable-gstreamer     compile without GStreamer audio support
+#  --disable-gstreamer-video
+#                          compile without GStreamer 1.0 Video Overlay support
+#  --disable-gstreamer-interfaces
+#                          compile without GStreamer 0.10 interface support
+#  --with-gstreamer=<version>
+#                          compile with GStreamer 0.10 or 1.0 interface
+PACKAGECONFIG[gstreamer] = "--enable-gstreamer,--disable-gstreamer,gstreamer"
+PACKAGECONFIG[vv] = "--enable-vv,--disable-vv,gstreamer"
+PACKAGECONFIG[idn] = "--enable-idn,--disable-idn,libidn"
+PACKAGECONFIG[gtk] = "--enable-gtkui,--disable-gtkui,gtk+"
+PACKAGECONFIG[x11] = "--with-x=yes --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR},--with-x=no,virtual/libx11"
+PACKAGECONFIG[startup-notification] = "--enable-startup-notification,--disable-startup-notification,startup-notification"
+PACKAGECONFIG[consoleui] = "--enable-consoleui --with-ncurses-headers=${STAGING_INCDIR},--disable-consoleui,ncurses"
+PACKAGECONFIG[gnutls] = "--enable-gnutls --with-gnutls-includes=${STAGING_INCDIR} --with-gnutls-libs=${STAGING_LIBDIR},--disable-gnutls,gnutls"
+PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus dbus-glib"
+PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi"
+
+EXTRA_OECONF = " \
+    --disable-perl \
+    --disable-tcl \
+    --disable-gevolution \
+    --disable-schemas-install \
+    --disable-gtkspell \
+    --disable-meanwhile \
+    --disable-nm \
+    --disable-screensaver \
+    --enable-nss=no \
+"
+
+do_configure_prepend() {
+    touch ${S}/po/Makefile
+    sed -i "s#PY_VERSION=`$PYTHON -c 'import sys ; print sys.version[0:3]'`#PY_VERSION=${PYTHON_BASEVERSION}#g" ${S}/configure.ac
+}
+
+OE_LT_RPATH_ALLOW=":${libdir}/purple-2:"
+OE_LT_RPATH_ALLOW[export]="1"
+
+PACKAGES =+ "libpurple-dbg libpurple-dev libpurple libgnt-dbg libgnt libgnt-dev finch-dbg finch finch-dev ${PN}-data"
+
+LEAD_SONAME = "libpurple.so.0"
+FILES_libpurple     = "${libdir}/libpurple*.so.* ${libdir}/purple-2 ${bindir}/purple-* ${sysconfdir}/gconf/schemas/purple* ${datadir}/purple/ca-certs"
+FILES_libpurple-dev = "${libdir}/libpurple*.la \
+                       ${libdir}/libpurple*.so \
+                       ${libdir}/purple-2/*.la \
+                       ${libdir}/purple-2/libjabber.so \
+                       ${libdir}/purple-2/liboscar.so \
+                       ${libdir}/purple-2/libymsg.so \
+                       ${datadir}/aclocal"
+FILES_libpurple-dbg += "${libdir}/.debug/libpurple* \
+                        ${libdir}/purple-2/.debug"
+FILES_libgnt         = "${libdir}/libgnt.so.* ${libdir}/gnt/*.so" 
+FILES_libgnt-dev     = "${libdir}/gnt/*.la" 
+FILES_libgnt-dbg     = "${libdir}/gnt/.debug"
+FILES_finch          = "${bindir}/finch"
+FILES_finch-dev      = "${libdir}/finch/*.la"
+FILES_finch-dbg      = "${bindir}/.debug/finch \
+                        ${libdir}/finch/.debug"
+
+FILES_${PN} = "${bindir} ${datadir}/${PN} ${libdir}/${PN}/*.so \
+           ${datadir}/applications"
+RRECOMMENDS_${PN} = "${PN}-data libpurple-plugin-ssl-gnutls libpurple-protocol-irc libpurple-protocol-xmpp"
+
+FILES_${PN}-data = "${datadir}/pixmaps ${datadir}/sounds ${datadir}/icons ${datadir}/appdata"
+FILES_${PN}-dev += "${libdir}/${PN}/*.la"
+
+PACKAGES_DYNAMIC += "^libpurple-protocol-.* ^libpurple-plugin-.* ^pidgin-plugin-.* ^finch-plugin-.*"
+
+python populate_packages_prepend () {
+    pidgroot = d.expand('${libdir}/pidgin')
+    purple   = d.expand('${libdir}/purple-2')
+    finch    = d.expand('${libdir}/finch')
+
+    do_split_packages(d, pidgroot, '^([^l][^i][^b].*)\.so$',
+        output_pattern='pidgin-plugin-%s',
+        description='Pidgin plugin %s',
+        prepend=True, extra_depends='')
+
+    do_split_packages(d, purple, '^lib(.*)\.so$',
+        output_pattern='libpurple-protocol-%s',
+        description='Libpurple protocol plugin for %s',
+        prepend=True, extra_depends='')
+
+    do_split_packages(d, purple, '^(ssl-.*)\.so$',
+        output_pattern='libpurple-plugin-%s',
+        description='libpurple plugin %s',
+        prepend=True, extra_depends='libpurple-plugin-ssl')
+
+    do_split_packages(d, purple, '^([^l][^i][^b].*)\.so$',
+        output_pattern='libpurple-plugin-%s',
+        description='libpurple plugin %s',
+        prepend=True, extra_depends='')
+
+    do_split_packages(d, finch, '^([^l][^i][^b].*)\.so$',
+        output_pattern='finch-plugin-%s',
+        description='Finch plugin %s',
+        prepend=True, extra_depends='')
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pkcs11-helper/pkcs11-helper_1.11.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/pkcs11-helper/pkcs11-helper_1.11.bb
new file mode 100644
index 0000000..db71bd0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pkcs11-helper/pkcs11-helper_1.11.bb
@@ -0,0 +1,29 @@
+SUMMARY = "A library for using PKCS"
+DESCRIPTION = "pkcs11-helper is a library that simplifies the interaction with PKCS \
+providers for end-user applications using a simple API and optional OpenSSL \
+engine. The library allows using multiple PKCS enumerating available token \
+certificates, or selecting a certificate directly by serialized id, handling \
+card removal and card insert events, handling card ie-insert to a different \
+slot, supporting session expiration and much more all using a simple API."
+
+HOMEPAGE = "http://www.opensc-project.org/pkcs11-helper/"
+SECTION = "Development/Libraries"
+
+LICENSE = "GPLv2 & BSD"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=4948810631bcac142af53d32df5b6ee1 \
+    file://COPYING.GPL;md5=8a71d0475d08eee76d8b6d0c6dbec543 \
+    file://COPYING.BSD;md5=f79f90ea7a106796af80b5d05f1f8da1 \
+"
+SRC_URI = "git://github.com/OpenSC/${BPN}.git"
+SRC_URI[md5sum] = "9f62af9f475901b89355266141306673"
+SRC_URI[sha256sum] = "494ec59c93e7c56c528f335d9353849e2e7c94a6b1b41c89604694e738113386"
+
+S = "${WORKDIR}/git"
+SRCREV = "e7adf8f35be232a4f04c53b4ac409be52792093e"
+
+DEPENDS = "zlib nettle gnutls gmp openssl nss nspr"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-static"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pngcheck/pngcheck_2.3.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/pngcheck/pngcheck_2.3.0.bb
new file mode 100644
index 0000000..d523b7a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pngcheck/pngcheck_2.3.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "pngcheck verifies the integrity of PNG, JNG and MNG files"
+HOMEPAGE = "http://www.libpng.org/pub/png/apps/pngcheck.html"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://gpl/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "zlib libpng"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/png-mng/${BPN}/${PV}/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "980bd6d9a3830fdce746d7fe3c9166ee"
+SRC_URI[sha256sum] = "77f0a039ac64df55fbd06af6f872fdbad4f639d009bbb5cd5cbe4db25690f35f"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_compile() {
+    oe_runmake -f Makefile.unx INCS=-I${STAGING_DIR_HOST}${incdir} LIBS=${STAGING_DIR_HOST}${libdir}/libz.a
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install pngcheck ${D}${bindir}
+    install png-fix-IDAT-windowsize ${D}${bindir}
+    install pngsplit ${D}${bindir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/poco/poco/run-ptest b/import-layers/meta-openembedded/meta-oe/recipes-support/poco/poco/run-ptest
new file mode 100644
index 0000000..c479f7a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/poco/poco/run-ptest
@@ -0,0 +1,9 @@
+#!/bin/sh
+while read runner; do
+  pushd . >/dev/null
+  cd bin
+  echo Testing $runner
+  ./$runner-testrunner -all
+  popd >/dev/null
+done < testrunners
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/poco/poco_1.7.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/poco/poco_1.7.1.bb
new file mode 100644
index 0000000..135d2aa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/poco/poco_1.7.1.bb
@@ -0,0 +1,107 @@
+SUMMARY = "Modern, powerful open source cross-platform C++ class libraries"
+DESCRIPTION = "Modern, powerful open source C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems."
+SECTION = "libs"
+HOMEPAGE = "http://pocoproject.org/"
+LICENSE = "BSL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4267f48fc738f50380cbeeb76f95cebc"
+
+# These dependencies are required by Foundation
+DEPENDS = "libpcre zlib"
+
+inherit cmake ptest
+
+BBCLASSEXTEND = "native"
+
+SRC_URI = " \
+    https://github.com/pocoproject/poco/archive/poco-${PV}-release.tar.gz \
+    file://run-ptest \
+   "
+
+SRC_URI[md5sum] = "a4b755d47303b20a0e2586f281d05a36"
+SRC_URI[sha256sum] = "6dbbc2018912ad9af6af96f605933ed91354a1e7423e5dbd04d8e9a2b2d15c05"
+
+S = "${WORKDIR}/poco-poco-${PV}-release"
+
+EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=RelWithDebInfo -DPOCO_UNBUNDLED=ON \
+                 ${@bb.utils.contains('PTEST_ENABLED', '1', '-DENABLE_TESTS=ON ', '', d)}"
+
+# For the native build we want to use the bundled version
+EXTRA_OECMAKE_append_class-native = " -DPOCO_UNBUNDLED=OFF"
+
+# do not use rpath
+EXTRA_OECMAKE_append = " -DCMAKE_SKIP_RPATH=ON"
+
+# By default the most commonly used poco components are built
+# Foundation is built anyway and doesn't need to be listed explicitly
+# these don't have dependencies outside oe-core
+PACKAGECONFIG ??= "XML JSON MongoDB PDF Util Net NetSSL Crypto Data DataSQLite Zip"
+
+PACKAGECONFIG[XML] = "-DENABLE_XML=ON,-DENABLE_XML=OFF,expat"
+PACKAGECONFIG[JSON] = "-DENABLE_JSON=ON,-DENABLE_JSON=OFF"
+PACKAGECONFIG[MongoDB] = "-DENABLE_MONGODB=ON,-DENABLE_MONGODB=OFF"
+PACKAGECONFIG[PDF] = "-DENABLE_PDF=ON,-DENABLE_PDF=OFF,zlib"
+PACKAGECONFIG[Util] = "-DENABLE_UTIL=ON,-DENABLE_UTIL=OFF"
+PACKAGECONFIG[Net] = "-DENABLE_NET=ON,-DENABLE_NET=OFF"
+PACKAGECONFIG[NetSSL] = "-DENABLE_NETSSL=ON,-DENABLE_NETSSL=OFF,openssl"
+PACKAGECONFIG[Crypto] = "-DENABLE_CRYPTO=ON,-DENABLE_CRYPTO=OFF,openssl"
+PACKAGECONFIG[Data] = "-DENABLE_DATA=ON,-DENABLE_DATA=OFF"
+PACKAGECONFIG[DataSQLite] = "-DENABLE_DATA_SQLITE=ON,-DENABLE_DATA_SQLITE=OFF,sqlite3"
+PACKAGECONFIG[Zip] = "-DENABLE_ZIP=ON,-DENABLE_ZIP=OFF"
+
+# Additional components not build by default,
+# they might have dependencies not included in oe-core
+# or they don't work on all architectures
+PACKAGECONFIG[mod_poco] = "-DENABLE_APACHECONNECTOR=ON,-DENABLE_APACHECONNECTOR=OFF,apr apache2"
+PACKAGECONFIG[CppParser] = "-DENABLE_CPPPARSER=ON,-DENABLE_CPPPARSER=OFF"
+PACKAGECONFIG[DataMySQL] = "-DENABLE_DATA_MYSQL=ON,-DENABLE_DATA_MYSQL=OFF,mariadb"
+PACKAGECONFIG[DataODBC] = "-DENABLE_DATA_ODBC=ON,-DENABLE_DATA_ODBC=OFF,libiodbc"
+PACKAGECONFIG[PageCompiler] = "-DENABLE_PAGECOMPILER=ON,-DENABLE_PAGECOMPILER=OFF"
+PACKAGECONFIG[PageCompilerFile2Page] = "-DENABLE_PAGECOMPILER_FILE2PAGE=ON,-DENABLE_PAGECOMPILER_FILE2PAGE=OFF"
+PACKAGECONFIG[SevenZip] = "-DENABLE_SEVENZIP=ON,-DENABLE_SEVENZIP=OFF"
+
+# Make a package for each library
+PACKAGES = "${PN}-dbg ${POCO_PACKAGES}"
+python __anonymous () {
+    packages = []
+    testrunners = []
+    components = d.getVar("PACKAGECONFIG", True).split()
+    components.append("Foundation")
+    for lib in components:
+        pkg = ("poco-%s" % lib.lower()).replace("_","")
+        packages.append(pkg)
+        if not d.getVar("FILES_%s" % pkg, True):
+            d.setVar("FILES_%s" % pkg, "${libdir}/libPoco%s.so.*" % lib)
+        testrunners.append("%s" % lib)
+
+    d.setVar("POCO_PACKAGES", " ".join(packages))
+    d.setVar("POCO_TESTRUNNERS", "\n".join(testrunners))
+}
+
+# "poco" is a metapackage which pulls in all Poco components
+PACKAGES += "${PN}"
+RRECOMMENDS_${PN} += "${POCO_PACKAGES}"
+RRECOMMENDS_${PN}_class-native = ""
+ALLOW_EMPTY_${PN} = "1"
+
+# -dev last to pick up the remaining stuff
+PACKAGES += "${PN}-dev ${PN}-staticdev"
+FILES_${PN}-dev = "${includedir} ${libdir}/libPoco*.so ${libdir}/cmake"
+FILES_${PN}-staticdev = "${libdir}/libPoco*.a"
+
+# ptest support
+FILES_${PN}-dbg += "${PTEST_PATH}/bin/.debug"
+
+# cppunit is only built if tests are enabled
+PACKAGES += "${PN}-cppunit"
+FILES_${PN}-cppunit += "${libdir}/libCppUnit.so*"
+ALLOW_EMPTY_${PN}-cppunit = "1"
+
+RDEPENDS_${PN}-ptest += "${PN}-cppunit"
+
+do_install_ptest () {
+       cp -rf ${B}/bin/ ${D}${PTEST_PATH}
+       cp -f ${B}/lib/libCppUnit.so* ${D}${libdir}
+       cp -rf ${B}/*/testsuite/data ${D}${PTEST_PATH}/bin/
+       find "${D}${PTEST_PATH}" -executable -exec chrpath -d {} \;
+       echo "${POCO_TESTRUNNERS}" > "${D}${PTEST_PATH}/testrunners"
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.7.bb
new file mode 100644
index 0000000..e530a48
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.7.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Encoding files for Poppler"
+DESCRIPTION = "Encoding files for use with poppler that enable poppler to \
+               correctly render CJK and Cyrrilic."
+LICENSE = "BSD & GPLv2 & GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4870b98343f0bbb25fa43b9d2ba59448 \
+                    file://COPYING.adobe;md5=63c6a8a9df204c00461fa5f163d8a663 \
+                    file://COPYING.gpl2;md5=751419260aa954499f7abaabaa882bbe \
+"
+
+inherit allarch
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+CMAP_RESOURCES_BASE = "https://github.com/adobe-type-tools/cmap-resources/raw/0561ebca035813ed04c3485bca636a0aa7abdc1d/cmapresources_identity-0/CMap"
+
+SRC_URI = "http://poppler.freedesktop.org/${BP}.tar.gz \
+           ${CMAP_RESOURCES_BASE}/Identity-H;name=idh \
+           ${CMAP_RESOURCES_BASE}/Identity-V;name=idv"
+
+SRC_URI[md5sum] = "636a8f2b9f6df9e7ced8ec0946961eaf"
+SRC_URI[sha256sum] = "e752b0d88a7aba54574152143e7bf76436a7ef51977c55d6bd9a48dccde3a7de"
+SRC_URI[idh.md5sum] = "009c93cf0141ab7bd6acb7eea14306cc"
+SRC_URI[idh.sha256sum] = "ae702c203a82ea124e9b96590f821db6fbf8754e2c4547a9dba0e82f94739e95"
+SRC_URI[idv.md5sum] = "2f32a45d43d001c26eeac6b878855fbf"
+SRC_URI[idv.sha256sum] = "89a85daf7031e93c883e76b9168a226dfd585bf5506e9e1956772163f15cb082"
+
+do_compile() {
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D} prefix=${prefix} datadir=${datadir}
+    install -d ${D}${datadir}/poppler/cMap
+    install -m644 ${WORKDIR}/Identity-* ${D}${datadir}/poppler/cMap/
+}
+
+FILES_${PN} += "${datadir}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Compile-with-C-11-compilers-that-don-t-define-isinfi.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Compile-with-C-11-compilers-that-don-t-define-isinfi.patch
new file mode 100644
index 0000000..d5c34a6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Compile-with-C-11-compilers-that-don-t-define-isinfi.patch
@@ -0,0 +1,39 @@
+From a8e3399487258e53df0fd4a79c570c8d71188bed Mon Sep 17 00:00:00 2001
+From: Takahiro Hashimoto <kenya888.en@gmail.com>
+Date: Wed, 27 Apr 2016 00:16:52 +0200
+Subject: [PATCH] Compile with C++11 compilers that don't define isinfinite
+
+Bug #94761
+---
+ poppler/SplashOutputDev.cc | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/poppler/SplashOutputDev.cc b/poppler/SplashOutputDev.cc
+index 13d090c..0e50702 100644
+--- a/poppler/SplashOutputDev.cc
++++ b/poppler/SplashOutputDev.cc
+@@ -36,6 +36,7 @@
+ // Copyright (C) 2014 Richard PALO <richard@netbsd.org>
+ // Copyright (C) 2015 Tamas Szekeres <szekerest@gmail.com>
+ // Copyright (C) 2015 Kenji Uno <ku@digitaldolphins.jp>
++// Copyright (C) 2016 Takahiro Hashimoto <kenya888.en@gmail.com>
+ //
+ // To see a description of the changes please see the Changelog file that
+ // came with your tarball or type make ChangeLog if you are building from git
+@@ -94,6 +95,13 @@ extern "C" int unlink(char *filename);
+ #endif
+ #endif
+ 
++#if __cplusplus > 199711L
++#include <cmath>
++#ifndef isfinite
++#define isfinite(x) std::isfinite(x)
++#endif
++#endif
++
+ static inline void convertGfxColor(SplashColorPtr dest,
+                                    SplashColorMode colorMode,
+                                    GfxColorSpace *colorSpace,
+-- 
+2.8.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-add-manadatory-options-to-find-qt4-qt5-moc.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-add-manadatory-options-to-find-qt4-qt5-moc.patch
new file mode 100644
index 0000000..560b073
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-add-manadatory-options-to-find-qt4-qt5-moc.patch
@@ -0,0 +1,91 @@
+From 91b6275f0e91c25beb040b4ef9484053ae305d86 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Tue, 26 May 2015 12:45:47 +0200
+Subject: [PATCH] add manadatory options to find qt4/qt5 moc
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ configure.ac | 55 ++++++++-----------------------------------------------
+ 1 file changed, 8 insertions(+), 47 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 67599c0..40fa596 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -622,25 +622,10 @@ AC_SUBST(POPPLER_QT4_LIBS)
+ AC_SUBST(POPPLER_QT4_TEST_LIBS)
+ 
+ if test x$enable_poppler_qt4 = xyes; then
+-  AC_CHECK_TOOL(MOCQT4, moc)
+-  AC_MSG_CHECKING([for Qt4 moc])
+-  mocversion=`$MOCQT4 -v 2>&1`
+-  mocversiongrep=`echo $mocversion | grep "Qt 4"`
+-  if test x"$mocversiongrep" != x"$mocversion"; then
+-    AC_MSG_RESULT([no])
+-    # moc was not the qt4 one, try with moc-qt4
+-    AC_CHECK_TOOL(MOCQT42, moc-qt4)
+-    AC_MSG_CHECKING([for Qt4 moc-qt4])
+-    mocversion=`$MOCQT42 -v 2>&1`
+-    mocversiongrep=`echo $mocversion | grep "Qt 4"`
+-    if test x"$mocversiongrep" != x"$mocversion"; then
+-      # no valid moc found
+-      enable_poppler_qt4=no;
+-      MOCQT4="not found"
+-    else
+-      MOCQT4=$MOCQT42
+-    fi
+-  fi
++  AC_ARG_WITH([moc-qt4],
++              AS_HELP_STRING([--with-moc-qt4], [Set location of qt4 moc]),
++              [MOCQT4=$withval]
++  )
+   AC_SUBST(MOCQT4)
+   AC_MSG_RESULT([$MOCQT4])
+ fi
+@@ -679,34 +664,10 @@ AC_SUBST(POPPLER_QT5_LIBS)
+ AC_SUBST(POPPLER_QT5_TEST_LIBS)
+ 
+ if test x$enable_poppler_qt5 = xyes; then
+-  AC_CHECK_TOOL(MOCQT5, moc)
+-  AC_MSG_CHECKING([for Qt5 moc])
+-  mocversion=`$MOCQT5 -v 2>&1`
+-  mocversiongrep=`echo $mocversion | grep "Qt 5\|moc 5"`
+-  if test x"$mocversiongrep" != x"$mocversion"; then
+-    AC_MSG_RESULT([no])
+-    # moc was not the qt5 one, try with moc-qt5
+-    AC_CHECK_TOOL(MOCQT52, moc-qt5)
+-    AC_MSG_CHECKING([for Qt5 moc-qt5])
+-    mocversion=`$MOCQT52 -v 2>&1`
+-    mocversiongrep=`echo $mocversion | grep "Qt 5\|moc-qt5 5\|moc 5"`
+-    if test x"$mocversiongrep" != x"$mocversion"; then
+-      AC_CHECK_TOOL(QTCHOOSER, qtchooser)
+-      AC_MSG_CHECKING([for qtchooser])
+-      qt5tooldir=`QT_SELECT=qt5 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2`
+-      mocversion=`$qt5tooldir/moc -v 2>&1`
+-      mocversiongrep=`echo $mocversion | grep "Qt 5\|moc 5"`
+-      if test x"$mocversiongrep" != x"$mocversion"; then
+-        # no valid moc found
+-        enable_poppler_qt5=no;
+-        MOCQT5="not found"
+-      else
+-        MOCQT5=$qt5tooldir/moc
+-      fi
+-    else
+-      MOCQT5=$MOCQT52
+-    fi
+-  fi
++  AC_ARG_WITH([moc-qt5],
++              AS_HELP_STRING([--with-moc-qt5], [Set location of qt5 moc]),
++              [MOCQT5=$withval]
++  )
+   AC_SUBST(MOCQT5)
+   AC_MSG_RESULT([$MOCQT5])
+ fi
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.41.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.41.0.bb
new file mode 100644
index 0000000..f7cc076
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.41.0.bb
@@ -0,0 +1,55 @@
+SUMMARY = "Poppler is a PDF rendering library based on the xpdf-3.0 code base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = " \
+    http://poppler.freedesktop.org/${BP}.tar.xz \
+    file://0001-add-manadatory-options-to-find-qt4-qt5-moc.patch \
+    file://0001-Compile-with-C-11-compilers-that-don-t-define-isinfi.patch \
+"
+SRC_URI[md5sum] = "849a8bd6af5794efb961b70418414e5a"
+SRC_URI[sha256sum] = "420abaab63caed9e1ee28964a0ba216d1979506726164bc99ad5ade289192a1b"
+
+DEPENDS = "fontconfig zlib cairo lcms"
+
+inherit autotools pkgconfig gtk-doc gobject-introspection
+
+PACKAGECONFIG ??= "jpeg openjpeg png tiff ${@bb.utils.contains('BBFILE_COLLECTIONS', 'qt5-layer', 'qt5', '', d)}"
+PACKAGECONFIG[jpeg] = "--enable-libjpeg,--disable-libjpeg,jpeg"
+PACKAGECONFIG[png] = "--enable-libpng,--disable-libpng,libpng"
+PACKAGECONFIG[tiff] = "--enable-libtiff,--disable-libtiff,tiff"
+PACKAGECONFIG[curl] = "--enable-libcurl,--disable-libcurl,curl"
+PACKAGECONFIG[openjpeg] = "--enable-libopenjpeg=openjpeg2,--disable-libopenjpeg,openjpeg"
+PACKAGECONFIG[qt5] = "--enable-poppler-qt5 --with-moc-qt5=${STAGING_BINDIR_NATIVE}/qt5/moc,--disable-poppler-qt5,qtbase"
+PACKAGECONFIG[qt4e] = "--enable-poppler-qt4 --with-moc-qt4=${STAGING_BINDIR_NATIVE}/moc4,--disable-poppler-qt4,qt4-embedded"
+
+# Needed for qt5
+CXXFLAGS += "--std=c++11"
+
+EXTRA_OECONF = "\
+    --enable-xpdf-headers \
+    --disable-gtk-test \
+    --enable-zlib \
+"
+
+do_compile_prepend() {
+        export GIR_EXTRA_LIBS_PATH="${B}/poppler/.libs"
+}
+
+# Adjust library names when building for QT4e
+QT4E_PATCHES = "${@bb.utils.contains('PACKAGECONFIG', 'qt4e', 'file://fix-qt4e-library-dependencies.patch', '', d)}"
+SRC_URI_append = "${QT4E_PATCHES}"
+
+# check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points
+def get_poppler_fpu_setting(bb, d):
+    if d.getVar('TARGET_FPU', 1) in [ 'soft' ]:
+        return "--enable-fixedpoint"
+    return ""
+
+EXTRA_OECONF += "${@get_poppler_fpu_setting(bb, d)}"
+
+PACKAGES =+ "libpoppler libpoppler-glib"
+FILES_libpoppler = "${libdir}/libpoppler.so.*"
+FILES_libpoppler-glib = "${libdir}/libpoppler-glib.so.*"
+
+RDEPENDS_libpoppler = "poppler-data"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/portaudio/portaudio-v19_svn.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/portaudio/portaudio-v19_svn.bb
new file mode 100644
index 0000000..c8d7378
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/portaudio/portaudio-v19_svn.bb
@@ -0,0 +1,32 @@
+SUMMARY = "A portable audio library"
+SECTION = "libs/multimedia"
+LICENSE = "PortAudio"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=26107732c2ab637c5710446fcfaf02df"
+
+PV = "v19+svnr${SRCPV}"
+
+SRCREV = "1387"
+SRC_URI = "svn://subversion.assembla.com/svn/portaudio/portaudio;module=trunk;protocol=http"
+S = "${WORKDIR}/trunk"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= "alsa jack"
+PACKAGECONFIG[alsa] = "--with-alsa, --without-alsa, alsa-lib,"
+PACKAGECONFIG[jack] = "--with-jack, --without-jack, jack,"
+
+EXTRA_OECONF = "--without-oss"
+
+TESTS = "  pa_devs patest1      patest_hang patest_many                   patest_prime patest_sine patest_stop     patest_write_sine        \
+pa_fuzz    patest_buffer        patest_in_overflow  patest_maxsines       patest_read_record  patest_sine8         patest_sync              \
+pa_minlat  patest_callbackstop  patest_latency      patest_multi_sine     patest_record       patest_sine_formats  patest_toomanysines      \
+paqa_devs  patest_clip          patest_leftright    patest_out_underflow  patest_ringmix      patest_sine_time     patest_underflow         \
+paqa_errs  patest_dither        patest_longsine     patest_pink           patest_saw          patest_start_stop    patest_wire"
+
+# DEFINES = PA_USE_OSS=1 HAVE_LIBPTHREAD=1
+# DEFINES += PA_LITTLE_ENDIAN
+
+# INCLUDEPATH = ../pa_common
+
+PACKAGES += "portaudio-examples"
+FILES_portaudio-examples = "${bindir}"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch
new file mode 100644
index 0000000..d08ec6a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch
@@ -0,0 +1,43 @@
+From d52e330be895bb8c5f0fb3e2884766acbd942a85 Mon Sep 17 00:00:00 2001
+From: Philip Balister <philip@balister.org>
+Date: Tue, 1 Jul 2014 09:40:44 -0400
+Subject: [PATCH] Use pkg-config for libxml2 detection.
+
+Upstream-Status: Inappropriate [configuration]
+
+xml2-config does not work. Use pkgconfig to set CPPFLAGS and LIBS.
+
+Signed-off-by: Philip Balister <philip@balister.org>
+---
+ configure.in | 15 ++-------------
+ 1 file changed, 2 insertions(+), 13 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index f8bf466..1f4fabf 100644
+--- a/configure.in
++++ b/configure.in
+@@ -734,19 +734,8 @@ PGAC_ARG_BOOL(with, libxml, no, [build with XML support],
+               [AC_DEFINE([USE_LIBXML], 1, [Define to 1 to build with XML support. (--with-libxml)])])
+ 
+ if test "$with_libxml" = yes ; then
+-  AC_CHECK_PROGS(XML2_CONFIG, xml2-config)
+-  if test -n "$XML2_CONFIG"; then
+-    for pgac_option in `$XML2_CONFIG --cflags`; do
+-      case $pgac_option in
+-        -I*|-D*) CPPFLAGS="$CPPFLAGS $pgac_option";;
+-      esac
+-    done
+-    for pgac_option in `$XML2_CONFIG --libs`; do
+-      case $pgac_option in
+-        -L*) LDFLAGS="$LDFLAGS $pgac_option";;
+-      esac
+-    done
+-  fi
++  CPPFLAGS="$CPPFLAGS `pkg-config --short-errors --print-errors --cflags "libxml-2.0" 2>&1`"
++  LIBS="`pkg-config --short-errors --print-errors --libs "libxml-2.0" 2>&1` $LIBS"
+ fi
+ 
+ AC_SUBST(with_libxml)
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/not-check-libperl.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/not-check-libperl.patch
new file mode 100644
index 0000000..e199f39
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/not-check-libperl.patch
@@ -0,0 +1,31 @@
+[PATCH] not check libperl under cross compiling
+
+Upstream-Status: Inappropriate [configuration]
+
+libperl ldflags returned by PGAC_CHECK_PERL_EMBED_LDFLAGS are native,
+can not be used to check target library.
+
+postpresql has the dependency on perl, so not need to check libperl
+again, like in postgresql-9.2.4 
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ configure.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.in b/configure.in
+index ae1a5a0..9a0970d 100644
+--- a/configure.in
++++ b/configure.in
+@@ -1877,7 +1877,7 @@ if test "$with_tcl" = yes; then
+ fi
+ 
+ # check for <perl.h>
+-if test "$with_perl" = yes; then
++if test "$with_perl" = yes && test "$cross_compiling" = no; then
+   ac_save_CPPFLAGS=$CPPFLAGS
+   CPPFLAGS="$CPPFLAGS -I$perl_archlibexp/CORE"
+   AC_CHECK_HEADER(perl.h, [], [AC_MSG_ERROR([header file <perl.h> is required for Perl])],
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-CVE-2016-0766.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-CVE-2016-0766.patch
new file mode 100644
index 0000000..df89eb0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-CVE-2016-0766.patch
@@ -0,0 +1,35 @@
+From f4aa3a18a20d51575562520754aa376b3b08b2d0 Mon Sep 17 00:00:00 2001
+From: Noah Misch <noah@leadboat.com>
+Date: Fri, 5 Feb 2016 20:22:51 -0500
+Subject: [PATCH] Force certain "pljava" custom GUCs to be PGC_SUSET.
+
+Future PL/Java versions will close CVE-2016-0766 by making these GUCs
+PGC_SUSET.  This PostgreSQL change independently mitigates that PL/Java
+vulnerability, helping sites that update PostgreSQL more frequently than
+PL/Java.  Back-patch to 9.1 (all supported versions).
+
+Upstream-Status: Backport
+
+Signed-off-by: Noah Misch <noah@leadboat.com>
+Index: postgresql-9.4.4/src/backend/utils/misc/guc.c
+===================================================================
+--- postgresql-9.4.4.orig/src/backend/utils/misc/guc.c	2015-06-10 03:29:38.000000000 +0800
++++ postgresql-9.4.4/src/backend/utils/misc/guc.c	2016-03-04 15:58:26.459266951 +0800
+@@ -7072,6 +7072,17 @@
+ 		!process_shared_preload_libraries_in_progress)
+ 		elog(FATAL, "cannot create PGC_POSTMASTER variables after startup");
+ 
++	/*
++	 * Before pljava commit 398f3b876ed402bdaec8bc804f29e2be95c75139
++	 * (2015-12-15), two of that module's PGC_USERSET variables facilitated
++	 * trivial escalation to superuser privileges.  Restrict the variables to
++	 * protect sites that have yet to upgrade pljava.
++	 */
++	if (context == PGC_USERSET &&
++		(strcmp(name, "pljava.classpath") == 0 ||
++		 strcmp(name, "pljava.vmoptions") == 0))
++		context = PGC_SUSET;
++
+ 	gen = (struct config_generic *) guc_malloc(ERROR, sz);
+ 	memset(gen, 0, sz);
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-CVE-2016-0773.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-CVE-2016-0773.patch
new file mode 100644
index 0000000..0fc9082
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-CVE-2016-0773.patch
@@ -0,0 +1,222 @@
+From 3bb3f42f3749d40b8d4de65871e8d828b18d4a45 Mon Sep 17 00:00:00 2001
+From: Tom Lane <tgl@sss.pgh.pa.us>
+Date: Mon, 8 Feb 2016 10:25:40 -0500
+Subject: [PATCH] Fix some regex issues with out-of-range characters and large
+ char ranges.
+
+Previously, our regex code defined CHR_MAX as 0xfffffffe, which is a
+bad choice because it is outside the range of type "celt" (int32).
+Characters approaching that limit could lead to infinite loops in logic
+such as "for (c = a; c <= b; c++)" where c is of type celt but the
+range bounds are chr.  Such loops will work safely only if CHR_MAX+1
+is representable in celt, since c must advance to beyond b before the
+loop will exit.
+
+Fortunately, there seems no reason not to restrict CHR_MAX to 0x7ffffffe.
+It's highly unlikely that Unicode will ever assign codes that high, and
+none of our other backend encodings need characters beyond that either.
+
+In addition to modifying the macro, we have to explicitly enforce character
+range restrictions on the values of \u, \U, and \x escape sequences, else
+the limit is trivially bypassed.
+
+Also, the code for expanding case-independent character ranges in bracket
+expressions had a potential integer overflow in its calculation of the
+number of characters it could generate, which could lead to allocating too
+small a character vector and then overwriting memory.  An attacker with the
+ability to supply arbitrary regex patterns could easily cause transient DOS
+via server crashes, and the possibility for privilege escalation has not
+been ruled out.
+
+Quite aside from the integer-overflow problem, the range expansion code was
+unnecessarily inefficient in that it always produced a result consisting of
+individual characters, abandoning the knowledge that we had a range to
+start with.  If the input range is large, this requires excessive memory.
+Change it so that the original range is reported as-is, and then we add on
+any case-equivalent characters that are outside that range.  With this
+approach, we can bound the number of individual characters allowed without
+sacrificing much.  This patch allows at most 100000 individual characters,
+which I believe to be more than the number of case pairs existing in
+Unicode, so that the restriction will never be hit in practice.
+
+It's still possible for range() to take awhile given a large character code
+range, so also add statement-cancel detection to its loop.  The downstream
+function dovec() also lacked cancel detection, and could take a long time
+given a large output from range().
+
+Per fuzz testing by Greg Stark.  Back-patch to all supported branches.
+
+Security: CVE-2016-0773
+
+Upstream-Status: Backport
+
+Signed-off-by: Tom Lane <tgl@sss.pgh.pa.us>
+Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
+
+Index: postgresql-9.4.5/src/backend/regex/regc_lex.c
+===================================================================
+--- postgresql-9.4.5.orig/src/backend/regex/regc_lex.c	2015-10-06 03:12:06.000000000 +0800
++++ postgresql-9.4.5/src/backend/regex/regc_lex.c	2016-03-10 10:29:57.045784317 +0800
+@@ -792,13 +792,13 @@
+ 			break;
+ 		case CHR('u'):
+ 			c = lexdigits(v, 16, 4, 4);
+-			if (ISERR())
++			if (ISERR() || c < CHR_MIN || c > CHR_MAX)
+ 				FAILW(REG_EESCAPE);
+ 			RETV(PLAIN, c);
+ 			break;
+ 		case CHR('U'):
+ 			c = lexdigits(v, 16, 8, 8);
+-			if (ISERR())
++			if (ISERR() || c < CHR_MIN || c > CHR_MAX)
+ 				FAILW(REG_EESCAPE);
+ 			RETV(PLAIN, c);
+ 			break;
+@@ -816,7 +816,7 @@
+ 		case CHR('x'):
+ 			NOTE(REG_UUNPORT);
+ 			c = lexdigits(v, 16, 1, 255);		/* REs >255 long outside spec */
+-			if (ISERR())
++			if (ISERR() || c < CHR_MIN || c > CHR_MAX)
+ 				FAILW(REG_EESCAPE);
+ 			RETV(PLAIN, c);
+ 			break;
+@@ -872,6 +872,9 @@
+ 
+ /*
+  * lexdigits - slurp up digits and return chr value
++ *
++ * This does not account for overflow; callers should range-check the result
++ * if maxlen is large enough to make that possible.
+  */
+ static chr						/* chr value; errors signalled via ERR */
+ lexdigits(struct vars * v,
+Index: postgresql-9.4.5/src/backend/regex/regc_locale.c
+===================================================================
+--- postgresql-9.4.5.orig/src/backend/regex/regc_locale.c	2015-10-06 03:12:06.000000000 +0800
++++ postgresql-9.4.5/src/backend/regex/regc_locale.c	2016-03-10 10:34:28.757781726 +0800
+@@ -408,8 +408,7 @@
+ 	int			nchrs;
+ 	struct cvec *cv;
+ 	celt		c,
+-				lc,
+-				uc;
++				cc;
+ 
+ 	if (a != b && !before(a, b))
+ 	{
+@@ -427,24 +426,48 @@
+ 
+ 	/*
+ 	 * When case-independent, it's hard to decide when cvec ranges are usable,
+-	 * so for now at least, we won't try.  We allocate enough space for two
+-	 * case variants plus a little extra for the two title case variants.
++	 * so for now at least, we won't try.  We use a range for the originally
++	 * specified chrs and then add on any case-equivalents that are outside
++	 * that range as individual chrs.
++	 *
++	 * To ensure sane behavior if someone specifies a very large range, limit
++	 * the allocation size to 100000 chrs (arbitrary) and check for overrun
++	 * inside the loop below.
+ 	 */
+ 
+-	nchrs = (b - a + 1) * 2 + 4;
+-
+-	cv = getcvec(v, nchrs, 0);
++	cv = getcvec(v, nchrs, 1);
+ 	NOERRN();
++	addrange(cv, a, b);
+ 
+ 	for (c = a; c <= b; c++)
+ 	{
+-		addchr(cv, c);
+-		lc = pg_wc_tolower((chr) c);
+-		if (c != lc)
+-			addchr(cv, lc);
+-		uc = pg_wc_toupper((chr) c);
+-		if (c != uc)
+-			addchr(cv, uc);
++		cc = pg_wc_tolower((chr) c);
++		if (cc != c &&
++			(before(cc, a) || before(b, cc)))
++		{
++			if (cv->nchrs >= cv->chrspace)
++			{
++				ERR(REG_ETOOBIG);
++				return NULL;
++			}
++			addchr(cv, cc);
++		}
++		cc = pg_wc_toupper((chr) c);
++		if (cc != c &&
++			(before(cc, a) || before(b, cc)))
++		{
++			if (cv->nchrs >= cv->chrspace)
++			{
++				ERR(REG_ETOOBIG);
++				return NULL;
++			}
++			addchr(cv, cc);
++		}
++		if (CANCEL_REQUESTED(v->re))
++		{
++			ERR(REG_CANCEL);
++			return NULL;
++		}
+ 	}
+ 
+ 	return cv;
+Index: postgresql-9.4.5/src/backend/regex/regcomp.c
+===================================================================
+--- postgresql-9.4.5.orig/src/backend/regex/regcomp.c	2015-10-06 03:12:06.000000000 +0800
++++ postgresql-9.4.5/src/backend/regex/regcomp.c	2016-03-10 10:35:25.397781185 +0800
+@@ -1569,6 +1569,7 @@
+ 	{
+ 		ch = *p;
+ 		newarc(v->nfa, PLAIN, subcolor(v->cm, ch), lp, rp);
++		NOERR();
+ 	}
+ 
+ 	/* and the ranges */
+@@ -1578,6 +1579,7 @@
+ 		to = *(p + 1);
+ 		if (from <= to)
+ 			subrange(v, from, to, lp, rp);
++		NOERR();
+ 	}
+ }
+ 
+Index: postgresql-9.4.5/src/include/regex/regcustom.h
+===================================================================
+--- postgresql-9.4.5.orig/src/include/regex/regcustom.h	2015-10-06 03:12:06.000000000 +0800
++++ postgresql-9.4.5/src/include/regex/regcustom.h	2016-03-10 10:37:09.989780188 +0800
+@@ -65,7 +65,8 @@
+ #define DIGITVAL(c) ((c)-'0')	/* turn chr digit into its value */
+ #define CHRBITS 32				/* bits in a chr; must not use sizeof */
+ #define CHR_MIN 0x00000000		/* smallest and largest chr; the value */
+-#define CHR_MAX 0xfffffffe		/* CHR_MAX-CHR_MIN+1 should fit in uchr */
++#define CHR_MAX 0x7ffffffe		/* CHR_MAX-CHR_MIN+1 must fit in an int, and
++								 * CHR_MAX+1 must fit in both chr and celt */
+ 
+ /* functions operating on chr */
+ #define iscalnum(x) pg_wc_isalnum(x)
+Index: postgresql-9.4.5/src/test/regress/expected/regex.out
+===================================================================
+--- postgresql-9.4.5.orig/src/test/regress/expected/regex.out	2015-10-06 03:12:06.000000000 +0800
++++ postgresql-9.4.5/src/test/regress/expected/regex.out	2016-03-10 10:38:28.821779436 +0800
+@@ -222,3 +222,5 @@
+  t
+ (1 row)
+ 
++select 'a' ~ '\x7fffffff';  -- invalid chr code
++ERROR:  invalid regular expression: invalid escape \ sequence
+Index: postgresql-9.4.5/src/test/regress/sql/regex.sql
+===================================================================
+--- postgresql-9.4.5.orig/src/test/regress/sql/regex.sql	2015-10-06 03:12:06.000000000 +0800
++++ postgresql-9.4.5/src/test/regress/sql/regex.sql	2016-03-10 10:38:57.845779159 +0800
+@@ -57,3 +57,4 @@
+ select 'a' ~ '.. ()|\1';
+ select 'a' ~ '()*\1';
+ select 'a' ~ '()+\1';
++select 'a' ~ '\x7fffffff';  -- invalid chr code
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-bashprofile b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-bashprofile
new file mode 100644
index 0000000..1c931f37
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-bashprofile
@@ -0,0 +1,4 @@
+[ -f /etc/profile ] && source /etc/profile
+
+PGDATA=/var/lib/postgresql/data
+export PGDATA
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-setup b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-setup
new file mode 100644
index 0000000..75bb01e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql-setup
@@ -0,0 +1,73 @@
+#!/bin/sh
+#
+# postgresql-setup      Initialization operation for PostgreSQL
+
+# For SELinux we need to use 'runuser' not 'su'
+if [ -x /sbin/runuser ]
+then
+    SU=runuser
+else
+    SU=su
+fi
+
+PGENGINE=/usr/bin
+PGDATA=/var/lib/postgresql/data
+PGLOG=/var/lib/postgresql/pgstartup.log
+script_result=0
+
+initdb(){
+    if [ -f "$PGDATA/PG_VERSION" ]
+    then
+	echo -n "Data directory is not empty!"
+	echo -n " [FAILED] "
+	echo
+	script_result=1
+    else
+	echo -n "Initializing database: "
+	if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]
+	then
+		mkdir -p "$PGDATA" || exit 1
+		chown postgres:postgres "$PGDATA"
+		chmod go-rwx "$PGDATA"
+	fi
+	# Clean up SELinux tagging for PGDATA
+	[ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA"
+
+	# Make sure the startup-time log file is OK, too
+	if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
+	then
+		touch "$PGLOG" || exit 1
+		chown postgres:postgres "$PGLOG"
+		chmod go-rwx "$PGLOG"
+		[ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
+	fi
+
+	# Initialize the database
+	$SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null
+
+	# Create directory for postmaster log
+	mkdir "$PGDATA/pg_log"
+	chown postgres:postgres "$PGDATA/pg_log"
+	chmod go-rwx "$PGDATA/pg_log"
+
+	if [ -f "$PGDATA/PG_VERSION" ]
+	then
+	    echo -n " [ OK ] "
+	else
+	    echo -n " [FAILED] "
+	    script_result=1
+	fi
+	echo
+    fi
+}
+
+case "$1" in
+  initdb)
+	initdb
+	;;
+  *)
+	echo "Usage: $0 initdb"
+	exit 2
+esac
+
+exit $script_result
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql.init b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql.init
new file mode 100644
index 0000000..4a4f0cd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql.init
@@ -0,0 +1,193 @@
+#!/bin/sh
+#
+# postgresql	This is the init script for starting up the PostgreSQL
+#		server.
+#
+# chkconfig: - 64 36
+# description: PostgreSQL database server.
+# processname: postmaster
+# pidfile: /var/run/postmaster.PORT.pid
+
+# This script is slightly unusual in that the name of the daemon (postmaster)
+# is not the same as the name of the subsystem (postgresql)
+
+# PGVERSION is the full package version, e.g., 8.4.0
+# Note: the specfile inserts the correct value during package build
+PGVERSION=9.2.4
+# PGMAJORVERSION is major version, e.g., 8.4 (this should match PG_VERSION)
+PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'`
+
+# Source function library.
+. /etc/init.d/functions
+
+# Find the name of the script
+NAME=`basename $0`
+if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ]
+then
+	NAME=${NAME:3}
+fi
+
+# For SELinux we need to use 'runuser' not 'su'
+if [ -x /sbin/runuser ]
+then
+    SU=runuser
+else
+    SU=su
+fi
+
+
+# Set defaults for configuration variables
+PGENGINE=/usr/bin
+PGPORT=5432
+PGDATA=/var/lib/postgresql/data
+PGLOG=/var/lib/postgresql/pgstartup.log
+# Value to set as postmaster process's oom_adj
+PG_OOM_ADJ=-17
+
+# Override defaults from /etc/sysconfig/postgresql if file is present
+[ -f /etc/default/postgresql/${NAME} ] && . /etc/default/postgresql/${NAME}
+
+export PGDATA
+export PGPORT
+
+lockfile="/var/lock/subsys/${NAME}"
+pidfile="/var/run/postmaster.${PGPORT}.pid"
+
+script_result=0
+
+start(){
+	[ -x "$PGENGINE/postmaster" ] || exit 5
+
+	PSQL_START=$"Starting ${NAME} service: "
+
+	# Make sure startup-time log file is valid
+	if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
+	then
+		touch "$PGLOG" || exit 4
+		chown postgres:postgres "$PGLOG"
+		chmod go-rwx "$PGLOG"
+		[ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
+	fi
+
+	# Check for the PGDATA structure
+	if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ]
+	then
+		# Check version of existing PGDATA
+		if [ x`cat "$PGDATA/PG_VERSION"` != x"$PGMAJORVERSION" ]
+		then
+			SYSDOCDIR="(Your System's documentation directory)"
+			if [ -d "/usr/doc/postgresql-$PGVERSION" ]
+			then
+				SYSDOCDIR=/usr/doc
+			fi
+			if [ -d "/usr/share/doc/postgresql-$PGVERSION" ]
+			then
+				SYSDOCDIR=/usr/share/doc
+			fi
+			if [ -d "/usr/doc/packages/postgresql-$PGVERSION" ]
+			then
+				SYSDOCDIR=/usr/doc/packages
+			fi
+			if [ -d "/usr/share/doc/packages/postgresql-$PGVERSION" ]
+			then
+				SYSDOCDIR=/usr/share/doc/packages
+			fi
+			echo
+			echo $"An old version of the database format was found."
+			echo $"You need to upgrade the data format before using PostgreSQL."
+			echo $"See $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information."
+			exit 1
+		fi
+	else
+		# No existing PGDATA! Warn the user to initdb it.
+		echo
+                echo "$PGDATA is missing. Use \"postgresql-setup initdb\" to initialize the cluster first."
+		echo -n " [FAILED] "
+		echo
+		exit 1
+	fi
+
+	echo -n "$PSQL_START"
+	test x"$PG_OOM_ADJ" != x && echo "$PG_OOM_ADJ" > /proc/self/oom_score_adj
+	$SU -l postgres -c "$PGENGINE/postmaster -p '$PGPORT' -D '$PGDATA' ${PGOPTS} &" >> "$PGLOG" 2>&1 < /dev/null
+	sleep 2
+	pid=`head -n 1 "$PGDATA/postmaster.pid" 2>/dev/null`
+	if [ "x$pid" != x ]
+	then
+		echo -n " [ OK ]"
+		touch "$lockfile"
+		echo $pid > "$pidfile"
+		echo
+	else
+		echo -n  " [FAILED]"
+		echo
+		script_result=1
+	fi
+}
+
+stop(){
+	echo -n $"Stopping ${NAME} service: "
+	if [ -e "$lockfile" ]
+	then
+	    $SU -l postgres -c "$PGENGINE/pg_ctl stop -D '$PGDATA' -s -m fast" > /dev/null 2>&1 < /dev/null
+	    ret=$?
+	    if [ $ret -eq 0 ]
+	    then
+		echo -n " [ OK ] "
+		rm -f "$pidfile"
+		rm -f "$lockfile"
+	    else
+		echo -n " [FAILED] "
+		script_result=1
+	    fi
+	else
+	    # not running; per LSB standards this is "ok"
+	    echo -n " [ OK ] "
+	fi
+	echo
+}
+
+restart(){
+    stop
+    start
+}
+
+condrestart(){
+    [ -e "$lockfile" ] && restart || :
+}
+
+reload(){
+    $SU -l postgres -c "$PGENGINE/pg_ctl reload -D '$PGDATA' -s" > /dev/null 2>&1 < /dev/null
+}
+
+
+# See how we were called.
+case "$1" in
+  start)
+	start
+	;;
+  stop)
+	stop
+	;;
+  status)
+	status postmaster
+	script_result=$?
+	;;
+  restart)
+	restart
+	;;
+  condrestart|try-restart)
+	condrestart
+	;;
+  reload)
+	reload
+	;;
+  force-reload)
+	restart
+	;;
+  *)
+	echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
+	exit 2
+esac
+
+exit $script_result
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql.pam b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql.pam
new file mode 100644
index 0000000..0b6fdc5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql.pam
@@ -0,0 +1,4 @@
+#%PAM-1.0
+auth            include         common-auth
+account         include         common-account
+password        include         common-password
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql.service b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql.service
new file mode 100644
index 0000000..4ec959e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/postgresql.service
@@ -0,0 +1,27 @@
+[Unit]
+Description=PostgreSQL database server
+After=network.target
+
+[Service]
+Type=forking
+User=postgres
+Group=postgres
+
+# Port number for server to listen on
+Environment=PGPORT=5432
+
+# Location of database directory
+Environment=PGDATA=/var/lib/postgresql/data
+
+# Disable OOM kill on the postmaster
+OOMScoreAdjust=-17
+
+ExecStart=@BINDIR@/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
+ExecStop=@BINDIR@/pg_ctl stop -D ${PGDATA} -s -m fast
+ExecReload=@BINDIR@/pg_ctl reload -D ${PGDATA} -s
+
+# Give a reasonable amount of time for the server to start up/shut down
+TimeoutSec=300
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/remove.autoconf.version.check.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/remove.autoconf.version.check.patch
new file mode 100644
index 0000000..be23fd4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/files/remove.autoconf.version.check.patch
@@ -0,0 +1,16 @@
+Index: postgresql-9.2.4/configure.in
+===================================================================
+--- postgresql-9.2.4.orig/configure.in
++++ postgresql-9.2.4/configure.in
+@@ -19,10 +19,6 @@ m4_pattern_forbid(^PGAC_)dnl to catch un
+ 
+ AC_INIT([PostgreSQL], [9.4.2], [pgsql-bugs@postgresql.org])
+ 
+-m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required.
+-Untested combinations of 'autoconf' and PostgreSQL versions are not
+-recommended.  You can remove the check from 'configure.in' but it is then
+-your responsibility whether the result works or not.])])
+ AC_COPYRIGHT([Copyright (c) 1996-2014, PostgreSQL Global Development Group])
+ AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c])
+ AC_CONFIG_AUX_DIR(config)
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/postgresql.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/postgresql.inc
new file mode 100644
index 0000000..288a2d1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/postgresql.inc
@@ -0,0 +1,391 @@
+SUMMARY = "PostgreSQL is a powerful, open source relational database system."
+DESCRIPTION = "\
+    PostgreSQL is an advanced Object-Relational database management system \
+    (DBMS) that supports almost all SQL constructs (including \
+    transactions, subselects and user-defined types and functions). The \
+    postgresql package includes the client programs and libraries that \
+    you'll need to access a PostgreSQL DBMS server.  These PostgreSQL \
+    client programs are programs that directly manipulate the internal \
+    structure of PostgreSQL databases on a PostgreSQL server. These client \
+    programs can be located on the same machine with the PostgreSQL \
+    server, or may be on a remote machine which accesses a PostgreSQL \
+    server over a network connection. This package contains the docs \
+    in HTML for the whole package, as well as command-line utilities for \
+    managing PostgreSQL databases on a PostgreSQL server. \
+    \
+    If you want to manipulate a PostgreSQL database on a local or remote \
+    PostgreSQL server, you need this package. You also need to install \
+    this package if you're installing the postgresql-server package. \
+"
+HOMEPAGE = "http://www.postgresql.com"
+LICENSE = "BSD"
+DEPENDS = "zlib readline tzcode-native"
+INC_PR = "r0"
+
+ARM_INSTRUCTION_SET = "arm"
+
+SRC_URI = "http://ftp.postgresql.org/pub/source/v${PV}/${BP}.tar.bz2 \
+    file://postgresql.init \
+    file://postgresql-bashprofile \
+    file://postgresql.pam \
+    file://postgresql-setup \
+    file://postgresql.service \
+    file://0001-Use-pkg-config-for-libxml2-detection.patch \
+    file://postgresql-CVE-2016-0766.patch \
+    file://postgresql-CVE-2016-0773.patch \
+"
+
+LEAD_SONAME = "libpq.so"
+
+# LDFLAGS for shared libraries
+export LDFLAGS_SL = "${LDFLAGS}"
+
+inherit autotools pkgconfig perlnative pythonnative useradd update-rc.d systemd
+
+SYSTEMD_SERVICE_${PN} = "postgresql.service"
+SYSTEMD_AUTO_ENABLE_${PN} = "disable"
+
+DEPENDS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-systemctl-native', '', d)}"
+pkg_postinst_${PN} () {
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd sysvinit', 'true', 'false', d)}; then
+        if [ -n "$D" ]; then
+            OPTS="--root=$D"
+        fi
+        systemctl $OPTS mask postgresql-server.service
+    fi
+}
+
+enable_pam = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
+PACKAGECONFIG ??= "${enable_pam} openssl python uuid libxml tcl nls libxml perl"
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam,"
+PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
+PACKAGECONFIG[python] = "--with-python,--without-python,python,python"
+PACKAGECONFIG[uuid] = "--with-ossp-uuid,--without-ossp-uuid,ossp-uuid,"
+# when tcl native package  is fixed change WORKDIR to STAGING_BINDIR_CROSS
+PACKAGECONFIG[tcl] = "--with-tcl --with-tclconfig=${STAGING_BINDIR_CROSS},--without-tcl,tcl,"
+PACKAGECONFIG[nls] = "--enable-nls,--disable-nls,,"
+PACKAGECONFIG[libxml] = "--with-libxml,--without-libxml,libxml2,libxml2"
+PACKAGECONFIG[perl] = "--with-perl,--without-perl,perl,perl"
+
+EXTRA_OECONF += "--enable-thread-safety --disable-rpath \
+    --datadir=${datadir}/${BPN} \
+    --sysconfdir=${sysconfdir}/${BPN} \
+"
+EXTRA_OECONF_sh4 += "--disable-spinlocks"
+EXTRA_OECONF_aarch64 += "--disable-spinlocks"
+
+PACKAGES_DYNAMIC += "^${PN}-plperl ^${PN}-plperl-dbg \
+    ^${PN}-pltcl ^${PN}-pltcl-dbg \
+    ^${PN}-plpython ^${PN}-plpython-dbg \
+"
+
+python populate_packages_prepend() {
+
+    def fill_more(name, dbg=True):
+        if name is None or name.strip() == "":
+            return
+
+        fpack=d.getVar('PACKAGES', False) or ""
+        fpack="${PN}-" + name + " " + fpack
+        if dbg:
+            fpack="${PN}-" + name + "-dbg" + " " + fpack
+        d.setVar('PACKAGES', fpack)
+
+    conf=(d.getVar('PACKAGECONFIG', True) or "").split()
+    pack=d.getVar('PACKAGES', False) or ""
+    bb.debug(1, "PACKAGECONFIG=%s" % conf)
+    bb.debug(1, "PACKAGES1=%s" % pack )
+
+    if "perl" in conf :
+        fill_more("plperl")
+
+    if "tcl" in conf:
+        fill_more("pltcl")
+
+    if "python" in conf:
+        fill_more("plpython")
+
+    pack=d.getVar('PACKAGES', True) or ""
+    bb.debug(1, "PACKAGES2=%s" % pack)
+
+}
+
+do_configure() {
+    # do_configure_prepend
+    # make sure configure finds python includdirs with these envs
+    export BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+           STAGING_INCDIR=${STAGING_INCDIR} \
+           STAGING_LIBDIR=${STAGING_LIBDIR}
+
+    # do_configure
+    autotools_do_configure
+
+    # do_configure_append
+    # workaround perl package related bugs
+    sed -i -e "s:-L/usr/local/lib:-L=/usr/local/lib:g" \
+        ${B}/src/Makefile.global
+    LIBPNA="\${STAGING_LIBDIR_NATIVE}/perl-native"
+    LIBNA="\${STAGING_LIBDIR_NATIVE}"
+    BLIBNA="\${STAGING_BASE_LIBDIR_NATIVE}"
+    sed -i -e "/^perl_archlibexp/s:${LIBPNA}:${STAGING_LIBDIR}:g" \
+        ${B}/src/Makefile.global
+    sed -i -e "/^perl_privlibexp/s:${LIBPNA}:${STAGING_LIBDIR}:g" \
+        ${B}/src/Makefile.global
+    # remove the rpath, replace with correct lib path
+    sed -i \
+        -e "/^perl_embed_ldflags/s:-Wl,-rpath,${LIBNA}::g" \
+        -e "/^perl_embed_ldflags/s:-Wl,-rpath,${BLIBNA}::g" \
+        -e "/^perl_embed_ldflags/s:-Wl,-rpath-link,${LIBNA}::g" \
+        -e "/^perl_embed_ldflags/s:-Wl,-rpath-link,${BLIBNA}::g" \
+        -e "/^perl_embed_ldflags/s:${LIBPNA}:${STAGING_LIBDIR}:g" \
+        -e "/^perl_embed_ldflags/s:${LIBNA}:${STAGING_LIBDIR}:g"  \
+        -e "/^perl_embed_ldflags/s:${BLIBNA}:${STAGING_BASELIBDIR}:g" \
+        -e "/^TCLSH/s:=.*:= ${bindir}/tclsh:g" \
+    ${B}/src/Makefile.global
+
+    if ${@bb.utils.contains('PACKAGECONFIG', 'perl', 'true', 'false', d)}; then
+        # workaround perl package's libperl.so problem
+        # we are using perlnative so this perl should have same version
+        perl_version=`perl -v 2>/dev/null | \
+            sed -n 's/This is perl.*v[a-z ]*\([0-9]\.[0-9][0-9.]*\).*$/\1/p'`
+        if [ ! -h "${STAGING_LIBDIR}/perl/$perl_version/CORE/libperl.so" -a \
+             ! -h "${STAGING_LIBDIR}/libperl.so" ]; then
+            ln -sf ../../../libperl.so.5 \
+                ${STAGING_LIBDIR}/perl/$perl_version/CORE/libperl.so
+        fi
+    fi
+}
+
+do_compile_append() {
+    oe_runmake -C contrib all
+}
+
+# server needs to configure user and group
+usernum = "28"
+groupnum = "28"
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "-M -g postgres -o -r -d ${localstatedir}/lib/${BPN} \
+    -s /bin/bash -c 'PostgreSQL Server' -u ${usernum} postgres"
+GROUPADD_PARAM_${PN} = "-g ${groupnum} -o -r postgres"
+
+INITSCRIPT_PACKAGES = "${PN}"
+INITSCRIPT_NAME = "${BPN}-server"
+INITSCRIPT_PARAMS = "start 64 . stop 36 0 1 2 3 4 5 6 ."
+
+do_install_append() {
+    # install contrib
+    oe_runmake DESTDIR=${D} -C contrib install
+    # install tutorial
+    install -d -m 0755 ${D}${libdir}/${BPN}/tutorial
+    install ${B}/src/tutorial/* ${D}${libdir}/${BPN}/tutorial
+
+    # install COPYRIGHT README HISTORY
+    install -d -m 0755 ${D}${docdir}/${BPN}
+    for i in ${B}/{COPYRIGHT,README,HISTORY} ${B}/doc/{KNOWN_BUGS,MISSING_FEATURES,README*,bug.template}; do
+        [ -f $i ] && install $i ${D}${docdir}/${BPN}
+    done
+
+    # install dirs and server init
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/${BPN}.init ${D}${sysconfdir}/init.d/${BPN}-server
+    sed -i -e "s/^PGVERSION=.*$/PGVERSION=${PV}/g" ${D}${sysconfdir}/init.d/${BPN}-server
+    install -m 0755 ${WORKDIR}/${BPN}-setup ${D}${bindir}/${BPN}-setup
+    install -d -m 700 ${D}${localstatedir}/lib/${BPN}/data
+    install -d -m 700 ${D}${localstatedir}/lib/${BPN}/backups
+    install -m 644 ${WORKDIR}/${BPN}-bashprofile ${D}${localstatedir}/lib/${BPN}/.bash_profile
+    chown -R postgres:postgres ${D}${localstatedir}/lib/${BPN}
+    # multiple server config directory
+    install -d -m 700 ${D}${sysconfdir}/default/${BPN}
+
+    if [ "${@d.getVar('enable_pam', True)}" = "pam" ]; then
+        install -d ${D}${sysconfdir}/pam.d
+        install -m 644 ${WORKDIR}/postgresql.pam ${D}${sysconfdir}/pam.d/postgresql
+    fi
+
+    # Install systemd unit files
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/postgresql.service ${D}${systemd_unitdir}/system
+    sed -i -e 's,@BINDIR@,${bindir},g' \
+        ${D}${systemd_unitdir}/system/postgresql.service
+}
+
+SSTATE_SCAN_FILES += "Makefile.global"
+
+PACKAGES =+ "${PN}-client ${PN}-server-dev ${PN}-timezone \
+    libecpg-compat-dbg libecpg-compat libecpg-compat-dev \
+    libecpg-dbg libecpg libecpg-dev libecpg-staticdev libecpg-doc \
+    libpq-dbg libpq libpq-dev libpq-staticdev \
+    libpgtypes-dbg libpgtypes libpgtypes-staticdev libpgtypes-dev \
+    ${PN}-contrib ${PN}-contrib-dbg \
+"
+
+FILES_${PN} += "${sysconfdir}/init.d/${BPN}-server \
+    ${localstatedir}/lib/${BPN}/data ${localstatedir}/lib/${BPN}/backups \
+    ${localstatedir}/lib/${BPN}/.bash_profile ${sysconfdir}/default/${BPN} \
+    ${libdir}/${BPN}/dict_snowball.so ${libdir}/${BPN}/plpgsql.so \
+    ${libdir}/${BPN}/euc2004_sjis2004.so \
+    ${libdir}/${BPN}/libpqwalreceiver.so \
+    ${libdir}/${BPN}/*_and_*.so \
+    ${@'${sysconfdir}/pam.d/postgresql' \
+       if 'pam' == d.getVar('enable_pam', True) \
+       else ''} \
+"
+
+FILES_${PN}-dbg += " ${libdir}/${BPN}/.debug/dict_snowball.so \
+    ${libdir}/${BPN}/.debug/plpgsql.so \
+    ${libdir}/${BPN}/.debug/euc2004_sjis2004.so \
+    ${libdir}/${BPN}/.debug/libpqwalreceiver.so \
+    ${libdir}/${BPN}/.debug/*_and_*.so \
+"
+
+FILES_${PN}-client = "${bindir}/clusterdb \
+    ${bindir}/createdb \
+    ${bindir}/createlang \
+    ${bindir}/createuser \
+    ${bindir}/dropdb \
+    ${bindir}/droplang \
+    ${bindir}/dropuser \
+    ${bindir}/pg_dump \
+    ${bindir}/pg_dumpall \
+    ${bindir}/pg_restore \
+    ${bindir}/psql \
+    ${bindir}/reindexdb \
+    ${bindir}/vacuumdb \
+    ${bindir}/vacuumlo \
+    ${datadir}/${BPN}/psqlrc.sample \
+"
+FILES_${PN}-client-doc = "${mandir}/man1/clusterdb.* \
+    ${mandir}/man1/createdb.*   ${mandir}/man1/createlang.* \
+    ${mandir}/man1/createuser.* ${mandir}/man1/dropdb.* \
+    ${mandir}/man1/droplang.*   ${mandir}/man1/dropuser.* \
+    ${mandir}/man1/pg_dump.*    ${mandir}/man1/pg_dumpall.* \
+    ${mandir}/man1/pg_restore.* ${mandir}/man1/psql.* \
+    ${mandir}/man1/reindexdb.*  ${mandir}/man1/vacuumdb.* \
+    ${mandir}/man7/* \
+"
+FILES_${PN}-doc += "${docdir}/${BPN}/html ${libdir}/${BPN}/tutorial/ \
+    ${mandir}/man1/initdb.* ${mandir}/man1/pg_controldata.* \
+    ${mandir}/man1/pg_ctl.* ${mandir}/man1/pg_resetxlog.* \
+    ${mandir}/man1/postgres.* ${mandir}/man1/postmaster.* \
+"
+FILES_${PN}-timezone = "${datadir}/${BPN}/timezone \
+    ${datadir}/${BPN}/timezonesets \
+"
+RDEPENDS_${PN} += "${PN}-timezone"
+FILES_${PN}-server-dev = "${includedir}/${BPN}/server"
+
+FILES_libecpg = "${libdir}/libecpg*${SOLIBS}"
+FILES_libecpg-dbg = "${libdir}/.debug/libecpg*"
+FILES_libecpg-dev = "${libdir}/libecpg*${SOLIBSDEV} \
+    ${libdir}/libpgtypes*${SOLIBSDEV} \
+    ${includedir}/ecpg*.h ${includedir}/${BPN}/ecpg*.h \
+    ${includedir}/pgtypes*.h ${includedir}/${BPN}/informix \
+    ${includedir}/sql3types.h ${includedir}/sqlca.h \
+"
+FILES_libecpg-doc = "${mandir}/man1/ecpg.*"
+FILES_libecpg-staticdev = "${libdir}/libecpg*.a"
+SECTION_libecpg-staticdev = "devel"
+RDEPENDS_libecpg-staticdev = "libecpg-dev (= ${EXTENDPKGV})"
+
+FILES_libpq = "${libdir}/libpq*${SOLIBS}"
+FILES_libpq-dbg = "${libdir}/.debug/libpq* ${libdir}/${BPN}/pgxs/src/test/regress/.debug/*"
+FILES_libpq-dev = "${libdir}/libpq*${SOLIBSDEV} \
+    ${includedir} \
+"
+FILES_libpq-staticdev = "${libdir}/libpq*.a ${libdir}/libpgport.a"
+SECTION_libpq-staticdev = "devel"
+RDEPENDS_libpq-staticdev = "libpq-dev (= ${EXTENDPKGV})"
+
+FILES_libecpg-compat = "${libdir}/libecpg_compat*${SOLIBS}"
+FILES_libecpg-compat-dbg = "${libdir}/.debug/libecpg_compat*"
+FILES_libecpg-compat-dev = "${libdir}/libecpg_compat*${SOLIBS}"
+FILES_libpgtypes = "${libdir}/libpgtypes*${SOLIBS}"
+FILES_libpgtypes-dbg = "${libdir}/.debug/libpgtypes*"
+FILES_libpgtypes-staticdev = "${libdir}/libpgtypes*.a"
+FILES_libpgtypes-dev = "${libdir}/libpgtypes*${SOLIBS} ${includedir}/pgtypes*.h"
+
+FILES_${PN}-contrib = " ${bindir}/oid2name ${bindir}/pg_standby \
+    ${bindir}/pgbench ${bindir}/vacuumlo \
+    ${S}/contrib/spi/*.example \
+    ${libdir}/${BPN}/_int.so ${libdir}/${BPN}/adminpack.so \
+    ${libdir}/${BPN}/autoinc.so ${libdir}/${BPN}/auto_explain.so \
+    ${libdir}/${BPN}/auth_delay.so ${libdir}/${BPN}/btree_gin.so \
+    ${libdir}/${BPN}/btree_gist.so ${libdir}/${BPN}/.so \
+    ${libdir}/${BPN}/chkpass.so ${libdir}/${BPN}/citext.so \
+    ${libdir}/${BPN}/cube.so ${libdir}/${BPN}/dblink.so \
+    ${libdir}/${BPN}/dict_int.so ${libdir}/${BPN}/dict_xsyn.so \
+    ${libdir}/${BPN}/dummy_seclabel.so ${libdir}/${BPN}/earthdistance.so \
+    ${libdir}/${BPN}/file_fdw.so ${libdir}/${BPN}/fuzzystrmatch.so \
+    ${libdir}/${BPN}/hstore.so ${libdir}/${BPN}/insert_username.so \
+    ${libdir}/${BPN}/isn.so ${libdir}/${BPN}/lo.so \
+    ${libdir}/${BPN}/ltree.so ${libdir}/${BPN}/moddatetime.so \
+    ${libdir}/${BPN}/pageinspect.so ${libdir}/${BPN}/pg_buffercache.so \
+    ${libdir}/${BPN}/pg_freespacemap.so ${libdir}/${BPN}/pg_trgm.so \
+    ${libdir}/${BPN}/pgcrypto.so ${libdir}/${BPN}/pgrowlocks.so \
+    ${libdir}/${BPN}/pgstattuple.so ${libdir}/${BPN}/pg_stat_statements.so \
+    ${libdir}/${BPN}/refint.so ${libdir}/${BPN}/seg.so \
+    ${libdir}/${BPN}/sslinfo.so \
+    ${libdir}/${BPN}/tablefunc.so \
+    ${libdir}/${BPN}/test_parser.so ${libdir}/${BPN}/timetravel.so \
+    ${libdir}/${BPN}/tsearch2.so ${libdir}/${BPN}/uuid-ossp.so \
+    ${libdir}/${BPN}/pgxml.so ${libdir}/${BPN}/passwordcheck.so \
+    ${libdir}/${BPN}/pg_upgrade_support.so ${libdir}/${BPN}/.so \
+    ${libdir}/${BPN}/unaccent.so \
+"
+FILES_${PN}-contrib-dbg = " \
+    ${libdir}/${BPN}/.debug/_int.so ${libdir}/${BPN}/.debug/adminpack.so \
+    ${libdir}/${BPN}/.debug/autoinc.so ${libdir}/${BPN}/.debug/auto_explain.so \
+    ${libdir}/${BPN}/.debug/auth_delay.so ${libdir}/${BPN}/.debug/btree_gin.so \
+    ${libdir}/${BPN}/.debug/btree_gist.so ${libdir}/${BPN}/.debug/.so \
+    ${libdir}/${BPN}/.debug/chkpass.so ${libdir}/${BPN}/.debug/citext.so \
+    ${libdir}/${BPN}/.debug/cube.so ${libdir}/${BPN}/.debug/dblink.so \
+    ${libdir}/${BPN}/.debug/dict_int.so ${libdir}/${BPN}/.debug/dict_xsyn.so \
+    ${libdir}/${BPN}/.debug/dummy_seclabel.so \
+    ${libdir}/${BPN}/.debug/earthdistance.so \
+    ${libdir}/${BPN}/.debug/file_fdw.so ${libdir}/${BPN}/.debug/fuzzystrmatch.so \
+    ${libdir}/${BPN}/.debug/hstore.so ${libdir}/${BPN}/.debug/insert_username.so \
+    ${libdir}/${BPN}/.debug/isn.so ${libdir}/${BPN}/.debug/lo.so \
+    ${libdir}/${BPN}/.debug/ltree.so ${libdir}/${BPN}/.debug/moddatetime.so \
+    ${libdir}/${BPN}/.debug/pageinspect.so \
+    ${libdir}/${BPN}/.debug/pg_buffercache.so \
+    ${libdir}/${BPN}/.debug/pg_freespacemap.so \
+    ${libdir}/${BPN}/.debug/pg_trgm.so \
+    ${libdir}/${BPN}/.debug/pgcrypto.so ${libdir}/${BPN}/.debug/pgrowlocks.so \
+    ${libdir}/${BPN}/.debug/pgstattuple.so \
+    ${libdir}/${BPN}/.debug/pg_stat_statements.so \
+    ${libdir}/${BPN}/.debug/refint.so ${libdir}/${BPN}/.debug/seg.so \
+    ${libdir}/${BPN}/.debug/sslinfo.so \
+    ${libdir}/${BPN}/.debug/tablefunc.so \
+    ${libdir}/${BPN}/.debug/test_parser.so ${libdir}/${BPN}/.debug/timetravel.so \
+    ${libdir}/${BPN}/.debug/tsearch2.so ${libdir}/${BPN}/.debug/uuid-ossp.so \
+    ${libdir}/${BPN}/.debug/pgxml.so ${libdir}/${BPN}/.debug/passwordcheck.so \
+    ${libdir}/${BPN}/.debug/pg_upgrade_support.so \
+    ${libdir}/${BPN}/.debug/unaccent.so \
+"
+DESCRIPTION_${PN}-contrib = "The postgresql-contrib package contains \
+    contributed packages that are included in the PostgreSQL distribution."
+
+FILES_${PN}-pltcl = "${libdir}/${BPN}/pltcl.so ${bindir}/pltcl_delmod \
+    ${binddir}/pltcl_listmod ${bindir}/pltcl_loadmod  \
+    ${datadir}/${BPN}/unknown.pltcl"
+FILES_${PN}-pltcl-dbg = "${libdir}/${BPN}/.debug/pltcl.so"
+SUMMARY_${PN}-pltcl = "The Tcl procedural language for PostgreSQL"
+DESCRIPTION_${PN}-pltcl = "PostgreSQL is an advanced Object-Relational \
+    database management system.  The postgresql-pltcl package contains the PL/Tcl \
+    procedural language for the backend."
+
+FILES_${PN}-plperl = "${libdir}/${BPN}/plperl.so"
+FILES_${PN}-plperl-dbg = "${libdir}/${BPN}/.debug/plperl.so"
+SUMMARY_${PN}-plperl = "The Perl procedural language for PostgreSQL"
+DESCRIPTION_${PN}-plperl = "PostgreSQL is an advanced Object-Relational \
+    database management system.  The postgresql-plperl package contains the \
+    PL/Perl procedural language for the backend."
+
+# In version 8, it will be plpython.so
+# In version 9, it might be plpython{2,3}.so depending on python2 or 3
+FILES_${PN}-plpython = "${libdir}/${BPN}/plpython*.so"
+FILES_${PN}-plpython-dbg = "${libdir}/${BPN}/.debug/plpython*.so"
+SUMMARY_${PN}-plpython = "The Python procedural language for PostgreSQL"
+DESCRIPTION_${PN}-plpython = "PostgreSQL is an advanced Object-Relational \
+    database management system.  The postgresql-plpython package contains \
+    the PL/Python procedural language for the backend."
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/postgresql_9.4.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/postgresql_9.4.5.bb
new file mode 100644
index 0000000..54b660e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/postgresql/postgresql_9.4.5.bb
@@ -0,0 +1,14 @@
+require postgresql.inc
+
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=7d847a9b446ddfe187acfac664189672"
+
+PR = "${INC_PR}.0"
+
+SRC_URI += "\
+    file://remove.autoconf.version.check.patch \
+    file://not-check-libperl.patch \
+"
+
+SRC_URI[md5sum] = "8b2e3472a8dc786649b4d02d02e039a0"
+SRC_URI[sha256sum] = "b87c50c66b6ea42a9712b5f6284794fabad0616e6ae420cf0f10523be6d94a39"
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_git.bb
new file mode 100644
index 0000000..73c46ee
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_git.bb
@@ -0,0 +1,16 @@
+SUMMARY = "User-space tools for LinuxPPS"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+PV = "0.0.0+git${SRCPV}"
+SRCREV = "0deb9c7e135e9380a6d09e9d2e938a146bb698c8"
+SRC_URI = "git://github.com/ago/pps-tools.git"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+        install -d ${D}${bindir} ${D}${includedir} \
+                   ${D}${includedir}/sys
+        oe_runmake 'DESTDIR=${D}' install
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-compile-errors.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-compile-errors.patch
new file mode 100644
index 0000000..8341a8e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-compile-errors.patch
@@ -0,0 +1,606 @@
+From 898e9514bc889b4a540f667efed95a5af101c824 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 2 Dec 2014 07:00:36 +0900
+Subject: [PATCH 1/3] From debian to fix compile errors
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ src/Makefile.0  |  7 +++----
+ src/autoconf    | 64 +++++++++++++-------------------------------------------
+ src/comsat.c    | 65 +++++++++++++++++++--------------------------------------
+ src/fields.c    |  6 +++---
+ src/foldinfo.h  |  2 +-
+ src/formail.c   |  6 +++---
+ src/formisc.c   |  2 +-
+ src/formisc.h   |  2 +-
+ src/mailfold.c  | 14 ++++++++++---
+ src/manconf.c   |  2 +-
+ src/memblk.c    | 24 ++++++++++-----------
+ src/memblk.h    |  2 +-
+ src/network.h   | 10 ++-------
+ src/pipes.c     | 10 ++++-----
+ src/procmail.c  |  3 +--
+ src/recommend.c |  2 +-
+ 16 files changed, 81 insertions(+), 140 deletions(-)
+
+diff --git a/src/Makefile.0 b/src/Makefile.0
+index 6eb5b51..15a2039 100644
+--- a/src/Makefile.0
++++ b/src/Makefile.0
+@@ -40,7 +40,7 @@ multigram: multigram.$(O) $(MG_OBJ) setid
+ 	@cd ..; $(MAKE) config.check
+ 
+ _autotst: _autotst.$(O) sublib.c sublib.h
+-	$(CC) $(CFLAGS) $@.$(O) -o $@ $(LDFLAGS)
++	gcc $@.$(O) -o $@ $(LDFLAGS)
+ 
+ ../autoconf.h: autoconf Makefile ../patchlevel.h
+ 	@echo No this was not make -n >make_n
+@@ -175,17 +175,16 @@ recommend: recommend.$(O) sublib.$(O)
+ 
+ ../man/man.sed: manconf.c ../autoconf.h ../config.h includes.h procmail.h
+ ../man/man.sed: ../patchlevel.h
+-	@$(CC) $(CFLAGS) "-DBINDIR=\"$(VISIBLE_BINDIR)\"" -o _autotst \
++	gcc "-DBINDIR=\"$(VISIBLE_BINDIR)\"" -o _autotst \
+  manconf.c $(LDFLAGS)
+ 	@./_autotst $@
+ 	@echo Housekeeping file >$@
+-	@$(RM) _autotst
+ 
+ clean:
+ 	$(RM) -r _locktest
+ 	$(RM) procmail.$(O) $(PM_OBJ) lockfile.$(O) $(LF_OBJ) formail.$O \
+  $(FM_OBJ) multigram.$(O) $(MG_OBJ) $(BINSS) multigram ../autoconf.h \
+- _autotst* lookfor _locktst* grepfor recommend recommend.$(O) manconf \
++  lookfor _locktst* grepfor recommend recommend.$(O) manconf \
+  _Makefile lock.log *core* targetdir.h setid setid.$(O) gethome \
+  gethome.$(O) make_n realloc.log
+ 
+diff --git a/src/autoconf b/src/autoconf
+index 1cb4c42..ff78048 100755
+--- a/src/autoconf
++++ b/src/autoconf
+@@ -68,8 +68,6 @@
+ #	#define NOfsync
+ #Ok	#define endpwent()
+ #Ok	#define endgrent()
+-#Ok	#define endhostent()
+-#Ok	#define endservent()
+ #Ok	#define endprotoent()
+ #	#define h_0addr_list h_addr
+ #Ok	#define NOpw_passwd
+@@ -896,7 +894,7 @@ int main(){int i=0;
+  {uid_t vuid_t;i+=vuid_t=1;}
+  {gid_t vgid_t;i+=vgid_t=1;}
+ #ifndef NO_COMSAT
+- {struct hostent vhostent;i+=!(vhostent.h_addr_list=0);}
++ {struct addrinfo res; i+=!(res.ai_socktype=0);}
+ #endif
+ #ifndef NOuname
+  {struct utsname vutsname;i+=!(*vutsname.nodename='\0');}
+@@ -917,8 +915,6 @@ do
+   test -z "$i3" && grepfor mode_t 'typedef int mode_t;' && i3=I
+   test -z "$i4" && grepfor uid_t 'typedef int uid_t;' && i4=I
+   test -z "$i5" && grepfor gid_t 'typedef int gid_t;' && i5=I
+-  test -z "$i6" && grepfor h_addr_list '#define h_0addr_list h_addr' && i6=I
+-  test -z "$i6" && grepfor hostent '#define h_0addr_list h_addr' && i6=I
+   test -z "$i6" && grepfor member '#define h_0addr_list h_addr' && i6=I
+   test -z "$i7" && grepfor utsname "#define NOuname			      \
+ /* <sys/utsname.h> is there, but empty */" && i7=I
+@@ -1048,8 +1044,12 @@ int main(){char a[2];
+  {struct utsname b;uname(&b);}
+ #endif
+ #ifndef NO_COMSAT
+- gethostbyname("0");getprotobyname(COMSATprotocol);endhostent();endservent();
+- endprotoent();
++ {
++ struct addrinfo *res, hints;
++ memset(&hints, '\0', sizeof(hints));
++ if(getaddrinfo(COMSAThost,BIFF_serviceport,&hints,&res))
++ 	freeaddrinfo(res);
++ }
+ #endif
+  _exit(0);
+  return 0;}
+@@ -1103,14 +1103,9 @@ grepfor uname "\
+ /* <sys/utsname.h> defines it, the libraries don't */"
+ grepfor endpwent '#define endpwent()'
+ grepfor endgrent '#define endgrent()'
+-if grepfor gethostbyname '#define NO_COMSAT'
++if grepfor getaddrinfo '#define NO_COMSAT'
+ then
+ :
+-else
+-  grepfor getprotobyname '#define UDP_protocolno 17'
+-  grepfor endhostent '#define endhostent()'
+-  grepfor endservent '#define endservent()'
+-  grepfor endprotoent '#define endprotoent()'
+ fi
+ grepfor strstr '#define SLOWstrstr' ||
+  grepfor clock '#define SLOWstrstr'
+@@ -1239,39 +1234,9 @@ int main(argc,argv)int argc;const char*argv[];
+ 	printf("/* Insufficient memory to perform the benchmark! */\n");
+ #endif /* SLOWstrstr */
+ #ifndef NO_COMSAT
+-#ifndef UDP_protocolno
+-     ;{ const struct protoent*p;
+-	if(p=getprotobyname(COMSATprotocol))
+-	 { printf("#define UDP_protocolno %d\n",p->p_proto);
+-#else
+-     ;{ if(1)
+-	 {
+-#endif
+-	   ;{ const struct servent*serv;
+-	      if(serv=getservbyname(COMSATservice,COMSATprotocol))
+-		 printf("#define BIFF_serviceport \"%d\"\n",
+-		  ntohs(serv->s_port));
+-	    }
+-#ifdef AF_INET
+-	   ;{ const struct hostent*host;
+-	      if(!strcmp("localhost",COMSAThost)&&
+-	       (host=gethostbyname(COMSAThost))&&
+-	       host->h_0addr_list&&host->h_addrtype==AF_INET&&
+-	       host->h_length)
+-	       { int j=host->h_length;
+-		 const unsigned char*ad=(void*)host->h_0addr_list;
+-		 printf("#define IP_localhost {");
+-		 printf("%d",*ad++);
+-		 while(--j)
+-		    printf(",%d",*ad++);
+-		 puts("}");
+-	       }
+-	    }
++#ifndef AF_INET
++	puts("#define NO_COMSAT");
+ #endif /* AF_INET */
+-	 }
+-	else
+-	   puts("#define NO_COMSAT");
+-      }
+ #endif /* NO_COMSAT */
+      ;{ unsigned long s=(size_t)~0;int bits;
+ 	for(bits=1;s>>=1;bits++);
+@@ -1470,15 +1435,14 @@ cat /usr/lib/sendmail.cf /etc/sendmail.cf /etc/mail/sendmail.cf 2>$DEVNULL |
+  grep 'Mlocal.*procmail' >$DEVNULL ||
+  echo '#define CF_no_procmail_yet' >>$ACONF
+ 
+-cat /usr/lib/sendmail.cf /etc/sendmail.cf /etc/mail/sendmail.cf 2>$DEVNULL |
+- grep '^V' >$DEVNULL ||
+- echo '#define buggy_SENDMAIL' >>$ACONF
++# cat /usr/lib/sendmail.cf /etc/sendmail.cf /etc/mail/sendmail.cf 2>$DEVNULL |
++#  grep '^V' >$DEVNULL ||
++#  echo '#define buggy_SENDMAIL' >>$ACONF
+ 
+ lpath='/bin'
+ bins="/bin"
+ 
+-for newd in /usr/bin /usr/ucb /usr/5bin $BINDIR /local/bin /usr/local/bin \
+- /global/bin /usr/bin/X11 /usr/X*/bin
++for newd in /usr/bin $BINDIR /usr/bin/X11 /usr/X*/bin
+ do
+   if test -d $newd
+   then
+diff --git a/src/comsat.c b/src/comsat.c
+index 77dba34..5082b16 100644
+--- a/src/comsat.c
++++ b/src/comsat.c
+@@ -27,7 +27,8 @@ static /*const*/char rcsid[]=
+ #include "comsat.h"
+ 
+ static int csvalid;		     /* is it turned on with a good address? */
+-static struct sockaddr_in csaddr;
++static struct addrinfo cai;
++static struct sockaddr *csaddr;
+ static char*cslastf,*cslgname;
+ 
+ void setlfcs(folder)const char*folder;		/* set lastfolder for comsat */
+@@ -62,56 +63,32 @@ void setlgcs(name)const char*name;		   /* set logname for comsat */
+ }
+ 
+ int setcomsat(chp)const char*chp;
+-{ char*chad;int newvalid; struct sockaddr_in newaddr;
++{ char*chad;int newvalid; struct addrinfo *res, hints;
+   chad=strchr(chp,SERV_ADDRsep);			     /* @ separator? */
+   if(!chad&&!renvint(-1L,chp))
+      return csvalid=0;					/* turned off comsat */
+   newvalid=1;
+   if(chad)
+      *chad++='\0';				      /* split the specifier */
++  if(!chad||!*chp)					       /* no service */
++     chp=BIFF_serviceport;				/* new balls please! */
+   if(!chad||!*chad)						  /* no host */
+-#ifndef IP_localhost			      /* Is "localhost" preresolved? */
+      chad=COMSAThost;					/* nope, use default */
+-#else /* IP_localhost */
+-   { static const unsigned char ip_localhost[]=IP_localhost;
+-     newaddr.sin_family=AF_INET;
+-     tmemmove(&newaddr.sin_addr,ip_localhost,sizeof ip_localhost);
+-   }
+-  else
+-#endif /* IP_localhost */
+-   { const struct hostent*host;		      /* what host?  paranoid checks */
+-     if(!(host=gethostbyname(chad))||!host->h_0addr_list)
+-      { bbzero(&newaddr.sin_addr,sizeof newaddr.sin_addr);
+-	newvalid=0;			     /* host can't be found, too bad */
+-      }
+-     else
+-      { newaddr.sin_family=host->h_addrtype;	     /* address number found */
+-	tmemmove(&newaddr.sin_addr,host->h_0addr_list,host->h_length);
+-      }
+-     endhostent();
+-   }
+-  if(newvalid)						  /* so far, so good */
+-   { int s;
+-     if(!*chp)						       /* no service */
+-	chp=BIFF_serviceport;				/* new balls please! */
+-     s=strtol(chp,&chad,10);
+-     if(chp!=chad)			       /* the service is not numeric */
+-	newaddr.sin_port=htons((short)s);		    /* network order */
+-     else
+-      { const struct servent*serv;
+-	serv=getservbyname(chp,COMSATprotocol);		   /* so get its no. */
+-	if(serv)
+-	   newaddr.sin_port=serv->s_port;
+-	else
+-	 { newaddr.sin_port=htons((short)0);		  /* no such service */
+-	   newvalid=0;
+-	 }
+-	endservent();
+-      }
+-   }
++  bzero(&hints,sizeof(hints));
++  hints.ai_socktype=SOCK_DGRAM;
++  hints.ai_flags=AI_ADDRCONFIG;
++  if(getaddrinfo(chad,chp,&hints,&res))
++     newvalid=0;
++  
+   onguard();				    /* update the address atomically */
+   if(csvalid=newvalid)
+-     tmemmove(&csaddr,&newaddr,sizeof(newaddr));
++   { if(csaddr)
++        free(csaddr);
++     csaddr=malloc(res->ai_addrlen);
++     tmemmove(csaddr,res->ai_addr,res->ai_addrlen);
++     tmemmove(&cai,res,sizeof(cai));
++     freeaddrinfo(res);
++   }
+   offguard();
+   return newvalid;
+ }
+@@ -120,7 +97,7 @@ void sendcomsat(folder)const char*folder;
+ { int s;const char*p;
+   if(!csvalid||!buf)		  /* is comat on and set to a valid address? */
+      return;
+-  if(!*cslgname||strlen(cslgname)+2>linebuf)	       /* is $LOGNAME bogus? */
++  if(!cslgname||!*cslgname||strlen(cslgname)+2>linebuf)/* is $LOGNAME bogus? */
+      return;
+   if(!(p=folder?folder:cslastf))		     /* do we have a folder? */
+      return;
+@@ -132,8 +109,8 @@ void sendcomsat(folder)const char*folder;
+    }
+   strlcat(buf,COMSATxtrsep,linebuf);			 /* custom seperator */
+   strlcat(buf,p,linebuf);			  /* where was it delivered? */
+-  if((s=socket(AF_INET,SOCK_DGRAM,UDP_protocolno))>=0)
+-   { sendto(s,buf,strlen(buf),0,(struct sockaddr*)&csaddr,sizeof(csaddr));
++  if((s=socket(cai.ai_family,cai.ai_socktype,cai.ai_protocol))>=0)
++   { sendto(s,buf,strlen(buf),0,csaddr,cai.ai_addrlen);
+      rclose(s);
+      yell("Notified comsat:",buf);
+    }
+diff --git a/src/fields.c b/src/fields.c
+index a2bd77f..37ed154 100644
+--- a/src/fields.c
++++ b/src/fields.c
+@@ -110,16 +110,16 @@ void dispfield(p)register const struct field*p;
+ 		    /* try and append one valid field to rdheader from stdin */
+ int readhead P((void))
+ { int idlen;
+-  getline();
++  get_line();
+   if((idlen=breakfield(buf,buffilled))<=0) /* not the start of a valid field */
+      return 0;
+   if(idlen==STRLEN(FROM)&&eqFrom_(buf))			/* it's a From_ line */
+    { if(rdheader)
+ 	return 0;			       /* the From_ line was a fake! */
+-     for(;buflast=='>';getline());	    /* gather continued >From_ lines */
++     for(;buflast=='>';get_line());	    /* gather continued >From_ lines */
+    }
+   else
+-     for(;;getline())		      /* get the rest of the continued field */
++     for(;;get_line())		      /* get the rest of the continued field */
+       { switch(buflast)			     /* will this line be continued? */
+ 	 { case ' ':case '\t':				  /* yep, it sure is */
+ 	      continue;
+diff --git a/src/foldinfo.h b/src/foldinfo.h
+index 9e4ebb6..797f9be 100644
+--- a/src/foldinfo.h
++++ b/src/foldinfo.h
+@@ -10,7 +10,7 @@
+ 
+ #define ft_lock(type)	   ((type)>ft_MAILDIR)		   /* kernel lock fd */
+ #define ft_atime(type)	   ((type)==ft_FILE)	      /* force atime < mtime */
+-#define ft_dotlock(type)   ((type)==ft_FILE)		 /* dotlock $DEFAULT */
++#define ft_dotlock(type)   ((type)>ft_MAILDIR)		 /* dotlock $DEFAULT */
+ #define ft_delim(type)	   ((type)==ft_FILE)		   /* add MMDF delim */
+ #define ft_checkcloser(type) ((type)>ft_MH)
+ #define ft_forceblank(type) ((type)!=ft_MAILDIR)  /* force blank line at end */
+diff --git a/src/formail.c b/src/formail.c
+index fe5e6be..1f5c9dd 100644
+--- a/src/formail.c
++++ b/src/formail.c
+@@ -758,9 +758,9 @@ startover:
+ 	lputssn(buf,buffilled),ctlength-=buffilled,buffilled=lnl=0;
+      ;{ int tbl=buflast,lwr='\n';
+ 	while(--ctlength>=0&&tbl!=EOF)	       /* skip Content-Length: bytes */
+-	   lnl=lwr==tbl&&lwr=='\n',putcs(lwr=tbl),tbl=getchar();
++	   lnl=lwr==tbl&&lwr=='\n',lputcs(lwr=tbl),tbl=getchar();
+ 	if((buflast=tbl)=='\n'&&lwr!=tbl)	/* just before a line break? */
+-	   putcs('\n'),buflast=getchar();		/* wrap up loose end */
++	   lputcs('\n'),buflast=getchar();		/* wrap up loose end */
+       }
+      if(!quiet&&ctlength>0)
+       { charNUM(num,ctlength);
+@@ -819,7 +819,7 @@ splitit:       { if(!lnl)   /* did the previous mail end with an empty line? */
+       { if(split)		       /* gobble up the next start separator */
+ 	 { buffilled=0;
+ #ifdef sMAILBOX_SEPARATOR
+-	   getline();buffilled=0;		 /* but only if it's defined */
++	   get_line();buffilled=0;		 /* but only if it's defined */
+ #endif
+ 	   if(buflast!=EOF)					   /* if any */
+ 	      goto splitit;
+diff --git a/src/formisc.c b/src/formisc.c
+index d6cab90..338733b 100644
+--- a/src/formisc.c
++++ b/src/formisc.c
+@@ -115,7 +115,7 @@ void loadchar(c)const int c;		      /* append one character to buf */
+   buf[buffilled++]=c;
+ }
+ 
+-int getline P((void))			   /* read a newline-terminated line */
++int get_line P((void))			   /* read a newline-terminated line */
+ { if(buflast==EOF)			 /* at the end of our Latin already? */
+    { loadchar('\n');					  /* fake empty line */
+      return EOF;					  /* spread the word */
+diff --git a/src/formisc.h b/src/formisc.h
+index 1c4ca20..f25211c 100644
+--- a/src/formisc.h
++++ b/src/formisc.h
+@@ -17,4 +17,4 @@ void
+ char*
+  skipwords P((char*start));
+ int
+- getline P((void));
++ get_line P((void));
+diff --git a/src/mailfold.c b/src/mailfold.c
+index 917b502..6c8bcf4 100644
+--- a/src/mailfold.c
++++ b/src/mailfold.c
+@@ -30,6 +30,7 @@ static /*const*/char rcsid[]=
+ 
+ int logopened,rawnonl;
+ off_t lasttell;
++static int trunced;
+ static long lastdump;
+ static volatile int mailread;	/* if the mail is completely read in already */
+ static struct dyna_array confield;		  /* escapes, concatenations */
+@@ -81,6 +82,7 @@ long dump(s,type,source,len)const int s,type;const char*source;
+  long len;
+ { int i;long part;
+   lasttell=i= -1;SETerrno(EBADF);
++  trunced=0;
+   if(s>=0)
+    { if(ft_lock(type)&&(lseek(s,(off_t)0,SEEK_END),fdlock(s)))
+ 	nlog("Kernel-lock failed\n");
+@@ -120,13 +122,18 @@ jin:	while(part&&(i=rwrite(s,source,BLKSIZ<part?BLKSIZ:(int)part)))
+       }
+ writefin:
+      i=type!=ft_PIPE&&fsync(s)&&errno!=EINVAL;	  /* EINVAL => wasn't a file */
++     if ((i||len)&&lasttell>=0)
++      { int serrno=errno;
++	if(!ftruncate(s,lasttell)) trunced=1;
++	SETerrno(serrno);
++      }
+      if(ft_lock(type))
+       { int serrno=errno;		       /* save any error information */
+ 	if(fdunlock())
+ 	   nlog("Kernel-unlock failed\n");
+ 	SETerrno(serrno);
+       }
+-     i=rclose(s)||i;
++     i=rclose(s)||i; /* if this fails, we should truncate, but it's too late */
+    }			   /* return an error even if nothing was to be sent */
+   return i&&!len?-1:len;
+ }
+@@ -237,7 +244,7 @@ dumpf:	 { switch(errno)
+ #endif
+ 	      default:writeerr(buf);
+ 	    }
+-	   if(lasttell>=0&&!truncate(boxname,lasttell)&&(logopened||verbose))
++	   if(lasttell>=0&&trunced&&(logopened||verbose))
+ 	      nlog("Truncated file to former size\n");	    /* undo garbage */
+ ret0:	   return 0;
+ 	 }
+@@ -378,7 +385,8 @@ void readmail(rhead,tobesent)const long tobesent;
+ 	dfilled=mailread=0;
+      else if(rhead)				/* only read in a new header */
+       { memblk new;
+-	dfilled=mailread=0;makeblock(&new,0);readdyn(&new,&dfilled,0);
++	dfilled=mailread=0;makeblock(&new,0);
++	readdyn(&new,&dfilled,thebody-themail.p);
+ 	if(tobesent>dfilled&&isprivate)		     /* put it in place here */
+ 	 { tmemmove(themail.p+dfilled,thebody,filled-=tobesent);
+ 	   tmemmove(themail.p,new.p,dfilled);
+diff --git a/src/manconf.c b/src/manconf.c
+index a9e9f1c..5c8ec36 100644
+--- a/src/manconf.c
++++ b/src/manconf.c
+@@ -233,7 +233,7 @@ a security violation was found (e.g. \1.B \2-@PRESERVOPT@\1or variable\
+  \2-@PRESERVOPT@\1and\1.BR \2-@FROMWHOPT@ .\1");
+   pc("LMTPOPT",LMTPOPT);
+ #else
+-  ps("LMTPOPTdesc","");ps("LMTPusage","");
++  ps("LMTPOPTdesc","");ps("LMTPusage","\1");
+ #endif
+   pname("INIT_UMASK",0);printf("0%lo/g\n",(unsigned long)INIT_UMASK);lines--;
+   pn("DEFlinebuf",DEFlinebuf);
+diff --git a/src/memblk.c b/src/memblk.c
+index e2f13f0..97e02d3 100644
+--- a/src/memblk.c
++++ b/src/memblk.c
+@@ -51,11 +51,11 @@ void lockblock(mb)memblk*const mb;
+ {
+ #ifdef USE_MMAP
+   if(mb->fd>=0)
+-   { long len=mb->len+1;
+-     if(munmap(mb->p,len))
+-	mmapfailed(len);		      /* don't want to continue here */
+-     if((mb->p=mmap(0,len,PROT_READ,MAP_PRIVATE,mb->fd,(off_t)0))==MAP_FAILED)
+-	mmapfailed(len);
++   { long mlen=mb->len+1;
++     if(munmap(mb->p,mlen))
++	mmapfailed(mlen);		      /* don't want to continue here */
++     if((mb->p=mmap(0,mlen,PROT_READ,MAP_PRIVATE,mb->fd,(off_t)0))==MAP_FAILED)
++	mmapfailed(mlen);
+      close(mb->fd);
+      mb->fd=ropen(devnull,O_RDWR,0);		/* XXX Perhaps -1 is better? */
+    }
+@@ -77,8 +77,8 @@ int resizeblock(mb,len,nonfatal)memblk*const mb;const long len;
+      strcpy(filename,MMAP_DIR);
+      if(unique(filename,strchr(filename,'\0'),MMAP_FILE_LEN,MMAP_PERM,0,0)&&
+ 	(mb->fd=ropen(filename,O_RDWR,MMAP_PERM),unlink(filename),mb->fd>=0))
+-      { mb->filelen=len;
+-	if(lseek(mb->fd,mb->filelen-1,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
++      { mb->filelen=len+1;
++	if(lseek(mb->fd,len,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
+ dropf:	 { close(mb->fd);mb->fd= -1;
+ 	   if(verbose)nlog("Unable to extend or use tempfile");
+ 	 }
+@@ -98,9 +98,9 @@ dropf:	 { close(mb->fd);mb->fd= -1;
+       }
+    }
+   if(mb->fd>=0)
+-   { if(len>mb->filelen)				  /* need to extend? */
+-      { mb->filelen=len;
+-	if(lseek(mb->fd,mb->filelen-1,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
++   { if(len>=mb->filelen)				  /* need to extend? */
++      { mb->filelen=len+1;
++	if(lseek(mb->fd,len,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
+ 	 { char*p=malloc(len+1);	   /* can't extend, switch to malloc */
+ 	   tmemmove(p,mb->p,mb->len);
+ 	   munmap(mb->p,mb->len+1);
+@@ -124,9 +124,9 @@ mmap:	if((mb->p=mmap(0,len+1,P_RW,MAP_SHARED,mb->fd,(off_t)0))==MAP_FAILED)
+    }
+   else
+      mb->p=realloc(mb->p,len+1);
+-  mb->len=len+1;
+-  mb->p[len]='\0';
++  mb->len=len;
+ ret1:
++  mb->p[len]='\0';
+   return 1;
+ }
+ 
+diff --git a/src/memblk.h b/src/memblk.h
+index 6fd1d1d..b57f369 100644
+--- a/src/memblk.h
++++ b/src/memblk.h
+@@ -1,6 +1,6 @@
+ typedef struct memblk {
+     char*p;						  /* where it starts */
+-    long len;					 /* currently allocated size */
++    long len;			 /* current size, not including trailing NUL */
+ #ifdef USE_MMAP
+     off_t filelen;				     /* how long is the file */
+     int fd;					   /* file which is mmap()ed */
+diff --git a/src/network.h b/src/network.h
+index d7d08f2..b09b6c4 100644
+--- a/src/network.h
++++ b/src/network.h
+@@ -1,19 +1,13 @@
+ /*$Id: network.h,v 1.7 1997/04/02 03:15:41 srb Exp $*/
+ 
+-#include <sys/socket.h>			/* socket() sendto() AF_INET
++#include <sys/socket.h>			/* socket() sendto() */
+ 					/* SOCK_DGRAM */
+-#include <netdb.h>			/* gethostbyname() getservbyname()
+-					/* getprotobyname() */
+-#include <netinet/in.h>			/* htons() struct sockaddr_in */
++#include <netdb.h>			/* getaddrinfo() */
+ 
+ #ifndef BIFF_serviceport
+ #define BIFF_serviceport	COMSATservice
+ #endif
+ 
+-#ifndef h_0addr_list
+-#define h_0addr_list	h_addr_list[0]		      /* POSIX struct member */
+-#endif
+-
+ #ifndef NO_const      /* since network.h is outside the autoconf const check */
+ #ifdef const		    /* loop, we need this backcheck for some systems */
+ #undef const
+diff --git a/src/pipes.c b/src/pipes.c
+index 1fdb9e6..7754300 100644
+--- a/src/pipes.c
++++ b/src/pipes.c
+@@ -145,7 +145,9 @@ int pipthrough(line,source,len)char*line,*source;const long len;
+   if(Stdout)
+    { *(eq=strchr(Stdout,'\0')-1)='\0';			     /* chop the '=' */
+      if(!(backblock=getenv(Stdout)))			/* no current value? */
+-	PRDB=PWRB= -1;
++      { PRDB=PWRB= -1;
++	backlen=0;
++      }
+      else
+       { backlen=strlen(backblock);
+ 	goto pip;
+@@ -155,9 +157,7 @@ int pipthrough(line,source,len)char*line,*source;const long len;
+ pip: rpipe(pbackfd);
+   rpipe(pinfd);						 /* main pipes setup */
+   if(!(pidchild=sfork()))			/* create a sending procmail */
+-   { if(Stdout&&backblock)
+-	backlen=strlen(backblock);
+-     else
++   { if(!Stdout)
+ 	backblock=source,backlen=len;
+      childsetup();rclose(PRDI);rclose(PRDB);
+      rpipe(poutfd);rclose(STDOUT);
+@@ -194,7 +194,7 @@ perr:	      progerr(line,excode,pwait==4);  /* I'm going to tell my mommy! */
+      makeblock(&temp,Stdfilled);
+      tmemmove(temp.p,Stdout,Stdfilled);
+      readdyn(&temp,&Stdfilled,Stdfilled+backlen+1);
+-     Stdout=realloc(Stdout,&Stdfilled+1);
++     Stdout=realloc(Stdout,Stdfilled+1);
+      tmemmove(Stdout,temp.p,Stdfilled+1);
+      freeblock(&temp);
+      retStdout(Stdout,pwait&&pipw,!backblock);
+diff --git a/src/procmail.c b/src/procmail.c
+index 4a232f2..2bb449b 100644
+--- a/src/procmail.c
++++ b/src/procmail.c
+@@ -652,8 +652,7 @@ commint:do skipspace();					  /* skip whitespace */
+ 	      nrcond= -1;
+ 	   if(tolock)		 /* clear temporary buffer for lockfile name */
+ 	      free(tolock);
+-	   for(i=maxindex(flags);i;i--)			  /* clear the flags */
+-	      flags[i]=0;
++	   bbzero(flags,sizeof(flags));		  /* clear the flags */
+ 	   for(tolock=0,locknext=0;;)
+ 	    { chp=skpspace(chp);
+ 	      switch(i= *chp++)
+diff --git a/src/recommend.c b/src/recommend.c
+index 5d41e01..9002268 100644
+--- a/src/recommend.c
++++ b/src/recommend.c
+@@ -47,7 +47,7 @@ int main(argc,argv)const int argc;const char*const argv[];
+      printf("chmod %lo %s\n",(unsigned long)(sgid|PERMIS),argv[2]);
+   else if(chmdir==1)
+      goto nogchmod;
+-  if(chmdir)
++  if(0)
+      printf("chmod %c+w %s/.\n",chmdir==1?'g':'a',mailspooldir);
+ nogchmod:
+   return EXIT_SUCCESS;
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-man-file.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-man-file.patch
new file mode 100644
index 0000000..7b3c643
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-man-file.patch
@@ -0,0 +1,83 @@
+From 3cbc5e6e624235f9ba40cfd5a2b18c11be371399 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 2 Dec 2014 07:02:01 +0900
+Subject: [PATCH 2/3] From debian to fix man file
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ man/procmail.man   | 24 +++++++++++++++++-------
+ man/procmailrc.man |  2 +-
+ 2 files changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/man/procmail.man b/man/procmail.man
+index 175043a..1274ce8 100644
+--- a/man/procmail.man
++++ b/man/procmail.man
+@@ -44,11 +44,11 @@ at the end.
+ should be invoked automatically over the
+ .B @DOT_FORWARD@
+ file mechanism as soon as mail arrives.  Alternatively, when installed by
+-a system administrator, it can be invoked from within the mailer immediately.
+-When invoked, it first sets some environment variables to default values,
+-reads the mail message from stdin until an EOF, separates the body from the
+-header, and then, if no command line arguments are present, it starts to look
+-for a file named
++a system administrator (and in the standard Red Hat Linux configuration), it
++can be invoked from within the mailer immediately.  When invoked, it
++first sets some environment variables to default values, reads the mail message from
++stdin until an EOF, separates the body from the header, and then, if no command line
++arguments are present, it starts to look for a file named
+ .BR @PROCMAILRC@ .
+ According to the processing recipes in this file,
+ the mail message that just arrived gets distributed into the right folder
+@@ -166,7 +166,8 @@ must be specified on the command line.  After the rcfile, procmail will
+ accept an unlimited number of arguments.@ETCRCS_desc@
+ For some advanced usage of this option you should look in the
+ .B EXAMPLES
+-section below.@LMTPOPTdesc@.SH ARGUMENTS
++section below.@LMTPOPTdesc@
++.SH ARGUMENTS
+ Any arguments containing an '=' are considered to be environment variable
+ assignments, they will
+ .I all
+@@ -723,6 +724,15 @@ path.@FW_comment@
+ .fi
+ .ad
+ .PP
++Some mailers (notably exim) do not currently accept the above syntax.
++In such case use this instead:
++.PP
++.na
++.nf
++|/usr/bin/procmail
++.fi
++.ad
++.PP
+ Procmail can also be invoked to postprocess an already filled system
+ mailbox.  This can be useful if you don't want to or can't use a
+ $HOME/@DOT_FORWARD@ file (in which case the following script could
+@@ -754,7 +764,7 @@ exit 0
+ .SS "A sample small @PROCMAILRC@:"
+ .na
+ .nf
+-PATH=/bin:/usr/bin:@BINDIR@
++PATH=/usr/local/bin:/usr/bin:/bin
+ MAILDIR=$HOME/Mail      #you'd better make sure it exists
+ DEFAULT=$MAILDIR/mbox   #completely optional
+ LOGFILE=$MAILDIR/from   #recommended
+diff --git a/man/procmailrc.man b/man/procmailrc.man
+index 472035f..7bf08dd 100644
+--- a/man/procmailrc.man
++++ b/man/procmailrc.man
+@@ -779,7 +779,7 @@ one trailing newline will be stripped.
+ .PP
+ Some non-optimal and non-obvious regexps set MATCH to an incorrect
+ value.  The regexp can be made to work by removing one or more unneeded
+-'*', '+', or '?' operator on the left-hand side of the \e/ token.
++\&'*', '+', or '?' operator on the left-hand side of the \e/ token.
+ .SH MISCELLANEOUS
+ If the regular expression contains `\fB@TO_key@\fP' it will be substituted by
+ .na
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/from-debian-to-modify-parameters.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/from-debian-to-modify-parameters.patch
new file mode 100644
index 0000000..a94e436
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/from-debian-to-modify-parameters.patch
@@ -0,0 +1,127 @@
+From 95c742242769721f963c50702e1445fb70c6a45a Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 2 Dec 2014 07:07:33 +0900
+Subject: [PATCH 3/3] From debian to modify parameters
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ Makefile | 16 ++++++++--------
+ config.h | 13 +++++++------
+ 2 files changed, 15 insertions(+), 14 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 1e9568c..9e48201 100644
+--- a/Makefile
++++ b/Makefile
+@@ -23,7 +23,7 @@ MAN5DIR		= $(MANDIR)/man$(MAN5SUFFIX)
+ 
+ # Uncomment to install compressed man pages (possibly add extra suffix
+ # to the definitions of MAN?DIR and/or MAN?SUFFIX by hand)
+-#MANCOMPRESS = compress
++# MANCOMPRESS = compress
+ 
+ ############################*#
+ # Things that can be made are:
+@@ -55,7 +55,7 @@ MAN5DIR		= $(MANDIR)/man$(MAN5SUFFIX)
+ 
+ LOCKINGTEST=__defaults__
+ 
+-#LOCKINGTEST=/tmp .	# Uncomment and add any directories you see fit.
++LOCKINGTEST=/tmp .	# Uncomment and add any directories you see fit.
+ #			If LOCKINGTEST is defined, autoconf will NOT
+ #			prompt you to enter additional directories.
+ #			See INSTALL for more information about the
+@@ -65,7 +65,7 @@ LOCKINGTEST=__defaults__
+ # Only edit below this line if you *think* you know what you are doing #
+ ########################################################################
+ 
+-#LOCKINGTEST=100	# Uncomment (and change) if you think you know
++LOCKINGTEST=100	# Uncomment (and change) if you think you know
+ #			it better than the autoconf lockingtests.
+ #			This will cause the lockingtests to be hotwired.
+ #			100	to enable fcntl()
+@@ -74,20 +74,20 @@ LOCKINGTEST=__defaults__
+ #			Or them together to get the desired combination.
+ 
+ # Optional system libraries we search for
+-SEARCHLIBS = -lm -ldir -lx -lsocket -lnet -linet -lnsl_s -lnsl_i -lnsl -lsun \
+- -lgen -lsockdns -ldl
++SEARCHLIBS = -lm -ldir -lx -lsocket -lnet -linet -lnsl_s -lnsl_i -lsun \
++ -lgen -lsockdns
+ #			-lresolv	# not really needed, is it?
+ 
+ # Informal list of directories where we look for the libraries in SEARCHLIBS
+-LIBPATHS=/lib /usr/lib /usr/local/lib
++LIBPATHS=/lib /usr/lib
+ 
+ GCC_WARNINGS = -O2 -pedantic -Wreturn-type -Wunused -Wformat -Wtraditional \
+  -Wpointer-arith -Wconversion -Waggregate-return \
+  #-Wimplicit -Wshadow -Wid-clash-6 #-Wuninitialized
+ 
+ # The place to put your favourite extra cc flag
+-CFLAGS0 = -O #$(GCC_WARNINGS)
+-LDFLAGS0= -s
++CFLAGS0 = $(RPM_OPT_FLAGS) #$(GCC_WARNINGS)
++LDFLAGS0= 
+ # Read my libs :-)
+ LIBS=
+ 
+diff --git a/config.h b/config.h
+index c4135a9..a07453f 100644
+--- a/config.h
++++ b/config.h
+@@ -35,7 +35,8 @@
+  */
+ /*#define DEFSPATH	"PATH=/bin:/usr/bin"			/* */
+ /*#define DEFPATH	"PATH=$HOME/bin:/bin:/usr/bin"		/* */
+-
++#define DEFPATH	"PATH=$HOME/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin"		/* */
++ 
+ /* every environment variable appearing in PRESTENV will be set or wiped
+  * out of the environment (variables without an '=' sign will be thrown
+  * out), e.g. you could define PRESTENV as follows:
+@@ -46,13 +47,13 @@
+  */
+ #define PRESTENV	{"IFS","ENV","PWD",0}
+ 
+-/*#define GROUP_PER_USER			/* uncomment this if each
++#define GROUP_PER_USER			/* uncomment this if each
+ 						   user has his or her own
+ 	group and procmail can therefore trust a $HOME/.procmailrc that
+ 	is group writable or contained in a group writable home directory
+ 	if the group involved is the user's default group. */
+ 
+-/*#define LMTP					/* uncomment this if you
++#define LMTP					/* uncomment this if you
+ 						   want to use procmail
+ 	as an LMTP (rfc2033) server, presumably for invocation by an MTA.
+ 	The file examples/local_procmail_lmtp.m4 contains info on how to
+@@ -79,7 +80,7 @@
+ 
+ /*#define NO_fcntl_LOCK		/* uncomment any of these three if you	     */
+ /*#define NO_lockf_LOCK		/* definitely do not want procmail to make   */
+-/*#define NO_flock_LOCK		/* use of those kernel-locking methods	     */
++#define NO_flock_LOCK		/* use of those kernel-locking methods	     */
+ 				/* If you set LOCKINGTEST to a binary number
+ 	than there's no need to set these.  These #defines are only useful
+ 	if you want to disable particular locking styles but are unsure which
+@@ -91,14 +92,14 @@
+ 	restriction does not apply to the /etc/procmailrc and
+ 	/etc/procmailrcs files) */
+ 
+-/*#define NO_NFS_ATIME_HACK	/* uncomment if you're definitely not using
++#define NO_NFS_ATIME_HACK	/* uncomment if you're definitely not using
+ 				   NFS mounted filesystems and can't afford
+ 	procmail to sleep for 1 sec. before writing to an empty regular
+ 	mailbox.  This lets programs correctly judge whether there is unread
+ 	mail present.  procmail automatically suppresses this when it isn't
+ 	needed or under heavy load. */
+ 
+-/*#define DEFsendmail	"/usr/sbin/sendmail"	/* uncomment and/or change if
++#define DEFsendmail	"/usr/sbin/sendmail"	/* uncomment and/or change if
+ 						   the autoconfigured default
+ 	SENDMAIL is not suitable.  This program should quack like a sendmail:
+ 	it should accept the -oi flag (to tell it to _not_ treat a line
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/man-file-mailstat.1-from-debian.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/man-file-mailstat.1-from-debian.patch
new file mode 100644
index 0000000..46d973e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail/man-file-mailstat.1-from-debian.patch
@@ -0,0 +1,60 @@
+From 8ac56108e5f0a72d1bec0fb4f1fa4763a2479331 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Tue, 2 Dec 2014 06:56:14 +0900
+Subject: [PATCH] man file mailstat.1 from debian
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ debian/mailstat.1 | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+ create mode 100644 debian/mailstat.1
+
+diff --git a/debian/mailstat.1 b/debian/mailstat.1
+new file mode 100644
+index 0000000..f13265a
+--- /dev/null
++++ b/debian/mailstat.1
+@@ -0,0 +1,40 @@
++.TH MAILSTAT 1
++.SH NAME
++mailstat \- shows mail-arrival statistics
++.SH SYNOPSIS
++.B mailstat
++[\-klmots] [logfile]
++.SH DESCRIPTION
++.B mailstat
++parses a procmail-generated $LOGFILE and displays
++a summary about the messages delivered to all folders
++(total size, average size, nr of messages).
++The $LOGFILE is truncated to zero length, unless the
++.B -k
++option is used.
++Exit code 0 if mail arrived, 1 if no mail arrived.
++.SH OPTIONS
++.TP
++.I \-k
++keep logfile intact
++.TP
++.I \-l
++long display format
++.TP
++.I \-m
++merge any errors into one line
++.TP
++.I \-o
++use the old logfile
++.TP
++.I \-t
++terse display format
++.TP
++.I \-s
++silent in case of no mail
++.SH NOTES
++Customise to your heart's content, this program is only provided as a
++guideline.
++.SH AUTHOR
++This manual page was written by Santiago Vila <sanvila@debian.org>
++for the Debian GNU/Linux distribution (but may be used by others).
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb
new file mode 100644
index 0000000..1063654
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb
@@ -0,0 +1,44 @@
+SUMMARY = "Mail processing program"
+DESCRIPTION = "Procmail can be used to create mail-servers, mailing lists, sort your\
+incoming mail into separate folders/files (real convenient when subscribing\
+to one or more mailing lists or for prioritising your mail), preprocess\
+your mail, start any programs upon mail arrival (e.g. to generate different\
+chimes on your workstation for different types of mail) or selectively\
+forward certain incoming mail automatically to someone."
+HOMEPAGE = "http://www.procmail.org/"
+SECTION = "Applications/System"
+
+SRC_URI = "http://www.ring.gr.jp/archives/net/mail/${BPN}/${BP}.tar.gz \
+    file://from-debian-to-fix-compile-errors.patch \
+    file://from-debian-to-modify-parameters.patch \
+    file://from-debian-to-fix-man-file.patch \
+    file://man-file-mailstat.1-from-debian.patch"
+SRC_URI[md5sum] = "1678ea99b973eb77eda4ecf6acae53f1"
+SRC_URI[sha256sum] = "087c75b34dd33d8b9df5afe9e42801c9395f4bf373a784d9bc97153b0062e117"
+
+LICENSE = "GPL-2.0 & Artistic-1.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a71e50e197a992c862379e576e669757 \
+    file://Artistic;md5=505e00d03c3428cde21b17b2a386590e"
+
+DEPENDS = "libnet"
+inherit autotools-brokensep
+do_configure() {
+    find examples -type f | xargs chmod 644
+    export CC="${BUILD_CC}"
+    export LD="${BUILD_LD}"
+    export CFLAGS="${BUILD_CFLAGS}"
+    export AR="${BUILD_AR}"
+    export AS="${BUILD_AS}"
+    make TARGET_CFLAGS="$TARGET_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" autoconf.h
+}
+
+do_compile() {
+    oe_runmake -i TARGET_CFLAGS="$TARGET_CFLAGS -Wno-comments -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -d ${D}${mandir}/man{1,5}
+    oe_runmake -i BASENAME=${D}/usr MANDIR=${D}${mandir} install
+    install -m 0644 debian/mailstat.1 ${D}${mandir}/man1
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pv/pv_1.5.3.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/pv/pv_1.5.3.bb
new file mode 100644
index 0000000..5e3dd67
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pv/pv_1.5.3.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Terminal-based tool for monitoring the progress of data through a pipeline"
+
+LICENSE = "Artistic-2.0"
+LIC_FILES_CHKSUM = "file://doc/COPYING;md5=9c50db2589ee3ef10a9b7b2e50ce1d02"
+
+SRC_URI = "http://www.ivarch.com/programs/sources/pv-${PV}.tar.bz2"
+SRC_URI[md5sum] = "efe8e9e4cad5f3264a32258a63bf2c8e"
+SRC_URI[sha256sum] = "76f3999b1c3b3027163dce6ef667cdf8dafb75218ee25e54a03bfe590478f90e"
+
+inherit autotools
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/Makefile b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/Makefile
new file mode 100644
index 0000000..00b7d52
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/Makefile
@@ -0,0 +1,3 @@
+
+
+all: pxaregs
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/i2c.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/i2c.patch
new file mode 100644
index 0000000..36983ec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/i2c.patch
@@ -0,0 +1,15 @@
+Index: pxaregs-1.14/pxaregs.c
+===================================================================
+--- pxaregs-1.14.orig/pxaregs.c
++++ pxaregs-1.14/pxaregs.c
+@@ -21,10 +21,6 @@
+ #include <fcntl.h>
+ #include <ctype.h>
+ 
+-#include <linux/i2c.h>
+-#include <linux/i2c-dev.h>
+-
+-
+ // fd for /dev/mem
+ static int fd = -1;
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/munmap.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/munmap.patch
new file mode 100644
index 0000000..a9c4b95
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/munmap.patch
@@ -0,0 +1,22 @@
+Index: pxaregs-1.14/pxaregs.c
+===================================================================
+--- pxaregs-1.14.orig/pxaregs.c
++++ pxaregs-1.14/pxaregs.c
+@@ -1794,7 +1794,7 @@ static int getmem(u32 addr)
+    regaddr = map + (addr & MAP_MASK);
+ 
+    val = *(u32*) regaddr;
+-   munmap(0,MAP_SIZE);
++   munmap(map,MAP_SIZE);
+ 
+    return val;
+ }
+@@ -1829,7 +1829,7 @@ static void putmem(u32 addr, u32 val)
+    regaddr = map + (addr & MAP_MASK);
+ 
+    *(u32*) regaddr = val;
+-   munmap(0,MAP_SIZE);
++   munmap(map,MAP_SIZE);
+ }
+ 
+ static u32 lastaddr = 0;
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/pxaregs.c b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/pxaregs.c
new file mode 100644
index 0000000..062e758
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/pxaregs.c
@@ -0,0 +1,1975 @@
+/*
+ * pxaregs - tool to display and modify PXA250's registers at runtime
+ *
+ * (c) Copyright 2002 by M&N Logistik-Lösungen Online GmbH
+ * set under the GPLv2
+ *
+ * $Id: pxaregs.c,v 1.14 2003/11/12 13:14:43 schurig Exp $
+ *
+ * Please send patches to h.schurig, working at mn-logistik.de
+ * - added fix from Bernhard Nemec
+ * - i2c registers from Stefan Eletzhofer
+*/
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <ctype.h>
+
+#include <linux/i2c.h>
+#include <linux/i2c-dev.h>
+
+
+// fd for /dev/mem
+static int fd = -1;
+
+typedef unsigned int u32;
+
+struct reg_info {
+   char *name;
+   u32 addr;
+   int shift;
+   u32 mask;
+   char type;
+   char *desc;
+};
+
+
+static struct reg_info regs[] = {
+{ "IBMR",      0x40301680,  0, 0xffffffff, 'x', "I2C Bus Monitor Register" },
+{ "IBMR_SDAS", 0x40301680,  0, 0x00000001, 'x', "SDA Status" },
+{ "IBMR_SCLS", 0x40301680,  1, 0x00000001, 'x', "SDA Status" },
+
+{ "IDBR",      0x40301688,  0, 0xffffffff, 'x', "I2C Data Buffer Register" },
+{ "IDBR_IDB",  0x40301688,  0, 0x000000ff, 'x', "I2C Data Buffer" },
+
+{ "ICR",       0x40301690,  0, 0xffffffff, 'x', "I2C Control Register" },
+{ "ICR_START", 0x40301690,  0,	1, 'x',  " start bit " },
+{ "ICR_STOP",  0x40301690,  1,	1, 'x',  " stop bit " },
+{ "ICR_ACKNAK",0x40301690,  2,	1, 'x',  " send ACK(0) or NAK(1)" },
+{ "ICR_TB",    0x40301690,  3,	1, 'x',  " transfer byte bit " },
+{ "ICR_MA",    0x40301690,  4,	1, 'x',  " master abort " },
+{ "ICR_SCLE",  0x40301690,  5,	1, 'x',  " master clock enable " },
+{ "ICR_IUE",   0x40301690,  6,	1, 'x',  " unit enable " },
+{ "ICR_GCD",   0x40301690,  7,	1, 'x',  " general call disable " },
+{ "ICR_ITEIE", 0x40301690,  8,	1, 'x',  " enable tx interrupts " },
+{ "ICR_IRFIE", 0x40301690,  9,	1, 'x',  " enable rx interrupts " },
+{ "ICR_BEIE",  0x40301690,  10,	1, 'x',  " enable bus error ints " },
+{ "ICR_SSDIE", 0x40301690,  11,	1, 'x',  " slave STOP detected int enable " },
+{ "ICR_ALDIE", 0x40301690,  12,	1, 'x',  " enable arbitration interrupt " },
+{ "ICR_SADIE", 0x40301690,  13,	1, 'x',  " slave address detected int enable " },
+{ "ICR_UR",    0x40301690,  14, 1, 'x',  " unit reset " },
+{ "ICR_FM",    0x40301690,  15, 1, 'x',  " fast mode " },
+
+{ "ISR",       0x40301698, 0, 0xffffffff, 'x', "I2C Status Register" },
+{ "ISR_RWM",   0x40301698, 0, 1, 'x', " read/write mode " },
+{ "ISR_ACKNAK",0x40301698, 1, 1, 'x', " ack/nak status " },
+{ "ISR_UB",    0x40301698, 2, 1, 'x', " unit busy " },
+{ "ISR_IBB",   0x40301698, 3, 1, 'x', " bus busy " },
+{ "ISR_SSD",   0x40301698, 4, 1, 'x', " slave stop detected " },
+{ "ISR_ALD",   0x40301698, 5, 1, 'x', " arbitration loss detected " },
+{ "ISR_ITE",   0x40301698, 6, 1, 'x', " tx buffer empty " },
+{ "ISR_IRF",   0x40301698, 7, 1, 'x', " rx buffer full " },
+{ "ISR_GCAD",  0x40301698, 8, 1, 'x', " general call address detected " },
+{ "ISR_SAD",   0x40301698, 9, 1, 'x', " slave address detected " },
+{ "ISR_BED",   0x40301698, 10, 1, 'x', " bus error no ACK/NAK " },
+
+{ "ISAR",      0x403016A0,  0, 0xffffffff, 'x', "I2C Slave Address Register" },
+{ "ISAR_SA",   0x403016A0,  0, 0x0000007f, 'x', "I2C Slave Address" },
+
+{ "PMCR",      0x40F00000,  0, 0xffffffff, 'x', "Power Manager Control Register (3-23)" },
+{ "PMCR_IDAE", 0x40F00000,  0, 0x00000001, 'd', "PM imprecise data abort abort signal" },
+
+{ "PSSR",      0x40F00004,  0, 0xffffffff, 'x', "Power Manager Sleep Status Register (3-29)" },
+{ "PSSR_SSS",  0x40F00004,  0, 0x00000001, 'd', "PM chip was in sleep by setting sleep mode bit" },
+{ "PSSR_BFS",  0x40F00004,  1, 0x00000001, 'd', "PM nBATT_FAULT has been asserted" },
+{ "PSSR_VFS",  0x40F00004,  2, 0x00000001, 'd', "PM nVDD_FAULT was asserted while in Run or Idle" },
+{ "PSSR_PH",   0x40F00004,  4, 0x00000001, 'd', "PM GPIO pins are held in their sleep state" },
+{ "PSSR_RDH",  0x40F00004,  5, 0x00000001, 'd', "PM receivers of all input GPIO are disabled" },
+
+{ "PSPR",      0x40F00008,  0, 0xffffffff, 'x', "Power Manager Scratch Pad Register (3-30)" },
+
+{ "PWER",      0x40F0000C,  0, 0xffffffff, 'x', "Power Manager Wake-Up Enable Register (3-25)" },
+{ "PWER_WE0",  0x40F0000C,  0, 0x00000001, 'd', "PM wake up due to GPIO 0 edge detect enabled" },
+{ "PWER_WE1",  0x40F0000C,  1, 0x00000001, 'd', "PM wake up due to GPIO 1 edge detect enabled" },
+{ "PWER_WE2",  0x40F0000C,  2, 0x00000001, 'd', "PM wake up due to GPIO 2 edge detect enabled" },
+{ "PWER_WE3",  0x40F0000C,  3, 0x00000001, 'd', "PM wake up due to GPIO 3 edge detect enabled" },
+{ "PWER_WE4",  0x40F0000C,  4, 0x00000001, 'd', "PM wake up due to GPIO 4 edge detect enabled" },
+{ "PWER_WE5",  0x40F0000C,  5, 0x00000001, 'd', "PM wake up due to GPIO 5 edge detect enabled" },
+{ "PWER_WE6",  0x40F0000C,  6, 0x00000001, 'd', "PM wake up due to GPIO 6 edge detect enabled" },
+{ "PWER_WE7",  0x40F0000C,  7, 0x00000001, 'd', "PM wake up due to GPIO 7 edge detect enabled" },
+{ "PWER_WE8",  0x40F0000C,  8, 0x00000001, 'd', "PM wake up due to GPIO 8 edge detect enabled" },
+{ "PWER_WE9",  0x40F0000C,  9, 0x00000001, 'd', "PM wake up due to GPIO 9 edge detect enabled" },
+{ "PWER_WE10", 0x40F0000C, 10, 0x00000001, 'd', "PM wake up due to GPIO10 edge detect enabled" },
+{ "PWER_WE11", 0x40F0000C, 11, 0x00000001, 'd', "PM wake up due to GPIO11 edge detect enabled" },
+{ "PWER_WE12", 0x40F0000C, 12, 0x00000001, 'd', "PM wake up due to GPIO12 edge detect enabled" },
+{ "PWER_WE13", 0x40F0000C, 13, 0x00000001, 'd', "PM wake up due to GPIO13 edge detect enabled" },
+{ "PWER_WE14", 0x40F0000C, 14, 0x00000001, 'd', "PM wake up due to GPIO14 edge detect enabled" },
+{ "PWER_WE15", 0x40F0000C, 15, 0x00000001, 'd', "PM wake up due to GPIO15 edge detect enabled" },
+{ "PWER_WERTC",0x40F0000C, 31, 0x00000001, 'd', "PM wake up due to RTC alarm enabled" },
+
+{ "PRER",      0x40F00010,  0, 0xffffffff, 'x', "Power Manager Rising Edge Detect Enable Register (3-26)" },
+{ "PRER_RE0",  0x40F00010,  0, 0x00000001, 'd', "PM wake up due to GPIO 0 rising edge detect enabled" },
+{ "PRER_RE1",  0x40F00010,  1, 0x00000001, 'd', "PM wake up due to GPIO 1 rising edge detect enabled" },
+{ "PRER_RE2",  0x40F00010,  2, 0x00000001, 'd', "PM wake up due to GPIO 2 rising edge detect enabled" },
+{ "PRER_RE3",  0x40F00010,  3, 0x00000001, 'd', "PM wake up due to GPIO 3 rising edge detect enabled" },
+{ "PRER_RE4",  0x40F00010,  4, 0x00000001, 'd', "PM wake up due to GPIO 4 rising edge detect enabled" },
+{ "PRER_RE5",  0x40F00010,  5, 0x00000001, 'd', "PM wake up due to GPIO 5 rising edge detect enabled" },
+{ "PRER_RE6",  0x40F00010,  6, 0x00000001, 'd', "PM wake up due to GPIO 6 rising edge detect enabled" },
+{ "PRER_RE7",  0x40F00010,  7, 0x00000001, 'd', "PM wake up due to GPIO 7 rising edge detect enabled" },
+{ "PRER_RE8",  0x40F00010,  8, 0x00000001, 'd', "PM wake up due to GPIO 8 rising edge detect enabled" },
+{ "PRER_RE9",  0x40F00010,  9, 0x00000001, 'd', "PM wake up due to GPIO 9 rising edge detect enabled" },
+{ "PRER_RE10", 0x40F00010, 10, 0x00000001, 'd', "PM wake up due to GPIO10 rising edge detect enabled" },
+{ "PRER_RE11", 0x40F00010, 11, 0x00000001, 'd', "PM wake up due to GPIO11 rising edge detect enabled" },
+{ "PRER_RE12", 0x40F00010, 12, 0x00000001, 'd', "PM wake up due to GPIO12 rising edge detect enabled" },
+{ "PRER_RE13", 0x40F00010, 13, 0x00000001, 'd', "PM wake up due to GPIO13 rising edge detect enabled" },
+{ "PRER_RE14", 0x40F00010, 14, 0x00000001, 'd', "PM wake up due to GPIO14 rising edge detect enabled" },
+{ "PRER_RE15", 0x40F00010, 15, 0x00000001, 'd', "PM wake up due to GPIO15 rising edge detect enabled" },
+
+{ "PFER",      0x40F00014,  0, 0xffffffff, 'x', "Power Manager Falling Detect Enable Register (3-27)" },
+{ "PFER_FE0",  0x40F00014,  0, 0x00000001, 'd', "PM wake up due to GPIO 0 falling edge detect enabled" },
+{ "PFER_FE1",  0x40F00014,  1, 0x00000001, 'd', "PM wake up due to GPIO 1 falling edge detect enabled" },
+{ "PFER_FE2",  0x40F00014,  2, 0x00000001, 'd', "PM wake up due to GPIO 2 falling edge detect enabled" },
+{ "PFER_FE3",  0x40F00014,  3, 0x00000001, 'd', "PM wake up due to GPIO 3 falling edge detect enabled" },
+{ "PFER_FE4",  0x40F00014,  4, 0x00000001, 'd', "PM wake up due to GPIO 4 falling edge detect enabled" },
+{ "PFER_FE5",  0x40F00014,  5, 0x00000001, 'd', "PM wake up due to GPIO 5 falling edge detect enabled" },
+{ "PFER_FE6",  0x40F00014,  6, 0x00000001, 'd', "PM wake up due to GPIO 6 falling edge detect enabled" },
+{ "PFER_FE7",  0x40F00014,  7, 0x00000001, 'd', "PM wake up due to GPIO 7 falling edge detect enabled" },
+{ "PFER_FE8",  0x40F00014,  8, 0x00000001, 'd', "PM wake up due to GPIO 8 falling edge detect enabled" },
+{ "PFER_FE9",  0x40F00014,  9, 0x00000001, 'd', "PM wake up due to GPIO 9 falling edge detect enabled" },
+{ "PFER_FE10", 0x40F00014, 10, 0x00000001, 'd', "PM wake up due to GPIO10 falling edge detect enabled" },
+{ "PFER_FE11", 0x40F00014, 11, 0x00000001, 'd', "PM wake up due to GPIO11 falling edge detect enabled" },
+{ "PFER_FE12", 0x40F00014, 12, 0x00000001, 'd', "PM wake up due to GPIO12 falling edge detect enabled" },
+{ "PFER_FE13", 0x40F00014, 13, 0x00000001, 'd', "PM wake up due to GPIO13 falling edge detect enabled" },
+{ "PFER_FE14", 0x40F00014, 14, 0x00000001, 'd', "PM wake up due to GPIO14 falling edge detect enabled" },
+{ "PFER_FE15", 0x40F00014, 15, 0x00000001, 'd', "PM wake up due to GPIO15 falling edge detect enabled" },
+
+{ "PEDR",      0x40F00018,  0, 0xffffffff, 'x', "Power Manager Edge Detect Status Register (3-28)" },
+{ "PEDR_ED0",  0x40F00018,  0, 0x00000001, 'd', "PM wake up due to edge on GPIO 0 detected" },
+{ "PEDR_ED1",  0x40F00018,  1, 0x00000001, 'd', "PM wake up due to edge on GPIO 1 detected" },
+{ "PEDR_ED2",  0x40F00018,  2, 0x00000001, 'd', "PM wake up due to edge on GPIO 2 detected" },
+{ "PEDR_ED3",  0x40F00018,  3, 0x00000001, 'd', "PM wake up due to edge on GPIO 3 detected" },
+{ "PEDR_ED4",  0x40F00018,  4, 0x00000001, 'd', "PM wake up due to edge on GPIO 4 detected" },
+{ "PEDR_ED5",  0x40F00018,  5, 0x00000001, 'd', "PM wake up due to edge on GPIO 5 detected" },
+{ "PEDR_ED6",  0x40F00018,  6, 0x00000001, 'd', "PM wake up due to edge on GPIO 6 detected" },
+{ "PEDR_ED7",  0x40F00018,  7, 0x00000001, 'd', "PM wake up due to edge on GPIO 7 detected" },
+{ "PEDR_ED8",  0x40F00018,  8, 0x00000001, 'd', "PM wake up due to edge on GPIO 8 detected" },
+{ "PEDR_ED9",  0x40F00018,  9, 0x00000001, 'd', "PM wake up due to edge on GPIO 9 detected" },
+{ "PEDR_ED10", 0x40F00018, 10, 0x00000001, 'd', "PM wake up due to edge on GPIO10 detected" },
+{ "PEDR_ED11", 0x40F00018, 11, 0x00000001, 'd', "PM wake up due to edge on GPIO11 detected" },
+{ "PEDR_ED12", 0x40F00018, 12, 0x00000001, 'd', "PM wake up due to edge on GPIO12 detected" },
+{ "PEDR_ED13", 0x40F00018, 13, 0x00000001, 'd', "PM wake up due to edge on GPIO13 detected" },
+{ "PEDR_ED14", 0x40F00018, 14, 0x00000001, 'd', "PM wake up due to edge on GPIO14 detected" },
+{ "PEDR_ED15", 0x40F00018, 15, 0x00000001, 'd', "PM wake up due to edge on GPIO15 detected" },
+
+{ "PCFR",      0x40F0001C,  0, 0xffffffff, 'x', "Power Manager General Configuration Register (3-24)" },
+{ "PCFR_OPDE", 0x40F0001C,  0, 0x00000001, 'd', "PM stop 3.6864 MHz oscillator during sleep" },
+{ "PCFR_FP",   0x40F0001C,  1, 0x00000001, 'd', "PM PCMCIA signals float during sleep" },
+{ "PCFR_FS",   0x40F0001C,  2, 0x00000001, 'd', "PM static chip select signals float during sleep" },
+
+{ "PGSR0",     0x40F00020,  0, 0xffffffff, 'x', "Power Manager GPIO Sleep State Register 0 (3-32)" },
+{ "PGSR_SS0",  0x40F00020,  0, 0x00000001, 'd', "PM GPIO pin 0 is driven to 1 during sleep" },
+{ "PGSR_SS1",  0x40F00020,  1, 0x00000001, 'd', "PM GPIO pin 1 is driven to 1 during sleep" },
+{ "PGSR_SS2",  0x40F00020,  2, 0x00000001, 'd', "PM GPIO pin 2 is driven to 1 during sleep" },
+{ "PGSR_SS3",  0x40F00020,  3, 0x00000001, 'd', "PM GPIO pin 3 is driven to 1 during sleep" },
+{ "PGSR_SS4",  0x40F00020,  4, 0x00000001, 'd', "PM GPIO pin 4 is driven to 1 during sleep" },
+{ "PGSR_SS5",  0x40F00020,  5, 0x00000001, 'd', "PM GPIO pin 5 is driven to 1 during sleep" },
+{ "PGSR_SS6",  0x40F00020,  6, 0x00000001, 'd', "PM GPIO pin 6 is driven to 1 during sleep" },
+{ "PGSR_SS7",  0x40F00020,  7, 0x00000001, 'd', "PM GPIO pin 7 is driven to 1 during sleep" },
+{ "PGSR_SS8",  0x40F00020,  8, 0x00000001, 'd', "PM GPIO pin 8 is driven to 1 during sleep" },
+{ "PGSR_SS9",  0x40F00020,  9, 0x00000001, 'd', "PM GPIO pin 9 is driven to 1 during sleep" },
+{ "PGSR_SS10", 0x40F00020, 10, 0x00000001, 'd', "PM GPIO pin 10 is driven to 1 during sleep" },
+{ "PGSR_SS11", 0x40F00020, 11, 0x00000001, 'd', "PM GPIO pin 11 is driven to 1 during sleep" },
+{ "PGSR_SS12", 0x40F00020, 12, 0x00000001, 'd', "PM GPIO pin 12 is driven to 1 during sleep" },
+{ "PGSR_SS13", 0x40F00020, 13, 0x00000001, 'd', "PM GPIO pin 13 is driven to 1 during sleep" },
+{ "PGSR_SS14", 0x40F00020, 14, 0x00000001, 'd', "PM GPIO pin 14 is driven to 1 during sleep" },
+{ "PGSR_SS15", 0x40F00020, 15, 0x00000001, 'd', "PM GPIO pin 15 is driven to 1 during sleep" },
+{ "PGSR_SS16", 0x40F00020, 16, 0x00000001, 'd', "PM GPIO pin 16 is driven to 1 during sleep" },
+{ "PGSR_SS17", 0x40F00020, 17, 0x00000001, 'd', "PM GPIO pin 17 is driven to 1 during sleep" },
+{ "PGSR_SS18", 0x40F00020, 18, 0x00000001, 'd', "PM GPIO pin 18 is driven to 1 during sleep" },
+{ "PGSR_SS19", 0x40F00020, 19, 0x00000001, 'd', "PM GPIO pin 19 is driven to 1 during sleep" },
+{ "PGSR_SS20", 0x40F00020, 20, 0x00000001, 'd', "PM GPIO pin 20 is driven to 1 during sleep" },
+{ "PGSR_SS21", 0x40F00020, 21, 0x00000001, 'd', "PM GPIO pin 21 is driven to 1 during sleep" },
+{ "PGSR_SS22", 0x40F00020, 22, 0x00000001, 'd', "PM GPIO pin 22 is driven to 1 during sleep" },
+{ "PGSR_SS23", 0x40F00020, 23, 0x00000001, 'd', "PM GPIO pin 23 is driven to 1 during sleep" },
+{ "PGSR_SS24", 0x40F00020, 24, 0x00000001, 'd', "PM GPIO pin 24 is driven to 1 during sleep" },
+{ "PGSR_SS25", 0x40F00020, 25, 0x00000001, 'd', "PM GPIO pin 25 is driven to 1 during sleep" },
+{ "PGSR_SS26", 0x40F00020, 26, 0x00000001, 'd', "PM GPIO pin 26 is driven to 1 during sleep" },
+{ "PGSR_SS27", 0x40F00020, 27, 0x00000001, 'd', "PM GPIO pin 27 is driven to 1 during sleep" },
+{ "PGSR_SS28", 0x40F00020, 28, 0x00000001, 'd', "PM GPIO pin 28 is driven to 1 during sleep" },
+{ "PGSR_SS29", 0x40F00020, 29, 0x00000001, 'd', "PM GPIO pin 29 is driven to 1 during sleep" },
+{ "PGSR_SS30", 0x40F00020, 30, 0x00000001, 'd', "PM GPIO pin 30 is driven to 1 during sleep" },
+{ "PGSR_SS31", 0x40F00020, 31, 0x00000001, 'd', "PM GPIO pin 31 is driven to 1 during sleep" },
+
+{ "PGSR1",     0x40F00024,  0, 0xffffffff, 'x', "Power Manager GPIO Sleep State Register 1 (3-32)" },
+{ "PGSR_SS32", 0x40F00024,  0, 0x00000001, 'd', "PM GPIO pin 32 is driven to 1 during sleep" },
+{ "PGSR_SS33", 0x40F00024,  1, 0x00000001, 'd', "PM GPIO pin 33 is driven to 1 during sleep" },
+{ "PGSR_SS34", 0x40F00024,  2, 0x00000001, 'd', "PM GPIO pin 34 is driven to 1 during sleep" },
+{ "PGSR_SS35", 0x40F00024,  3, 0x00000001, 'd', "PM GPIO pin 35 is driven to 1 during sleep" },
+{ "PGSR_SS36", 0x40F00024,  4, 0x00000001, 'd', "PM GPIO pin 36 is driven to 1 during sleep" },
+{ "PGSR_SS37", 0x40F00024,  5, 0x00000001, 'd', "PM GPIO pin 37 is driven to 1 during sleep" },
+{ "PGSR_SS38", 0x40F00024,  6, 0x00000001, 'd', "PM GPIO pin 38 is driven to 1 during sleep" },
+{ "PGSR_SS39", 0x40F00024,  7, 0x00000001, 'd', "PM GPIO pin 39 is driven to 1 during sleep" },
+{ "PGSR_SS40", 0x40F00024,  8, 0x00000001, 'd', "PM GPIO pin 40 is driven to 1 during sleep" },
+{ "PGSR_SS41", 0x40F00024,  9, 0x00000001, 'd', "PM GPIO pin 41 is driven to 1 during sleep" },
+{ "PGSR_SS42", 0x40F00024, 10, 0x00000001, 'd', "PM GPIO pin 42 is driven to 1 during sleep" },
+{ "PGSR_SS43", 0x40F00024, 11, 0x00000001, 'd', "PM GPIO pin 43 is driven to 1 during sleep" },
+{ "PGSR_SS44", 0x40F00024, 12, 0x00000001, 'd', "PM GPIO pin 44 is driven to 1 during sleep" },
+{ "PGSR_SS45", 0x40F00024, 13, 0x00000001, 'd', "PM GPIO pin 45 is driven to 1 during sleep" },
+{ "PGSR_SS46", 0x40F00024, 14, 0x00000001, 'd', "PM GPIO pin 46 is driven to 1 during sleep" },
+{ "PGSR_SS47", 0x40F00024, 15, 0x00000001, 'd', "PM GPIO pin 47 is driven to 1 during sleep" },
+{ "PGSR_SS48", 0x40F00024, 16, 0x00000001, 'd', "PM GPIO pin 48 is driven to 1 during sleep" },
+{ "PGSR_SS49", 0x40F00024, 17, 0x00000001, 'd', "PM GPIO pin 49 is driven to 1 during sleep" },
+{ "PGSR_SS50", 0x40F00024, 18, 0x00000001, 'd', "PM GPIO pin 50 is driven to 1 during sleep" },
+{ "PGSR_SS51", 0x40F00024, 19, 0x00000001, 'd', "PM GPIO pin 51 is driven to 1 during sleep" },
+{ "PGSR_SS52", 0x40F00024, 20, 0x00000001, 'd', "PM GPIO pin 52 is driven to 1 during sleep" },
+{ "PGSR_SS53", 0x40F00024, 21, 0x00000001, 'd', "PM GPIO pin 53 is driven to 1 during sleep" },
+{ "PGSR_SS54", 0x40F00024, 22, 0x00000001, 'd', "PM GPIO pin 54 is driven to 1 during sleep" },
+{ "PGSR_SS55", 0x40F00024, 23, 0x00000001, 'd', "PM GPIO pin 55 is driven to 1 during sleep" },
+{ "PGSR_SS56", 0x40F00024, 24, 0x00000001, 'd', "PM GPIO pin 56 is driven to 1 during sleep" },
+{ "PGSR_SS57", 0x40F00024, 25, 0x00000001, 'd', "PM GPIO pin 57 is driven to 1 during sleep" },
+{ "PGSR_SS58", 0x40F00024, 26, 0x00000001, 'd', "PM GPIO pin 58 is driven to 1 during sleep" },
+{ "PGSR_SS59", 0x40F00024, 27, 0x00000001, 'd', "PM GPIO pin 59 is driven to 1 during sleep" },
+{ "PGSR_SS60", 0x40F00024, 28, 0x00000001, 'd', "PM GPIO pin 60 is driven to 1 during sleep" },
+{ "PGSR_SS61", 0x40F00024, 29, 0x00000001, 'd', "PM GPIO pin 61 is driven to 1 during sleep" },
+{ "PGSR_SS62", 0x40F00024, 30, 0x00000001, 'd', "PM GPIO pin 62 is driven to 1 during sleep" },
+{ "PGSR_SS63", 0x40F00024, 31, 0x00000001, 'd', "PM GPIO pin 63 is driven to 1 during sleep" },
+
+{ "PGSR2",     0x40F00028,  0, 0xffffffff, 'x', "Power Manager GPIO Sleep State Register 2 (3-33)" },
+{ "PGSR_SS64", 0x40F00028,  0, 0x00000001, 'd', "PM GPIO pin 64 is driven to 1 during sleep" },
+{ "PGSR_SS65", 0x40F00028,  1, 0x00000001, 'd', "PM GPIO pin 65 is driven to 1 during sleep" },
+{ "PGSR_SS66", 0x40F00028,  2, 0x00000001, 'd', "PM GPIO pin 66 is driven to 1 during sleep" },
+{ "PGSR_SS67", 0x40F00028,  3, 0x00000001, 'd', "PM GPIO pin 67 is driven to 1 during sleep" },
+{ "PGSR_SS68", 0x40F00028,  4, 0x00000001, 'd', "PM GPIO pin 68 is driven to 1 during sleep" },
+{ "PGSR_SS69", 0x40F00028,  5, 0x00000001, 'd', "PM GPIO pin 69 is driven to 1 during sleep" },
+{ "PGSR_SS70", 0x40F00028,  6, 0x00000001, 'd', "PM GPIO pin 70 is driven to 1 during sleep" },
+{ "PGSR_SS71", 0x40F00028,  7, 0x00000001, 'd', "PM GPIO pin 71 is driven to 1 during sleep" },
+{ "PGSR_SS72", 0x40F00028,  8, 0x00000001, 'd', "PM GPIO pin 72 is driven to 1 during sleep" },
+{ "PGSR_SS73", 0x40F00028,  9, 0x00000001, 'd', "PM GPIO pin 73 is driven to 1 during sleep" },
+{ "PGSR_SS74", 0x40F00028, 10, 0x00000001, 'd', "PM GPIO pin 74 is driven to 1 during sleep" },
+{ "PGSR_SS75", 0x40F00028, 11, 0x00000001, 'd', "PM GPIO pin 75 is driven to 1 during sleep" },
+{ "PGSR_SS76", 0x40F00028, 12, 0x00000001, 'd', "PM GPIO pin 76 is driven to 1 during sleep" },
+{ "PGSR_SS77", 0x40F00028, 13, 0x00000001, 'd', "PM GPIO pin 77 is driven to 1 during sleep" },
+{ "PGSR_SS78", 0x40F00028, 14, 0x00000001, 'd', "PM GPIO pin 78 is driven to 1 during sleep" },
+{ "PGSR_SS79", 0x40F00028, 15, 0x00000001, 'd', "PM GPIO pin 79 is driven to 1 during sleep" },
+{ "PGSR_SS80", 0x40F00028, 16, 0x00000001, 'd', "PM GPIO pin 80 is driven to 1 during sleep" },
+
+{ "RCSR",      0x40F00030,  0, 0xffffffff, 'x', "Power Manager Reset Controller Status Register (3-34)" },
+{ "RCSR_HWR",  0x40F00030,  0, 0x00000001, 'd', "PM hardware reset occurred" },
+{ "RCSR_WDR",  0x40F00030,  1, 0x00000001, 'd', "PM watchdog reset occurred" },
+{ "RCSR_SMR",  0x40F00030,  2, 0x00000001, 'd', "PM sleep mode occurred" },
+{ "RCSR_GFR",  0x40F00030,  3, 0x00000001, 'd', "PM GPIO reset  occurred" },
+
+// PXA255
+{ "PMFW",      0x40F00034,  0, 0xffffffff, 'x', "Power Manager Fast Sleep Wakeup Register (3-31)" },
+{ "PMFW_FWAKE",0x40F00034,  1, 0x00000001, 'x', "Fast Wakeup Enable" },
+
+{ "CCCR",      0x41300000,  0, 0xffffffff, 'x', "Core Clock Configuration Register (3-35)" },
+{ "CCCR_L",    0x41300000,  0, 0x0000001f, 'x', "CM crystal freq to memory freq multiplier" },
+{ "CCCR_M",    0x41300000,  5, 0x00000003, 'x', "CM memory freq to run mode freq multiplier" },
+{ "CCCR_N",    0x41300000,  7, 0x00000007, 'x', "CM run mode freq to turbo freq multiplier" },
+
+{ "CKEN",      0x41300004,  0, 0xffffffff, 'x', "Clock Enable Register (3-36)" },
+{ "CKEN_0",    0x41300004,  0, 0x00000001, 'd', "CM PWM0 clock enabled" },
+{ "CKEN_1",    0x41300004,  1, 0x00000001, 'd', "CM PWM1 clock enabled" },
+{ "CKEN_2",    0x41300004,  2, 0x00000001, 'd', "CM AC97 clock enabled" },
+{ "CKEN_3",    0x41300004,  3, 0x00000001, 'd', "CM SSP clock enabled" },
+{ "CKEN_5",    0x41300004,  5, 0x00000001, 'd', "CM STUART clock enabled" },
+{ "CKEN_6",    0x41300004,  6, 0x00000001, 'd', "CM FFUART clock enabled" },
+{ "CKEN_7",    0x41300004,  7, 0x00000001, 'd', "CM BTUART clock enabled" },
+{ "CKEN_8",    0x41300004,  8, 0x00000001, 'd', "CM I2S clock enabled" },
+{ "CKEN_11",   0x41300004, 11, 0x00000001, 'd', "CM USB clock enabled" },
+{ "CKEN_12",   0x41300004, 12, 0x00000001, 'd', "CM MMC clock enabled" },
+{ "CKEN_13",   0x41300004, 13, 0x00000001, 'd', "CM FIPC clock enabled" },
+{ "CKEN_14",   0x41300004, 14, 0x00000001, 'd', "CM I2C clock enabled" },
+{ "CKEN_16",   0x41300004, 16, 0x00000001, 'd', "CM LCD clock enabled" },
+
+{ "OSCC",      0x41300008,  0, 0xffffffff, 'x', "Oscillator Configuration Register (3-38)" },
+{ "OSCC_OOK",  0x41300008,  0, 0x00000001, 'd', "CM 32.768 kHz oscillator enabled and stabilized" },
+{ "OSCC_OON",  0x41300008,  1, 0x00000001, 'd', "CM 32.768 kHz oscillator enabled" },
+
+// TODO: CP14-Registers (3-37)
+
+{ "GPLR0",    0x40E00000,  0, 0xffffffff, 'x', "GPIO Pin Level Register 0 (4-7)" },
+#if defined(CONFIG_ARCH_RAMSES)
+{ "GPLR0_0",  0x40E00000,  0, 0x00000001, 'd', "GPIO 0 (nc) level" },
+{ "GPLR0_1",  0x40E00000,  1, 0x00000001, 'd', "GPIO 1 (nPFI) level" },
+{ "GPLR0_2",  0x40E00000,  2, 0x00000001, 'd', "GPIO 2 (BAT_DATA) level" },
+{ "GPLR0_3",  0x40E00000,  3, 0x00000001, 'd', "GPIO 3 (IRQ_KEY) level" },
+{ "GPLR0_4",  0x40E00000,  4, 0x00000001, 'd', "GPIO 4 (IRQ_ETH) level" },
+{ "GPLR0_5",  0x40E00000,  5, 0x00000001, 'd', "GPIO 5 (nc) level" },
+{ "GPLR0_6",  0x40E00000,  6, 0x00000001, 'd', "GPIO 6 (MMC_CLK) level" },
+{ "GPLR0_7",  0x40E00000,  7, 0x00000001, 'd', "GPIO 7 (IRQ_GSM) level" },
+{ "GPLR0_8",  0x40E00000,  8, 0x00000001, 'd', "GPIO 8 (nPCC_S1_CD) level" },
+{ "GPLR0_9",  0x40E00000,  9, 0x00000001, 'd', "GPIO 9 (MMC_CD) level" },
+{ "GPLR0_10", 0x40E00000, 10, 0x00000001, 'd', "GPIO 10 (IRQ_RTC) level" },
+{ "GPLR0_11", 0x40E00000, 11, 0x00000001, 'd', "GPIO 11 (nc 3M6) level" },
+{ "GPLR0_12", 0x40E00000, 12, 0x00000001, 'd', "GPIO 12 (nc) level" },
+{ "GPLR0_13", 0x40E00000, 13, 0x00000001, 'd', "GPIO 13 (IRQ_DOCK) level" },
+{ "GPLR0_14", 0x40E00000, 14, 0x00000001, 'd', "GPIO 14 (nc) level" },
+{ "GPLR0_15", 0x40E00000, 15, 0x00000001, 'd', "GPIO 15 (nCS1) level" },
+{ "GPLR0_16", 0x40E00000, 16, 0x00000001, 'd', "GPIO 16 (PWM0) level" },
+{ "GPLR0_17", 0x40E00000, 17, 0x00000001, 'd', "GPIO 17 (PWM1) level" },
+{ "GPLR0_18", 0x40E00000, 18, 0x00000001, 'd', "GPIO 18 (RDY) level" },
+{ "GPLR0_19", 0x40E00000, 19, 0x00000001, 'd', "GPIO 19 (nc nPCC_S0_IRQ) level" },
+{ "GPLR0_20", 0x40E00000, 20, 0x00000001, 'd', "GPIO 20 (nc) level" },
+{ "GPLR0_21", 0x40E00000, 21, 0x00000001, 'd', "GPIO 21 (AC97_IRQ) level" },
+{ "GPLR0_22", 0x40E00000, 22, 0x00000001, 'd', "GPIO 22 (nPCC_S1_IRQ) level" },
+{ "GPLR0_23", 0x40E00000, 23, 0x00000001, 'd', "GPIO 23 (UART_INTA) level" },
+{ "GPLR0_24", 0x40E00000, 24, 0x00000001, 'd', "GPIO 24 (UART_INTB) level" },
+{ "GPLR0_25", 0x40E00000, 25, 0x00000001, 'd', "GPIO 25 (UART_INTC) level" },
+{ "GPLR0_26", 0x40E00000, 26, 0x00000001, 'd', "GPIO 26 (UART_INTD) level" },
+{ "GPLR0_27", 0x40E00000, 27, 0x00000001, 'd', "GPIO 27 (nc CPLD_FREE) level" },
+{ "GPLR0_28", 0x40E00000, 28, 0x00000001, 'd', "GPIO 28 (AUD_BITCLK) level" },
+{ "GPLR0_29", 0x40E00000, 29, 0x00000001, 'd', "GPIO 29 (AUD_SDIN0) level" },
+{ "GPLR0_30", 0x40E00000, 30, 0x00000001, 'd', "GPIO 30 (AUD_SDOUT) level" },
+{ "GPLR0_31", 0x40E00000, 31, 0x00000001, 'd', "GPIO 31 (AUD_SYNC) level" },
+#else
+{ "GPLR0_0",  0x40E00000,  0, 0x00000001, 'd', "GPIO 0 level" },
+{ "GPLR0_1",  0x40E00000,  1, 0x00000001, 'd', "GPIO 1 level" },
+{ "GPLR0_2",  0x40E00000,  2, 0x00000001, 'd', "GPIO 2 level" },
+{ "GPLR0_3",  0x40E00000,  3, 0x00000001, 'd', "GPIO 3 level" },
+{ "GPLR0_4",  0x40E00000,  4, 0x00000001, 'd', "GPIO 4 level" },
+{ "GPLR0_5",  0x40E00000,  5, 0x00000001, 'd', "GPIO 5 level" },
+{ "GPLR0_6",  0x40E00000,  6, 0x00000001, 'd', "GPIO 6 level" },
+{ "GPLR0_7",  0x40E00000,  7, 0x00000001, 'd', "GPIO 7 level" },
+{ "GPLR0_8",  0x40E00000,  8, 0x00000001, 'd', "GPIO 8 level" },
+{ "GPLR0_9",  0x40E00000,  9, 0x00000001, 'd', "GPIO 9 level" },
+{ "GPLR0_10", 0x40E00000, 10, 0x00000001, 'd', "GPIO 10 level" },
+{ "GPLR0_11", 0x40E00000, 11, 0x00000001, 'd', "GPIO 11 level" },
+{ "GPLR0_12", 0x40E00000, 12, 0x00000001, 'd', "GPIO 12 level" },
+{ "GPLR0_13", 0x40E00000, 13, 0x00000001, 'd', "GPIO 13 level" },
+{ "GPLR0_14", 0x40E00000, 14, 0x00000001, 'd', "GPIO 14 level" },
+{ "GPLR0_15", 0x40E00000, 15, 0x00000001, 'd', "GPIO 15 level" },
+{ "GPLR0_16", 0x40E00000, 16, 0x00000001, 'd', "GPIO 16 level" },
+{ "GPLR0_17", 0x40E00000, 17, 0x00000001, 'd', "GPIO 17 level" },
+{ "GPLR0_18", 0x40E00000, 18, 0x00000001, 'd', "GPIO 18 level" },
+{ "GPLR0_19", 0x40E00000, 19, 0x00000001, 'd', "GPIO 19 level" },
+{ "GPLR0_20", 0x40E00000, 20, 0x00000001, 'd', "GPIO 20 level" },
+{ "GPLR0_21", 0x40E00000, 21, 0x00000001, 'd', "GPIO 21 level" },
+{ "GPLR0_22", 0x40E00000, 22, 0x00000001, 'd', "GPIO 22 level" },
+{ "GPLR0_23", 0x40E00000, 23, 0x00000001, 'd', "GPIO 23 level" },
+{ "GPLR0_24", 0x40E00000, 24, 0x00000001, 'd', "GPIO 24 level" },
+{ "GPLR0_25", 0x40E00000, 25, 0x00000001, 'd', "GPIO 25 level" },
+{ "GPLR0_26", 0x40E00000, 26, 0x00000001, 'd', "GPIO 26 level" },
+{ "GPLR0_27", 0x40E00000, 27, 0x00000001, 'd', "GPIO 27 level" },
+{ "GPLR0_28", 0x40E00000, 28, 0x00000001, 'd', "GPIO 28 level" },
+{ "GPLR0_29", 0x40E00000, 29, 0x00000001, 'd', "GPIO 29 level" },
+{ "GPLR0_30", 0x40E00000, 30, 0x00000001, 'd', "GPIO 30 level" },
+{ "GPLR0_31", 0x40E00000, 31, 0x00000001, 'd', "GPIO 31 level" },
+#endif
+
+{ "GPLR1",    0x40E00004,  0, 0xffffffff, 'x', "GPIO Level Register 1 (4-8)" },
+#if defined(CONFIG_ARCH_RAMSES)
+{ "GPLR1_32", 0x40E00004,  0, 0x00000001, 'd', "GPIO 32 (AUD_SDIN1) level" },
+{ "GPLR1_33", 0x40E00004,  1, 0x00000001, 'd', "GPIO 33 (nCS5) level" },
+{ "GPLR1_34", 0x40E00004,  2, 0x00000001, 'd', "GPIO 34 (FF_RXD) level" },
+{ "GPLR1_35", 0x40E00004,  3, 0x00000001, 'd', "GPIO 35 (FF_CTS) level" },
+{ "GPLR1_36", 0x40E00004,  4, 0x00000001, 'd', "GPIO 36 (FF_DCD) level" },
+{ "GPLR1_37", 0x40E00004,  5, 0x00000001, 'd', "GPIO 37 (FF_DSR) level" },
+{ "GPLR1_38", 0x40E00004,  6, 0x00000001, 'd', "GPIO 38 (FF_RI) level" },
+{ "GPLR1_39", 0x40E00004,  7, 0x00000001, 'd', "GPIO 39 (FF_TXD) level" },
+{ "GPLR1_40", 0x40E00004,  8, 0x00000001, 'd', "GPIO 40 (FF_DTR) level" },
+{ "GPLR1_41", 0x40E00004,  9, 0x00000001, 'd', "GPIO 41 (FF_RTS) level" },
+{ "GPLR1_42", 0x40E00004, 10, 0x00000001, 'd', "GPIO 42 (BT_RXD) level" },
+{ "GPLR1_43", 0x40E00004, 11, 0x00000001, 'd', "GPIO 43 (BT_TXD) level" },
+{ "GPLR1_44", 0x40E00004, 12, 0x00000001, 'd', "GPIO 44 (BT_CTS) level" },
+{ "GPLR1_45", 0x40E00004, 13, 0x00000001, 'd', "GPIO 45 (BT_RTS) level" },
+{ "GPLR1_46", 0x40E00004, 14, 0x00000001, 'd', "GPIO 46 (IR_RXD) level" },
+{ "GPLR1_47", 0x40E00004, 15, 0x00000001, 'd', "GPIO 47 (IR_TXD) level" },
+{ "GPLR1_48", 0x40E00004, 16, 0x00000001, 'd', "GPIO 48 (nPOE) level" },
+{ "GPLR1_49", 0x40E00004, 17, 0x00000001, 'd', "GPIO 49 (nPWE) level" },
+{ "GPLR1_50", 0x40E00004, 18, 0x00000001, 'd', "GPIO 50 (nPIOR) level" },
+{ "GPLR1_51", 0x40E00004, 19, 0x00000001, 'd', "GPIO 51 (nPIOW) level" },
+{ "GPLR1_52", 0x40E00004, 20, 0x00000001, 'd', "GPIO 52 (nPCE1) level" },
+{ "GPLR1_53", 0x40E00004, 21, 0x00000001, 'd', "GPIO 53 (nPCE2) level" },
+{ "GPLR1_54", 0x40E00004, 22, 0x00000001, 'd', "GPIO 54 (nPKTSEL) level" },
+{ "GPLR1_55", 0x40E00004, 23, 0x00000001, 'd', "GPIO 55 (nPREG) level" },
+{ "GPLR1_56", 0x40E00004, 24, 0x00000001, 'd', "GPIO 56 (nPWAIT) level" },
+{ "GPLR1_57", 0x40E00004, 25, 0x00000001, 'd', "GPIO 57 (nIOIS16) level" },
+{ "GPLR1_58", 0x40E00004, 26, 0x00000001, 'd', "GPIO 58 (LDD0) level" },
+{ "GPLR1_59", 0x40E00004, 27, 0x00000001, 'd', "GPIO 59 (LDD1) level" },
+{ "GPLR1_60", 0x40E00004, 28, 0x00000001, 'd', "GPIO 60 (LDD2) level" },
+{ "GPLR1_61", 0x40E00004, 29, 0x00000001, 'd', "GPIO 61 (LDD3) level" },
+{ "GPLR1_62", 0x40E00004, 30, 0x00000001, 'd', "GPIO 62 (LDD4) level" },
+{ "GPLR1_63", 0x40E00004, 31, 0x00000001, 'd', "GPIO 63 (LDD5) level" },
+#else
+{ "GPLR1_32", 0x40E00004,  0, 0x00000001, 'd', "GPIO 32 level" },
+{ "GPLR1_33", 0x40E00004,  1, 0x00000001, 'd', "GPIO 33 level" },
+{ "GPLR1_34", 0x40E00004,  2, 0x00000001, 'd', "GPIO 34 level" },
+{ "GPLR1_35", 0x40E00004,  3, 0x00000001, 'd', "GPIO 35 level" },
+{ "GPLR1_36", 0x40E00004,  4, 0x00000001, 'd', "GPIO 36 level" },
+{ "GPLR1_37", 0x40E00004,  5, 0x00000001, 'd', "GPIO 37 level" },
+{ "GPLR1_38", 0x40E00004,  6, 0x00000001, 'd', "GPIO 38 level" },
+{ "GPLR1_39", 0x40E00004,  7, 0x00000001, 'd', "GPIO 39 level" },
+{ "GPLR1_40", 0x40E00004,  8, 0x00000001, 'd', "GPIO 40 level" },
+{ "GPLR1_41", 0x40E00004,  9, 0x00000001, 'd', "GPIO 41 level" },
+{ "GPLR1_42", 0x40E00004, 10, 0x00000001, 'd', "GPIO 42 level" },
+{ "GPLR1_43", 0x40E00004, 11, 0x00000001, 'd', "GPIO 43 level" },
+{ "GPLR1_44", 0x40E00004, 12, 0x00000001, 'd', "GPIO 44 level" },
+{ "GPLR1_45", 0x40E00004, 13, 0x00000001, 'd', "GPIO 45 level" },
+{ "GPLR1_46", 0x40E00004, 14, 0x00000001, 'd', "GPIO 46 level" },
+{ "GPLR1_47", 0x40E00004, 15, 0x00000001, 'd', "GPIO 47 level" },
+{ "GPLR1_48", 0x40E00004, 16, 0x00000001, 'd', "GPIO 48 level" },
+{ "GPLR1_49", 0x40E00004, 17, 0x00000001, 'd', "GPIO 49 level" },
+{ "GPLR1_50", 0x40E00004, 18, 0x00000001, 'd', "GPIO 50 level" },
+{ "GPLR1_51", 0x40E00004, 19, 0x00000001, 'd', "GPIO 51 level" },
+{ "GPLR1_52", 0x40E00004, 20, 0x00000001, 'd', "GPIO 52 level" },
+{ "GPLR1_53", 0x40E00004, 21, 0x00000001, 'd', "GPIO 53 level" },
+{ "GPLR1_54", 0x40E00004, 22, 0x00000001, 'd', "GPIO 54 level" },
+{ "GPLR1_55", 0x40E00004, 23, 0x00000001, 'd', "GPIO 55 level" },
+{ "GPLR1_56", 0x40E00004, 24, 0x00000001, 'd', "GPIO 56 level" },
+{ "GPLR1_57", 0x40E00004, 25, 0x00000001, 'd', "GPIO 57 level" },
+{ "GPLR1_58", 0x40E00004, 26, 0x00000001, 'd', "GPIO 58 level" },
+{ "GPLR1_59", 0x40E00004, 27, 0x00000001, 'd', "GPIO 59 level" },
+{ "GPLR1_60", 0x40E00004, 28, 0x00000001, 'd', "GPIO 60 level" },
+{ "GPLR1_61", 0x40E00004, 29, 0x00000001, 'd', "GPIO 61 level" },
+{ "GPLR1_62", 0x40E00004, 30, 0x00000001, 'd', "GPIO 62 level" },
+{ "GPLR1_63", 0x40E00004, 31, 0x00000001, 'd', "GPIO 63 level" },
+#endif
+
+{ "GPLR2",    0x40E00008,  0, 0xffffffff, 'x', "GPIO Level Register 2 (4-8)" },
+#if defined(CONFIG_ARCH_RAMSES)
+{ "GPLR2_64", 0x40E00008,  0, 0x00000001, 'd', "GPIO 64 (LDD6) level" },
+{ "GPLR2_65", 0x40E00008,  1, 0x00000001, 'd', "GPIO 65 (LDD7) level" },
+{ "GPLR2_66", 0x40E00008,  2, 0x00000001, 'd', "GPIO 66 (nc) level" },
+{ "GPLR2_67", 0x40E00008,  3, 0x00000001, 'd', "GPIO 67 (nc) level" },
+{ "GPLR2_68", 0x40E00008,  4, 0x00000001, 'd', "GPIO 68 (nc) level" },
+{ "GPLR2_69", 0x40E00008,  5, 0x00000001, 'd', "GPIO 69 (nc) level" },
+{ "GPLR2_70", 0x40E00008,  6, 0x00000001, 'd', "GPIO 70 (nc) level" },
+{ "GPLR2_71", 0x40E00008,  7, 0x00000001, 'd', "GPIO 71 (nc) level" },
+{ "GPLR2_72", 0x40E00008,  8, 0x00000001, 'd', "GPIO 72 (nc) level" },
+{ "GPLR2_73", 0x40E00008,  9, 0x00000001, 'd', "GPIO 73 (nc) level" },
+{ "GPLR2_74", 0x40E00008, 10, 0x00000001, 'd', "GPIO 74 (FCLK) level" },
+{ "GPLR2_75", 0x40E00008, 11, 0x00000001, 'd', "GPIO 75 (LCLK) level" },
+{ "GPLR2_76", 0x40E00008, 12, 0x00000001, 'd', "GPIO 76 (PCLK) level" },
+{ "GPLR2_77", 0x40E00008, 13, 0x00000001, 'd', "GPIO 77 (BIAS) level" },
+{ "GPLR2_78", 0x40E00008, 14, 0x00000001, 'd', "GPIO 78 (nCS2) level" },
+{ "GPLR2_79", 0x40E00008, 15, 0x00000001, 'd', "GPIO 79 (nCS3) level" },
+{ "GPLR2_80", 0x40E00008, 16, 0x00000001, 'd', "GPIO 80 (nCS4) level" },
+{ "GPLR2_81", 0x40E00008, 17, 0x00000001, 'd', "GPIO 81 (nc) level" },
+{ "GPLR2_82", 0x40E00008, 18, 0x00000001, 'd', "GPIO 82 (nc) level" },
+{ "GPLR2_83", 0x40E00008, 19, 0x00000001, 'd', "GPIO 83 (nc) level" },
+{ "GPLR2_84", 0x40E00008, 20, 0x00000001, 'd', "GPIO 84 (nc) level" },
+#else
+{ "GPLR2_64", 0x40E00008,  0, 0x00000001, 'd', "GPIO 64 level" },
+{ "GPLR2_65", 0x40E00008,  1, 0x00000001, 'd', "GPIO 65 level" },
+{ "GPLR2_66", 0x40E00008,  2, 0x00000001, 'd', "GPIO 66 level" },
+{ "GPLR2_67", 0x40E00008,  3, 0x00000001, 'd', "GPIO 67 level" },
+{ "GPLR2_68", 0x40E00008,  4, 0x00000001, 'd', "GPIO 68 level" },
+{ "GPLR2_69", 0x40E00008,  5, 0x00000001, 'd', "GPIO 69 level" },
+{ "GPLR2_70", 0x40E00008,  6, 0x00000001, 'd', "GPIO 70 level" },
+{ "GPLR2_71", 0x40E00008,  7, 0x00000001, 'd', "GPIO 71 level" },
+{ "GPLR2_72", 0x40E00008,  8, 0x00000001, 'd', "GPIO 72 level" },
+{ "GPLR2_73", 0x40E00008,  9, 0x00000001, 'd', "GPIO 73 level" },
+{ "GPLR2_74", 0x40E00008, 10, 0x00000001, 'd', "GPIO 74 level" },
+{ "GPLR2_75", 0x40E00008, 11, 0x00000001, 'd', "GPIO 75 level" },
+{ "GPLR2_76", 0x40E00008, 12, 0x00000001, 'd', "GPIO 76 level" },
+{ "GPLR2_77", 0x40E00008, 13, 0x00000001, 'd', "GPIO 77 level" },
+{ "GPLR2_78", 0x40E00008, 14, 0x00000001, 'd', "GPIO 78 level" },
+{ "GPLR2_79", 0x40E00008, 15, 0x00000001, 'd', "GPIO 79 level" },
+{ "GPLR2_80", 0x40E00008, 16, 0x00000001, 'd', "GPIO 80 level" },
+{ "GPLR2_81", 0x40E00008, 17, 0x00000001, 'd', "GPIO 81 level" },
+{ "GPLR2_82", 0x40E00008, 18, 0x00000001, 'd', "GPIO 82 level" },
+{ "GPLR2_83", 0x40E00008, 19, 0x00000001, 'd', "GPIO 83 level" },
+{ "GPLR2_84", 0x40E00008, 20, 0x00000001, 'd', "GPIO 84 level" },
+#endif
+
+{ "GPDR0",    0x40E0000C,  0, 0xffffffff, 'x', "GPIO Direction Register 0 (4-9)" },
+{ "GPDR0_0",  0x40E0000C,  0, 0x00000001, 'd', "GPIO 0 i/o direction (1=output)" },
+{ "GPDR0_1",  0x40E0000C,  1, 0x00000001, 'd', "GPIO 1 i/o direction (1=output)" },
+{ "GPDR0_2",  0x40E0000C,  2, 0x00000001, 'd', "GPIO 2 i/o direction (1=output)" },
+{ "GPDR0_3",  0x40E0000C,  3, 0x00000001, 'd', "GPIO 3 i/o direction (1=output)" },
+{ "GPDR0_4",  0x40E0000C,  4, 0x00000001, 'd', "GPIO 4 i/o direction (1=output)" },
+{ "GPDR0_5",  0x40E0000C,  5, 0x00000001, 'd', "GPIO 5 i/o direction (1=output)" },
+{ "GPDR0_6",  0x40E0000C,  6, 0x00000001, 'd', "GPIO 6 i/o direction (1=output)" },
+{ "GPDR0_7",  0x40E0000C,  7, 0x00000001, 'd', "GPIO 7 i/o direction (1=output)" },
+{ "GPDR0_8",  0x40E0000C,  8, 0x00000001, 'd', "GPIO 8 i/o direction (1=output)" },
+{ "GPDR0_9",  0x40E0000C,  9, 0x00000001, 'd', "GPIO 9 i/o direction (1=output)" },
+{ "GPDR0_10", 0x40E0000C, 10, 0x00000001, 'd', "GPIO 10 i/o direction (1=output)" },
+{ "GPDR0_11", 0x40E0000C, 11, 0x00000001, 'd', "GPIO 11 i/o direction (1=output)" },
+{ "GPDR0_12", 0x40E0000C, 12, 0x00000001, 'd', "GPIO 12 i/o direction (1=output)" },
+{ "GPDR0_13", 0x40E0000C, 13, 0x00000001, 'd', "GPIO 13 i/o direction (1=output)" },
+{ "GPDR0_14", 0x40E0000C, 14, 0x00000001, 'd', "GPIO 14 i/o direction (1=output)" },
+{ "GPDR0_15", 0x40E0000C, 15, 0x00000001, 'd', "GPIO 15 i/o direction (1=output)" },
+{ "GPDR0_16", 0x40E0000C, 16, 0x00000001, 'd', "GPIO 16 i/o direction (1=output)" },
+{ "GPDR0_17", 0x40E0000C, 17, 0x00000001, 'd', "GPIO 17 i/o direction (1=output)" },
+{ "GPDR0_18", 0x40E0000C, 18, 0x00000001, 'd', "GPIO 18 i/o direction (1=output)" },
+{ "GPDR0_19", 0x40E0000C, 19, 0x00000001, 'd', "GPIO 19 i/o direction (1=output)" },
+{ "GPDR0_20", 0x40E0000C, 20, 0x00000001, 'd', "GPIO 20 i/o direction (1=output)" },
+{ "GPDR0_21", 0x40E0000C, 21, 0x00000001, 'd', "GPIO 21 i/o direction (1=output)" },
+{ "GPDR0_22", 0x40E0000C, 22, 0x00000001, 'd', "GPIO 22 i/o direction (1=output)" },
+{ "GPDR0_23", 0x40E0000C, 23, 0x00000001, 'd', "GPIO 23 i/o direction (1=output)" },
+{ "GPDR0_24", 0x40E0000C, 24, 0x00000001, 'd', "GPIO 24 i/o direction (1=output)" },
+{ "GPDR0_25", 0x40E0000C, 25, 0x00000001, 'd', "GPIO 25 i/o direction (1=output)" },
+{ "GPDR0_26", 0x40E0000C, 26, 0x00000001, 'd', "GPIO 26 i/o direction (1=output)" },
+{ "GPDR0_27", 0x40E0000C, 27, 0x00000001, 'd', "GPIO 27 i/o direction (1=output)" },
+{ "GPDR0_28", 0x40E0000C, 28, 0x00000001, 'd', "GPIO 28 i/o direction (1=output)" },
+{ "GPDR0_29", 0x40E0000C, 29, 0x00000001, 'd', "GPIO 29 i/o direction (1=output)" },
+{ "GPDR0_30", 0x40E0000C, 30, 0x00000001, 'd', "GPIO 30 i/o direction (1=output)" },
+{ "GPDR0_31", 0x40E0000C, 31, 0x00000001, 'd', "GPIO 31 i/o direction (1=output)" },
+
+{ "GPDR1",    0x40E00010,  0, 0xffffffff, 'x', "GPIO Direction Register 1 (4-9)" },
+{ "GPDR1_32", 0x40E00010,  0, 0x00000001, 'd', "GPIO 32 i/o direction (1=output)" },
+{ "GPDR1_33", 0x40E00010,  1, 0x00000001, 'd', "GPIO 33 i/o direction (1=output)" },
+{ "GPDR1_34", 0x40E00010,  2, 0x00000001, 'd', "GPIO 34 i/o direction (1=output)" },
+{ "GPDR1_35", 0x40E00010,  3, 0x00000001, 'd', "GPIO 35 i/o direction (1=output)" },
+{ "GPDR1_36", 0x40E00010,  4, 0x00000001, 'd', "GPIO 36 i/o direction (1=output)" },
+{ "GPDR1_37", 0x40E00010,  5, 0x00000001, 'd', "GPIO 37 i/o direction (1=output)" },
+{ "GPDR1_38", 0x40E00010,  6, 0x00000001, 'd', "GPIO 38 i/o direction (1=output)" },
+{ "GPDR1_39", 0x40E00010,  7, 0x00000001, 'd', "GPIO 39 i/o direction (1=output)" },
+{ "GPDR1_40", 0x40E00010,  8, 0x00000001, 'd', "GPIO 40 i/o direction (1=output)" },
+{ "GPDR1_41", 0x40E00010,  9, 0x00000001, 'd', "GPIO 41 i/o direction (1=output)" },
+{ "GPDR1_42", 0x40E00010, 10, 0x00000001, 'd', "GPIO 42 i/o direction (1=output)" },
+{ "GPDR1_43", 0x40E00010, 11, 0x00000001, 'd', "GPIO 43 i/o direction (1=output)" },
+{ "GPDR1_44", 0x40E00010, 12, 0x00000001, 'd', "GPIO 44 i/o direction (1=output)" },
+{ "GPDR1_45", 0x40E00010, 13, 0x00000001, 'd', "GPIO 45 i/o direction (1=output)" },
+{ "GPDR1_46", 0x40E00010, 14, 0x00000001, 'd', "GPIO 46 i/o direction (1=output)" },
+{ "GPDR1_47", 0x40E00010, 15, 0x00000001, 'd', "GPIO 47 i/o direction (1=output)" },
+{ "GPDR1_48", 0x40E00010, 16, 0x00000001, 'd', "GPIO 48 i/o direction (1=output)" },
+{ "GPDR1_49", 0x40E00010, 17, 0x00000001, 'd', "GPIO 49 i/o direction (1=output)" },
+{ "GPDR1_50", 0x40E00010, 18, 0x00000001, 'd', "GPIO 50 i/o direction (1=output)" },
+{ "GPDR1_51", 0x40E00010, 19, 0x00000001, 'd', "GPIO 51 i/o direction (1=output)" },
+{ "GPDR1_52", 0x40E00010, 20, 0x00000001, 'd', "GPIO 52 i/o direction (1=output)" },
+{ "GPDR1_53", 0x40E00010, 21, 0x00000001, 'd', "GPIO 53 i/o direction (1=output)" },
+{ "GPDR1_54", 0x40E00010, 22, 0x00000001, 'd', "GPIO 54 i/o direction (1=output)" },
+{ "GPDR1_55", 0x40E00010, 23, 0x00000001, 'd', "GPIO 55 i/o direction (1=output)" },
+{ "GPDR1_56", 0x40E00010, 24, 0x00000001, 'd', "GPIO 56 i/o direction (1=output)" },
+{ "GPDR1_57", 0x40E00010, 25, 0x00000001, 'd', "GPIO 57 i/o direction (1=output)" },
+{ "GPDR1_58", 0x40E00010, 26, 0x00000001, 'd', "GPIO 58 i/o direction (1=output)" },
+{ "GPDR1_59", 0x40E00010, 27, 0x00000001, 'd', "GPIO 59 i/o direction (1=output)" },
+{ "GPDR1_60", 0x40E00010, 28, 0x00000001, 'd', "GPIO 60 i/o direction (1=output)" },
+{ "GPDR1_61", 0x40E00010, 29, 0x00000001, 'd', "GPIO 61 i/o direction (1=output)" },
+{ "GPDR1_62", 0x40E00010, 30, 0x00000001, 'd', "GPIO 62 i/o direction (1=output)" },
+{ "GPDR1_63", 0x40E00010, 31, 0x00000001, 'd', "GPIO 63 i/o direction (1=output)" },
+
+{ "GPDR2",    0x40E00014,  0, 0xffffffff, 'x', "GPIO Direction Register 2 (4-9)" },
+{ "GPDR2_64", 0x40E00014,  0, 0x00000001, 'd', "GPIO 64 i/o direction (1=output)" },
+{ "GPDR2_65", 0x40E00014,  1, 0x00000001, 'd', "GPIO 65 i/o direction (1=output)" },
+{ "GPDR2_66", 0x40E00014,  2, 0x00000001, 'd', "GPIO 66 i/o direction (1=output)" },
+{ "GPDR2_67", 0x40E00014,  3, 0x00000001, 'd', "GPIO 67 i/o direction (1=output)" },
+{ "GPDR2_68", 0x40E00014,  4, 0x00000001, 'd', "GPIO 68 i/o direction (1=output)" },
+{ "GPDR2_69", 0x40E00014,  5, 0x00000001, 'd', "GPIO 69 i/o direction (1=output)" },
+{ "GPDR2_70", 0x40E00014,  6, 0x00000001, 'd', "GPIO 70 i/o direction (1=output)" },
+{ "GPDR2_71", 0x40E00014,  7, 0x00000001, 'd', "GPIO 71 i/o direction (1=output)" },
+{ "GPDR2_72", 0x40E00014,  8, 0x00000001, 'd', "GPIO 72 i/o direction (1=output)" },
+{ "GPDR2_73", 0x40E00014,  9, 0x00000001, 'd', "GPIO 73 i/o direction (1=output)" },
+{ "GPDR2_74", 0x40E00014, 10, 0x00000001, 'd', "GPIO 74 i/o direction (1=output)" },
+{ "GPDR2_75", 0x40E00014, 11, 0x00000001, 'd', "GPIO 75 i/o direction (1=output)" },
+{ "GPDR2_76", 0x40E00014, 12, 0x00000001, 'd', "GPIO 76 i/o direction (1=output)" },
+{ "GPDR2_77", 0x40E00014, 13, 0x00000001, 'd', "GPIO 77 i/o direction (1=output)" },
+{ "GPDR2_78", 0x40E00014, 14, 0x00000001, 'd', "GPIO 78 i/o direction (1=output)" },
+{ "GPDR2_79", 0x40E00014, 15, 0x00000001, 'd', "GPIO 79 i/o direction (1=output)" },
+{ "GPDR2_80", 0x40E00014, 16, 0x00000001, 'd', "GPIO 80 i/o direction (1=output)" },
+{ "GPDR2_81", 0x40E00014, 17, 0x00000001, 'd', "GPIO 81 i/o direction (1=output)" },
+{ "GPDR2_82", 0x40E00014, 18, 0x00000001, 'd', "GPIO 82 i/o direction (1=output)" },
+{ "GPDR2_83", 0x40E00014, 19, 0x00000001, 'd', "GPIO 83 i/o direction (1=output)" },
+{ "GPDR2_84", 0x40E00014, 20, 0x00000001, 'd', "GPIO 84 i/o direction (1=output)" },
+
+{ "GPSR0",    0x40E00018,  0, 0xffffffff, 'x', "GPIO Set Register 0 (4-10)" },
+{ "GPSR0_0",  0x40E00018,  0, 0x00000001, 'd', "GPIO 0 set" },
+{ "GPSR0_1",  0x40E00018,  1, 0x00000001, 'd', "GPIO 1 set" },
+{ "GPSR0_2",  0x40E00018,  2, 0x00000001, 'd', "GPIO 2 set" },
+{ "GPSR0_3",  0x40E00018,  3, 0x00000001, 'd', "GPIO 3 set" },
+{ "GPSR0_4",  0x40E00018,  4, 0x00000001, 'd', "GPIO 4 set" },
+{ "GPSR0_5",  0x40E00018,  5, 0x00000001, 'd', "GPIO 5 set" },
+{ "GPSR0_6",  0x40E00018,  6, 0x00000001, 'd', "GPIO 6 set" },
+{ "GPSR0_7",  0x40E00018,  7, 0x00000001, 'd', "GPIO 7 set" },
+{ "GPSR0_8",  0x40E00018,  8, 0x00000001, 'd', "GPIO 8 set" },
+{ "GPSR0_9",  0x40E00018,  9, 0x00000001, 'd', "GPIO 9 set" },
+{ "GPSR0_10", 0x40E00018, 10, 0x00000001, 'd', "GPIO 10 set" },
+{ "GPSR0_11", 0x40E00018, 11, 0x00000001, 'd', "GPIO 11 set" },
+{ "GPSR0_12", 0x40E00018, 12, 0x00000001, 'd', "GPIO 12 set" },
+{ "GPSR0_13", 0x40E00018, 13, 0x00000001, 'd', "GPIO 13 set" },
+{ "GPSR0_14", 0x40E00018, 14, 0x00000001, 'd', "GPIO 14 set" },
+{ "GPSR0_15", 0x40E00018, 15, 0x00000001, 'd', "GPIO 15 set" },
+{ "GPSR0_16", 0x40E00018, 16, 0x00000001, 'd', "GPIO 16 set" },
+{ "GPSR0_17", 0x40E00018, 17, 0x00000001, 'd', "GPIO 17 set" },
+{ "GPSR0_18", 0x40E00018, 18, 0x00000001, 'd', "GPIO 18 set" },
+{ "GPSR0_19", 0x40E00018, 19, 0x00000001, 'd', "GPIO 19 set" },
+{ "GPSR0_20", 0x40E00018, 20, 0x00000001, 'd', "GPIO 20 set" },
+{ "GPSR0_21", 0x40E00018, 21, 0x00000001, 'd', "GPIO 21 set" },
+{ "GPSR0_22", 0x40E00018, 22, 0x00000001, 'd', "GPIO 22 set" },
+{ "GPSR0_23", 0x40E00018, 23, 0x00000001, 'd', "GPIO 23 set" },
+{ "GPSR0_24", 0x40E00018, 24, 0x00000001, 'd', "GPIO 24 set" },
+{ "GPSR0_25", 0x40E00018, 25, 0x00000001, 'd', "GPIO 25 set" },
+{ "GPSR0_26", 0x40E00018, 26, 0x00000001, 'd', "GPIO 26 set" },
+{ "GPSR0_27", 0x40E00018, 27, 0x00000001, 'd', "GPIO 27 set" },
+{ "GPSR0_28", 0x40E00018, 28, 0x00000001, 'd', "GPIO 28 set" },
+{ "GPSR0_29", 0x40E00018, 29, 0x00000001, 'd', "GPIO 29 set" },
+{ "GPSR0_30", 0x40E00018, 30, 0x00000001, 'd', "GPIO 30 set" },
+{ "GPSR0_31", 0x40E00018, 31, 0x00000001, 'd', "GPIO 31 set" },
+
+{ "GPSR1",    0x40E0001C,  0, 0xffffffff, 'x', "GPIO Set Register 1 (4-10)" },
+{ "GPSR1_32", 0x40E0001C,  0, 0x00000001, 'd', "GPIO 32 set" },
+{ "GPSR1_33", 0x40E0001C,  1, 0x00000001, 'd', "GPIO 33 set" },
+{ "GPSR1_34", 0x40E0001C,  2, 0x00000001, 'd', "GPIO 34 set" },
+{ "GPSR1_35", 0x40E0001C,  3, 0x00000001, 'd', "GPIO 35 set" },
+{ "GPSR1_36", 0x40E0001C,  4, 0x00000001, 'd', "GPIO 36 set" },
+{ "GPSR1_37", 0x40E0001C,  5, 0x00000001, 'd', "GPIO 37 set" },
+{ "GPSR1_38", 0x40E0001C,  6, 0x00000001, 'd', "GPIO 38 set" },
+{ "GPSR1_39", 0x40E0001C,  7, 0x00000001, 'd', "GPIO 39 set" },
+{ "GPSR1_40", 0x40E0001C,  8, 0x00000001, 'd', "GPIO 40 set" },
+{ "GPSR1_41", 0x40E0001C,  9, 0x00000001, 'd', "GPIO 41 set" },
+{ "GPSR1_42", 0x40E0001C, 10, 0x00000001, 'd', "GPIO 42 set" },
+{ "GPSR1_43", 0x40E0001C, 11, 0x00000001, 'd', "GPIO 43 set" },
+{ "GPSR1_44", 0x40E0001C, 12, 0x00000001, 'd', "GPIO 44 set" },
+{ "GPSR1_45", 0x40E0001C, 13, 0x00000001, 'd', "GPIO 45 set" },
+{ "GPSR1_46", 0x40E0001C, 14, 0x00000001, 'd', "GPIO 46 set" },
+{ "GPSR1_47", 0x40E0001C, 15, 0x00000001, 'd', "GPIO 47 set" },
+{ "GPSR1_48", 0x40E0001C, 16, 0x00000001, 'd', "GPIO 48 set" },
+{ "GPSR1_49", 0x40E0001C, 17, 0x00000001, 'd', "GPIO 49 set" },
+{ "GPSR1_50", 0x40E0001C, 18, 0x00000001, 'd', "GPIO 50 set" },
+{ "GPSR1_51", 0x40E0001C, 19, 0x00000001, 'd', "GPIO 51 set" },
+{ "GPSR1_52", 0x40E0001C, 20, 0x00000001, 'd', "GPIO 52 set" },
+{ "GPSR1_53", 0x40E0001C, 21, 0x00000001, 'd', "GPIO 53 set" },
+{ "GPSR1_54", 0x40E0001C, 22, 0x00000001, 'd', "GPIO 54 set" },
+{ "GPSR1_55", 0x40E0001C, 23, 0x00000001, 'd', "GPIO 55 set" },
+{ "GPSR1_56", 0x40E0001C, 24, 0x00000001, 'd', "GPIO 56 set" },
+{ "GPSR1_57", 0x40E0001C, 25, 0x00000001, 'd', "GPIO 57 set" },
+{ "GPSR1_58", 0x40E0001C, 26, 0x00000001, 'd', "GPIO 58 set" },
+{ "GPSR1_59", 0x40E0001C, 27, 0x00000001, 'd', "GPIO 59 set" },
+{ "GPSR1_60", 0x40E0001C, 28, 0x00000001, 'd', "GPIO 60 set" },
+{ "GPSR1_61", 0x40E0001C, 29, 0x00000001, 'd', "GPIO 61 set" },
+{ "GPSR1_62", 0x40E0001C, 30, 0x00000001, 'd', "GPIO 62 set" },
+{ "GPSR1_63", 0x40E0001C, 31, 0x00000001, 'd', "GPIO 63 set" },
+
+{ "GPSR2",    0x40E00020,  0, 0xffffffff, 'x', "GPIO Set Register 2 (4-11)" },
+{ "GPSR2_64", 0x40E00020,  0, 0x00000001, 'd', "GPIO 64 set" },
+{ "GPSR2_65", 0x40E00020,  1, 0x00000001, 'd', "GPIO 65 set" },
+{ "GPSR2_66", 0x40E00020,  2, 0x00000001, 'd', "GPIO 66 set" },
+{ "GPSR2_67", 0x40E00020,  3, 0x00000001, 'd', "GPIO 67 set" },
+{ "GPSR2_68", 0x40E00020,  4, 0x00000001, 'd', "GPIO 68 set" },
+{ "GPSR2_69", 0x40E00020,  5, 0x00000001, 'd', "GPIO 69 set" },
+{ "GPSR2_70", 0x40E00020,  6, 0x00000001, 'd', "GPIO 70 set" },
+{ "GPSR2_71", 0x40E00020,  7, 0x00000001, 'd', "GPIO 71 set" },
+{ "GPSR2_72", 0x40E00020,  8, 0x00000001, 'd', "GPIO 72 set" },
+{ "GPSR2_73", 0x40E00020,  9, 0x00000001, 'd', "GPIO 73 set" },
+{ "GPSR2_74", 0x40E00020, 10, 0x00000001, 'd', "GPIO 74 set" },
+{ "GPSR2_75", 0x40E00020, 11, 0x00000001, 'd', "GPIO 75 set" },
+{ "GPSR2_76", 0x40E00020, 12, 0x00000001, 'd', "GPIO 76 set" },
+{ "GPSR2_77", 0x40E00020, 13, 0x00000001, 'd', "GPIO 77 set" },
+{ "GPSR2_78", 0x40E00020, 14, 0x00000001, 'd', "GPIO 78 set" },
+{ "GPSR2_79", 0x40E00020, 15, 0x00000001, 'd', "GPIO 79 set" },
+{ "GPSR2_80", 0x40E00020, 16, 0x00000001, 'd', "GPIO 80 set" },
+{ "GPSR2_81", 0x40E00020, 17, 0x00000001, 'd', "GPIO 81 set" },
+{ "GPSR2_82", 0x40E00020, 18, 0x00000001, 'd', "GPIO 82 set" },
+{ "GPSR2_83", 0x40E00020, 19, 0x00000001, 'd', "GPIO 83 set" },
+{ "GPSR2_84", 0x40E00020, 20, 0x00000001, 'd', "GPIO 84 set" },
+
+{ "GPCR0",    0x40E00024,  0, 0xffffffff, 'x', "GPIO Clear Register 0 (4-11)" },
+{ "GPCR0_0",  0x40E00024,  0, 0x00000001, 'd', "GPIO 0 clear" },
+{ "GPCR0_1",  0x40E00024,  1, 0x00000001, 'd', "GPIO 1 clear" },
+{ "GPCR0_2",  0x40E00024,  2, 0x00000001, 'd', "GPIO 2 clear" },
+{ "GPCR0_3",  0x40E00024,  3, 0x00000001, 'd', "GPIO 3 clear" },
+{ "GPCR0_4",  0x40E00024,  4, 0x00000001, 'd', "GPIO 4 clear" },
+{ "GPCR0_5",  0x40E00024,  5, 0x00000001, 'd', "GPIO 5 clear" },
+{ "GPCR0_6",  0x40E00024,  6, 0x00000001, 'd', "GPIO 6 clear" },
+{ "GPCR0_7",  0x40E00024,  7, 0x00000001, 'd', "GPIO 7 clear" },
+{ "GPCR0_8",  0x40E00024,  8, 0x00000001, 'd', "GPIO 8 clear" },
+{ "GPCR0_9",  0x40E00024,  9, 0x00000001, 'd', "GPIO 9 clear" },
+{ "GPCR0_10", 0x40E00024, 10, 0x00000001, 'd', "GPIO 10 clear" },
+{ "GPCR0_11", 0x40E00024, 11, 0x00000001, 'd', "GPIO 11 clear" },
+{ "GPCR0_12", 0x40E00024, 12, 0x00000001, 'd', "GPIO 12 clear" },
+{ "GPCR0_13", 0x40E00024, 13, 0x00000001, 'd', "GPIO 13 clear" },
+{ "GPCR0_14", 0x40E00024, 14, 0x00000001, 'd', "GPIO 14 clear" },
+{ "GPCR0_15", 0x40E00024, 15, 0x00000001, 'd', "GPIO 15 clear" },
+{ "GPCR0_16", 0x40E00024, 16, 0x00000001, 'd', "GPIO 16 clear" },
+{ "GPCR0_17", 0x40E00024, 17, 0x00000001, 'd', "GPIO 17 clear" },
+{ "GPCR0_18", 0x40E00024, 18, 0x00000001, 'd', "GPIO 18 clear" },
+{ "GPCR0_19", 0x40E00024, 19, 0x00000001, 'd', "GPIO 19 clear" },
+{ "GPCR0_20", 0x40E00024, 20, 0x00000001, 'd', "GPIO 20 clear" },
+{ "GPCR0_21", 0x40E00024, 21, 0x00000001, 'd', "GPIO 21 clear" },
+{ "GPCR0_22", 0x40E00024, 22, 0x00000001, 'd', "GPIO 22 clear" },
+{ "GPCR0_23", 0x40E00024, 23, 0x00000001, 'd', "GPIO 23 clear" },
+{ "GPCR0_24", 0x40E00024, 24, 0x00000001, 'd', "GPIO 24 clear" },
+{ "GPCR0_25", 0x40E00024, 25, 0x00000001, 'd', "GPIO 25 clear" },
+{ "GPCR0_26", 0x40E00024, 26, 0x00000001, 'd', "GPIO 26 clear" },
+{ "GPCR0_27", 0x40E00024, 27, 0x00000001, 'd', "GPIO 27 clear" },
+{ "GPCR0_28", 0x40E00024, 28, 0x00000001, 'd', "GPIO 28 clear" },
+{ "GPCR0_29", 0x40E00024, 29, 0x00000001, 'd', "GPIO 29 clear" },
+{ "GPCR0_30", 0x40E00024, 30, 0x00000001, 'd', "GPIO 30 clear" },
+{ "GPCR0_31", 0x40E00024, 31, 0x00000001, 'd', "GPIO 31 clear" },
+
+{ "GPCR1",    0x40E00028,  0, 0xffffffff, 'x', "GPIO Clear Register 1 (4-11)" },
+{ "GPCR1_32", 0x40E00028,  0, 0x00000001, 'd', "GPIO 32 clear" },
+{ "GPCR1_33", 0x40E00028,  1, 0x00000001, 'd', "GPIO 33 clear" },
+{ "GPCR1_34", 0x40E00028,  2, 0x00000001, 'd', "GPIO 34 clear" },
+{ "GPCR1_35", 0x40E00028,  3, 0x00000001, 'd', "GPIO 35 clear" },
+{ "GPCR1_36", 0x40E00028,  4, 0x00000001, 'd', "GPIO 36 clear" },
+{ "GPCR1_37", 0x40E00028,  5, 0x00000001, 'd', "GPIO 37 clear" },
+{ "GPCR1_38", 0x40E00028,  6, 0x00000001, 'd', "GPIO 38 clear" },
+{ "GPCR1_39", 0x40E00028,  7, 0x00000001, 'd', "GPIO 39 clear" },
+{ "GPCR1_40", 0x40E00028,  8, 0x00000001, 'd', "GPIO 40 clear" },
+{ "GPCR1_41", 0x40E00028,  9, 0x00000001, 'd', "GPIO 41 clear" },
+{ "GPCR1_42", 0x40E00028, 10, 0x00000001, 'd', "GPIO 42 clear" },
+{ "GPCR1_43", 0x40E00028, 11, 0x00000001, 'd', "GPIO 43 clear" },
+{ "GPCR1_44", 0x40E00028, 12, 0x00000001, 'd', "GPIO 44 clear" },
+{ "GPCR1_45", 0x40E00028, 13, 0x00000001, 'd', "GPIO 45 clear" },
+{ "GPCR1_46", 0x40E00028, 14, 0x00000001, 'd', "GPIO 46 clear" },
+{ "GPCR1_47", 0x40E00028, 15, 0x00000001, 'd', "GPIO 47 clear" },
+{ "GPCR1_48", 0x40E00028, 16, 0x00000001, 'd', "GPIO 48 clear" },
+{ "GPCR1_49", 0x40E00028, 17, 0x00000001, 'd', "GPIO 49 clear" },
+{ "GPCR1_50", 0x40E00028, 18, 0x00000001, 'd', "GPIO 50 clear" },
+{ "GPCR1_51", 0x40E00028, 19, 0x00000001, 'd', "GPIO 51 clear" },
+{ "GPCR1_52", 0x40E00028, 20, 0x00000001, 'd', "GPIO 52 clear" },
+{ "GPCR1_53", 0x40E00028, 21, 0x00000001, 'd', "GPIO 53 clear" },
+{ "GPCR1_54", 0x40E00028, 22, 0x00000001, 'd', "GPIO 54 clear" },
+{ "GPCR1_55", 0x40E00028, 23, 0x00000001, 'd', "GPIO 55 clear" },
+{ "GPCR1_56", 0x40E00028, 24, 0x00000001, 'd', "GPIO 56 clear" },
+{ "GPCR1_57", 0x40E00028, 25, 0x00000001, 'd', "GPIO 57 clear" },
+{ "GPCR1_58", 0x40E00028, 26, 0x00000001, 'd', "GPIO 58 clear" },
+{ "GPCR1_59", 0x40E00028, 27, 0x00000001, 'd', "GPIO 59 clear" },
+{ "GPCR1_60", 0x40E00028, 28, 0x00000001, 'd', "GPIO 60 clear" },
+{ "GPCR1_61", 0x40E00028, 29, 0x00000001, 'd', "GPIO 61 clear" },
+{ "GPCR1_62", 0x40E00028, 30, 0x00000001, 'd', "GPIO 62 clear" },
+{ "GPCR1_63", 0x40E00028, 31, 0x00000001, 'd', "GPIO 63 clear" },
+
+{ "GPCR2",    0x40E0002C,  0, 0xffffffff, 'x', "GPIO Clear Register 2 (4-12)" },
+{ "GPCR2_64", 0x40E0002C,  0, 0x00000001, 'd', "GPIO 64 clear" },
+{ "GPCR2_65", 0x40E0002C,  1, 0x00000001, 'd', "GPIO 65 clear" },
+{ "GPCR2_66", 0x40E0002C,  2, 0x00000001, 'd', "GPIO 66 clear" },
+{ "GPCR2_67", 0x40E0002C,  3, 0x00000001, 'd', "GPIO 67 clear" },
+{ "GPCR2_68", 0x40E0002C,  4, 0x00000001, 'd', "GPIO 68 clear" },
+{ "GPCR2_69", 0x40E0002C,  5, 0x00000001, 'd', "GPIO 69 clear" },
+{ "GPCR2_70", 0x40E0002C,  6, 0x00000001, 'd', "GPIO 70 clear" },
+{ "GPCR2_71", 0x40E0002C,  7, 0x00000001, 'd', "GPIO 71 clear" },
+{ "GPCR2_72", 0x40E0002C,  8, 0x00000001, 'd', "GPIO 72 clear" },
+{ "GPCR2_73", 0x40E0002C,  9, 0x00000001, 'd', "GPIO 73 clear" },
+{ "GPCR2_74", 0x40E0002C, 10, 0x00000001, 'd', "GPIO 74 clear" },
+{ "GPCR2_75", 0x40E0002C, 11, 0x00000001, 'd', "GPIO 75 clear" },
+{ "GPCR2_76", 0x40E0002C, 12, 0x00000001, 'd', "GPIO 76 clear" },
+{ "GPCR2_77", 0x40E0002C, 13, 0x00000001, 'd', "GPIO 77 clear" },
+{ "GPCR2_78", 0x40E0002C, 14, 0x00000001, 'd', "GPIO 78 clear" },
+{ "GPCR2_79", 0x40E0002C, 15, 0x00000001, 'd', "GPIO 79 clear" },
+{ "GPCR2_80", 0x40E0002C, 16, 0x00000001, 'd', "GPIO 80 clear" },
+{ "GPCR2_81", 0x40E0002C, 17, 0x00000001, 'd', "GPIO 81 clear" },
+{ "GPCR2_82", 0x40E0002C, 18, 0x00000001, 'd', "GPIO 82 clear" },
+{ "GPCR2_83", 0x40E0002C, 19, 0x00000001, 'd', "GPIO 83 clear" },
+{ "GPCR2_84", 0x40E0002C, 20, 0x00000001, 'd', "GPIO 84 clear" },
+
+{ "GRER0",    0x40E00030,  0, 0xffffffff, 'x', "GPIO Raising Edge Detect Enable Register 0 (4-13)" },
+{ "GRER0_0",  0x40E00030,  0, 0x00000001, 'd', "GPIO 0 raising edge detect enabled" },
+{ "GRER0_1",  0x40E00030,  1, 0x00000001, 'd', "GPIO 1 raising edge detect enabled" },
+{ "GRER0_2",  0x40E00030,  2, 0x00000001, 'd', "GPIO 2 raising edge detect enabled" },
+{ "GRER0_3",  0x40E00030,  3, 0x00000001, 'd', "GPIO 3 raising edge detect enabled" },
+{ "GRER0_4",  0x40E00030,  4, 0x00000001, 'd', "GPIO 4 raising edge detect enabled" },
+{ "GRER0_5",  0x40E00030,  5, 0x00000001, 'd', "GPIO 5 raising edge detect enabled" },
+{ "GRER0_6",  0x40E00030,  6, 0x00000001, 'd', "GPIO 6 raising edge detect enabled" },
+{ "GRER0_7",  0x40E00030,  7, 0x00000001, 'd', "GPIO 7 raising edge detect enabled" },
+{ "GRER0_8",  0x40E00030,  8, 0x00000001, 'd', "GPIO 8 raising edge detect enabled" },
+{ "GRER0_9",  0x40E00030,  9, 0x00000001, 'd', "GPIO 9 raising edge detect enabled" },
+{ "GRER0_10", 0x40E00030, 10, 0x00000001, 'd', "GPIO 10 raising edge detect enabled" },
+{ "GRER0_11", 0x40E00030, 11, 0x00000001, 'd', "GPIO 11 raising edge detect enabled" },
+{ "GRER0_12", 0x40E00030, 12, 0x00000001, 'd', "GPIO 12 raising edge detect enabled" },
+{ "GRER0_13", 0x40E00030, 13, 0x00000001, 'd', "GPIO 13 raising edge detect enabled" },
+{ "GRER0_14", 0x40E00030, 14, 0x00000001, 'd', "GPIO 14 raising edge detect enabled" },
+{ "GRER0_15", 0x40E00030, 15, 0x00000001, 'd', "GPIO 15 raising edge detect enabled" },
+{ "GRER0_16", 0x40E00030, 16, 0x00000001, 'd', "GPIO 16 raising edge detect enabled" },
+{ "GRER0_17", 0x40E00030, 17, 0x00000001, 'd', "GPIO 17 raising edge detect enabled" },
+{ "GRER0_18", 0x40E00030, 18, 0x00000001, 'd', "GPIO 18 raising edge detect enabled" },
+{ "GRER0_19", 0x40E00030, 19, 0x00000001, 'd', "GPIO 19 raising edge detect enabled" },
+{ "GRER0_20", 0x40E00030, 20, 0x00000001, 'd', "GPIO 20 raising edge detect enabled" },
+{ "GRER0_21", 0x40E00030, 21, 0x00000001, 'd', "GPIO 21 raising edge detect enabled" },
+{ "GRER0_22", 0x40E00030, 22, 0x00000001, 'd', "GPIO 22 raising edge detect enabled" },
+{ "GRER0_23", 0x40E00030, 23, 0x00000001, 'd', "GPIO 23 raising edge detect enabled" },
+{ "GRER0_24", 0x40E00030, 24, 0x00000001, 'd', "GPIO 24 raising edge detect enabled" },
+{ "GRER0_25", 0x40E00030, 25, 0x00000001, 'd', "GPIO 25 raising edge detect enabled" },
+{ "GRER0_26", 0x40E00030, 26, 0x00000001, 'd', "GPIO 26 raising edge detect enabled" },
+{ "GRER0_27", 0x40E00030, 27, 0x00000001, 'd', "GPIO 27 raising edge detect enabled" },
+{ "GRER0_28", 0x40E00030, 28, 0x00000001, 'd', "GPIO 28 raising edge detect enabled" },
+{ "GRER0_29", 0x40E00030, 29, 0x00000001, 'd', "GPIO 29 raising edge detect enabled" },
+{ "GRER0_30", 0x40E00030, 30, 0x00000001, 'd', "GPIO 30 raising edge detect enabled" },
+{ "GRER0_31", 0x40E00030, 31, 0x00000001, 'd', "GPIO 31 raising edge detect enabled" },
+
+{ "GRER1",    0x40E00034,  0, 0xffffffff, 'x', "GPIO Raising Edge Detect Enable Register 1 (4-13)" },
+{ "GRER1_32", 0x40E00034,  0, 0x00000001, 'd', "GPIO 32 raising edge detect enabled" },
+{ "GRER1_33", 0x40E00034,  1, 0x00000001, 'd', "GPIO 33 raising edge detect enabled" },
+{ "GRER1_34", 0x40E00034,  2, 0x00000001, 'd', "GPIO 34 raising edge detect enabled" },
+{ "GRER1_35", 0x40E00034,  3, 0x00000001, 'd', "GPIO 35 raising edge detect enabled" },
+{ "GRER1_36", 0x40E00034,  4, 0x00000001, 'd', "GPIO 36 raising edge detect enabled" },
+{ "GRER1_37", 0x40E00034,  5, 0x00000001, 'd', "GPIO 37 raising edge detect enabled" },
+{ "GRER1_38", 0x40E00034,  6, 0x00000001, 'd', "GPIO 38 raising edge detect enabled" },
+{ "GRER1_39", 0x40E00034,  7, 0x00000001, 'd', "GPIO 39 raising edge detect enabled" },
+{ "GRER1_40", 0x40E00034,  8, 0x00000001, 'd', "GPIO 40 raising edge detect enabled" },
+{ "GRER1_41", 0x40E00034,  9, 0x00000001, 'd', "GPIO 41 raising edge detect enabled" },
+{ "GRER1_42", 0x40E00034, 10, 0x00000001, 'd', "GPIO 42 raising edge detect enabled" },
+{ "GRER1_43", 0x40E00034, 11, 0x00000001, 'd', "GPIO 43 raising edge detect enabled" },
+{ "GRER1_44", 0x40E00034, 12, 0x00000001, 'd', "GPIO 44 raising edge detect enabled" },
+{ "GRER1_45", 0x40E00034, 13, 0x00000001, 'd', "GPIO 45 raising edge detect enabled" },
+{ "GRER1_46", 0x40E00034, 14, 0x00000001, 'd', "GPIO 46 raising edge detect enabled" },
+{ "GRER1_47", 0x40E00034, 15, 0x00000001, 'd', "GPIO 47 raising edge detect enabled" },
+{ "GRER1_48", 0x40E00034, 16, 0x00000001, 'd', "GPIO 48 raising edge detect enabled" },
+{ "GRER1_49", 0x40E00034, 17, 0x00000001, 'd', "GPIO 49 raising edge detect enabled" },
+{ "GRER1_50", 0x40E00034, 18, 0x00000001, 'd', "GPIO 50 raising edge detect enabled" },
+{ "GRER1_51", 0x40E00034, 19, 0x00000001, 'd', "GPIO 51 raising edge detect enabled" },
+{ "GRER1_52", 0x40E00034, 20, 0x00000001, 'd', "GPIO 52 raising edge detect enabled" },
+{ "GRER1_53", 0x40E00034, 21, 0x00000001, 'd', "GPIO 53 raising edge detect enabled" },
+{ "GRER1_54", 0x40E00034, 22, 0x00000001, 'd', "GPIO 54 raising edge detect enabled" },
+{ "GRER1_55", 0x40E00034, 23, 0x00000001, 'd', "GPIO 55 raising edge detect enabled" },
+{ "GRER1_56", 0x40E00034, 24, 0x00000001, 'd', "GPIO 56 raising edge detect enabled" },
+{ "GRER1_57", 0x40E00034, 25, 0x00000001, 'd', "GPIO 57 raising edge detect enabled" },
+{ "GRER1_58", 0x40E00034, 26, 0x00000001, 'd', "GPIO 58 raising edge detect enabled" },
+{ "GRER1_59", 0x40E00034, 27, 0x00000001, 'd', "GPIO 59 raising edge detect enabled" },
+{ "GRER1_60", 0x40E00034, 28, 0x00000001, 'd', "GPIO 60 raising edge detect enabled" },
+{ "GRER1_61", 0x40E00034, 29, 0x00000001, 'd', "GPIO 61 raising edge detect enabled" },
+{ "GRER1_62", 0x40E00034, 30, 0x00000001, 'd', "GPIO 62 raising edge detect enabled" },
+{ "GRER1_63", 0x40E00034, 31, 0x00000001, 'd', "GPIO 63 raising edge detect enabled" },
+
+{ "GRER2",    0x40E00038,  0, 0xffffffff, 'x', "GPIO Raising Edge Detect Enable Register 2 (4-13)" },
+{ "GRER2_64", 0x40E00038,  0, 0x00000001, 'd', "GPIO 64 raising edge detect enabled" },
+{ "GRER2_65", 0x40E00038,  1, 0x00000001, 'd', "GPIO 65 raising edge detect enabled" },
+{ "GRER2_66", 0x40E00038,  2, 0x00000001, 'd', "GPIO 66 raising edge detect enabled" },
+{ "GRER2_67", 0x40E00038,  3, 0x00000001, 'd', "GPIO 67 raising edge detect enabled" },
+{ "GRER2_68", 0x40E00038,  4, 0x00000001, 'd', "GPIO 68 raising edge detect enabled" },
+{ "GRER2_69", 0x40E00038,  5, 0x00000001, 'd', "GPIO 69 raising edge detect enabled" },
+{ "GRER2_70", 0x40E00038,  6, 0x00000001, 'd', "GPIO 70 raising edge detect enabled" },
+{ "GRER2_71", 0x40E00038,  7, 0x00000001, 'd', "GPIO 71 raising edge detect enabled" },
+{ "GRER2_72", 0x40E00038,  8, 0x00000001, 'd', "GPIO 72 raising edge detect enabled" },
+{ "GRER2_73", 0x40E00038,  9, 0x00000001, 'd', "GPIO 73 raising edge detect enabled" },
+{ "GRER2_74", 0x40E00038, 10, 0x00000001, 'd', "GPIO 74 raising edge detect enabled" },
+{ "GRER2_75", 0x40E00038, 11, 0x00000001, 'd', "GPIO 75 raising edge detect enabled" },
+{ "GRER2_76", 0x40E00038, 12, 0x00000001, 'd', "GPIO 76 raising edge detect enabled" },
+{ "GRER2_77", 0x40E00038, 13, 0x00000001, 'd', "GPIO 77 raising edge detect enabled" },
+{ "GRER2_78", 0x40E00038, 14, 0x00000001, 'd', "GPIO 78 raising edge detect enabled" },
+{ "GRER2_79", 0x40E00038, 15, 0x00000001, 'd', "GPIO 79 raising edge detect enabled" },
+{ "GRER2_80", 0x40E00038, 16, 0x00000001, 'd', "GPIO 80 raising edge detect enabled" },
+{ "GRER2_81", 0x40E00038, 17, 0x00000001, 'd', "GPIO 81 raising edge detect enabled" },
+{ "GRER2_82", 0x40E00038, 18, 0x00000001, 'd', "GPIO 82 raising edge detect enabled" },
+{ "GRER2_83", 0x40E00038, 19, 0x00000001, 'd', "GPIO 83 raising edge detect enabled" },
+{ "GRER2_84", 0x40E00038, 20, 0x00000001, 'd', "GPIO 84 raising edge detect enabled" },
+
+{ "GFER0",    0x40E0003C,  0, 0xffffffff, 'x', "GPIO Falling Edge Detect Enable Register 0 (4-14)" },
+{ "GFER0_0",  0x40E0003C,  0, 0x00000001, 'd', "GPIO 0 falling edge detect enabled" },
+{ "GFER0_1",  0x40E0003C,  1, 0x00000001, 'd', "GPIO 1 falling edge detect enabled" },
+{ "GFER0_2",  0x40E0003C,  2, 0x00000001, 'd', "GPIO 2 falling edge detect enabled" },
+{ "GFER0_3",  0x40E0003C,  3, 0x00000001, 'd', "GPIO 3 falling edge detect enabled" },
+{ "GFER0_4",  0x40E0003C,  4, 0x00000001, 'd', "GPIO 4 falling edge detect enabled" },
+{ "GFER0_5",  0x40E0003C,  5, 0x00000001, 'd', "GPIO 5 falling edge detect enabled" },
+{ "GFER0_6",  0x40E0003C,  6, 0x00000001, 'd', "GPIO 6 falling edge detect enabled" },
+{ "GFER0_7",  0x40E0003C,  7, 0x00000001, 'd', "GPIO 7 falling edge detect enabled" },
+{ "GFER0_8",  0x40E0003C,  8, 0x00000001, 'd', "GPIO 8 falling edge detect enabled" },
+{ "GFER0_9",  0x40E0003C,  9, 0x00000001, 'd', "GPIO 9 falling edge detect enabled" },
+{ "GFER0_10", 0x40E0003C, 10, 0x00000001, 'd', "GPIO 10 falling edge detect enabled" },
+{ "GFER0_11", 0x40E0003C, 11, 0x00000001, 'd', "GPIO 11 falling edge detect enabled" },
+{ "GFER0_12", 0x40E0003C, 12, 0x00000001, 'd', "GPIO 12 falling edge detect enabled" },
+{ "GFER0_13", 0x40E0003C, 13, 0x00000001, 'd', "GPIO 13 falling edge detect enabled" },
+{ "GFER0_14", 0x40E0003C, 14, 0x00000001, 'd', "GPIO 14 falling edge detect enabled" },
+{ "GFER0_15", 0x40E0003C, 15, 0x00000001, 'd', "GPIO 15 falling edge detect enabled" },
+{ "GFER0_16", 0x40E0003C, 16, 0x00000001, 'd', "GPIO 16 falling edge detect enabled" },
+{ "GFER0_17", 0x40E0003C, 17, 0x00000001, 'd', "GPIO 17 falling edge detect enabled" },
+{ "GFER0_18", 0x40E0003C, 18, 0x00000001, 'd', "GPIO 18 falling edge detect enabled" },
+{ "GFER0_19", 0x40E0003C, 19, 0x00000001, 'd', "GPIO 19 falling edge detect enabled" },
+{ "GFER0_20", 0x40E0003C, 20, 0x00000001, 'd', "GPIO 20 falling edge detect enabled" },
+{ "GFER0_21", 0x40E0003C, 21, 0x00000001, 'd', "GPIO 21 falling edge detect enabled" },
+{ "GFER0_22", 0x40E0003C, 22, 0x00000001, 'd', "GPIO 22 falling edge detect enabled" },
+{ "GFER0_23", 0x40E0003C, 23, 0x00000001, 'd', "GPIO 23 falling edge detect enabled" },
+{ "GFER0_24", 0x40E0003C, 24, 0x00000001, 'd', "GPIO 24 falling edge detect enabled" },
+{ "GFER0_25", 0x40E0003C, 25, 0x00000001, 'd', "GPIO 25 falling edge detect enabled" },
+{ "GFER0_26", 0x40E0003C, 26, 0x00000001, 'd', "GPIO 26 falling edge detect enabled" },
+{ "GFER0_27", 0x40E0003C, 27, 0x00000001, 'd', "GPIO 27 falling edge detect enabled" },
+{ "GFER0_28", 0x40E0003C, 28, 0x00000001, 'd', "GPIO 28 falling edge detect enabled" },
+{ "GFER0_29", 0x40E0003C, 29, 0x00000001, 'd', "GPIO 29 falling edge detect enabled" },
+{ "GFER0_30", 0x40E0003C, 30, 0x00000001, 'd', "GPIO 30 falling edge detect enabled" },
+{ "GFER0_31", 0x40E0003C, 31, 0x00000001, 'd', "GPIO 31 falling edge detect enabled" },
+
+{ "GFER1",    0x40E00040,  0, 0xffffffff, 'x', "GPIO Falling Edge Detect Enable Register 1 (4-14)" },
+{ "GFER1_32", 0x40E00040,  0, 0x00000001, 'd', "GPIO 32 falling edge detect enabled" },
+{ "GFER1_33", 0x40E00040,  1, 0x00000001, 'd', "GPIO 33 falling edge detect enabled" },
+{ "GFER1_34", 0x40E00040,  2, 0x00000001, 'd', "GPIO 34 falling edge detect enabled" },
+{ "GFER1_35", 0x40E00040,  3, 0x00000001, 'd', "GPIO 35 falling edge detect enabled" },
+{ "GFER1_36", 0x40E00040,  4, 0x00000001, 'd', "GPIO 36 falling edge detect enabled" },
+{ "GFER1_37", 0x40E00040,  5, 0x00000001, 'd', "GPIO 37 falling edge detect enabled" },
+{ "GFER1_38", 0x40E00040,  6, 0x00000001, 'd', "GPIO 38 falling edge detect enabled" },
+{ "GFER1_39", 0x40E00040,  7, 0x00000001, 'd', "GPIO 39 falling edge detect enabled" },
+{ "GFER1_40", 0x40E00040,  8, 0x00000001, 'd', "GPIO 40 falling edge detect enabled" },
+{ "GFER1_41", 0x40E00040,  9, 0x00000001, 'd', "GPIO 41 falling edge detect enabled" },
+{ "GFER1_42", 0x40E00040, 10, 0x00000001, 'd', "GPIO 42 falling edge detect enabled" },
+{ "GFER1_43", 0x40E00040, 11, 0x00000001, 'd', "GPIO 43 falling edge detect enabled" },
+{ "GFER1_44", 0x40E00040, 12, 0x00000001, 'd', "GPIO 44 falling edge detect enabled" },
+{ "GFER1_45", 0x40E00040, 13, 0x00000001, 'd', "GPIO 45 falling edge detect enabled" },
+{ "GFER1_46", 0x40E00040, 14, 0x00000001, 'd', "GPIO 46 falling edge detect enabled" },
+{ "GFER1_47", 0x40E00040, 15, 0x00000001, 'd', "GPIO 47 falling edge detect enabled" },
+{ "GFER1_48", 0x40E00040, 16, 0x00000001, 'd', "GPIO 48 falling edge detect enabled" },
+{ "GFER1_49", 0x40E00040, 17, 0x00000001, 'd', "GPIO 49 falling edge detect enabled" },
+{ "GFER1_50", 0x40E00040, 18, 0x00000001, 'd', "GPIO 50 falling edge detect enabled" },
+{ "GFER1_51", 0x40E00040, 19, 0x00000001, 'd', "GPIO 51 falling edge detect enabled" },
+{ "GFER1_52", 0x40E00040, 20, 0x00000001, 'd', "GPIO 52 falling edge detect enabled" },
+{ "GFER1_53", 0x40E00040, 21, 0x00000001, 'd', "GPIO 53 falling edge detect enabled" },
+{ "GFER1_54", 0x40E00040, 22, 0x00000001, 'd', "GPIO 54 falling edge detect enabled" },
+{ "GFER1_55", 0x40E00040, 23, 0x00000001, 'd', "GPIO 55 falling edge detect enabled" },
+{ "GFER1_56", 0x40E00040, 24, 0x00000001, 'd', "GPIO 56 falling edge detect enabled" },
+{ "GFER1_57", 0x40E00040, 25, 0x00000001, 'd', "GPIO 57 falling edge detect enabled" },
+{ "GFER1_58", 0x40E00040, 26, 0x00000001, 'd', "GPIO 58 falling edge detect enabled" },
+{ "GFER1_59", 0x40E00040, 27, 0x00000001, 'd', "GPIO 59 falling edge detect enabled" },
+{ "GFER1_60", 0x40E00040, 28, 0x00000001, 'd', "GPIO 60 falling edge detect enabled" },
+{ "GFER1_61", 0x40E00040, 29, 0x00000001, 'd', "GPIO 61 falling edge detect enabled" },
+{ "GFER1_62", 0x40E00040, 30, 0x00000001, 'd', "GPIO 62 falling edge detect enabled" },
+{ "GFER1_63", 0x40E00040, 31, 0x00000001, 'd', "GPIO 63 falling edge detect enabled" },
+
+{ "GFER2",    0x40E00044,  0, 0xffffffff, 'x', "GPIO Falling Edge Detect Enable Register 2 (4-14)" },
+{ "GFER2_64", 0x40E00044,  0, 0x00000001, 'd', "GPIO 64 falling edge detect enabled" },
+{ "GFER2_65", 0x40E00044,  1, 0x00000001, 'd', "GPIO 65 falling edge detect enabled" },
+{ "GFER2_66", 0x40E00044,  2, 0x00000001, 'd', "GPIO 66 falling edge detect enabled" },
+{ "GFER2_67", 0x40E00044,  3, 0x00000001, 'd', "GPIO 67 falling edge detect enabled" },
+{ "GFER2_68", 0x40E00044,  4, 0x00000001, 'd', "GPIO 68 falling edge detect enabled" },
+{ "GFER2_69", 0x40E00044,  5, 0x00000001, 'd', "GPIO 69 falling edge detect enabled" },
+{ "GFER2_70", 0x40E00044,  6, 0x00000001, 'd', "GPIO 70 falling edge detect enabled" },
+{ "GFER2_71", 0x40E00044,  7, 0x00000001, 'd', "GPIO 71 falling edge detect enabled" },
+{ "GFER2_72", 0x40E00044,  8, 0x00000001, 'd', "GPIO 72 falling edge detect enabled" },
+{ "GFER2_73", 0x40E00044,  9, 0x00000001, 'd', "GPIO 73 falling edge detect enabled" },
+{ "GFER2_74", 0x40E00044, 10, 0x00000001, 'd', "GPIO 74 falling edge detect enabled" },
+{ "GFER2_75", 0x40E00044, 11, 0x00000001, 'd', "GPIO 75 falling edge detect enabled" },
+{ "GFER2_76", 0x40E00044, 12, 0x00000001, 'd', "GPIO 76 falling edge detect enabled" },
+{ "GFER2_77", 0x40E00044, 13, 0x00000001, 'd', "GPIO 77 falling edge detect enabled" },
+{ "GFER2_78", 0x40E00044, 14, 0x00000001, 'd', "GPIO 78 falling edge detect enabled" },
+{ "GFER2_79", 0x40E00044, 15, 0x00000001, 'd', "GPIO 79 falling edge detect enabled" },
+{ "GFER2_80", 0x40E00044, 16, 0x00000001, 'd', "GPIO 80 falling edge detect enabled" },
+{ "GFER2_81", 0x40E00044, 17, 0x00000001, 'd', "GPIO 81 falling edge detect enabled" },
+{ "GFER2_82", 0x40E00044, 18, 0x00000001, 'd', "GPIO 82 falling edge detect enabled" },
+{ "GFER2_83", 0x40E00044, 19, 0x00000001, 'd', "GPIO 83 falling edge detect enabled" },
+{ "GFER2_84", 0x40E00044, 20, 0x00000001, 'd', "GPIO 84 falling edge detect enabled" },
+
+{ "GEDR0",    0x40E00048,  0, 0xffffffff, 'x', "GPIO Edge Detect Register 0 (4-15)" },
+{ "GEDR0_0",  0x40E00048,  0, 0x00000001, 'd', "GPIO 0 edge detected" },
+{ "GEDR0_1",  0x40E00048,  1, 0x00000001, 'd', "GPIO 1 edge detected" },
+{ "GEDR0_2",  0x40E00048,  2, 0x00000001, 'd', "GPIO 2 edge detected" },
+{ "GEDR0_3",  0x40E00048,  3, 0x00000001, 'd', "GPIO 3 edge detected" },
+{ "GEDR0_4",  0x40E00048,  4, 0x00000001, 'd', "GPIO 4 edge detected" },
+{ "GEDR0_5",  0x40E00048,  5, 0x00000001, 'd', "GPIO 5 edge detected" },
+{ "GEDR0_6",  0x40E00048,  6, 0x00000001, 'd', "GPIO 6 edge detected" },
+{ "GEDR0_7",  0x40E00048,  7, 0x00000001, 'd', "GPIO 7 edge detected" },
+{ "GEDR0_8",  0x40E00048,  8, 0x00000001, 'd', "GPIO 8 edge detected" },
+{ "GEDR0_9",  0x40E00048,  9, 0x00000001, 'd', "GPIO 9 edge detected" },
+{ "GEDR0_10", 0x40E00048, 10, 0x00000001, 'd', "GPIO 10 edge detected" },
+{ "GEDR0_11", 0x40E00048, 11, 0x00000001, 'd', "GPIO 11 edge detected" },
+{ "GEDR0_12", 0x40E00048, 12, 0x00000001, 'd', "GPIO 12 edge detected" },
+{ "GEDR0_13", 0x40E00048, 13, 0x00000001, 'd', "GPIO 13 edge detected" },
+{ "GEDR0_14", 0x40E00048, 14, 0x00000001, 'd', "GPIO 14 edge detected" },
+{ "GEDR0_15", 0x40E00048, 15, 0x00000001, 'd', "GPIO 15 edge detected" },
+{ "GEDR0_16", 0x40E00048, 16, 0x00000001, 'd', "GPIO 16 edge detected" },
+{ "GEDR0_17", 0x40E00048, 17, 0x00000001, 'd', "GPIO 17 edge detected" },
+{ "GEDR0_18", 0x40E00048, 18, 0x00000001, 'd', "GPIO 18 edge detected" },
+{ "GEDR0_19", 0x40E00048, 19, 0x00000001, 'd', "GPIO 19 edge detected" },
+{ "GEDR0_20", 0x40E00048, 20, 0x00000001, 'd', "GPIO 20 edge detected" },
+{ "GEDR0_21", 0x40E00048, 21, 0x00000001, 'd', "GPIO 21 edge detected" },
+{ "GEDR0_22", 0x40E00048, 22, 0x00000001, 'd', "GPIO 22 edge detected" },
+{ "GEDR0_23", 0x40E00048, 23, 0x00000001, 'd', "GPIO 23 edge detected" },
+{ "GEDR0_24", 0x40E00048, 24, 0x00000001, 'd', "GPIO 24 edge detected" },
+{ "GEDR0_25", 0x40E00048, 25, 0x00000001, 'd', "GPIO 25 edge detected" },
+{ "GEDR0_26", 0x40E00048, 26, 0x00000001, 'd', "GPIO 26 edge detected" },
+{ "GEDR0_27", 0x40E00048, 27, 0x00000001, 'd', "GPIO 27 edge detected" },
+{ "GEDR0_28", 0x40E00048, 28, 0x00000001, 'd', "GPIO 28 edge detected" },
+{ "GEDR0_29", 0x40E00048, 29, 0x00000001, 'd', "GPIO 29 edge detected" },
+{ "GEDR0_30", 0x40E00048, 30, 0x00000001, 'd', "GPIO 30 edge detected" },
+{ "GEDR0_31", 0x40E00048, 31, 0x00000001, 'd', "GPIO 31 edge detected" },
+
+{ "GEDR1",    0x40E0004C,  0, 0xffffffff, 'x', "GPIO Edge Detect Register 1 (4-16)" },
+{ "GEDR1_32", 0x40E0004C,  0, 0x00000001, 'd', "GPIO 32 edge detected" },
+{ "GEDR1_33", 0x40E0004C,  1, 0x00000001, 'd', "GPIO 33 edge detected" },
+{ "GEDR1_34", 0x40E0004C,  2, 0x00000001, 'd', "GPIO 34 edge detected" },
+{ "GEDR1_35", 0x40E0004C,  3, 0x00000001, 'd', "GPIO 35 edge detected" },
+{ "GEDR1_36", 0x40E0004C,  4, 0x00000001, 'd', "GPIO 36 edge detected" },
+{ "GEDR1_37", 0x40E0004C,  5, 0x00000001, 'd', "GPIO 37 edge detected" },
+{ "GEDR1_38", 0x40E0004C,  6, 0x00000001, 'd', "GPIO 38 edge detected" },
+{ "GEDR1_39", 0x40E0004C,  7, 0x00000001, 'd', "GPIO 39 edge detected" },
+{ "GEDR1_40", 0x40E0004C,  8, 0x00000001, 'd', "GPIO 40 edge detected" },
+{ "GEDR1_41", 0x40E0004C,  9, 0x00000001, 'd', "GPIO 41 edge detected" },
+{ "GEDR1_42", 0x40E0004C, 10, 0x00000001, 'd', "GPIO 42 edge detected" },
+{ "GEDR1_43", 0x40E0004C, 11, 0x00000001, 'd', "GPIO 43 edge detected" },
+{ "GEDR1_44", 0x40E0004C, 12, 0x00000001, 'd', "GPIO 44 edge detected" },
+{ "GEDR1_45", 0x40E0004C, 13, 0x00000001, 'd', "GPIO 45 edge detected" },
+{ "GEDR1_46", 0x40E0004C, 14, 0x00000001, 'd', "GPIO 46 edge detected" },
+{ "GEDR1_47", 0x40E0004C, 15, 0x00000001, 'd', "GPIO 47 edge detected" },
+{ "GEDR1_48", 0x40E0004C, 16, 0x00000001, 'd', "GPIO 48 edge detected" },
+{ "GEDR1_49", 0x40E0004C, 17, 0x00000001, 'd', "GPIO 49 edge detected" },
+{ "GEDR1_50", 0x40E0004C, 18, 0x00000001, 'd', "GPIO 50 edge detected" },
+{ "GEDR1_51", 0x40E0004C, 19, 0x00000001, 'd', "GPIO 51 edge detected" },
+{ "GEDR1_52", 0x40E0004C, 20, 0x00000001, 'd', "GPIO 52 edge detected" },
+{ "GEDR1_53", 0x40E0004C, 21, 0x00000001, 'd', "GPIO 53 edge detected" },
+{ "GEDR1_54", 0x40E0004C, 22, 0x00000001, 'd', "GPIO 54 edge detected" },
+{ "GEDR1_55", 0x40E0004C, 23, 0x00000001, 'd', "GPIO 55 edge detected" },
+{ "GEDR1_56", 0x40E0004C, 24, 0x00000001, 'd', "GPIO 56 edge detected" },
+{ "GEDR1_57", 0x40E0004C, 25, 0x00000001, 'd', "GPIO 57 edge detected" },
+{ "GEDR1_58", 0x40E0004C, 26, 0x00000001, 'd', "GPIO 58 edge detected" },
+{ "GEDR1_59", 0x40E0004C, 27, 0x00000001, 'd', "GPIO 59 edge detected" },
+{ "GEDR1_60", 0x40E0004C, 28, 0x00000001, 'd', "GPIO 60 edge detected" },
+{ "GEDR1_61", 0x40E0004C, 29, 0x00000001, 'd', "GPIO 61 edge detected" },
+{ "GEDR1_62", 0x40E0004C, 30, 0x00000001, 'd', "GPIO 62 edge detected" },
+{ "GEDR1_63", 0x40E0004C, 31, 0x00000001, 'd', "GPIO 63 edge detected" },
+
+{ "GEDR2",    0x40E00050,  0, 0xffffffff, 'x', "GPIO Edge Detect Register 2 (4-16)" },
+{ "GEDR2_64", 0x40E00050,  0, 0x00000001, 'd', "GPIO 64 edge detected" },
+{ "GEDR2_65", 0x40E00050,  1, 0x00000001, 'd', "GPIO 65 edge detected" },
+{ "GEDR2_66", 0x40E00050,  2, 0x00000001, 'd', "GPIO 66 edge detected" },
+{ "GEDR2_67", 0x40E00050,  3, 0x00000001, 'd', "GPIO 67 edge detected" },
+{ "GEDR2_68", 0x40E00050,  4, 0x00000001, 'd', "GPIO 68 edge detected" },
+{ "GEDR2_69", 0x40E00050,  5, 0x00000001, 'd', "GPIO 69 edge detected" },
+{ "GEDR2_70", 0x40E00050,  6, 0x00000001, 'd', "GPIO 70 edge detected" },
+{ "GEDR2_71", 0x40E00050,  7, 0x00000001, 'd', "GPIO 71 edge detected" },
+{ "GEDR2_72", 0x40E00050,  8, 0x00000001, 'd', "GPIO 72 edge detected" },
+{ "GEDR2_73", 0x40E00050,  9, 0x00000001, 'd', "GPIO 73 edge detected" },
+{ "GEDR2_74", 0x40E00050, 10, 0x00000001, 'd', "GPIO 74 edge detected" },
+{ "GEDR2_75", 0x40E00050, 11, 0x00000001, 'd', "GPIO 75 edge detected" },
+{ "GEDR2_76", 0x40E00050, 12, 0x00000001, 'd', "GPIO 76 edge detected" },
+{ "GEDR2_77", 0x40E00050, 13, 0x00000001, 'd', "GPIO 77 edge detected" },
+{ "GEDR2_78", 0x40E00050, 14, 0x00000001, 'd', "GPIO 78 edge detected" },
+{ "GEDR2_79", 0x40E00050, 15, 0x00000001, 'd', "GPIO 79 edge detected" },
+{ "GEDR2_80", 0x40E00050, 16, 0x00000001, 'd', "GPIO 80 edge detected" },
+{ "GEDR2_81", 0x40E00050, 17, 0x00000001, 'd', "GPIO 81 edge detected" },
+{ "GEDR2_82", 0x40E00050, 18, 0x00000001, 'd', "GPIO 82 edge detected" },
+{ "GEDR2_83", 0x40E00050, 19, 0x00000001, 'd', "GPIO 83 edge detected" },
+{ "GEDR2_84", 0x40E00050, 20, 0x00000001, 'd', "GPIO 84 edge detected" },
+
+{ "GAFR0L",    0x40E00054,  0, 0xffffffff, 'x', "GPIO Alternate Function Register 0 Lower (4-17)" },
+{ "GAFR0L_0",  0x40E00054,  0, 0x00000003, 'x', "GPIO 0 alternate function select" },
+{ "GAFR0L_1",  0x40E00054,  2, 0x00000003, 'x', "GPIO 1 alternate function select" },
+{ "GAFR0L_2",  0x40E00054,  4, 0x00000003, 'x', "GPIO 2 alternate function select" },
+{ "GAFR0L_3",  0x40E00054,  6, 0x00000003, 'x', "GPIO 3 alternate function select" },
+{ "GAFR0L_4",  0x40E00054,  8, 0x00000003, 'x', "GPIO 4 alternate function select" },
+{ "GAFR0L_5",  0x40E00054, 10, 0x00000003, 'x', "GPIO 5 alternate function select" },
+{ "GAFR0L_6",  0x40E00054, 12, 0x00000003, 'x', "GPIO 6 alternate function select" },
+{ "GAFR0L_7",  0x40E00054, 14, 0x00000003, 'x', "GPIO 7 alternate function select" },
+{ "GAFR0L_8",  0x40E00054, 16, 0x00000003, 'x', "GPIO 8 alternate function select" },
+{ "GAFR0L_9",  0x40E00054, 18, 0x00000003, 'x', "GPIO 9 alternate function select" },
+{ "GAFR0L_10", 0x40E00054, 20, 0x00000003, 'x', "GPIO 10 alternate function select" },
+{ "GAFR0L_11", 0x40E00054, 22, 0x00000003, 'x', "GPIO 11 alternate function select" },
+{ "GAFR0L_12", 0x40E00054, 24, 0x00000003, 'x', "GPIO 12 alternate function select" },
+{ "GAFR0L_13", 0x40E00054, 26, 0x00000003, 'x', "GPIO 13 alternate function select" },
+{ "GAFR0L_14", 0x40E00054, 28, 0x00000003, 'x', "GPIO 14 alternate function select" },
+{ "GAFR0L_15", 0x40E00054, 30, 0x00000003, 'x', "GPIO 15 alternate function select" },
+
+{ "GAFR0U",    0x40E00058,  0, 0xffffffff, 'x', "GPIO Alternate Function Register 0 Upper (4-18)" },
+{ "GAFR0U_16", 0x40E00058,  0, 0x00000003, 'x', "GPIO 16 alternate function select" },
+{ "GAFR0U_17", 0x40E00058,  2, 0x00000003, 'x', "GPIO 17 alternate function select" },
+{ "GAFR0U_18", 0x40E00058,  4, 0x00000003, 'x', "GPIO 18 alternate function select" },
+{ "GAFR0U_19", 0x40E00058,  6, 0x00000003, 'x', "GPIO 19 alternate function select" },
+{ "GAFR0U_20", 0x40E00058,  8, 0x00000003, 'x', "GPIO 20 alternate function select" },
+{ "GAFR0U_21", 0x40E00058, 10, 0x00000003, 'x', "GPIO 21 alternate function select" },
+{ "GAFR0U_22", 0x40E00058, 12, 0x00000003, 'x', "GPIO 22 alternate function select" },
+{ "GAFR0U_23", 0x40E00058, 14, 0x00000003, 'x', "GPIO 23 alternate function select" },
+{ "GAFR0U_24", 0x40E00058, 16, 0x00000003, 'x', "GPIO 24 alternate function select" },
+{ "GAFR0U_25", 0x40E00058, 18, 0x00000003, 'x', "GPIO 25 alternate function select" },
+{ "GAFR0U_26", 0x40E00058, 20, 0x00000003, 'x', "GPIO 26 alternate function select" },
+{ "GAFR0U_27", 0x40E00058, 22, 0x00000003, 'x', "GPIO 27 alternate function select" },
+{ "GAFR0U_28", 0x40E00058, 24, 0x00000003, 'x', "GPIO 28 alternate function select" },
+{ "GAFR0U_29", 0x40E00058, 26, 0x00000003, 'x', "GPIO 29 alternate function select" },
+{ "GAFR0U_30", 0x40E00058, 28, 0x00000003, 'x', "GPIO 30 alternate function select" },
+{ "GAFR0U_31", 0x40E00058, 30, 0x00000003, 'x', "GPIO 31 alternate function select" },
+
+{ "GAFR1L",    0x40E0005C,  0, 0xffffffff, 'x', "GPIO Alternate Function Register 1 Lower (4-18)" },
+{ "GAFR1L_32", 0x40E0005C,  0, 0x00000003, 'x', "GPIO 32 alternate function select" },
+{ "GAFR1L_33", 0x40E0005C,  2, 0x00000003, 'x', "GPIO 33 alternate function select" },
+{ "GAFR1L_34", 0x40E0005C,  4, 0x00000003, 'x', "GPIO 34 alternate function select" },
+{ "GAFR1L_35", 0x40E0005C,  6, 0x00000003, 'x', "GPIO 35 alternate function select" },
+{ "GAFR1L_36", 0x40E0005C,  8, 0x00000003, 'x', "GPIO 36 alternate function select" },
+{ "GAFR1L_37", 0x40E0005C, 10, 0x00000003, 'x', "GPIO 37 alternate function select" },
+{ "GAFR1L_38", 0x40E0005C, 12, 0x00000003, 'x', "GPIO 38 alternate function select" },
+{ "GAFR1L_39", 0x40E0005C, 14, 0x00000003, 'x', "GPIO 39 alternate function select" },
+{ "GAFR1L_40", 0x40E0005C, 16, 0x00000003, 'x', "GPIO 40 alternate function select" },
+{ "GAFR1L_41", 0x40E0005C, 18, 0x00000003, 'x', "GPIO 41 alternate function select" },
+{ "GAFR1L_42", 0x40E0005C, 20, 0x00000003, 'x', "GPIO 42 alternate function select" },
+{ "GAFR1L_43", 0x40E0005C, 22, 0x00000003, 'x', "GPIO 43 alternate function select" },
+{ "GAFR1L_44", 0x40E0005C, 24, 0x00000003, 'x', "GPIO 44 alternate function select" },
+{ "GAFR1L_45", 0x40E0005C, 26, 0x00000003, 'x', "GPIO 45 alternate function select" },
+{ "GAFR1L_46", 0x40E0005C, 28, 0x00000003, 'x', "GPIO 46 alternate function select" },
+{ "GAFR1L_47", 0x40E0005C, 30, 0x00000003, 'x', "GPIO 47 alternate function select" },
+
+{ "GAFR1U",    0x40E00060,  0, 0xffffffff, 'x', "GPIO Alternate Function Register 1 Upper (4-19)" },
+{ "GAFR1U_48", 0x40E00060,  0, 0x00000003, 'x', "GPIO 48 alternate function select" },
+{ "GAFR1U_49", 0x40E00060,  2, 0x00000003, 'x', "GPIO 49 alternate function select" },
+{ "GAFR1U_50", 0x40E00060,  4, 0x00000003, 'x', "GPIO 50 alternate function select" },
+{ "GAFR1U_51", 0x40E00060,  6, 0x00000003, 'x', "GPIO 51 alternate function select" },
+{ "GAFR1U_52", 0x40E00060,  8, 0x00000003, 'x', "GPIO 52 alternate function select" },
+{ "GAFR1U_53", 0x40E00060, 10, 0x00000003, 'x', "GPIO 53 alternate function select" },
+{ "GAFR1U_54", 0x40E00060, 12, 0x00000003, 'x', "GPIO 54 alternate function select" },
+{ "GAFR1U_55", 0x40E00060, 14, 0x00000003, 'x', "GPIO 55 alternate function select" },
+{ "GAFR1U_56", 0x40E00060, 16, 0x00000003, 'x', "GPIO 56 alternate function select" },
+{ "GAFR1U_57", 0x40E00060, 18, 0x00000003, 'x', "GPIO 57 alternate function select" },
+{ "GAFR1U_58", 0x40E00060, 20, 0x00000003, 'x', "GPIO 58 alternate function select" },
+{ "GAFR1U_59", 0x40E00060, 22, 0x00000003, 'x', "GPIO 59 alternate function select" },
+{ "GAFR1U_60", 0x40E00060, 24, 0x00000003, 'x', "GPIO 60 alternate function select" },
+{ "GAFR1U_61", 0x40E00060, 26, 0x00000003, 'x', "GPIO 61 alternate function select" },
+{ "GAFR1U_62", 0x40E00060, 28, 0x00000003, 'x', "GPIO 62 alternate function select" },
+{ "GAFR1U_63", 0x40E00060, 30, 0x00000003, 'x', "GPIO 63 alternate function select" },
+
+{ "GAFR2L",    0x40E00064,  0, 0xffffffff, 'x', "GPIO Alternate Function Register 2 Lower (4-19)" },
+{ "GAFR2L_64", 0x40E00064,  0, 0x00000003, 'x', "GPIO 64 alternate function select" },
+{ "GAFR2L_65", 0x40E00064,  2, 0x00000003, 'x', "GPIO 65 alternate function select" },
+{ "GAFR2L_66", 0x40E00064,  4, 0x00000003, 'x', "GPIO 66 alternate function select" },
+{ "GAFR2L_67", 0x40E00064,  6, 0x00000003, 'x', "GPIO 67 alternate function select" },
+{ "GAFR2L_68", 0x40E00064,  8, 0x00000003, 'x', "GPIO 68 alternate function select" },
+{ "GAFR2L_69", 0x40E00064, 10, 0x00000003, 'x', "GPIO 69 alternate function select" },
+{ "GAFR2L_70", 0x40E00064, 12, 0x00000003, 'x', "GPIO 70 alternate function select" },
+{ "GAFR2L_71", 0x40E00064, 14, 0x00000003, 'x', "GPIO 71 alternate function select" },
+{ "GAFR2L_72", 0x40E00064, 16, 0x00000003, 'x', "GPIO 72 alternate function select" },
+{ "GAFR2L_73", 0x40E00064, 18, 0x00000003, 'x', "GPIO 73 alternate function select" },
+{ "GAFR2L_74", 0x40E00064, 20, 0x00000003, 'x', "GPIO 74 alternate function select" },
+{ "GAFR2L_75", 0x40E00064, 22, 0x00000003, 'x', "GPIO 75 alternate function select" },
+{ "GAFR2L_76", 0x40E00064, 24, 0x00000003, 'x', "GPIO 76 alternate function select" },
+{ "GAFR2L_77", 0x40E00064, 26, 0x00000003, 'x', "GPIO 77 alternate function select" },
+{ "GAFR2L_78", 0x40E00064, 28, 0x00000003, 'x', "GPIO 78 alternate function select" },
+{ "GAFR2L_79", 0x40E00064, 30, 0x00000003, 'x', "GPIO 79 alternate function select" },
+
+{ "GAFR2U",    0x40E00068,  0, 0xffffffff, 'x', "GPIO Alternate Function Register 2 Upper (4-19)" },
+{ "GAFR2U_80", 0x40E00068,  0, 0x00000003, 'x', "GPIO 80 alternate function select" },
+{ "GAFR2U_81", 0x40E00068,  2, 0x00000003, 'x', "GPIO 81 alternate function select" },
+{ "GAFR2U_82", 0x40E00068,  4, 0x00000003, 'x', "GPIO 82 alternate function select" },
+{ "GAFR2U_83", 0x40E00068,  6, 0x00000003, 'x', "GPIO 83 alternate function select" },
+{ "GAFR2U_84", 0x40E00068,  8, 0x00000003, 'x', "GPIO 84 alternate function select" },
+
+{ "ICMR",      0x40D00004,  0, 0xffffffff, 'x', "Interrupt Controller Mask Register (4-22)" },
+{ "ICMR_IM7",  0x40D00004,  7, 0x00000001, 'x', "Pending IRQ 7 (HWUART) unmasked?" },
+{ "ICMR_IM8",  0x40D00004,  8, 0x00000001, 'x', "Pending IRQ 8 (GPIO0) unmasked" },
+{ "ICMR_IM9",  0x40D00004,  9, 0x00000001, 'x', "Pending IRQ 9 (GPIO1) unmasked" },
+{ "ICMR_IM10", 0x40D00004, 10, 0x00000001, 'x', "Pending IRQ 10 (GPIO2_80) unmasked" },
+{ "ICMR_IM11", 0x40D00004, 11, 0x00000001, 'x', "Pending IRQ 11 (USB) unmasked" },
+{ "ICMR_IM12", 0x40D00004, 12, 0x00000001, 'x', "Pending IRQ 12 (PMU) unmasked" },
+{ "ICMR_IM13", 0x40D00004, 13, 0x00000001, 'x', "Pending IRQ 13 (I2S) unmasked" },
+{ "ICMR_IM14", 0x40D00004, 14, 0x00000001, 'x', "Pending IRQ 14 (AC97) unmasked" },
+{ "ICMR_IM17", 0x40D00004, 17, 0x00000001, 'x', "Pending IRQ 17 (LCD) unmasked" },
+{ "ICMR_IM18", 0x40D00004, 18, 0x00000001, 'x', "Pending IRQ 18 (I2C) unmasked" },
+{ "ICMR_IM19", 0x40D00004, 19, 0x00000001, 'x', "Pending IRQ 19 (ICP) unmasked" },
+{ "ICMR_IM20", 0x40D00004, 20, 0x00000001, 'x', "Pending IRQ 20 (STUART) unmasked" },
+{ "ICMR_IM21", 0x40D00004, 21, 0x00000001, 'x', "Pending IRQ 21 (BTUART) unmasked" },
+{ "ICMR_IM22", 0x40D00004, 22, 0x00000001, 'x', "Pending IRQ 22 (FFUART) unmasked" },
+{ "ICMR_IM23", 0x40D00004, 23, 0x00000001, 'x', "Pending IRQ 23 (MMC) unmasked" },
+{ "ICMR_IM24", 0x40D00004, 24, 0x00000001, 'x', "Pending IRQ 24 (SSP) unmasked" },
+{ "ICMR_IM25", 0x40D00004, 25, 0x00000001, 'x', "Pending IRQ 25 (DMA) unmasked" },
+{ "ICMR_IM26", 0x40D00004, 26, 0x00000001, 'x', "Pending IRQ 26 (OSMR0) unmasked" },
+{ "ICMR_IM27", 0x40D00004, 27, 0x00000001, 'x', "Pending IRQ 27 (OSMR1) unmasked" },
+{ "ICMR_IM28", 0x40D00004, 28, 0x00000001, 'x', "Pending IRQ 28 (OSMR2) unmasked" },
+{ "ICMR_IM29", 0x40D00004, 29, 0x00000001, 'x', "Pending IRQ 29 (OSMR3) unmasked" },
+{ "ICMR_IM30", 0x40D00004, 30, 0x00000001, 'x', "Pending IRQ 30 (RTCCLK) unmasked" },
+{ "ICMR_IM31", 0x40D00004, 31, 0x00000001, 'x', "Pending IRQ 31 (RTCALM) unmasked" },
+
+{ "ICLR",      0x40D00008,  0, 0xffffffff, 'x', "Interrupt Controller Level Register (4-23)" },
+{ "ICLR_IL7",  0x40D00008,  7, 0x00000001, 'x', "IRQ 8 (HWUART) generates FIQ?" },
+{ "ICLR_IL8",  0x40D00008,  8, 0x00000001, 'x', "IRQ 8 (GPIO0) generates FIQ" },
+{ "ICLR_IL9",  0x40D00008,  9, 0x00000001, 'x', "IRQ 9 (GPIO1) generates FIQ" },
+{ "ICLR_IL10", 0x40D00008, 10, 0x00000001, 'x', "IRQ 10 (GPIO2_80) generates FIQ" },
+{ "ICLR_IL11", 0x40D00008, 11, 0x00000001, 'x', "IRQ 11 (USB) generates FIQ" },
+{ "ICLR_IL12", 0x40D00008, 12, 0x00000001, 'x', "IRQ 12 (PMU) generates FIQ" },
+{ "ICLR_IL13", 0x40D00008, 13, 0x00000001, 'x', "IRQ 13 (I2S) generates FIQ" },
+{ "ICLR_IL14", 0x40D00008, 14, 0x00000001, 'x', "IRQ 14 (AC97) generates FIQ" },
+{ "ICLR_IL17", 0x40D00008, 17, 0x00000001, 'x', "IRQ 17 (LCD) generates FIQ" },
+{ "ICLR_IL18", 0x40D00008, 18, 0x00000001, 'x', "IRQ 18 (I2C) generates FIQ" },
+{ "ICLR_IL19", 0x40D00008, 19, 0x00000001, 'x', "IRQ 19 (ICP) generates FIQ" },
+{ "ICLR_IL20", 0x40D00008, 20, 0x00000001, 'x', "IRQ 10 (STUART) generates FIQ" },
+{ "ICLR_IL21", 0x40D00008, 21, 0x00000001, 'x', "IRQ 21 (BTUART) generates FIQ" },
+{ "ICLR_IL22", 0x40D00008, 22, 0x00000001, 'x', "IRQ 22 (FFUART) generates FIQ" },
+{ "ICLR_IL23", 0x40D00008, 23, 0x00000001, 'x', "IRQ 23 (MMC) generates FIQ" },
+{ "ICLR_IL24", 0x40D00008, 24, 0x00000001, 'x', "IRQ 24 (SSP) generates FIQ" },
+{ "ICLR_IL25", 0x40D00008, 25, 0x00000001, 'x', "IRQ 25 (DMA) generates FIQ" },
+{ "ICLR_IL26", 0x40D00008, 26, 0x00000001, 'x', "IRQ 26 (OSMR0) generates FIQ" },
+{ "ICLR_IL27", 0x40D00008, 27, 0x00000001, 'x', "IRQ 27 (OSMR1) generates FIQ" },
+{ "ICLR_IL28", 0x40D00008, 28, 0x00000001, 'x', "IRQ 28 (OSMR2) generates FIQ" },
+{ "ICLR_IL29", 0x40D00008, 29, 0x00000001, 'x', "IRQ 29 (OSMR3) generates FIQ" },
+{ "ICLR_IL30", 0x40D00008, 30, 0x00000001, 'x', "IRQ 30 (RTCCLK) generates FIQ" },
+{ "ICLR_IL31", 0x40D00008, 31, 0x00000001, 'x', "IRQ 31 (RTCALM) generates FIQ" },
+
+{ "ICCR",      0x40D00014,  0, 0xffffffff, 'x', "Interrupt Controller Control Register (4-23)" },
+{ "ICCR_DIM",  0x40D00014,  8, 0x00000001, 'x', "ONLY enabled and unmasked IRQ bring CPU from idle to run" },
+
+{ "ICIP",      0x40D00000,  0, 0xffffffff, 'x', "Interrupt Controller IRQ Pending Register (4-24)" },
+
+{ "ICFP",      0x40D0000C,  0, 0xffffffff, 'x', "Interrupt Controller FIQ Pending Register (4-24)" },
+
+{ "ICPR",      0x40D00010,  0, 0xffffffff, 'x', "Interrupt Controller Pending Register (4-25)" },
+{ "ICPR_IS7",  0x40D00010,  7, 0x00000001, 'x', "IRQ 7 (HWUART) pending" },
+{ "ICPR_IS8",  0x40D00010,  8, 0x00000001, 'x', "IRQ 8 (GPIO0) pending" },
+{ "ICPR_IS9",  0x40D00010,  9, 0x00000001, 'x', "IRQ 9 (GPIO1) pending" },
+{ "ICPR_IS10", 0x40D00010, 10, 0x00000001, 'x', "IRQ 10 (GPIO2_80) pending" },
+{ "ICPR_IS11", 0x40D00010, 11, 0x00000001, 'x', "IRQ 11 (USB) pending" },
+{ "ICPR_IS12", 0x40D00010, 12, 0x00000001, 'x', "IRQ 12 (PMU) pending" },
+{ "ICPR_IS13", 0x40D00010, 13, 0x00000001, 'x', "IRQ 13 (I2S) pending" },
+{ "ICPR_IS14", 0x40D00010, 14, 0x00000001, 'x', "IRQ 14 (AC97) pending" },
+{ "ICPR_IS17", 0x40D00010, 17, 0x00000001, 'x', "IRQ 17 (LCD) pending" },
+{ "ICPR_IS18", 0x40D00010, 18, 0x00000001, 'x', "IRQ 18 (I2C) pending" },
+{ "ICPR_IS19", 0x40D00010, 19, 0x00000001, 'x', "IRQ 19 (ICP) pending" },
+{ "ICPR_IS20", 0x40D00010, 20, 0x00000001, 'x', "IRQ 10 (STUART) pending" },
+{ "ICPR_IS21", 0x40D00010, 21, 0x00000001, 'x', "IRQ 21 (BTUART) pending" },
+{ "ICPR_IS22", 0x40D00010, 22, 0x00000001, 'x', "IRQ 22 (FFUART) pending" },
+{ "ICPR_IS23", 0x40D00010, 23, 0x00000001, 'x', "IRQ 23 (MMC) pending" },
+{ "ICPR_IS24", 0x40D00010, 24, 0x00000001, 'x', "IRQ 24 (SSP) pending" },
+{ "ICPR_IS25", 0x40D00010, 25, 0x00000001, 'x', "IRQ 25 (DMA) pending" },
+{ "ICPR_IS26", 0x40D00010, 26, 0x00000001, 'x', "IRQ 26 (OSMR0) pending" },
+{ "ICPR_IS27", 0x40D00010, 27, 0x00000001, 'x', "IRQ 27 (OSMR1) pending" },
+{ "ICPR_IS28", 0x40D00010, 28, 0x00000001, 'x', "IRQ 28 (OSMR2) pending" },
+{ "ICPR_IS29", 0x40D00010, 29, 0x00000001, 'x', "IRQ 29 (OSMR3) pending" },
+{ "ICPR_IS30", 0x40D00010, 30, 0x00000001, 'x', "IRQ 30 (RTCCLK) pending" },
+{ "ICPR_IS31", 0x40D00010, 31, 0x00000001, 'x', "IRQ 31 (RTCALM) pending" },
+
+{ "RTTR",        0x4090000C,  0, 0xffffffff, 'x', "RTC Trim Register (4-30)" },
+{ "RTTR_CK_DIV", 0x4090000C,  0, 0x0000ffff, 'x', "RTC Clock Divider Count" },
+{ "RTTR_DEL",    0x4090000C, 16, 0x000003ff, 'x', "RTC Trim delete Count" },
+{ "RTTR_LCK",    0x4090000C, 31, 0x00000001, 'x', "RTC Locking for RTTR" },
+
+{ "RTAR",        0x40900010,  0, 0xffffffff, 'x', "RTC Alarm Register (4-30)" },
+{ "RTAR_RTMV",   0x40900010,  0, 0xffffffff, 'x', "RTC Target Match Value" },
+
+{ "RCNR",        0x40900000,  0, 0xffffffff, 'x', "RTC Counter Register (4-31)" },
+{ "RCNR_RCV",    0x40900000,  0, 0xffffffff, 'x', "RTC Count Value" },
+
+{ "RTSR",        0x40900008,  0, 0xffffffff, 'x', "RTC Status Register (4-32)" },
+{ "RTSR_AL",     0x40900008,  0, 0x00000001, 'x', "RTC Alarm Interrupt detected" },
+{ "RTSR_HZ",     0x40900008,  1, 0x00000001, 'x', "RTC Hz Interrupt detected" },
+{ "RTSR_ALE",    0x40900008,  2, 0x00000001, 'x', "RTC Alarm Interrupt Enable" },
+{ "RTSR_HZE",    0x40900008,  3, 0x00000001, 'x', "RTC Hz Interrupt Enable" },
+
+{ "OSMR0",       0x40A00000,  0, 0xffffffff, 'x', "OS Timer Match Register 0 (4-36)" },
+{ "OSMR1",       0x40A00004,  0, 0xffffffff, 'x', "OS Timer Match Register 1 (4-36)" },
+{ "OSMR2",       0x40A00008,  0, 0xffffffff, 'x', "OS Timer Match Register 2 (4-36)" },
+{ "OSMR3",       0x40A0000C,  0, 0xffffffff, 'x', "OS Timer Match Register 3 (4-36)" },
+
+{ "OIER",        0x40A0001C,  0, 0xffffffff, 'x', "OS Timer Interrupt Enable Register (4-36)" },
+{ "OIER_E0",     0x40A0001C,  0, 0x00000001, 'x', "OS Interrupt for OSMR0 enabled" },
+{ "OIER_E1",     0x40A0001C,  1, 0x00000001, 'x', "OS Interrupt for OSMR1 enabled" },
+{ "OIER_E2",     0x40A0001C,  2, 0x00000001, 'x', "OS Interrupt for OSMR2 enabled" },
+{ "OIER_E3",     0x40A0001C,  3, 0x00000001, 'x', "OS Interrupt for OSMR3 enabled" },
+
+{ "OWER",        0x40A00018,  0, 0xffffffff, 'x', "OS Timer Watchdog Match Enable Register (4-37)" },
+{ "OWER_WME",    0x40A00018,  0, 0x00000001, 'x', "OSMR3 match causes a reset" },
+
+{ "OSCR",        0x40A00010,  0, 0xffffffff, 'x', "OS Timer Count Register (4-37)" },
+{ "OSCR_OSCV",   0x40A00010,  0, 0xffffffff, 'x', "OS Timer Count Value" },
+
+{ "OSSR",        0x40A00014,  0, 0xffffffff, 'x', "OS Timer Status Register (4-38)" },
+{ "OSSR_M0",     0x40A00014,  0, 0x00000001, 'x', "OS OSMR0 matched OSCR0" },
+{ "OSSR_M1",     0x40A00014,  1, 0x00000001, 'x', "OS OSMR1 matched OSCR1" },
+{ "OSSR_M2",     0x40A00014,  2, 0x00000001, 'x', "OS OSMR2 matched OSCR2" },
+{ "OSSR_M3",     0x40A00014,  3, 0x00000001, 'x', "OS OSMR3 matched OSCR3" },
+
+{ "PWMCTL0",             0x40B00000,  0, 0xffffffff, 'x', "PWM Control Register 0 (4-41)" },
+{ "PWMCTL0_PRESCALE",    0x40B00000,  0, 0x0000003f, 'd', "PWM0 Prescale Divisor" },
+{ "PWMCTL0_SD",          0x40B00000,  5, 0x00000001, 'x', "PWM0 abrupt shutdown" },
+
+{ "PWMDUTY0",            0x40B00004,  0, 0xffffffff, 'x', "PWM Duty Cycle Register 0 (4-42)" },
+{ "PWMDUTY0_DCYCLE",     0x40B00004,  0, 0x000003ff, 'd', "PWM0 Duty Cycle" },
+{ "PWMDUTY0_FDCYCLE",    0x40B00004, 10, 0x00000001, 'x', "PWM_OUT0 is set high and does not toggle" },
+
+{ "PWMPERVAL0",          0x40B00008,  0, 0xffffffff, 'x', "PWM Period Control Register 0 (4-43)" },
+{ "PWMPERVAL0_PV",       0x40B00008,  0, 0x000003ff, 'd', "PWM0 Period Cycle Length" },
+
+{ "PWMCTL1",             0x40C00000,  0, 0xffffffff, 'x', "PWM Control Register 1 (4-41)" },
+{ "PWMCTL1_PRESCALE",    0x40C00000,  0, 0x0000003f, 'd', "PWM1 Prescale Divisor" },
+{ "PWMCTL1_SD",          0x40C00000,  5, 0x00000001, 'x', "PWM1 abrupt shutdown" },
+
+{ "PWMDUTY1",            0x40C00004,  0, 0xffffffff, 'x', "PWM Duty Cycle Register 1 (4-42)" },
+{ "PWMDUTY1_DCYCLE",     0x40C00004,  0, 0x000003ff, 'd', "PWM1 Duty Cycle" },
+{ "PWMDUTY1_FDCYCLE",    0x40C00004, 10, 0x00000001, 'x', "PWM_OUT1 is set high and does not toggle" },
+
+{ "PWMPERVAL1",          0x40C00008,  0, 0xffffffff, 'x', "PWM Period Control Register 1 (4-43)" },
+{ "PWMPERVAL1_PV",       0x40C00008,  0, 0x000003ff, 'd', "PWM1 Period Cycle Length" },
+
+
+{ "LCCR0",     0x44000000,  0, 0xffffffff, 'x', "LCD Controller Control Register 0 (7-23)" },
+{ "LCCR0_ENB", 0x44000000,  0, 0x00000001, 'd', "LCD controller enable" },
+{ "LCCR0_CMS", 0x44000000,  1, 0x00000001, 'd', "LCD monochrome operation enable" },
+{ "LCCR0_SDS", 0x44000000,  2, 0x00000001, 'd', "LCD dual panel display enable" },
+{ "LCCR0_LDM", 0x44000000,  3, 0x00000001, 'd', "LCD disable done IRQ disable" },
+{ "LCCR0_SFM", 0x44000000,  4, 0x00000001, 'd', "LCD start of frame IRQ disable" },
+{ "LCCR0_IUM", 0x44000000,  5, 0x00000001, 'd', "LCD fifo underrun error IRQ disable" },
+{ "LCCR0_EFM", 0x44000000,  6, 0x00000001, 'd', "LCD end of frame IRQ disable" },
+{ "LCCR0_PAS", 0x44000000,  7, 0x00000001, 'd', "LCD active display enable" },
+{ "LCCR0_DPD", 0x44000000,  9, 0x00000001, 'd', "LCD send 8 pixel on L_DD[7:0] at each clock" },
+{ "LCCR0_DIS", 0x44000000, 10, 0x00000001, 'd', "LCD controller disable" },
+{ "LCCR0_QDM", 0x44000000, 11, 0x00000001, 'd', "LCD quick disable IRQ disable" },
+{ "LCCR0_PDD", 0x44000000, 12, 0x000000FF, 'd', "LCD palette DMA request delay" },
+{ "LCCR0_BM",  0x44000000, 20, 0x00000001, 'd', "LCD branch start IRQ disable" },
+{ "LCCR0_OUM", 0x44000000, 21, 0x00000001, 'd', "LCD fifo underrun IRQ disable" },
+
+{ "LCCR1",     0x44000004,  0, 0xffffffff, 'x', "LCD Controller Control Register 1 (7-26)" },
+{ "LCCR1_PPL", 0x44000004,  0, 0x000003ff, 'd', "LCD pixels per line (+1)" },
+{ "LCCR1_HSW", 0x44000004, 10, 0x0000003f, 'd', "LCD horizontal sync pulse width (+1)" },
+{ "LCCR1_ELW", 0x44000004, 16, 0x000000ff, 'd', "LCD end of line pixel clock wait count (+1)" },
+{ "LCCR1_BLW", 0x44000004, 24, 0x000000ff, 'd', "LCD beginning of line pixel clock wait count (+1)" },
+
+{ "LCCR2",     0x44000008,  0, 0xffffffff, 'x', "LCD Controller Control Register 2 (7-28)" },
+{ "LCCR2_LPP", 0x44000008,  0, 0x000003ff, 'd', "LCD lines per panel (+1)" },
+{ "LCCR2_VSW", 0x44000008, 10, 0x0000003f, 'd', "LCD vertical sync pulse width (+1)" },
+{ "LCCR2_EFW", 0x44000008, 16, 0x000000ff, 'd', "LCD end of frame line clock wait count (+1)" },
+{ "LCCR2_BFW", 0x44000008, 24, 0x000000ff, 'd', "LCD beginning of frame line clock wait count (+1)" },
+
+{ "LCCR3",     0x4400000C,  0, 0xffffffff, 'x', "LCD Controller Control Register 3 (7-31)" },
+{ "LCCR3_PCD", 0x4400000C,  0, 0x000000ff, 'd', "LCD pixel clock divisor (+1)" },
+{ "LCCR3_ACB", 0x4400000C,  8, 0x000000ff, 'd', "LCD AC bias pin frequency (+1)" },
+{ "LCCR3_API", 0x4400000C, 16, 0x0000000f, 'd', "LCD AC bias pin transitions per interrupt" },
+{ "LCCR3_VSP", 0x4400000C, 20, 0x00000001, 'd', "LCD L_FCLK vertical sync polarity active low" },
+{ "LCCR3_HSP", 0x4400000C, 21, 0x00000001, 'd', "LCD L_LCLK horizontal sync polarity active low" },
+{ "LCCR3_PCP", 0x4400000C, 22, 0x00000001, 'd', "LCD data sampled on falling edge of L_PCLK" },
+{ "LCCR3_OEP", 0x4400000C, 23, 0x00000001, 'd', "LCD L_BIAS output enable active low" },
+{ "LCCR3_BPP", 0x4400000C, 24, 0x00000007, '<', "LCD bits per pixel" },
+{ "LCCR3_DPC", 0x4400000C, 27, 0x00000007, 'd', "LCD double pixel clock rate at L_PCLK" },
+
+
+{ "FBR0",      0x44000020,  0, 0xffffffff, 'x', "FBR0" },
+{ "FBR1",      0x44000020,  0, 0xffffffff, 'x', "FBR1" },
+{ "LCSR",      0x44000038,  0, 0xffffffff, 'x', "LCD Controller Status Register (7-40)" },
+{ "LIIDR",     0x4400003C,  0, 0xffffffff, 'x', "LCD Controller Interrupt ID Register (7-41)" },
+// TODO
+
+{ "TRGBBR",    0x44000040,  0, 0xffffffff, 'x', "TMED RBG Seed Register (7-42)" },
+{ "TRGBBR_TRS",0x44000040,  0, 0x000000ff, 'x', "Red Seed" },
+{ "TRGBBR_TGS",0x44000040,  8, 0x000000ff, 'x', "Green Seed" },
+{ "TRGBBR_TBS",0x44000040, 16, 0x000000ff, 'x', "Blue Seed" },
+
+{ "TCR",       0x44000044,  0, 0xffffffff, 'x', "TMED Control Register (7-44)" },
+{ "TCR_COAM",  0x44000044,  0, 0x00000001, 'x', "Color Offset Adjuster Matrix" },
+{ "TCR_FNAM",  0x44000044,  1, 0x00000001, 'x', "Frame Number Adjuster Matrix" },
+{ "TCR_COAE",  0x44000044,  2, 0x00000001, 'x', "Color Offset Adjuster Enable" },
+{ "TCR_FNAME", 0x44000044,  3, 0x00000001, 'x', "Frame Number Adjuster Enable" },
+{ "TCR_TVBS",  0x44000044,  4, 0x0000000f, 'd', "Vertical Beat Suppression" },
+{ "TCR_THBS",  0x44000044,  8, 0x0000000f, 'd', "Horizontal Beat Suppression" },
+{ "TCR_TED",   0x44000044, 14, 0x00000001, 'x', "Energy Distribution Matrix Select" },
+
+{ "FDADR0",    0x44000200,  0, 0xffffffff, 'x', "FDADR0" },
+{ "FSADR0",    0x44000204,  0, 0xffffffff, 'x', "FSADR0" },
+{ "FIDR0",     0x44000208,  0, 0xffffffff, 'x', "FODR0" },
+{ "LDCMD0",    0x4400020C,  0, 0xffffffff, 'x', "LDCMD0" },
+{ "FDADR1",    0x44000210,  0, 0xffffffff, 'x', "FDADR1" },
+{ "FSADR1",    0x44000214,  0, 0xffffffff, 'x', "FSADR1" },
+{ "FIDR1",     0x44000218,  0, 0xffffffff, 'x', "FIDR1" },
+{ "LDCMD1",    0x4400021C,  0, 0xffffffff, 'x', "LDCMD1" },
+// TODO
+
+
+
+
+{ "MDCNFG",         0x48000000, 0, 0xffffffff, 'x', "SDRAM Configuration Register (6-9)" },
+{ "MDCNFG_DE0",     0x48000000, 0, 0x00000001, 'd', "SDRAM enable for partition 0" },
+{ "MDCNFG_DE1",     0x48000000, 1, 0x00000001, 'd', "SDRAM enable for partition 1" },
+{ "MDCNFG_DWID0",   0x48000000, 2, 0x00000001, 'd', "SDRAM data width (0=32, 1=16)" },
+{ "MDCNFG_DCAC0",   0x48000000, 3, 0x00000003, 'd', "Column address bits for partition pair 0/1" },
+{ "MDCNFG_DRAC0",   0x48000000, 5, 0x00000003, 'd', "Row address bits for partition pair 0/1" },
+{ "MDCNFG_DNB0",    0x48000000, 7, 0x00000001, 'd', "Banks in partition pair 0/1 (0=2, 1=4)" },
+{ "MDCNFG_DTC0",    0x48000000, 8, 0x00000003, 'd', "Timing Category for partition pair 0/1" },
+{ "MDCNFG_DADDR0",  0x48000000,10, 0x00000001, 'd', "Use alternate addressing for partition pair 0/1" },
+{ "MDCNFG_DLATCH0", 0x48000000,11, 0x00000001, 'd', "Return data latching scheme for partition pair 0/1" },
+{ "MDCNFG_DSA11110",0x48000000,12, 0x00000001, 'd', "use SA1111 address muxing for partition pair 0/1" },
+{ "MDCNFG_DE2",     0x48000000,16, 0x00000001, 'd', "SDRAM enable for partition 2" },
+{ "MDCNFG_DE3",     0x48000000,17, 0x00000001, 'd', "SDRAM enable for partition 3" },
+{ "MDCNFG_DWID2",   0x48000000,18, 0x00000001, 'd', "SDRAM data width (0=32, 1=16)" },
+{ "MDCNFG_DCAC2",   0x48000000,19, 0x00000003, 'd', "Column address bits for partition pair 2/3" },
+{ "MDCNFG_DRAC2",   0x48000000,21, 0x00000003, 'd', "Row address bits for partition pair 2/3" },
+{ "MDCNFG_DNB2",    0x48000000,23, 0x00000001, 'd', "Banks in partition pair 2/3 (0=2, 1=4)" },
+{ "MDCNFG_DTC2",    0x48000000,24, 0x00000003, 'd', "Timing Category for partition pair 2/3" },
+{ "MDCNFG_DADDR2",  0x48000000,26, 0x00000001, 'd', "Use alternate addressing for partition pair 2/3" },
+{ "MDCNFG_DLATCH2", 0x48000000,27, 0x00000001, 'd', "Return data latching scheme for partition pair 2/3" },
+{ "MDCNFG_DSA11112",0x48000000,28, 0x00000001, 'd', "use SA1111 address muxing for partition pair 2/3" },
+
+{ "MDREFR",         0x48000004, 0, 0xffffffff, 'x', "SDRAM Refresh Configuration Register (6-15)" },
+{ "MDREFR_DRI",     0x48000004, 0, 0x00000fff, 'x', "SDRAM Refresh intervall, all paritions" },
+{ "MDREFR_E0PIN",   0x48000004,12, 0x00000001, 'x', "SDRAM Clock Enable Pin 0 Level" },
+{ "MDREFR_K0RUN",   0x48000004,13, 0x00000001, 'x', "SDRAM Clock Run Pin 0" },
+{ "MDREFR_K0DB2",   0x48000004,14, 0x00000001, 'x', "SDRAM Clock Pin 0 Divide/2" },
+{ "MDREFR_E1PIN",   0x48000004,15, 0x00000001, 'x', "SDRAM Clock Enable Pin 1 Level" },
+{ "MDREFR_K1RUN",   0x48000004,16, 0x00000001, 'x', "SDRAM Clock Run Pin 1" },
+{ "MDREFR_K1DB2",   0x48000004,17, 0x00000001, 'x', "SDRAM Clock Pin 1 Divide/2" },
+{ "MDREFR_K2RUN",   0x48000004,18, 0x00000001, 'x', "SDRAM Clock Run Pin 2" },
+{ "MDREFR_K2DB2",   0x48000004,19, 0x00000001, 'x', "SDRAM Clock Pin 2 Divide/2" },
+{ "MDREFR_APD",     0x48000004,20, 0x00000001, 'x', "SDRAM Auto Power Down enable" },
+{ "MDREFR_SLFRSH",  0x48000004,22, 0x00000001, 'x', "SDRAM Self-Refresh" },
+{ "MDREFR_K0FREE",  0x48000004,23, 0x00000001, 'x', "SDRAM Free Running Control for SDCLK0" },
+{ "MDREFR_K1FREE",  0x48000004,24, 0x00000001, 'x', "SDRAM Free Running Control for SDCLK1" },
+{ "MDREFR_K2FREE",  0x48000004,25, 0x00000001, 'x', "SDRAM Free Running Control for SDCLK2" },
+
+{ "MSC0",           0x48000008, 0, 0xffffffff, 'x', "Asynchronous Static Memory Control Register 0 (6-45)" },
+{ "MSC0_RT0",       0x48000008, 0, 0x00000007, 'd', "nCS[0] ROM Type" },
+{ "MSC0_RBW0",      0x48000008, 3, 0x00000001, 'd', "nCS[0] ROM Bus Width (1=16bit)" },
+{ "MSC0_RDF0",      0x48000008, 4, 0x0000000f, 'd', "nCS[0] ROM Delay First Access" },
+{ "MSC0_RDN0",      0x48000008, 8, 0x0000000f, 'd', "nCS[0] ROM Delay Next Access" },
+{ "MSC0_RRR0",      0x48000008,12, 0x00000007, 'd', "nCS[0] ROM/SRAM Recovery Time" },
+{ "MSC0_RBUFF0",    0x48000008,15, 0x00000001, 'd', "nCS[0] Return Buffer Behavior (1=streaming)" },
+{ "MSC0_RT1",       0x48000008,16, 0x00000007, 'd', "nCS[1] ROM Type" },
+{ "MSC0_RBW1",      0x48000008,19, 0x00000001, 'd', "nCS[1] ROM Bus Width (1=16bit)" },
+{ "MSC0_RDF1",      0x48000008,20, 0x0000000f, 'd', "nCS[1] ROM Delay First Access" },
+{ "MSC0_RDN1",      0x48000008,24, 0x0000000f, 'd', "nCS[1] ROM Delay Next Access" },
+{ "MSC0_RRR1",      0x48000008,28, 0x00000007, 'd', "nCS[1] ROM/SRAM Recovery Time" },
+{ "MSC0_RBUFF1",    0x48000008,31, 0x00000001, 'd', "nCS[1] Return Buffer Behavior (1=streaming)" },
+
+{ "MSC1",           0x4800000C, 0, 0xffffffff, 'x', "Asynchronous Static Memory Control Register 1 (6-45)" },
+{ "MSC1_RT2",       0x4800000C, 0, 0x00000007, 'd', "nCS[2] ROM Type" },
+{ "MSC1_RBW2",      0x4800000C, 3, 0x00000001, 'd', "nCS[2] ROM Bus Width (1=16bit)" },
+{ "MSC1_RDF2",      0x4800000C, 4, 0x0000000f, 'd', "nCS[2] ROM Delay First Access" },
+{ "MSC1_RDN2",      0x4800000C, 8, 0x0000000f, 'd', "nCS[2] ROM Delay Next Access" },
+{ "MSC1_RRR2",      0x4800000C,12, 0x00000007, 'd', "nCS[2] ROM/SRAM Recovery Time" },
+{ "MSC1_RBUFF2",    0x4800000C,15, 0x00000001, 'd', "nCS[2] Return Buffer Behavior (1=streaming)" },
+{ "MSC1_RT3",       0x4800000C,16, 0x00000007, 'd', "nCS[3] ROM Type" },
+{ "MSC1_RBW3",      0x4800000C,19, 0x00000001, 'd', "nCS[3] ROM Bus Width (1=16bit)" },
+{ "MSC1_RDF3",      0x4800000C,20, 0x0000000f, 'd', "nCS[3] ROM Delay First Access" },
+{ "MSC1_RDN3",      0x4800000C,24, 0x0000000f, 'd', "nCS[3] ROM Delay Next Access" },
+{ "MSC1_RRR3",      0x4800000C,28, 0x00000007, 'd', "nCS[3] ROM/SRAM Recovery Time" },
+{ "MSC1_RBUFF3",    0x4800000C,31, 0x00000001, 'd', "nCS[3] Return Buffer Behavior (1=streaming)" },
+
+{ "MSC2",           0x48000010, 0, 0xffffffff, 'x', "Asynchronous Static Memory Control Register 2 (6-45)" },
+{ "MSC2_RT4",       0x48000010, 0, 0x00000007, 'd', "nCS[4] ROM Type" },
+{ "MSC2_RBW4",      0x48000010, 3, 0x00000001, 'd', "nCS[4] ROM Bus Width (1=16bit)" },
+{ "MSC2_RDF4",      0x48000010, 4, 0x0000000f, 'd', "nCS[4] ROM Delay First Access" },
+{ "MSC2_RDN4",      0x48000010, 8, 0x0000000f, 'd', "nCS[4] ROM Delay Next Access" },
+{ "MSC2_RRR4",      0x48000010,12, 0x00000007, 'd', "nCS[4] ROM/SRAM Recovery Time" },
+{ "MSC2_RBUFF4",    0x48000010,15, 0x00000001, 'd', "nCS[4] Return Buffer Behavior (1=streaming)" },
+{ "MSC2_RT5",       0x48000010,16, 0x00000007, 'd', "nCS[5] ROM Type" },
+{ "MSC2_RBW5",      0x48000010,19, 0x00000001, 'd', "nCS[5] ROM Bus Width (1=16bit)" },
+{ "MSC2_RDF5",      0x48000010,20, 0x0000000f, 'd', "nCS[5] ROM Delay First Access" },
+{ "MSC2_RDN5",      0x48000010,24, 0x0000000f, 'd', "nCS[5] ROM Delay Next Access" },
+{ "MSC2_RRR5",      0x48000010,28, 0x00000007, 'd', "nCS[5] ROM/SRAM Recovery Time" },
+{ "MSC2_RBUFF5",    0x48000010,31, 0x00000001, 'd', "nCS[5] Return Buffer Behavior (1=streaming)" },
+
+{ "MECR",           0x48000014, 0, 0xffffffff, 'x', "Expansion Memory Configuration Register (6-61)" },
+{ "MECR_NOS",       0x48000014, 0, 0x00000001, 'x', "Number of Sockets (1=2 Sockets)" },
+{ "MECR_CIT",       0x48000014, 1, 0x00000001, 'x', "Card inserted" },
+
+{ "SXCNFG",         0x4800001C, 0, 0xffffffff, 'x', "Synchronous Static Memory Configuration Register (6-33)" },
+{ "SXCNFG_SXEN0",   0x4800001C, 0, 0x00000001, 'x', "Partition 0 enabled as SX memory" },
+{ "SXCNFG_SXEN1",   0x4800001C, 1, 0x00000001, 'x', "Partition 1 enabled as SX memory" },
+{ "SXCNFG_SXCL0",   0x4800001C, 2, 0x00000007, 'x', "Partition 0/1 CAS Latency" },
+{ "SXCNFG_SXRL0",   0x4800001C, 5, 0x00000007, 'x', "Partition 0/1 RAS Latency" },
+{ "SXCNFG_SXRA0",   0x4800001C, 8, 0x00000003, 'x', "Partition 0/1 row address bit count" },
+{ "SXCNFG_SXCA0",   0x4800001C,10, 0x00000003, 'x', "Partition 0/1 column address bit count" },
+{ "SXCNFG_SXTP0",   0x4800001C,12, 0x00000003, 'x', "Partition 0/1 memory type" },
+{ "SXCNFG_SXLATCH0",0x4800001C,14, 0x00000001, 'x', "Partition 0/1 return data with return clock" },
+{ "SXCNFG_SXEN2",   0x4800001C,16, 0x00000001, 'x', "Partition 2 enabled as SX memory" },
+{ "SXCNFG_SXEN3",   0x4800001C,17, 0x00000001, 'x', "Partition 3 enabled as SX memory" },
+{ "SXCNFG_SXCL2",   0x4800001C,18, 0x00000007, 'x', "Partition 2/3 CAS Latency" },
+{ "SXCNFG_SXRL2",   0x4800001C,21, 0x00000007, 'x', "Partition 2/3 RAS Latency" },
+{ "SXCNFG_SXRA2",   0x4800001C,24, 0x00000003, 'x', "Partition 2/3 row address bit count" },
+{ "SXCNFG_SXCA2",   0x4800001C,26, 0x00000003, 'x', "Partition 2/3 column address bit count" },
+{ "SXCNFG_SXTP2",   0x4800001C,28, 0x00000003, 'x', "Partition 2/3 memory type" },
+{ "SXCNFG_SXLATCH2",0x4800001C,30, 0x00000001, 'x', "Partition 2/3 return data with return clock" },
+
+{ "SXMRS",          0x48000024, 0, 0xffffffff, 'x', "MRS value to be written to SX Memory (6-38)" },
+
+{ "MCMEM0",         0x48000028, 0, 0xffffffff, 'x', "MEM Control for PCMCIA Socket 0 (6-58)" },
+{ "MCMEM0_SET",     0x48000028, 0, 0x0000007f, 'd', "Address set time" },
+{ "MCMEM0_ASST",    0x48000028, 7, 0x0000001f, 'd', "Command assertion time" },
+{ "MCMEM0_HOLD",    0x48000028,14, 0x0000003f, 'd', "Address hold time" },
+
+{ "MCMEM1",         0x4800002C, 0, 0xffffffff, 'x', "MEM Control for PCMCIA Socket 1 (6-58)" },
+{ "MCMEM1_SET",     0x4800002C, 0, 0x0000007f, 'd', "Address set time" },
+{ "MCMEM1_ASST",    0x4800002C, 7, 0x0000001f, 'd', "Command assertion time" },
+{ "MCMEM1_HOLD",    0x4800002C,14, 0x0000003f, 'd', "Address hold time" },
+
+{ "MCATT0",         0x48000030, 0, 0xffffffff, 'x', "ATT Control for PCMCIA Socket 0 (6-59)" },
+{ "MCATT0_SET",     0x48000030, 0, 0x0000007f, 'd', "Address set time" },
+{ "MCATT0_ASST",    0x48000030, 7, 0x0000001f, 'd', "Command assertion time" },
+{ "MCATT0_HOLD",    0x48000030,14, 0x0000003f, 'd', "Address hold time" },
+
+{ "MCATT1",         0x48000034, 0, 0xffffffff, 'x', "ATT Control for PCMCIA Socket 1 (6-59)" },
+{ "MCATT1_SET",     0x48000034, 0, 0x0000007f, 'd', "Address set time" },
+{ "MCATT1_ASST",    0x48000034, 7, 0x0000001f, 'd', "Command assertion time" },
+{ "MCATT1_HOLD",    0x48000034,14, 0x0000003f, 'd', "Address hold time" },
+
+{ "MCIO0",          0x48000038, 0, 0xffffffff, 'x', "I/O Control for PCMCIA Socket 0 (6-59)" },
+{ "MCIO0_SET",      0x48000038, 0, 0x0000007f, 'd', "Address set time" },
+{ "MCIO0_ASST",     0x48000038, 7, 0x0000001f, 'd', "Command assertion time" },
+{ "MCIO0_HOLD",     0x48000038,14, 0x0000003f, 'd', "Address hold time" },
+
+{ "MCIO1",          0x4800003C, 0, 0xffffffff, 'x', "I/O Control for PCMCIA Socket 1 (6-59)" },
+{ "MCIO1_SET",      0x4800003C, 0, 0x0000007f, 'd', "Address set time" },
+{ "MCIO1_ASST",     0x4800003C, 7, 0x0000001f, 'd', "Command assertion time" },
+{ "MCIO1_HOLD",     0x4800003C,14, 0x0000003f, 'd', "Address hold time" },
+
+{ "MDMRS",          0x48000040, 0, 0xffffffff, 'x', "SDRAM Mode Register Set Configuration Register (6-12)" },
+{ "MDMRS_MDBL0",    0x48000040, 0, 0x00000007, 'x', "SDRAM Partition 0/1 burst length" },
+{ "MDMRS_MDADD0",   0x48000040, 3, 0x00000001, 'x', "SDRAM Partition 0/1 burst type" },
+{ "MDMRS_MDCL0",    0x48000040, 4, 0x00000007, 'x', "SDRAM Partition 0/1 CAS latency" },
+{ "MDMRS_MDMRS0",   0x48000040, 7, 0x000000ff, 'x', "MRS value to be written to SDRAM Partition 0/1" },
+{ "MDMRS_MDBL2",    0x48000040,16, 0x00000007, 'x', "SDRAM Partition 2/3 burst length" },
+{ "MDMRS_MDADD2",   0x48000040,19, 0x00000001, 'x', "SDRAM Partition 2/3 burst type" },
+{ "MDMRS_MDCL2",    0x48000040,20, 0x00000007, 'x', "SDRAM Partition 2/3 CAS latency" },
+{ "MDMRS_MDMRS2",   0x48000040,23, 0x000000ff, 'x', "MRS value to be written to SDRAM Partition 2/3" },
+
+{ "BOOTDEF",        0x48000044, 0, 0xffffffff, 'x', "Boot Time Defaults (6-73)" },
+{ "BOOTDEF_BOOTSEL",0x48000044, 0, 0x00000007, 'x', "Boot Configuration at BOOT_SEL pins" },
+{ "BOOTDEF_PKGTYPE",0x48000044, 3, 0x00000001, 'x', "Processor type, 1 for PXA250" },
+
+{ "MDMRSLP",        0x48000058, 0, 0xffffffff, 'x', "Low-Power SDRAM Mode Register Set Configuration Register (6-14)" },
+// TODO
+
+
+
+{ "MMC_STRPCL",			0x41100000, 0, 0xffffffff, 'x', "MMC Start/Stop Clock (15-23)" },
+
+{ "MMC_STAT",			0x41100004, 0, 0xffffffff, 'x', "MMC Status Register (15-24)" },
+{ "MMC_STAT_READ_TIME_OUT",	0x41100004, 0, 0x00000001, 'x', "Read Time Out" },
+{ "MMC_STAT_TIME_OUT_RESP",	0x41100004, 1, 0x00000001, 'x', "Time Out Response" },
+{ "MMC_STAT_CRC_WRITE_ERROR",	0x41100004, 2, 0x00000001, 'x', "CRC Write Error" },
+{ "MMC_STAT_CRC_READ_ERR",	0x41100004, 3, 0x00000001, 'x', "CRC Read Error" },
+{ "MMC_STAT_SPI_READ_ERR_TKN",	0x41100004, 4, 0x00000001, 'x', "SPI Read Error Token" },
+{ "MMC_STAT_RES_CRC_ERR",	0x41100004, 5, 0x00000001, 'x', "Response CRC Error" },
+{ "MMC_STAT_XMIT_FIFO_EMPTY",	0x41100004, 6, 0x00000001, 'x', "Transmit FIFO Empty" },
+{ "MMC_STAT_RECV_FIFO_EMPTY",	0x41100004, 7, 0x00000001, 'x', "Receive FIFO Empty" },
+{ "MMC_STAT_CLK_EN",		0x41100004, 8, 0x00000001, 'x', "Clock Enabled" },
+{ "MMC_STAT_DATA_TRAN_DONE",	0x41100004,11, 0x00000001, 'x', "Data Transmission Done" },
+{ "MMC_STAT_PRG_DONE",		0x41100004,12, 0x00000001, 'x', "Program Done" },
+{ "MMC_STAT_END_CMD_RES",	0x41100004,13, 0x00000001, 'x', "End Command Response" },
+
+{ "MMC_CLKRT",			0x41100008, 0, 0xffffffff, 'x', "MMC Clock Read Timeout Register (15-26)" },
+{ "MMC_CLK_RATE",		0x41100008, 0, 0x00000007, 'x', "Read Time Out bitmask" },
+
+{ "MMC_SPI",			0x4110000c, 0, 0xffffffff, 'x', "MMC SPI mode (15-27)" },
+{ "MMC_SPI_EN",			0x4110000c, 0, 0x00000001, 'x', "SPI mode enabled" },
+{ "MMC_SPI_CRC_ON",		0x4110000c, 1, 0x00000001, 'x', "CRC generation enabled" },
+{ "MMC_SPI_CS_EN",		0x4110000c, 2, 0x00000001, 'x', "SPI chip select enabled" },
+{ "MMC_SPI_CS_ADDRESS",		0x4110000c, 3, 0x00000001, 'x', "CS0 enabled" },
+
+{ "MMC_CMDAT",			0x41100010, 0, 0xffffffff, 'x', "MMC Command Data (15-28)" },
+{ "MMC_CMDAT_RF",		0x41100010, 0, 0x00000003, 'x', "response format" },
+{ "MMC_CMDAT_DATA_EN",		0x41100010, 2, 0x00000001, 'x', "current cmd includes data transfer" },
+{ "MMC_CMDAT_WRITE",		0x41100010, 3, 0x00000001, 'x', "data transfer is a write" },
+{ "MMC_CMDAT_STREAM",		0x41100010, 4, 0x00000001, 'x', "data transfer is in stream mode" },
+{ "MMC_CMDAT_BUSY",		0x41100010, 5, 0x00000001, 'x', "busy signal is expected after data transfer" },
+{ "MMC_CMDAT_INIT",		0x41100010, 6, 0x00000001, 'x', "precede cmd with 80 clocks" },
+{ "MMC_CMDAT_DMA_EN",		0x41100010, 7, 0x00000001, 'x', "enable DMA mode" },
+
+{ "MMC_RESTO",			0x41100014, 0, 0xffffffff, 'x', "MMC Response Time Out (15-29)" },
+{ "MMC_RESTO_TO",		0x41100014, 0, 0x0000007f, 'd', "clocks before a response time out" },
+
+{ "MMC_RDTO",			0x41100018, 0, 0xffffffff, 'x', "MMC Read Time Out (15-29)" },
+{ "MMC_RDTO_TO",		0x41100018, 0, 0x0000ffff, 'd', "time until read time out" },
+
+{ "MMC_BLKLEN",			0x4110001C, 0, 0xffffffff, 'x', "MMC Block Len Register (15-30)" },
+{ "MMC_BLKLEN_LEN",		0x4110001C, 0, 0x000003ff, 'd', "Number of bytes in the block" },
+
+{ "MMC_NOB",			0x41100020, 0, 0xffffffff, 'x', "MMC Block Number Register (15-30)" },
+{ "MMC_NOB_N",			0x41100020, 0, 0x0000ffff, 'd', "number of blocks" },
+
+{ "MMC_PRTBUF",			0x41100024, 0, 0xffffffff, 'x', "MMC Partial Buffer Register (15-31)" },
+{ "MMC_PRTBUF_FULL",		0x41100024, 0, 0x00000001, 'x', "Buffer is partially full" },
+
+{ "MMC_IMASK",			0x41100028, 0, 0xffffffff, 'x', "MMC Interrupt Mask Register (15-31)" },
+{ "MMC_IMASK_DATATRAN",		0x41100028, 0, 0x00000001, 'x', "Data Transfer Done masked" },
+{ "MMC_IMASK_PRGDONE",		0x41100028, 1, 0x00000001, 'x', "Programming Done masked" },
+{ "MMC_IMASK_ENDCMD",		0x41100028, 2, 0x00000001, 'x', "End Command Response masked" },
+{ "MMC_IMASK_STOPCMD",		0x41100028, 3, 0x00000001, 'x', "Ready for Stop Transaction Command masked" },
+{ "MMC_IMASK_CLOCKOFF",		0x41100028, 4, 0x00000001, 'x', "Clock Is Off masked" },
+{ "MMC_IMASK_RXFIFO",		0x41100028, 5, 0x00000001, 'x', "Receive FIFO Read Request masked" },
+{ "MMC_IMASK_TXFIFO",		0x41100028, 6, 0x00000001, 'x', "Transmit FIFO Write Request masked" },
+
+{ "MMC_IREG",			0x4110002c, 0, 0xffffffff, 'x', "MMC Interrupt Register (15-33)" },
+{ "MMC_IREG_DATATRAN",		0x4110002c, 0, 0x00000001, 'x', "Data Transfer Done or Read TimeOut occured" },
+{ "MMC_IREG_PRGDONE",		0x4110002c, 1, 0x00000001, 'x', "Card has finished programming" },
+{ "MMC_IREG_ENDCMD",		0x4110002c, 2, 0x00000001, 'x', "MMC has received response or Response TimeOut" },
+{ "MMC_IREG_STOPCMD",		0x4110002c, 3, 0x00000001, 'x', "MMC is ready for the Stop Transaction Command" },
+{ "MMC_IREG_CLOCKOFF",		0x4110002c, 4, 0x00000001, 'x', "MMC clock has been turned off" },
+{ "MMC_IREG_RXFIFO",		0x4110002c, 5, 0x00000001, 'x', "Request for data read from receive FIFO" },
+{ "MMC_IREG_TXFIFO",		0x4110002c, 6, 0x00000001, 'x', "Request to data write to transmit FIFO" },
+
+{ "MMC_CMD",			0x41100030, 0, 0xffffffff, 'x', "MMC Command Register (15-34)" },
+{ "MMC_CMD_INDEX",		0x41100030, 0, 0x0000003f, 'x', "command index" },
+
+{ "MMC_ARGH",			0x41100034, 0, 0xffffffff, 'x', "MMC Higher Argument Register (15-36)" },
+{ "MMC_ARGH_ARG",		0x41100034, 0, 0x0000ffff, 'x', "upper 16 bits of command argument" },
+
+{ "MMC_ARGL",			0x41100038, 0, 0xffffffff, 'x', "MMC Lower Argument Register (15-36)" },
+{ "MMC_ARGL_ARG",		0x41100038, 0, 0x0000ffff, 'x', "upper 16 bits of command argument" },
+
+
+#if defined(CONFIG_ARCH_PXA_IDP) || defined(CONFIG_ARCH_RAMSES)
+// CS5+0x03C00000  CPLD		0x14000000
+// CS1             Alt-Flash	0x04000000
+// CS0             Flash	0x00000000
+
+{ "CPLD_PWR",			0x17C00004, 0, 0x000000ff, 'x', "CPLD_PERIPH_PWR" },
+{ "CPLD_PWR_CORE",		0x17C00004, 0, 0x00000001, 'd', "Variable core enable - latch value in first" },
+#ifdef CONFIG_ARCH_PXA_IDP
+{ "CPLD_PWR_MQ",		0x17C00004, 2, 0x00000001, 'd', "MQ1132 power switch" },
+#else
+{ "CPLD_PWR_SL811HS",		0x17C00004, 2, 0x00000001, 'd', "SL811HS power switch" },
+#endif
+{ "CPLD_PWR_PER",		0x17C00004, 3, 0x00000001, 'd', "peripheral power enable" },
+{ "CPLD_PWR_RST",		0x17C00004, 4, 0x00000001, 'd', "peripheral reset" },
+
+{ "CPLD_LED",			0x17C00008, 0, 0x000000ff, 'x', "CPLD_LED_CONTROL" },
+{ "CPLD_LED_CIR",		0x17C00008, 0, 0x00000001, 'd', "CIR" },
+{ "CPLD_LED_HB",		0x17C00008, 5, 0x00000001, 'd', "red LED (0=on)" },
+{ "CPLD_LED_BUSY",		0x17C00008, 6, 0x00000001, 'd', "green LED (0=on)" },
+{ "CPLD_LED_FLASH",		0x17C00008, 7, 0x00000001, 'd', "red LED flash enable" },
+
+{ "CPLD_KBD_COL_HIGH",		0x17C0000C, 0, 0x000000ff, 'x', "CPLD" },
+
+{ "CPLD_KBD_COL_LOW",		0x17C00010, 0, 0x000000ff, 'x', "CPLD" },
+
+{ "CPLD_PCCARD_EN",		0x17C00014, 0, 0x000000ff, 'x', "CPLD PC-Card Enable" },
+{ "CPLD_PCC0_ENABLE",		0x17C00014, 0, 0x00000001, 'd', "PC-Card 0 enable" },
+{ "CPLD_PCC1_ENABLE",		0x17C00014, 1, 0x00000001, 'd', "PC-Card 1 enable" },
+{ "CPLD_PCC0_RESET",		0x17C00014, 6, 0x00000001, 'd', "PC-Card 0 reset" },
+{ "CPLD_PCC1_RESET",		0x17C00014, 7, 0x00000001, 'd', "PC-Card 1 reset" },
+
+/*
+{ "CPLD_GPIOH_DIR",		0x17C00018, 0, 0xffffffff, 'x', "CPLD" },
+{ "CPLD_GPIOH_VALUE",		0x17C0001C, 0, 0xffffffff, 'x', "CPLD" },
+{ "CPLD_GPIOL_DIR",		0x17C00020, 0, 0xffffffff, 'x', "CPLD" },
+{ "CPLD_GPIOL_VALUE",		0x17C00024, 0, 0xffffffff, 'x', "CPLD" },
+
+      WHEN "00110" =>
+        data(7) <= l3_data_out;         -- L3 IIS control bus - direction of data bit
+        data(6) <= '0';
+        data(5) <= '0';
+        data(4) <= '0';
+        data(3) <= '0';
+        data(2) <= '0';
+        data(1) <= gpslow_out(1);       -- direction of pld_gpio_09
+        data(0) <= gpslow_out(0);       -- direction of pld_gpio_08
+
+      WHEN "00111" =>                   -- gpio on async bus
+        data(7) <= l3_data_io;          -- L3 IIS control bus - always reads pin
+        data(6) <= l3_clk;              -- L3 IIS control bus - read back clock
+        data(5) <= l3_mode;             -- L3 IIS control bus - read back mode
+        data(4) <= '0';
+        data(3) <= '0';
+        data(2) <= '0';
+        data(1) <= gpslow_io(1);        -- gpio on async bus
+        data(0) <= gpslow_io(0);        -- gpio on async bus
+
+      WHEN "01000" =>
+        data <= gp_out;                 -- direction of pld_gpio_07 through 00
+
+      WHEN "01001" =>                   -- gpio on high speed bus
+        data <= gp_io;
+*/
+
+{ "CPLD_PCCARD_PWR",		0x17C00028, 0, 0x000000ff, 'x', "CPLD PC-Card Power" },
+{ "CPLD_PCC0_PWR0",		0x17C00028, 0, 0x00000001, 'd', "PC-Card 0 Pwr 0" },
+{ "CPLD_PCC0_PWR1",		0x17C00028, 1, 0x00000001, 'd', "PC-Card 0 Pwr 1" },
+{ "CPLD_PCC0_PWR2",		0x17C00028, 2, 0x00000001, 'd', "PC-Card 0 Pwr 2" },
+{ "CPLD_PCC0_PWR3",		0x17C00028, 3, 0x00000001, 'd', "PC-Card 0 Pwr 3" },
+{ "CPLD_PCC1_PWR0",		0x17C00028, 4, 0x00000001, 'd', "PC-Card 1 Pwr 0" },
+{ "CPLD_PCC1_PWR1",		0x17C00028, 5, 0x00000001, 'd', "PC-Card 1 Pwr 1" },
+{ "CPLD_PCC1_PWR2",		0x17C00028, 6, 0x00000001, 'd', "PC-Card 1 Pwr 2" },
+{ "CPLD_PCC1_PWR3",		0x17C00028, 7, 0x00000001, 'd', "PC-Card 1 Pwr 3" },
+
+{ "CPLD_MISC",			0x17C0002C, 0, 0x000000ff, 'x', "CPLD_MISC_CTRL" },
+{ "CPLD_MISC_SER1EN",		0x17C0002C, 0, 0x00000001, 'd', "RS-232 on FF UART enable" },
+{ "CPLD_MISC_SER2EN",		0x17C0002C, 1, 0x00000001, 'd', "RS-232 on BT UART enable" },
+{ "CPLD_MISC_SER3EN",		0x17C0002C, 2, 0x00000001, 'd', "RS-232 on ST UART enable" },
+{ "CPLD_MISC_IRDAFIR",		0x17C0002C, 3, 0x00000001, 'd', "IrDA FIR enable" },
+{ "CPLD_MISC_IRDAMD0",		0x17C0002C, 4, 0x00000001, 'd', "IrDA mode 0" },
+{ "CPLD_MISC_IRDAMD1",		0x17C0002C, 5, 0x00000001, 'd', "IrDA mode 1" },
+#ifdef CONFIG_ARCH_PXA_IDP
+{ "CPLD_MISC_I2SPWR",		0x17C0002C, 7, 0x00000001, 'd', "UDA1341 power switch" },
+#endif
+
+{ "CPLD_LCD",			0x17C00030, 0, 0x000000ff, 'x', "CPLD LCD Control", },
+#ifdef CONFIG_ARCH_PXA_IDP
+{ "CPLD_LCD_PWR",		0x17C00030, 0, 0x00000001, 'd', "LCD Power" },
+{ "CPLD_LCD_BACKLIGHT",		0x17C00030, 1, 0x00000001, 'd', "LCD Backlight" },
+{ "CPLD_LCD_VLCD",		0x17C00030, 2, 0x00000001, 'd', "LCD VLCD" },
+#else
+{ "CPLD_LCD_VCC",		0x17C00030, 0, 0x00000001, 'd', "LCD VCC" },
+{ "CPLD_LCD_DISPOFF",		0x17C00030, 2, 0x00000001, 'd', "LCD nDISPOFF" },
+#endif
+
+{ "CPLD_FLASH",			0x17C00034, 0, 0x000000ff, 'x', "CPLD Flash Control" },
+{ "CPLD_FLASH_WE",		0x17C00034, 0, 0x00000001, 'd', "CPLD StrataFlash Write Enable" },
+#ifdef CONFIG_ARCH_PXA_IDP
+{ "CPLD_FLASH_MWE",		0x17C00034, 1, 0x00000001, 'd', "CPLD MPlus Write Enable" },
+{ "CPLD_FLASH_MOE",		0x17C00034, 2, 0x00000001, 'd', "CPLD MPlus Output Enable" },
+
+{ "CPLD_CS",			0x17C00038, 0, 0x000000ff, 'x', "CPLD Chip Select Register" },
+{ "CPLD_CS_CS0EN",		0x17C00038, 0, 0x00000001, 'd', "CPLD Chip Select 0 Enable" },
+{ "CPLD_CS_CS1EN",		0x17C00038, 1, 0x00000001, 'd', "CPLD Chip Select 1 Enable" },
+{ "CPLD_CS_CS2EN",		0x17C00038, 2, 0x00000001, 'd', "CPLD Chip Select 2 Enable" },
+{ "CPLD_CS_CS3EN",		0x17C00038, 3, 0x00000001, 'd', "CPLD Chip Select 3 Enable" },
+{ "CPLD_CS_CS4EN",		0x17C00038, 4, 0x00000001, 'd', "CPLD Chip Select 4 Enable" },
+//{ "CPLD_CS_CS5EN",		0x17C00038, 4, 0x00000001, 'd', "CPLD Chip Select 5 Enable" },
+#endif
+
+{ "CPLD_KB_ROW",		0x17C00050, 0, 0x000000ff, 'x', "CPLD" },
+
+{ "CPLD_PCCARD0_STATUS",	0x17C00054, 0, 0x000000ff, 'x', "CPLD PC-Card 0 Status" },
+{ "CPLD_PCC0_VS1",              0x17C00054, 0, 0x00000001, 'd', "PC-Card 0 VS1" },
+{ "CPLD_PCC0_VS2",              0x17C00054, 1, 0x00000001, 'd', "PC-Card 0 VS2" },
+{ "CPLD_PCC0_BVD1",             0x17C00054, 2, 0x00000001, 'd', "PC-Card 0 BVD1" },
+{ "CPLD_PCC0_BVD2",             0x17C00054, 3, 0x00000001, 'd', "PC-Card 0 BVD2" },
+{ "CPLD_PCC0_INPACK",           0x17C00054, 4, 0x00000001, 'd', "PC-Card 0 INPACK" },
+{ "CPLD_PCC0_IRQ",              0x17C00054, 5, 0x00000001, 'd', "PC-Card 0 IRQ" },
+{ "CPLD_PCC0_STRESET",          0x17C00054, 6, 0x00000001, 'd', "PC-Card 0 RESET" },
+{ "CPLD_PCC0_WRPROT",           0x17C00054, 7, 0x00000001, 'd', "PC-Card 0 WRPROT" },
+
+{ "CPLD_PCCARD1_STATUS",	0x17C00058, 0, 0x000000ff, 'x', "CPLD PC-Card 1 Status" },
+{ "CPLD_PCC1_VS1",              0x17C00058, 0, 0x00000001, 'd', "PC-Card 1 VS1" },
+{ "CPLD_PCC1_VS2",              0x17C00058, 1, 0x00000001, 'd', "PC-Card 1 VS2" },
+{ "CPLD_PCC1_BVD1",             0x17C00058, 2, 0x00000001, 'd', "PC-Card 1 BVD1" },
+{ "CPLD_PCC1_BVD2",             0x17C00058, 3, 0x00000001, 'd', "PC-Card 1 BVD2" },
+{ "CPLD_PCC1_INPACK",           0x17C00058, 4, 0x00000001, 'd', "PC-Card 1 INPACK" },
+{ "CPLD_PCC1_IRQ",              0x17C00058, 5, 0x00000001, 'd', "PC-Card 1 IRQ" },
+{ "CPLD_PCC1_STRESET",          0x17C00058, 6, 0x00000001, 'd', "PC-Card 1 RESET" },
+{ "CPLD_PCC1_WRPROT",           0x17C00058, 7, 0x00000001, 'd', "PC-Card 1 WRPROT" },
+
+{ "CPLD_MISC_STATUS",		0x17C0005C, 0, 0x000000ff, 'x', "CPLD Misc Status" },
+{ "CPLD_MISC_USB_D_CON",        0x17C0005C, 0, 0x00000001, 'd', "Charge status" },
+{ "CPLD_MISC_WALL_IN",          0x17C0005C, 1, 0x00000001, 'd', "Charge status" },
+{ "CPLD_MISC_CHG_STS",          0x17C0005C, 2, 0x00000001, 'd', "Charge status" },
+{ "CPLD_MISC_MMC_WPROT",        0x17C0005C, 7, 0x00000001, 'd', "MMC write protect" },
+
+{ "CPLD_VER_YEAR",		0x17C00060, 0, 0x000000ff, 'x', "CPLD Year" },
+{ "CPLD_VER_MONTH",		0x17C00064, 0, 0x000000ff, 'x', "CPLD Month" },
+{ "CPLD_VER_DAY",		0x17C00068, 0, 0x000000ff, 'x', "CPLD Day" },
+{ "CPLD_VER_REV",		0x17C0006C, 0, 0x000000ff, 'x', "CPLD Revision" },
+
+{ "CPLD_VSTAT",			0x17C0007C, 0, 0x000000ff, 'x', "CPLD Voltage Status" },
+#ifdef CONFIG_ARCH_PXA_IDP
+{ "CPLD_BSTAT_V3GOOD",		0x17C0007C, 0, 0x00000001, 'x', "v3good" },
+#endif
+{ "CPLD_BSTAT_BWE",		0x17C0007C, 1, 0x00000001, 'x', "bwe" },
+
+#endif
+
+#if defined(CONFIG_ARCH_RAMSES)
+{ "UARTA_RHR",			0x0C002E00, 0, 0xffffffff, 'x', "UART A RHR/THR" },
+{ "UARTA_IER",			0x0C002E04, 0, 0xffffffff, 'x', "UART A IER" },
+{ "UARTA_FCR",			0x0C002E08, 0, 0xffffffff, 'x', "UART A FCR/IIR" },
+{ "UARTA_LCR",			0x0C002E0C, 0, 0xffffffff, 'x', "UART A LCR" },
+{ "UARTA_MCR",			0x0C002E10, 0, 0xffffffff, 'x', "UART A MCR" },
+{ "UARTA_LSR",			0x0C002E14, 0, 0xffffffff, 'x', "UART A LSR" },
+{ "UARTA_MSR",			0x0C002E18, 0, 0xffffffff, 'x', "UART A MSR" },
+{ "UARTA_SPR",			0x0C002E1C, 0, 0xffffffff, 'x', "UART A SPR" },
+
+{ "UARTB_RHR",			0x0C002D00, 0, 0xffffffff, 'x', "UART B RHR/THR" },
+{ "UARTB_IER",			0x0C002D04, 0, 0xffffffff, 'x', "UART B IER" },
+{ "UARTB_FCR",			0x0C002D08, 0, 0xffffffff, 'x', "UART B FCR/IIR" },
+{ "UARTB_LCR",			0x0C002D0C, 0, 0xffffffff, 'x', "UART B LCR" },
+{ "UARTB_MCR",			0x0C002D10, 0, 0xffffffff, 'x', "UART B MCR" },
+{ "UARTB_LSR",			0x0C002D14, 0, 0xffffffff, 'x', "UART B LSR" },
+{ "UARTB_MSR",			0x0C002D18, 0, 0xffffffff, 'x', "UART B MSR" },
+{ "UARTB_SPR",			0x0C002D1C, 0, 0xffffffff, 'x', "UART B SPR" },
+
+{ "UARTD_RHR",			0x0C002B00, 0, 0xffffffff, 'x', "UART C RHR/THR" },
+{ "UARTD_IER",			0x0C002B04, 0, 0xffffffff, 'x', "UART C IER" },
+{ "UARTD_FCR",			0x0C002B08, 0, 0xffffffff, 'x', "UART C FCR/IIR" },
+{ "UARTD_LCR",			0x0C002B0C, 0, 0xffffffff, 'x', "UART C LCR" },
+{ "UARTD_MCR",			0x0C002B10, 0, 0xffffffff, 'x', "UART C MCR" },
+{ "UARTD_LSR",			0x0C002B14, 0, 0xffffffff, 'x', "UART C LSR" },
+{ "UARTD_MSR",			0x0C002B18, 0, 0xffffffff, 'x', "UART C MSR" },
+{ "UARTD_SPR",			0x0C002B1C, 0, 0xffffffff, 'x', "UART C SPR" },
+
+{ "UARTD_RHR",			0x0C002700, 0, 0xffffffff, 'x', "UART D RHR/THR" },
+{ "UARTD_IER",			0x0C002704, 0, 0xffffffff, 'x', "UART D IER" },
+{ "UARTD_FCR",			0x0C002708, 0, 0xffffffff, 'x', "UART D FCR/IIR" },
+{ "UARTD_LCR",			0x0C00270C, 0, 0xffffffff, 'x', "UART D LCR" },
+{ "UARTD_MCR",			0x0C002710, 0, 0xffffffff, 'x', "UART D MCR" },
+{ "UARTD_LSR",			0x0C002714, 0, 0xffffffff, 'x', "UART D LSR" },
+{ "UARTD_MSR",			0x0C002718, 0, 0xffffffff, 'x', "UART D MSR" },
+{ "UARTD_SPR",			0x0C00271C, 0, 0xffffffff, 'x', "UART D SPR" },
+
+#endif
+
+};
+
+
+
+#define MAP_SIZE 4096
+#define MAP_MASK ( MAP_SIZE - 1 )
+
+static int getmem(u32 addr)
+{
+   void *map, *regaddr;
+   u32 val;
+
+   //printf("getmem(0x%08x)\n", addr);
+
+   if (fd == -1) {
+      fd = open("/dev/mem", O_RDWR | O_SYNC);
+      if (fd<0) {
+          perror("open(\"/dev/mem\")");
+          exit(1);
+      }
+   }
+
+   map = mmap(0,
+              MAP_SIZE,
+              PROT_READ | PROT_WRITE,
+              MAP_SHARED,
+              fd,
+              addr & ~MAP_MASK
+             );
+   if (map == (void*)-1 ) {
+       perror("mmap()");
+       exit(1);
+   }
+
+   regaddr = map + (addr & MAP_MASK);
+
+   val = *(u32*) regaddr;
+   munmap(0,MAP_SIZE);
+
+   return val;
+}
+
+static void putmem(u32 addr, u32 val)
+{
+   void *map, *regaddr;
+   static int fd = -1;
+
+   //printf("putmem(0x%08x, 0x%08x)\n", addr, val);
+
+   if (fd == -1) {
+      fd = open("/dev/mem", O_RDWR | O_SYNC);
+      if (fd<0) {
+          perror("open(\"/dev/mem\")");
+          exit(1);
+      }
+   }
+
+   map = mmap(0,
+              MAP_SIZE,
+              PROT_READ | PROT_WRITE,
+              MAP_SHARED,
+              fd,
+              addr & ~MAP_MASK
+             );
+   if (map == (void*)-1 ) {
+       perror("mmap()");
+       exit(1);
+   }
+
+   regaddr = map + (addr & MAP_MASK);
+
+   *(u32*) regaddr = val;
+   munmap(0,MAP_SIZE);
+}
+
+static u32 lastaddr = 0;
+static u32 newaddr = 1;
+static u32 data = 0;
+static u32 shiftdata;
+
+
+static void dumpentry(int i)
+{
+   int j;
+
+   if (regs[i].addr != lastaddr) newaddr = 1;
+   if (newaddr) {
+       newaddr = 0;
+       lastaddr = regs[i].addr;
+       data = getmem(lastaddr);
+       printf("\n%s\n", regs[i].desc);
+       printf("%-24s 0x%08x  ", regs[i].name, data);
+       shiftdata = data;
+       for (j=32; j>0; j--) {
+           printf("%c", shiftdata & 0x80000000 ? '1' : '0');
+           shiftdata = shiftdata << 1;
+           if (j==9 || j==17 || j==25) printf(" ");
+       }
+
+       printf("\n");
+   }
+
+   if (regs[i].shift != 0  ||  regs[i].mask != 0xffffffff) {
+       shiftdata = (data >> regs[i].shift) & regs[i].mask;
+       printf("%-25s  ", regs[i].name);
+       switch (regs[i].type) {
+          case 'x': printf("%8x", shiftdata);
+                    break;
+          case '<': printf("%8u", 1 << shiftdata);
+                    break;
+          default:
+                    printf("%8u", shiftdata);
+       }
+       printf("  %s\n", regs[i].desc);
+   }
+}
+
+
+static void dumpall(void)
+{
+   int i;
+   int n=sizeof(regs)/sizeof(struct reg_info);
+
+   for (i=0; i<n; i++) {
+      dumpentry(i);
+   }
+}
+
+
+static void dumpmatching(char *name)
+{
+   int i;
+   int n=sizeof(regs)/sizeof(struct reg_info);
+
+
+   for (i=0; i<n; i++) {
+      if (strstr(regs[i].name, name))
+         dumpentry(i);
+   }
+}
+
+
+static void setreg(char *name, u32 val)
+{
+   int i;
+   u32 mem;
+   int found=0;
+   int count=0;
+   int n=sizeof(regs)/sizeof(struct reg_info);
+
+
+   for (i=0; i<n; i++) {
+      if (strcmp(regs[i].name, name)==0) {
+         found = i;
+         //printf("Matched %s with %s, count=%d\n", regs[i].name, name, count);
+         count++;
+      }
+   }
+   if (count!=1) {
+      printf("No or more than one matching register found\n");
+      exit(1);
+   }
+
+   mem = getmem(regs[found].addr);
+   //printf("Old contents: 0x%08x\n", mem);
+   mem &= ~(regs[found].mask << regs[found].shift);
+   //printf("Unmasked contents: 0x%08x\n", mem);
+   val &= regs[found].mask;
+   //printf("mask: 0x%08x\n", regs[found].mask);
+   //printf("masked val: 0x%08x\n", val);
+   mem |= val << regs[found].shift;
+   //printf("Embedded value: 0x%08x\n", mem);
+   putmem(regs[found].addr, mem);
+}
+
+
+int main(int argc, char *argv[])
+{
+    char *p;
+    u32 val;
+
+    if (argc == 1) {
+       dumpall();
+       return 0;
+    }
+
+    // Uppercase first argument
+    if (argc >= 2) {
+        p = argv[1];
+        while (*p) {
+           *p = toupper(*p);
+           p++;
+        }
+    }
+
+    if (argc == 2) {
+       dumpmatching(argv[1]);
+       return 0;
+    }
+
+    if (argc == 3) {
+	sscanf(argv[2],"%i",&val);
+	setreg(argv[1], val);
+	return 0;
+    }
+
+    printf("Usage: %s                - to dump all known registers\n"
+           "       %s <name>         - to dump named register\n"
+           "       %s <name> <value> - to set named register\n",
+           argv[0], argv[0], argv[0]);
+    return 1;
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/serial.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/serial.patch
new file mode 100644
index 0000000..0685385
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/serial.patch
@@ -0,0 +1,14 @@
+Index: pxaregs-1.14/pxaregs.c
+===================================================================
+--- pxaregs-1.14.orig/pxaregs.c
++++ pxaregs-1.14/pxaregs.c
+@@ -78,6 +78,9 @@ static struct reg_info regs[] = {
+ { "ISAR",      0x403016A0,  0, 0xffffffff, 'x', "I2C Slave Address Register" },
+ { "ISAR_SA",   0x403016A0,  0, 0x0000007f, 'x', "I2C Slave Address" },
+ 
++{ "HW_MCR",    0x41600010,  0, 0xffffffff, 'x', "HWUART Modem Control Register" },
++{ "HW_MSR",    0x41600018,  0, 0xffffffff, 'x', "HWUART Modem Status Register" },
++
+ { "PMCR",      0x40F00000,  0, 0xffffffff, 'x', "Power Manager Control Register (3-23)" },
+ { "PMCR_IDAE", 0x40F00000,  0, 0x00000001, 'd', "PM imprecise data abort abort signal" },
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/usb.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/usb.patch
new file mode 100644
index 0000000..59f21fe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs-1.14/usb.patch
@@ -0,0 +1,17 @@
+Index: pxaregs-1.14/pxaregs.c
+===================================================================
+--- pxaregs-1.14.orig/pxaregs.c
++++ pxaregs-1.14/pxaregs.c
+@@ -78,6 +78,12 @@ static struct reg_info regs[] = {
+ { "ISAR",      0x403016A0,  0, 0xffffffff, 'x', "I2C Slave Address Register" },
+ { "ISAR_SA",   0x403016A0,  0, 0x0000007f, 'x', "I2C Slave Address" },
+ 
++{ "UP2OCR",    0x40600020,  0, 0xffffffff, 'x', "USB Port 2 Output Control Register" },
++{ "UP2OCR_SEOS", 0x40600020, 24, 7, 'x', "USB Port 2 Single-Ended Output Select" },
++{ "UP2OCR_HXOE", 0x40600020, 17, 1, 'x', "USB Port 2 Tranceiver OE" },
++{ "UP2OCR_HXS",  0x40600020, 16, 1, 'x', "USB Port 2 Tranceiver Output Select" },
++{ "UP2OCR_IDON", 0x40600020, 10, 1, 'x', "OTG ID Read Enable" },
++
+ { "HW_MCR",    0x41600010,  0, 0xffffffff, 'x', "HWUART Modem Control Register" },
+ { "HW_MSR",    0x41600018,  0, 0xffffffff, 'x', "HWUART Modem Status Register" },
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs_1.14.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs_1.14.bb
new file mode 100644
index 0000000..30c41ff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs_1.14.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Tool to display and modify PXA registers at runtime"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://pxaregs.c;endline=12;md5=668d061b7637acc68cb8071c9be372e6"
+AUTHOR = "Holger Schurig <hs4233@mail.mn-solutions.de>"
+HOMEPAGE = "http://www.mn-logistik.de/unsupported/pxa250/"
+
+SRC_URI = "file://pxaregs.c \
+           file://i2c.patch \
+           file://munmap.patch \
+           file://serial.patch \
+           file://usb.patch "
+
+S = "${WORKDIR}"
+
+do_compile() {
+    ${CC} pxaregs.c -o pxaregs ${CFLAGS} ${LDFLAGS}
+}
+
+do_install() {
+    install -d ${D}${sbindir}/
+    install -m 0755 pxaregs ${D}${sbindir}/
+}
+
+SRC_URI[md5sum] = "a43baa88842cd5926dbffb6fb87624f6"
+SRC_URI[sha256sum] = "f339b91cd8ab348052c36b36d20033e4bffc3666bc836ff72d5704f025e1c057"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/re2c/re2c/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/re2c/re2c/configure.patch
new file mode 100644
index 0000000..8ca0969
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/re2c/re2c/configure.patch
@@ -0,0 +1,18 @@
+Modernise configure to work with modern automake.
+
+RP 2014/7/14
+
+Upstream-Status: Pending
+
+Index: re2c-0.13.5/configure.in
+===================================================================
+--- re2c-0.13.5.orig/configure.in	2008-05-25 14:42:34.000000000 +0000
++++ re2c-0.13.5/configure.in	2014-07-17 14:10:40.595821292 +0000
+@@ -1,6 +1,6 @@
+ AC_PREREQ([2.57])
+ AC_INIT(re2c, 0.13.5, re2c-general@lists.sourceforge.net)
+-AM_INIT_AUTOMAKE(re2c, $PACKAGE_VERSION)
++AM_INIT_AUTOMAKE([foreign])
+ AC_CONFIG_SRCDIR(actions.cc)
+ AM_CONFIG_HEADER(config.h)
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/re2c/re2c_0.13.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/re2c/re2c_0.13.5.bb
new file mode 100644
index 0000000..dcac940
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/re2c/re2c_0.13.5.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Tool for writing very fast and very flexible scanners"
+HOMEPAGE = "http://re2c.sourceforge.net/"
+AUTHOR = "Marcus Börger <helly@users.sourceforge.net>"
+SECTION = "devel"
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://README;beginline=180;md5=822830a2204aef353f2c489f62e02089"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
+           file://configure.patch"
+SRC_URI[md5sum] = "4a97d8f77ed6d2c76c8bd840a43f5633"
+SRC_URI[sha256sum] = "f3a995139af475e80a30207d02728b1e0065b0caade7375e974cb1b14861668c"
+
+BBCLASSEXTEND = "native"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-configure-remove-check-for-x86.h-we-don-t-build-get-.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-configure-remove-check-for-x86.h-we-don-t-build-get-.patch
new file mode 100644
index 0000000..4408002
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-configure-remove-check-for-x86.h-we-don-t-build-get-.patch
@@ -0,0 +1,28 @@
+From eb7590cc2cdd5c35403af4567d8524e017010f1c Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Sat, 11 May 2013 07:58:17 +0200
+Subject: [PATCH] configure: remove check for x86.h, we don't build get-edid
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+Upstream-status: Inappropriate [OE specific]
+---
+ configure.in | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index ac85a21..f53e904 100644
+--- a/configure.in
++++ b/configure.in
+@@ -8,8 +8,6 @@ dnl Checks for programs
+ 
+ AC_PROG_CC
+ 
+-AC_CHECK_HEADER([libx86.h], [], [AC_MSG_ERROR([libx86.h not found])])
+-
+ dnl Simple, huh?
+ 
+ AC_OUTPUT([Makefile])
+-- 
+1.8.1.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_2.0.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_2.0.0.bb
new file mode 100644
index 0000000..b002906
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_2.0.0.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "read-edid elucidates various very useful informations from a conforming PnP monitor"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d0bf70fa1ef81fe4741ec0e6231dadfd"
+
+SRC_URI = "http://polypux.org/projects/read-edid/read-edid-${PV}.tar.gz \
+           file://0001-configure-remove-check-for-x86.h-we-don-t-build-get-.patch"
+
+SRC_URI[md5sum] = "586e7fa1167773b27f4e505edc93274b"
+SRC_URI[sha256sum] = "246ec14ec509e09ac26fe6862b120481b2cc881e2f142ba40886d6eec15e77e8"
+
+inherit autotools
+
+do_compile() {
+    oe_runmake parse-edid
+}
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 parse-edid ${D}${bindir}
+}
+
+PACKAGES =+ "parse-edid"
+FILES_parse-edid = "${bindir}/parse-edid"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot/configure-fix-cmd_rsync.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot/configure-fix-cmd_rsync.patch
new file mode 100644
index 0000000..6466df4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot/configure-fix-cmd_rsync.patch
@@ -0,0 +1,44 @@
+From 26ad431e19788898fb4ed19ff91392e8b20f1bab Mon Sep 17 00:00:00 2001
+From: Wenzong Fan <wenzong.fan@windriver.com>
+Date: Thu, 16 Oct 2014 04:06:55 -0400
+Subject: [PATCH] fix cmd_rsync
+
+Don't break configure if rsync is not installed on host.
+
+rsync is a runtime dependency and this change is only used for
+generating rsnapshot.conf.default. It allows cmd_rsync to use
+default path if options --without-rsync is specfied.
+
+Upstream-Status: Pending
+
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+---
+ configure.ac |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index bc9df9e..2a33d29 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -55,7 +55,7 @@ AC_ARG_WITH(rsync,
+ 				AC_MSG_ERROR(rsync not found)
+ 			fi
+ 		else
+-			AC_MSG_ERROR(rsync is required)
++			RSYNC=no
+ 		fi
+ 	]
+ )
+@@ -67,7 +67,8 @@ if test "$RSYNC" = ""; then
+ fi
+ dnl bail out if we can't find it
+ if test "$RSYNC" = "no"; then
+-	AC_MSG_ERROR(rsync is required)
++	RSYNC=${bindir}/rsync
++	AC_SUBST(CMD_RSYNC, "cmd_rsync  $RSYNC")
+ fi
+ 
+ 
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb
new file mode 100644
index 0000000..d680511
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb
@@ -0,0 +1,43 @@
+SUMMARY = "A filesystem snapshot utility based on rsync"
+HOMEPAGE = "http://www.rsnapshot.org"
+BUGTRACKER = "https://sourceforge.net/projects/rsnapshot/"
+SECTION = "console/network"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
+
+RDEPENDS_${PN} = "rsync \
+                  perl \
+                  perl-module-dirhandle \
+                  perl-module-cwd \
+                  perl-module-getopt-std \
+                  perl-module-file-path \
+                  perl-module-file-stat \
+                  perl-module-posix \
+                  perl-module-fcntl \
+                  perl-module-io-file \
+                  perl-module-constant \
+                  perl-module-overloading \
+                 "
+
+SRCREV = "1047cbb57937c29233388e2fcd847fecd3babe74"
+PV = "1.3.1+git${SRCPV}"
+
+SRC_URI = "git://github.com/DrHyde/${BPN};branch=master;protocol=git \
+           file://configure-fix-cmd_rsync.patch \
+          "
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+# Fix rsnapshot.conf.default:
+# don't inject the host path into target configs.
+EXTRA_OECONF += "--without-cp \
+                 --without-rm \
+                 --without-du \
+                 --without-ssh \
+                 --without-logger \
+                 --without-rsync \
+                 ac_cv_path_PERL=${bindir}/perl \
+                "
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c24xx-gpio_svn.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c24xx-gpio_svn.bb
new file mode 100644
index 0000000..082dc00
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c24xx-gpio_svn.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A user-space tool to show and modify the state of GPIOs on the S3c24xx platform"
+SECTION = "console/utils"
+AUTHOR = "Werner Almesberger <werner@openmoko.org>"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://gpio.c;endline=12;md5=cfb91c686857b2e60852b4925d90a3e1"
+SRCREV = "4949"
+PV = "1.0+svnr${SRCPV}"
+PR = "r2"
+
+SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gpio;protocol=http"
+S = "${WORKDIR}/gpio"
+
+CLEANBROKEN = "1"
+
+do_compile() {
+    ${CC} ${CFLAGS} ${LDFLAGS} -static -o ${PN} gpio.c
+}
+
+do_install() {
+    install -d ${D}${sbindir}
+    install -m 0755 ${PN} ${D}${sbindir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c64xx-gpio_svn.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c64xx-gpio_svn.bb
new file mode 100644
index 0000000..bed0555
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c64xx-gpio_svn.bb
@@ -0,0 +1,21 @@
+SUMMARY = "A user-space tool to show and modify the state of GPIOs on the S3c64xx platform"
+SECTION = "console/utils"
+AUTHOR = "Werner Almesberger <werner@openmoko.org>"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://gpio-s3c6410.c;endline=12;md5=060cda1be945ad9194593f11d56d55c7"
+SRCREV = "4949"
+PV = "1.0+svnr${SRCPV}"
+
+SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gpio;protocol=http"
+S = "${WORKDIR}/gpio"
+
+CLEANBROKEN = "1"
+
+do_compile() {
+    ${CC} ${CFLAGS} ${LDFLAGS} -static -o ${PN} gpio-s3c6410.c
+}
+
+do_install() {
+    install -d ${D}${sbindir}
+    install -m 0755 ${PN} ${D}${sbindir}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb
new file mode 100644
index 0000000..2d5935d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb
@@ -0,0 +1,32 @@
+SUMMARY = "JTAG utility to interface w/ a S3C2410 device"
+SECTION = "devel"
+AUTHOR = "Harald Welte <laforge@openmoko.org>"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://parport.c;endline=19;md5=b5681091b0fd8c5f7068835c441bf0c8"
+SRCREV = "4268"
+PV = "0.1+svnr${SRCPV}"
+PR = "r1"
+
+SRC_URI = "svn://svn.openmoko.org/trunk/src/host/;module=sjf2410-linux;protocol=http"
+S = "${WORKDIR}/sjf2410-linux"
+
+inherit native deploy
+do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
+
+CFLAGS += "-DLINUX_PPDEV"
+
+do_compile() {
+    oe_runmake
+}
+
+do_install() {
+    install -d ${D}/${bindir}
+    install -m 0755 sjf2410 ${D}/${bindir}
+}
+
+do_deploy() {
+    install -d ${DEPLOY_DIR_TOOLS}
+    install -m 0755 sjf2410 ${DEPLOY_DIR_TOOLS}/sjf2410-${PV}
+}
+
+addtask deploy before do_build after do_install
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/sdparm/files/make-sysroot-work.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/sdparm/files/make-sysroot-work.patch
new file mode 100644
index 0000000..5405ed8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/sdparm/files/make-sysroot-work.patch
@@ -0,0 +1,27 @@
+[PATCH] make sysroot work
+
+Upstream-Status: Pending
+
+Add = before the included dir to make sysroot work
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ src/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index c83788c..9f62115 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -32,7 +32,7 @@ sglib_SOURCES =		../lib/sg_lib.c \
+ 			../lib/sg_pt_common.c
+ 
+ if HAVE_SGUTILS
+-INCLUDES = -I/usr/include/scsi
++INCLUDES = -I=@includedir@/scsi
+ sdparm_LDADD = @GETOPT_O_FILES@ @os_libs@ @SGUTILS_LIBS@
+ sdparm_DEPENDENCIES = @GETOPT_O_FILES@
+ else
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.09.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.09.bb
new file mode 100644
index 0000000..ca11ca4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.09.bb
@@ -0,0 +1,23 @@
+SUMMARY = "fetch and change SCSI mode pages"
+DESCRIPTION = "The sdparm utility accesses and optionally modifies \
+SCSI devices' mode page and inquiry data."
+HOMEPAGE = "http://sg.danny.cz/sg/sdparm.html"
+SECTION = "console/utils"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ecab6c36b7ba82c675581dd0afde36f7 \
+                    file://lib/BSD_LICENSE;md5=1d52f4a66f1e0ed96776bf354ab7a2ed"
+DEPENDS="sg3-utils"
+SRC_URI = "http://sg.danny.cz/sg/p/${BPN}-${PV}.tgz \
+           file://make-sysroot-work.patch \
+           "
+
+PACKAGES =+ "${PN}-scripts"
+RDEPENDS_${PN}-scripts += "bash ${PN}"
+
+SRC_URI[md5sum] = "e51b1fd41c3e4c9d1274a2e4f046eebf"
+SRC_URI[sha256sum] = "7294f44173ac0946f1de8af02b1bdb0bd648079245396589397a2b0d3abc42d3"
+
+inherit autotools
+
+# Put the bash scripts to ${PN}-scripts
+FILES_${PN}-scripts = "${bindir}/sas_disk_blink ${bindir}/scsi_ch_swp"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/serial-utils/pty-forward-native.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/serial-utils/pty-forward-native.bb
new file mode 100644
index 0000000..7f59b3e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/serial-utils/pty-forward-native.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Receive a forwarded serial from serial-forward and provide a PTY"
+AUTHOR = "Holger 'Zecke' Freyther"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07"
+SECTION = "console/network"
+SRCREV = "00dbec2636ae0385ad028587e20e446272ff97ec"
+PV = "1.1+gitr${SRCPV}"
+
+SRC_URI = "git://github.com/freesmartphone/cornucopia.git;protocol=https"
+S = "${WORKDIR}/git/tools/serial_forward"
+
+inherit autotools native
+
+do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
+do_deploy() {
+    install -d ${DEPLOY_DIR_IMAGE}
+    install -m 0755 ${B}/src/pty_forward ${DEPLOY_DIR_IMAGE}/pty-forward
+}
+
+addtask deploy before do_package after do_install
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/serial-utils/serial-forward_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/serial-utils/serial-forward_git.bb
new file mode 100644
index 0000000..6494de9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/serial-utils/serial-forward_git.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Forward a serial using TCP/IP"
+AUTHOR = "Holger 'Zecke' Freyther'"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07"
+SECTION = "console/devel"
+SRCREV = "00dbec2636ae0385ad028587e20e446272ff97ec"
+PV = "1.1+gitr${SRCPV}"
+
+SRC_URI = "git://github.com/freesmartphone/cornucopia.git"
+S = "${WORKDIR}/git/tools/serial_forward"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.41.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.41.bb
new file mode 100644
index 0000000..61250fa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.41.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Utilities for working with generic SCSI devices"
+
+DESCRIPTION = "This package contains low level utilities for devices that use the SCSI command set"
+
+HOMEPAGE = "http://sg.danny.cz/sg/sg3_utils.html"
+SECTION = "console/admin"
+
+LICENSE = "GPLv2+ & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f90da7fc52172599dbf082d7620f18ca"
+
+SRC_URI = "http://sg.danny.cz/sg/p/sg3_utils-${PV}.tgz"
+
+SRC_URI[md5sum] = "86ebe3881535ee5c48f81be5be44b362"
+SRC_URI[sha256sum] = "c4e2893c36df1ee5b07840ab7c22129544f5dc8a55f7cc8815c9cd8e44ec31c0"
+
+inherit autotools-brokensep
+
+S = "${WORKDIR}/sg3_utils-${PV}"
+
+RDEPENDS_${PN} += "bash"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils-4.14/fix-for-cross-compiling.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils-4.14/fix-for-cross-compiling.patch
new file mode 100644
index 0000000..86a7da6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils-4.14/fix-for-cross-compiling.patch
@@ -0,0 +1,29 @@
+From 990234af84a5399017d1c4fe03c5c756a8e51e23 Mon Sep 17 00:00:00 2001
+From: Hongjun Yang <Hongjun.Yang@windriver.com>
+Date: Tue, 20 Aug 2013 09:41:43 +0800
+Subject: [PATCH] fix cross compiling issue
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongjun.Yang <hongjun.yang@windriver.com>
+
+---
+ configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure b/configure
+index 6ee98e0..8067f54 100755
+--- a/configure
++++ b/configure
+@@ -26965,7 +26965,7 @@ fi
+ if test "$cross_compiling" = yes; then :
+   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+-as_fn_error $? "cannot run test program while cross compiling
++$as_echo "cannot run test program while cross compiling
+ See \`config.log' for more details" "$LINENO" 5; }
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-- 
+1.8.1.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.14.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.14.bb
new file mode 100644
index 0000000..49981e7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.14.bb
@@ -0,0 +1,18 @@
+SUMMARY = "This is the set of GNU shar utilities."
+HOMEPAGE = "http://www.gnu.org/software/sharutils/"
+SECTION = "console/utils"
+LICENSE="GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+inherit gettext autotools-brokensep
+
+SRC_URI = "ftp://ftp.gnu.org/gnu/sharutils/sharutils-4.14.tar.gz \
+	   file://fix-for-cross-compiling.patch \
+	  "
+
+SRC_URI[md5sum] = "5686c11131b4c4c0841f8f3ef34d136a"
+SRC_URI[sha256sum] = "90f5107c167cfd1b299bb211828d2586471087863dbed698f53109cd5f717208"
+
+do_configure () {
+	oe_runconf
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/smem/smem_1.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/smem/smem_1.4.bb
new file mode 100644
index 0000000..519020f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/smem/smem_1.4.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Report application memory usage in a meaningful way"
+DESCRIPTION = "smem is a tool that can give numerous reports on memory usage on Linux \
+systems. Unlike existing tools, smem can report proportional set size (PSS), \
+which is a more meaningful representation of the amount of memory used by \
+libraries and applications in a virtual memory system."
+HOMEPAGE = "http://www.selenic.com/smem/"
+SECTION = "Applications/System"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "http://www.selenic.com/${BPN}/download/${BP}.tar.gz"
+SRC_URI[md5sum] = "fe79435c3930389bfdb560255c802162"
+SRC_URI[sha256sum] = "2ea9f878f4cf3c276774c3f7e2a41977a1f2d64f98d2dcb6a15f1f3d84df61ec"
+
+do_compile() {
+        ${CC} ${CFLAGS} ${LDFLAGS} smemcap.c -o smemcap
+}
+
+do_install() {
+        install -d ${D}/${bindir}/
+        install -d ${D}/${mandir}/man8
+        install -m 0755 ${S}/smem ${D}${bindir}/
+        install -m 0755 ${S}/smemcap ${D}${bindir}/
+        install -m 0644 ${S}/smem.8 ${D}/${mandir}/man8/
+}
+RDEPENDS_${PN} += "python-textutils python-compression python-shell python-codecs"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/soci/soci/soci_libdir.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/soci/soci/soci_libdir.patch
new file mode 100644
index 0000000..00a1a5c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/soci/soci/soci_libdir.patch
@@ -0,0 +1,28 @@
+Define SOCI_LIBDIR only if its not passed via environemnt. In OE we
+want to set it per our choice since we use 'lib' for 64bit unless we
+are using multilib
+
+-Khem
+
+Index: soci-3.2.2/CMakeLists.txt
+===================================================================
+--- soci-3.2.2.orig/CMakeLists.txt
++++ soci-3.2.2/CMakeLists.txt
+@@ -69,11 +69,12 @@ include(SociDependencies)
+ ###############################################################################
+ # Installation
+ ###############################################################################
+-
+-if(APPLE OR CMAKE_SIZEOF_VOID_P EQUAL 4)
+-  set(SOCI_LIBDIR "lib")
+-else()
+-  set(SOCI_LIBDIR "lib64")
++if(NOT DEFINED SOCI_LIBDIR)
++  if(APPLE OR CMAKE_SIZEOF_VOID_P EQUAL 4)
++    set(SOCI_LIBDIR "lib")
++  else()
++    set(SOCI_LIBDIR "lib")
++  endif()
+ endif()
+ 
+ set(BINDIR "bin" CACHE PATH "The directory to install binaries into.")
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/soci/soci_3.2.2.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/soci/soci_3.2.2.bb
new file mode 100644
index 0000000..1f5a485
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/soci/soci_3.2.2.bb
@@ -0,0 +1,49 @@
+# Copyright (C) 2015 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "The C++ Database Access Library"
+HOMEPAGE = "http://soci.sourceforge.net"
+LICENSE = "BSL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
+SECTION = "libs"
+DEPENDS = "boost"
+
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}/${BP}/${BP}.tar.gz \
+           file://soci_libdir.patch \
+          "
+SRC_URI[md5sum] = "bc3c35f6cd3f80a1be19fe30b3c111bf"
+SRC_URI[sha256sum] = "30ea2f4d26639ef5b5cdc24fb300b3896746243dbb77b743582de2ff443ccb1c"
+
+TESTCONFIG = '-DSOCI_TEST_EMPTY_CONNSTR="dummy" -DSOCI_TEST_SQLITE3_CONNSTR="test.db" \
+              -DSOCI_TEST_POSTGRESQL_CONNSTR:STRING="dbname=soci_test" \
+              -DSOCI_TEST_MYSQL_CONNSTR:STRING="db=soci_test user=oe password=oe"'
+
+OBASEDIR ?= "/opt/oracle"
+OINCDIR = "rdbms/public"
+OLIBDIR = "lib"
+
+PACKAGECONFIG[sqlite3] = "-DSOCI_SQLITE3=ON,-DSOCI_SQLITE3=OFF,sqlite3,"
+PACKAGECONFIG[mysql] = "-DSOCI_MYSQL=ON,-DSOCI_MYSQL=OFF,mariadb,"
+PACKAGECONFIG[postgresql] = "-DSOCI_POSTGRESQL=ON,-DSOCI_POSTGRESQL=OFF,postgresql,"
+PACKAGECONFIG[odbc] = "-DSOCI_ODBC=ON,-DSOCI_ODBC=OFF,,"
+PACKAGECONFIG[empty] = "-DSOCI_EMPTY=ON,-DSOCI_EMPTY=OFF,,"
+PACKAGECONFIG[oracle] = "-DWITH_ORACLE=ON --with-oracle-include=${OINCDIR} --with-oracle-lib=${OLIBDIR},-DWITH_ORACLE=OFF,,"
+PACKAGECONFIG[ptest] = "${TESTCONFIG},,,"
+
+# enable your backend by default we enable 'empty'
+PACKAGECONFIG ??= "empty"
+
+# Take the flags added by PACKAGECONFIG and pass them to cmake.
+EXTRA_OECMAKE = "${EXTRA_OECONF} -DSOCI_LIBDIR=${libdir}"
+DISABLE_STATIC = ""
+
+inherit cmake
+
+PACKAGES += "${PN}-sqlite3 ${PN}-mysql ${PN}-postgresql ${PN}-odbc ${PN}-oracle"
+
+FILES_${PN}-sqlite3 = "${libdir}/lib${BPN}_sqlite3.so.*"
+FILES_${PN}-mysql = "${libdir}/lib${BPN}_mysql.so.*"
+FILES_${PN}-postgresql = "${libdir}/lib${BPN}_postgresql.so.*"
+FILES_${PN}-odbc = "${libdir}/lib${BPN}_odbc.so.*"
+FILES_${PN}-oracle = "${libdir}/lib${BPN}_oracle.so.*"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
new file mode 100644
index 0000000..adb67cd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "This package contains some simple command line tools to help using Linux spidev devices"
+HOMEPAGE = "https://github.com/cpb-/spi-tools"
+AUTHOR = "Christophe BLAESS"
+LICENSE="GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8c16666ae6c159876a0ba63099614381"
+
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://github.com/cpb-/spi-tools.git;protocol=git"
+
+SRCREV = "cc6a41fdcec60610703ba6db488c621c64952898"
+
+inherit autotools
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite-2.8.17/mainmk_build_dynamic.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite-2.8.17/mainmk_build_dynamic.patch
new file mode 100644
index 0000000..914422f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite-2.8.17/mainmk_build_dynamic.patch
@@ -0,0 +1,32 @@
+diff -urN sqlite-2.8.17.orig/main.mk sqlite-2.8.17/main.mk
+--- sqlite-2.8.17.orig/main.mk	2005-04-23 22:43:23.000000000 +0000
++++ sqlite-2.8.17/main.mk	2009-04-02 20:10:36.000000000 +0000
+@@ -139,7 +139,7 @@
+ # This is the default Makefile target.  The objects listed here
+ # are what get build when you type just "make" with no arguments.
+ #
+-all:	sqlite.h config.h libsqlite.a sqlite$(EXE)
++all:   sqlite.h config.h libsqlite.so sqlite$(EXE)
+ 
+ # Generate the file "last_change" which contains the date of change
+ # of the most recently modified source code file
+@@ -148,13 +148,12 @@
+ 	cat $(SRC) | grep '$$Id: ' | sort +4 | tail -1 \
+           | awk '{print $$5,$$6}' >last_change
+ 
+-libsqlite.a:	$(LIBOBJ)
+-	$(AR) libsqlite.a $(LIBOBJ)
+-	$(RANLIB) libsqlite.a
+-
+-sqlite$(EXE):	$(TOP)/src/shell.c libsqlite.a sqlite.h
+-	$(TCCX) $(READLINE_FLAGS) -o sqlite$(EXE) $(TOP)/src/shell.c \
+-		libsqlite.a $(LIBREADLINE) $(THREADLIB)
++libsqlite.so:	$(LIBOBJ)
++	$(CC) $(LDFLAGS) -shared -o libsqlite.so -Wl,-soname,libsqlite.so.0 $(LIBOBJ)
++
++sqlite$(EXE):	$(TOP)/src/shell.c libsqlite.so sqlite.h
++	$(TCCX) $(LDFLAGS) $(READLINE_FLAGS) -o sqlite$(EXE) $(TOP)/src/shell.c \
++		-lsqlite $(LIBREADLINE) $(THREADLIB)
+ 
+ sqlite_analyzer$(EXE):	$(TOP)/src/tclsqlite.c libsqlite.a $(TESTSRC) \
+ 			$(TOP)/tool/spaceanal.tcl
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite-2.8.17/mainmk_no_tcl.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite-2.8.17/mainmk_no_tcl.patch
new file mode 100644
index 0000000..b84b648
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite-2.8.17/mainmk_no_tcl.patch
@@ -0,0 +1,20 @@
+diff -bur sqlite-2.8.17~orig/main.mk sqlite-2.8.17/main.mk
+--- sqlite-2.8.17~orig/main.mk	2006-02-13 04:09:33.000000000 -0600
++++ sqlite-2.8.17/main.mk	2006-02-13 04:15:42.000000000 -0600
+@@ -58,7 +58,7 @@
+          expr.o func.o hash.o insert.o \
+          main.o opcodes.o os.o pager.o parse.o pragma.o printf.o random.o \
+          select.o table.o tokenize.o trigger.o update.o util.o \
+-         vacuum.o vdbe.o vdbeaux.o where.o tclsqlite.o
++         vacuum.o vdbe.o vdbeaux.o where.o
+ 
+ # All of the source code files.
+ #
+@@ -91,7 +91,6 @@
+   $(TOP)/src/sqlite.h.in \
+   $(TOP)/src/sqliteInt.h \
+   $(TOP)/src/table.c \
+-  $(TOP)/src/tclsqlite.c \
+   $(TOP)/src/tokenize.c \
+   $(TOP)/src/trigger.c \
+   $(TOP)/src/update.c \
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite-2.8.17/sqlite.pc b/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite-2.8.17/sqlite.pc
new file mode 100644
index 0000000..6bc742e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite-2.8.17/sqlite.pc
@@ -0,0 +1,12 @@
+# Package Information for pkg-config
+
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: SQLite
+Description: SQL database engine
+Version: 2.8.17
+Libs: -L${libdir} -lsqlite
+Cflags: -I${includedir}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite_2.8.17.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite_2.8.17.bb
new file mode 100644
index 0000000..e6e14c2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/sqlite/sqlite_2.8.17.bb
@@ -0,0 +1,59 @@
+SUMMARY = "An Embeddable SQL Database Engine"
+HOMEPAGE = "http://www.sqlite.org/"
+SECTION = "libs"
+DEPENDS = "readline ncurses"
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://src/main.c;beginline=1;endline=10;md5=e98469a8efa024a38ad5b2e4b92f4a96"
+
+PR = "r7"
+
+SRC_URI = "http://www.hwaci.com/sw/sqlite/sqlite-${PV}.tar.gz \
+    file://mainmk_build_dynamic.patch \
+    file://mainmk_no_tcl.patch \
+    file://sqlite.pc"
+
+SOURCES = "attach.o auth.o btree.o btree_rb.o build.o copy.o date.o delete.o \
+           expr.o func.o hash.o insert.o main.o opcodes.o os.o pager.o \
+           parse.o pragma.o printf.o random.o select.o table.o tokenize.o \
+           trigger.o update.o util.o vacuum.o vdbe.o vdbeaux.o where.o"
+
+inherit autotools pkgconfig
+
+do_configure() {
+    echo "main.mk is patched, no need to configure"
+    # make pkgconfig.bbclass pick this up
+    cp ${WORKDIR}/sqlite.pc ${S}
+}
+
+do_compile() {
+    oe_runmake -f ${S}/Makefile.linux-gcc \
+             TOP="${S}" \
+             BCC="${BUILD_CC}" \
+             TCC="${CC}" \
+             OPTS="-fPIC -D'INTPTR_TYPE=int'" \
+             TCL_FLAGS= LIBTCL= \
+             READLINE_FLAGS="-DHAVE_READLINE=1 -I${STAGING_INCDIR}" \
+             LIBREADLINE="-L. -L${STAGING_LIBDIR} -lreadline -lncurses"
+}
+
+do_install() {
+    install -d ${D}${libdir} ${D}${bindir}
+    install sqlite ${D}${bindir}
+    install -m 0755 libsqlite.so ${D}${libdir}/libsqlite.so.0.8.6
+    ln -sf libsqlite.so.0.8.6 ${D}${libdir}/libsqlite.so
+    ln -sf libsqlite.so.0.8.6 ${D}${libdir}/libsqlite.so.0
+    ln -sf libsqlite.so.0.8.6 ${D}${libdir}/libsqlite.so.0.8
+    install -d ${D}${includedir}
+    install -m 0644 sqlite.h ${D}${includedir}/sqlite.h
+    install -d ${D}${libdir}/pkgconfig
+    install -m 0644 ${S}/sqlite.pc ${D}${libdir}/pkgconfig/sqlite.pc
+}
+
+PACKAGES += "${PN}-bin"
+FILES_${PN}-bin = "${bindir}/*"
+FILES_${PN} = "${libdir}/*.so.*"
+
+SRC_URI[md5sum] = "838dbac20b56d2c4292e98848505a05b"
+SRC_URI[sha256sum] = "3f35ebfb67867fb5b583a03e480f900206af637efe7179b32294a6a0cf806f37"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-dpkg-start-stop-daemon-Accept-SIG-prefixed-signal-na.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-dpkg-start-stop-daemon-Accept-SIG-prefixed-signal-na.patch
new file mode 100644
index 0000000..e988efd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-dpkg-start-stop-daemon-Accept-SIG-prefixed-signal-na.patch
@@ -0,0 +1,39 @@
+From 685645a20e39cf2ab7db8d1f5e3666a4228abca8 Mon Sep 17 00:00:00 2001
+From: Ioan-Adrian Ratiu <adrian.ratiu@ni.com>
+Date: Wed, 8 Jul 2015 09:44:57 +0300
+Subject: [PATCH 1/1] dpkg start-stop-daemon: Accept SIG prefixed signal names
+
+---
+ utils/start-stop-daemon.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/utils/start-stop-daemon.c b/utils/start-stop-daemon.c
+index 6aebe9b..e805082 100644
+--- a/utils/start-stop-daemon.c
++++ b/utils/start-stop-daemon.c
+@@ -18,6 +18,9 @@
+  *                 and Andreas Schuldei <andreas@schuldei.org>
+  *
+  * Changes by Ian Jackson: added --retry (and associated rearrangements).
++ *
++ * Changes by Haris Okanovic <haris.okanovic@ni.com> to support 'SIG'
++ *     prefixed signal names placed in public domain as well.
+  */
+ 
+ #include <config.h>
+@@ -661,6 +664,12 @@ parse_signal(const char *sig_str, int *sig_num)
+ 	if (parse_unsigned(sig_str, 10, sig_num) == 0)
+ 		return 0;
+ 
++        /* Skip over optional "SIG" prefix */
++        if (strncmp(sig_str, "SIG", 3) == 0) {
++                warning("Using deprecated signal name %s. Drop the 'SIG' prefix.\n", sig_str);
++                sig_str += 3;
++        }
++
+ 	for (i = 0; i < array_count(siglist); i++) {
+ 		if (strcmp(sig_str, siglist[i].name) == 0) {
+ 			*sig_num = siglist[i].signal;
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb
new file mode 100644
index 0000000..5ee4472
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Debian's start-stop-daemon utility extracted from the dpkg \
+package"
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://utils/start-stop-daemon.c;endline=21;md5=8fbd0497a7d0b01e99820bffcb58e9ad"
+# start-stop-daemon is usually shipped by dpkg
+DEPENDS = "ncurses"
+RCONFLICTS_${PN} = "dpkg"
+
+SRC_URI = " \
+    ${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.xz \
+    file://0001-dpkg-start-stop-daemon-Accept-SIG-prefixed-signal-na.patch \
+"
+
+SRC_URI[md5sum] = "e48fcfdb2162e77d72c2a83432d537ca"
+SRC_URI[sha256sum] = "07019d38ae98fb107c79dbb3690cfadff877f153b8c4970e3a30d2e59aa66baa"
+
+inherit autotools gettext pkgconfig
+
+S = "${WORKDIR}/dpkg-${PV}"
+
+EXTRA_OECONF = " \
+    --without-bz2 \
+    --without-selinux \
+"
+
+do_install_append () {
+    # remove everything that is not related to start-stop-daemon, since there
+    # is no explicit rule for only installing ssd
+    find ${D} -type f -not -name "*start-stop-daemon*" -exec rm {} \;
+    find ${D} -depth -type d -empty -exec rmdir {} \;
+
+    # support for buggy init.d scripts that refer to an alternative
+    # explicit path to start-stop-daemon
+    mkdir -p ${D}/sbin/
+    ln -sf /usr/sbin/start-stop-daemon ${D}/sbin/start-stop-daemon
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb
new file mode 100644
index 0000000..e6057f4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Synergy - control multiple computers with one keyboard and mouse"
+HOMEPAGE = "http://synergy-project.org"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0f366945b209c5523e39889f636af00a"
+LICENSE = "GPL-2.0"
+SECTION = "x11/utils"
+
+DEPENDS = "virtual/libx11 libxtst libxinerama unzip-native curl openssl"
+
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI = "git://github.com/synergy/synergy.git;protocol=http"
+
+# Version 1.7.4-rc8
+SRCREV ?= "588fb4b805dd452556d05dbc03fe29ea5b4e43c0"
+PV = "1.7.3+1.7.4-rc8+${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+inherit cmake distro_features_check
+
+do_unpack_extra() {
+    cd ${S}/ext
+    for file in *.zip; do
+        fname="${file##*/}"
+        unzip $file -d ${fname%.*}
+    done
+}
+addtask unpack_extra after do_unpack before do_patch
+
+do_install() {
+    install -d ${D}/usr/bin
+    install -m 0755 ${S}/bin/synergy* ${D}/usr/bin/
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/Fix-the-memory-leak-problem-for-mutex.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/Fix-the-memory-leak-problem-for-mutex.patch
new file mode 100644
index 0000000..89022aa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/Fix-the-memory-leak-problem-for-mutex.patch
@@ -0,0 +1,58 @@
+Fix the memory leak problem for mutex
+
+Upstream-Status: Pending
+
+Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+---
+ lib/logqueue.c               |    1 +
+ modules/affile/affile-dest.c |    2 ++
+ modules/dbparser/dbparser.c  |    1 +
+ 3 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/lib/logqueue.c b/lib/logqueue.c
+index 337a3c1..10edcf0 100644
+--- a/lib/logqueue.c
++++ b/lib/logqueue.c
+@@ -188,6 +188,7 @@ log_queue_init_instance(LogQueue *self, const gchar *persist_name)
+ void
+ log_queue_free_method(LogQueue *self)
+ {
++  g_static_mutex_free(&self->lock);
+   g_free(self->persist_name);
+   g_free(self);
+ }
+diff --git a/modules/affile/affile-dest.c b/modules/affile/affile-dest.c
+index a2bcdad..ce79f6f 100644
+--- a/modules/affile/affile-dest.c
++++ b/modules/affile/affile-dest.c
+@@ -305,6 +305,7 @@ affile_dw_free(LogPipe *s)
+ {
+   AFFileDestWriter *self = (AFFileDestWriter *) s;
+   
++  g_static_mutex_free(&self->lock);
+   log_pipe_unref((LogPipe *) self->writer);
+   self->writer = NULL;
+   g_free(self->filename);
+@@ -687,6 +688,7 @@ affile_dd_free(LogPipe *s)
+   /* NOTE: this must be NULL as deinit has freed it, otherwise we'd have circular references */
+   g_assert(self->single_writer == NULL && self->writer_hash == NULL);
+ 
++  g_static_mutex_free(&self->lock);
+   log_template_unref(self->filename_template);
+   log_writer_options_destroy(&self->writer_options);
+   log_dest_driver_free(s);
+diff --git a/modules/dbparser/dbparser.c b/modules/dbparser/dbparser.c
+index f1248b5..9775701 100644
+--- a/modules/dbparser/dbparser.c
++++ b/modules/dbparser/dbparser.c
+@@ -284,6 +284,7 @@ log_db_parser_free(LogPipe *s)
+ {
+   LogDBParser *self = (LogDBParser *) s;
+ 
++  g_static_mutex_free(&self->lock);
+   if (self->db)
+     pattern_db_free(self->db);
+ 
+-- 
+1.7.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/Fix-the-memory-leak-problem-when-HAVE_ENVIRON-defined.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/Fix-the-memory-leak-problem-when-HAVE_ENVIRON-defined.patch
new file mode 100644
index 0000000..2ac9c0b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/Fix-the-memory-leak-problem-when-HAVE_ENVIRON-defined.patch
@@ -0,0 +1,27 @@
+Fix the memory leak problem when HAVE_ENVIRON is defined
+
+Upstream-Status: Pending
+
+Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+---
+--- a/lib/gprocess.c
++++ b/lib/gprocess.c
+@@ -1421,6 +1421,18 @@
+ void
+ g_process_finish(void)
+ {
++#ifdef HAVE_ENVIRON
++  int i = 0;
++
++  while (environ[i]) {
++    g_free(environ[i]);
++    ++i;
++  }
++  if (environ)
++    g_free(environ);
++  if (process_opts.argv_orig)
++    free(process_opts.argv_orig);
++#endif
+   g_process_remove_pidfile();
+ }
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/afsql-afsql_dd_insert_db-refactor.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/afsql-afsql_dd_insert_db-refactor.patch
new file mode 100644
index 0000000..42e181b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/afsql-afsql_dd_insert_db-refactor.patch
@@ -0,0 +1,494 @@
+From 23e80b75508187baaa823a68ea019b72e0b2305c Mon Sep 17 00:00:00 2001
+From: Budai Laszlo <lbudai@balabit.hu>
+Date: Tue, 12 Nov 2013 13:19:04 +0100
+Subject: [PATCH] afsql: afsql_dd_insert_db() refactor
+
+Upstream-Status: Backport
+
+A lot of the code that was previously in afsql_dd_insert_db() have been
+extracted to smaller functions, and afsql_dd_insert_db() was rebuilt on
+top of these. At the same time, memory leaks were plugged, and in case
+of a transaction error, backlog rewinding has been fixed too, to not
+loose messages since the last BEGIN command.
+
+Signed-off-by: Juhasz Viktor <jviktor@balabit.hu>
+Signed-off-by: Laszlo Budai <lbudai@balabit.hu>
+---
+ modules/afsql/afsql.c | 301 ++++++++++++++++++++++++++++++++------------------
+ 1 file changed, 192 insertions(+), 109 deletions(-)
+
+diff --git a/modules/afsql/afsql.c b/modules/afsql/afsql.c
+index 12f6aab..a6a8190 100644
+--- a/modules/afsql/afsql.c
++++ b/modules/afsql/afsql.c
+@@ -456,24 +456,21 @@ afsql_dd_create_index(AFSqlDestDriver *s
+  *
+  * NOTE: This function can only be called from the database thread.
+  **/
+-static GString *
+-afsql_dd_validate_table(AFSqlDestDriver *self, LogMessage *msg)
++static gboolean
++afsql_dd_validate_table(AFSqlDestDriver *self, GString *table)
+ {
+-  GString *query_string, *table;
++  GString *query_string;
+   dbi_result db_res;
+   gboolean success = FALSE;
+   gint i;
+ 
+-  table = g_string_sized_new(32);
+-  log_template_format(self->table, msg, &self->template_options, LTZ_LOCAL, 0, NULL, table);
+-
+   if (self->flags & AFSQL_DDF_DONT_CREATE_TABLES)
+-    return table;
++    return TRUE;
+ 
+   afsql_dd_check_sql_identifier(table->str, TRUE);
+ 
+   if (g_hash_table_lookup(self->validated_tables, table->str))
+-    return table;
++    return TRUE;
+ 
+   query_string = g_string_sized_new(32);
+   g_string_printf(query_string, "SELECT * FROM %s WHERE 0=1", table->str);
+@@ -544,14 +541,9 @@ afsql_dd_validate_table(AFSqlDestDriver 
+       /* we have successfully created/altered the destination table, record this information */
+       g_hash_table_insert(self->validated_tables, g_strdup(table->str), GUINT_TO_POINTER(TRUE));
+     }
+-  else
+-    {
+-      g_string_free(table, TRUE);
+-      table = NULL;
+-    }
+   g_string_free(query_string, TRUE);
+ 
+-  return table;
++  return success;
+ }
+ 
+ /**
+@@ -581,6 +573,20 @@ afsql_dd_begin_txn(AFSqlDestDriver *self
+ }
+ 
+ /**
++ * afsql_dd_handle_transaction_error:
++ *
++ * Handle errors inside during a SQL transaction (e.g. INSERT or COMMIT failures).
++ *
++ * NOTE: This function can only be called from the database thread.
++ **/
++static void
++afsql_dd_handle_transaction_error(AFSqlDestDriver *self)
++{
++  log_queue_rewind_backlog(self->queue);
++  self->flush_lines_queued = 0;
++}
++
++/**
+  * afsql_dd_begin_txn:
+  *
+  * Commit SQL transaction.
+@@ -596,14 +602,14 @@ afsql_dd_commit_txn(AFSqlDestDriver *sel
+   if (success)
+     {
+       log_queue_ack_backlog(self->queue, self->flush_lines_queued);
++      self->flush_lines_queued = 0;
+     }
+   else
+     {
+-      msg_notice("SQL transaction commit failed, rewinding backlog and starting again",
+-                 NULL);
+-      log_queue_rewind_backlog(self->queue);
++      msg_error("SQL transaction commit failed, rewinding backlog and starting again",
++                NULL);
++      afsql_dd_handle_transaction_error(self);
+     }
+-  self->flush_lines_queued = 0;
+   return success;
+ }
+ 
+@@ -644,12 +650,13 @@ afsql_dd_set_dbd_opt_numeric(gpointer ke
+ }
+ 
+ static gboolean
+-afsql_dd_connect(AFSqlDestDriver *self)
++afsql_dd_ensure_initialized_connection(AFSqlDestDriver *self)
+ {
+   if (self->dbi_ctx)
+     return TRUE;
+ 
+   self->dbi_ctx = dbi_conn_new(self->type);
++
+   if (!self->dbi_ctx)
+     {
+       msg_error("No such DBI driver",
+@@ -659,10 +666,12 @@ afsql_dd_connect(AFSqlDestDriver *self)
+     }
+ 
+   dbi_conn_set_option(self->dbi_ctx, "host", self->host);
++
+   if (strcmp(self->type, "mysql"))
+     dbi_conn_set_option(self->dbi_ctx, "port", self->port);
+   else
+     dbi_conn_set_option_numeric(self->dbi_ctx, "port", atoi(self->port));
++
+   dbi_conn_set_option(self->dbi_ctx, "username", self->user);
+   dbi_conn_set_option(self->dbi_ctx, "password", self->password);
+   dbi_conn_set_option(self->dbi_ctx, "dbname", self->database);
+@@ -691,6 +700,7 @@ afsql_dd_connect(AFSqlDestDriver *self)
+                 evt_tag_str("database", self->database),
+                 evt_tag_str("error", dbi_error),
+                 NULL);
++
+       return FALSE;
+     }
+ 
+@@ -713,104 +723,145 @@ afsql_dd_connect(AFSqlDestDriver *self)
+   return TRUE;
+ }
+ 
+-static gboolean
+-afsql_dd_insert_fail_handler(AFSqlDestDriver *self, LogMessage *msg,
+-                             LogPathOptions *path_options)
++static GString *
++afsql_dd_ensure_accessible_database_table(AFSqlDestDriver *self, LogMessage *msg)
+ {
+-  if (self->failed_message_counter < self->num_retries - 1)
+-    {
+-      log_queue_push_head(self->queue, msg, path_options);
+-
+-      /* database connection status sanity check after failed query */
+-      if (dbi_conn_ping(self->dbi_ctx) != 1)
+-        {
+-          const gchar *dbi_error;
+-
+-          dbi_conn_error(self->dbi_ctx, &dbi_error);
+-          msg_error("Error, no SQL connection after failed query attempt",
+-                    evt_tag_str("type", self->type),
+-                    evt_tag_str("host", self->host),
+-                    evt_tag_str("port", self->port),
+-                    evt_tag_str("username", self->user),
+-                    evt_tag_str("database", self->database),
+-                    evt_tag_str("error", dbi_error),
+-                    NULL);
+-          return FALSE;
+-        }
++  GString *table = g_string_sized_new(32);
++  log_template_format(self->table, msg, &self->template_options, LTZ_LOCAL, 0, NULL, table);
+ 
+-      self->failed_message_counter++;
+-      return FALSE;
++  if (!afsql_dd_validate_table(self, table))
++    {
++      /* If validate table is FALSE then close the connection and wait time_reopen time (next call) */
++      msg_error("Error checking table, disconnecting from database, trying again shortly",
++                evt_tag_int("time_reopen", self->time_reopen),
++                NULL);
++      g_string_free(table, TRUE);
++      return NULL;
+     }
+ 
+-  msg_error("Multiple failures while inserting this record into the database, message dropped",
+-            evt_tag_int("attempts", self->num_retries),
+-            NULL);
+-  stats_counter_inc(self->dropped_messages);
+-  log_msg_drop(msg, path_options);
+-  self->failed_message_counter = 0;
+-  return TRUE;
++  return table;
+ }
+ 
+ static GString *
+-afsql_dd_construct_query(AFSqlDestDriver *self, GString *table,
+-                         LogMessage *msg)
++afsql_dd_build_insert_command(AFSqlDestDriver *self, LogMessage *msg, GString *table)
+ {
+-  GString *value;
+-  GString *query_string;
+-  gint i;
++  GString *insert_command = g_string_sized_new(256);
++  GString *value = g_string_sized_new(512);
++  gint i, j;
+ 
+-  value = g_string_sized_new(256);
+-  query_string = g_string_sized_new(512);
++  g_string_printf(insert_command, "INSERT INTO %s (", table->str);
+ 
+-  g_string_printf(query_string, "INSERT INTO %s (", table->str);
+   for (i = 0; i < self->fields_len; i++)
+     {
+-      g_string_append(query_string, self->fields[i].name);
+-      if (i != self->fields_len - 1)
+-        g_string_append(query_string, ", ");
++      if ((self->fields[i].flags & AFSQL_FF_DEFAULT) == 0 && self->fields[i].value != NULL)
++        {
++           g_string_append(insert_command, self->fields[i].name);
++
++           j = i + 1;
++           while (j < self->fields_len && (self->fields[j].flags & AFSQL_FF_DEFAULT) == AFSQL_FF_DEFAULT)
++             j++;
++
++           if (j < self->fields_len)
++             g_string_append(insert_command, ", ");
++        }
+     }
+-  g_string_append(query_string, ") VALUES (");
++
++  g_string_append(insert_command, ") VALUES (");
+ 
+   for (i = 0; i < self->fields_len; i++)
+     {
+       gchar *quoted;
+ 
+-      if (self->fields[i].value == NULL)
+-        {
+-          /* the config used the 'default' value for this column -> the fields[i].value is NULL, use SQL default */
+-          g_string_append(query_string, "DEFAULT");
+-        }
+-      else
++      if ((self->fields[i].flags & AFSQL_FF_DEFAULT) == 0 && self->fields[i].value != NULL)
+         {
+           log_template_format(self->fields[i].value, msg, &self->template_options, LTZ_SEND, self->seq_num, NULL, value);
+-
+           if (self->null_value && strcmp(self->null_value, value->str) == 0)
+             {
+-              g_string_append(query_string, "NULL");
++              g_string_append(insert_command, "NULL");
+             }
+           else
+             {
+               dbi_conn_quote_string_copy(self->dbi_ctx, value->str, &quoted);
+               if (quoted)
+                 {
+-                  g_string_append(query_string, quoted);
++                  g_string_append(insert_command, quoted);
+                   free(quoted);
+                 }
+               else
+                 {
+-                  g_string_append(query_string, "''");
++                 g_string_append(insert_command, "''");
+                 }
+             }
+-        }
+ 
+-      if (i != self->fields_len - 1)
+-        g_string_append(query_string, ", ");
++          j = i + 1;
++          while (j < self->fields_len && (self->fields[j].flags & AFSQL_FF_DEFAULT) == AFSQL_FF_DEFAULT)
++            j++;
++          if (j < self->fields_len)
++            g_string_append(insert_command, ", ");
++        }
+     }
+-  g_string_append(query_string, ")");
++
++  g_string_append(insert_command, ")");
+ 
+   g_string_free(value, TRUE);
+ 
+-  return query_string;
++  return insert_command;
++}
++
++static inline gboolean
++afsql_dd_is_transaction_handling_enabled(const AFSqlDestDriver *self)
++{
++  return self->flush_lines_queued != -1;
++}
++
++static inline gboolean
++afsql_dd_should_start_new_transaction(const AFSqlDestDriver *self)
++{
++  return self->flush_lines_queued == 0;
++}
++
++static inline gboolean
++afsql_dd_should_commit_transaction(const AFSqlDestDriver *self)
++{
++  return afsql_dd_is_transaction_handling_enabled(self) && self->flush_lines_queued == self->flush_lines;
++}
++
++static inline gboolean
++afsql_dd_handle_insert_row_error_depending_on_connection_availability(AFSqlDestDriver *self,
++                                                                      LogMessage *msg,
++                                                                      LogPathOptions *path_options)
++{
++  const gchar *dbi_error, *error_message;
++
++  if (dbi_conn_ping(self->dbi_ctx) == 1)
++    {
++      log_queue_push_head(self->queue, msg, path_options);
++      return TRUE;
++    }
++
++  if (afsql_dd_is_transaction_handling_enabled(self))
++    {
++      error_message = "SQL connection lost in the middle of a transaction,"
++                      " rewinding backlog and starting again";
++      afsql_dd_handle_transaction_error(self);
++    }
++  else
++    {
++      error_message = "Error, no SQL connection after failed query attempt";
++      log_queue_push_head(self->queue, msg, path_options);
++    }
++
++  dbi_conn_error(self->dbi_ctx, &dbi_error);
++  msg_error(error_message,
++            evt_tag_str("type", self->type),
++            evt_tag_str("host", self->host),
++            evt_tag_str("port", self->port),
++            evt_tag_str("username", self->user),
++            evt_tag_str("database", self->database),
++            evt_tag_str("error", dbi_error),
++            NULL);
++
++  return FALSE;
+ }
+ 
+ /**
+@@ -824,61 +875,93 @@ afsql_dd_construct_query(AFSqlDestDriver
+ static gboolean
+ afsql_dd_insert_db(AFSqlDestDriver *self)
+ {
+-  GString *table, *query_string;
++  GString *table = NULL;
++  GString *insert_command = NULL;
+   LogMessage *msg;
+   gboolean success;
+   LogPathOptions path_options = LOG_PATH_OPTIONS_INIT;
+ 
+-  afsql_dd_connect(self);
++  if (!afsql_dd_ensure_initialized_connection(self))
++    return FALSE;
+ 
+-  success = log_queue_pop_head(self->queue, &msg, &path_options, (self->flags & AFSQL_DDF_EXPLICIT_COMMITS), FALSE);
++  /* connection established, try to insert a message */
++  success = log_queue_pop_head(self->queue, &msg, &path_options, FALSE, self->flags & AFSQL_DDF_EXPLICIT_COMMITS);
+   if (!success)
+     return TRUE;
+ 
+   msg_set_context(msg);
+ 
+-  table = afsql_dd_validate_table(self, msg);
++  table = afsql_dd_ensure_accessible_database_table(self, msg);
++
+   if (!table)
+     {
+-      /* If validate table is FALSE then close the connection and wait time_reopen time (next call) */
+-      msg_error("Error checking table, disconnecting from database, trying again shortly",
+-                evt_tag_int("time_reopen", self->time_reopen),
+-                NULL);
+-      msg_set_context(NULL);
+-      g_string_free(table, TRUE);
+-      return afsql_dd_insert_fail_handler(self, msg, &path_options);
++      success = FALSE;
++      goto out;
+     }
+ 
+-  query_string = afsql_dd_construct_query(self, table, msg);
++  if (afsql_dd_should_start_new_transaction(self) && !afsql_dd_begin_txn(self))
++    {
++      success = FALSE;
++      goto out;
++    }
+ 
+-  if (self->flush_lines_queued == 0 && !afsql_dd_begin_txn(self))
+-    return FALSE;
++  insert_command = afsql_dd_build_insert_command(self, msg, table);
++  success = afsql_dd_run_query(self, insert_command->str, FALSE, NULL);
+ 
+-  success = afsql_dd_run_query(self, query_string->str, FALSE, NULL);
+   if (success && self->flush_lines_queued != -1)
+     {
+       self->flush_lines_queued++;
+ 
+-      if (self->flush_lines && self->flush_lines_queued == self->flush_lines && !afsql_dd_commit_txn(self))
+-        return FALSE;
++      if (afsql_dd_should_commit_transaction(self) && !afsql_dd_commit_txn(self))
++        {
++          /* Assuming that in case of error, the queue is rewound by afsql_dd_commit_txn() */
++
++          g_string_free(insert_command, TRUE);
++          msg_set_context(NULL);
++
++          return FALSE;
++        }
+     }
+ 
+-  g_string_free(table, TRUE);
+-  g_string_free(query_string, TRUE);
++ out:
++
++  if (table != NULL)
++    g_string_free(table, TRUE);
++
++  if (insert_command != NULL)
++    g_string_free(insert_command, TRUE);
+ 
+   msg_set_context(NULL);
+ 
+-  if (!success)
+-    return afsql_dd_insert_fail_handler(self, msg, &path_options);
++  if (success)
++    {
++      log_msg_ack(msg, &path_options);
++      log_msg_unref(msg);
++      step_sequence_number(&self->seq_num);
++      self->failed_message_counter = 0;
++    }
++  else
++    {
++      if (self->failed_message_counter < self->num_retries - 1)
++        {
++          if (!afsql_dd_handle_insert_row_error_depending_on_connection_availability(self, msg, &path_options))
++            return FALSE;
+ 
+-  /* we only ACK if each INSERT is a separate transaction */
+-  if ((self->flags & AFSQL_DDF_EXPLICIT_COMMITS) == 0)
+-    log_msg_ack(msg, &path_options);
+-  log_msg_unref(msg);
+-  step_sequence_number(&self->seq_num);
+-  self->failed_message_counter = 0;
++          self->failed_message_counter++;
++        }
++      else
++        {
++          msg_error("Multiple failures while inserting this record into the database, message dropped",
++                    evt_tag_int("attempts", self->num_retries),
++                    NULL);
++          stats_counter_inc(self->dropped_messages);
++          log_msg_drop(msg, &path_options);
++          self->failed_message_counter = 0;
++          success = TRUE;
++        }
++    }
+ 
+-  return TRUE;
++  return success;
+ }
+ 
+ static void
+@@ -895,7 +978,7 @@ afsql_dd_message_became_available_in_the
+ static void
+ afsql_dd_wait_for_suspension_wakeup(AFSqlDestDriver *self)
+ {
+-  /* we got suspended, probably because of a connection error,  
++  /* we got suspended, probably because of a connection error,
+    * during this time we only get wakeups if we need to be
+    * terminated. */
+   if (!self->db_thread_terminate)
+@@ -974,8 +1057,7 @@ afsql_dd_database_thread(gpointer arg)
+ 
+       afsql_dd_commit_txn(self);
+     }
+-
+- exit:
++exit:
+   afsql_dd_disconnect(self);
+ 
+   msg_verbose("Database thread finished",
+-- 
+1.8.4.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/configure.ac-add-option-enable-thread-tls-to-manage-.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/configure.ac-add-option-enable-thread-tls-to-manage-.patch
new file mode 100644
index 0000000..cc8d110
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/configure.ac-add-option-enable-thread-tls-to-manage-.patch
@@ -0,0 +1,50 @@
+configure.ac: add option --enable-thread-tls to manage thread ssl support
+
+Add option --enable-thread-tls to manage the including of thread
+local storage, so we could explicitly disable it.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ configure.ac | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 474e094..cedca54 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -120,6 +120,9 @@ AC_ARG_ENABLE(memtrace,
+ AC_ARG_ENABLE(ssl,
+               [  --enable-ssl        Enable SSL support.],,enable_ssl="auto")
+ 
++AC_ARG_ENABLE(thread-tls,
++              [  --enable-thread-tls        Enable Thread Transport Layer Security support.],,enable_thread_tls="no")
++
+ AC_ARG_ENABLE(dynamic-linking,
+               [  --enable-dynamic-linking        Link everything dynamically.],,enable_dynamic_linking="auto")
+ 
+@@ -381,12 +384,14 @@ dnl ***************************************************************************
+ dnl Is the __thread keyword available?
+ dnl ***************************************************************************
+ 
+-AC_LINK_IFELSE([AC_LANG_PROGRAM(
+-[[#include <pthread.h>
+-__thread int a;
+-]],
+-[a=0;])],
+-[ac_cv_have_tls=yes; AC_DEFINE_UNQUOTED(HAVE_THREAD_KEYWORD, 1, "Whether Transport Layer Security is supported by the system")])
++if test "x$enable_thread_tls" != "xno"; then
++    AC_LINK_IFELSE([AC_LANG_PROGRAM(
++    [[#include <pthread.h>
++    __thread int a;
++    ]],
++    [a=0;])],
++    [ac_cv_have_tls=yes; AC_DEFINE_UNQUOTED(HAVE_THREAD_KEYWORD, 1, "Whether Transport Layer Security is supported by the system")])
++fi
+ 
+ dnl ***************************************************************************
+ dnl How to do static linking?
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/configure.patch
new file mode 100644
index 0000000..109f58c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/configure.patch
@@ -0,0 +1,23 @@
+Index: syslog-ng-3.5.4.1/configure.ac
+===================================================================
+--- syslog-ng-3.5.4.1.orig/configure.ac	2014-07-18 13:49:36.794141441 +0000
++++ syslog-ng-3.5.4.1/configure.ac	2014-07-18 14:23:57.738197606 +0000
+@@ -8,7 +8,8 @@ dnl SNAPSHOT_VERSION   - snapshot version to add to version number
+ dnl BINARY_BRANCH      - the value is added to all source/binary packages
+ dnl SOURCE_REVISION    - Revision of the source-tree, will added to the version string
+ dnl
+-AC_INIT(syslog-ng/main.c)
++AC_INIT(syslog-ng, 3.5.4.1)
++AC_CONFIG_SRCDIR(syslog-ng/main.c)
+ AC_CONFIG_MACRO_DIR([m4])
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ 
+@@ -53,7 +54,7 @@ else
+         CURRDATE=`date +"%a, %d %b %Y %H:%M:%S %Z"`
+ fi
+ 
+-AM_INIT_AUTOMAKE($PACKAGE, $VERSION, [foreign no-define subdir-objects])
++AM_INIT_AUTOMAKE([foreign no-define subdir-objects])
+ _AM_PROG_TAR([ustar])
+ if test -n "$SNAPSHOT_VERSION"; then
+ 	VERSION=$VERSION+$SNAPSHOT_VERSION
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/dbifix.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/dbifix.patch
new file mode 100644
index 0000000..15dfb68
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/dbifix.patch
@@ -0,0 +1,20 @@
+Index: syslog-ng-3.5.4.1/configure.ac
+===================================================================
+--- syslog-ng-3.5.4.1.orig/configure.ac	2014-07-18 14:35:03.134215740 +0000
++++ syslog-ng-3.5.4.1/configure.ac	2014-07-18 15:31:52.510308653 +0000
+@@ -576,13 +576,14 @@
+ dnl ***************************************************************************
+ 
+ AC_CHECK_LIB(dl, dlsym, DL_LIBS="-ldl")
++if test "x$enable_sql" != "xno"; then
+ PKG_CHECK_MODULES(LIBDBI, dbi >= $LIBDBI_MIN_VERSION, libdbi_pkgconfig_not_found="0", libdbi_pkgconfig_not_found="1")
+ 
+ if test "$libdbi_pkgconfig_not_found" -eq 1; then
+ 	dnl if libdbi has no .pc file, try it without one
+ 	AC_CHECK_LIB(dbi, dbi_initialize, LIBDBI_LIBS="-ldbi"; LIBDBI_CFLAGS="-I/usr/include")
+ fi
+-
++fi
+ if test "x$enable_sql" = "xauto"; then
+ 	AC_MSG_CHECKING(whether to enable SQL support)
+ 	if test "x$LIBDBI_LIBS" != "x"; then
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/deinit-the-new-config-when-reverting-to-the.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/deinit-the-new-config-when-reverting-to-the.patch
new file mode 100644
index 0000000..484af7e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/deinit-the-new-config-when-reverting-to-the.patch
@@ -0,0 +1,36 @@
+From 86842df8bff5c97e44fc55d2fb7fc6c10f56ab84 Mon Sep 17 00:00:00 2001
+From: Gergely Nagy <algernon@balabit.hu>
+Date: Fri, 13 Dec 2013 13:46:15 +0100
+Subject: [PATCH] mainloop: Deinit the new config when reverting to the old one
+
+Upstream-Status: Backport
+
+When reloading, and the new config fails, deinit it before initializing
+the old config. This is so that conflicting things do not remain held by
+the half-initialized new config, while the old tries to take it
+over. (It also removed a couple of memory leaks, most likely.)
+
+The reason we can do this, is because cfg_tree_stop() (called by
+cfg_deinit()) goes over all the known nodes, and log_pipe_deinit() is
+also smart enough to not deinit a node that has not been inited before.
+
+Signed-off-by: Gergely Nagy <algernon@balabit.hu>
+---
+ lib/mainloop.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lib/mainloop.c b/lib/mainloop.c
+index 34655fa..e6fbb59 100644
+--- a/lib/mainloop.c
++++ b/lib/mainloop.c
+@@ -510,6 +510,7 @@ main_loop_reload_config_apply(void)
+     {
+       msg_error("Error initializing new configuration, reverting to old config", NULL);
+       cfg_persist_config_move(main_loop_new_config, main_loop_old_config);
++      cfg_deinit(main_loop_new_config);
+       if (!cfg_init(main_loop_old_config))
+         {
+           /* hmm. hmmm, error reinitializing old configuration, we're hosed.
+-- 
+1.8.4.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-a-memory-leak-in-log_driver_free.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-a-memory-leak-in-log_driver_free.patch
new file mode 100644
index 0000000..2603474
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-a-memory-leak-in-log_driver_free.patch
@@ -0,0 +1,33 @@
+From a269669ba3cb6d1c06a3322b4a6a035cb787d085 Mon Sep 17 00:00:00 2001
+From: Gergely Nagy <algernon@balabit.hu>
+Date: Tue, 14 Jan 2014 13:58:05 +0100
+Subject: [PATCH] driver: Fix a memory leak in log_driver_free()
+
+Upstream-Status: Backport
+
+After freeing up the members of self->plugins, free self->plugins itself
+too.
+
+Signed-off-by: Gergely Nagy <algernon@balabit.hu>
+---
+ lib/driver.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/lib/driver.c b/lib/driver.c
+index d77fe57..a6867b9 100644
+--- a/lib/driver.c
++++ b/lib/driver.c
+@@ -91,6 +91,10 @@ log_driver_free(LogPipe *s)
+     {
+       log_driver_plugin_free((LogDriverPlugin *) l->data);
+     }
++  if (self->plugins)
++    {
++      g_list_free(self->plugins);
++    }
+   if (self->group)
+     g_free(self->group);
+   if (self->id)
+-- 
+1.8.4.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-config-libnet.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-config-libnet.patch
new file mode 100644
index 0000000..755803c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-config-libnet.patch
@@ -0,0 +1,66 @@
+Subject: [PATCH] add libnet enable option
+
+Upstream-Status: Pending
+
+This would avoid a implicit auto-detecting result.
+
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ configure.ac |   27 +++++++++++++++++----------
+ 1 files changed, 17 insertions(+), 10 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index b1e18b4..8e13025 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -73,6 +73,9 @@ AC_CONFIG_HEADERS(config.h)
+ dnl ***************************************************************************
+ dnl Arguments
+ 
++AC_ARG_ENABLE(libnet, 
++              [  --enable-libnet      Enable libnet support.],, enable_libnet="no")
++
+ AC_ARG_WITH(libnet,
+    [  --with-libnet=path      use path to libnet-config script],
+    ,
+@@ -768,22 +771,26 @@ dnl ***************************************************************************
+ dnl libnet headers/libraries
+ dnl ***************************************************************************
+ AC_MSG_CHECKING(for LIBNET)
+-if test "x$with_libnet" = "x"; then
+-        LIBNET_CONFIG="`which libnet-config`"
+-else
+-        LIBNET_CONFIG="$with_libnet/libnet-config"
+-fi
++if test "x$enable_libnet" = xyes; then
++        if test "x$with_libnet" = "x"; then
++                LIBNET_CONFIG="`which libnet-config`"
++        else
++                LIBNET_CONFIG="$with_libnet/libnet-config"
++        fi
++ 
++        if test -n "$LIBNET_CONFIG" -a -x "$LIBNET_CONFIG"; then
++                LIBNET_CFLAGS="`$LIBNET_CONFIG --defines`"
++                LIBNET_LIBS="`$LIBNET_CONFIG --libs`"
++                AC_MSG_RESULT(yes)
++        else
++                AC_MSG_ERROR([Could not find libnet, and libnet support was explicitly enabled.])
++        fi
+ 
+-if test -n "$LIBNET_CONFIG" -a -x "$LIBNET_CONFIG"; then
+-        LIBNET_CFLAGS="`$LIBNET_CONFIG --defines`"
+-        LIBNET_LIBS="`$LIBNET_CONFIG --libs`"
+-        AC_MSG_RESULT(yes)
+ else
+         LIBNET_LIBS=
+         AC_MSG_RESULT(no)
+ fi
+ 
+-
+ if test "x$enable_spoof_source" = "xauto"; then
+ 	AC_MSG_CHECKING(whether to enable spoof source support)
+         if test "x$LIBNET_LIBS" != "x"; then
+-- 
+1.7.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-invalid-ownership.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-invalid-ownership.patch
new file mode 100644
index 0000000..faf9672
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-invalid-ownership.patch
@@ -0,0 +1,28 @@
+syslog-ng: fix wrong ownership issue
+
+Upstream-Status: Pending
+
+The ownership of build user is preserved for some target files, fixed it by
+adding --no-same-owner option to tar when extracting files. 
+
+Signed-off-by: Ming Liu <ming.liu@windriver.com>
+---
+ scl/Makefile.am |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/scl/Makefile.am b/scl/Makefile.am
+index 57fad5d..2a29ca5 100644
+--- a/scl/Makefile.am
++++ b/scl/Makefile.am
+@@ -14,7 +14,7 @@ scl-install-data-local:
+ 		fi; \
+ 	done
+ 	$(mkinstalldirs) $(DESTDIR)/$(scldir)
+-	(cd $(srcdir)/scl; tar cf - $(SCL_SUBDIRS)) | (cd $(DESTDIR)/$(scldir) && tar xf -)
++	(cd $(srcdir)/scl; tar cf - $(SCL_SUBDIRS)) | (cd $(DESTDIR)/$(scldir) && tar xf - --no-same-owner)
+ 	chmod -R u+rwX $(DESTDIR)/$(scldir)
+ 
+ scl-uninstall-local:
+-- 
+1.7.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/free-global-LogTemplateOptions.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/free-global-LogTemplateOptions.patch
new file mode 100644
index 0000000..d439a26
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/free-global-LogTemplateOptions.patch
@@ -0,0 +1,30 @@
+From 3ef6ca8044260c77118edca6dead807a2edcb5ef Mon Sep 17 00:00:00 2001
+From: Balazs Scheidler <bazsi@balabit.hu>
+Date: Thu, 31 Oct 2013 13:20:12 +0100
+Subject: [PATCH] cfg: free global LogTemplateOptions
+
+Upstream-Status: Backport
+
+This fixes a potential memory leak when global template specific
+options were specified, such as local-time-zone(), send-time-zone() etc.
+
+Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
+---
+ lib/cfg.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lib/cfg.c b/lib/cfg.c
+index 7f040b8..adeaaf8 100644
+--- a/lib/cfg.c
++++ b/lib/cfg.c
+@@ -411,6 +411,7 @@ cfg_free(GlobalConfig *self)
+   g_free(self->proto_template_name);  
+   log_template_unref(self->file_template);
+   log_template_unref(self->proto_template);
++  log_template_options_destroy(&self->template_options);
+ 
+   if (self->bad_hostname_compiled)
+     regfree(&self->bad_hostname);
+-- 
+1.8.4.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/initscript b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/initscript
new file mode 100644
index 0000000..910030f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/initscript
@@ -0,0 +1,62 @@
+#! /bin/sh
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/syslog-ng and type
+# > update-rc.d syslog-ng defaults 5
+#
+
+# Source function library
+. /etc/init.d/functions
+
+syslog_ng=/usr/sbin/syslog-ng
+test -x "$syslog_ng" || exit 0
+
+PIDFILE=/var/run/syslog-ng/syslog-ng.pid
+
+create_xconsole() {
+  test -e /dev/xconsole || mknod -m 640 /dev/xconsole p
+  test -x /sbin/restorecon && /sbin/restorecon /dev/xconsole
+}
+
+RETVAL=0
+
+case "$1" in
+  start)
+    [ "${VERBOSE}" != "no" ] && echo -n "Starting syslog-ng:"
+    create_xconsole
+    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $syslog_ng
+    [ "${VERBOSE}" != "no" ] && echo "."
+    ;;
+  stop)
+    [ "${VERBOSE}" != "no" ] && echo -n "Stopping syslog-ng:"
+    start-stop-daemon --stop --quiet --pidfile $PIDFILE
+    [ "${VERBOSE}" != "no" ] && echo "."
+    ;;
+  reload|force-reload)
+    start-stop-daemon --stop --quiet --signal 1 --exec $syslog_ng
+    ;;
+  restart)
+    echo "Stopping syslog-ng:"
+    start-stop-daemon --stop --quiet --pidfile $PIDFILE
+    echo -n "Waiting for syslog-ng to die off"
+    for i in 1 2 3 ;
+    do
+        sleep 1
+        echo -n "."
+    done
+    echo ""
+    echo -n "Starting syslog-ng:"
+    create_xconsole
+    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $syslog_ng
+    echo "."
+    ;;
+  status)
+    status $syslog_ng
+    RETVAL=$?
+    ;;
+  *)
+    echo "Usage: $0 {start|stop|reload|restart|force-reload|status}"
+    exit 1
+esac
+
+exit $RETVAL
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/logwriter-dont-allocate-a-new-buffer.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/logwriter-dont-allocate-a-new-buffer.patch
new file mode 100644
index 0000000..9e3d64b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/logwriter-dont-allocate-a-new-buffer.patch
@@ -0,0 +1,26 @@
+logwriter: Don't allocate a new buffer if fails to consume current item
+
+Upstream-Status: Pending
+
+Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+---
+--- a/lib/logwriter.c
++++ b/lib/logwriter.c
+@@ -1010,7 +1010,7 @@
+         {
+           status = log_proto_client_post(proto, (guchar *) self->line_buffer->str, self->line_buffer->len, &consumed);
+ 
+-          if (consumed)
++          if (consumed && status != LPS_ERROR)
+             log_writer_realloc_line_buffer(self);
+ 
+           if (status == LPS_ERROR)
+@@ -1028,7 +1028,7 @@
+                     NULL);
+           consumed = TRUE;
+         }
+-      if (consumed)
++      if (consumed && status != LPS_ERROR)
+         {
+           if (lm->flags & LF_LOCAL)
+             step_sequence_number(&self->seq_num);
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/rewrite-expr-grammar.ym-Free-up-token.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/rewrite-expr-grammar.ym-Free-up-token.patch
new file mode 100644
index 0000000..1951af9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/rewrite-expr-grammar.ym-Free-up-token.patch
@@ -0,0 +1,17 @@
+rewrite-expr-grammar.ym: Free up token.
+
+Upsteam-Status: Backport
+
+Reported-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+Signed-off-by: Viktor Tusa <tusavik@gmail.com>
+---
+--- a/lib/rewrite/rewrite-expr-grammar.ym
++++ b/lib/rewrite/rewrite-expr-grammar.ym
+@@ -78,6 +78,7 @@
+ 
+ 	    $$ = log_template_new(configuration, $1);
+ 	    CHECK_ERROR(log_template_compile($$, $1, &error), @1, "Error compiling template (%s)", error->message);
++            free($1);
+ 	  }
+ 	;
+ 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/still-free-the-unconsumed-item.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/still-free-the-unconsumed-item.patch
new file mode 100644
index 0000000..ea18682
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/still-free-the-unconsumed-item.patch
@@ -0,0 +1,90 @@
+From 365020c5c0823c91a8011e34597f970a7cfb4fb3 Mon Sep 17 00:00:00 2001
+From: Tusa Viktor <tusavik@gmail.com>
+Date: Wed, 23 Apr 2014 17:10:58 +0000
+Subject: [PATCH] logwriter: still free the unconsumed item during reloading
+ configuration
+
+Upstream-Status: Backport
+
+Otherwise we have no chance to free this stuff.
+
+Reported-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+Signed-off-by: Tusa Viktor <tusavik@gmail.com>
+Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
+---
+ lib/logproto/logproto-client.h      |    2 +-
+ lib/logproto/logproto-text-client.c |   11 +++++++++++
+ lib/logwriter.c                     |    9 +++++++--
+ 3 files changed, 19 insertions(+), 3 deletions(-)
+
+diff --git a/lib/logproto/logproto-client.h b/lib/logproto/logproto-client.h
+index 254ecf9..5adc917 100644
+--- a/lib/logproto/logproto-client.h
++++ b/lib/logproto/logproto-client.h
+@@ -47,7 +47,6 @@ void log_proto_client_options_defaults(LogProtoClientOptions *options);
+ void log_proto_client_options_init(LogProtoClientOptions *options, GlobalConfig *cfg);
+ void log_proto_client_options_destroy(LogProtoClientOptions *options);
+ 
+-
+ struct _LogProtoClient
+ {
+   LogProtoStatus status;
+@@ -107,6 +106,7 @@ log_proto_client_reset_error(LogProtoClient *s)
+ gboolean log_proto_client_validate_options(LogProtoClient *self);
+ void log_proto_client_init(LogProtoClient *s, LogTransport *transport, const LogProtoClientOptions *options);
+ void log_proto_client_free(LogProtoClient *s);
++void log_proto_client_free_method(LogProtoClient *s);
+ 
+ #define DEFINE_LOG_PROTO_CLIENT(prefix) \
+   static gpointer                                                       \
+diff --git a/lib/logproto/logproto-text-client.c b/lib/logproto/logproto-text-client.c
+index 3248759..a5100f3 100644
+--- a/lib/logproto/logproto-text-client.c
++++ b/lib/logproto/logproto-text-client.c
+@@ -146,12 +146,23 @@ log_proto_text_client_post(LogProtoClient *s, guchar *msg, gsize msg_len, gboole
+ }
+ 
+ void
++log_proto_text_client_free(LogProtoClient *s)
++{
++  LogProtoTextClient *self = (LogProtoTextClient *)s;
++  if (self->partial_free)
++    self->partial_free(self->partial);
++  self->partial = NULL;
++  log_proto_client_free_method(s);
++};
++
++void
+ log_proto_text_client_init(LogProtoTextClient *self, LogTransport *transport, const LogProtoClientOptions *options)
+ {
+   log_proto_client_init(&self->super, transport, options);
+   self->super.prepare = log_proto_text_client_prepare;
+   self->super.flush = log_proto_text_client_flush;
+   self->super.post = log_proto_text_client_post;
++  self->super.free_fn = log_proto_text_client_free;
+   self->super.transport = transport;
+   self->next_state = -1;
+ }
+diff --git a/lib/logwriter.c b/lib/logwriter.c
+index 3292e31..470bcdb 100644
+--- a/lib/logwriter.c
++++ b/lib/logwriter.c
+@@ -1063,8 +1063,13 @@ log_writer_flush(LogWriter *self, LogWriterFlushMode flush_mode)
+         }
+       else
+         {
+-          /* push back to the queue */
+-          log_queue_push_head(self->queue, lm, &path_options);
++          if (flush_mode == LW_FLUSH_QUEUE)
++            log_msg_unref(lm);
++          else
++            {
++              /* push back to the queue */
++              log_queue_push_head(self->queue, lm, &path_options);
++            }
+           msg_set_context(NULL);
+           log_msg_refcache_stop();
+           break;
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng-verify-the-list-before-del.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng-verify-the-list-before-del.patch
new file mode 100644
index 0000000..e8119b8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng-verify-the-list-before-del.patch
@@ -0,0 +1,38 @@
+Verify the validity of the pointer before delete it
+
+Otherwise, we got a crash at logqueue-fifo.c:344
+  344 iv_list_del(&node->list);
+
+Upstream-Status: Pending
+
+Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
+---
+--- a/lib/logqueue-fifo.c
++++ b/lib/logqueue-fifo.c
+@@ -339,15 +339,18 @@
+       *msg = node->msg;
+       path_options->ack_needed = node->ack_needed;
+       self->qoverflow_output_len--;
+-      if (!push_to_backlog)
++      if ((&node->list) && (&node->list)->next && (&node->list)->prev)
+         {
+-          iv_list_del(&node->list);
+-          log_msg_free_queue_node(node);
+-        }
+-      else
+-        {
+-          iv_list_del_init(&node->list);
+-        }
++          if (!push_to_backlog)
++            {
++              iv_list_del(&node->list);
++              log_msg_free_queue_node(node);
++            }
++          else
++            {
++              iv_list_del_init(&node->list);
++            }
++        }
+     }
+   else
+     {
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf
new file mode 100644
index 0000000..f0da2b7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf
@@ -0,0 +1,155 @@
+@version: 3.5
+#
+# Syslog-ng configuration file, compatible with default Debian syslogd
+# installation. Originally written by anonymous (I can't find his name)
+# Revised, and rewrited by me (SZALAY Attila <sasa@debian.org>)
+
+# First, set some global options.
+options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no);
+	  owner("root"); group("adm"); perm(0640); stats_freq(0);
+	  bad_hostname("^gconfd$");
+};
+
+########################
+# Sources
+########################
+# This is the default behavior of sysklogd package
+# Logs may come from unix stream, but not from another machine.
+#
+source s_src { unix-dgram("/dev/log"); internal();
+       	     file("/proc/kmsg" program_override("kernel"));
+};
+
+# If you wish to get logs from remote machine you should uncomment
+# this and comment the above source line.
+#
+#source s_net { tcp(ip(127.0.0.1) port(1000) authentication(required) encrypt(allow)); };
+
+########################
+# Destinations
+########################
+# First some standard logfile
+#
+destination d_auth { file("/var/log/auth.log"); };
+destination d_cron { file("/var/log/cron.log"); };
+destination d_daemon { file("/var/log/daemon.log"); };
+destination d_kern { file("/var/log/kern.log"); };
+destination d_lpr { file("/var/log/lpr.log"); };
+destination d_mail { file("/var/log/mail.log"); };
+destination d_syslog { file("/var/log/syslog"); };
+destination d_user { file("/var/log/user.log"); };
+destination d_uucp { file("/var/log/uucp.log"); };
+
+# This files are the log come from the mail subsystem.
+#
+destination d_mailinfo { file("/var/log/mail/mail.info"); };
+destination d_mailwarn { file("/var/log/mail/mail.warn"); };
+destination d_mailerr { file("/var/log/mail/mail.err"); };
+
+# Logging for INN news system
+#
+destination d_newscrit { file("/var/log/news/news.crit"); };
+destination d_newserr { file("/var/log/news/news.err"); };
+destination d_newsnotice { file("/var/log/news/news.notice"); };
+
+# Some `catch-all' logfiles.
+#
+destination d_debug { file("/var/log/debug"); };
+destination d_error { file("/var/log/error"); };
+destination d_messages { file("/var/log/messages"); };
+
+# The root's console.
+#
+destination d_console { usertty("root"); };
+
+# Virtual console.
+#
+destination d_console_all { file("/dev/tty10"); };
+
+# The named pipe /dev/xconsole is for the nsole' utility.  To use it,
+# you must invoke nsole' with the -file' option:
+#
+#    $ xconsole -file /dev/xconsole [...]
+#
+destination d_xconsole { pipe("/dev/xconsole"); };
+
+# Send the messages to an other host
+#
+#destination d_net { tcp("127.0.0.1" port(1000) authentication(on) encrypt(on) log_fifo_size(1000)); };
+
+# Debian only
+destination d_ppp { file("/var/log/ppp.log"); };
+
+########################
+# Filters
+########################
+# Here's come the filter options. With this rules, we can set which
+# message go where.
+
+filter f_dbg { level(debug); };
+filter f_info { level(info); };
+filter f_notice { level(notice); };
+filter f_warn { level(warn); };
+filter f_err { level(err); };
+filter f_crit { level(crit .. emerg); };
+
+filter f_debug { level(debug) and not facility(auth, authpriv, news, mail); };
+filter f_error { level(err .. emerg) ; };
+filter f_messages { level(info,notice,warn) and
+                    not facility(auth,authpriv,cron,daemon,mail,news); };
+
+filter f_auth { facility(auth, authpriv) and not filter(f_debug); };
+filter f_cron { facility(cron) and not filter(f_debug); };
+filter f_daemon { facility(daemon) and not filter(f_debug); };
+filter f_kern { facility(kern) and not filter(f_debug); };
+filter f_lpr { facility(lpr) and not filter(f_debug); };
+filter f_local { facility(local0, local1, local3, local4, local5,
+                        local6, local7) and not filter(f_debug); };
+filter f_mail { facility(mail) and not filter(f_debug); };
+filter f_news { facility(news) and not filter(f_debug); };
+filter f_syslog3 { not facility(auth, authpriv, mail) and not filter(f_debug); };
+filter f_user { facility(user) and not filter(f_debug); };
+filter f_uucp { facility(uucp) and not filter(f_debug); };
+
+filter f_cnews { level(notice, err, crit) and facility(news); };
+filter f_cother { level(debug, info, notice, warn) or facility(daemon, mail); };
+
+filter f_ppp { facility(local2) and not filter(f_debug); };
+filter f_console { level(warn .. emerg); };
+
+########################
+# Log paths
+########################
+log { source(s_src); filter(f_auth); destination(d_auth); };
+log { source(s_src); filter(f_cron); destination(d_cron); };
+log { source(s_src); filter(f_daemon); destination(d_daemon); };
+log { source(s_src); filter(f_kern); destination(d_kern); };
+log { source(s_src); filter(f_lpr); destination(d_lpr); };
+log { source(s_src); filter(f_syslog3); destination(d_syslog); };
+log { source(s_src); filter(f_user); destination(d_user); };
+log { source(s_src); filter(f_uucp); destination(d_uucp); };
+
+log { source(s_src); filter(f_mail); destination(d_mail); };
+#log { source(s_src); filter(f_mail); filter(f_info); destination(d_mailinfo); };
+#log { source(s_src); filter(f_mail); filter(f_warn); destination(d_mailwarn); };
+#log { source(s_src); filter(f_mail); filter(f_err); destination(d_mailerr); };
+
+log { source(s_src); filter(f_news); filter(f_crit); destination(d_newscrit); };
+log { source(s_src); filter(f_news); filter(f_err); destination(d_newserr); };
+log { source(s_src); filter(f_news); filter(f_notice); destination(d_newsnotice); };
+#log { source(s_src); filter(f_cnews); destination(d_console_all); };
+#log { source(s_src); filter(f_cother); destination(d_console_all); };
+
+#log { source(s_src); filter(f_ppp); destination(d_ppp); };
+
+log { source(s_src); filter(f_debug); destination(d_debug); };
+log { source(s_src); filter(f_error); destination(d_error); };
+log { source(s_src); filter(f_messages); destination(d_messages); };
+
+log { source(s_src); filter(f_console); destination(d_console_all);
+				    destination(d_xconsole); };
+log { source(s_src); filter(f_crit); destination(d_console); };
+
+# All messages send to a remote site
+#
+#log { source(s_src); destination(d_net); };
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
new file mode 100644
index 0000000..f53c607
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
@@ -0,0 +1,32 @@
+From 0be9c08dd3f825e92fa02d4a08d8aff743109e61 Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Wed, 17 Jun 2015 14:46:30 +0900
+Subject: [PATCH] syslog-ng.service: the syslog-ng service can not start
+ successfully,so modify it.
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ contrib/systemd/syslog-ng.service | 5 ++---
+ 1 file changed, 2 insertion(+), 3 deletions(-)
+
+diff --git a/contrib/systemd/syslog-ng.service b/contrib/systemd/syslog-ng.service
+index fc16f8d..8e09deb 100644
+--- a/contrib/systemd/syslog-ng.service
++++ b/contrib/systemd/syslog-ng.service
+@@ -3,9 +3,8 @@ Description=System Logger Daemon
+ Documentation=man:syslog-ng(8)
+ 
+ [Service]
+-Type=notify
+-ExecStart=/usr/sbin/syslog-ng -F
+-ExecReload=/bin/kill -HUP $MAINPID
++ExecStart=@SBINDIR@/syslog-ng -F -p @LOCALSTATEDIR@/run/syslogd.pid
++ExecReload=@BASEBINDIR@/kill -HUP $MAINPID
+ StandardOutput=journal
+ StandardError=journal
+ Restart=on-failure
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/volatiles.03_syslog-ng b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/volatiles.03_syslog-ng
new file mode 100644
index 0000000..3c4a50d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/volatiles.03_syslog-ng
@@ -0,0 +1 @@
+d root root 0755 /var/run/syslog-ng none
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
new file mode 100644
index 0000000..4e0f697
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
@@ -0,0 +1,118 @@
+SUMMARY = "Alternative system logger daemon"
+DESCRIPTION = "syslog-ng, as the name shows, is a syslogd replacement, \
+but with new functionality for the new generation. The original syslogd \
+allows messages only to be sorted based on priority/facility pairs; \
+syslog-ng adds the possibility to filter based on message contents using \
+regular expressions. The new configuration scheme is intuitive and powerful. \
+Forwarding logs over TCP and remembering all forwarding hops makes it \
+ideal for firewalled environments. \
+"
+HOMEPAGE = "http://www.balabit.com/network-security/syslog-ng/opensource-logging-system"
+
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e0e8658d9be248f01b7933df24dc1408"
+
+# util-linux added to get libuuid
+DEPENDS = "libpcre flex eventlog glib-2.0 util-linux"
+
+SRC_URI = "http://www.balabit.com/downloads/files/syslog-ng/sources/${PV}/source/${BPN}_${PV}.tar.gz \
+           file://syslog-ng.conf \
+           file://initscript \
+           file://volatiles.03_syslog-ng \
+           file://configure.ac-add-option-enable-thread-tls-to-manage-.patch \
+"
+
+inherit autotools systemd pkgconfig update-alternatives update-rc.d
+
+EXTRA_OECONF = " \
+    --enable-dynamic-linking \
+    --disable-sub-streams \
+    --disable-pacct \
+    --localstatedir=${localstatedir}/lib/${BPN} \
+    --sysconfdir=${sysconfdir}/${BPN} \
+    --with-module-dir=${libdir}/${BPN} \
+    --with-sysroot=${STAGING_DIR_HOST} \
+    --with-libmongo-client=no --disable-mongodb \
+    --with-librabbitmq-client=no \
+    ${CONFIG_TLS} \
+"
+
+CONFIG_TLS = "--enable-thread-tls"
+CONFIG_TLS_arm = "${@base_conditional( "DEBUG_BUILD", "1", " --disable-thread-tls", " --enable-thread-tls", d )}"
+
+PACKAGECONFIG ??= "openssl \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
+"
+PACKAGECONFIG[openssl] = "--enable-ssl,--disable-ssl,openssl,"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,,"
+PACKAGECONFIG[systemd] = "--enable-systemd --with-systemdsystemunitdir=${systemd_unitdir}/system/,--disable-systemd --without-systemdsystemunitdir,systemd,"
+PACKAGECONFIG[linux-caps] = "--enable-linux-caps,--disable-linux-caps,libcap,"
+PACKAGECONFIG[pcre] = "--enable-pcre,--disable-pcre,libpcre,"
+PACKAGECONFIG[dbi] = "--enable-sql,--disable-sql,libdbi,"
+PACKAGECONFIG[libnet] = "--enable-libnet --with-libnet=${STAGING_BINDIR_CROSS},--disable-libnet,libnet,"
+PACKAGECONFIG[smtp] = "--enable-smtp --with-libesmtp=${STAGING_LIBDIR},--disable-smtp,libesmtp,"
+PACKAGECONFIG[json] = "--enable-json,--disable-json,json-c,"
+PACKAGECONFIG[tcp-wrapper] = "--enable-tcp-wrapper,--disable-tcp-wrapper,tcp-wrappers,"
+PACKAGECONFIG[geoip] = "--enable-geoip,--disable-geoip,geoip,"
+
+do_configure_prepend() {
+    eval "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '', 'sed -i -e "s/-D_LARGEFILE_SOURCE//" -e "s/-D_FILE_OFFSET_BITS=64//" ${S}/configure.in', d)}"
+}
+
+do_install_append() {
+    install -d ${D}/${sysconfdir}/${BPN}
+    install ${WORKDIR}/syslog-ng.conf ${D}${sysconfdir}/${BPN}/${BPN}.conf
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 755 ${WORKDIR}/initscript ${D}/${sysconfdir}/init.d/syslog.${BPN}
+    install -d ${D}/${sysconfdir}/default/volatiles/
+    install -m 755 ${WORKDIR}/volatiles.03_syslog-ng ${D}/${sysconfdir}/default/volatiles/03_syslog-ng
+    install -d ${D}/${localstatedir}/lib/${BPN}
+    # Remove /var/run as it is created on startup
+    rm -rf ${D}${localstatedir}/run
+    sed -i -e 's,@SBINDIR@,${sbindir},g' ${S}/contrib/systemd/*.service
+    sed -i -e 's,@LOCALSTATEDIR@,${localstatedir},g' ${S}/contrib/systemd/*.service
+    sed -i -e 's,@BASEBINDIR@,${base_bindir},g' ${S}/contrib/systemd/*.service
+}
+
+FILES_${PN} += "${datadir}/include/scl/ ${datadir}/xsd ${datadir}/tools"
+RDEPENDS_${PN} += "gawk"
+
+# This overcomes the syslog-ng rdepends on syslog-ng-dev QA Error
+PACKAGES =+ "${PN}-libs ${PN}-libs-dev ${PN}-libs-dbg"
+FILES_${PN}-libs = "${libdir}/${BPN}/*.so ${libdir}/libsyslog-ng-*.so*"
+FILES_${PN}-libs-dev = "${libdir}/${BPN}/lib*.la"
+FILES_${PN}-libs-dbg = "${libdir}/${BPN}/.debug"
+FILES_${PN}-staticdev = "${libdir}/${BPN}/libtest/*.a"
+INSANE_SKIP_${PN}-libs = "dev-so"
+RDEPENDS_${PN} += "${PN}-libs"
+
+CONFFILES_${PN} = "${sysconfdir}/${BPN}.conf ${sysconfdir}/scl.conf"
+
+# syslog initscript is handled explicitly because order of
+# update-rc.d and update-alternatives is important
+RDEPENDS_${PN} += " ${@base_conditional("ONLINE_PACKAGE_MANAGEMENT", "none", "", "update-rc.d", d)}"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "${BPN}.service"
+
+# no syslog-init for systemd
+python () {
+    if bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
+        pn = d.getVar('PN', True)
+        sysconfdir = d.getVar('sysconfdir', True)
+        d.appendVar('ALTERNATIVE_%s' % (pn), ' syslog-init')
+        d.setVarFlag('ALTERNATIVE_PRIORITY', 'syslog-init', '200')
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', 'syslog-init', '%s/init.d/syslog' % (sysconfdir))
+
+    if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d):
+        pn = d.getVar('PN', True)
+        d.appendVar('ALTERNATIVE_%s' % (pn), ' syslog-service')
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', 'syslog-service', '%s/systemd/system/syslog.service' % (d.getVar('sysconfdir', True)))
+        d.setVarFlag('ALTERNATIVE_TARGET', 'syslog-service', '%s/system/${BPN}.service' % (d.getVar('systemd_unitdir', True)))
+}
+
+INITSCRIPT_NAME = "syslog"
+INITSCRIPT_PARAMS = "start 20 2 3 4 5 . stop 90 0 1 6 ."
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.6.4.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.6.4.bb
new file mode 100644
index 0000000..73609af
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.6.4.bb
@@ -0,0 +1,15 @@
+require syslog-ng.inc
+
+SRC_URI += " \
+    file://fix-a-memory-leak-in-log_driver_free.patch \
+    file://fix-config-libnet.patch \
+    file://fix-invalid-ownership.patch \
+    file://Fix-the-memory-leak-problem-for-mutex.patch \
+    file://Fix-the-memory-leak-problem-when-HAVE_ENVIRON-defined.patch \
+    file://configure.patch \
+    file://dbifix.patch \
+    file://syslog-ng.service-the-syslog-ng-service.patch \
+"
+
+SRC_URI[md5sum] = "e9f401615e92e5eb27396c995c1446ba"
+SRC_URI[sha256sum] = "7be11df31ac7d716f1f952e22b5ae8e2049edd633a41b223776a853d9106f4e7"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb
new file mode 100644
index 0000000..078fcea
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "a graphical user interface that allows the user to \
+change the default keyboard of the system"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+SRC_URI = "https://fedorahosted.org/releases/s/y/${BPN}/${BP}.tar.bz2"
+SRC_URI[md5sum] = "c267db0ee7a2131ba418399dc17f9e72"
+SRC_URI[sha256sum] = "218c883e4e2bfcc82bfe07e785707b5c2ece28df772f2155fd044b9bb1614284"
+inherit python-dir
+
+inherit python-dir gettext
+DEPENDS = "intltool-native"
+
+EXTRA_OEMAKE = " \
+    PYTHON='${STAGING_BINDIR_NATIVE}'/python-native/python \
+    PYTHON_SITELIB=${PYTHON_SITEPACKAGES_DIR} \
+"
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install
+}
+
+do_install_append_class-native() {
+    rm -rf ${D}/usr
+}
+
+FILES_${PN} += " \
+   ${libdir}/python${PYTHON_BASEVERSION}/* \
+   ${datadir}/* \
+"
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/system-setup-keyboard/system-setup-keyboard_0.8.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/system-setup-keyboard/system-setup-keyboard_0.8.8.bb
new file mode 100644
index 0000000..fbbfa3d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/system-setup-keyboard/system-setup-keyboard_0.8.8.bb
@@ -0,0 +1,31 @@
+SUMMARY = "xorg.conf keyboard layout callout"
+DESCRIPTION = "system-setup-keyboard is a daemon to monitor the keyboard layout configured in \
+/etc/sysconfig/keyboard and transfer this into the matching xorg.conf.d snippet."
+
+HOMEPAGE = "https://git.fedorahosted.org/git/system-setup-keyboard.git"
+SECTION = "Applications/System"
+
+SRC_URI = "https://git.fedorahosted.org/cgit/${PN}.git/snapshot/${BP}.tar.gz"
+SRC_URI[md5sum] = "399003968ccc739cddd9cc370af377a0"
+SRC_URI[sha256sum] = "1ef6ef79c3588e85d7f42e99eb80a2e459f966284cf029c2d6fc1b645abcb860"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bf57969a59612c5aca007b340c49d3a2"
+
+inherit pythonnative
+
+DEPENDS = "glib-2.0 system-config-keyboard-native"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+do_compile_prepend() {
+    ${PYTHON} -v get_layouts.py > keyboards.h
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+    install -d ${D}/etc/X11/xorg.conf.d
+    touch ${D}/etc/X11/xorg.conf.d/00-system-setup-keyboard.conf
+}
+
+FILES_${PN} += "${systemd_unitdir}/system/${BPN}.service"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb/allow-to-build-for-older-arm-cores.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb/allow-to-build-for-older-arm-cores.patch
new file mode 100644
index 0000000..cd2ec94
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb/allow-to-build-for-older-arm-cores.patch
@@ -0,0 +1,30 @@
+From: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
+Description: Allow to build TBB for ARM cores older than ARMv7a
+
+| ../../include/tbb/machine/gcc_armv7.h:39:2: error: #error Threading
+Building Blocks ARM port requires an ARMv7-a architecture.
+| make[1]: *** [concurrent_hash_map.o] Error 1
+
+https://bugs.launchpad.net/linaro-oe/+bug/1167144
+
+Upstream-status: pending
+
+---
+ include/tbb/tbb_machine.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- tbb41_20130314oss.orig/include/tbb/tbb_machine.h
++++ tbb41_20130314oss/include/tbb/tbb_machine.h
+@@ -237,11 +237,11 @@ template<> struct atomic_selector<8> {
+         #include "machine/linux_intel64.h"
+     #elif __ia64__
+         #include "machine/linux_ia64.h"
+     #elif __powerpc__
+         #include "machine/mac_ppc.h"
+-    #elif __arm__
++    #elif __ARM_ARCH_7A__
+         #include "machine/gcc_armv7.h"
+     #elif __TBB_GCC_BUILTIN_ATOMICS_PRESENT
+         #include "machine/gcc_generic.h"
+     #endif
+     #include "machine/linux_common.h"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb/cross-compile.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb/cross-compile.patch
new file mode 100644
index 0000000..b970a37
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb/cross-compile.patch
@@ -0,0 +1,25 @@
+Author: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
+
+Upstream-Status: unsuitable
+---
+ build/linux.gcc.inc |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- tbb41_20121003oss.orig/build/linux.gcc.inc
++++ tbb41_20121003oss/build/linux.gcc.inc
+@@ -40,12 +40,13 @@ DYLIB_KEY = -shared
+ EXPORT_KEY = -Wl,--version-script,
+ LIBDL = -ldl
+ 
+ TBB_NOSTRICT = 1
+ 
+-CPLUS = g++
+-CONLY = gcc
++CPLUS = $(CXX)
++CONLY = $(CC)
++CPLUS_FLAGS = $(CXXFLAGS)
+ LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
+ LIBS += -lpthread -lrt
+ LINK_FLAGS = -Wl,-rpath-link=.
+ C_FLAGS = $(CPLUS_FLAGS)
+ # gcc 4.4 and higher support -std=c++0x
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb/tbb.pc b/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb/tbb.pc
new file mode 100644
index 0000000..644b64f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb/tbb.pc
@@ -0,0 +1,11 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: Threading Building Blocks
+Description: Intel's parallelism library for C++
+URL: http://www.threadingbuildingblocks.org/
+Version: 3.0+r018
+Libs: -L${libdir} -ltbb
+Cflags: -I${includedir} 
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb_4.1.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb_4.1.bb
new file mode 100644
index 0000000..09ed6ec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/tbb/tbb_4.1.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Parallelism library for C++ - runtime files \
+    TBB is a library that helps you leverage multi-core processor \
+    performance without having to be a threading expert. It represents a \
+    higher-level, task-based parallelism that abstracts platform details \
+    and threading mechanism for performance and scalability."
+HOMEPAGE = "http://threadingbuildingblocks.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2c7f2caf277a3933e3acdf7f89d54cc1"
+PRDATE = "20130314"
+PR = "r${PRDATE}"
+
+SRC_URI = "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb41_${PRDATE}oss_src.tgz \
+           file://cross-compile.patch \
+           file://allow-to-build-for-older-arm-cores.patch \
+           file://tbb.pc"
+
+S = "${WORKDIR}/tbb41_${PRDATE}oss/"
+
+SRC_URI[md5sum] = "ed4af7ccfa122f16cf9920b241633a3a"
+SRC_URI[sha256sum] = "32fd5979971b772caa96d40646cee585ed0070516ba2dbbcb1f9b6033d08a92d"
+
+do_compile() {
+    oe_runmake compiler=gcc arch=${HOST_ARCH} runtime=cc4
+}
+
+do_install() {
+    install -d ${D}${includedir} ${D}${libdir}/pkgconfig
+    rm ${S}/include/tbb/index.html -f
+    cp -R --no-dereference --preserve=mode,links -v ${S}/include/tbb ${D}${includedir}
+    install -m 0755 ${B}/build/linux_*_release/lib*.so* ${D}${libdir}
+    install -m 0644 ${WORKDIR}/tbb.pc ${D}${libdir}/pkgconfig
+}
+
+# fails with thumb enabled:
+# | arm-oe-linux-gnueabi-g++  -march=armv7-a -mthumb -mthumb-interwork -mfloat-abi=softfp -mfpu=neon -mtune=cortex-a9 -mcpu=cortex-a9 -D__ARM__ -D__LINUX_ARM_ARCH__=7 -funwind-tables -mvectorize-with-neon-quad -rdynamic --sysroot=/OE/sysroots/m14tv -c -MMD -DTBB_USE_DEBUG  -g -O0 -DUSE_PTHREAD -fPIC -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -O2 -pipe -g -feliminate-unused-debug-types -fpermissive -fvisibility-inlines-hidden   -I../../src -I../../src/rml/include -I../../include ../../src/tbb/concurrent_queue.cpp
+# | {standard input}: Assembler messages:
+# | {standard input}:250: Error: thumb conditional instruction should be in IT block -- `strexeq r2,r3,[r4]'
+# ...
+# | make[1]: *** [concurrent_queue.o] Error 1
+ARM_INSTRUCTION_SET = "arm"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/tomoyo-tools/tomoyo-tools_2.5.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/tomoyo-tools/tomoyo-tools_2.5.0.bb
new file mode 100644
index 0000000..ac8593c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/tomoyo-tools/tomoyo-tools_2.5.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "TOMOYO Linux tools"
+DESCRIPTION = "TOMOYO Linux is a Mandatory Access Control (MAC) implementation \
+for Linux that can be used to increase the security of a system, while also \
+being useful purely as a system analysis tool."
+HOMEPAGE = "http://tomoyo.sourceforge.jp/"
+SECTION = "System Environment/Kernel"
+
+SRC_URI = "http://jaist.dl.sourceforge.jp/tomoyo/53357/${BP}-20140601.tar.gz"
+SRC_URI[md5sum] = "888869b793127f00d6439a3246598b83"
+SRC_URI[sha256sum] = "118ef6ba1fbf7c0b83018c3a0d4d5485dfb9b5b7f647f37ce9f63841a3133c2a"
+
+S = "${WORKDIR}/${BPN}"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING.tomoyo;md5=751419260aa954499f7abaabaa882bbe"
+
+FILES_${PN}     += "${libdir}/tomoyo"
+FILES_${PN}-dbg += "${libdir}/tomoyo/.debug"
+
+DEPENDS = "linux-libc-headers ncurses"
+
+EXTRA_OEMAKE = "-e USRLIBDIR=${libdir}"
+
+do_compile () {
+	oe_runmake 'CC=${CC}'
+}
+
+do_install() {
+	oe_runmake install INSTALLDIR=${D}
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb
new file mode 100644
index 0000000..24f813b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb
@@ -0,0 +1,27 @@
+SUMMARY = "A very small and simple terminal emulator"
+SECTION = "x11/applications"
+DEPENDS = "vte"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://main.c;start_line=5;end_line=16;md5=9ae4bf20caf291afa94530026bd15229"
+
+# 0.2 version
+SRCREV = "8586d617aed19fc75f5ae1e07270752c1b2f9a30"
+SRC_URI = "git://github.com/OSSystems/toscoterm.git"
+
+S = "${WORKDIR}/git"
+
+inherit gitpkgv pkgconfig
+
+do_compile() {
+    oe_runmake \
+        CC="${CC}" \
+        CFLAGS="`pkg-config --cflags vte`${CFLAGS}" \
+        LDFLAGS="`pkg-config --libs vte` ${LDFLAGS}"
+}
+
+do_install() {
+    oe_runmake PREFIX="${prefix}" DESTDIR="${D}" install
+}
+
+RDEPENDS_${PN}_append_libc-glibc += "glibc-gconv-ibm437"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/tree/tree_1.7.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/tree/tree_1.7.0.bb
new file mode 100644
index 0000000..2e8ebdb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/tree/tree_1.7.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "A recursive directory listing command"
+HOMEPAGE = "http://mama.indstate.edu/users/ice/tree/"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=393a5ca445f6965873eca0259a17f833"
+
+SRC_URI = "ftp://mama.indstate.edu/linux/${BPN}/${BP}.tgz"
+SRC_URI[md5sum] = "abe3e03e469c542d8e157cdd93f4d8a6"
+SRC_URI[sha256sum] = "6957c20e82561ac4231638996e74f4cfa4e6faabc5a2f511f0b4e3940e8f7b12"
+
+# tree's default CFLAGS for Linux
+CFLAGS += "-Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
+
+EXTRA_OEMAKE = "CC='${CC}' CFLAGS='${CFLAGS}' LDFLAGS='${LDFLAGS}'"
+
+do_configure[noexec] = "1"
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 ${S}/${BPN} ${D}${bindir}/
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-fix-build-with-newer-glibc-versions.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-fix-build-with-newer-glibc-versions.patch
new file mode 100644
index 0000000..520655a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-fix-build-with-newer-glibc-versions.patch
@@ -0,0 +1,29 @@
+From 9829152b12a8924d2e091a00133ed1a3a7ba75c0 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Fri, 29 May 2015 21:09:39 -0400
+Subject: [PATCH] fix build with newer glibc versions
+
+https://bugs.freedesktop.org/show_bug.cgi?id=90778
+
+Upstream-Status: Applied [1]
+
+[1] http://cgit.freedesktop.org/udisks/commit/?h=udisks1&id=9829152b12a8924d2e091a00133ed1a3a7ba75c0
+---
+ src/helpers/job-drive-detach.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/helpers/job-drive-detach.c b/src/helpers/job-drive-detach.c
+index eeafcab..d122a1f 100644
+--- a/src/helpers/job-drive-detach.c
++++ b/src/helpers/job-drive-detach.c
+@@ -18,6 +18,7 @@
+  *
+  */
+ 
++#include <sys/stat.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <errno.h>
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks/optional-depends.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks/optional-depends.patch
new file mode 100644
index 0000000..6131701
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks/optional-depends.patch
@@ -0,0 +1,484 @@
+From 1b70b7a798eeeec554ab5aa9fcfff96a22e91774 Mon Sep 17 00:00:00 2001
+From: Gustavo Sverzut Barbieri <barbieri@profusion.mobi>
+Date: Thu, 26 May 2011 17:30:04 -0300
+Subject: [PATCH] Allow disabling atasmart, lvm2 and devicemapper support.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=37647
+
+diff --git a/configure.ac b/configure.ac
+index 62cc35d..b664135 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -155,13 +155,33 @@ PKG_CHECK_MODULES(POLKIT_GOBJECT_1, [polkit-gobject-1 >= 0.97])
+ AC_SUBST(POLKIT_GOBJECT_1_CFLAGS)
+ AC_SUBST(POLKIT_GOBJECT_1_LIBS)
+ 
+-PKG_CHECK_MODULES(LIBPARTED, [libparted >= 1.8.8])
+-AC_SUBST(LIBPARTED_CFLAGS)
+-AC_SUBST(LIBPARTED_LIBS)
+-
+-PKG_CHECK_MODULES(DEVMAPPER, [devmapper >= 1.02])
+-AC_SUBST(DEVMAPPER_CFLAGS)
+-AC_SUBST(DEVMAPPER_LIBS)
++have_parted=no
++AC_ARG_ENABLE(parted, AS_HELP_STRING([--disable-parted], [disable disk partitioning]))
++if test "x$enable_parted" != "xno"; then
++  PKG_CHECK_MODULES(LIBPARTED, [libparted >= 1.8.8],
++                    [AC_DEFINE(USE_PARTED, 1, [Define if parted should be used]) have_parted=yes],
++                    have_parted=no)
++  AC_SUBST(LIBPARTED_CFLAGS)
++  AC_SUBST(LIBPARTED_LIBS)
++  if test "x$have_parted" = xno -a "x$enable_parted" = xyes; then
++    AC_MSG_ERROR([parted support requested but libraries not found])
++  fi
++fi
++AM_CONDITIONAL(HAVE_PARTED, [test "$have_parted" = "yes"])
++
++have_devmapper=no
++AC_ARG_ENABLE(devmapper, AS_HELP_STRING([--disable-devmapper], [disable device mapper support]))
++if test "x$enable_devmapper" != "xno"; then
++  PKG_CHECK_MODULES(DEVMAPPER, [devmapper >= 1.02],
++                    [AC_DEFINE(HAVE_DEVMAPPER, 1, [Define if device mapper is available]) have_devmapper=yes],
++                    have_devmapper=no)
++  AC_SUBST(DEVMAPPER_CFLAGS)
++  AC_SUBST(DEVMAPPER_LIBS)
++  if test "x$have_devmapper" = xno -a "x$enable_devmapper" = xyes; then
++    AC_MSG_ERROR([devmapper support requested but libraries not found])
++  fi
++fi
++AM_CONDITIONAL(HAVE_DEVMAPPER, [test "$have_devmapper" = "yes"])
+ 
+ have_lvm2=no
+ AC_ARG_ENABLE(lvm2, AS_HELP_STRING([--disable-lvm2], [disable LVM2 support]))
+@@ -185,9 +205,19 @@ if test "x$enable_dmmp" != "xno"; then
+ fi
+ AM_CONDITIONAL(HAVE_DMMP, [test "$have_dmmp" = "yes"])
+ 
+-PKG_CHECK_MODULES(LIBATASMART, [libatasmart >= 0.14])
+-AC_SUBST(LIBATASMART_CFLAGS)
+-AC_SUBST(LIBATASMART_LIBS)
++have_libatasmart=no
++AC_ARG_ENABLE(libatasmart, AS_HELP_STRING([--disable-libatasmart], [disable libatasmart support]))
++if test "x$enable_libatasmart" != "xno"; then
++  PKG_CHECK_MODULES(LIBATASMART, [libatasmart >= 0.14],
++                    [AC_DEFINE(HAVE_LIBATASMART, 1, [Define if libatasmart is available]) have_libatasmart=yes],
++                    have_libatasmart=no)
++  AC_SUBST(LIBATASMART_CFLAGS)
++  AC_SUBST(LIBATASMART_LIBS)
++  if test "x$have_libatasmart" = xno -a "x$enable_libatasmart" = xyes; then
++    AC_MSG_ERROR([libatasmart support requested but libraries not found])
++  fi
++fi
++AM_CONDITIONAL(HAVE_LIBATASMART, [test "$have_libatasmart" = "yes"])
+ 
+ PKG_CHECK_MODULES(LIBUDEV, [libudev >= 143])
+ AC_SUBST(LIBUDEV_CFLAGS)
+@@ -267,9 +297,12 @@ echo "
+         cppflags:                   ${CPPFLAGS}
+         xsltproc:                   ${XSLTPROC}
+ 
++        Parted support:             ${have_parted}
++        Device Mapper support:      ${have_devmapper}
+         LVM2 support:               ${have_lvm2}
+         dm-multipath:               ${have_dmmp}
+         Remote Access:              ${remote_access}
++        libatasmart support:        ${have_libatasmart}
+ 
+         Maintainer mode:            ${USE_MAINTAINER_MODE}
+         Profiling:                  ${enable_profiling}
+diff --git a/src/adapter-private.h b/src/adapter-private.h
+index 3409e21..ef584e3 100644
+--- a/src/adapter-private.h
++++ b/src/adapter-private.h
+@@ -23,7 +23,6 @@
+ 
+ #include <dbus/dbus-glib.h>
+ #include <gudev/gudev.h>
+-#include <atasmart.h>
+ 
+ #include "types.h"
+ 
+diff --git a/src/adapter.c b/src/adapter.c
+index b85a0ef..802420b 100644
+--- a/src/adapter.c
++++ b/src/adapter.c
+@@ -30,7 +30,6 @@
+ #include <dbus/dbus-glib.h>
+ #include <dbus/dbus-glib-lowlevel.h>
+ #include <gudev/gudev.h>
+-#include <atasmart.h>
+ 
+ #include "daemon.h"
+ #include "adapter.h"
+diff --git a/src/daemon.c b/src/daemon.c
+index 6072502..d043cb0 100644
+--- a/src/daemon.c
++++ b/src/daemon.c
+@@ -1745,6 +1745,7 @@ mdstat_changed_event (GIOChannel *channel,
+   return TRUE;
+ }
+ 
++#ifdef HAVE_LIBATASMART
+ static gboolean
+ refresh_ata_smart_data (Daemon *daemon)
+ {
+@@ -1773,6 +1774,7 @@ refresh_ata_smart_data (Daemon *daemon)
+ 
+   return FALSE;
+ }
++#endif
+ 
+ static gboolean
+ register_disks_daemon (Daemon *daemon)
+@@ -1984,12 +1986,14 @@ daemon_new (void)
+   mount_file_clean_stale (l);
+   g_list_free (l);
+ 
++#ifdef HAVE_LIBATASMART
+   /* set up timer for refreshing ATA SMART data - we don't want to refresh immediately because
+    * when adding a device we also do this...
+    */
+   daemon->priv->ata_smart_refresh_timer_id = g_timeout_add_seconds (ATA_SMART_REFRESH_INTERVAL_SECONDS,
+                                                                     (GSourceFunc) refresh_ata_smart_data,
+                                                                     daemon);
++#endif
+ 
+   PROFILE ("daemon_new(): end");
+   return daemon;
+diff --git a/src/device-private.c b/src/device-private.c
+index 22a0d35..fb96525 100644
+--- a/src/device-private.c
++++ b/src/device-private.c
+@@ -1378,7 +1378,7 @@ device_set_drive_ata_smart_time_collected (Device *device,
+ 
+ void
+ device_set_drive_ata_smart_status (Device *device,
+-                                   SkSmartOverall value)
++                                   guint value)
+ {
+   if (G_UNLIKELY (device->priv->drive_ata_smart_status != value))
+     {
+diff --git a/src/device-private.h b/src/device-private.h
+index a6db7f2..71473a6 100644
+--- a/src/device-private.h
++++ b/src/device-private.h
+@@ -23,7 +23,6 @@
+ 
+ #include <dbus/dbus-glib.h>
+ #include <gudev/gudev.h>
+-#include <atasmart.h>
+ 
+ #include "types.h"
+ 
+@@ -224,7 +223,7 @@ struct DevicePrivate
+ 
+   gboolean drive_ata_smart_is_available;
+   guint64 drive_ata_smart_time_collected;
+-  SkSmartOverall drive_ata_smart_status;
++  guint drive_ata_smart_status;
+   void *drive_ata_smart_blob;
+   gsize drive_ata_smart_blob_size;
+ 
+@@ -391,7 +390,7 @@ void device_set_holders_objpath (Device *device, GStrv value);
+ 
+ void device_set_drive_ata_smart_is_available (Device *device, gboolean value);
+ void device_set_drive_ata_smart_time_collected (Device *device, guint64 value);
+-void device_set_drive_ata_smart_status (Device *device, SkSmartOverall value);
++void device_set_drive_ata_smart_status (Device *device, guint value);
+ void device_set_drive_ata_smart_blob_steal (Device *device, gchar *blob, gsize blob_size);
+ 
+ G_END_DECLS
+diff --git a/src/device.c b/src/device.c
+index 6a34940..7a5a4a9 100644
+--- a/src/device.c
++++ b/src/device.c
+@@ -50,7 +50,9 @@
+ #include <dbus/dbus-glib.h>
+ #include <dbus/dbus-glib-lowlevel.h>
+ #include <gudev/gudev.h>
++#ifdef HAVE_LIBATASMART
+ #include <atasmart.h>
++#endif
+ 
+ #include "daemon.h"
+ #include "device.h"
+@@ -659,10 +661,14 @@ get_property (GObject *object,
+     case PROP_DRIVE_ATA_SMART_STATUS:
+       {
+         const gchar *status;
+-        if (device->priv->drive_ata_smart_status == (SkSmartOverall) - 1)
++#ifdef HAVE_LIBATASMART
++        if (device->priv->drive_ata_smart_status == (guint) - 1)
+           status = "";
+         else
+           status = sk_smart_overall_to_string (device->priv->drive_ata_smart_status);
++#else
++        status = "";
++#endif
+         g_value_set_string (value, status);
+       }
+       break;
+@@ -5114,6 +5120,7 @@ device_new (Daemon *daemon,
+       goto out;
+     }
+ 
++#ifdef HAVE_LIBATASMART
+   /* if just added, update the smart data if applicable */
+   if (device->priv->drive_ata_smart_is_available)
+     {
+@@ -5121,6 +5128,7 @@ device_new (Daemon *daemon,
+       gchar *ata_smart_refresh_data_options[] = { NULL };
+       device_drive_ata_smart_refresh_data (device, ata_smart_refresh_data_options, NULL);
+     }
++#endif
+ 
+   PROFILE ("device_new(native_path=%s): end", native_path);
+  out:
+@@ -9794,16 +9802,18 @@ drive_ata_smart_refresh_data_completed_cb (DBusGMethodInvocation *context,
+                                            const char *stdout,
+                                            gpointer user_data)
+ {
++#ifdef HAVE_LIBATASMART
+   gint rc;
+-  SkDisk *d;
++  SkDisk *d = NULL;
++  SkSmartOverall overall;
+   gchar *blob;
+   gsize blob_size;
+   time_t time_collected;
+-  SkSmartOverall overall;
++#endif
+ 
+   PROFILE ("drive_ata_smart_refresh_data_completed_cb(device=%s) start", device->priv->native_path);
+ 
+-  d = NULL;
++#ifdef HAVE_LIBATASMART
+   blob = NULL;
+ 
+   if (job_was_cancelled || stdout == NULL)
+@@ -9907,6 +9917,11 @@ drive_ata_smart_refresh_data_completed_cb (DBusGMethodInvocation *context,
+   g_free (blob);
+   if (d != NULL)
+     sk_disk_free (d);
++
++#else
++  throw_error (context, ERROR_FAILED, "libatasmart support disabled");
++#endif
++
+   PROFILE ("drive_ata_smart_refresh_data_completed_cb(device=%s) end", device->priv->native_path);
+ }
+ 
+diff --git a/src/expander-private.h b/src/expander-private.h
+index ef4f440..98a8300 100644
+--- a/src/expander-private.h
++++ b/src/expander-private.h
+@@ -23,7 +23,6 @@
+ 
+ #include <dbus/dbus-glib.h>
+ #include <gudev/gudev.h>
+-#include <atasmart.h>
+ 
+ #include "types.h"
+ 
+diff --git a/src/expander.c b/src/expander.c
+index 734ec0a..e799f13 100644
+--- a/src/expander.c
++++ b/src/expander.c
+@@ -34,7 +34,6 @@
+ #include <dbus/dbus-glib.h>
+ #include <dbus/dbus-glib-lowlevel.h>
+ #include <gudev/gudev.h>
+-#include <atasmart.h>
+ #include <stdlib.h>
+ 
+ #include "daemon.h"
+diff --git a/src/helpers/Makefile.am b/src/helpers/Makefile.am
+index 4b863c0..d3ec4e9 100644
+--- a/src/helpers/Makefile.am
++++ b/src/helpers/Makefile.am
+@@ -19,15 +19,9 @@ INCLUDES = \
+ 
+ libexec_PROGRAMS = 					\
+ 	udisks-helper-mkfs                    		\
+-	udisks-helper-delete-partition        		\
+-	udisks-helper-create-partition        		\
+-	udisks-helper-modify-partition        		\
+-	udisks-helper-create-partition-table		\
+ 	udisks-helper-change-filesystem-label 		\
+ 	udisks-helper-linux-md-remove-component		\
+ 	udisks-helper-fstab-mounter			\
+-	udisks-helper-ata-smart-collect			\
+-	udisks-helper-ata-smart-selftest		\
+ 	udisks-helper-drive-detach			\
+ 	udisks-helper-drive-poll			\
+ 	udisks-helper-linux-md-check			\
+@@ -48,6 +42,13 @@ udisks_helper_mkfs_SOURCES = job-shared.h job-mkfs.c
+ udisks_helper_mkfs_CPPFLAGS = $(AM_CPPFLAGS)
+ udisks_helper_mkfs_LDADD = $(GLIB_LIBS)
+ 
++if HAVE_PARTED
++libexec_PROGRAMS +=                                     \
++	udisks-helper-delete-partition        		\
++	udisks-helper-create-partition        		\
++	udisks-helper-modify-partition        		\
++	udisks-helper-create-partition-table
++
+ udisks_helper_delete_partition_SOURCES = job-shared.h job-delete-partition.c
+ udisks_helper_delete_partition_CPPFLAGS = $(AM_CPPFLAGS)
+ udisks_helper_delete_partition_LDADD = $(GLIB_LIBS) libpartutil.la
+@@ -63,11 +64,17 @@ udisks_helper_modify_partition_LDADD = $(GLIB_LIBS) libpartutil.la
+ udisks_helper_create_partition_table_SOURCES = job-shared.h job-create-partition-table.c
+ udisks_helper_create_partition_table_CPPFLAGS = $(AM_CPPFLAGS)
+ udisks_helper_create_partition_table_LDADD = $(GLIB_LIBS) libpartutil.la
++endif
+ 
+ udisks_helper_change_filesystem_label_SOURCES = job-shared.h job-change-filesystem-label.c
+ udisks_helper_change_filesystem_label_CPPFLAGS = $(AM_CPPFLAGS)
+ udisks_helper_change_filesystem_label_LDADD = $(GLIB_LIBS)
+ 
++if HAVE_LIBATASMART
++libexec_PROGRAMS +=                                     \
++	udisks-helper-ata-smart-collect			\
++	udisks-helper-ata-smart-selftest
++
+ udisks_helper_ata_smart_selftest_SOURCES = job-shared.h job-ata-smart-selftest.c
+ udisks_helper_ata_smart_selftest_CPPFLAGS = $(AM_CPPFLAGS) $(LIBATASMART_CFLAGS) $(GLIB_CFLAGS)
+ udisks_helper_ata_smart_selftest_LDADD = $(LIBATASMART_LIBS) $(GLIB_LIBS)
+@@ -75,6 +82,7 @@ udisks_helper_ata_smart_selftest_LDADD = $(LIBATASMART_LIBS) $(GLIB_LIBS)
+ udisks_helper_ata_smart_collect_SOURCES = job-ata-smart-collect.c
+ udisks_helper_ata_smart_collect_CPPFLAGS = $(AM_CPPFLAGS) $(LIBATASMART_CFLAGS) $(GLIB_CFLAGS)
+ udisks_helper_ata_smart_collect_LDADD = $(LIBATASMART_LIBS) $(GLIB_LIBS)
++endif
+ 
+ udisks_helper_linux_md_remove_component_SOURCES = job-shared.h job-linux-md-remove-component.c
+ udisks_helper_linux_md_remove_component_CPPFLAGS = $(AM_CPPFLAGS)
+diff --git a/src/helpers/partutil.c b/src/helpers/partutil.c
+index 72a8fe3..8893a39 100644
+--- a/src/helpers/partutil.c
++++ b/src/helpers/partutil.c
+@@ -62,7 +62,6 @@ DEBUG (const gchar *format,
+ #  include <config.h>
+ #endif
+ 
+-#define USE_PARTED
+ #ifdef USE_PARTED
+ #include <parted/parted.h>
+ #endif
+@@ -928,6 +927,7 @@ part_table_parse_apple (int fd,
+   return p;
+ }
+ 
++#ifdef USE_PARTED
+ static PartitionTable *
+ part_table_load_from_disk_from_file (char *device_file)
+ {
+@@ -948,6 +948,7 @@ part_table_load_from_disk_from_file (char *device_file)
+  out:
+   return ret;
+ }
++#endif
+ 
+ PartitionTable *
+ part_table_load_from_disk (int fd)
+diff --git a/src/port-private.h b/src/port-private.h
+index cc48376..a91532f 100644
+--- a/src/port-private.h
++++ b/src/port-private.h
+@@ -23,7 +23,6 @@
+ 
+ #include <dbus/dbus-glib.h>
+ #include <gudev/gudev.h>
+-#include <atasmart.h>
+ 
+ #include "types.h"
+ 
+diff --git a/src/probers/Makefile.am b/src/probers/Makefile.am
+index 06bb566..01c693b 100644
+--- a/src/probers/Makefile.am
++++ b/src/probers/Makefile.am
+@@ -22,8 +22,6 @@ INCLUDES = \
+ 
+ udevhelperdir = $(slashlibdir)/udev
+ udevhelper_PROGRAMS =	udisks-part-id 			\
+-			udisks-dm-export 		\
+-		      	udisks-probe-ata-smart 		\
+ 			udisks-probe-sas-expander 	\
+ 			$(NULL)
+ 
+@@ -35,17 +33,23 @@ udisks_part_id_SOURCES = part-id.c
+ udisks_part_id_CPPFLAGS = $(AM_CPPFLAGS) $(LIBUDEV_CFLAGS)
+ udisks_part_id_LDADD = $(GLIB_LIBS) $(LIBUDEV_LIBS) $(top_builddir)/src/helpers/libpartutil.la
+ 
++if HAVE_DEVMAPPER
++udevhelper_PROGRAMS += udisks-dm-export
+ udisks_dm_export_SOURCES = udisks-dm-export.c
+ udisks_dm_export_CPPFLAGS = $(AM_CPPFLAGS) $(DEVMAPPER_CFLAGS) $(GLIB_CFLAGS)
+ udisks_dm_export_LDADD = $(DEVMAPPER_LIBS) $(GLIB_LIBS)
++endif
+ 
+ udisks_lvm_pv_export_SOURCES = udisks-lvm-pv-export.c
+ udisks_lvm_pv_export_CPPFLAGS = $(AM_CPPFLAGS) $(DEVMAPPER_CFLAGS) $(LVM2_CFLAGS) $(GLIB_CFLAGS)
+ udisks_lvm_pv_export_LDADD = $(DEVMAPPER_LIBS) $(LVM2_LIBS) $(GLIB_LIBS)
+ 
++if HAVE_LIBATASMART
++udevhelper_PROGRAMS += udisks-probe-ata-smart
+ udisks_probe_ata_smart_SOURCES = udisks-probe-ata-smart.c
+ udisks_probe_ata_smart_CPPFLAGS = $(AM_CPPFLAGS) $(LIBATASMART_CFLAGS)
+ udisks_probe_ata_smart_LDADD = $(LIBATASMART_LIBS)
++endif
+ 
+ udisks_probe_sas_expander_SOURCES = udisks-probe-sas-expander.c
+ udisks_probe_sas_expander_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
+diff --git a/tools/udisks.c b/tools/udisks.c
+index 6fbd6a6..e0c4fbb 100644
+--- a/tools/udisks.c
++++ b/tools/udisks.c
+@@ -43,7 +43,9 @@
+ #include <dbus/dbus-glib.h>
+ #include <dbus/dbus-glib-lowlevel.h>
+ 
++#ifdef HAVE_LIBATASMART
+ #include <atasmart.h>
++#endif
+ 
+ #include "udisks-daemon-glue.h"
+ #include "udisks-device-glue.h"
+@@ -979,6 +981,7 @@ end_highlight (void)
+     g_print ("\x1B[0m");
+ }
+ 
++#ifdef HAVE_LIBATASMART
+ static const gchar *
+ ata_smart_status_to_desc (const gchar *status,
+                           gboolean *out_highlight)
+@@ -1159,6 +1162,7 @@ print_ata_smart_attr (SkDisk *d,
+   g_free (threshold_str);
+   g_free (pretty);
+ }
++#endif
+ 
+ static void
+ do_show_info (const char *object_path)
+@@ -1440,7 +1444,7 @@ do_show_info (const char *object_path)
+         g_print ("    if speed:                  %" G_GINT64_FORMAT " bits/s\n", props->drive_connection_speed);
+ 
+       /* ------------------------------------------------------------------------------------------------- */
+-
++#ifdef HAVE_LIBATASMART
+       if (!props->drive_ata_smart_is_available)
+         {
+           g_print ("    ATA SMART:                 not available\n");
+@@ -1493,7 +1497,9 @@ do_show_info (const char *object_path)
+             }
+ 
+         }
+-
++#else
++          g_print ("    ATA SMART:                 not supported\n");
++#endif
+       /* ------------------------------------------------------------------------------------------------- */
+ 
+     }
+-- 
+1.7.5.rc3
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks/udisks-1.0.5-fix-service-file.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks/udisks-1.0.5-fix-service-file.patch
new file mode 100644
index 0000000..d5e84d3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks/udisks-1.0.5-fix-service-file.patch
@@ -0,0 +1,33 @@
+From 7d61ad048856ee239870b917d6933e3ad63f0789 Mon Sep 17 00:00:00 2001
+From: David King <amigadave@amigadave.com>
+Date: Thu, 2 Jul 2015 13:49:22 +0100
+Subject: [PATCH] Fix systemd service file
+
+udisks-daemon is installed to $(libexecdir), not $(prefix)/lib/udisks.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1238664
+https://bugs.freedesktop.org/show_bug.cgi?id=91191
+
+Taken-From: [1]
+[1] http://pkgs.fedoraproject.org/cgit/udisks.git/tree/udisks-1.0.5-fix-service-file.patch
+
+Upstream-Status: Pending
+---
+ data/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/data/Makefile.am b/data/Makefile.am
+index 411ea0f..08af5f4 100644
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -31,7 +31,7 @@ systemdservicedir       = $(systemdsystemunitdir)
+ systemdservice_DATA     = $(systemdservice_in_files:.service.in=.service)
+ 
+ $(systemdservice_DATA): $(systemdservice_in_files) Makefile
+-	@sed -e "s|\@libexecdir\@|$(prefix)/lib/udisks|" $< > $@
++	@sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
+ endif
+ 
+ udevrulesdir = $(slashlibdir)/udev/rules.d
+-- 
+2.4.5
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.1.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.1.5.bb
new file mode 100644
index 0000000..f365cfa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.1.5.bb
@@ -0,0 +1,35 @@
+SUMMARY = "udisks provides dbus interfaces for disks and storage devices"
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dd79f6dbbffdbc8e86b086a8f0c0ef43"
+
+DEPENDS = "acl libatasmart polkit libgudev dbus-glib glib-2.0 intltool-native gnome-common-native"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+
+RDEPENDS_${PN} = "acl"
+
+SRC_URI = "http://udisks.freedesktop.org/releases/udisks-${PV}.tar.bz2"
+SRC_URI[md5sum] = "73632501002e6de8244f831e38b2b98e"
+SRC_URI[sha256sum] = "2cfcf560447ea44cba2a683342c7062aaaf35e4eb554bed64ac2dd55a70a5fb6"
+
+inherit autotools systemd gtk-doc gobject-introspection
+
+S = "${WORKDIR}/udisks-${PV}"
+
+EXTRA_OECONF = "--disable-man"
+
+FILES_${PN} += "${libdir}/polkit-1/extensions/*.so \
+                ${datadir}/dbus-1/ \
+                ${datadir}/polkit-1 \
+                ${nonarch_base_libdir}/udev/* \
+                ${exec_prefix}${nonarch_base_libdir}/udisks2/* \
+"
+
+PACKAGES =+ "${PN}-libs"
+
+FILES_${PN} += "${datadir}/bash-completion"
+FILES_${PN}-libs = "${libdir}/lib*${SOLIBS}"
+
+FILES_${PN}-dbg += "${exec_prefix}${nonarch_base_libdir}/udisks2/.debug"
+
+SYSTEMD_SERVICE_${PN} = "${BPN}.service"
+SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb
new file mode 100644
index 0000000..eec6933
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "A storage daemon that implements well-defined D-Bus interfaces that can be used to query and manipulate storage devices."
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=73d83aebe7e4b62346afde80e0e94273"
+
+DEPENDS = "libatasmart sg3-utils polkit libgudev dbus-glib glib-2.0 intltool-native lvm2"
+# optional dependencies: device-mapper parted
+
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+
+SRC_URI = " \
+    http://hal.freedesktop.org/releases/${BPN}-${PV}.tar.gz;name=${BPN} \
+    file://optional-depends.patch \
+    file://0001-fix-build-with-newer-glibc-versions.patch \
+    file://udisks-1.0.5-fix-service-file.patch \
+"
+
+SRC_URI[udisks.md5sum] = "70d48dcfe523a74cd7c7fbbc2847fcdd"
+SRC_URI[udisks.sha256sum] = "f2ec82eb0ea7e01dc299b5b29b3c18cdf861236ec43dcff66b3552b4b31c6f71"
+
+inherit autotools-brokensep systemd gtk-doc
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[parted] = "--enable-parted,--disable-parted,parted"
+
+EXTRA_OECONF = "--disable-man-pages"
+
+FILES_${PN} += "${libdir}/polkit-1/extensions/*.so \
+                ${datadir}/dbus-1/ \
+                ${datadir}/polkit-1 \
+                ${nonarch_base_libdir}/udev/* \
+"
+
+FILES_${PN}-dbg += "${nonarch_base_libdir}/udev/.debug"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "udisks.service"
+SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-fix-bug-for-cross-compile.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-fix-bug-for-cross-compile.patch
new file mode 100644
index 0000000..df82b07
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-fix-bug-for-cross-compile.patch
@@ -0,0 +1,28 @@
+From 2918196ba782dfa4401bdca917ad4de1910505e0 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Fri, 21 Aug 2015 15:58:42 +0900
+Subject: [PATCH] fix bug for cross compile
+
+Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 9be879c..9249bfd 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1208,8 +1208,8 @@ AC_HELP_STRING([--with-libedit[=DIR], Enable libedit support
+ if test "x$use_libedit" != "xno"; then
+     saved_CPPFLAGS=$CPPFLAGS
+     saved_LDFLAGS=$LDFLAGS
+-    CPPFLAGS="${CPPFLAGS} -I$libedit_path/include"
+-    LDFLAGS="${LDFLAGS} -L$libedit_path/lib"
++    CPPFLAGS="${CPPFLAGS} "
++    LDFLAGS="${LDFLAGS} "
+     AC_CHECK_LIB(curses, tgetent, LIBEDIT_LIBS="-lcurses",
+         [AC_CHECK_LIB(ncurses, tgetent, LIBEDIT_LIBS="-lncurses",
+             AC_MSG_WARN("libedit needs libcurses or libncurses. disabled...")
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/uim/uim/uim-module-manager.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/uim/uim/uim-module-manager.patch
new file mode 100644
index 0000000..8569bf3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/uim/uim/uim-module-manager.patch
@@ -0,0 +1,11 @@
+--- uim-1.1.0/scm/Makefile.am~	2006-06-09 10:46:12.000000000 +0900
++++ uim-1.1.0/scm/Makefile.am	2006-06-19 23:00:15.620000000 +0900
+@@ -58,7 +58,7 @@
+   module_names += "scim"
+ endif
+ 
+-UIM_MODULE_MANAGER = $(top_builddir)/uim/uim-module-manager
++UIM_MODULE_MANAGER = uim-module-manager
+ UIM_MODULE_MANAGER_ENV = \
+         LIBUIM_SCM_FILES=$(abs_srcdir) \
+         LIBUIM_PLUGIN_LIB_DIR=$(abs_top_builddir)/uim/.libs
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.6.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.6.bb
new file mode 100644
index 0000000..42788e4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.6.bb
@@ -0,0 +1,152 @@
+DESCRIPTION = "A multilingual user input method library"
+HOMEPAGE = "http://uim.freedesktop.org/"
+LICENSE = "BSD-3-Clause & LGPLv2+"
+SECTION = "inputmethods"
+
+SRC_URI = "http://uim.googlecode.com/files/uim-${PV}.tar.bz2 \
+          "
+
+SRC_URI_append_class-target = "file://uim-module-manager.patch \
+                               file://0001-fix-bug-for-cross-compile.patch"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=32463fd29aa303fb2360faeeae17256b"
+SRC_URI[md5sum] = "ecea4c597bab1fd4ba98ea84edcece59"
+SRC_URI[sha256sum] = "7b1ea803c73f3478917166f04f67cce6e45ad7ea5ab6df99b948c17eb1cb235f"
+
+DEPENDS = "anthy fontconfig libxft libxt glib-2.0 ncurses intltool"
+DEPENDS_class-target += "gtk+ gtk+3 uim-native takao-fonts"
+
+RDEPENDS_uim = "libuim0 libedit"
+RDEPENDS_uim-anthy = "takao-fonts anthy libanthy0"
+
+LEAD_SONAME = "libuim.so.1"
+
+inherit autotools pkgconfig gettext
+
+EXTRA_OECONF += "--disable-emacs \
+                 --without-scim \
+                 --without-m17nlib \
+                 --without-prime \
+                 --without-canna \
+                 --without-mana \
+                 --without-eb"
+
+CONFIGUREOPTS_remove_class-target = "--disable-silent-rules"
+
+#Because m4 file's find maxdepth=2, so copy the m4 files of the deep depth.
+do_configure_prepend () {
+    cp ${S}/sigscheme/m4/* ${S}/m4/
+}
+
+do_install_append() {
+    rm -rf ${D}/${datadir}/applications
+}
+
+PACKAGES += "uim-xim uim-utils uim-skk uim-gtk2.0 uim-gtk3 uim-fep uim-common uim-anthy libuim0 libuim-dev"
+
+FILES_${PN} = "${bindir}/uim-help \
+               ${libdir}/uim/plugin/libuim-* \
+               ${libdir}/libuim-scm* \
+               ${libdir}/libgcroots* \
+               ${libdir}/uim/plugin/libuim-*"
+
+FILES_libuim0 = "${libdir}/uim/plugin/libuim-custom-enabler.* \
+                 ${libdir}/libuim-custom.so.* \
+                 ${datadir}/locale/ja/LC_MESSAGES/uim.mo \
+                 ${datadir}/locale/fr/LC_MESSAGES/uim.mo \
+                 ${datadir}/locale/ko/LC_MESSAGES/uim.mo \
+                 ${libdir}/libuim.so.*"
+
+FILES_libuim-dev = "${libdir}/libuim*.a \
+                    ${libdir}/libuim*.la \
+                    ${libdir}/libuim*.so \
+                    ${includedir}/uim \
+                    ${libdir}/pkgconfig/uim.pc"
+
+FILES_uim-anthy = "${libdir}/uim/plugin/libuim-anthy.* \
+                   ${datadir}/uim/anthy*.scm"
+
+FILES_${PN}-dbg += "${libdir}/*/*/*/.debug ${libdir}/*/*/.debug"
+FILES_${PN}-dev += "${libdir}/uim/plugin/*.la"
+
+FILES_uim-utils = "${bindir}/uim-sh \
+                   ${bindir}/uim-module-manager \
+		   ${libexecdir}/uim-helper-server"
+
+FILES_uim-xim = "${bindir}/uim-xim \
+                 ${libexecdir}/uim-candwin-*gtk \
+                 ${libexecdir}/uim-candwin-*gtk3 \
+                 ${datadir}/man/man1/uim-xim.1 \
+                 ${sysconfdir}/X11/xinit/xinput.d/uim*"
+
+FILES_uim-common = "${datadir}/uim/pixmaps/*.png \
+                    ${datadir}/uim"
+
+FILES_uim-fep = "${bindir}/uim-fep*"
+
+FILES_uim-gtk2.0 = "${libdir}/gtk-2.0 \
+                    ${bindir}/uim-toolbar-gtk \
+                    ${bindir}/uim-toolbar-gtk-systray \
+                    ${bindir}/uim-*-gtk \
+                    ${bindir}/uim-input-pad-ja \
+                    ${libdir}/uim/uim-*-gtk"
+
+FILES_uim-gtk3 = "${libdir}/gtk-3.0 \
+                   ${bindir}/uim-toolbar-gtk3 \
+                   ${bindir}/uim-toolbar-gtk3-systray \
+                   ${bindir}/uim-*-gtk3 \
+                   ${libdir}/uim/uim-*-gtk3"
+
+FILES_uim-skk = "${libdir}/uim/plugin/libuim-skk.* \
+                 ${datadir}/uim/skk*.scm"
+
+pkg_postinst_uim-anthy() {
+    if [ -f /usr/bin/uim-module-manager ]; then
+        /usr/bin/uim-module-manager --register anthy --path /etc/uim
+    fi
+}
+
+pkg_postrm_uim-anthy() {
+    if [ -f /usr/bin/uim-module-manager ]; then
+        /usr/bin/uim-module-manager --path /etc/uim --unregister anthy
+    fi
+}
+
+pkg_prerm_uim-anthy() {
+    if [ -f /usr/bin/uim-module-manager ]; then
+        /usr/bin/uim-module-manager --register anthy --path /etc/uim
+    fi
+}
+
+pkg_postinst_uim-gtk2.0() {
+    gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
+}
+
+pkg_postinst_uim-skk() {
+    if [ -f /usr/bin/uim-module-manager ]; then
+        /usr/bin/uim-module-manager --register skk --path /etc/uim
+    fi
+}
+
+pkg_postrm_uim-skk() {
+    if [ -f /usr/bin/uim-module-manager ]; then
+        /usr/bin/uim-module-manager --path /etc/uim --unregister skk
+    fi
+}
+
+pkg_postinst_uim-common() {
+    if [ -f /usr/bin/uim-module-manager ]; then
+        /usr/bin/uim-module-manager --path /etc/uim --register \
+                                    tutcode tcode hangul viqr \
+                                    ipa-x-sampa latin byeoru
+    fi
+}
+
+pkg_prerm_uim-common() {
+    if [ -f /usr/bin/uim-module-manager ]; then
+        /usr/bin/uim-module-manager --path /etc/uim --register \
+        tutcode tcode hangul viqr ipa-x-sampa latin byeoru
+    fi
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/upower/upower_0.9.14.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/upower/upower_0.9.14.bb
new file mode 100644
index 0000000..d2c5943
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/upower/upower_0.9.14.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "UPower is an abstraction for enumerating power devices, listening to device events and querying history and statistics. "
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0de8fbf1d97a140d1d93b9f14dcfbf08"
+
+PR = "r2"
+
+DEPENDS = "intltool-native libusb1 libgudev glib-2.0 dbus-glib polkit"
+
+SRC_URI = "http://upower.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "18803f82102d56aac90949d1e4251645"
+SRC_URI[sha256sum] = "81eb44c0453b264a737d32f763a31d5b1776f050a47d5be85fc5e9caf874a4c5"
+
+inherit autotools pkgconfig gettext gobject-introspection
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[idevice] = "--with-idevice,--without-idevice,libimobiledevice libplist"
+
+EXTRA_OECONF = " --with-backend=linux"
+
+do_configure_prepend() {
+    sed -i -e s:-nonet:\:g ${S}/doc/man/Makefile.am
+    sed -i -e 's: doc : :g' ${S}/Makefile.am
+}    
+
+
+RRECOMMENDS_${PN} += "pm-utils"
+FILES_${PN} += "${datadir}/dbus-1/ \
+                ${datadir}/polkit-1/ \
+                ${base_libdir}/udev/* \
+"
+
+FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
+
+
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20140529.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20140529.bb
new file mode 100644
index 0000000..a265411
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20140529.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Data files for usbmodeswitch"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit allarch
+
+SRC_URI = "http://www.draisberghof.de/usb_modeswitch/${BP}.tar.bz2"
+SRC_URI[md5sum] = "dff94177781298aaf0b3c2a3c3dea6b2"
+SRC_URI[sha256sum] = "53889157937109e04dafe897c098ec94f3f44f9c0c83fc6ec8417aa9a587e536"
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+}
+
+RDEPENDS_${PN} = "usb-modeswitch (>= 2.2.0)"
+FILES_${PN} += "${base_libdir}/udev/rules.d/ \
+                ${datadir}/usb_modeswitch"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.2.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.2.0.bb
new file mode 100644
index 0000000..52a2f56
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.2.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "A mode switching tool for controlling 'flip flop' (multiple device) USB gear"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "libusb1"
+
+SRC_URI = "http://www.draisberghof.de/usb_modeswitch/${BP}.tar.bz2"
+SRC_URI[md5sum] = "f323fe700edd6ea404c40934ddf32b22"
+SRC_URI[sha256sum] = "2752103de171ed5f6c8d6a6e3e73e16c9ee3e8e394dd39c5991f7680eb908a3a"
+
+EXTRA_OEMAKE = "TCL=${bindir}/tclsh"
+
+FILES_${PN} = "${bindir} ${sysconfdir} ${nonarch_base_libdir}/udev/usb_modeswitch ${sbindir} ${localstatedir}/lib/usb_modeswitch"
+RDEPENDS_${PN} = "tcl"
+RRECOMMENDS_${PN} = "usb-modeswitch-data"
+
+do_install() {
+	oe_runmake DESTDIR=${D} install
+}
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath/configure.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath/configure.patch
new file mode 100644
index 0000000..271e6a5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath/configure.patch
@@ -0,0 +1,11 @@
+Index: usbpath/configure.ac
+===================================================================
+--- usbpath.orig/configure.ac	2014-07-17 20:40:26.000000000 +0000
++++ usbpath/configure.ac	2014-07-18 07:01:40.933474420 +0000
+@@ -1,5 +1,5 @@
+ AC_INIT([usbpath],[0.1])
+-AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
++AM_INIT_AUTOMAKE([foreign])
+ 
+ AC_PROG_CC
+ AC_PROG_RANLIB
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath_svn.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath_svn.bb
new file mode 100644
index 0000000..6c9cd04
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath_svn.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Convert the physical locations of a USB device to/from its number"
+AUTHOR = "Werner Almesberger <werner@openmoko.org>"
+SECTION = "console/utils"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://usbpath.c;endline=20;md5=0aa8c7d2af9110c78a99fbf9a504dc3f"
+DEPENDS = "virtual/libusb0"
+DEPENDS_class-native = "virtual/libusb0-native"
+
+BBCLASSEXTEND = "native"
+
+SRCREV = "3172"
+PV = "0.0+svnr${SRCPV}"
+
+SRC_URI = "svn://svn.openmoko.org/trunk/src/host;module=usbpath;protocol=http \
+           file://configure.patch"
+
+S = "${WORKDIR}/usbpath"
+
+inherit autotools pkgconfig
+
+RDEPENDS_${PN} += "perl"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/uthash/uthash_1.9.7.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/uthash/uthash_1.9.7.bb
new file mode 100644
index 0000000..82a9f2a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/uthash/uthash_1.9.7.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Hash table for C structures"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=564f9c44927f6247dc810bf557e2b240"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2"
+
+SRC_URI[md5sum] = "1f14bbee7ee73ed0ceb3549f8cf378b4"
+SRC_URI[sha256sum] = "956f5c99798349c413275fe4c9ff128d72e280655dadbe4365f8e9fbda91393f"
+
+do_install () {
+    install -dm755 ${D}${includedir}
+    install -m 0644 ${S}/src/*.h ${D}${includedir}
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
new file mode 100644
index 0000000..1dd5a86
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Kernel evdev device emulation"
+DESCRIPTION = "The evemu library and tools are used to describe devices, record data, create devices and replay data from kernel evdev devices. "
+HOMEPAGE = "http://bitmath.org/code/evemu/"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
+
+inherit autotools
+
+SRC_URI = "git://bitmath.org/git/evemu.git;protocol=http"
+SRCREV = "9752b50e922572e4cd214ac45ed95e4ee410fe24"
+
+PV = "1.0.5+git${SRCPV}"
+
+S = "${WORKDIR}/git/"
+
+PARALLEL_MAKE = ""
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
new file mode 100644
index 0000000..d9b38ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Touch Frame Library"
+DESCRIPTION = "The frame library and tools are used to handle touch frames, i.e., collections of tracked contacts. Bindings for mtdev and XI2.1."
+HOMEPAGE = "http://bitmath.org/code/frame/"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2f31b266d3440dd7ee50f92cf67d8e6c"
+
+DEPENDS += "mtdev utouch-evemu"
+
+inherit autotools pkgconfig
+
+SRC_URI = "git://bitmath.org/git/frame.git;protocol=http"
+SRCREV = "95363d5a1f7394d71144bf3b408ef4e6db4350fc"
+
+PV = "1.1.2+git${SRCPV}"
+
+S = "${WORKDIR}/git/"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb
new file mode 100644
index 0000000..8cb180d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Multitouch viewer"
+DESCRIPTION = "mtview is a small X application that shows a graphical view of your MT-enabled hardware. It uses mtdev."
+HOMEPAGE = "http://bitmath.org/code/mtview/"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4c61b8950dc1aab4d2aa7c2ae6b1cfb3"
+
+inherit autotools pkgconfig distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI = "git://bitmath.org/git/mtview.git;protocol=http"
+SRCREV = "ad437c38dc111cf3990a03abf14efe1b5d89604b"
+
+DEPENDS += "mtdev utouch-frame utouch-evemu libx11"
+
+PV = "1.1.7+git${SRCPV}"
+
+S = "${WORKDIR}/git/"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/vala-terminal/vala-terminal_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/vala-terminal/vala-terminal_git.bb
new file mode 100644
index 0000000..07ff318
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/vala-terminal/vala-terminal_git.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A lightweight Terminal Emulator based on libvte, written in Vala"
+SECTION = "x11/applications"
+DEPENDS = "vte intltool-native"
+SRCREV = "0fefa38087581f85fa0631b40500b9428369c146"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+PV = "1.3+gitr${SRCPV}"
+PE = "1"
+PR = "r1"
+
+PNBLACKLIST[vala-terminal] ?= "BROKEN: Doesn't work with B!=S, touch: cannot touch `src/.stamp': No such file or directory"
+
+inherit autotools perlnative vala
+
+SRC_URI = "${FREESMARTPHONE_GIT}/vala-terminal.git;branch=master"
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN} = "ttf-liberation-mono"
+RREPLACES_${PN} = "openmoko-terminal2"
+RPROVIDES_${PN} = "openmoko-terminal2"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/Makefile.utils b/import-layers/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/Makefile.utils
new file mode 100644
index 0000000..3749b95
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/Makefile.utils
@@ -0,0 +1,43 @@
+## -----------------------------------------------------------------------
+##
+##   Copyright 2001-2008 H. Peter Anvin - All Rights Reserved
+##
+##   This program is free software; you can redistribute it and/or modify
+##   it under the terms of the GNU General Public License as published by
+##   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
+##   Boston MA 02111-1307, USA; either version 2 of the License, or
+##   (at your option) any later version; incorporated herein by reference.
+##
+## -----------------------------------------------------------------------
+
+INCLUDES = -I. -I../vboxsf
+CFLAGS	 = ${INCLUDES}
+LDFLAGS	 =
+
+SRCS     = mount.vboxsf.c \
+           vbsfmount.c
+
+OBJS	 = $(patsubst %.c,%.o,$(notdir $(SRCS)))
+
+.SUFFIXES: .c .o .i .s .S
+
+
+all: mount.vboxsf
+
+clean:
+	-rm -f *.o mount.vboxsf
+
+spotless: clean
+	-rm -f *~
+
+mount.vboxsf: $(OBJS)
+	$(CC) $(LDFLAGS) -o $@ $^
+
+%.o: %.c
+	$(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $<
+%.i: %.c
+	$(CC) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $<
+%.s: %.c
+	$(CC) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $<
+
+-include .*.d *.tmp
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_4.3.36.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_4.3.36.bb
new file mode 100644
index 0000000..781e3d5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_4.3.36.bb
@@ -0,0 +1,65 @@
+SUMMARY = "VirtualBox Linux Guest Drivers"
+SECTION = "core"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/${VBOX_NAME}/COPYING;md5=e197d5641bb35b29d46ca8c4bf7f2660"
+
+DEPENDS = "virtual/kernel"
+
+inherit module kernel-module-split
+
+COMPATIBLE_MACHINE = "(qemux86|qemux86-64)"
+
+VBOX_NAME = "VirtualBox-${PV}"
+
+SRC_URI = "http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.tar.bz2 \
+           file://Makefile.utils \
+"
+SRC_URI[md5sum] = "8635387dec6cbfd576ba453355d4dc0c"
+SRC_URI[sha256sum] = "af0776df6d03b2709cb76a69f055487bf12bdb3b4163e2a82959860300283046"
+
+S = "${WORKDIR}/vbox_module"
+
+export BUILD_TARGET_ARCH="${ARCH}"
+export BUILD_TARGET_ARCH_x86-64="amd64"
+export KERN_DIR="${STAGING_KERNEL_DIR}"
+
+addtask export_sources before do_patch after do_unpack
+
+do_export_sources() {
+    mkdir -p "${S}"
+    ${WORKDIR}/${VBOX_NAME}/src/VBox/Additions/linux/export_modules ${T}/vbox_modules.tar.gz
+    tar -C "${S}" -xzf ${T}/vbox_modules.tar.gz
+
+    # add a mount utility to use shared folder from VBox Addition Source Code
+    mkdir -p "${S}/utils"
+    install ${WORKDIR}/${VBOX_NAME}/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c ${S}/utils
+    install ${WORKDIR}/${VBOX_NAME}/src/VBox/Additions/linux/sharedfolders/vbsfmount.c ${S}/utils
+    install ${S}/../Makefile.utils ${S}/utils/Makefile
+
+}
+
+# compile and install mount utility
+do_compile_append() {
+    oe_runmake -C ${S}/utils
+}
+
+module_do_install() {
+    MODULE_DIR=${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel/misc
+    install -d $MODULE_DIR
+    install -m 644 vboxguest.ko $MODULE_DIR
+    install -m 644 vboxsf.ko $MODULE_DIR
+    install -m 644 vboxvideo.ko $MODULE_DIR
+}
+
+do_install_append() {
+    install -d ${D}${base_sbindir}
+    install -m 755 ${S}/utils/mount.vboxsf ${D}${base_sbindir}
+}
+
+PACKAGES += "kernel-module-vboxguest kernel-module-vboxsf kernel-module-vboxvideo"
+RRECOMMENDS_${PN} += "kernel-module-vboxguest kernel-module-vboxsf kernel-module-vboxvideo"
+
+FILES_${PN} = "${base_sbindir}"
+
+# autoload if installed
+KERNEL_MODULE_AUTOLOAD += "vboxguest vboxsf vboxvideo"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch
new file mode 100644
index 0000000..8f824e7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch
@@ -0,0 +1,27 @@
+Upstream-Status: pending
+
+Don't check 'sys/acl.h' if acl support disabled for vim/vim-tiny.
+
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+================================================
+diff --git a/src/configure.in b/src/configure.in
+index fb965e5..d734064 100644
+--- a/src/configure.in
++++ b/src/configure.in
+@@ -2511,7 +2511,7 @@ AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
+ 	sys/systeminfo.h locale.h sys/stream.h termios.h \
+ 	libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
+ 	utime.h sys/param.h libintl.h libgen.h \
+-	util/debug.h util/msg18n.h frame.h sys/acl.h \
++	util/debug.h util/msg18n.h frame.h \
+ 	sys/access.h sys/sysinfo.h wchar.h wctype.h)
+ 
+ dnl sys/ptem.h depends on sys/stream.h on Solaris
+@@ -3112,6 +3112,7 @@ AC_ARG_ENABLE(acl,
+ 	, [enable_acl="yes"])
+ if test "$enable_acl" = "yes"; then
+ AC_MSG_RESULT(no)
++AC_CHECK_HEADERS(sys/acl.h)
+ AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
+ 	AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
+ 		  AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch
new file mode 100644
index 0000000..693d130
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch
@@ -0,0 +1,38 @@
+vim: add knob whether elf.h are checked
+
+Previously, it still was checked when there was no elf library in sysroots directory.
+Add knob to decide whether elf.h are checked or not.
+
+Upstream-status: Pending
+
+Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
+---
+ src/configure.in |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/configure.in b/src/configure.in
+index d734064..f504fa6 100644
+--- a/src/configure.in
++++ b/src/configure.in
+@@ -2483,11 +2483,18 @@ AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
+ 	AC_MSG_RESULT(no))
+ 
+ dnl Checks for header files.
++AC_MSG_CHECKING(whether or not to look for elf.h)
++AC_ARG_ENABLE(elf-check,
++        [  --enable-elf-check      If elfutils, check for elf.h [default=no]],
++        , enable_elf_check="no")
++AC_MSG_RESULT($enable_elf_check)
++if test "x$enable_elf_check" != "xno"; then
+ AC_CHECK_HEADER(elf.h, HAS_ELF=1)
+ dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
+ if test "$HAS_ELF" = 1; then
+   AC_CHECK_LIB(elf, main)
+ fi
++fi
+ 
+ AC_HEADER_DIRENT
+ 
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_7.4.769.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_7.4.769.bb
new file mode 100644
index 0000000..bb8f2b7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_7.4.769.bb
@@ -0,0 +1,13 @@
+require vim_${PV}.bb
+
+SUMMARY += " (with tiny features)"
+
+PACKAGECONFIG += "tiny"
+
+do_install() {
+    install -d ${D}/${bindir}
+    install -m 0755 ${S}/vim ${D}/${bindir}/vim.tiny
+}
+
+ALTERNATIVE_PRIORITY = "90"
+ALTERNATIVE_TARGET = "${bindir}/vim.tiny"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/vim/vim_7.4.769.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/vim/vim_7.4.769.bb
new file mode 100644
index 0000000..08e5027
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/vim/vim_7.4.769.bb
@@ -0,0 +1,109 @@
+SUMMARY = "Vi IMproved - enhanced vi editor"
+SECTION = "console/utils"
+DEPENDS = "ncurses gettext-native"
+# vimdiff doesn't like busybox diff
+RSUGGESTS_${PN} = "diffutils"
+LICENSE = "vim"
+LIC_FILES_CHKSUM = "file://../runtime/doc/uganda.txt;md5=c74ec0ada9a68354f9461e81d3596f61"
+
+SRC_URI = "git://github.com/vim/vim.git \
+           file://disable_acl_header_check.patch;patchdir=.. \
+           file://vim-add-knob-whether-elf.h-are-checked.patch;patchdir=.. \
+"
+SRCREV = "2693ca21cee8a729d74682fd86a4818f2b050228"
+
+S = "${WORKDIR}/git/src"
+
+VIMDIR = "vim${@d.getVar('PV',1).split('.')[0]}${@d.getVar('PV',1).split('.')[1]}"
+
+inherit autotools update-alternatives
+inherit autotools-brokensep
+
+# vim configure.in contains functions which got 'dropped' by autotools.bbclass
+do_configure () {
+    rm -f auto/*
+    touch auto/config.mk
+    aclocal
+    autoconf
+    oe_runconf
+    touch auto/configure
+    touch auto/config.mk auto/config.h
+}
+
+#Available PACKAGECONFIG options are gtkgui, acl, x11, tiny
+PACKAGECONFIG ??= ""
+PACKAGECONFIG += "${@bb.utils.contains('DISTRO_FEATURES', 'acl', 'acl', '', d)}"
+PACKAGECONFIG += "${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)}"
+
+PACKAGECONFIG[gtkgui] = "--enable-gtk2-test --enable-gui=gtk2,--enable-gui=no,gtk+,"
+PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
+PACKAGECONFIG[x11] = "--with-x,--without-x,xt,"
+PACKAGECONFIG[tiny] = "--with-features=tiny,--with-features=big,,"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux,"
+PACKAGECONFIG[elfutils] = "--enable-elf-check,,elfutils,"
+
+EXTRA_OECONF = " \
+    --disable-gpm \
+    --disable-gtktest \
+    --disable-xim \
+    --disable-netbeans \
+    --with-tlib=ncurses \
+    ac_cv_small_wchar_t=no \
+    vim_cv_getcwd_broken=no \
+    vim_cv_memmove_handles_overlap=yes \
+    vim_cv_stat_ignores_slash=no \
+    vim_cv_terminfo=yes \
+    vim_cv_tgent=non-zero \
+    vim_cv_toupper_broken=no \
+    vim_cv_tty_group=world \
+    STRIP=/bin/true \
+"
+
+do_install() {
+    autotools_do_install
+
+    # Work around rpm picking up csh or awk or perl as a dep
+    chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/vim132
+    chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/mve.awk
+    chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/*.pl
+
+    # Install example vimrc from runtime files
+    install -m 0644 ../runtime/vimrc_example.vim ${D}/${datadir}/${BPN}/vimrc
+
+    # we use --with-features=big as default
+    mv ${D}${bindir}/${BPN} ${D}${bindir}/${BPN}.${BPN}
+}
+
+PARALLEL_MAKEINST = ""
+
+PACKAGES =+ "${PN}-common ${PN}-syntax ${PN}-help ${PN}-tutor ${PN}-vimrc"
+FILES_${PN}-syntax = "${datadir}/${BPN}/${VIMDIR}/syntax"
+FILES_${PN}-help = "${datadir}/${BPN}/${VIMDIR}/doc"
+FILES_${PN}-tutor = "${datadir}/${BPN}/${VIMDIR}/tutor ${bindir}/${BPN}tutor"
+FILES_${PN}-vimrc = "${datadir}/${BPN}/vimrc"
+FILES_${PN}-data = "${datadir}/${BPN}"
+FILES_${PN}-common = " \
+    ${datadir}/${BPN}/${VIMDIR}/*.vim \
+    ${datadir}/${BPN}/${VIMDIR}/autoload \
+    ${datadir}/${BPN}/${VIMDIR}/colors \
+    ${datadir}/${BPN}/${VIMDIR}/compiler \
+    ${datadir}/${BPN}/${VIMDIR}/ftplugin \
+    ${datadir}/${BPN}/${VIMDIR}/indent \
+    ${datadir}/${BPN}/${VIMDIR}/keymap \
+    ${datadir}/${BPN}/${VIMDIR}/lang \
+    ${datadir}/${BPN}/${VIMDIR}/macros \
+    ${datadir}/${BPN}/${VIMDIR}/plugin \
+    ${datadir}/${BPN}/${VIMDIR}/print \
+    ${datadir}/${BPN}/${VIMDIR}/spell \
+    ${datadir}/${BPN}/${VIMDIR}/tools \
+"
+
+RDEPENDS_${PN} = "ncurses-terminfo-base"
+# Recommend that runtime data is installed along with vim
+RRECOMMENDS_${PN} = "${PN}-syntax ${PN}-help ${PN}-tutor ${PN}-vimrc ${PN}-common"
+
+ALTERNATIVE_${PN} = "vi vim"
+ALTERNATIVE_TARGET = "${bindir}/${BPN}.${BPN}"
+ALTERNATIVE_LINK_NAME[vi] = "${base_bindir}/vi"
+ALTERNATIVE_LINK_NAME[vim] = "${bindir}/vim"
+ALTERNATIVE_PRIORITY = "100"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig_svn.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig_svn.bb
new file mode 100644
index 0000000..596a4e6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig_svn.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Atheros 6K Wifi configuration utility"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://wmiconfig.c;endline=19;md5=4394a56bca1c5b2446c9f8e406c82911"
+SECTION = "console/network"
+SRCREV = "5394"
+PV = "0.0.0+svnr${SRCPV}"
+PR = "r2"
+
+SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=AR6kSDK.build_sw.18;protocol=http"
+S = "${WORKDIR}/AR6kSDK.build_sw.18/host/tools/wmiconfig"
+
+CLEANBROKEN = "1"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 wmiconfig ${D}${bindir}
+}
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat-2.8.8/automake-foreign.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat-2.8.8/automake-foreign.patch
new file mode 100644
index 0000000..cfa2f6c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat-2.8.8/automake-foreign.patch
@@ -0,0 +1,11 @@
+--- a/configure.in	2014-08-18 01:25:43.911597023 -0700
++++ b/configure.in	2014-08-18 01:26:27.763786629 -0700
+@@ -8,7 +8,7 @@
+ AC_CONFIG_HEADERS([config.h])
+ AC_CONFIG_SRCDIR([configure.in])
+ 
+-AM_INIT_AUTOMAKE([1.9 dist-bzip2 subdir-objects no-define])
++AM_INIT_AUTOMAKE([1.9 foreign dist-bzip2 subdir-objects no-define])
+ 
+ AM_MAINTAINER_MODE
+ AC_PROG_CC
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat-2.8.8/fix-includes-for-separate-build.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat-2.8.8/fix-includes-for-separate-build.patch
new file mode 100644
index 0000000..4394e52
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat-2.8.8/fix-includes-for-separate-build.patch
@@ -0,0 +1,78 @@
+diff -ur xchat-2.8.8-orig/plugins/perl/perl.c xchat-2.8.8/plugins/perl/perl.c
+--- xchat-2.8.8-orig/plugins/perl/perl.c	2014-08-30 14:09:05.125116286 -0700
++++ xchat-2.8.8/plugins/perl/perl.c	2014-08-30 14:09:45.281106532 -0700
+@@ -31,7 +31,7 @@
+ #endif
+ 
+ #undef PACKAGE
+-#include "../../config.h"		  /* for #define OLD_PERL */
++#include <config.h>		  /* for #define OLD_PERL */
+ #include "xchat-plugin.h"
+ 
+ static xchat_plugin *ph;		  /* plugin handle */
+diff -ur xchat-2.8.8-orig/src/common/network.c xchat-2.8.8/src/common/network.c
+--- xchat-2.8.8-orig/src/common/network.c	2014-08-30 14:09:05.137116222 -0700
++++ xchat-2.8.8/src/common/network.c	2014-08-30 14:13:52.729116323 -0700
+@@ -24,7 +24,7 @@
+ #include <unistd.h>
+ #include <glib.h>
+ 
+-#include "../../config.h"				  /* grab USE_IPV6 and LOOKUPD defines */
++#include <config.h>				  /* grab USE_IPV6 and LOOKUPD defines */
+ 
+ #define WANTSOCKET
+ #define WANTARPA
+diff -ur xchat-2.8.8-orig/src/common/ssl.c xchat-2.8.8/src/common/ssl.c
+--- xchat-2.8.8-orig/src/common/ssl.c	2014-08-30 14:09:05.137116222 -0700
++++ xchat-2.8.8/src/common/ssl.c	2014-08-30 14:14:08.449133899 -0700
+@@ -23,7 +23,7 @@
+ #include <string.h>				  /* strncpy() */
+ #include "ssl.h"					  /* struct cert_info */
+ #include "inet.h"
+-#include "../../config.h"		  /* HAVE_SNPRINTF */
++#include <config.h>		  /* HAVE_SNPRINTF */
+ 
+ #ifndef HAVE_SNPRINTF
+ #define snprintf g_snprintf
+diff -ur xchat-2.8.8-orig/src/common/util.c xchat-2.8.8/src/common/util.c
+--- xchat-2.8.8-orig/src/common/util.c	2014-08-30 14:09:05.133116243 -0700
++++ xchat-2.8.8/src/common/util.c	2014-08-30 14:10:23.633116070 -0700
+@@ -41,7 +41,7 @@
+ #include "xchatc.h"
+ #include <ctype.h>
+ #include "util.h"
+-#include "../../config.h"
++#include <config.h>
+ 
+ #define WANTSOCKET
+ #include "inet.h"
+diff -ur xchat-2.8.8-orig/src/common/xchat.h xchat-2.8.8/src/common/xchat.h
+--- xchat-2.8.8-orig/src/common/xchat.h	2014-08-30 14:09:05.133116243 -0700
++++ xchat-2.8.8/src/common/xchat.h	2014-08-30 14:13:42.797116472 -0700
+@@ -1,4 +1,4 @@
+-#include "../../config.h"
++#include <config.h>
+ 
+ #include <glib.h>
+ #include <time.h>			/* need time_t */
+diff -ur xchat-2.8.8-orig/src/fe-gtk/fe-gtk.h xchat-2.8.8/src/fe-gtk/fe-gtk.h
+--- xchat-2.8.8-orig/src/fe-gtk/fe-gtk.h	2014-08-30 14:09:05.129116272 -0700
++++ xchat-2.8.8/src/fe-gtk/fe-gtk.h	2014-08-30 14:10:13.309115951 -0700
+@@ -1,4 +1,4 @@
+-#include "../../config.h"
++#include <config.h>
+ 
+ #ifdef WIN32
+ /* If you're compiling this for Windows, your release is un-official
+diff -ur xchat-2.8.8-orig/src/fe-gtk/xtext.c xchat-2.8.8/src/fe-gtk/xtext.c
+--- xchat-2.8.8-orig/src/fe-gtk/xtext.c	2014-08-30 14:09:05.129116272 -0700
++++ xchat-2.8.8/src/fe-gtk/xtext.c	2014-08-30 14:10:00.313138254 -0700
+@@ -51,7 +51,7 @@
+ #include <gtk/gtkwindow.h>
+ 
+ #ifdef XCHAT
+-#include "../../config.h"			/* can define USE_XLIB here */
++#include <config.h>			/* can define USE_XLIB here */
+ #else
+ #define USE_XLIB
+ #endif
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat-2.8.8/glib-2.32.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat-2.8.8/glib-2.32.patch
new file mode 100644
index 0000000..c9bce6a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat-2.8.8/glib-2.32.patch
@@ -0,0 +1,44 @@
+--- xchat-2.8.8.orig/src/common/xchat.h	2009-08-16 11:40:16.000000000 +0200
++++ xchat-2.8.8/src/common/xchat.h	2012-05-06 08:30:16.125755497 +0200
+@@ -1,10 +1,6 @@
+ #include "../../config.h"
+ 
+-#include <glib/gslist.h>
+-#include <glib/glist.h>
+-#include <glib/gutils.h>
+-#include <glib/giochannel.h>
+-#include <glib/gstrfuncs.h>
++#include <glib.h>
+ #include <time.h>			/* need time_t */
+ 
+ #ifndef XCHAT_H
+--- xchat-2.8.8.orig/src/common/servlist.c	2010-05-16 09:24:26.000000000 +0200
++++ xchat-2.8.8/src/common/servlist.c	2012-05-06 08:30:45.681758019 +0200
+@@ -24,7 +24,6 @@
+ #include <unistd.h>
+ 
+ #include "xchat.h"
+-#include <glib/ghash.h>
+ 
+ #include "cfgfiles.h"
+ #include "fe.h"
+--- xchat-2.8.8.orig/src/common/util.c	2009-08-16 11:40:16.000000000 +0200
++++ xchat-2.8.8/src/common/util.c	2012-05-06 08:31:10.389760122 +0200
+@@ -39,7 +39,6 @@
+ #include <errno.h>
+ #include "xchat.h"
+ #include "xchatc.h"
+-#include <glib/gmarkup.h>
+ #include <ctype.h>
+ #include "util.h"
+ #include "../../config.h"
+--- xchat-2.8.8.orig/src/common/text.c	2010-05-30 04:14:41.000000000 +0200
++++ xchat-2.8.8/src/common/text.c	2012-05-06 08:31:22.300761137 +0200
+@@ -28,7 +28,6 @@
+ #include <sys/mman.h>
+ 
+ #include "xchat.h"
+-#include <glib/ghash.h>
+ #include "cfgfiles.h"
+ #include "chanopt.h"
+ #include "plugin.h"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat_2.8.8.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat_2.8.8.bb
new file mode 100644
index 0000000..6da11cd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/xchat/xchat_2.8.8.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Full-featured IRC chat client with scripting support"
+LICENSE = "GPLv2+"
+HOMEPAGE = "http://www.xchat.org"
+SECTION = "x11/network"
+
+DEPENDS = "libgcrypt zlib gtk+ libsexy"
+DEPENDS += "gdk-pixbuf-native"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
+
+PR = "r2"
+
+SRC_URI = "http://xchat.org/files/source/2.8/xchat-${PV}.tar.bz2 \
+    file://glib-2.32.patch \
+    file://automake-foreign.patch \
+    file://fix-includes-for-separate-build.patch \
+"
+
+inherit autotools gettext pkgconfig
+
+PACKAGECONFIG ??= "dbus"
+PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus-glib"
+PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
+PACKAGECONFIG[python] = "--enable-python,--disable-python,python"
+
+EXTRA_OECONF = "\
+    --enable-maintainer-mode \
+    --disable-perl \
+    --disable-tcl \
+"
+
+RDEPENDS_${PN} += "dbus"
+FILES_${PN} += "${datadir}/dbus-1"
+FILES_${PN}-dbg += "${libdir}/xchat/plugins/.debug"
+
+SRC_URI[md5sum] = "6775c44f38e84d06c06c336b32c4a452"
+SRC_URI[sha256sum] = "0d6d69437b5e1e45f3e66270fe369344943de8a1190e498fafa5296315a27db0"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.0.11.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.0.11.bb
new file mode 100644
index 0000000..9669d9b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.0.11.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Xdelta is a tool for differential compression"
+DESCRIPTION = "Open-source binary diff, differential compression tools, \
+               VCDIFF (RFC 3284) delta compression."
+HOMEPAGE = "http://xdelta.org/"
+SECTION = "console/utils"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
+SRC_URI = "https://github.com/jmacd/xdelta-devel/releases/download/v${PV}/${BPN}-${PV}.tar.gz  \
+          "
+SRC_URI[md5sum] = "445d8be2ac512113d5ca601ae8359626"
+SRC_URI[sha256sum] = "0ccc9751ceaa4d90d6b06938a4deddb481816f5d9284bd07d2e728609cb300aa"
+
+inherit autotools
+
+# Optional secondary compression
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[lzma] = "--with-liblzma,--without-liblzma,xz"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/xmlstarlet/files/0001-usage2c.awk-fix-wrong-basename-regexp.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/xmlstarlet/files/0001-usage2c.awk-fix-wrong-basename-regexp.patch
new file mode 100644
index 0000000..24b187f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/xmlstarlet/files/0001-usage2c.awk-fix-wrong-basename-regexp.patch
@@ -0,0 +1,37 @@
+Upstream-Status: Submitted [sourceforge]
+
+From 75d789d0ea9716c9a9ae72f42a2fcfa907cf4a12 Mon Sep 17 00:00:00 2001
+From: Matthieu Crapet <mcrapet@gmail.com>
+Date: Mon, 30 Jun 2014 13:52:25 +0200
+Subject: [PATCH] usage2c.awk: fix wrong basename regexp
+
+Previously not matching with filename argument with absolute path.
+
+Signed-off-by: Matthieu Crapet <mcrapet@gmail.com>
+---
+ usage2c.awk | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/usage2c.awk b/usage2c.awk
+index 94b897a..9aea212 100755
+--- a/usage2c.awk
++++ b/usage2c.awk
+@@ -6,13 +6,13 @@ BEGIN {
+ }
+ 
+ # text in src/foo-bar.txt results in
+-#   static const char foo_text[] = {
++#   static const char foo_bar[] = {
+ #     't', 'h', 'e', ' ', 't', 'e', 'x', 't', ...
+ #   }
+ length(command_name) == 0 {
+     command_name = FILENAME;
+     sub(/\.txt$/, "", command_name);
+-    sub(/^([^\/]+\/)*/, "", command_name);
++    sub(/^.*\//, "", command_name);
+     gsub(/-/, "_", command_name);
+     printf("static const char %s[] = {\n", command_name);
+     progs = 0;
+-- 
+2.0.0
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/xmlstarlet/files/configure.ac.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/xmlstarlet/files/configure.ac.patch
new file mode 100644
index 0000000..e55f4f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/xmlstarlet/files/configure.ac.patch
@@ -0,0 +1,28 @@
+configure.ac: don't use xml-config if --with-libxml-prefix is specified to configure
+
+Same behavior for xslt-config.
+
+diff --git a/configure.ac b/configure.ac
+index ed04e0c..39d5d4c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -40,7 +40,8 @@ AC_ARG_PROGRAM          dnl Transforming Program Names When Installing
+ AC_PROG_SED
+ AC_PROG_AWK
+ 
+-XSTAR_LIB_CHECK([LIBXML], [xml2-config])
++AS_IF([test "x$LIBXML_PREFIX" = x],
++      [XSTAR_LIB_CHECK([LIBXML], [xml2-config])])
+ 
+ AS_IF([test "x$LIBXML_SRCDIR" != x],
+       [LIBXML_INCDIR="$LIBXML_SRCDIR/include"])
+@@ -56,7 +57,8 @@ AS_IF([test "x$STATIC_LIBS" != xno],
+ [LIBXML_LDFLAGS="-L$LIBXML_LIBDIR"]
+ 
+ 
+-XSTAR_LIB_CHECK([LIBXSLT], [xslt-config])
++AS_IF([test "x$LIBXSLT_PREFIX" = x],
++      [XSTAR_LIB_CHECK([LIBXSLT], [xslt-config])])
+ 
+ AS_IF([test "x$LIBXSLT_SRCDIR" != x],
+       [XSLTPROC_PATH="$LIBXSLT_SRCDIR/xsltproc:$PATH"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/xmlstarlet/xmlstarlet_1.5.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/xmlstarlet/xmlstarlet_1.5.0.bb
new file mode 100644
index 0000000..bf99aff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/xmlstarlet/xmlstarlet_1.5.0.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Command line XML toolkit"
+DESCRIPTION = "XMLStarlet is a command line XML toolkit which can be used to \
+               transform, query, validate, and edit XML documents and files \
+               using  simple set of shell commands in similar way it is done \
+               for plain text files using grep/sed/awk/tr/diff/patch."
+HOMEPAGE = "http://xmlstar.sourceforge.net/"
+BUGTRACKER = "http://xmlstar.sourceforge.net/bugs/"
+
+SECTION = "console/utils"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c04760d09e8b0fe73283d0cc9e8bea53"
+
+DEPENDS = "libxml2 libxslt"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/xmlstar/${BP}.tar.gz \
+           file://configure.ac.patch \
+           file://0001-usage2c.awk-fix-wrong-basename-regexp.patch"
+SRC_URI[md5sum] = "0c6db295d0cf9ff0d439edb755b7e8f6"
+SRC_URI[sha256sum] = "47b4ed042ea2909257f2a386001af49fceb303f84da7214779ccf99fffc6bbba"
+
+inherit autotools
+
+# doc build: requires (native) xstlproc, fop, pdf2ps
+EXTRA_OECONF="--disable-build-docs \
+  --with-libxml-prefix=${STAGING_LIBDIR}/.. \
+  --with-libxslt-prefix=${STAGING_LIBDIR}/.."
+
+#Makefile:2116: recipe for target 'src/elem-usage.c' failed
+#make[1]: *** [src/elem-usage.c] Error 1
+#/bin/bash: src/escape-usage.c: No such file or directory
+#Makefile:2116: recipe for target 'src/escape-usage.c' failed
+#make[1]: *** [src/escape-usage.c] Error 1
+PARALLEL_MAKE = ""
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/zile/files/remove-help2man.patch b/import-layers/meta-openembedded/meta-oe/recipes-support/zile/files/remove-help2man.patch
new file mode 100644
index 0000000..c1a63f4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/zile/files/remove-help2man.patch
@@ -0,0 +1,28 @@
+Upstream-Status: Inappropriate [configuration]
+
+diff --git a/Makefile.am b/Makefile.am
+index 54bc59f..46c2650 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -36,7 +36,6 @@ PERL_BUILDTIME =					\
+ 
+ EXTRA_DIST =						\
+ 	FAQ						\
+-	build-aux/zile-help2man-wrapper			\
+ 	$(PERL_BUILDTIME)
+ 
+ doc_DATA = AUTHORS FAQ NEWS
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index 639f59c..8c5123e 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -33,9 +33,3 @@ doc/zile.1: $(srcdir)/doc/zile.1.in doc/Makefile.am config.status
+ 	$(edit) $(abs_srcdir)/doc/zile.1.in >$@.tmp
+ 	mv $@.tmp $@
+ 
+-$(srcdir)/doc/zile.1.in: doc/man-extras build-aux/zile-help2man-wrapper configure.ac $(builddir)/src/zile$(EXEEXT)
+-	@test -d doc || mkdir doc
+-## Exit gracefully if zile.1.in is not writeable, such as during distcheck!
+-	$(AM_V_GEN)if ( touch $@.w && rm -f $@.w; ) >/dev/null 2>&1; then \
+-	  $(srcdir)/build-aux/missing --run $(HELP2MAN) --output=$@ --no-info --name="Zile Is Lossy Emacs" --include $(srcdir)/doc/man-extras $(srcdir)/build-aux/zile-help2man-wrapper; \
+-	fi
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.9.bb b/import-layers/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.9.bb
new file mode 100644
index 0000000..2551a80
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.9.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Zile is lossy Emacs"
+HOMEPAGE = "http://zile.sourceforge.net/"
+DEPENDS = "ncurses bdwgc"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "http://ftp.gnu.org/gnu/zile/${BP}.tar.gz \
+           file://remove-help2man.patch \
+"
+
+SRC_URI[md5sum] = "84a0af58fb4fbe3af16bde2ef2b8f5ae"
+SRC_URI[sha256sum] = "c71959c7aca02ac66be526ecccbc7954fb0ea7591ed3c13311a95e8f040b0049"
+
+inherit autotools
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-test/fwts/fwts_git.bb b/import-layers/meta-openembedded/meta-oe/recipes-test/fwts/fwts_git.bb
new file mode 100644
index 0000000..b943d6d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-test/fwts/fwts_git.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Firmware testsuite"
+DESCRIPTION = "The tool fwts comprises of over fifty tests that are designed to exercise and test different aspects of a machine's firmware. Many of these tests need super user access to read BIOS data and ACPI tables, so the tool requires running with super user privileges (e.g. with sudo)."
+HOMEPAGE = "https://wiki.ubuntu.com/Kernel/Reference/fwts"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://src/main.c;beginline=1;endline=16;md5=deb8af5388e838d133eaa036f4d1496f"
+
+PV = "14.12.00"
+
+SRCREV = "efc18d16294f492b7f72bba64344b2eed50e6a69"
+SRC_URI = "git://kernel.ubuntu.com/hwe/fwts.git"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "libpcre json-c glib-2.0"
+
+inherit autotools-brokensep
+
+CFLAGS += "-I${STAGING_INCDIR}/json-c"
+
+FILES_${PN} += "${libdir}/fwts/lib*${SOLIBS}"
+FILES_${PN}-dev += "${libdir}/fwts/lib*${SOLIBSDEV} ${libdir}/fwts/lib*.la"
+FILES_${PN}-staticdev += "${libdir}/fwts/lib*a"
+FILES_${PN}-dbg += "${libdir}/fwts/.debug"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-test/gmock/gmock/cmake-Add-install-command-for-libraries-and-headers.patch b/import-layers/meta-openembedded/meta-oe/recipes-test/gmock/gmock/cmake-Add-install-command-for-libraries-and-headers.patch
new file mode 100644
index 0000000..92a6393
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-test/gmock/gmock/cmake-Add-install-command-for-libraries-and-headers.patch
@@ -0,0 +1,40 @@
+From ba0a7d65c918cb7e3f2073553c4cc7af5858ed03 Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Thu, 31 Jul 2014 16:54:00 -0300
+Subject: [PATCH] cmake: Add install command for libraries and headers
+Organization: O.S. Systems Software LTDA.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ CMakeLists.txt | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 572d044..90e797a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -63,6 +63,8 @@ include_directories("${gmock_SOURCE_DIR}/include"
+                     # Test sources.
+                     "${gtest_SOURCE_DIR}")
+ 
++install(DIRECTORY ${gmock_SOURCE_DIR}/include/gmock DESTINATION include)
++
+ ########################################################################
+ #
+ # Defines the gmock & gmock_main libraries.  User tests should link
+@@ -82,6 +84,10 @@ cxx_library(gmock_main
+             src/gmock-all.cc
+             src/gmock_main.cc)
+ 
++
++install(TARGETS gmock DESTINATION lib)
++install(TARGETS gmock_main DESTINATION lib)
++
+ ########################################################################
+ #
+ # Google Mock's own tests.
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-test/gmock/gmock/cmake-gmock.pc.in-Add-pkg-config-support.patch b/import-layers/meta-openembedded/meta-oe/recipes-test/gmock/gmock/cmake-gmock.pc.in-Add-pkg-config-support.patch
new file mode 100644
index 0000000..aa38fe4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-test/gmock/gmock/cmake-gmock.pc.in-Add-pkg-config-support.patch
@@ -0,0 +1,56 @@
+From 45661183a7c78d8c4f75adcf53c6ddd663dc8b2d Mon Sep 17 00:00:00 2001
+From: Mario Domenech Goulart <mario@ossystems.com.br>
+Date: Mon, 20 Oct 2014 17:12:58 -0200
+Subject: [PATCH] CMakeLists, gmock.pc.in: Add pkg-config support
+Organization: O.S. Systems Software LTDA.
+
+Signed-off-by: Mario Domenech Goulart <mario@ossystems.com.br>
+---
+ CMakeLists.txt | 7 ++++++-
+ gmock.pc.in    | 9 +++++++++
+ 2 files changed, 15 insertions(+), 1 deletion(-)
+ create mode 100644 gmock.pc.in
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 90e797a..98fd824 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -27,6 +27,9 @@ if (COMMAND pre_project_set_up_hermetic_build)
+   pre_project_set_up_hermetic_build()
+ endif()
+ 
++# pkg-config support
++configure_file("gmock.pc.in" "gmock.pc" @ONLY)
++
+ ########################################################################
+ #
+ # Project-wide settings
+@@ -87,7 +90,9 @@ cxx_library(gmock_main
+ 
+ install(TARGETS gmock DESTINATION lib)
+ install(TARGETS gmock_main DESTINATION lib)
+-
++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gmock.pc"
++    DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig/"
++)  
+ ########################################################################
+ #
+ # Google Mock's own tests.
+diff --git a/gmock.pc.in b/gmock.pc.in
+new file mode 100644
+index 0000000..08ad8d2
+--- /dev/null
++++ b/gmock.pc.in
+@@ -0,0 +1,9 @@
++Name: libgmock
++Version: 1.7.0
++Description: Google's framework for writing C++ tests on a variety of platforms
++ 
++prefix=@CMAKE_INSTALL_PREFIX@
++includedir=${prefix}/include
++libdir=${prefix}/lib
++Cflags:-I${includedir}/gmock
++Libs: -L${libdir} -lgmock -lgmock_main
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-test/gmock/gmock_1.7.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-test/gmock/gmock_1.7.0.bb
new file mode 100644
index 0000000..a537f4c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-test/gmock/gmock_1.7.0.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Google C++ Mocking Framework"
+SECTION = "libs"
+HOMEPAGE = "http://code.google.com/p/googlemock/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cbbd27594afd089daa160d3a16dd515a"
+
+SRC_URI = "\
+    http://googlemock.googlecode.com/files/${BPN}-${PV}.zip \
+    file://cmake-Add-install-command-for-libraries-and-headers.patch \
+    file://cmake-gmock.pc.in-Add-pkg-config-support.patch \
+"
+
+SRC_URI[md5sum] = "073b984d8798ea1594f5e44d85b20d66"
+SRC_URI[sha256sum] = "26fcbb5925b74ad5fc8c26b0495dfc96353f4d553492eb97e85a8a6d2f43095b"
+
+inherit lib_package cmake
+
+ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY_${PN}-dbg = "1"
+
+RDEPENDS_${PN}-dev += "${PN}-staticdev"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-test/gtest/gtest/CMakeLists-gtest.pc.in-Add-pkg-config-support-to-gte.patch b/import-layers/meta-openembedded/meta-oe/recipes-test/gtest/gtest/CMakeLists-gtest.pc.in-Add-pkg-config-support-to-gte.patch
new file mode 100644
index 0000000..1ece136
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-test/gtest/gtest/CMakeLists-gtest.pc.in-Add-pkg-config-support-to-gte.patch
@@ -0,0 +1,55 @@
+From d4b25ce723812faf78d8ee038b7cbed00cbba682 Mon Sep 17 00:00:00 2001
+From: Rodrigo Caimi <caimi@datacom.ind.br>
+Date: Tue, 7 Oct 2014 15:37:10 -0300
+Subject: [PATCH] CMakeLists, gtest.pc.in: Add pkg-config support to gtest
+ 1.7.0
+
+Signed-off-by: Rodrigo Caimi <caimi@datacom.ind.br>
+---
+ CMakeLists.txt | 6 ++++++
+ gtest.pc.in    | 9 +++++++++
+ 2 files changed, 15 insertions(+)
+ create mode 100644 gtest.pc.in
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 281c4c2..e4354a8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -29,6 +29,9 @@ if (COMMAND pre_project_set_up_hermetic_build)
+   pre_project_set_up_hermetic_build()
+ endif()
+ 
++# pkg-config support
++configure_file("gtest.pc.in" "gtest.pc" @ONLY)
++
+ ########################################################################
+ #
+ # Project-wide settings
+@@ -75,6 +78,9 @@ target_link_libraries(gtest_main gtest)
+ 
+ install(TARGETS gtest DESTINATION lib)
+ install(TARGETS gtest_main DESTINATION lib)
++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gtest.pc"
++    DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig/"
++)
+ 
+ ########################################################################
+ #
+diff --git a/gtest.pc.in b/gtest.pc.in
+new file mode 100644
+index 0000000..57b1049
+--- /dev/null
++++ b/gtest.pc.in
+@@ -0,0 +1,9 @@
++Name: libgtest
++Version: 1.7.0
++Description: Google's framework for writing C++ tests on a variety of platforms
++
++prefix=@CMAKE_INSTALL_PREFIX@
++includedir=${prefix}/include
++libdir=${prefix}/lib
++Cflags:-I${includedir}/gtest
++Libs: -L${libdir} -lgtest -lgtest_main
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-test/gtest/gtest/cmake-Add-install-command-for-libraries-and-headers.patch b/import-layers/meta-openembedded/meta-oe/recipes-test/gtest/gtest/cmake-Add-install-command-for-libraries-and-headers.patch
new file mode 100644
index 0000000..0c160b0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-test/gtest/gtest/cmake-Add-install-command-for-libraries-and-headers.patch
@@ -0,0 +1,39 @@
+From 5318983562be6babeb5a6996e7dda4b31acfdba8 Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Wed, 30 Jul 2014 16:49:53 -0300
+Subject: [PATCH] cmake: Add install command for libraries and headers
+Organization: O.S. Systems Software LTDA.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ CMakeLists.txt | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 57470c8..281c4c2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -56,6 +56,8 @@ include_directories(
+   ${gtest_SOURCE_DIR}/include
+   ${gtest_SOURCE_DIR})
+ 
++install(DIRECTORY ${gtest_SOURCE_DIR}/include/gtest DESTINATION include)
++
+ # Where Google Test's libraries can be found.
+ link_directories(${gtest_BINARY_DIR}/src)
+ 
+@@ -71,6 +73,9 @@ cxx_library(gtest "${cxx_strict}" src/gtest-all.cc)
+ cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
+ target_link_libraries(gtest_main gtest)
+ 
++install(TARGETS gtest DESTINATION lib)
++install(TARGETS gtest_main DESTINATION lib)
++
+ ########################################################################
+ #
+ # Samples on how to link user tests with gtest or gtest_main.
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-oe/recipes-test/gtest/gtest_1.7.0.bb b/import-layers/meta-openembedded/meta-oe/recipes-test/gtest/gtest_1.7.0.bb
new file mode 100644
index 0000000..edeeab6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/recipes-test/gtest/gtest_1.7.0.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Google's framework for writing C++ tests"
+HOMEPAGE = "http://code.google.com/p/googletest/"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cbbd27594afd089daa160d3a16dd515a"
+
+SRC_URI = "\
+    http://googletest.googlecode.com/files/${BPN}-${PV}.zip \
+    file://cmake-Add-install-command-for-libraries-and-headers.patch \
+    file://CMakeLists-gtest.pc.in-Add-pkg-config-support-to-gte.patch \
+"
+
+SRC_URI[md5sum] = "2d6ec8ccdf5c46b05ba54a9fd1d130d7"
+SRC_URI[sha256sum] = "247ca18dd83f53deb1328be17e4b1be31514cedfc1e3424f672bf11fd7e0d60d"
+
+inherit lib_package cmake
+
+ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY_${PN}-dbg = "1"
+
+RDEPENDS_${PN}-dev += "${PN}-staticdev"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/import-layers/meta-openembedded/meta-oe/site/endian-big b/import-layers/meta-openembedded/meta-oe/site/endian-big
new file mode 100644
index 0000000..3a968e3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/site/endian-big
@@ -0,0 +1,2 @@
+# rp-pppoe
+rpppoe_cv_pack_bitfields=${rpppoe_cv_pack_bitfields=normal}
diff --git a/import-layers/meta-openembedded/meta-oe/site/endian-little b/import-layers/meta-openembedded/meta-oe/site/endian-little
new file mode 100644
index 0000000..0bcd966
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/site/endian-little
@@ -0,0 +1,2 @@
+# rp-pppoe
+rpppoe_cv_pack_bitfields=${rpppoe_cv_pack_bitfields=rev}
diff --git a/import-layers/meta-openembedded/meta-perl/COPYING.MIT b/import-layers/meta-openembedded/meta-perl/COPYING.MIT
new file mode 100644
index 0000000..89de354
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-perl/README b/import-layers/meta-openembedded/meta-perl/README
new file mode 100644
index 0000000..86c5c1a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/README
@@ -0,0 +1,92 @@
+meta-perl
+=========
+This layer provides commonly-used perl related recipes such as perl libraries
+in the Comprehensive Perl Archive Network.
+
+Contents and Help
+-----------------
+
+In this section the contents of the layer is listed, along with a short
+help for each package.
+
+         -- libdbi-perl --
+         The DBI is a database access module for the Perl programming language.
+         It defines a set of methods, variables, and conventions that provide
+         a consistent database interface, independent of the actual database
+         being used.
+                      |<- Scope of DBI ->|
+                           .-.   .--------------.   .-------------.
+           .-------.       | |---| XYZ Driver   |---| XYZ Engine  |
+           | Perl  |       | |   `--------------'   `-------------'
+           | script|  |A|  |D|   .--------------.   .-------------.
+           | using |--|P|--|B|---|Oracle Driver |---|Oracle Engine|
+           | DBI   |  |I|  |I|   `--------------'   `-------------'
+           | API   |       | |...
+           |methods|       | |... Other drivers
+           `-------'       | |...
+                           `-'
+
+        -- libdbd-sqlite-perl --
+        DBD::SQLite is a Perl DBI driver for SQLite, that includes the entire
+        thing in the distribution. So in order to get a fast transaction capable
+        RDBMS working for your perl project you simply have to install this
+        module, and nothing else.
+
+        usage: there is a test case to show you how it works
+
+        1) vim local.conf:
+        ...
+        IMAGE_INSTALL_append = " libdbd-sqlite-perl"
+        PERL_DBM_TEST = "1"
+        ...
+        2) build core-image-sato and boot the target
+
+        3) run "sqlite-perl-test.pl" on target. This script includes five
+           operations create/insert/update/delete/select to do with a table.
+
+        More information can be found in the recipe's git log.
+
+Dependencies
+------------
+
+This layer depends on:
+
+  URI: git://git.openembedded.org/openembedded-core
+  branch: krogoth 
+  revision: HEAD
+  prio: default
+
+Adding the meta-perl layer to your build
+---------------------------------------
+
+In order to use this layer, you need to make the build system aware of
+it.
+
+Assuming the meta-perl layer exists at the top-level of your
+yocto build tree, you can add it to the build system by adding the
+location of the meta-perl layer to bblayers.conf, along with any
+other layers needed. e.g.:
+
+  BBLAYERS ?= " \
+    /path/to/oe-core/meta \
+    /path/to/layer/meta-perl \
+
+Maintenance
+-----------
+
+Send patches / pull requests to openembedded-devel@lists.openembedded.org with
+'[meta-perl][krogoth]' in the subject.
+
+When sending single patches, please using something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-perl][krogoth][PATCH'
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
+
+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-openembedded/meta-perl/conf/layer.conf b/import-layers/meta-openembedded/meta-perl/conf/layer.conf
new file mode 100644
index 0000000..0485ac8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/conf/layer.conf
@@ -0,0 +1,16 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+	${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "perl-layer"
+BBFILE_PATTERN_perl-layer := "^${LAYERDIR}/"
+BBFILE_PRIORITY_perl-layer = "6"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_perl-layer = "1"
+
+LAYERDEPENDS_perl-layer = "core"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-extended/mime-construct/files/fix-mime-construct-help-return-value.patch b/import-layers/meta-openembedded/meta-perl/recipes-extended/mime-construct/files/fix-mime-construct-help-return-value.patch
new file mode 100644
index 0000000..5e4281d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-extended/mime-construct/files/fix-mime-construct-help-return-value.patch
@@ -0,0 +1,39 @@
+From 2b9ed06850410d70371b31de5f131e484ba1c851 Mon Sep 17 00:00:00 2001
+From: Lu Chong <Chong.Lu@windriver.com>
+Date: Thu, 17 Oct 2013 16:06:04 +0800
+Subject: [PATCH] fix mime-construct --help return value
+
+Upstream-Status: Pending
+
+Signed-off-by: Lu Chong <Chong.Lu@windriver.com>
+
+---
+ mime-construct |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/mime-construct b/mime-construct
+index cad7d0e..707ed19 100755
+--- a/mime-construct
++++ b/mime-construct
+@@ -39,7 +39,7 @@ usage: $Me switch...
+ 
+   Global settings:
+     --debug		turn debugging on
+-    --help		show this and then die
++    --help		show this
+     --output		don\'t mail, output to stdout (loses bcc info)
+     --subpart		generate subpart rather than whole message (turns
+     	    	    	on --output, changes other semantics a bit)
+@@ -150,7 +150,8 @@ sub xwarn {
+ 
+ sub usage {
+     xwarn @_ if @_;
+-    die $Usage;
++    print $Usage;
++    exit 0;
+ }
+ 
+ sub init {
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-extended/mime-construct/mime-construct_1.11.bb b/import-layers/meta-openembedded/meta-perl/recipes-extended/mime-construct/mime-construct_1.11.bb
new file mode 100644
index 0000000..501f3bf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-extended/mime-construct/mime-construct_1.11.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Construct and optionally mail MIME messages"
+DESCRIPTION = "Constructs and (by default) mails MIME messages. \
+               It is entirely driven from the command line, it is \
+               designed to be used by other programs, or people who act \
+               like programs."
+HOMEPAGE = "http://search.cpan.org/~rosch/mime-construct/mime-construct"
+SECTION = "mail"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=5e2e5da619ac8ef8c84767ccc4656e96"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/R/RO/ROSCH/mime-construct-${PV}.tar.gz \
+    file://fix-mime-construct-help-return-value.patch \
+"
+
+SRC_URI[md5sum] = "73834ea780fbea81b89dbd9b2fb54f58"
+SRC_URI[sha256sum] = "4cd7bb61b51d41192d1498c1051aa6a4ccd75aeb09b71d2ec706a7084a4a9303"
+
+inherit cpan
+
+RDEPENDS_${PN} = "libmime-types-perl libproc-waitstat-perl msmtp \
+    perl-module-filehandle perl-module-mime-base64 perl-module-mime-quotedprint perl-module-posix \
+"
+
+do_install_append() {
+   #change the interpreter in file
+   sed -i -e "s|${STAGING_BINDIR_NATIVE}/perl-native/perl -w|${bindir}/env perl|g" \
+      ${D}/${bindir}/mime-construct
+}
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.114.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.114.bb
new file mode 100644
index 0000000..fb4c0c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.114.bb
@@ -0,0 +1,55 @@
+SUMMARY = "a utility to add users/groups to the system"
+DESCRIPTION = "adduser, addgroup - add a user or group to the system"
+HOMEPAGE = "http://alioth.debian.org/projects/adduser/"
+SECTION = "base/utils"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=caed49ab166f22ef31bf1127f558d0ef"
+
+SRC_URI = "http://ftp.de.debian.org/debian/pool/main/a/${BPN}/${BPN}_${PV}.tar.xz \
+           file://adduser-add-M-option-for-useradd-when-no-create-home.patch \
+"
+
+SRC_URI[md5sum] = "3a079dd4e41d5a1fbaccaab03aacd881"
+SRC_URI[sha256sum] = "693b45bb0d27938fff2ecee5442ea2ac1b8804472ff0bb8faffd39616e58211f"
+
+inherit cpan-base update-alternatives
+
+S = "${WORKDIR}/${BPN}-3.113+nmu4"
+
+do_install() {
+    install -d ${D}${sbindir}
+    install -m 0755 ${S}/adduser ${D}${sbindir}
+    install -m 0755 ${S}/deluser ${D}${sbindir}
+
+    install -d ${D}${libdir}/perl/${PERLVERSION}/Debian
+    install -m 0644 ${S}/AdduserCommon.pm ${D}${libdir}/perl/${PERLVERSION}/Debian
+    sed -i -e "s/VERSION/${PV}/" ${D}${sbindir}/*
+
+    install -d ${D}/${sysconfdir}
+    install -m 0644 ${S}/*.conf ${D}/${sysconfdir}
+
+    install -d ${D}${mandir}/man5
+    install -m 0644 ${S}/doc/*.conf.5 ${D}${mandir}/man5
+    install -d ${D}${mandir}/man8
+    install -m 0644 ${S}/doc/*.8 ${D}${mandir}/man8
+    install -d ${D}${docdir}/${BPN}
+    cp -rf ${S}/examples ${D}${docdir}/${BPN}
+}
+
+RDEPENDS_${PN} += "\
+    shadow \
+    perl-module-getopt-long \
+    perl-module-overloading \
+    perl-module-file-find \
+    perl-module-file-temp \
+"
+
+ALTERNATIVE_${PN} = "adduser deluser addgroup delgroup"
+ALTERNATIVE_PRIORITY = "60"
+ALTERNATIVE_LINK_NAME[adduser] = "${sbindir}/adduser"
+ALTERNATIVE_LINK_NAME[deluser] = "${sbindir}/deluser"
+ALTERNATIVE_LINK_NAME[addgroup] = "${sbindir}/addgroup"
+ALTERNATIVE_LINK_NAME[delgroup] = "${sbindir}/delgroup"
+ALTERNATIVE_TARGET[addgroup] = "${sbindir}/adduser.${BPN}"
+ALTERNATIVE_TARGET[delgroup] = "${sbindir}/deluser.${BPN}"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/adduser/files/adduser-add-M-option-for-useradd-when-no-create-home.patch b/import-layers/meta-openembedded/meta-perl/recipes-perl/adduser/files/adduser-add-M-option-for-useradd-when-no-create-home.patch
new file mode 100644
index 0000000..4b0a03f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/adduser/files/adduser-add-M-option-for-useradd-when-no-create-home.patch
@@ -0,0 +1,57 @@
+From 809f00a6ef0224b41b2e1207194c8da3cd3e3c7e Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Thu, 18 Dec 2014 17:23:37 +0800
+Subject: [PATCH] adduser: add -M option for useradd when --no-create-home is specified
+
+The useradd (from package passwd) in debian based system sets -M (--no-create-home) by default,
+but the one we are using (from package shadow) sets -m (--create-home) by default, so we
+need to explicitly add -M option for useradd call when --no-create-home is specified for adduser.
+
+Upstream-Status: Pending
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ adduser |   20 ++++++++++++++++----
+ 1 files changed, 16 insertions(+), 4 deletions(-)
+
+diff --git a/adduser b/adduser
+index c3bd8b0..9a07f9f 100755
+--- a/adduser
++++ b/adduser
+@@ -434,8 +434,14 @@ if ($action eq "addsysuser") {
+     $shell = $special_shell || '/bin/false';
+     $undouser = $new_name;
+     my $useradd = &which('useradd');
+-    &systemcall($useradd, '-d', $home_dir, '-g', $ingroup_name, '-s',
+-		$shell, '-u', $new_uid, $new_name);
++    if ($no_create_home) {
++        &systemcall($useradd, '-d', $home_dir, '-g', $ingroup_name, '-s',
++		    $shell, '-u', $new_uid, '-M', $new_name);
++    }
++    else {
++        &systemcall($useradd, '-d', $home_dir, '-g', $ingroup_name, '-s',
++                    $shell, '-u', $new_uid, $new_name);
++    }
+     if(!$disabled_login) {
+         my $usermod = &which('usermod');
+         &systemcall($usermod, '-p', '*', $new_name);
+@@ -524,8 +530,14 @@ if ($action eq "adduser") {
+ 	$shell = $special_shell || $config{"dshell"};
+     $undouser = $new_name;
+     my $useradd = &which('useradd');
+-    &systemcall($useradd, '-d', $home_dir, '-g', $ingroup_name, '-s',
+-		$shell, '-u', $new_uid, $new_name);
++    if ($no_create_home) {
++        &systemcall($useradd, '-d', $home_dir, '-g', $ingroup_name, '-s',
++	    	    $shell, '-u', $new_uid, '-M', $new_name);
++    }
++    else {
++        &systemcall($useradd, '-d', $home_dir, '-g', $ingroup_name, '-s',
++	    	    $shell, '-u', $new_uid, $new_name);
++    }
+     &invalidate_nscd();
+ 
+     create_homedir (1); # copy skeleton data
+-- 
+1.7.1
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libalgorithm/libalgorithm-diff-perl_1.15.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libalgorithm/libalgorithm-diff-perl_1.15.bb
new file mode 100644
index 0000000..4155fad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libalgorithm/libalgorithm-diff-perl_1.15.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Algorithm::Diff - Compute 'intelligent' differences between two \
+files/lists"
+DESCRIPTION = "This is a module for computing the difference between two files, \
+two strings, or any other two lists of things.  It uses an  intelligent \
+algorithm similar to (or identical to) the one used by the Unix `diff' \
+program.   It is guaranteed to find the *smallest possible* set of \
+differences. \
+"
+SECTION = "libs"
+HOMEPAGE = "http://search.cpan.org/~nedkonz/Algorithm-Diff/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://lib/Algorithm/Diff.pm;beginline=406;endline=409;md5=d393b8ad3b8994b9d0ae9299b8a8a1ee"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/N/NE/NEDKONZ/Algorithm-Diff-${PV}.tar.gz"
+SRC_URI[md5sum] = "457cd497a0411a88b47d3741eb176071"
+SRC_URI[sha256sum] = "aa848b75ad3ecc32d31e8651909551e851cceef74a32822c7a3cb35c259f5190"
+
+S = "${WORKDIR}/Algorithm-Diff-${PV}"
+
+inherit cpan
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libauthen/files/run-ptest b/import-layers/meta-openembedded/meta-perl/recipes-perl/libauthen/files/run-ptest
new file mode 100644
index 0000000..c9f9ca9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libauthen/files/run-ptest
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+for case in `find t -type f -name '*.t'`; do
+    perl $case >$case.output 2>&1
+    ret=$?
+    cat $case.output
+    if [ $ret -ne 0 ]; then
+        echo "FAIL: ${case%.t}"
+    elif grep -i 'SKIP' $case.output; then
+        echo "SKIP: ${case%.t}"
+    else
+        echo "PASS: ${case%.t}"
+    fi
+
+    rm -f $case.output
+done
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libauthen/libauthen-sasl-perl_2.16.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libauthen/libauthen-sasl-perl_2.16.bb
new file mode 100644
index 0000000..e658a5f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libauthen/libauthen-sasl-perl_2.16.bb
@@ -0,0 +1,28 @@
+SUMMARY = "SASL Authentication framework for Perl"
+DESCRIPTION = "SASL is a generic mechanism for authentication used by several network \
+protocols. Authen::SASL provides an implementation framework that all \
+protocols should be able to share."
+HOMEPAGE = "http://search.cpan.org/dist/Authen-SASL/"
+SECTION = "libs"
+
+LICENSE = "Artistic-1.0|GPL-1.0+"
+LIC_FILES_CHKSUM = "file://lib/Authen/SASL/Perl.pm;beginline=1;endline=3;md5=17123315bbcda19f484c07227594a609"
+
+DEPENDS = "perl"
+RDEPENDS_${PN} = "libdigest-hmac-perl"
+
+SRC_URI = "http://www.cpan.org/authors/id/G/GB/GBARR/Authen-SASL-${PV}.tar.gz \
+           file://run-ptest \
+          "
+SRC_URI[md5sum] = "7c03a689d4c689e5a9e2f18a1c586b2f"
+SRC_URI[sha256sum] = "6614fa7518f094f853741b63c73f3627168c5d3aca89b1d02b1016dc32854e09"
+
+S = "${WORKDIR}/Authen-SASL-${PV}"
+
+inherit cpan ptest
+
+do_install_ptest () {
+    cp -r ${B}/t ${D}${PTEST_PATH}
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libcapture/libcapture-tiny-perl_0.36.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libcapture/libcapture-tiny-perl_0.36.bb
new file mode 100644
index 0000000..e77dd77
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libcapture/libcapture-tiny-perl_0.36.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Capture::Tiny - Capture STDOUT and STDERR from Perl, XS or external programs."
+DESCRIPTION = "Capture::Tiny provies a simple, portable way to capture \
+almost anything sent to STDOUT or STDERR, regardless of whether it comes \
+from Perl, from XS code or from an external program. Optionally, output can \
+be teed so that it is captured while being passed through to the original \
+filehandles. Yes, it even works on Windows (usually). Stop guessing which of \
+a dozen capturing modules to use in any particular situation and just use \
+this one."
+SECTION = "libs"
+
+HOMEPAGE = "http://search.cpan.org/~dagolden/Capture-Tiny/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=37a4918a30ace24395020e5b8c03b83f"
+
+SRCNAME = "Capture-Tiny"
+SRC_URI = "${CPAN_MIRROR}/authors/id/D/DA/DAGOLDEN/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "db6444111c30ac01a76a4c118241c7b6"
+SRC_URI[sha256sum] = "ab8742e53ad204a421bc82d5813f3c4c85c76581ea10d910d0aefc161f8cb03d"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " perl-module-scalar-util \
+                   perl-module-io-file \
+                   perl-module-extutils-makemaker \
+                   perl-module-file-spec \
+                   perl-module-exporter \
+                   perl-module-carp \
+                   perl-module-test-more \
+                   perl-module-file-temp \
+                   perl-module-lib \
+                   perl-module-overloading \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libclass/libclass-method-modifiers-perl_2.12.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libclass/libclass-method-modifiers-perl_2.12.bb
new file mode 100644
index 0000000..3979b31
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libclass/libclass-method-modifiers-perl_2.12.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Class::Method::Modifiers - provides Moose-like method modifiers"
+DESCRIPTION = "Method modifiers are a convenient feature from the CLOS \
+(Common Lisp Object System) world."
+
+SECTION = "libs"
+
+HOMEPAGE = "https://github.com/moose/Class-Method-Modifiers/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=16fd0ec7b73c0e158426f753943f1058"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/E/ET/ETHER/Class-Method-Modifiers-${PV}.tar.gz"
+SRC_URI[md5sum] = "f55400c7a8134acf3657f8af89bdd7af"
+SRC_URI[sha256sum] = "e44c1073020bf55b8c97975ed77235fd7e2a6a56f29b5c702301721184e27ac8"
+
+S = "${WORKDIR}/Class-Method-Modifiers-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " perl-module-b \
+                   perl-module-base \
+                   perl-module-carp \
+                   perl-module-exporter \
+                   perl-module-strict \
+                   perl-module-warnings \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-random-perl_0.11.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-random-perl_0.11.bb
new file mode 100644
index 0000000..8456e31
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-random-perl_0.11.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Crypt Openssl Random cpan module"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=089c18d635ae273e1727ec385e64063b"
+
+SRC_URI = "http://www.cpan.org/modules/by-module/Crypt/Crypt-OpenSSL-Random-${PV}.tar.gz "
+SRC_URI[md5sum] = "5d71337503e0356ce1ce1481504e5885"
+SRC_URI[sha256sum] = "bb8c81c6a39b9b13a22d818ee9a746242f136f0fadceb6b9776ae615e7524c7a"
+
+S = "${WORKDIR}/Crypt-OpenSSL-Random-${PV}"
+
+DEPENDS += " openssl \
+"
+inherit cpan
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.28.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.28.bb
new file mode 100644
index 0000000..f0c610f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.28.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Crypt Openssl RSA cpan module"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=385c55653886acac3821999a3ccd17b3"
+
+SRC_URI = "http://www.cpan.org/modules/by-module/Crypt/Crypt-OpenSSL-RSA-${PV}.tar.gz "
+
+SRC_URI[md5sum] = "86217a5036fc63779c30420b5fd84129"
+SRC_URI[sha256sum] = "5357f977464bb3a8184cf2d3341851a10d5515b4b2b0dfb88bf78995c0ded7be"
+
+DEPENDS += "openssl"
+
+RDEPENDS_${PN}="libcrypt-openssl-random-perl"
+
+EXTRA_CPANFLAGS = "INC='-I${STAGING_INCDIR}' LIBS='-L${STAGING_LIBDIR} -lssl -L${STAGING_DIR_TARGET}${base_libdir} -lcrypto'"
+
+S = "${WORKDIR}/Crypt-OpenSSL-RSA-${PV}"
+
+inherit cpan
+
+do_compile() {
+    export OTHERLDFLAGS='-Wl,-rpath'
+    cpan_do_compile
+}
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libcurses/libcurses-perl_1.34.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libcurses/libcurses-perl_1.34.bb
new file mode 100644
index 0000000..e7e9d91
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libcurses/libcurses-perl_1.34.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "lib-curses provides an interface between Perl programs and \
+the curses library."
+
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+LIC_FILES_CHKSUM = "file://README;beginline=26;endline=30;md5=0b37356c5e9e28080a3422d82af8af09"
+
+DEPENDS += "perl ncurses "
+
+SRC_URI = "http://www.cpan.org/authors/id/G/GI/GIRAFFED/Curses-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "874c2103cc53552a0faa371c4d9119f6"
+SRC_URI[sha256sum] = "808e44d5946be265af5ff0b90f3d0802108e7d1b39b0fe68a4a446fe284d322b"
+
+S = "${WORKDIR}/Curses-${PV}"
+
+EXTRA_CPANFLAGS = "INC=-I${STAGING_INCDIR} LIBS=-L${STAGING_LIBDIR}"
+
+inherit cpan
+
+do_compile() {
+    export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
+    cpan_do_compile
+}
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl/sqlite-perl-test.pl b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl/sqlite-perl-test.pl
new file mode 100755
index 0000000..40f5916
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl/sqlite-perl-test.pl
@@ -0,0 +1,69 @@
+#! /usr/bin/env perl
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation.
+#
+# Copyright (C) 2013 Wind River Systems, Inc.
+#
+# - It tests DBI and DBD::SQLite could work correctly which means one could
+#   manipulate sqlite database in perl
+# - The test includes create/insert/update/delete/select, the five important
+#   things one can do with a table
+use DBI;
+
+sub execute_sql {
+    my $dbh = $_[0];
+    my $sql = $_[1];
+    my $sth = $dbh->prepare($sql)
+        or die "Couldn't prepare statement: " . $dbh->errstr;
+    $sth->execute();
+    print "$sql\n";
+    return $sth;
+}
+
+sub select_all {
+    my $dbh = $_[0];
+    my $table = $_[1];
+    my $sth = &execute_sql($dbh, "Select * from $table");
+
+    print "-----------------------------------\n";
+    while (@data = $sth->fetchrow_array()) {
+        my $name = $data[0];
+        my $id = $data[1];
+        print "$name: $id\n";
+    }
+    print "\n";
+
+    $sth->finish;
+    return $sth;
+}
+
+# A private, temporary in-memory database is created for the connection.
+# This in-memory database will vanish when the database connection is
+# closed. It is handy for your library tests.
+my $dbfile = ":memory:";
+my $dbh = DBI->connect("DBI:SQLite:dbname=$dbfile","","")
+        or die "Couldn't connect to database: " . DBI->errstr;
+print "Connect to SQLite's in-memory database\n";
+
+&execute_sql($dbh, "Create table tbl1(name varchar(10), id smallint)");
+&execute_sql($dbh, "Insert into tbl1 values('yocto',10)");
+&execute_sql($dbh, "Insert into tbl1 values('windriver', 20)");
+&select_all($dbh, "tbl1");
+
+&execute_sql($dbh, "Update tbl1 set name = 'oe-core' where id = 10");
+&execute_sql($dbh, "Delete from tbl1 where id = 20");
+&select_all($dbh, "tbl1");
+
+$dbh->disconnect;
+print "Test Success\n"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.50.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.50.bb
new file mode 100644
index 0000000..68bfd66
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.50.bb
@@ -0,0 +1,39 @@
+SUMMARY = "A Perl DBI driver for SQLite"
+DESCRIPTION = "DBD::SQLite is a Perl DBI driver for SQLite, that includes the entire \
+thing in the distribution. So in order to get a fast transaction capable \
+RDBMS working for your perl project you simply have to install this \
+module, and nothing else. \
+"
+HOMEPAGE = "http://search.cpan.org/~ishigaki/DBD-SQLite/"
+
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+DEPENDS += "libdbi-perl-native"
+RDEPENDS_${PN} += "libdbi-perl \
+                   sqlite3 \
+                   perl-module-constant \
+                   perl-module-locale \
+                   perl-module-tie-hash \
+"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1726e2117494ba3e13e1c3d93f795360"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/I/IS/ISHIGAKI/DBD-SQLite-${PV}.tar.gz \
+           file://sqlite-perl-test.pl \
+"
+
+SRC_URI[md5sum] = "d56eebfb5f2a14be9413b025e7dca9fe"
+SRC_URI[sha256sum] = "3ac513ab73944fd7d4b672e1fe885dc522b6369d38f46a68e67e0045bf159ce1"
+
+S = "${WORKDIR}/DBD-SQLite-${PV}"
+
+inherit cpan
+
+BBCLASSEXTEND = "native"
+
+do_install_append() {
+    if [ ${PERL_DBM_TEST} = "1" ]; then
+        install -m 755 -D ${WORKDIR}/sqlite-perl-test.pl ${D}/${bindir}/sqlite-perl-test.pl
+    fi
+}
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libdb/libdbi-perl_1.634.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdb/libdbi-perl_1.634.bb
new file mode 100644
index 0000000..0238781
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdb/libdbi-perl_1.634.bb
@@ -0,0 +1,26 @@
+SUMMARY = "The Perl Database Interface"
+DESCRIPTION = "DBI is a database access Application Programming Interface \
+(API) for the Perl Language. The DBI API Specification defines a set \
+of functions, variables and conventions that provide a consistent \
+database interface independent of the actual database being used. \
+"
+HOMEPAGE = "http://search.cpan.org/dist/DBI/"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+RDEPENDS_${PN} = " perl-module-carp \
+                   perl-module-exporter \
+                   perl-module-exporter-heavy \
+                   perl-module-dynaloader \
+"
+
+LIC_FILES_CHKSUM = "file://DBI.pm;beginline=8147;endline=8151;md5=d4e73f2616b2b41334cf2f7d25d827a2"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-${PV}.tar.gz"
+SRC_URI[md5sum] = "4ad15a9c2cc9b68e3fe1f5cadf9cdb30"
+SRC_URI[sha256sum] = "250712f385864818abfba409420d16d9ee61f1cc73ac85159d054a5ee86d1450"
+
+S = "${WORKDIR}/DBI-${PV}"
+
+inherit cpan
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libdevel/libdevel-globaldestruction-perl_0.13.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdevel/libdevel-globaldestruction-perl_0.13.bb
new file mode 100644
index 0000000..1a593cf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdevel/libdevel-globaldestruction-perl_0.13.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Function returning \"${^GLOBAL_PHASE} eq \'DESTRUCT\'\""
+DESCRIPTION = "Perl's global destruction is a little trick to deal with \
+WRT finalizers because it's not ordered and objects can sometimes disappear."
+
+SECTION = "libs"
+
+HOMEPAGE = "https://metacpan.org/pod/Devel-GlobalDestruction/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=53;endline=55;md5=935dadb9423774f53548e5cd5055d41a"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/H/HA/HAARG/Devel-GlobalDestruction-${PV}.tar.gz"
+SRC_URI[md5sum] = "e7be00040827e204b2b6cba2f3166074"
+SRC_URI[sha256sum] = "b29824dc0d322e56da325f05185367eb443694716010b36693dd52ffbe8ec462"
+
+S = "${WORKDIR}/Devel-GlobalDestruction-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " libsub-exporter-progressive-perl \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libdigest/files/run-ptest b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdigest/files/run-ptest
new file mode 100644
index 0000000..c9f9ca9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdigest/files/run-ptest
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+for case in `find t -type f -name '*.t'`; do
+    perl $case >$case.output 2>&1
+    ret=$?
+    cat $case.output
+    if [ $ret -ne 0 ]; then
+        echo "FAIL: ${case%.t}"
+    elif grep -i 'SKIP' $case.output; then
+        echo "SKIP: ${case%.t}"
+    else
+        echo "PASS: ${case%.t}"
+    fi
+
+    rm -f $case.output
+done
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-hmac-perl_1.03.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-hmac-perl_1.03.bb
new file mode 100644
index 0000000..8f1c98c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-hmac-perl_1.03.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Keyed-Hashing for Message Authentication"
+DESCRIPTION = "Keyed-Hashing for Message Authentication"
+HOMEPAGE = "http://search.cpan.org/~gaas/Digest-HMAC-1.03/"
+SECTION = "libs"
+
+LICENSE = "Artistic-1.0|GPLv1+"
+LIC_FILES_CHKSUM = "file://README;beginline=13;endline=17;md5=da980cdc026faa065e5d5004115334e6"
+
+RDEPENDS_${PN} = "libdigest-sha1-perl perl-module-extutils-makemaker perl-module-digest-md5"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-HMAC-${PV}.tar.gz \
+           file://run-ptest \
+          "
+SRC_URI[md5sum] = "e6a5d6f552da16eacb5157ea4369ff9d"
+SRC_URI[sha256sum] = "3bc72c6d3ff144d73aefb90e9a78d33612d58cf1cd1631ecfb8985ba96da4a59"
+
+S = "${WORKDIR}/Digest-HMAC-${PV}"
+
+inherit cpan ptest
+
+do_install_ptest () {
+    cp -r ${B}/t ${D}${PTEST_PATH}
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-sha1-perl_2.13.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-sha1-perl_2.13.bb
new file mode 100644
index 0000000..0371ea6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-sha1-perl_2.13.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Perl interface to the SHA-1 algorithm "
+DESCRIPTION = "Digest::SHA1 - Perl interface to the SHA-1 algorithm"
+HOMEPAGE = "http://search.cpan.org/~gaas/Digest-SHA1-2.13/"
+SECTION = "libs"
+
+LICENSE = "Artistic-1.0|GPLv1+"
+LIC_FILES_CHKSUM = "file://README;beginline=10;endline=14;md5=ff5867ebb4bc1103a7a416aef2fce00a"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-${PV}.tar.gz \
+           file://run-ptest \
+          "
+SRC_URI[md5sum] = "bd22388f268434f2b24f64e28bf1aa35"
+SRC_URI[sha256sum] = "68c1dac2187421f0eb7abf71452a06f190181b8fc4b28ededf5b90296fb943cc"
+
+S = "${WORKDIR}/Digest-SHA1-${PV}"
+
+inherit cpan ptest
+
+do_install_ptest () {
+    cp -r ${B}/t ${D}${PTEST_PATH}
+}
+
+BBCLASSEXTEND="native"
+
+FILES_${PN}-dbg =+ "${libdir}/perl/vendor_perl/*/auto/Digest/SHA1/.debug/"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-locale-perl_1.05.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-locale-perl_1.05.bb
new file mode 100644
index 0000000..748f746
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-locale-perl_1.05.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Encode::Locale - Determine the locale encoding"
+AUTHOR = "Gisle Aas <gisle@activestate.com>"
+HOMEPAGE = "https://metacpan.org/module/Encode::Locale"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;md5=14e8006c2134045725fd81292a323d24"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/G/GA/GAAS/Encode-Locale-${PV}.tar.gz"
+SRC_URI[md5sum] = "fcfdb8e4ee34bcf62aed429b4a23db27"
+SRC_URI[sha256sum] = "176fa02771f542a4efb1dbc2a4c928e8f4391bf4078473bd6040d8f11adb0ec1"
+
+S = "${WORKDIR}/Encode-Locale-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} += "libencode-perl \
+                   libencode-alias-perl \
+                   perl-module-base \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_2.83.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_2.83.bb
new file mode 100644
index 0000000..ee8c67d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_2.83.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Encode - character encodings"
+DESCRIPTION = "The \"Encode\" module provides the interfaces between \
+Perl's strings and the rest of the system.  Perl strings are sequences \
+of characters."
+
+AUTHOR = "Dan Kogai <dankogai+cpan@gmail.com>"
+HOMEPAGE = "https://metacpan.org/release/Encode"
+SECTION = "lib"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://META.json;md5=fdbebc82e925d8acbce42cfad131c4d1"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/D/DA/DANKOGAI/Encode-${PV}.tar.gz"
+SRC_URI[md5sum] = "0d3f59e8ea704497647eded665919053"
+SRC_URI[sha256sum] = "5d3a90e30aabe78dfcf5e816ffb1da1e33475892dbd0075320315cdce5682988"
+
+S = "${WORKDIR}/Encode-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} += " perl-module-bytes \
+                    perl-module-constant \
+                    perl-module-xsloader \
+"
+
+RPROVIDES_${PN} += "libencode-alias-perl \
+                    libencode-byte-perl \
+                    libencode-cjkconstants-perl \
+                    libencode-cn-perl \
+                    libencode-cn-hz-perl \
+                    libencode-config-perl \
+                    libencode-ebcdic-perl \
+                    libencode-encoder-perl \
+                    libencode-encoding-perl \
+                    libencode-gsm0338-perl \
+                    libencode-guess-perl \
+                    libencode-jp-perl \
+                    libencode-jp-h2z-perl \
+                    libencode-jp-jis7-perl \
+                    libencode-kr-perl \
+                    libencode-kr-2022_kr-perl \
+                    libencode-mime-header-perl \
+                    libencode-mime-name-perl \
+                    libencode-symbol-perl \
+                    libencode-tw-perl \
+                    libencode-unicode--perl \
+                    libencode-unicode-utf7-perl \
+                    libencoding-perl \
+                    libencode-internal-perl \
+                    libencode-mime-header-iso_2022_jp-perl \
+                    libencode-utf8-perl \
+                    libencode-utf_ebcdic-perl \
+                    "
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-config-perl_0.008.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-config-perl_0.008.bb
new file mode 100644
index 0000000..e93d388
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-config-perl_0.008.bb
@@ -0,0 +1,24 @@
+SUMMARY = "ExtUtils::Config - A wrapper for perl's configuration"
+DESCRIPTION = "ExtUtils::Config is an abstraction around the %Config hash."
+SECTION = "libs"
+
+HOMEPAGE = "http://search.cpan.org/~leont/ExtUtils-Config/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1932ab4d8b84c25fd7967aa18088e57e"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/ExtUtils-Config-${PV}.tar.gz"
+SRC_URI[md5sum] = "565a7b09c7cac5907a25bbe2c959a717"
+SRC_URI[sha256sum] = "ae5104f634650dce8a79b7ed13fb59d67a39c213a6776cfdaa3ee749e62f1a8c"
+
+S = "${WORKDIR}/ExtUtils-Config-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " perl-module-extutils-makemaker \
+                   perl-module-data-dumper \
+                   perl-module-test-more \
+                   perl-module-file-temp \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.09.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.09.bb
new file mode 100644
index 0000000..d13cb03
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.09.bb
@@ -0,0 +1,37 @@
+SUMMARY = "ExtUtils::CppGuess - guess C++ compiler and flags"
+DESCRIPTION = "ExtUtils::CppGuess attempts to guess the system's C++ \
+compiler that is compatible with the C compiler that your perl was built \
+with. \
+It can generate the necessary options to the Module::Build constructor or \
+to ExtUtils::MakeMaker's WriteMakefile function."
+SECTION = "libs"
+
+HOMEPAGE = "http://search.cpan.org/~smueller/ExtUtils-CppGuess/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=81;endline=84;md5=84c0390b90ea8c6702ce659b67bed699"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/E/ET/ETJ/ExtUtils-CppGuess-${PV}.tar.gz"
+SRC_URI[md5sum] = "f8ada38ee4ad86a4f1e20d8525ce0c99"
+SRC_URI[sha256sum] = "48625195a88c0f2ddc37bbd7a06346aa68ffb6948ba78da3aea47c0db2540f65"
+
+S = "${WORKDIR}/ExtUtils-CppGuess-${PV}"
+
+inherit cpan
+
+do_install () {
+        cpan_do_install
+}
+
+RDEPENDS_${PN} = " libcapture-tiny-perl \
+                   perl-module-scalar-util \
+                   perl-module-io-file \
+                   perl-module-extutils-makemaker \
+                   perl-module-file-spec \
+                   perl-module-exporter \
+                   perl-module-carp \
+                   perl-module-file-temp \
+                   perl-module-lib \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-helpers-perl_0.022.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-helpers-perl_0.022.bb
new file mode 100644
index 0000000..9a0234e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-helpers-perl_0.022.bb
@@ -0,0 +1,29 @@
+SUMMARY = "ExtUtils::Helpers - Various portability utilities for module builders"
+DESCRIPTION = "This module provides various portable helper function for module building modules."
+SECTION = "libs"
+
+HOMEPAGE = "http://search.cpan.org/~leont/ExtUtils-Helpers/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=307057ce232899f5caa8858560c7274b"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/ExtUtils-Helpers-${PV}.tar.gz"
+SRC_URI[md5sum] = "cf4fd6f8caa6daac33b1111c9e93162b"
+SRC_URI[sha256sum] = "d3f8cf700fb3414ca1260089755cbf64041455e4b744110677b1ba5bb9a3aa95"
+
+S = "${WORKDIR}/ExtUtils-Helpers-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " perl-module-file-copy \
+                   perl-module-extutils-makemaker \
+                   perl-module-exporter \
+                   perl-module-carp \
+                   perl-module-test-more \
+                   perl-module-text-parsewords \
+                   perl-module-load \
+                   perl-module-file-temp \
+                   perl-module-file-spec-functions \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-installpaths-perl_0.011.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-installpaths-perl_0.011.bb
new file mode 100644
index 0000000..6eb434a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-installpaths-perl_0.011.bb
@@ -0,0 +1,25 @@
+SUMMARY = "ExtUtils::InstallPaths - Build.PL install path logic made easy"
+DESCRIPTION = "This module tries to make install path resolution as easy \
+as possible."
+SECTION = "libs"
+
+HOMEPAGE = "http://search.cpan.org/~leont/ExtUtils-InstallPaths/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b6fa54d873ce6bcf4809ea88bdf97769"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/ExtUtils-InstallPaths-${PV}.tar.gz"
+SRC_URI[md5sum] = "9c75894c3c8c899ab6bfafc5eaa97999"
+SRC_URI[sha256sum] = "7609fa048cdcf1451cad5b1d7d494f30e3d5bad0672d15404f1ea60e1df0067c"
+
+S = "${WORKDIR}/ExtUtils-InstallPaths-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " perl-module-extutils-makemaker \
+                   perl-module-data-dumper \
+                   perl-module-test-more \
+                   perl-module-file-temp \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-parsexs-perl_3.24.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-parsexs-perl_3.24.bb
new file mode 100644
index 0000000..1566f75
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-parsexs-perl_3.24.bb
@@ -0,0 +1,47 @@
+SUMMARY = "ExtUtils::ParseXS - converts Perl XS code into C code"
+DESCRIPTION = "\"ExtUtils::ParseXS\" will compile XS code into C code by \
+embedding the constructs necessary to let C functions manipulate Perl \
+values and creates the glue necessary to let Perl access those functions. \
+The compiler uses typesmapes to determine how to map C function parameters \
+and variables to Perl values."
+
+SECTION = "libs"
+
+HOMEPAGE = "http://metapan.org/release/ExtUtils-ParseXS/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=121;endline=130;md5=10ddb3a673b4c732022ac899968ea9cc"
+
+SRCNAME = "ExtUtils-ParseXS"
+SRC_URI = "${CPAN_MIRROR}/authors/id/S/SM/SMUELLER/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "e6be3f1d493e04ed805576104cf4328b"
+SRC_URI[sha256sum] = "30b60b8208fc9b7746ed934b678bb9618a8f28994dae8774548353a7b550371e"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " perl-module-carp \
+                   perl-module-cwd \
+                   perl-module-dynaloader \
+                   perl-module-extutils-cbuilder \
+		   perl-module-extutils-makemaker \
+                   perl-module-file-basename \
+                   perl-module-file-spec \
+		   perl-module-lib \
+                   perl-module-symbol \
+                   perl-module-test-more \
+"
+
+RPROVIDES_${PN} += " libextutils-parsexs-constants-perl \
+                     libextutils-parsexs-countlines-perl \
+                     libextutils-parsexs-eval-perl \
+                     libextutils-parsexs-utilities-perl \
+                     libextutils-typemaps-perl \
+                     libextutils-typemaps-cmd-perl \
+                     libextutils-typemaps-inputmap-perl \
+                     libextutils-typemaps-outputmap-perl \
+                     libextutils-typemaps-type-perl \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libhtml/files/bin-htmltree-fix-shebang.patch b/import-layers/meta-openembedded/meta-perl/recipes-perl/libhtml/files/bin-htmltree-fix-shebang.patch
new file mode 100644
index 0000000..4266f05
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libhtml/files/bin-htmltree-fix-shebang.patch
@@ -0,0 +1,25 @@
+From 28ee994780459c3552d3cbbd6b011d054a41c439 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Sun, 8 Nov 2015 23:33:31 -0500
+Subject: [PATCH] bin/htmltree: fix shebang
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ bin/htmltree | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bin/htmltree b/bin/htmltree
+index 8bf3db2..f9927e5 100755
+--- a/bin/htmltree
++++ b/bin/htmltree
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl
++#!/usr/bin/env perl
+ # Time-stamp: "2000-10-02 14:48:15 MDT"
+ #
+ # Parse the given HTML file(s) and dump the parse tree
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-parser-perl_3.72.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-parser-perl_3.72.bb
new file mode 100644
index 0000000..9047d9f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-parser-perl_3.72.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "This package contains the Parser.pm module with friends."
+
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+LIC_FILES_CHKSUM = "file://README;md5=b0459e4426b94753b9a9b8a15f1223b8"
+
+DEPENDS += "perl"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/HTML-Parser-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "eb7505e5f626913350df9dd4a03d54a8"
+SRC_URI[sha256sum] = "ec28c7e1d9e67c45eca197077f7cdc41ead1bb4c538c7f02a3296a4bb92f608b"
+
+S = "${WORKDIR}/HTML-Parser-${PV}"
+
+EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}"
+
+inherit cpan
+
+do_compile() {
+	export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
+	cpan_do_compile
+}
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tree-perl_5.03.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tree-perl_5.03.bb
new file mode 100644
index 0000000..8eb0e06
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tree-perl_5.03.bb
@@ -0,0 +1,42 @@
+SUMMARY = "HTML::TreeBuilder - Parser that builds a HTML syntax tree"
+DESCRIPTION = "This distribution contains a suite of modules for representing, \
+creating, and extracting information from HTML syntax trees; there is \
+also relevent documentation.  These modules used to be part of the \
+libwww-perl distribution, but are now unbundled in order to facilitate \
+a separate development track."
+SECTION = "libs"
+
+HOMEPAGE = "http://www.cpan.org/authors/id/C/CJ/CJM/HTML-Tree-${PV}.readme"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3eb57a8958cae73cb65e7d0c26339242"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/C/CJ/CJM/HTML-Tree-${PV}.tar.gz \
+           file://bin-htmltree-fix-shebang.patch \
+"
+SRC_URI[md5sum] = "d9271d60b872ed6fbe68b2d0fe8c450e"
+SRC_URI[sha256sum] = "7d6d73fca622aa74855a8b088faa39454a0f91b7af83c9ec0387f01eefc2148f"
+
+S = "${WORKDIR}/HTML-Tree-${PV}"
+
+inherit cpan_build
+
+DEPENDS += "libmodule-build-perl-native \
+"
+
+RPROVIDES_${PN} = " libhtml-element-perl \
+		    libhtml-tree-assubs-perl \
+		    libhtml-tree-perl \
+		    libhtml-treebuilder-perl \
+"
+
+RDEPENDS_${PN} = " perl-module-b \
+                   perl-module-base \
+                   perl-module-strict \
+                   perl-module-warnings \
+                   perl-module-exporter \
+                   perl-module-carp \
+"
+
+BBCLASSEXTEND = "native"
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libimport/libimport-into-perl_1.002004.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libimport/libimport-into-perl_1.002004.bb
new file mode 100644
index 0000000..af08d63
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libimport/libimport-into-perl_1.002004.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Import::Into - import packages into other packages"
+DESCRIPTION = "Writing exporters is a pain. Some use \"Exporter\", some use \
+\"Sub::Exporter\", some use \"Moose::Exporter\", some use \
+\"Exporter::Declare\"... and some things are pragmas.\
+\
+Exporting on someone else's behalf is harder. The exporters don't provide a \
+consistent API for this, and pragmas need to have their import method called \
+directly, since they effect the current unit of compilation. \
+\
+\"Import::Into\" provides global methods to make this painless."
+
+SECTION = "libs"
+
+HOMEPAGE = "https://metacpan.org/pod/Import-Into/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=209;endline=223;md5=3cf363f1e405dea6db2c6cd0ef23680c"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/E/ET/ETHER/Import-Into-${PV}.tar.gz"
+SRC_URI[md5sum] = "70f2f3b08a5b706ee382a8448c346cb1"
+SRC_URI[sha256sum] = "decb259bc2ff015fe3dac85e4a287d4128e9b0506a0b2c5fa7244836a68b1084"
+
+S = "${WORKDIR}/Import-Into-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " libmodule-runtime-perl \
+                   perl-module-strict \
+                   perl-module-warnings \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libio/files/run-ptest b/import-layers/meta-openembedded/meta-perl/recipes-perl/libio/files/run-ptest
new file mode 100644
index 0000000..c9f9ca9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libio/files/run-ptest
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+for case in `find t -type f -name '*.t'`; do
+    perl $case >$case.output 2>&1
+    ret=$?
+    cat $case.output
+    if [ $ret -ne 0 ]; then
+        echo "FAIL: ${case%.t}"
+    elif grep -i 'SKIP' $case.output; then
+        echo "SKIP: ${case%.t}"
+    else
+        echo "PASS: ${case%.t}"
+    fi
+
+    rm -f $case.output
+done
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_1.997.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_1.997.bb
new file mode 100644
index 0000000..ba5788a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_1.997.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Perl library for transparent SSL"
+DESCRIPTION = "This module is a true drop-in replacement for IO::Socket::INET that \
+uses SSL to encrypt data before it is transferred to a remote server \
+or client. IO::Socket::SSL supports all the extra features that one \
+needs to write a full-featured SSL client or server application: \
+multiple SSL contexts, cipher selection, certificate verification, and \
+SSL version selection. As an extra bonus, it works perfectly with \
+mod_perl."
+HOMEPAGE = "http://search.cpan.org/dist/IO-Socket-SSL/"
+SECTION = "libs"
+
+LICENSE = "Artistic-1.0|GPLv1+"
+LIC_FILES_CHKSUM = "file://META.yml;beginline=11;endline=11;md5=963ce28228347875ace682de56eef8e8"
+
+RDEPENDS_${PN} += "perl-module-scalar-util libnet-ssleay-perl"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SU/SULLR/IO-Socket-SSL-${PV}.tar.gz \
+           file://run-ptest \
+          "
+SRC_URI[md5sum] = "2a6268bb42da81e69d1c1feb2fcb0eea"
+SRC_URI[sha256sum] = "acdb67b5b63aea5b7e70c3e4c70a16128810329592b63753a38c794aff76a1dd"
+
+S = "${WORKDIR}/IO-Socket-SSL-${PV}"
+
+inherit cpan ptest
+
+do_install_append () {
+    mkdir -p ${D}${docdir}/${PN}/
+    cp ${S}/BUGS ${D}${docdir}/${PN}/
+    cp ${S}/Changes ${D}${docdir}/${PN}/
+    cp ${S}/README ${D}${docdir}/${PN}/
+    cp -pRP ${S}/docs ${D}${docdir}/${PN}/
+    cp -pRP ${S}/certs ${D}${docdir}/${PN}/
+    cp -pRP ${S}/example ${D}${docdir}/${PN}/
+    cp -pRP ${S}/util ${D}${docdir}/${PN}/
+}
+
+do_install_ptest () {
+    cp -r ${B}/t ${D}${PTEST_PATH}
+    cp -r ${B}/certs ${D}${PTEST_PATH}
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libio/libio-stringy-perl_2.111.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libio/libio-stringy-perl_2.111.bb
new file mode 100644
index 0000000..b890a3e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libio/libio-stringy-perl_2.111.bb
@@ -0,0 +1,31 @@
+SUMMARY = "IO-stringy - I/O on in-core objects like strings and arrays"
+DESCRIPTION = "This toolkit primarily provides modules for performing both \
+traditional and object-oriented i/o on things *other* than normal \
+filehandles; in particular, IO::Scalar, IO::ScalarArray, and IO::Lines."
+
+HOMEPAGE = "http://www.zeegee.com/products/IO-stringy/"
+SECTION = "devel"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=01406e4ff2e60d88d42ef1caebdd0011"
+
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/D/DS/DSKOLL/IO-stringy-${PV}.tar.gz"
+SRC_URI[md5sum] = "e91acf0a800b190d13585a47de775bdd"
+SRC_URI[sha256sum] = "8c67fd6608c3c4e74f7324f1404a856c331dbf48d9deda6aaa8296ea41bf199d"
+
+S = "${WORKDIR}/IO-stringy-${PV}"
+
+inherit cpan
+
+RPROVIDES_${PN} += " libio-atomicfile-perl \
+		     libio-innerfile-perl \
+                     libio-lines-perl \
+                     libio-scalar-perl \
+                     libio-scalararray-perl \
+                     libio-wrap-perl \
+                     libio-wraptie-perl \
+		     libio-wraptie-master-perl \
+		     libio-wraptie-slave-perl \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libipc/libipc-signal-perl_1.00.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libipc/libipc-signal-perl_1.00.bb
new file mode 100644
index 0000000..b518164
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libipc/libipc-signal-perl_1.00.bb
@@ -0,0 +1,18 @@
+SUMMARY = "IPC::Signal - Utility functions dealing with signals"
+DESCRIPTION = "IPC::Signal - This module contains utility functions for \
+dealing with signals."
+
+HOMEPAGE = "http://search.cpan.org/~rosch/IPC-Signal-1.00/"
+SECTION = "libs"
+
+LICENSE = "Artistic-1.0|GPLv1+"
+LIC_FILES_CHKSUM = "file://README;beginline=16;endline=18;md5=f36550f59a0ae5e6e3b0be6a4da60d26"
+
+S = "${WORKDIR}/IPC-Signal-${PV}"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RO/ROSCH/IPC-Signal-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "4cebf17fdf1785eaf8c151bf2e8c360a"
+SRC_URI[sha256sum] = "7c21f9c8c2d0c0f0f0f46e77de7c3d879dd562668ddf0525875c38cef2076fd0"
+
+inherit cpan
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libmime/files/run-ptest b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmime/files/run-ptest
new file mode 100644
index 0000000..c9f9ca9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmime/files/run-ptest
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+for case in `find t -type f -name '*.t'`; do
+    perl $case >$case.output 2>&1
+    ret=$?
+    cat $case.output
+    if [ $ret -ne 0 ]; then
+        echo "FAIL: ${case%.t}"
+    elif grep -i 'SKIP' $case.output; then
+        echo "SKIP: ${case%.t}"
+    else
+        echo "PASS: ${case%.t}"
+    fi
+
+    rm -f $case.output
+done
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-types-perl_2.04.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-types-perl_2.04.bb
new file mode 100644
index 0000000..ef53029
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-types-perl_2.04.bb
@@ -0,0 +1,26 @@
+SUMMARY = "MIME::Types - Definition of MIME types"
+DESCRIPTION = "MIME types are used in MIME compliant lines, for instance \
+as part of e-mail and HTTP traffic, to indicate the type of content which \
+is transmitted. Sometimes real knowledge about a mime-type is need.\
+\n\
+This module maintains a set of MIME::Type objects, which each describe \
+one known mime type."
+HOMEPAGE = "http://search.cpan.org/~markov/MIME-Types-${PV}"
+SECTION = "libraries"
+
+LICENSE = "Artistic-1.0|GPLv1+"
+LIC_FILES_CHKSUM = "file://META.yml;beginline=11;endline=11;md5=963ce28228347875ace682de56eef8e8"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MARKOV/MIME-Types-${PV}.tar.gz \
+           file://run-ptest \
+          "
+SRC_URI[md5sum] = "e292bbf7756bb4999407f3f660697168"
+SRC_URI[sha256sum] = "22b6069d372d587b1f2ecc6d0aaf50fb5c64920caed8c214b9884e64538acc8f"
+
+S = "${WORKDIR}/MIME-Types-${PV}"
+
+inherit cpan ptest
+
+do_install_ptest () {
+    cp -r ${B}/t ${D}${PTEST_PATH}
+}
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-build-perl_0.31.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-build-perl_0.31.bb
new file mode 100644
index 0000000..c0fa06d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-build-perl_0.31.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Module::Build::Tiny - A tiny replacement for Module::Build"
+DESCRIPTION = "Many Perl distributions use a Build.PL file instead of a \
+Makefile.PL file to drive distribution configuration, build, test and \
+installation. Traditionally, Build.PL uses Module::Build as the underlying \
+build system. This module provides a simple, lightweight, drop-in replacement. \
+Whereas Module::Build has over 6,700 lines of code; this module has less than \
+120, yet supports the features needed by most distributions."
+SECTION = "libs"
+
+HOMEPAGE = "http://search.cpan.org/~kwilliams/Module-Build-0.31/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=43339d8f9d3a956ee9eceb07717ee95e"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/K/KW/KWILLIAMS/Module-Build-${PV}.tar.gz"
+SRC_URI[md5sum] = "3d4fdffe58f6236253767e5a71edf29b"
+SRC_URI[sha256sum] = "e2f723be8d6c70b4ddbca3b5e32e52e6e98eae8f43e34d7ede87efcb1796bbb5"
+
+S = "${WORKDIR}/Module-Build-${PV}"
+
+inherit cpan_build
+
+do_install () {
+        cpan_build_do_install
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-build-tiny-perl_0.036.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-build-tiny-perl_0.036.bb
new file mode 100644
index 0000000..761f17c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-build-tiny-perl_0.036.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Module::Build::Tiny - A tiny replacement for Module::Build"
+DESCRIPTION = "Many Perl distributions use a Build.PL file instead of a \
+Makefile.PL file to drive distribution configuration, build, test and \
+installation. Traditionally, Build.PL uses Module::Build as the underlying \
+build system. This module provides a simple, lightweight, drop-in replacement. \
+Whereas Module::Build has over 6,700 lines of code; this module has less than \
+120, yet supports the features needed by most distributions."
+SECTION = "libs"
+
+HOMEPAGE = "http://search.cpan.org/~leont/Module-Build-Tiny/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aaca61412962cf972aec0cdad99d0a84"
+
+DEPENDS = "libextutils-config-perl-native libextutils-helpers-perl-native libextutils-installpaths-perl-native"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/Module-Build-Tiny-${PV}.tar.gz"
+SRC_URI[md5sum] = "bfc92c655158ce623f0ced94f4ef02e5"
+SRC_URI[sha256sum] = "d6706bf35e080e5af20cccf4fd565cc8af9c2a1e2e2075cee0a7de42cf0d6df9"
+
+S = "${WORKDIR}/Module-Build-Tiny-${PV}"
+
+inherit cpan_build
+
+do_install () {
+        cpan_build_do_install
+}
+
+RDEPENDS_${PN} = " libextutils-config-perl \
+                   libextutils-helpers-perl \
+                   libextutils-installpaths-perl \
+                   perl-module-xsloader \
+                   perl-module-file-spec \
+                   perl-module-io-handle \
+                   perl-module-tap-harness-env \
+                   perl-module-ipc-open3 \
+                   perl-module-file-path \
+                   perl-module-cpan \
+                   perl-module-extutils-cbuilder \
+                   perl-module-getopt-long \
+                   perl-module-extutils-makemaker \
+                   perl-module-exporter \
+                   perl-module-carp \
+                   perl-module-test-more \
+                   perl-module-text-parsewords \
+                   perl-module-load \
+                   perl-module-file-temp \
+                   perl-module-data-dumper \
+                   perl-module-extutils-parsexs \
+                   perl-module-pod-man \
+                   perl-module-json-pp \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb
new file mode 100644
index 0000000..76cac50
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb
@@ -0,0 +1,39 @@
+SUMMARY = "Automatically give your module the ability to have plugins"
+DESCRIPTION = "Provides a simple but, hopefully, extensible way of \
+having 'plugins' for your module. Obviously this isn't going to be the \
+be all and end all of solutions but it works for me.\
+\
+Essentially all it does is export a method into your namespace that \
+looks through a search path for .pm files and turn those into class \
+names.\
+\
+Optionally it instantiates those classes for you."
+SECTION = "libs"
+
+AUTHOR = "Simon Wistow <simon@thegestalt.org>"
+HOMEPAGE = "https://github.com/simonwistow/Module-Pluggable"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=322;endline=325;md5=086450ce010f6fda25db0b38fcc41086"
+
+SRCNAME = "Module-Pluggable"
+SRC_URI = "https://github.com/moto-timo/${SRCNAME}/archive/${PV}.tar.gz"
+SRC_URI[md5sum] = "e32475d6ff5843f738cedacd3b7a2cdb"
+SRC_URI[sha256sum] = "58c62292eea6d06959eba1b97598650813211265403242d57efb2f605c96059f"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " perl-module-base \
+		   perl-module-deprecate \
+                   perl-module-file-basename \
+		   perl-module-file-find \
+                   perl-module-file-spec \
+		   perl-module-file-spec-functions \
+		   perl-module-if \
+                   perl-module-test-more \
+"
+
+BBCLASSEXTEND = "native"
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-runtime-perl_0.015.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-runtime-perl_0.015.bb
new file mode 100644
index 0000000..b92842c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-runtime-perl_0.015.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Module::Runtime - runtime module handling"
+DESCRIPTION = "The functions exported by this module deal with runtime \
+handling of Perl modules, which are normally handled at compile time. This \
+module avoids using any other modules, so that it can be used in low-level \
+infrastructure. \
+The parts of this module that work with module names apply the same syntax \
+that is used for barewords in Perl source. In principle this syntax can vary \
+between versions of Perl, and this module applies the syntax of the Perl on \
+which it is running. In practice the usable syntax hasn't changed yet, but \
+there's a good chance of it changing in Perl 5.18. \
+The functions of this module whose purpose is to load modules include \
+workarounds for three old Perl core bugs regarding require. These workarounds \
+are applied on any Perl version where the bugs exist, except for a case where \
+one of the bugs cannot be adequately worked around in pure Perl."
+SECTION = "libs"
+
+HOMEPAGE = "http://search.cpan.org/~zefram/Module-Runtime/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=45;endline=46;md5=62e24a93342fede7221d66335c716f34"
+
+SRCNAME = "module-runtime"
+SRC_URI = "https://github.com/moto-timo/${SRCNAME}/archive/${PV}.tar.gz"
+SRC_URI[md5sum] = "ad6ca179c978aa02ac8aa29244ef9beb"
+SRC_URI[sha256sum] = "59effa82b3f6986d28de6154a8f2428157691004d951f936a81e851f4dbcb045"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " perl-module-test-more \
+                   perl-module-strict \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.000002.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.000002.bb
new file mode 100644
index 0000000..fe119fa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.000002.bb
@@ -0,0 +1,44 @@
+SUMMARY = "Moo - Minimalist Object Orientation (with Moose compatibility)"
+DESCRIPTION = "This module us an extremely light-weight subset of \"Moose\" \
+optimised for rapid startup and \"pay only for what you use\"."
+
+SECTION = "libs"
+
+HOMEPAGE = "http://metapan.org/release/Moo/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=688;endline=733;md5=27efedd175eeaddbd18f4e3572bd72a8"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/H/HA/HAARG/Moo-${PV}.tar.gz"
+SRC_URI[md5sum] = "8b84a7289fc6247de5ec5d151105fd6b"
+SRC_URI[sha256sum] = "fb4bfa751f0dd06bd70f2e06e811f85a640501f263c228a8efafbf6b26691fd4"
+
+S = "${WORKDIR}/Moo-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " libclass-method-modifiers-perl \
+                   libdevel-globaldestruction-perl \
+                   libmodule-runtime-perl \
+                   librole-tiny-perl \
+                   perl-module-constant \
+                   perl-module-exporter \
+                   perl-module-mro \
+                   perl-module-scalar-util \
+"
+
+RPROVIDES_${PN} = " libmethod-inliner-perl \
+                    libmethod-generate-accessor-perl \
+                    libmethod-generate-buildall-perl \
+                    libmethod-generate-constructor-perl \
+                    libmethod-generate-demolishall-perl \
+                    libmoo-perl \
+                    libmoo-handlemoose-perl \
+                    libmoo-handlemoose-fakemetaclass-perl \
+                    libmoo-object-perl \
+                    libmoo-role-perl \
+                    libsub-defer-perl \
+                    libsub-quote-perl \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/files/0001-libnet-ssleay-perl-Disable-test-that-fails-with-open.patch b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/files/0001-libnet-ssleay-perl-Disable-test-that-fails-with-open.patch
new file mode 100644
index 0000000..393ee19
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/files/0001-libnet-ssleay-perl-Disable-test-that-fails-with-open.patch
@@ -0,0 +1,70 @@
+From e7a2d3a57fd51f0d4d5b3fcb6669b1876d4b18d2 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 10 Nov 2015 01:23:18 -0500
+Subject: [PATCH 1/2] libnet-ssleay-perl: Disable test that fails with
+ openssl-1.0.2b or above
+
+Run testsuits:
+t/local/33_x509_create_cert............NOK 39/123
+not ok 39 - PEM_get_string_PrivateKey+passwd+enc_alg
+|   Failed test 'PEM_get_string_PrivateKey+passwd+enc_alg'
+|   at t/local/33_x509_create_cert.t line 104.
+|                   undef
+|     doesn't match '(?^:-----BEGIN (ENCRYPTED|RSA) PRIVATE KEY-----)'
+
+This is due to the following change in OpenSSL:
+(git://git.openssl.org/openssl.git)
+......
+4d9dc0c269be87b92da188df1fbd8bfee4700eb3 is the first bad commit
+commit 4d9dc0c269be87b92da188df1fbd8bfee4700eb3
+Author: Dr. Stephen Henson <steve@openssl.org>
+Date: Thu May 28 15:44:20 2015 +0100
+
+check for error when creating PKCS#8 structure
+
+Reviewed-by: Rich Salz <rsalz@openssl.org>
+(cherry picked from commit 2849707fa65d2803e6d1c1603fdd3fd1fdc4c6cc)
+......
+
+Upstream-Status: Backport from upstream latest 1.72:
+http://www.cpan.org/authors/id/M/MI/MIKEM/Net-SSLeay-1.72.tar.gz
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ t/local/33_x509_create_cert.t | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/t/local/33_x509_create_cert.t b/t/local/33_x509_create_cert.t
+index 2f2c013..3e653ce 100755
+--- a/t/local/33_x509_create_cert.t
++++ b/t/local/33_x509_create_cert.t
+@@ -2,7 +2,7 @@
+ 
+ use strict;
+ use warnings;
+-use Test::More tests => 123;
++use Test::More tests => 121;
+ use Net::SSLeay qw/MBSTRING_ASC MBSTRING_UTF8 EVP_PK_RSA EVP_PKT_SIGN EVP_PKT_ENC/;
+ use File::Spec;
+ use utf8;
+@@ -99,10 +99,13 @@ is(Net::SSLeay::X509_NAME_cmp($ca_issuer, $ca_subject), 0, "X509_NAME_cmp");
+   }
+   ok(my $alg1 = Net::SSLeay::EVP_get_cipherbyname("DES-EDE3-CBC"), "EVP_get_cipherbyname");
+   like(my $key_pem3 = Net::SSLeay::PEM_get_string_PrivateKey($pk,"password",$alg1), qr/-----BEGIN (ENCRYPTED|RSA) PRIVATE KEY-----/, "PEM_get_string_PrivateKey+passwd+enc_alg");
+-  
+-  ok(my $alg2 = Net::SSLeay::EVP_get_cipherbyname("DES-EDE3-OFB"), "EVP_get_cipherbyname");
+-  like(my $key_pem4 = Net::SSLeay::PEM_get_string_PrivateKey($pk,"password",$alg2), qr/-----BEGIN (ENCRYPTED|RSA) PRIVATE KEY-----/, "PEM_get_string_PrivateKey+passwd+enc_alg");
+-  
++
++# DES-EDE3-OFB has no ASN1 support, detected by changes to do_pk8pkey as of openssl 1.0.1n
++# https://git.openssl.org/?p=openssl.git;a=commit;h=4d9dc0c269be87b92da188df1fbd8bfee4700eb3
++# this test now fails
++#  ok(my $alg2 = Net::SSLeay::EVP_get_cipherbyname("DES-EDE3-OFB"), "EVP_get_cipherbyname");
++#  like(my $key_pem4 = Net::SSLeay::PEM_get_string_PrivateKey($pk,"password",$alg2), qr/-----BEGIN (ENCRYPTED|RSA) PRIVATE KEY-----/, "PEM_get_string_PrivateKey+passwd+enc_alg");
++
+   is(Net::SSLeay::X509_NAME_print_ex($name), "O=Company Name,C=UK,CN=Common name text X509", "X509_NAME_print_ex");  
+ 
+   # 2014-06-06: Sigh, some versions of openssl have this patch, which afffects the results of this test:
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/files/0002-Recent-1.0.2-betas-have-dropped-the-SSLv3_method-fun.patch b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/files/0002-Recent-1.0.2-betas-have-dropped-the-SSLv3_method-fun.patch
new file mode 100644
index 0000000..e3650b8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/files/0002-Recent-1.0.2-betas-have-dropped-the-SSLv3_method-fun.patch
@@ -0,0 +1,75 @@
+From d94f2d3f96db529383b22f2dc294847190d1bfbe Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 10 Nov 2015 02:11:30 -0500
+Subject: [PATCH 2/2] Recent 1.0.2 betas have dropped the SSLv3_method
+ function. This patch leaves out the function on newer versions, much the same
+ as the SSLv2 deprecation is handled. It also fixes the ALPN test, which was
+ incorrectly failing on OpenSSL due to the LibreSSL check (earlier versions
+ bailed out before that line). Signed-off-by: Patch from Tom Molesworth
+
+Upstream-Status: Backport from upstream 1.67
+http://www.cpan.org/authors/id/M/MI/MIKEM/Net-SSLeay-1.67.tar.gz
+https://rt.cpan.org/Public/Bug/Display.html?id=101484
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ SSLeay.xs                 | 12 ++++++++++++
+ t/local/41_alpn_support.t |  2 +-
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/SSLeay.xs b/SSLeay.xs
+index c31396d..1fd4fab 100644
+--- a/SSLeay.xs
++++ b/SSLeay.xs
+@@ -1409,6 +1409,9 @@ SSL_CTX_v2_new()
+ #endif
+ #endif
+ 
++#ifndef OPENSSL_NO_SSL3
++#if OPENSSL_VERSION_NUMBER < 0x10002000L
++
+ SSL_CTX *
+ SSL_CTX_v3_new()
+      CODE:
+@@ -1416,6 +1419,9 @@ SSL_CTX_v3_new()
+      OUTPUT:
+      RETVAL
+ 
++#endif
++#endif
++
+ SSL_CTX *
+ SSL_CTX_v23_new()
+      CODE:
+@@ -3758,9 +3764,15 @@ SSLv2_method()
+ #endif
+ #endif
+ 
++#ifndef OPENSSL_NO_SSL3
++#if OPENSSL_VERSION_NUMBER < 0x10002000L
++
+ const SSL_METHOD *
+ SSLv3_method()
+ 
++#endif
++#endif
++
+ const SSL_METHOD *
+ TLSv1_method()
+ 
+diff --git a/t/local/41_alpn_support.t b/t/local/41_alpn_support.t
+index ba984b5..87a0214 100644
+--- a/t/local/41_alpn_support.t
++++ b/t/local/41_alpn_support.t
+@@ -11,7 +11,7 @@ use Config;
+ 
+ BEGIN {
+   plan skip_all => "openssl 1.0.2 required" unless Net::SSLeay::SSLeay >= 0x10002000;
+-  plan skip_all => "libressl not supported" if &Net::SSLeay::LIBRESSL_VERSION_NUMBER;
++  plan skip_all => "libressl not supported" if defined &Net::SSLeay::LIBRESSL_VERSION_NUMBER;
+   plan skip_all => "fork() not supported on $^O" unless $Config{d_fork};
+ }
+ 
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/files/run-ptest b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/files/run-ptest
new file mode 100644
index 0000000..c9f9ca9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/files/run-ptest
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+for case in `find t -type f -name '*.t'`; do
+    perl $case >$case.output 2>&1
+    ret=$?
+    cat $case.output
+    if [ $ret -ne 0 ]; then
+        echo "FAIL: ${case%.t}"
+    elif grep -i 'SKIP' $case.output; then
+        echo "SKIP: ${case%.t}"
+    else
+        echo "PASS: ${case%.t}"
+    fi
+
+    rm -f $case.output
+done
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_0.81.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_0.81.bb
new file mode 100644
index 0000000..9dc4268
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_0.81.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "This package contains the DNS.pm module with friends."
+
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+LIC_FILES_CHKSUM = "file://README;md5=524da96a3365f2caff73fea0ae67c3a0"
+
+DEPENDS += "perl"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/N/NL/NLNETLABS/Net-DNS-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "26375d4310beb108b0e2b3bf30403ee5"
+SRC_URI[sha256sum] = "b36c8ead6edf68da5d9de2b0a22a47d7216e2d7eb52c8cde96724988f68a6d46"
+
+S = "${WORKDIR}/Net-DNS-${PV}"
+
+EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}"
+
+inherit cpan
+
+do_compile() {
+	export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
+	cpan_do_compile
+}
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-libidn-perl-0.12/libidn-wr-cross-compile.patch b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-libidn-perl-0.12/libidn-wr-cross-compile.patch
new file mode 100644
index 0000000..679caa3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-libidn-perl-0.12/libidn-wr-cross-compile.patch
@@ -0,0 +1,49 @@
+perl-Net-LibIDN: cross-compile
+
+Upstream-Status: Pending
+
+Add support for cross-compile allowing the compiler binary to be
+specified into the perl Makefile instead of using the default 'gcc'.
+
+Signed-off-by: Greg Moffatt <greg.moffatt@windriver.com>
+---
+
+--- perl-Net-LibIDN-0.12.orig/Makefile.PL	2009-02-26 07:09:45.000000000 -0500
++++ perl-Net-LibIDN-0.12/Makefile.PL	2010-10-19 09:34:22.811173965 -0400
+@@ -9,6 +9,7 @@
+ my $options;
+ my $testno=1;
+ my %MakeParams = InitMakeParams();
++my $compiler;
+ 
+ WriteMakefile(%MakeParams);
+ 
+@@ -44,7 +45,8 @@
+ 	(
+ 		"with-libidn=s" => \$libdir,
+ 		"with-libidn-inc=s" => \$incdir,
+-		"disable-tld" => \$disable_tld
++		"disable-tld" => \$disable_tld,
++		"compiler=s" => \$compiler
+ 	);
+ 
+ 	if ($libdir)
+@@ -165,12 +167,17 @@
+ 		return 0;
+ 	}
+ 
+-	foreach my $cc (qw/cc gcc/)
++	foreach my $cc ($compiler, qw/cc gcc/)
+ 	{
+ 		unlink($test);
+ 		system "$cc $cflags -o $test $test.c $ldflags";
+ 		next if ($? >> 8);
+ 
++		if ($compiler == $cc)
++		{
++			return 1;
++		}
++
+ 		if (open(FILE, "./$test|"))
+ 		{
+ 			my $match;
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-libidn-perl_0.12.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-libidn-perl_0.12.bb
new file mode 100644
index 0000000..fd3ff8d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-libidn-perl_0.12.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Net::LibIDN - Perl bindings for GNU Libidn"
+DESCRIPTION = "\
+Provides bindings for GNU Libidn, a C library for handling Internationalized \
+Domain Names according to IDNA (RFC 3490), in a way very much inspired by \
+Turbo Fredriksson's PHP-IDN. \
+"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPLv1+"
+HOMEPAGE = "http://search.cpan.org/dist/Net-LibIDN/"
+DEPENDS += "libidn"
+# We must need glibc-gconvs to enable charset related functions,
+# such as Net::LibIDN::idn_to_ascii().
+RDEPENDS_${PN} += "glibc-gconvs"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TH/THOR/Net-LibIDN-${PV}.tar.gz"
+SRC_URI[md5sum] = "c3e4de2065009d67bcb1df0afb473e12"
+SRC_URI[sha256sum] = "2f8acc9442b3866ec7dc63cd449fc693ae3e930d5d3e5e9430fbb6f393bdbb17"
+
+SRC_URI += "file://libidn-wr-cross-compile.patch"
+
+LIC_FILES_CHKSUM = "file://README;beginline=42;endline=92;md5=3374ea0369ca3ead6047520477a43147"
+
+S = "${WORKDIR}/Net-LibIDN-${PV}"
+
+EXTRA_CPANFLAGS = "--with-libidn=${STAGING_LIBDIR} --with-libidn-inc=${STAGING_INCDIR} --compiler='${CC}'"
+EXTRA_CPANFLAGS += "--disable-tld"
+
+inherit cpan
+
+FILES_${PN}-dbg += "${libdir}/perl/vendor_perl/*/auto/Net/LibIDN/.debug/"
+
+do_configure_prepend() {
+	rm -rf ${S}/.pc/
+}
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl_1.65.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl_1.65.bb
new file mode 100644
index 0000000..cfd6f51
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl_1.65.bb
@@ -0,0 +1,51 @@
+SUMMARY = "Net::SSLeay - Perl extension for using OpenSSL"
+DESCRIPTION = "This module offers some high level convenience functions for accessing \
+web pages on SSL servers (for symmetry, same API is offered for \
+accessing http servers, too), a sslcat() function for writing your own \
+clients, and finally access to the SSL api of SSLeay/OpenSSL package \
+so you can write servers or clients for more complicated applications."
+HOMEPAGE = "http://search.cpan.org/dist/Net-SSLeay/"
+SECTION = "libs"
+
+LICENSE = "OpenSSL"
+LIC_FILES_CHKSUM = "file://README;beginline=274;endline=294;md5=49f415984b387be999ee2ad0e5c692fe"
+
+DEPENDS = "openssl zlib"
+RDEPENDS_${PN} += "perl-module-carp \
+                   perl-module-errno \
+                   perl-module-extutils-makemaker \
+                   perl-module-mime-base64 \
+                   perl-module-socket \
+                  "
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MI/MIKEM/Net-SSLeay-${PV}.tar.gz \
+           file://0001-libnet-ssleay-perl-Disable-test-that-fails-with-open.patch \
+           file://0002-Recent-1.0.2-betas-have-dropped-the-SSLv3_method-fun.patch \
+           file://run-ptest \
+          "
+SRC_URI[md5sum] = "19600c036e9e0bbfbf9157f083e40755"
+SRC_URI[sha256sum] = "2fb1371120b85f018944d95736c107163f04ba56b6029c0709a2c3d6247b9c06"
+
+S = "${WORKDIR}/Net-SSLeay-${PV}"
+
+inherit cpan ptest
+
+EXTRA_CPANFLAGS = "LIBS='-L=${STAGING_LIBDIR} -L=${STAGING_BASELIBDIR}' \
+                   INC=-I=${STAGING_INCDIR} \
+                   'EXTRALIBS=-lssl -lcrypto -lz' \
+                   'LDLOADLIBS=-lssl -lcrypto -lz' \
+                  "
+
+do_configure_prepend() {
+    export OPENSSL_PREFIX=${STAGING_DIR_NATIVE}${prefix_native}
+}
+
+do_install_ptest() {
+    cp -r ${B}/t ${D}${PTEST_PATH}
+}
+
+BBCLASSEXTEND = "native"
+
+FILES_${PN}-dbg =+ "${libdir}/perl/vendor_perl/*/auto/Net/SSLeay/.debug/"
+
+RDEPENDS_${PN}-ptest = " perl"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libproc/libproc-waitstat-perl_1.00.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libproc/libproc-waitstat-perl_1.00.bb
new file mode 100644
index 0000000..1599e61
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libproc/libproc-waitstat-perl_1.00.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Interpret and act on wait() status values"
+DESCRIPTION = "This module contains functions for interpreting and acting \
+on wait status values."
+
+HOMEPAGE = "http://search.cpan.org/~rosch/Proc-WaitStat/"
+SECTION = "libraries"
+
+LICENSE = "Artistic-1.0|GPLv1+"
+LIC_FILES_CHKSUM = "file://README;beginline=21;endline=23;md5=f36550f59a0ae5e6e3b0be6a4da60d26"
+
+RDEPENDS_${PN} += "perl libipc-signal-perl"
+
+S = "${WORKDIR}/Proc-WaitStat-${PV}"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RO/ROSCH/Proc-WaitStat-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "b911bd579b6b142391b21de1efa30c95"
+SRC_URI[sha256sum] = "d07563f5e787909d16e7390241e877f49ab739b1de9d0e2ea1a41bd0bf4474bc"
+
+inherit cpan
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/librole/librole-tiny-perl_2.000001.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/librole/librole-tiny-perl_2.000001.bb
new file mode 100644
index 0000000..48360c6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/librole/librole-tiny-perl_2.000001.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Role::Tiny - Roles. Like a nouvelle cousine portion size of Moose."
+DESCRIPTION = "\"Role::Tiny\" is a minimalist role composition tool."
+
+SECTION = "libs"
+
+HOMEPAGE = "https://metacpan.org/pod/Role::Tiny"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=172;endline=209;md5=26df7e7c20551fb1906e2286624f0b71"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/H/HA/HAARG/Role-Tiny-${PV}.tar.gz"
+SRC_URI[md5sum] = "f350f1f8c13652bf85da172380b39ec8"
+SRC_URI[sha256sum] = "31883410a7c85d6dc7501c718b1f83edba013a7b9bbccf0338a1033c391f296d"
+
+S = "${WORKDIR}/Role-Tiny-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " perl-module-exporter \
+                   perl-module-strict \
+                   perl-module-test-more \
+                   perl-module-warnings \
+"
+
+RPROVIDES_${PN} = " librole-tiny-perl \
+                    librole-tiny-with-perl \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libstrictures/libstrictures-perl_2.000002.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libstrictures/libstrictures-perl_2.000002.bb
new file mode 100644
index 0000000..11a6e50
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libstrictures/libstrictures-perl_2.000002.bb
@@ -0,0 +1,45 @@
+SUMMARY = "strictures - turn on strict and make all warnings fatal"
+DESCRIPTION = "I've been writing the equivalent of this module at the top \
+of my code for about a year now. I figured it was time to make it shorter. \
+\
+Things like the importer in \"use Moose\" don't help me because they turn \
+warnings on but don't make them fatal -- which from my point of view is \
+useless because I want an exception to tell me my code isn't warnings-clean. \
+\
+Any time I see a warning from my code, that indicates a mistake. \
+\
+Any time my code encounters a mistake, I want a crash -- not spew to STDERR \
+and then unknown (and probably undesired) subsequent behaviour. \
+\
+I also want to ensure that obvious coding mistakes, like indirect object \
+syntax (and not so obvious mistakes that cause things to accidentally compile \
+as such) get caught, but not at the cost of an XS dependency and not at the \
+cost of blowing things up on another machine. \
+\
+Therefore, \"strictures\" turns on additional checking, but only when it \
+thinks it's running in a test file in a VCS checkout -- although if this \
+causes undesired behaviour this can be overridden by setting the \
+PERL_STRICTURES_EXTRA environment variable."
+
+SECTION = "libs"
+
+HOMEPAGE = "https://metacpan.org/pod/strictures"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=246;endline=262;md5=43be558cf4f19823cdd6af22135cf5f8"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/H/HA/HAARG/strictures-${PV}.tar.gz"
+SRC_URI[md5sum] = "fb1fada8260992bc85e126c21ffcc6d5"
+SRC_URI[sha256sum] = "130355dcb3afd8c3c8213c24b924e71deb7e1e1197da8f90c5ae191766aa4100"
+
+S = "${WORKDIR}/strictures-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " perl-module-carp \
+                   perl-module-strict \
+                   perl-module-test-more \
+                   perl-module-warnings \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-exporter-progressive-perl_0.001011.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-exporter-progressive-perl_0.001011.bb
new file mode 100644
index 0000000..a2a1305
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-exporter-progressive-perl_0.001011.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Sub::Exporter::Progressive - Only use Sub::Exporter if you need it."
+DESCRIPTION = "\"Sub::Exporter\" is an incredibly powerful module, but with \
+that power comes great responsibility, er- as well as some runtime penalties. \
+This module is a \"Sub::Exporter\" wrapper that will let your users just use \
+\"Exporter\" if all they are doing is picking exports, but use \
+\"Sub::Exporter\" if your users try to use \"Sub::Exporter's\" more advanced \
+features, like renaming exports, if they try to use them."
+
+SECTION = "libs"
+
+HOMEPAGE = "https://metacpan.org/pod/Sub-Exporter-Progressive/"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=51;endline=53;md5=a171d2e9f8688a44e5f1b6dcc62029e6"
+
+DEPENDS_${PN} = " perl-module-test-more"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/F/FR/FREW/Sub-Exporter-Progressive-${PV}.tar.gz"
+SRC_URI[md5sum] = "bb50b3ba1538902b197c04818a84230a"
+SRC_URI[sha256sum] = "0618c6e69c6c0540c41e7560d51981407a6a0768f1330bef6d6ac3c6f1fa7c06"
+
+S = "${WORKDIR}/Sub-Exporter-Progressive-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} += " perl-module-carp \
+                    perl-module-list-util \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-harness-perl_3.36.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-harness-perl_3.36.bb
new file mode 100644
index 0000000..7fb7e22
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-harness-perl_3.36.bb
@@ -0,0 +1,80 @@
+SUMMARY = "Test::Harness - Run Perl standard test scripts with statistics"
+DESCRIPTION = "Although, for historical reasons, the Test::Harness \
+distribution takes its name from this module it now exists only to provide \
+TAP::Harness with an interface that is somewhat backwards compatible \
+with Test::Harness 2.xx. If you're writing new code consider using \
+TAP::Harness directly instead. \
+\ 
+Emulation is provided for runtests and execute_tests but the \
+pluggable 'Straps' interface that previous versions of Test::Harness \
+supported is not reproduced here. Straps is now available as a stand \
+alone module: Test::Harness::Straps. \
+\
+See TAP::Parser, TAP::Harness for the main documentation for this \
+distribution."
+
+SECTION = "libs"
+
+HOMEPAGE = "http://testanything.org"
+
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=29;endline=30;md5=b08db4360eec119e875dddd7cb8a5ddd"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/Test-Harness-${PV}.tar.gz"
+SRC_URI[md5sum] = "4c8d9c77e8e06ca96c7383c05c8f3616"
+SRC_URI[sha256sum] = "e7566f13b041d028b56f184b77ec2545ec6f0bb5a0f8f5368f7e4a08b496b63e"
+
+S = "${WORKDIR}/Test-Harness-${PV}"
+
+inherit cpan
+
+RPROVIDES_${PN} += "libapp-prove-perl \
+                    libapp-prove-state-perl \
+                    libapp-prove-state-result-perl \
+                    libapp-prove-state-result-test-perl \
+                    libtap-base-perl \
+                    libtap-formatter-base-perl \
+                    libtap-formatter-color-perl \
+                    libtap-formatter-console-perl \
+                    libtap-formatter-console-parallelsession-perl \
+                    libtap-formatter-console-session-perl \
+                    libtap-formatter-file-perl \
+                    libtap-formatter-file-session-perl \
+                    libtap-formatter-session-perl \
+                    libtap-harness-perl \
+                    libtap-harness-env-perl \
+                    libtap-object-perl \
+                    libtap-parser-perl \
+                    libtap-parser-aggregator-perl \
+                    libtap-parser-grammar-perl \
+                    libtap-parser-iterator-perl \
+                    libtap-parser-iterator-array-perl \
+                    libtap-parser-iterator-process-perl \
+                    libtap-parser-iterator-stream-perl \
+                    libtap-parser-iteratorfactory-perl \
+                    libtap-parser-multiplexer-perl \
+                    libtap-parser-result-perl \
+                    libtap-parsser-result-bailout-perl \
+                    libtap-parser-result-comment-perl \
+                    libtap-parser-result-plan-perl \
+                    libtap-parser-result-pragma-perl \
+                    libtap-parser-result-test-perl \
+                    libtap-parser-result-unknown-perl \
+                    libtap-parser-result-version-perl \
+                    libtap-parser-result-yaml-perl \
+                    libtap-parser-resultfactory-perl \
+                    libtap-parser-scheduler-perl \
+                    libtap-parser-scheduler-job-perl \
+                    libtap-parser-scheduler-spinner-perl \
+                    libtap-parser-source-perl \
+                    libtap-parser-sourcehandler-perl \
+                    libtap-parser-sourcehandler-executable-perl \
+                    libtap-parser-sourcehandler-file-perl \
+                    libtap-parser-sourcehandler-handle-perl \
+                    libtap-parser-sourcehandler-perl-perl \
+                    libtap-parser-sourcehandler-rawtap-perl \
+                    libtap-parser-yamlish-reader-perl \
+                    libtap-parser-yamlish-writer-perl \
+                    "
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-diff-perl_1.41.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-diff-perl_1.41.bb
new file mode 100644
index 0000000..a4c246e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-diff-perl_1.41.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Text::Diff - Perform diffs on files and record sets"
+DESCRIPTION = "diff() provides a basic set of services akin to the GNU diff \
+utility. It is not anywhere near as feature complete as GNU diff, but it is \
+better integrated with Perl and available on all platforms. It is often \
+faster than shelling out to a system's diff executable for small files, \
+and generally slower on larger files."
+SECTION = "libs"
+
+HOMEPAGE = "http://search.cpan.org/~ovid/Text-Diff/"
+
+LICENSE = "Artistic-1.0 | GPL-2.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=385c55653886acac3821999a3ccd17b3"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/O/OV/OVID/Text-Diff-${PV}.tar.gz"
+SRC_URI[md5sum] = "30d56e6dd5551ca16b8e16cc7299dc21"
+SRC_URI[sha256sum] = "a67f50a48e313c1680cc662109ce5f913ea71454db355d0cf4db87ac89d2d2fa"
+
+S = "${WORKDIR}/Text-Diff-${PV}"
+
+inherit cpan
+
+RDEPENDS_${PN} = " libalgorithm-diff-perl \
+                   perl-module-extutils-makemaker \
+                   perl-module-exporter \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-iconv-perl_1.7.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-iconv-perl_1.7.bb
new file mode 100644
index 0000000..934be03
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-iconv-perl_1.7.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Perl interface to iconv() codeset conversion function"
+DESCRIPTION = "\
+The Text::Iconv module provides a Perl interface to the iconv() \
+function as defined by the Single UNIX Specification. The convert() \
+method converts the encoding of characters in the input string from \
+the fromcode codeset to the tocode codeset, and returns the result. \
+Settings of fromcode and tocode and their permitted combinations are \
+implementation-dependent. Valid values are specified in the system \
+documentation."
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=3;endline=6;md5=fadf2919c7128e887d26b4d905f90649"
+RRECOMMENDS_${PN} += "glibc-gconvs"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MP/MPIOTR/Text-Iconv-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "81b26e069eaebb084e91ea3c009b67ae"
+SRC_URI[sha256sum] = "5b80b7d5e709d34393bcba88971864a17b44a5bf0f9e4bcee383d029e7d2d5c3"
+
+S = "${WORKDIR}/Text-Iconv-${PV}"
+
+inherit cpan
+
+FILES_${PN}-dbg += "${libdir}/perl/vendor_perl/*/auto/Text/Iconv/.debug/"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-filter-buffertext-perl_1.01.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-filter-buffertext-perl_1.01.bb
new file mode 100644
index 0000000..77dd616
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-filter-buffertext-perl_1.01.bb
@@ -0,0 +1,25 @@
+SUMMARY = "XML::Filter::BufferText - Filter to put all characters() in one event"
+DESCRIPTION = "\
+The XML::Filter::BufferText module is a very simple filter.  One common \
+cause of grief (and programmer error) is that XML parsers aren't required \
+to provide character events in one chunk.  They can, but are not forced \
+to, and most don't.  This filter does the trivial but oft-repeated task \
+of putting all characters into a single event. \
+"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPLv1+"
+HOMEPAGE = "http://search.cpan.org/dist/XML-Filter-BufferText/"
+DEPENDS += "libxml-sax-perl-native"
+RDEPENDS_${PN} += "libxml-sax-perl"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RB/RBERJON/XML-Filter-BufferText-${PV}.tar.gz"
+SRC_URI[md5sum] = "2992c0387632583b966ab9c965b25512"
+SRC_URI[sha256sum] = "8fd2126d3beec554df852919f4739e689202cbba6a17506e9b66ea165841a75c"
+
+LIC_FILES_CHKSUM = "file://BufferText.pm;beginline=88;endline=90;md5=497aa6d79cc84c3d769a2a0016bee928"
+
+S = "${WORKDIR}/XML-Filter-BufferText-${PV}"
+
+inherit cpan
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch
new file mode 100644
index 0000000..a8e7cc1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch
@@ -0,0 +1,79 @@
+Do not use the _libxml_check_lib() on cross-compile
+
+Upstream-Status: Inappropriate [configuration] 
+
+xml2 have been added into package's DEPENDS, so not need to use the
+_libxml_check_lib() to check it again, and _libxml_check_lib() always
+return false on cross-compile environment
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ Makefile.PL |   52 ++++++++++++++++++++++++++--------------------------
+ 1 file changed, 26 insertions(+), 26 deletions(-)
+
+diff --git a/Makefile.PL b/Makefile.PL
+index c0485f1..09c676b 100644
+--- a/Makefile.PL
++++ b/Makefile.PL
+@@ -411,32 +411,32 @@ sub _libxml_check_lib {
+     }
+ }
+ 
+-print "Checking for ability to link against xml2...";
+-if ( _libxml_check_lib('xml2') ) {
+-    print "yes\n";
+-}
+-else {
+-    print "no\n";
+-    print "Checking for ability to link against libxml2...";
+-    if ( _libxml_check_lib('libxml2')) {
+-        print "yes\n";
+-    }
+-    else {
+-        print STDERR <<"DEATH";
+-libxml2, zlib, and/or the Math library (-lm) have not been found.
+-Try setting LIBS and INC values on the command line
+-Or get libxml2 from
+-  http://xmlsoft.org/
+-If you install via RPMs, make sure you also install the -devel
+-RPMs, as this is where the headers (.h files) are.
+-
+-Also, you may try to run perl Makefile.PL with the DEBUG=1 parameter
+-to see the exact reason why the detection of libxml2 installation
+-failed or why Makefile.PL was not able to compile a test program.
+-DEATH
+-        exit 0; # 0 recommended by http://cpantest.grango.org (Notes for CPAN Authors)
+-    }
+-}
++#print "Checking for ability to link against xml2...";
++#if ( _libxml_check_lib('xml2') ) {
++#    print "yes\n";
++#}
++#else {
++#    print "no\n";
++#    print "Checking for ability to link against libxml2...";
++#    if ( _libxml_check_lib('libxml2')) {
++#        print "yes\n";
++#    }
++#    else {
++#        print STDERR <<"DEATH";
++#libxml2, zlib, and/or the Math library (-lm) have not been found.
++#Try setting LIBS and INC values on the command line
++#Or get libxml2 from
++#  http://xmlsoft.org/
++#If you install via RPMs, make sure you also install the -devel
++#RPMs, as this is where the headers (.h files) are.
++#
++#Also, you may try to run perl Makefile.PL with the DEBUG=1 parameter
++#to see the exact reason why the detection of libxml2 installation
++#failed or why Makefile.PL was not able to compile a test program.
++#DEATH
++#        exit 0; # 0 recommended by http://cpantest.grango.org (Notes for CPAN Authors)
++#    }
++#}
+ 
+ # -------------------------------------------------------------------------- #
+ # _NOW_ write the Makefile
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch
new file mode 100644
index 0000000..1dd9fb3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch
@@ -0,0 +1,31 @@
+[PATCH] Fix a compile error 
+
+Upstream-Status: Pending
+
+Fix a compile error by conditional using 'catal' since catal
+is only defined when LIBXML_CATALOG_ENABLED is enabled.
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ LibXML.xs |    2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/LibXML.xs b/LibXML.xs
+index 66da04b..45da681 100644
+--- a/LibXML.xs
++++ b/LibXML.xs
+@@ -2777,9 +2777,11 @@ _default_catalog( self, catalog )
+         xmlCatalogPtr catal = INT2PTR(xmlCatalogPtr,SvIV(SvRV(catalog)));
+ #endif
+     INIT:
++#ifdef LIBXML_CATALOG_ENABLED
+         if ( catal == NULL ) {
+             croak( "empty catalog\n" );
+         }
++#endif
+     CODE:
+         warn( "this feature is not implemented" );
+         RETVAL = 0;
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch
new file mode 100644
index 0000000..d255ec7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch
@@ -0,0 +1,91 @@
+[PATCH] Fix a compile error 
+
+Upstream-Status: Pending
+
+by conditional using 'XML_DOCB_DOCUMENT_NODE' since it is only
+defined when LIBXML_DOCB_ENABLED is enabled in xmlversion.h.
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ LibXML.xs        |    9 +-
+ dom.c            |    2 +
+ perl-libxml-mm.c |    4 +
+ 4 files changed, 678 insertions(+), 658 deletions(-)
+
+diff --git a/LibXML.xs b/LibXML.xs
+index b299ba4..66da04b 100644
+--- a/LibXML.xs
++++ b/LibXML.xs
+@@ -5026,7 +5026,9 @@ addChild( self, nNode )
+             XSRETURN_UNDEF;
+         case XML_DOCUMENT_NODE :
+         case XML_HTML_DOCUMENT_NODE :
++#ifdef LIBXML_DOCB_ENABLED
+         case XML_DOCB_DOCUMENT_NODE :
++#endif
+             croak("addChild: HIERARCHY_REQUEST_ERR\n");
+             XSRETURN_UNDEF;
+         case XML_NOTATION_NODE :
+@@ -5286,7 +5288,9 @@ _toStringC14N(self, comments=0, xpath=&PL_sv_undef, exclusive=0, inc_prefix_list
+         if ( nodepath == NULL
+              && self->type != XML_DOCUMENT_NODE
+              && self->type != XML_HTML_DOCUMENT_NODE
++#ifdef LIBXML_DOCB_ENABLED
+              && self->type != XML_DOCB_DOCUMENT_NODE
++#endif
+            ) {
+             if (comments)
+ 	      nodepath = xmlStrdup( (const xmlChar *) "(. | .//node() | .//@* | .//namespace::*)" );
+@@ -5297,7 +5301,10 @@ _toStringC14N(self, comments=0, xpath=&PL_sv_undef, exclusive=0, inc_prefix_list
+         if ( nodepath != NULL ) {
+             if ( self->type == XML_DOCUMENT_NODE
+                  || self->type == XML_HTML_DOCUMENT_NODE
+-                 || self->type == XML_DOCB_DOCUMENT_NODE ) {
++#ifdef LIBXML_DOCB_ENABLED
++                 || self->type == XML_DOCB_DOCUMENT_NODE
++#endif
++	    ) {
+                 refNode = xmlDocGetRootElement( self->doc );
+             }
+ 	    if (SvOK(xpath_context)) {
+diff --git a/dom.c b/dom.c
+index 87eb61d..cbd391b 100644
+--- a/dom.c
++++ b/dom.c
+@@ -654,7 +654,9 @@ domName(xmlNodePtr node) {
+ 
+     case XML_DOCUMENT_NODE :
+     case XML_HTML_DOCUMENT_NODE :
++#ifdef LIBXML_DOCB_ENABLED
+     case XML_DOCB_DOCUMENT_NODE :
++#endif
+         name = (const xmlChar *) "#document";
+         break;
+ 
+diff --git a/perl-libxml-mm.c b/perl-libxml-mm.c
+index d162b06..7ac5436 100644
+--- a/perl-libxml-mm.c
++++ b/perl-libxml-mm.c
+@@ -331,7 +331,9 @@ PmmNewNode(xmlNodePtr node)
+         switch ( node->type ) {
+         case XML_DOCUMENT_NODE:
+         case XML_HTML_DOCUMENT_NODE:
++#ifdef LIBXML_DOCB_ENABLED
+         case XML_DOCB_DOCUMENT_NODE:
++#endif
+             proxy = (ProxyNodePtr)xmlMalloc(sizeof(struct _DocProxyNode));
+             if (proxy != NULL) {
+                 ((DocProxyNodePtr)proxy)->psvi_status = Pmm_NO_PSVI;
+@@ -550,7 +552,9 @@ PmmNodeToSv( xmlNodePtr node, ProxyNodePtr owner )
+         switch ( node->type ) {
+         case XML_DOCUMENT_NODE:
+         case XML_HTML_DOCUMENT_NODE:
++#ifdef LIBXML_DOCB_ENABLED
+         case XML_DOCB_DOCUMENT_NODE:
++#endif
+             if ( ((xmlDocPtr)node)->encoding != NULL ) {
+                 SetPmmENCODING(dfProxy, (int)xmlParseCharEncoding( (const char*)((xmlDocPtr)node)->encoding ));
+             }
+-- 
+1.7.10.4
+
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0121.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0121.bb
new file mode 100644
index 0000000..8997a04
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0121.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Perl interface to the libxml2 library"
+DESCRIPTION = "This module is an interface to libxml2, providing XML and HTML parsers \ 
+with DOM, SAX and XMLReader interfaces, a large subset of DOM Layer 3 \
+interface and a XML::XPath-like interface to XPath API of libxml2. \
+The module is split into several packages which are not described in this \
+section; unless stated otherwise, you only need to use XML::LibXML; in \
+your programs."
+
+HOMEPAGE = "http://search.cpan.org/dist/XML-LibXML-1.99/"
+SECTION = "libs"
+LICENSE = "Artistic-1.0|GPLv1+"
+DEPENDS += "libxml2 \
+        libxml-sax-perl-native \
+        zlib \
+"
+RDEPENDS_${PN} += "libxml2 \
+        libxml-sax-perl \
+        libxml-sax-base-perl \
+        zlib \
+"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-LibXML-${PV}.tar.gz;name=libxml \
+	file://disable-libxml2-check.patch \
+	file://fix-CATALOG-conditional-compile.patch \
+	file://using-DOCB-conditional.patch \
+"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=75e021e35a906347f46c9ff163653e2a \
+			file://LICENSE;md5=97871bde150daeb5e61ad95137ff2446"
+SRC_URI[libxml.md5sum] = "1544ab9ac110f5da296015346561ce02"
+SRC_URI[libxml.sha256sum] = "ec431011cb37a04640fd2316f64d0405a274eece2c6f3847f7fbd336eb1c0dc9"
+
+S = "${WORKDIR}/XML-LibXML-${PV}"
+
+inherit cpan
+
+EXTRA_CPANFLAGS = "INC=-I${STAGING_INCDIR}/libxml2 LIBS=-L${STAGING_LIBDIR}"
+
+BBCLASSEXTEND = "native"
+
+CFLAGS += " -D_GNU_SOURCE "
+BUILD_CFLAGS += " -D_GNU_SOURCE "
+
+FILES_${PN}-dbg =+ "${libdir}/perl/vendor_perl/*/auto/XML/LibXML/.debug/"
diff --git a/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-sax-writer-perl_0.56.bb b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-sax-writer-perl_0.56.bb
new file mode 100644
index 0000000..961ceda
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-sax-writer-perl_0.56.bb
@@ -0,0 +1,25 @@
+SUMMARY = "XML::SAX::Writer - SAX2 Writer"
+DESCRIPTION = "\
+XML::SAX::Writer helps to serialize SAX2 representations of XML documents to \
+strings, files, and other flat representations. It handles charset encodings, \
+XML escaping conventions, and so forth. It is still considered alpha, \
+although it has been put to limited use in settings such as XML::LibXML and \
+the AxKit XML Application Server. \
+"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPLv1+"
+HOMEPAGE = "http://search.cpan.org/dist/XML-SAX-Writer/"
+DEPENDS += "libxml-filter-buffertext-perl-native"
+RDEPENDS_${PN} += "libxml-filter-buffertext-perl"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PE/PERIGRIN/XML-SAX-Writer-${PV}.tar.gz"
+SRC_URI[md5sum] = "e5fa5e2b2f6867b1aca9b5b43e1ce361"
+SRC_URI[sha256sum] = "d073f7a25072c8150317b86b99d07031316a15bffab99e63e5afe591c8217d03"
+
+LIC_FILES_CHKSUM = "file://README;beginline=45;endline=46;md5=d41d8cd98f00b204e9800998ecf8427e"
+
+S = "${WORKDIR}/XML-SAX-Writer-${PV}"
+
+inherit cpan
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-python/COPYING.MIT b/import-layers/meta-openembedded/meta-python/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-python/README b/import-layers/meta-openembedded/meta-python/README
new file mode 100644
index 0000000..36e76bf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/README
@@ -0,0 +1,51 @@
+meta-python
+================================
+
+Introduction
+-------------------------
+
+This layer is intended to be the home of python modules for OpenEmbedded.
+Modules in this layer need to be independent of openembedded-core and
+meta-openembedded/meta-oe. Because of this, modules required by 'gateone'
+and 'anki' are not included and remain in:
+        meta-openembedded/meta-oe/recipes-devtools/python.
+
+Dependencies
+-------------------------
+
+The meta-python layer depends on:
+
+	URI: git://git.openembedded.org/openembedded-core
+	layers: meta
+	branch: krogoth 
+	revision: HEAD
+
+	URI: git://git.openembedded.org/meta-openembedded
+	layers: meta-oe
+	branch:  krogoth
+	revision: HEAD
+
+Please follow the recommended setup procedures of your OE distribution.
+For Angstrom that is:
+        http://www.angstrom-distribution.org/building-angstrom,
+other distros should have similar online resources.
+
+Contributing
+-------------------------
+
+The meta-openembedded mailinglist
+(openembedded-devel@lists.openembedded.org) is used for questions,
+comments and patch review. It is subscriber only, so please register
+before posting.
+
+Send pull requests to openembedded-devel@lists.openembedded.org with
+'[meta-python][krogoth]' in the subject.
+
+When sending single patches, please use something like: 
+'git send-email -M -1 --to=openembedded-devel@lists.openembedded.org --subject-prefix=meta-python][krogoth][PATCH'
+
+Maintenance
+-------------------------
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
diff --git a/import-layers/meta-openembedded/meta-python/classes/pypi.bbclass b/import-layers/meta-openembedded/meta-python/classes/pypi.bbclass
new file mode 100644
index 0000000..659e1c0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/classes/pypi.bbclass
@@ -0,0 +1,23 @@
+def pypi_package(d):
+    bpn = d.getVar('BPN', True)
+    if bpn.startswith('python-'):
+        return bpn[7:]
+    elif bpn.startswith('python3-'):
+        return bpn[8:]
+    return bpn
+
+PYPI_PACKAGE ?= "${@pypi_package(d)}"
+PYPI_PACKAGE_EXT ?= "tar.gz"
+
+def pypi_src_uri(d):
+    package = d.getVar('PYPI_PACKAGE', True)
+    package_ext = d.getVar('PYPI_PACKAGE_EXT', True)
+    pv = d.getVar('PV', True)
+    return 'https://pypi.python.org/packages/source/%s/%s/%s-%s.%s' % (package[0], package, package, pv, package_ext)
+
+PYPI_SRC_URI ?= "${@pypi_src_uri(d)}"
+
+HOMEPAGE ?= "https://pypi.python.org/pypi/${PYPI_PACKAGE}/"
+SECTION = "devel/python"
+SRC_URI += "${PYPI_SRC_URI}"
+S = "${WORKDIR}/${PYPI_PACKAGE}-${PV}"
diff --git a/import-layers/meta-openembedded/meta-python/conf/layer.conf b/import-layers/meta-openembedded/meta-python/conf/layer.conf
new file mode 100644
index 0000000..d53677f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/conf/layer.conf
@@ -0,0 +1,17 @@
+# We might have a conf and classes directory, append to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes*/*/*.bb ${LAYERDIR}/recipes*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "meta-python"
+BBFILE_PATTERN_meta-python := "^${LAYERDIR}/"
+BBFILE_PRIORITY_meta-python = "7"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_meta-python = "1"
+
+LAYERDEPENDS_meta-python = "core openembedded-layer"
+
+LICENSE_PATH += "${LAYERDIR}/licenses"
diff --git a/import-layers/meta-openembedded/meta-python/licenses/Unicode b/import-layers/meta-openembedded/meta-python/licenses/Unicode
new file mode 100644
index 0000000..5d2cc4a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/licenses/Unicode
@@ -0,0 +1,37 @@
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright 1991-2015 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in
+http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software,
+(b) this copyright and permission notice appear in associated
+documentation, and
+(c) there is clear notice in each modified Data File or in the Software
+as well as in the documentation associated with the Data File(s) or
+Software that the data or software has been modified.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
diff --git a/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/80oe.conf.in b/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/80oe.conf.in
new file mode 100644
index 0000000..4503da4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/80oe.conf.in
@@ -0,0 +1,24 @@
+// Some custom Gate One settings for OpenEmbedded
+{
+    "*": {
+        "gateone": { // These settings apply to all of Gate One
+            "log_file_prefix": "@localstate@/log/gateone.log", // default would be /var/log/gateone/gateone.log
+            "log_file_max_size": 5242880, // 5 megabyte logs for OE by default (default would normally be 100Mb)
+            "log_file_num_backups": 2, // Default is normally 10
+            "origins": ["*"], // Every device has a unique origin
+            "logging": "info",
+            "pid_file": "/run/gateone.pid",
+            "session_dir": "/tmp/gateone",
+            "user_dir": "@localstate@/lib/gateone/users"
+        },
+        "terminal": {
+            // Disabling session logging for embedded devices is a good idea (limited/slow storage)
+            "session_logging": false,
+            "syslog_session_logging": false
+//             "commands": {
+//                 // For some reason this doesn't work (never asks for the password)
+//                 "login": "setsid /bin/login" // Normally this would emulate logging into the host console
+//             }
+        }
+    }
+}
diff --git a/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-avahi.service b/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-avahi.service
new file mode 100644
index 0000000..0f613d1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-avahi.service
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
+<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
+
+<service-group>
+  <name replace-wildcards="yes">GateOne on %h</name>
+  <service>
+    <type>_https._tcp</type>
+    <port>443</port>
+  </service>
+</service-group>
diff --git a/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-init.in b/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-init.in
new file mode 100644
index 0000000..86d655c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone-init.in
@@ -0,0 +1,47 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides:          gateone
+# Required-Start:    networking
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Gateone HTML5 ssh client
+# Description:       Gateone HTML5 terminal emulator and SSH client.
+### END INIT INFO
+
+. /etc/init.d/functions
+
+NAME=gateone
+DAEMON=@bindir@/gateone
+PIDFILE=/run/gateone.pid
+WORKDIR=@localstate@/lib/gateone
+
+do_start() {
+    cd $WORKDIR
+    @bindir@/python $DAEMON > /dev/null 2>&1 &
+    cd $OLDPWD
+}
+
+do_stop() {
+    kill -TERM `cat $PIDFILE`
+}
+
+case "$1" in
+    start)
+        echo "Starting gateone"
+        do_start
+        ;;
+    stop)
+        echo "Stopping gateone"
+        do_stop
+        ;;
+    restart|force-reload)
+        echo "Restart gateone"
+        do_stop
+        sleep 1
+        do_start
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|restart|force-reload}" >&2
+        exit 1
+        ;;
+esac
diff --git a/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone.service.in b/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone.service.in
new file mode 100644
index 0000000..4466727
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone/gateone.service.in
@@ -0,0 +1,10 @@
+[Unit]
+Description=GateOne daemon
+ConditionPathExists=|@localstate@/lib/gateone
+
+[Service]
+WorkingDirectory=@localstate@/lib/gateone
+ExecStart=@bindir@/python @bindir@/gateone
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone_git.bb b/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone_git.bb
new file mode 100644
index 0000000..5ff753e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-connectivity/gateone/gateone_git.bb
@@ -0,0 +1,89 @@
+SUMMARY = "HTML5 (plugin-free) web-based terminal emulator and SSH client"
+LICENSE = "AGPL-3.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=834cbc6995db88433db17cdf8953a428"
+HOMEPAGE = "http://liftoffsoftware.com/Products/GateOne"
+
+PV = "1.2+git${SRCPV}"
+SRCREV = "f7a9be46cb90f57459ebd363d24702de0e651034"
+SRC_URI = "git://github.com/liftoff/GateOne.git;branch=master \
+           file://gateone-avahi.service \
+           file://80oe.conf.in \
+           file://gateone.service.in \
+           file://gateone-init.in \
+"
+
+S = "${WORKDIR}/git"
+
+inherit distutils python-dir systemd update-rc.d
+export prefix = "${localstatedir}"
+
+DISTUTILS_INSTALL_ARGS = "--root=${D} \
+    --prefix=${prefix} \
+    --install-lib=${PYTHON_SITEPACKAGES_DIR} \
+    --install-data=${PYTHON_SITEPACKAGES_DIR} \
+    --install-scripts=${bindir} \
+    --skip_init_scripts"
+
+do_install_append() {
+
+    # fix up hardcoded paths
+    for file in gateone.service gateone-init 80oe.conf; do
+        sed -e s:@bindir@:${bindir}:g \
+            -e s:@localstate@:${localstatedir}:g \
+            < ${WORKDIR}/$file.in \
+            > ${WORKDIR}/$file
+    done
+    
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/gateone.service ${D}${systemd_unitdir}/system
+
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/gateone-init ${D}${sysconfdir}/init.d/gateone
+    
+    install -m 0755 -d ${D}${sysconfdir}/avahi/services/
+    install -m 0644 ${WORKDIR}/gateone-avahi.service ${D}${sysconfdir}/avahi/services/
+
+    install -m 0755 -d ${D}${sysconfdir}/gateone/conf.d/
+    install -m 0644 ${WORKDIR}/80oe.conf ${D}${sysconfdir}/gateone/conf.d/80oe.conf
+
+    install -d ${D}${localstatedir}/lib/gateone
+}
+
+FILES_${PN} = "${localstatedir}/lib ${bindir} ${base_libdir} ${sysconfdir} ${PYTHON_SITEPACKAGES_DIR}"
+RDEPENDS_${PN} = "mime-support \
+                  openssh-ssh \
+                  python-compression \
+                  python-contextlib \
+                  python-crypt \
+                  python-datetime \
+                  python-email \
+                  python-fcntl \
+                  python-futures \
+                  python-html \
+                  python-imaging \
+                  python-io \
+                  python-json \
+                  python-logging \
+                  python-misc \
+                  python-multiprocessing \
+                  python-netclient \
+                  python-pkgutil \
+                  python-pyopenssl \
+                  python-re \
+                  python-readline \
+                  python-setuptools \
+                  python-shell \
+                  python-simplejson \
+                  python-subprocess \
+                  python-syslog \
+                  python-terminal \
+                  python-textutils \
+                  python-tornado \
+                  python-unixadmin \
+                  python-xml \
+                  python-html5lib \
+                  bash \
+"
+
+SYSTEMD_SERVICE_${PN} = "gateone.service"
+INITSCRIPT_NAME = "gateone"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-connectivity/python-pyro4/python-pyro4_4.39.bb b/import-layers/meta-openembedded/meta-python/recipes-connectivity/python-pyro4/python-pyro4_4.39.bb
new file mode 100644
index 0000000..45b793d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-connectivity/python-pyro4/python-pyro4_4.39.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Python Remote Objects"
+HOMEPAGE = "https://pypi.python.org/pypi/Pyro4/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b48b62dd270c4691fabaa85be3236030"
+
+SRCNAME = "Pyro4"
+
+SRC_URI = "https://pypi.python.org/packages/source/P/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "75ed5cd142803b0a8d587dc8b6bb51ed"
+SRC_URI[sha256sum] = "39c6ca7f86b0f0bebfeada687a5a8b99f66470a52b0f815195ae63c683266f24"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.9.2.bb b/import-layers/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.9.2.bb
new file mode 100644
index 0000000..d0c4af7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python-thrift_0.9.2.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Python bindings for the Apache Thrift RPC system"
+HOMEPAGE = "https://pypi.python.org/pypi/amqp/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=df17a59cc9e1327ec49c2285e13ac477"
+
+SRCNAME = "thrift"
+
+SRC_URI = "https://pypi.python.org/packages/source/t/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "91f1c224c46a257bb428431943387dfd"
+SRC_URI[sha256sum] = "08f665e4b033c9d2d0b6174d869273104362c80e77ee4c01054a74141e378afa"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-connectivity/python-txws/python-txws_0.9.1.bb b/import-layers/meta-openembedded/meta-python/recipes-connectivity/python-txws/python-txws_0.9.1.bb
new file mode 100644
index 0000000..0b2ac11
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-connectivity/python-txws/python-txws_0.9.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Twisted Web Sockets"
+HOMEPAGE = "https://github.com/MostAwesomeDude/txWS"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=76699830db7fa9e897f6a1ad05f98ec8"
+
+DEPENDS = "python-twisted python-six python-vcversioner"
+
+SRC_URI = "git://github.com/MostAwesomeDude/txWS.git"
+SRCREV= "88cf6d9b9b685ffa1720644bd53c742afb10a414"
+
+S = "${WORKDIR}/git"
+
+inherit setuptools
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/pyrtm_0.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/pyrtm_0.2.bb
new file mode 100644
index 0000000..3d382b9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/pyrtm_0.2.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Python interface for Remember The Milk API"
+AUTHOR = "Sridhar Ratnakumar / srid"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=a53cbc7cb75660694e138ba973c148df"
+
+inherit pypi distutils
+
+SRC_URI[md5sum] = "34423f39caf7df8a9db8e243be9cf1a0"
+SRC_URI[sha256sum] = "d9d46d096a38cb692b55f4ee9f364d54348298e9497b11c1ef057539b5de1567"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-autobahn_0.8.6.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-autobahn_0.8.6.bb
new file mode 100644
index 0000000..e64dd8f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-autobahn_0.8.6.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "AutobahnPython provides a WebSocket (RFC6455, Hybi-10 to -17, Hixie-76) framework for creating WebSocket-based clients and servers. \
+AutobahnPython also includes an implementation of WAMP (The WebSockets Application Messaging Protocol), a light-weight,  \
+asynchronous RPC/PubSub over JSON/WebSocket protocol."
+HOMEPAGE = "http://autobahn.ws/python"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = " file://autobahn/__init__.py;beginline=1;endline=17;md5=1fdeccf6e5b70cda64cc1345597c18e3"
+
+SRC_URI[md5sum] = "160429e7fb043940e79aa7f4ebbab57a"
+SRC_URI[sha256sum] = "94ae5c6f37f9fe7c9d3f12c170fcc273afed4104a1c5508b26d6014bb9e6373e"
+
+PYPI_PACKAGE_EXT = "zip"
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "python python-pprint python-twisted-protocols python-netserver python-twisted-web"
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-backports-ssl_3.4.0.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-backports-ssl_3.4.0.2.bb
new file mode 100644
index 0000000..5e2d174
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-backports-ssl_3.4.0.2.bb
@@ -0,0 +1,16 @@
+SUMMARY = "The ssl.match_hostname() function from Python 3.4"
+DESCRIPTION = "The Secure Sockets layer is only actually secure if you check the hostname in the \
+certificate returned by the server to which you are connecting, and verify that it matches to hostname \
+that you are trying to reach. But the matching logic, defined in RFC2818, can be a bit tricky to implement \
+on your own. So the ssl package in the Standard Library of Python 3.2 and greater now includes a \
+match_hostname() function for performing this check instead of requiring every application to \
+implement the check separately. This backport brings match_hostname() to users of earlier versions of Python"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=77b684960b86b7a4bb4a450ffde08605"
+
+SRC_URI[md5sum] = "788214f20214c64631f0859dc79f23c6"
+SRC_URI[sha256sum] = "07410e7fb09aab7bdaf5e618de66c3dac84e2e3d628352814dc4c37de321d6ae"
+
+PYPI_PACKAGE = "backports.ssl_match_hostname"
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt_2.0.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt_2.0.0.bb
new file mode 100644
index 0000000..3cbe33e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-bcrypt_2.0.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Modern password hashing for your software and your servers."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=e19d0fe40c5ce4109e6bcbf4aab2a5bd"
+
+DEPENDS = "python-cffi-native"
+
+SRC_URI[md5sum] = "e7fb17be46904cdb2ae6a062859ee58c"
+SRC_URI[sha256sum] = "8b2d197ef220d10eb74625dde7af3b10daa973ae9a1eadd6366f763fad4387fa"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "\
+    python-cffi \
+    python-six \
+"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-behave_1.2.5.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-behave_1.2.5.bb
new file mode 100644
index 0000000..541a79d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-behave_1.2.5.bb
@@ -0,0 +1,10 @@
+SUMMARY = "A behavior-driven development framework, Python style"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d950439e8ea6ed233e4288f5e1a49c06"
+
+SRC_URI[md5sum] = "3af4bc2886d2be982e41bfaba61da3bc"
+SRC_URI[sha256sum] = "81b731ac5187e31e4aad2594944fa914943683a9818320846d037c5ebd6d5d0b"
+
+RDEPENDS_${PN} += "python-difflib python-setuptools python-pkgutil python-misc python-argparse python-xml python-importlib python-enum34 python-parse python-parse-type python-six"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_0.8.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_0.8.1.bb
new file mode 100644
index 0000000..145f1fb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-bitarray_0.8.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "A high-level Python efficient arrays of booleans -- C extension"
+HOMEPAGE = "https://github.com/ilanschnell/bitarray"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3ba469353f9f2a244b2075902351e37d"
+
+SRC_URI[md5sum] = "3825184f54f4d93508a28031b4c65d3b"
+SRC_URI[sha256sum] = "7da501356e48a83c61f479393681c1bc4b94e5a34ace7e08cb29e7dd9290ab18"
+
+inherit pypi setuptools
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-blinker_1.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-blinker_1.4.bb
new file mode 100644
index 0000000..0ce141f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-blinker_1.4.bb
@@ -0,0 +1,8 @@
+DESCRIPTION = "Fast, simple object-to-object and broadcast signaling."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=946d7e89af6f7733aeaebed5635d2682"
+
+SRC_URI[md5sum] = "8b3722381f83c2813c52de3016b68d33"
+SRC_URI[sha256sum] = "471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc
new file mode 100644
index 0000000..0fe8b15
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-certifi.inc
@@ -0,0 +1,11 @@
+SUMMARY = "Python package for providing Mozilla's CA Bundle."
+DESCRIPTION = "This installable Python package contains a CA Bundle that you can reference in your \
+Python code. This is useful for verifying HTTP requests, for example.  This is the same CA Bundle \
+which ships with the Requests codebase, and is derived from Mozilla Firefox's canonical set."
+HOMEPAGE = " http://certifi.io/"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f77f61d14ee6feac4228d3ebd26cc1f1"
+
+SRC_URI[md5sum] = "5d672aa766e1f773c75cfeccd02d3650"
+SRC_URI[sha256sum] = "5e8eccf95924658c97b990b50552addb64f55e1e3dfe4880456ac1f287dc79d0"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2016.2.28.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2016.2.28.bb
new file mode 100644
index 0000000..adfe623
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-certifi_2016.2.28.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-certifi.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cffi_1.5.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cffi_1.5.2.bb
new file mode 100644
index 0000000..8b25877
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cffi_1.5.2.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Foreign Function Interface for Python calling C code"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf"
+DEPENDS = "libffi python-pycparser"
+
+SRC_URI[md5sum] = "fa766133f7299464c8bf857e0c966a82"
+SRC_URI[sha256sum] = "da9bde99872e46f7bb5cff40a9b1cc08406765efafb583c704de108b6cb821dd"
+
+inherit pypi setuptools
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-chardet_2.3.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-chardet_2.3.0.bb
new file mode 100644
index 0000000..dfc979b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-chardet_2.3.0.bb
@@ -0,0 +1,8 @@
+SUMMARY = "Universal encoding detector for Python 2 and 3"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+SRC_URI[md5sum] = "25274d664ccb5130adae08047416e1a8"
+SRC_URI[sha256sum] = "e53e38b3a4afe6d1132de62b7400a4ac363452dc5dfcf8d88e8e0cce663c68aa"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb
new file mode 100644
index 0000000..20fc2fd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cheetah_2.4.4.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Python template engine and code generation tool"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aff1107514aa6aae948f9fe71fdc393b"
+
+PR = "r3"
+
+PYPI_PACKAGE = "Cheetah"
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "python-pickle python-pprint"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI[md5sum] = "853917116e731afbc8c8a43c37e6ddba"
+SRC_URI[sha256sum] = "be308229f0c1e5e5af4f27d7ee06d90bb19e6af3059794e5fd536a6f29a9b550"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cloudeebus_0.6.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cloudeebus_0.6.0.bb
new file mode 100644
index 0000000..120a8a7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cloudeebus_0.6.0.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "A component which enables calling DBus methods and registering on DBus signals from Javascript"
+HOMEPAGE = "https://github.com/01org/cloudeebus"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI = "git://github.com/01org/cloudeebus.git;protocol=http;branch=master "
+SRCREV = "b5cc957eeabfe98cb996baf8e5a0ac848993c3d4"
+
+S = "${WORKDIR}/git"
+
+inherit distutils 
+
+DEPENDS_${PN} = "python python-distribute"
+RDEPENDS_${PN} = "python python-dbus python-json python-argparse python-pygobject python-autobahn python-twisted python-subprocess"
+
+do_install_prepend() {
+  install -d ${D}${PYTHON_SITEPACKAGES_DIR}/${PN}
+}
+
+DISTUTILS_INSTALL_ARGS = "--root=${D} \
+    --single-version-externally-managed \
+    --prefix=${prefix} \
+    --install-lib=${PYTHON_SITEPACKAGES_DIR} \
+    --install-data=${datadir}"
+
+do_install_append() {
+  distutils_do_install
+  install -d ${D}${datadir}/doc/${BPN}/
+  install -m 0644 ${S}/README.md ${D}${datadir}/doc/${BPN}/
+}
+
+FILES_${PN} += "${datadir}/cloudeebus"
+FILES_${PN} += "${sysconfdir}/dbus-1/system.d/org.cloudeebus.conf"
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.6.8.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.6.8.bb
new file mode 100644
index 0000000..f4962d6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.6.8.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Extra features for standard library's cmd module"
+HOMEPAGE = "http://packages.python.org/cmd2/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://setup.py;beginline=21;endline=21;md5=a00047b7e92e0781452d0beba4e7b44e"
+
+SRC_URI[md5sum] = "c32c9a897e010c977b50c1ddc13f09fe"
+SRC_URI[sha256sum] = "ac780d8c31fc107bf6b4edcbcea711de4ff776d59d89bb167f8819d2d83764a8"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "python-pyparsing"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_1.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_1.1.bb
new file mode 100644
index 0000000..2150e50
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_1.1.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Test vectors for the cryptography package."
+SECTION = "devel/python"
+LICENSE = "Apache-2.0 | BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4"
+DEPENDS = "python-cryptography"
+SRCNAME = "cryptography_vectors"
+
+SRC_URI = "https://pypi.python.org/packages/source/c/cryptography-vectors/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+SRC_URI[md5sum] = "0ad422501074929c06b7edd40df41844"
+SRC_URI[sha256sum] = "a929fbb0eac391c93c5745451a4d4157a8bc18eb2e69faf3af1d825ceacbf32c"
+
+inherit setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/Comment_lingering_SSLv2_symbol.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/Comment_lingering_SSLv2_symbol.patch
new file mode 100644
index 0000000..b28e7ef
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/Comment_lingering_SSLv2_symbol.patch
@@ -0,0 +1,24 @@
+From f326e4a97cce6b9479560ce0c65ad18d54393f96 Mon Sep 17 00:00:00 2001
+From: Cory Benfield <lukasaoz@gmail.com>
+Date: Mon, 14 Dec 2015 15:37:46 +0000
+Subject: [PATCH] Comment lingering SSLv2 symbol.
+
+---
+ src/_cffi_src/openssl/ssl.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+Index: cryptography-1.1/src/_cffi_src/openssl/ssl.py
+===================================================================
+--- cryptography-1.1.orig/src/_cffi_src/openssl/ssl.py
++++ cryptography-1.1/src/_cffi_src/openssl/ssl.py
+@@ -421,6 +421,10 @@ const long SSL_OP_LEGACY_SERVER_CONNECT
+ static const long Cryptography_HAS_SECURE_RENEGOTIATION = 1;
+ #endif
+ 
++/* Cryptography now compiles out all SSLv2 bindings. This exists to allow
++ * clients that use it to check for SSLv2 support to keep functioning as
++ * expected.
++ */
+ static const long Cryptography_HAS_SSL2 = 0;
+ 
+ #ifdef OPENSSL_NO_SSL3_METHOD
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/Remove_SSLv2_bindings.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/Remove_SSLv2_bindings.patch
new file mode 100644
index 0000000..8522325
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/Remove_SSLv2_bindings.patch
@@ -0,0 +1,75 @@
+From 90c6a53a885dd5c66992309e0af98ac554f1bb97 Mon Sep 17 00:00:00 2001
+From: Cory Benfield <lukasaoz@gmail.com>
+Date: Mon, 14 Dec 2015 08:35:20 +0000
+Subject: [PATCH] Remove SSLv2 bindings.
+
+This commit removes bindings that allow users to set SSLv2 handshake
+methods. These are regarded as unnecessary and out-of-date: see #2527.
+This commit does leave in a few options that refer to SSLv2 in order to
+avoid breaking deployments that rely on them, and in order to allow
+users to continue to request that SSLv2 not be enabled at all in their
+OpenSSL.
+
+Upstream-Status: Backport
+
+This fixes the compile issue after updating to openssl 1.0.2h
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ src/_cffi_src/openssl/ssl.py                            | 17 +----------------
+ .../hazmat/bindings/openssl/_conditional.py             |  6 ------
+ 2 files changed, 1 insertion(+), 22 deletions(-)
+
+Index: cryptography-1.1/src/_cffi_src/openssl/ssl.py
+===================================================================
+--- cryptography-1.1.orig/src/_cffi_src/openssl/ssl.py
++++ cryptography-1.1/src/_cffi_src/openssl/ssl.py
+@@ -292,15 +292,6 @@ unsigned long SSL_CTX_add_extra_chain_ce
+ 
+ /*  methods */
+ 
+-/* SSLv2 support is compiled out of some versions of OpenSSL.  These will
+- * get special support when we generate the bindings so that if they are
+- * available they will be wrapped, but if they are not they won't cause
+- * problems (like link errors).
+- */
+-const SSL_METHOD *SSLv2_method(void);
+-const SSL_METHOD *SSLv2_server_method(void);
+-const SSL_METHOD *SSLv2_client_method(void);
+-
+ /*
+  * TLSv1_1 and TLSv1_2 are recent additions.  Only sufficiently new versions of
+  * OpenSSL support them.
+@@ -429,14 +420,8 @@ const long SSL_OP_LEGACY_SERVER_CONNECT
+ #else
+ static const long Cryptography_HAS_SECURE_RENEGOTIATION = 1;
+ #endif
+-#ifdef OPENSSL_NO_SSL2
++
+ static const long Cryptography_HAS_SSL2 = 0;
+-SSL_METHOD* (*SSLv2_method)(void) = NULL;
+-SSL_METHOD* (*SSLv2_client_method)(void) = NULL;
+-SSL_METHOD* (*SSLv2_server_method)(void) = NULL;
+-#else
+-static const long Cryptography_HAS_SSL2 = 1;
+-#endif
+ 
+ #ifdef OPENSSL_NO_SSL3_METHOD
+ static const long Cryptography_HAS_SSL3_METHOD = 0;
+Index: cryptography-1.1/src/cryptography/hazmat/bindings/openssl/_conditional.py
+===================================================================
+--- cryptography-1.1.orig/src/cryptography/hazmat/bindings/openssl/_conditional.py
++++ cryptography-1.1/src/cryptography/hazmat/bindings/openssl/_conditional.py
+@@ -274,12 +274,6 @@ CONDITIONAL_NAMES = {
+         "TLSv1_2_client_method",
+     ],
+ 
+-    "Cryptography_HAS_SSL2": [
+-        "SSLv2_method",
+-        "SSLv2_client_method",
+-        "SSLv2_server_method",
+-    ],
+-
+     "Cryptography_HAS_SSL3_METHOD": [
+         "SSLv3_method",
+         "SSLv3_client_method",
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/build_fix_openssl_1.0.1g.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/build_fix_openssl_1.0.1g.patch
new file mode 100644
index 0000000..d08994f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/build_fix_openssl_1.0.1g.patch
@@ -0,0 +1,28 @@
+build issue do to openssl 1.0.1g upgrade
+
+BIO *BIO_new_mem_buf(void *, int);
+      ^
+In file included from /home/jenkins/oe/world/shr-core/tmp-glibc/sysroots/qemuarm/usr/include/openssl/asn1.h:65:0,
+from build/temp.linux-x86_64-2.7/_openssl.c:413:
+
+
+Upstream-Status: Pending
+
+seems to be a known issue
+https://github.com/pyca/cryptography/issues/2750
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+Index: src/_cffi_src/openssl/bio.py
+===================================================================
+--- a/src/_cffi_src/openssl/bio.py
++++ b/src/_cffi_src/openssl/bio.py
+@@ -99,7 +99,7 @@ BIO *BIO_pop(BIO *);
+ BIO *BIO_next(BIO *);
+ BIO *BIO_find_type(BIO *, int);
+ BIO_METHOD *BIO_s_mem(void);
+-BIO *BIO_new_mem_buf(void *, int);
++BIO *BIO_new_mem_buf(const void *, int);
+ BIO_METHOD *BIO_s_file(void);
+ BIO *BIO_new_file(const char *, const char *);
+ BIO *BIO_new_fp(FILE *, int);
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/run-ptest b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/run-ptest
new file mode 100644
index 0000000..0ba239c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography/run-ptest
@@ -0,0 +1,2 @@
+#!/bin/sh
+py.test
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_1.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_1.1.bb
new file mode 100644
index 0000000..665a4cb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_1.1.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Provides cryptographic recipes and primitives to Python developers"
+LICENSE = "Apache-2.0 | BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4"
+DEPENDS += " python-cffi-native python-cffi python-enum34 python-six python-pyasn1"
+SRCNAME = "cryptography"
+
+SRC_URI = "file://run-ptest \
+           file://build_fix_openssl_1.0.1g.patch \
+           file://Remove_SSLv2_bindings.patch \
+           file://Comment_lingering_SSLv2_symbol.patch"
+
+SRC_URI[md5sum] = "dd06da41535184f48f2c8e8b74dd570f"
+SRC_URI[sha256sum] = "059bc6428b1d0e2317f505698602642f1d8dda5b120ec573a59a430d8cb7a32d"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "\
+                  python-pyasn1\
+                  python-six\
+                  python-cffi\
+                  python-enum34\
+                  python-setuptools\
+                  python-pycparser\
+                  python-subprocess\
+                  python-threading\
+                  python-numbers\
+                  python-contextlib\
+                  python-ipaddress\
+                  python-pyasn1\
+                  python-idna\
+"
+
+RDEPENDS_${PN}-ptest = "\
+                       ${PN}\
+                       python-pytest\
+                       python-pretend\
+                       python-iso8601\
+                       python-cryptography-vectors\
+"
+
+inherit ptest
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+    install -d ${D}${PTEST_PATH}/tests/hazmat
+    cp -rf ${S}/tests/hazmat/* ${D}${PTEST_PATH}/tests/hazmat/
+}
+
+FILES_${PN}-dbg += " \
+    ${libdir}/python2.7/site-packages/${SRCNAME}/hazmat/bindings/.debug \
+    "
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cython.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cython.inc
new file mode 100644
index 0000000..f5945b5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cython.inc
@@ -0,0 +1,21 @@
+DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \
+It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \
+and the messy, low-level world of C."
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa"
+SRCNAME = "Cython"
+BBCLASSEXTEND = "native"
+
+SRC_URI = "http://www.cython.org/release/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+SRC_URI[md5sum] = "14fbc970f4a856845e633cbc09e61048"
+SRC_URI[sha256sum] = "6de44d8c482128efc12334641347a9c3e5098d807dd3c69e867fa8f84ec2a3f1"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-subprocess \
+    ${PYTHON_PN}-shell \
+"
+RDEPENDS_${PN}_class-native = ""
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cython_0.24.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cython_0.24.bb
new file mode 100644
index 0000000..6be0b1e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-cython_0.24.bb
@@ -0,0 +1,6 @@
+inherit setuptools
+require python-cython.inc
+
+RDEPENDS_${PN} += "\
+    python-distribute \
+"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-daemonize_2.4.6.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-daemonize_2.4.6.bb
new file mode 100644
index 0000000..b17b366
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-daemonize_2.4.6.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Library to enable your code run as a daemon process on Unix-like systems"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=13e982bf1b7b164b9d6d1665dac83873"
+SRCNAME = "daemonize"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "\
+               python-fcntl \
+               python-unixadmin \
+               python-logging \
+               python-resource \
+"
+
+SRC_URI[md5sum] = "17bc788a8524b104d4639a68623461e3"
+SRC_URI[sha256sum] = "8aa66bad9aa10c682302a4ea9675874191304adeb3239e0776f1ca3041d30619"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil.inc
new file mode 100644
index 0000000..a944ef2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil.inc
@@ -0,0 +1,21 @@
+SUMMARY = "Extensions to the standard Python datetime module"
+DESCRIPTION = "The dateutil module provides powerful extensions to the datetime module available in the Python standard library."
+HOMEPAGE = "https://dateutil.readthedocs.org"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=51430b33c900f45f999c459ee29ca493"
+PR = "r0"
+
+SRC_URI[md5sum] = "eafe168e8f404bf384514f5116eedbb6"
+SRC_URI[sha256sum] = "063907ef47f6e187b8fe0728952e4effb587a34f2dc356888646f9b71fbb2e4b"
+
+PYPI_PACKAGE = "python-dateutil"
+inherit pypi 
+
+PACKAGES =+ "${PN}-zoneinfo"
+FILES_${PN}-zoneinfo = "${libdir}/${PYTHON_DIR}/site-packages/dateutil/zoneinfo"
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-six \
+    "
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil_2.5.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil_2.5.2.bb
new file mode 100644
index 0000000..12ae4c3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dateutil_2.5.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-dateutil.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch
new file mode 100644
index 0000000..fdd00b6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0001-Add-functionality-to-add-own-objects-to-internal-obj.patch
@@ -0,0 +1,53 @@
+From eebe0f66435c4d821b0f5f93f69efe17b4a384c2 Mon Sep 17 00:00:00 2001
+From: Simon Busch <simon.busch@lge.com>
+Date: Wed, 9 Apr 2014 13:18:33 +0200
+Subject: [PATCH 1/2] Add functionality to add own objects to internal object
+ list
+
+In some case the tests might want to create dynamically dbus objects which extended
+functionality from own class definitions within templates. In such cases we need to
+register those objects with the internal object manager of dbusmock.
+
+Signed-off-by: Simon Busch <simon.busch@lge.com>
+---
+ dbusmock/__init__.py   |    4 ++--
+ dbusmock/mockobject.py |    8 ++++++++
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/dbusmock/__init__.py b/dbusmock/__init__.py
+index f799cc7..6718c06 100644
+--- a/dbusmock/__init__.py
++++ b/dbusmock/__init__.py
+@@ -14,8 +14,8 @@ __license__ = 'LGPL 3+'
+ __version__ = '0.10.1'
+ 
+ from dbusmock.mockobject import (DBusMockObject, MOCK_IFACE,
+-                                 OBJECT_MANAGER_IFACE, get_object, get_objects)
++                                 OBJECT_MANAGER_IFACE, get_object, get_objects, add_object)
+ from dbusmock.testcase import DBusTestCase
+ 
+ __all__ = ['DBusMockObject', 'MOCK_IFACE', 'OBJECT_MANAGER_IFACE',
+-           'DBusTestCase', 'get_object', 'get_objects']
++           'DBusTestCase', 'get_object', 'get_objects', 'add_object']
+diff --git a/dbusmock/mockobject.py b/dbusmock/mockobject.py
+index 97b79ce..a98e03d 100644
+--- a/dbusmock/mockobject.py
++++ b/dbusmock/mockobject.py
+@@ -682,6 +682,14 @@ dbus.service._method_lookup = _dbusmock_method_lookup
+ # Helper API for templates
+ #
+ 
++def add_object(path, obj):
++    if path in objects:
++        raise dbus.exceptions.DBusException(
++                'org.freedesktop.DBus.Mock.NameError',
++                'object %s already exists' % path)
++
++    objects[path] = obj
++
+ 
+ def get_objects():
+     '''Return all existing object paths'''
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch
new file mode 100644
index 0000000..981694f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock/0002-Add-possibility-to-import-templates-from-packages.patch
@@ -0,0 +1,29 @@
+From ff1dffd5673bcd2cbd9554ad62476d108dbc18af Mon Sep 17 00:00:00 2001
+From: Simon Busch <simon.busch@lge.com>
+Date: Wed, 9 Apr 2014 13:20:33 +0200
+Subject: [PATCH 2/2] Add possibility to import templates from packages
+
+Does not have any unit tests yet.
+
+Signed-off-by: Simon Busch <simon.busch@lge.com>
+---
+ dbusmock/mockobject.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/dbusmock/mockobject.py b/dbusmock/mockobject.py
+index a98e03d..9530c2a 100644
+--- a/dbusmock/mockobject.py
++++ b/dbusmock/mockobject.py
+@@ -49,6 +49,9 @@ def load_module(name):
+ 
+         return module
+ 
++    if '.' in name:
++        return importlib.import_module(name)
++
+     return importlib.import_module('dbusmock.templates.' + name)
+ 
+ 
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock_0.10.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock_0.10.1.bb
new file mode 100644
index 0000000..2520bfc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dbusmock_0.10.1.bb
@@ -0,0 +1,21 @@
+# Copyright (c) 2014 LG Electronics, Inc.
+
+SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus"
+AUTHOR = "Martin Pitt <martin.pitt@ubuntu.com>"
+SECTION = "devel/python"
+
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+DEPENDS += "python-pygobject python-dbus"
+
+SRC_URI = "https://launchpad.net/${BPN}/trunk/${PV}/+download/${BP}.tar.gz"
+SRC_URI[md5sum] = "7370d325c4a75494dd71885ca65b79e8"
+SRC_URI[sha256sum] = "03aadc93bdc26ea18d4d78fcff7b6cb34f4e18623bc5cc41cf9539d663cee11e"
+
+SRC_URI += " \
+    file://0001-Add-functionality-to-add-own-objects-to-internal-obj.patch \
+    file://0002-Add-possibility-to-import-templates-from-packages.patch \
+"
+
+inherit setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-decorator.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-decorator.inc
new file mode 100644
index 0000000..5710012
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-decorator.inc
@@ -0,0 +1,15 @@
+SUMMARY = "Python decorator utilities"
+DESCRIPTION = "\
+The aim of the decorator module it to simplify the usage of decorators \
+for the average programmer, and to popularize decorators by showing \
+various non-trivial examples. Of course, as all techniques, decorators \
+can be abused and you should not try to solve every problem with a \
+decorator, just because you can."
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=41e24e0e235a97e60cdb5c4137fa2cd0"
+
+SRC_URI[md5sum] = "f12c5651ccd707e12a0abaa4f76cd69a"
+SRC_URI[sha256sum] = "90022e83316363788a55352fe39cfbed357aa3a71d90e5f2803a35471de4bba8"
+
+inherit pypi
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-decorator_4.0.9.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-decorator_4.0.9.bb
new file mode 100644
index 0000000..f262168
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-decorator_4.0.9.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-decorator.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-django-south_1.0.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-django-south_1.0.2.bb
new file mode 100644
index 0000000..4d071c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-django-south_1.0.2.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Migrations for Django"
+DESCRIPTION = "South is an intelligent database migrations library for the Django web framework. It is database-independent and DVCS-friendly, as well as a whole host of other features."
+HOMEPAGE = "http://south.aeracode.org/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=17;endline=18;md5=2155d8ae21e7c23101d5febac696b27e"
+
+SRC_URI[md5sum] = "c76a9758b2011bc3b6c39f881bba2f66"
+SRC_URI[sha256sum] = "d360bd31898f9df59f6faa786551065bba45b35e7ee3c39b381b4fbfef7392f4"
+
+PYPI_PACKAGE = "South"
+inherit pypi distutils
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-django_1.8.8.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-django_1.8.8.bb
new file mode 100644
index 0000000..e56c555
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-django_1.8.8.bb
@@ -0,0 +1,14 @@
+SUMMARY = "A high-level Python Web framework"
+HOMEPAGE = "http://www.djangoproject.com/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f09eb47206614a4954c51db8a94840fa"
+
+SRC_URI[md5sum] = "08ecf83b7e9d064ed7e3981ddc3a8a15"
+SRC_URI[sha256sum] = "8255242fa0d9e0bf331259a6bdb81364933acbe8863291661558ffdb2fc9ed70"
+
+PYPI_PACKAGE = "Django"
+inherit pypi setuptools
+
+FILES_${PN} += "${datadir}/django"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dominate_2.2.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dominate_2.2.0.bb
new file mode 100644
index 0000000..1feaa7e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-dominate_2.2.0.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Dominate is a Python library for creating and manipulating HTML documents using an elegant DOM API."
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=a30b9a8d0a5585c482c6c5a6d54aaebc"
+
+SRC_URI[md5sum] = "14ee0361db7fbaed982220c09ef8e0b9"
+SRC_URI[sha256sum] = "5032559e0f0835419763b3d1d88ad31ea4fe40935712db86014f2a341c89fa3d"
+
+PYPI_PACKAGE_EXT = "zip"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-enum34_1.1.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-enum34_1.1.2.bb
new file mode 100644
index 0000000..5083bda
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-enum34_1.1.2.bb
@@ -0,0 +1,8 @@
+SUMMARY = "backport of Python 3.4's enum package"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://enum/LICENSE;md5=0a97a53a514564c20efd7b2e8976c87e"
+
+SRC_URI[md5sum] = "025bb71b3f9d2fad15d0ee53e48dc873"
+SRC_URI[sha256sum] = "2475d7fcddf5951e92ff546972758802de5260bf409319a9f1934e6bbc8b1dc7"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb
new file mode 100644
index 0000000..c4752d3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-epydoc_3.0.1.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Epydoc is a tool for generating API documentation for Python modules, based on their docstrings" 
+LICENSE = "MIT" 
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=011c0d78eb6054d731c879132d7313f0"
+HOMEPAGE = "http://epydoc.sourceforge.net/" 
+
+SRC_URI[md5sum] = "cdd6f6c76dd8bab5e653a343a0544294"
+SRC_URI[sha256sum] = "d4e5c8d90937d01b05170f592c1fa9b29e9ed0498dfe7f0eb2a3af61725b6ad1"
+
+inherit pypi distutils 
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-evdev_0.6.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-evdev_0.6.0.bb
new file mode 100644
index 0000000..e555552
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-evdev_0.6.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Python evdev lib"
+HOMEPAGE = "https://github.com/gvalkov/python-evdev"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=18debddbb3f52c661a129724a883a8e2"
+
+SRC_URI = "https://github.com/gvalkov/python-evdev/archive/v${PV}.zip"
+
+SRC_URI[md5sum] = "24e4ffa98e338b535eae44d91d609005"
+SRC_URI[sha256sum] = "61f6893d80da87a995e5781c74d22a39448b1b32004ffac2f31817017709be04"
+
+inherit setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter.inc
new file mode 100644
index 0000000..1a02a4f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter.inc
@@ -0,0 +1,11 @@
+DESCRIPTION = "A Python library for generating news feeds in RSS and Atom formats"
+HOMEPAGE = "http://code.google.com/p/feedformatter/"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=258e3f39e2383fbd011035d04311008d"
+SRCREV = "7391193c83e10420b5a2d8ef846d23fc368c6d85"
+PR = "r0"
+
+SRC_URI = "git://github.com/marianoguerra/feedformatter.git"
+
+S = "${WORKDIR}/git"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter_0.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter_0.4.bb
new file mode 100644
index 0000000..175f944
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-feedformatter_0.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-feedformatter.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-feedparser_5.2.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-feedparser_5.2.1.bb
new file mode 100644
index 0000000..3ac18b0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-feedparser_5.2.1.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Python Atom and RSS feed parser"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c21a7713ef6dc1b99644061c397e7c2a"
+
+SRC_URI[md5sum] = "d552f7a2a55e8e33b2a3fe1082505b42"
+SRC_URI[sha256sum] = "bd030652c2d08532c034c27fcd7c85868e7fa3cb2b17f230a44a6bbc92519bf9"
+
+inherit pypi setuptools
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bcrypt_0.7.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bcrypt_0.7.1.bb
new file mode 100644
index 0000000..d08883d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bcrypt_0.7.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Brcrypt hashing for Flask."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0ee2ee5bee7fe96597770e92db5719a8"
+
+SRC_URI[md5sum] = "d345c36ac6637d3ca9fa942e238d00ca"
+SRC_URI[sha256sum] = "d71c8585b2ee1c62024392ebdbc447438564e2c8c02b4e57b56a4cafd8d13c5f"
+
+PYPI_PACKAGE = "Flask-Bcrypt"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "python-bcrypt"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap_3.3.5.7.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap_3.3.5.7.bb
new file mode 100644
index 0000000..ecf89ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-bootstrap_3.3.5.7.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "An extension that includes Bootstrap in your project, without any boilerplate code."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=f270fbb7d3ea88731bfc00916750c6bc"
+
+SRC_URI[md5sum] = "4471ad68dbf71a3c68e00bd0e1301a9f"
+SRC_URI[sha256sum] = "020bf9fcca6d69dce3b19bcb80852da929a2b1adde6cb4d47a4402f5ce54ef78"
+
+PYPI_PACKAGE = "Flask-Bootstrap"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login.inc
new file mode 100644
index 0000000..95c4428
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login.inc
@@ -0,0 +1,14 @@
+SUMMARY = "User session management for Flask"
+DESCRIPTION = "Flask-Login provides user session management for Flask. \
+It handles the common tasks of logging in, logging out, and remembering \
+your users’ sessions over extended periods of time."
+HOMEPAGE = " https://github.com/maxcountryman/flask-login"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8aa87a1cd9fa41d969ad32cfdac2c596"
+
+SRC_URI[md5sum] = "c0a7eaf28623f0aeac4929dc05a7a064"
+SRC_URI[sha256sum] = "83d5f10e5c4f214feed6cc41c212db63a58a15ac32e56df81591bfa0a5cee3e5"
+
+PYPI_PACKAGE = "Flask-Login"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-flask"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login_0.2.11.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login_0.2.11.bb
new file mode 100644
index 0000000..510cedf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-login_0.2.11.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-login.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-navigation_0.2.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-navigation_0.2.0.bb
new file mode 100644
index 0000000..8ff6abc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-navigation_0.2.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "The navigation of Flask application."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=af2ec695dc1f3eb7bd74f79a68a0d789"
+
+SRC_URI[md5sum] = "d1075ee02a3f69da37e5cadad3395f31"
+SRC_URI[sha256sum] = "c42d30efa989ca877444a410e8a1cd2563546f9effe3d9fe388eedf7a6c69285"
+
+PYPI_PACKAGE = "Flask-Navigation"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "python-blinker"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc
new file mode 100644
index 0000000..939113b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo.inc
@@ -0,0 +1,13 @@
+SUMMARY = "PyMongo support for Flask applications"
+DESCRIPTION = "PyMongo support for Flask applications."
+HOMEPAGE = "https://github.com/mitsuhiko/flask/"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://flask_pymongo/wrappers.py;startline=1;endline=24;md5=dff998d5a8469503612ee7757f3a2052"
+
+SRC_URI[md5sum] = "457a210f35ba49d2623dbcf27fbb89e1"
+SRC_URI[sha256sum] = "707ddff92f5b7bdc34d401f1f3857a3d1a9f5dba76e6a1422ccbc3651e2ca521"
+
+PYPI_PACKAGE = "Flask-PyMongo"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-pymongo ${PYTHON_PN}-flask"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo_0.4.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo_0.4.0.bb
new file mode 100644
index 0000000..d41d023
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-pymongo_0.4.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask-pymongo.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy_2.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy_2.1.bb
new file mode 100644
index 0000000..a258713
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-sqlalchemy_2.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Adds SQLAlchemy support to your Flask application."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5ed1b8cc741515a835a7f6bf2f62ef4a"
+
+SRC_URI[md5sum] = "dc15fe08b07b434d3d2c4063b4674b72"
+SRC_URI[sha256sum] = "c5244de44cc85d2267115624d83faef3f9e8f088756788694f305a5d5ad137c5"
+
+PYPI_PACKAGE = "Flask-SQLAlchemy"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "python-sqlalchemy"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf/import-simplejson-as-json.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf/import-simplejson-as-json.patch
new file mode 100644
index 0000000..678f706
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf/import-simplejson-as-json.patch
@@ -0,0 +1,28 @@
+Upstream-Status: Inappropriate [configuration]
+
+Subject: [PATCH] import simplejson as json
+
+At runtime python-Flask-WTF tries to import json, but the module is not 
+available, import simplejson as json solve the issue.
+
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+ flask_wtf/recaptcha/validators.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/flask_wtf/recaptcha/validators.py b/flask_wtf/recaptcha/validators.py
+index bcff23d..4a244bb 100644
+--- a/flask_wtf/recaptcha/validators.py
++++ b/flask_wtf/recaptcha/validators.py
+@@ -8,7 +8,7 @@ from flask import request, current_app
+ from wtforms import ValidationError
+ from werkzeug import url_encode
+ from .._compat import to_bytes, to_unicode
+-import json
++import simplejson as json
+ 
+ RECAPTCHA_VERIFY_SERVER = 'https://www.google.com/recaptcha/api/siteverify'
+ RECAPTCHA_ERROR_CODES = {
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf_0.12.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf_0.12.bb
new file mode 100644
index 0000000..79afaf6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask-wtf_0.12.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Simple integration of Flask and WTForms."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=507e8635f25a06dc4f041a3a1b3359b3"
+
+SRC_URI[md5sum] = "c53a74e8ba481bf53405fd5efdf0339e"
+SRC_URI[sha256sum] = "bd99316c97ed1d1cb90b8f0c242c86420a891a6a2058f20717e424bf5b0bb80e"
+
+SRC_URI += " file://import-simplejson-as-json.patch"
+
+PYPI_PACKAGE = "Flask-WTF"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "\
+    python-wtforms \
+    python-simplejson \
+"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc
new file mode 100644
index 0000000..4923726
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask.inc
@@ -0,0 +1,14 @@
+SUMMARY = "A microframework based on Werkzeug, Jinja2 and good intentions"
+DESCRIPTION = "\
+Flask is a microframework for Python based on Werkzeug, Jinja 2 and good \
+intentions. And before you ask: It’s BSD licensed!"
+HOMEPAGE = "https://github.com/mitsuhiko/flask/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=79aa8b7bc4f781210d6b5c06d6424cb0"
+
+SRC_URI[md5sum] = "378670fe456957eb3c27ddaef60b2b24"
+SRC_URI[sha256sum] = "4c83829ff83d408b5e1d4995472265411d2c414112298f2eb4b359d9e4563373"
+
+PYPI_PACKAGE = "Flask"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-werkzeug ${PYTHON_PN}-jinja2 ${PYTHON_PN}-itsdangerous"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask_0.10.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask_0.10.1.bb
new file mode 100644
index 0000000..a0a28ab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flask_0.10.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-flask.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flufl-enum_4.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flufl-enum_4.1.bb
new file mode 100644
index 0000000..ef10848
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-flufl-enum_4.1.bb
@@ -0,0 +1,24 @@
+SUMMARY  = "A Python enumeration package."
+DESCRIPTION = "The flufl.enum library is a Python enumeration package. Its goal is to provide simple, \
+specific, concise semantics in an easy to read and write syntax. flufl.enum has just enough of the \
+features needed to make enumerations useful, but without a lot of extra baggage to weigh them down. "
+
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://PKG-INFO;startline=8;endline=9;md5=250adb4c74c359b7049abcd9d6b115e7"
+
+SRC_URI[md5sum] = "461779384c07ed2b5f554a5d51a000c4"
+SRC_URI[sha256sum] = "94da1413ba085473652f81565847913ea1543d1739972ecbd6afe57d7b1b68b4"
+
+PYPI_PACKAGE = "flufl.enum"
+inherit pypi setuptools
+
+PACKAGES =+ "\  
+    ${PN}-test \
+"
+
+FILES_${PN}-doc += "\
+    ${libdir}/${PYTHON_DIR}/site-packages/flufl/enum/*.rst \
+    ${libdir}/${PYTHON_DIR}/site-packages/flufl/enum/docs \
+"
+
+FILES_${PN}-test += "${libdir}/${PYTHON_DIR}/site-packages/flufl/enum/tests"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-gdata_1.2.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-gdata_1.2.4.bb
new file mode 100644
index 0000000..2205584
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-gdata_1.2.4.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Google Data APIs Python Client Library"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.txt;md5=473bd4dff0ddca1f958244b2dc7a162c"
+HOMEPAGE = "http://code.google.com/p/gdata-python-client/"
+
+inherit distutils
+
+SRC_URI = "http://gdata-python-client.googlecode.com/files/gdata.py-${PV}.tar.gz"
+SRC_URI[md5sum] = "521f33a377d64f8a6505ba119415b787"
+SRC_URI[sha256sum] = "fc5ddb8f76b17abd728721a0e0177ea35f55a70106f44dc9010b22eceb06abde"
+
+S = "${WORKDIR}/gdata.py-${PV}"
+
+FILES_${PN} += "${datadir}"
+
+RDEPENDS_${PN} = "python-xml"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-gevent_0.13.8.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-gevent_0.13.8.bb
new file mode 100644
index 0000000..d1c0a3c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-gevent_0.13.8.bb
@@ -0,0 +1,15 @@
+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."
+HOMEPAGE = "http://www.gevent.org"
+LICENSE = "MIT & BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2dbb33d00e1fd31c7041460a81ac0bd2 \
+                    file://LICENSE.pyevent;md5=718070c63de243053e2c616268b00fdd"
+DEPENDS += "python-greenlet libevent"
+RDEPENDS_${PN} += "python-greenlet python-mime python-pprint python-re"
+
+SRC_URI[md5sum] = "ca9dcaa7880762d8ebbc266b11252960"
+SRC_URI[sha256sum] = "54b8d26300ce408c0916a3e63ef6cd3e6aca76230833558deb7de15196ed955e"
+
+inherit pypi setuptools
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet_0.4.7.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet_0.4.7.bb
new file mode 100644
index 0000000..a69eb64
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-greenlet_0.4.7.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Python lightweight in-process concurrent programming"
+LICENSE = "MIT & PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=03143d7a1a9f5d8a0fee825f24ca9c36 \
+                    file://LICENSE.PSF;md5=c106931d9429eda0492617f037b8f69a"
+
+SRC_URI[md5sum] = "c2333a8ff30fa75c5d5ec0e67b461086"
+SRC_URI[sha256sum] = "f32c4fa4e06443e1bdb0d32b69e7617c25ff772c3ffc6d0aa63d192e9fd795fe"
+
+PYPI_PACKAGE_EXT = "zip"
+inherit pypi distutils
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib_0.9999999.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib_0.9999999.bb
new file mode 100644
index 0000000..bb92e59
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-html5lib_0.9999999.bb
@@ -0,0 +1,8 @@
+SUMMARY = "HTML parser based on the WHATWG HTML specifcation"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1ba5ada9e6fead1fdc32f43c9f10ba7c"
+
+SRC_URI[md5sum] = "ef43cb05e9e799f25d65d1135838a96f"
+SRC_URI[sha256sum] = "2612a191a8d5842bfa057e41ba50bbb9dcb722419d2408c78cff4758d0754868"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-idna_2.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-idna_2.1.bb
new file mode 100644
index 0000000..90f47ae
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-idna_2.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Internationalised Domain Names in Applications"
+HOMEPAGE = "https://github.com/kjd/idna"
+LICENSE = "BSD-3-Clause & Python-2.0 & Unicode"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=134bdad79491c37bdae32811572b4bc6"
+
+DEPENDS += "python-pip"
+
+SRC_URI[md5sum] = "f6473caa9c5e0cc1ad3fd5d04c3c114b"
+SRC_URI[sha256sum] = "ed36f281aebf3cd0797f163bb165d84c31507cedd15928b095b1675e2d04c676"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress_1.0.16.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress_1.0.16.bb
new file mode 100644
index 0000000..1e97ef7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ipaddress_1.0.16.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Python 3.3+'s ipaddress for Python 2.6, 2.7, 3.2."
+HOMEPAGE = "https://github.com/phihag/ipaddress"
+LICENSE = "Python-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7f538584cc3407bf76042def7168548a"
+
+DEPENDS += "python-pip"
+
+SRC_URI[md5sum] = "1e27b62aa20f5b6fc200b2bdbf0d0847"
+SRC_URI[sha256sum] = "5a3182b322a706525c46282ca6f064d27a02cffbd449f9f47416f1dc96aa71b0"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601_0.1.11.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601_0.1.11.bb
new file mode 100644
index 0000000..484cf12
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-iso8601_0.1.11.bb
@@ -0,0 +1,8 @@
+SUMMARY = "Simple module to parse ISO 8601 dates"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b05625f2336fa024e8d57e65c6595844"
+
+SRC_URI[md5sum] = "b06d11cd14a64096f907086044f0fe38"
+SRC_URI[sha256sum] = "e8fb52f78880ae063336c94eb5b87b181e6a0cc33a6c008511bac9a6e980ef30"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous.inc
new file mode 100644
index 0000000..73951fa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Various helpers to pass trusted data to untrusted environments and back."
+HOMEPAGE = "http://github.com/mitsuhiko/itsdangerous"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b61841e2bf5f07884148e2a6f1bcab0c"
+
+SRC_URI[md5sum] = "a3d55aa79369aef5345c036a8a26307f"
+SRC_URI[sha256sum] = "cbb3fcf8d3e33df861709ecaf89d9e6629cff0a217bc2848f1b41cd30d360519"
+
+CLEANBROKEN = "1"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous_0.24.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous_0.24.bb
new file mode 100644
index 0000000..0e156be
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-itsdangerous_0.24.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-itsdangerous.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2.inc
new file mode 100644
index 0000000..f6ee79b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=20c831f91dd3bd486020f672ba2be386"
+
+PR = "r0"
+PYPI_PACKAGE = "Jinja2"
+
+SRC_URI[md5sum] = "edb51693fe22c53cee5403775c71a99e"
+SRC_URI[sha256sum] = "bc1ff2ff88dbfacefde4ddde471d1417d3b304e8df103a7a9437d47269201bf4"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-io ${PYTHON_PN}-pickle ${PYTHON_PN}-crypt \
+    ${PYTHON_PN}-math ${PYTHON_PN}-netclient ${PYTHON_PN}-re ${PYTHON_PN}-textutils \
+    ${PYTHON_PN}-lang ${PYTHON_PN}-pprint ${PYTHON_PN}-shell ${PYTHON_PN}-markupsafe"
+
+CLEANBROKEN = "1"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2_2.8.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2_2.8.bb
new file mode 100644
index 0000000..ec8e7ed
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jinja2_2.8.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-jinja2.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch_1.13.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch_1.13.bb
new file mode 100644
index 0000000..085ba59
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpatch_1.13.bb
@@ -0,0 +1,12 @@
+SUMMARY  = "Appling JSON patches in Python 2.6+ and 3.x"
+HOMEPAGE = "https://github.com/stefankoegl/python-json-patch"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=32b15c843b7a329130f4e266a281ebb3"
+
+inherit pypi setuptools
+
+SRC_URI[md5sum] = "4d6650ced683f632e117bafe5d9f093b"
+SRC_URI[sha256sum] = "9470656a08002e309632b59772b206ce0564c9a77b44c25f05f49dd2cad248d5"
+
+RDEPENDS_${PN} += "python-re python-json python-jsonpointer"
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer_1.10.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer_1.10.bb
new file mode 100644
index 0000000..8ec8772
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-jsonpointer_1.10.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Resolve JSON Pointers in Python"
+HOMEPAGE = "https://github.com/stefankoegl/python-json-pointer"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=32b15c843b7a329130f4e266a281ebb3"
+
+inherit pypi setuptools
+
+SRC_URI[md5sum] = "d68c0c6ad6889e9c94ec0feba719e45e"
+SRC_URI[sha256sum] = "9fa5dcac35eefd53e25d6cd4c310d963c9f0b897641772cd6e5e7b89df7ee0b1"
+
+RDEPENDS_${PN} += "python-re python-json"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ldap/setup.cfg.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ldap/setup.cfg.patch
new file mode 100644
index 0000000..a703d34
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ldap/setup.cfg.patch
@@ -0,0 +1,14 @@
+--- python-ldap-2.3.9/setup.cfg.orig    2009-08-13 11:07:23.000000000 +0200
++++ python-ldap-2.3.9/setup.cfg 2009-08-13 11:07:37.000000000 +0200
+@@ -1,9 +1,9 @@
+ [_ldap]
+ extra_objects = 
+ extra_compile_args = 
+-libs = ldap_r lber sasl2 ssl crypto
++libs = ldap_r lber ssl crypto
+ library_dirs = /opt/openldap-RE24/lib
+-include_dirs = /opt/openldap-RE24/include /usr/include/sasl
++include_dirs = /opt/openldap-RE24/include
+
+ [egg_info]
+ tag_build =  
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ldap_2.3.9.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ldap_2.3.9.bb
new file mode 100644
index 0000000..64e65eb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ldap_2.3.9.bb
@@ -0,0 +1,12 @@
+SUMMARY = "LDAP client API for Python, C wrapper module around OpenLDAP 2.x with an object-oriented API" 
+LICENSE = "Python-style" 
+LIC_FILES_CHKSUM = "file://LICENCE;md5=a41c82edffa04912007cae1d20cac555"
+HOMEPAGE = "http://www.python-ldap.org/" 
+DEPENDS = "python openldap" 
+
+SRC_URI = "file://setup.cfg.patch"
+SRC_URI[md5sum] = "a9f9f16338288d118a1ae6266c993247"
+SRC_URI[sha256sum] = "62f75b21c5ee744408c9d8b59878328b3bdf47899d30e8abf0c09b3ffb893ed4"
+
+PYPI_PACKAGE = "python-ldap"
+inherit pypi setuptools  
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ldap_2.4.10.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ldap_2.4.10.bb
new file mode 100644
index 0000000..0a6ae7e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ldap_2.4.10.bb
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2012 Wind River Systems, Inc.
+#
+SUMMARY = "Provides a wrapper in Python to LDAP"
+DESCRIPTION = "This module provides access to the LDAP \
+(Lightweight Directory Access Protocol) through Python operations \
+instead of C API. The module mainly acts as a wrapper for the \
+OpenLDAP 2.x libraries. Errors will appear as exceptions."
+
+LICENSE = "PSF"
+HOMEPAGE = "http://www.python-ldap.org/"
+DEPENDS = "python openldap cyrus-sasl"
+
+PYPI_PACKAGE = "python-ldap"
+inherit pypi setuptools  
+
+LIC_FILES_CHKSUM = "file://LICENCE;md5=a41c82edffa04912007cae1d20cac555"
+SRC_URI[md5sum] = "a15827ca13c90e9101e5e9405c1d83be"
+SRC_URI[sha256sum] = "67cc7801bf24c29386ab99966ceb68d6a60fa9e0566cc95a4fbb2c4695a8ce54"
+
+do_configure_prepend() {
+    sed -i -e 's:^library_dirs =.*::' setup.cfg
+    sed -i -e 's:^include_dirs =.*:include_dirs = =/usr/include/sasl/:' setup.cfg
+}
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc
new file mode 100644
index 0000000..0473417
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-lxml.inc
@@ -0,0 +1,43 @@
+SUMMARY = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
+DESCRIPTION = "lxml is a Pythonic, mature binding for the libxml2 and \
+libxslt libraries. It provides safe and convenient access to these \
+libraries using the ElementTree API. It extends the ElementTree API \
+significantly to offer support for XPath, RelaxNG, XML Schema, XSLT, \
+C14N and much more."
+HOMEPAGE = "http://codespeak.net/lxml"
+SECTION = "devel/python"
+LICENSE = "BSD & GPLv2 & MIT & PSF"
+LIC_FILES_CHKSUM = "file://LICENSES.txt;md5=f9f1dc24f720c143c2240df41fe5073b \
+                    file://doc/licenses/elementtree.txt;md5=eb34d036a6e3d56314ee49a6852ac891 \
+                    file://doc/licenses/BSD.txt;md5=700a1fc17f4797d4f2d34970c8ee694b \
+                    file://doc/licenses/GPL.txt;md5=94d55d512a9ba36caa9b7df079bae19f \
+                    file://src/lxml/isoschematron/resources/rng/iso-schematron.rng;startline=2;endline=7;md5=a2914d12acc7066b3f5b60e8f94a012e \
+                    file://src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl;startline=2;endline=24;md5=96976dcc66249c51e8026b159ca5e755 \
+                    file://src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl;startline=2;endline=7;md5=5cac4ad4b5e131a10e9af755b10fbbb7 \
+                    "
+
+DEPENDS += "libxml2 libxslt"
+
+SRC_URI[md5sum] = "5957cc384bd6e83934be35c057ec03b6"
+SRC_URI[sha256sum] = "9c74ca28a7f0c30dca8872281b3c47705e21217c8bc63912d95c9e2a7cac6bdf"
+
+DISTUTILS_BUILD_ARGS += " \
+                     --with-xslt-config='pkg-config libxslt' \
+                     --with-xml2-config='pkg-config libxml-2.0' \
+"
+
+DISTUTILS_INSTALL_ARGS += " \
+                     --with-xslt-config='pkg-config libxslt' \
+                     --with-xml2-config='pkg-config libxml-2.0' \
+"
+
+inherit pypi
+
+do_configure_prepend() {
+    sed -i -e 's/--version/--modversion/' ${B}/setupinfo.py
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN} += "libxml2 libxslt ${PYTHON_PN}-compression"
+RDEPENDS_${PN}_class-native = "libxml2-native libxslt-native"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-lxml_3.6.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-lxml_3.6.0.bb
new file mode 100644
index 0000000..81ccb12
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-lxml_3.6.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-lxml.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-M2Crypto-Error-fix.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-M2Crypto-Error-fix.patch
new file mode 100644
index 0000000..2a74b68
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-M2Crypto-Error-fix.patch
@@ -0,0 +1,162 @@
+From 02a24ac541df68033d4efd7e2f8a1b92dc49328d Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Mon, 27 Jul 2015 05:06:20 +0900
+Subject: [PATCH] M2Crypto: Error fix.
+
+After swig upgrade from 3.0.2 to 3.0.6,build the recipes which
+depends on python-m2crypto will occur errors like this:
+SALT_LEN = m2.PKCS5_SALT_LEN
+AttributeError: 'module' object has no attribute 'PKCS5_SALT_LEN'
+since python-m2crypto depends on swig-native
+
+Ref:
+https://github.com/martinpaljak/M2Crypto/issues/60#issuecomment-75735489
+
+This patch is from:
+http://pkgs.fedoraproject.org/cgit/m2crypto.git/tree/m2crypto-0.21.1-swig-3.0.5.patch
+
+Upstream-Status: pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ M2Crypto/__init__.py |  4 ++--
+ M2Crypto/m2.py       |  2 +-
+ SWIG/_lib.i          |  4 ++++
+ SWIG/_pkcs7.i        |  1 +
+ setup.py             | 26 +++++++++++++++++++++++++-
+ 5 files changed, 33 insertions(+), 4 deletions(-)
+
+diff --git a/M2Crypto/__init__.py b/M2Crypto/__init__.py
+index e7acfe7..02f4d28 100644
+--- a/M2Crypto/__init__.py
++++ b/M2Crypto/__init__.py
+@@ -19,7 +19,7 @@ Copyright 2008-2011 Heikki Toivonen. All rights reserved.
+ version_info = (0, 21, 1)
+ version = '.'.join([str(_v) for _v in version_info])
+ 
+-import __m2crypto
++import _m2crypto
+ import m2
+ import ASN1
+ import AuthCookie
+@@ -57,4 +57,4 @@ import util
+ encrypt=1
+ decrypt=0
+ 
+-__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 42dc180..47a53b8 100644
+--- a/SWIG/_lib.i
++++ b/SWIG/_lib.i
+@@ -100,6 +100,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);
+ 
+@@ -185,6 +186,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();
+ 
+@@ -204,6 +206,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();
+ 
+@@ -227,6 +230,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 174f40a..7bffbfc 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 e7c49eb..b98abe0 100644
+--- a/setup.py
++++ b/setup.py
+@@ -20,6 +20,7 @@ except ImportError:
+     from distutils.command import build_ext
+ 
+ from distutils.core import Extension
++from distutils.file_util import copy_file
+ 
+ 
+ class _M2CryptoBuildExt(build_ext.build_ext):
+@@ -57,7 +58,17 @@ class _M2CryptoBuildExt(build_ext.build_ext):
+         self.swig_opts.append('-includeall')
+         #self.swig_opts.append('-D__i386__') # Uncomment for early OpenSSL 0.9.7 versions, or on Fedora Core if build fails
+         #self.swig_opts.append('-DOPENSSL_NO_EC') # Try uncommenting if you can't build with EC disabled
+-        
++        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'))
++
+         self.include_dirs += [os.path.join(self.openssl, opensslIncludeDir),
+                               os.path.join(os.getcwd(), 'SWIG')]        
+             
+@@ -71,6 +82,19 @@ 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.version_info < (2,4):
+ 
+-- 
+1.8.4.2
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch
new file mode 100644
index 0000000..819c8e5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto/0001-setup.py-link-in-sysroot-not-in-host-directories.patch
@@ -0,0 +1,36 @@
+From f11b9c71080513f9b867ba8f40613ba2ebc6e960 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 29 Mar 2013 15:17:17 +0100
+Subject: [PATCH] setup.py: link in sysroot, not in host directories
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+Upstream-status: Unknown
+---
+ setup.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+Index: M2Crypto-0.23.0/setup.py
+===================================================================
+--- M2Crypto-0.23.0.orig/setup.py
++++ M2Crypto-0.23.0/setup.py
+@@ -62,7 +62,7 @@ class _M2CryptoBuildExt(build_ext.build_
+             self.openssl = 'c:\\pkg'
+         else:
+             self.libraries = ['ssl', 'crypto']
+-            self.openssl = '/usr'
++            self.openssl = os.environ.get( "STAGING_DIR" )
+ 
+     def finalize_options(self):
+         '''Overloaded build_ext implementation to append custom openssl
+@@ -75,8 +75,8 @@ class _M2CryptoBuildExt(build_ext.build_
+         if _openssl and os.path.isdir(_openssl):
+             self.openssl = _openssl
+ 
+-        self.include_dirs.append(os.path.join(self.openssl, 'include'))
+-        openssl_library_dir = os.path.join(self.openssl, 'lib')
++        self.include_dirs.append(os.environ.get( "STAGING_INCDIR" ))
++        openssl_library_dir = os.environ.get( "STAGING_LIBDIR" )
+ 
+         if platform.system() == "Linux":
+             if _multiarch:  # on Fedora/RHEL it is an empty string
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto_0.23.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto_0.23.0.bb
new file mode 100644
index 0000000..f6f0e1f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-m2crypto_0.23.0.bb
@@ -0,0 +1,52 @@
+SUMMARY = "A Python crypto and SSL toolkit"
+HOMEPAGE = "http://chandlerproject.org/bin/view/Projects/MeTooCrypto"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=68f7880de949412b2ea248932d97ed54"
+
+SRCNAME = "M2Crypto"
+SRC_URI = "http://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "89557730e245294a6cab06de8ad4fb42"
+SRC_URI[sha256sum] = "1ac3b6eafa5ff7e2a0796675316d7569b28aada45a7ab74042ad089d15a9567f"
+
+SRC_URI += "file://0001-setup.py-link-in-sysroot-not-in-host-directories.patch "
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+DEPENDS += "openssl swig-native"
+
+DISTUTILS_BUILD_ARGS += "build_ext --openssl=${STAGING_DIR_HOST} -I${STAGING_INCDIR}"
+DISTUTILS_INSTALL_ARGS += "build_ext --openssl=${STAGING_DIR_HOST}"
+
+inherit setuptools
+
+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() {
+    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
+}
+
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe.inc
new file mode 100644
index 0000000..fd7d9bd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe.inc
@@ -0,0 +1,14 @@
+DESCRIPTION = "Implements a XML/HTML/XHTML Markup safe string for Python"
+HOMEPAGE = "http://github.com/mitsuhiko/markupsafe"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c6d1adcf45d69359f256c1cea3254127"
+
+PR = "r0"
+
+SRC_URI[md5sum] = "f5ab3deee4c37cd6a922fb81e730da6e"
+SRC_URI[sha256sum] = "a4ec1aff59b95a14b45eb2e23761a0179e98319da5a7eb76b56ea8cdc7b871c3"
+
+PYPI_PACKAGE = "MarkupSafe"
+inherit pypi
+
+RDEPENDS_${PN} += "${PYTHON_PN}-re"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe_0.23.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe_0.23.bb
new file mode 100644
index 0000000..396eff1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-markupsafe_0.23.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-markupsafe.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib/fix_setup.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib/fix_setup.patch
new file mode 100644
index 0000000..9381583
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib/fix_setup.patch
@@ -0,0 +1,29 @@
+This fixes the dependency checks inside of setup.py since things like
+'import numpy' won't work with bitbake.
+
+diff --git a/setup.py b/setup.py
+index 2f13821..e6d6ed0 100644
+--- a/setup.py
++++ b/setup.py
+@@ -113,12 +113,6 @@ if 1:
+     baseline_images = [chop_package(f) for f in baseline_images]
+     package_data['matplotlib'].extend(baseline_images)
+ 
+-if not check_for_numpy():
+-    sys.exit(1)
+-
+-if not check_for_freetype():
+-    sys.exit(1)
+-
+ build_ft2font(ext_modules, packages)
+ build_ttconv(ext_modules, packages)
+ build_contour(ext_modules, packages)
+@@ -129,7 +123,7 @@ build_tri(ext_modules, packages)
+ 
+ print_raw("")
+ print_raw("OPTIONAL BACKEND DEPENDENCIES")
+-has_libpng = check_for_libpng()
++has_libpng = True
+ 
+ if has_libpng and options['build_agg']:
+     build_agg(ext_modules, packages)
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch
new file mode 100644
index 0000000..9a13a18
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib/fix_setupext.patch
@@ -0,0 +1,40 @@
+This fixes the numpy import problem in setupext.py using a hard-coded path.
+
+Index: matplotlib-1.1.0/setupext.py
+===================================================================
+--- matplotlib-1.1.0.orig/setupext.py
++++ matplotlib-1.1.0/setupext.py
+@@ -122,8 +122,8 @@ numpy_inc_dirs = []
+ # matplotlib build options, which can be altered using setup.cfg
+ options = {'display_status': True,
+            'verbose': False,
+-           'provide_pytz': 'auto',
+-           'provide_dateutil': 'auto',
++           'provide_pytz': False,
++           'provide_dateutil': False,
+            'build_agg': True,
+            'build_gtk': 'auto',
+            'build_gtkagg': 'auto',
+@@ -176,10 +176,7 @@ if os.path.exists(setup_cfg):
+     except: pass
+ 
+ # For get_base_flags:
+-if options['basedirlist']:
+-    basedirlist = options['basedirlist'].split()
+-else:
+-    basedirlist = basedir[sys.platform]
++basedirlist = [os.environ['STAGING_LIBDIR']]
+ print("basedirlist is: %s" % basedirlist)
+ 
+ if options['display_status']:
+@@ -555,8 +552,8 @@ def check_for_numpy():
+ 
+ def add_numpy_flags(module):
+     "Add the modules flags to build extensions which use numpy"
+-    import numpy
+-    module.include_dirs.append(numpy.get_include())
++    # Hard-coded path for OE since I know this is where numpy's include dir will be
++    module.include_dirs.append(os.path.join(os.environ['STAGING_LIBDIR'], 'python2.7/site-packages/numpy/core/include/'))
+ 
+ def add_png_flags(module):
+     try_pkgconfig(module, 'libpng', 'png')
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib_1.1.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib_1.1.0.bb
new file mode 100644
index 0000000..69f71c7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-matplotlib_1.1.0.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "matplotlib is a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats"
+SECTION = "devel/python"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://README.txt;md5=83c5bf8b16a5f99507f2f47a21ae3b81"
+PR = "r1"
+
+DEPENDS += "python-numpy freetype libpng python-dateutil python-pytz"
+RDEPENDS_${PN} = "python-core python-distutils python-numpy freetype libpng python-dateutil python-pytz"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/matplotlib/matplotlib-${PV}.tar.gz \
+           file://fix_setup.patch \
+           file://fix_setupext.patch \
+"
+
+S = "${WORKDIR}/matplotlib-${PV}"
+
+EXTRA_OECONF = "--disable-docs --with-python-includes=${STAGING_INCDIR}/../"
+
+inherit distutils
+
+do_compile_prepend() {
+    BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+    ${STAGING_BINDIR_NATIVE}/python setup.py build ${DISTUTILS_BUILD_ARGS} || \
+    true
+}
+
+# need to export these variables for python-config to work
+export PYTHONPATH
+export BUILD_SYS
+export HOST_SYS
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+
+SRC_URI[md5sum] = "57a627f30b3b27821f808659889514c2"
+SRC_URI[sha256sum] = "be37e1d86c65ecacae6683f8805e051e9904e5f2e02bf2b7a34262c46a6d06a7"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe_0.4.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe_0.4.0.bb
new file mode 100644
index 0000000..0958f75
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-mccabe_0.4.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "McCabe checker, plugin for flake8"
+HOMEPAGE = "https://github.com/dreamhost/cliff"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=f8b50fba1711ecac6bcdb6324f85a66d"
+
+SRC_URI[md5sum] = "8c425db05f310adcd4bb174b991f26f5"
+SRC_URI[sha256sum] = "9a2b12ebd876e77c72e41ebf401cc2e7c5b566649d50105ca49822688642207b"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += " \
+    python-prettytable \
+    python-cmd2 \
+    python-pyparsing"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-mock_1.3.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-mock_1.3.0.bb
new file mode 100644
index 0000000..8a7894c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-mock_1.3.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "A Python Mocking and Patching Library for Testing"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=de9dfbf780446b18aab11f00baaf5b7e"
+
+SRC_URI[md5sum] = "73ee8a4afb3ff4da1b4afa287f39fdeb"
+SRC_URI[sha256sum] = "1e247dbecc6ce057299eb7ee019ad68314bb93152e81d9a6110d35f4d5eca0f6"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += " \
+    python-prettytable \
+    python-cmd2 \
+    python-pyparsing \
+    python-mccabe \
+    python-pep8 \
+    python-pyflakes"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-monotonic_1.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-monotonic_1.0.bb
new file mode 100644
index 0000000..5d237b5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-monotonic_1.0.bb
@@ -0,0 +1,10 @@
+SUMMARY = "An implementation of time.monotonic() for Python 2.0 through 3.2"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
+
+SRC_URI[md5sum] = "a692bff2c5e07dde22ad2128d818d15c"
+SRC_URI[sha256sum] = "47d7d045b3f2a08bffe683d761ef7f9131a2598db1cec7532a06720656cf719d"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "${PYTHON_PN}-ctypes ${PYTHON_PN}-re"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-msgpack_0.4.7.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-msgpack_0.4.7.bb
new file mode 100644
index 0000000..3b7853e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-msgpack_0.4.7.bb
@@ -0,0 +1,11 @@
+SUMMARY = "MessagePack (de)serializer"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=cd9523181d9d4fbf7ffca52eaa2a5751"
+
+PR = "r0"
+
+SRC_URI[md5sum] = "eb2aad1081534ef3a9f32a0ecd350b9b"
+SRC_URI[sha256sum] = "5e001229a54180a02dcdd59db23c9978351af55b1290c27bc549e381f43acd6b"
+
+PYPI_PACKAGE = "msgpack-python"
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr_0.7.18.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr_0.7.18.bb
new file mode 100644
index 0000000..6fdbf19
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-netaddr_0.7.18.bb
@@ -0,0 +1,8 @@
+SUMMARY = "A network address manipulation library for Python."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b277425f87f3b06d25af45d8b96f9682"
+
+SRC_URI[md5sum] = "c65bb34f8bedfbbca0b316c490cd13a0"
+SRC_URI[sha256sum] = "a1f5c9fcf75ac2579b9995c843dade33009543c04f218ff7c007b3c81695bd19"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-numeric/no-lapack.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-numeric/no-lapack.patch
new file mode 100644
index 0000000..c1916b8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-numeric/no-lapack.patch
@@ -0,0 +1,33 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- Numeric-23.7/setup.py~nolapack
++++ Numeric-23.7/setup.py
+@@ -32,7 +32,7 @@
+     mathlibs = []
+ 
+ # delete all but the first one in this list if using your own LAPACK/BLAS
+-sourcelist = [os.path.join('Src', 'lapack_litemodule.c'),
++sourcelist = [
+               #os.path.join('Src', 'blas_lite.c'), 
+               #os.path.join('Src', 'f2c_lite.c'), 
+               #os.path.join('Src', 'zlapack_lite.c'),
+@@ -40,12 +40,12 @@
+              ]
+ # set these to use your own BLAS;
+ 
+-library_dirs_list = ['/usr/lib/atlas']
+-libraries_list = ['lapack', 'cblas', 'f77blas', 'atlas', 'g2c'] 
++library_dirs_list = []
++libraries_list = [] 
+ 
+ # set to true (1), if you also want BLAS optimized matrixmultiply/dot/innerproduct
+-use_dotblas = 1 
+-include_dirs = ['/usr/include/atlas']  
++use_dotblas = 0
++include_dirs = []  
+                    # You may need to set this to find cblas.h
+                    #  e.g. on UNIX using ATLAS this should be ['/usr/include/atlas']
+ extra_link_args = []
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-numeric_24.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-numeric_24.2.bb
new file mode 100644
index 0000000..c0b04e1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-numeric_24.2.bb
@@ -0,0 +1,14 @@
+SUMMARY = "A sophisticated Numeric Processing Package for Python"
+SECTION = "devel/python"
+LICENSE = "PSF & LLNL"
+LIC_FILES_CHKSUM = "file://Legal.htm;md5=e3ce75dedd4043918d15979ae43e312e"
+
+PR = "ml3"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/numpy/Numeric-${PV}.tar.gz"
+S = "${WORKDIR}/Numeric-${PV}"
+
+inherit distutils
+
+SRC_URI[md5sum] = "2ae672656e06716a149acb048cca3093"
+SRC_URI[sha256sum] = "5f72e729eb6ff57442f2a38bfc9931738b59e5077928e2e70d22b4610ff15258"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt_1.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt_1.1.bb
new file mode 100644
index 0000000..b8f5f3f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-paho-mqtt_1.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "MQTT version 3.1/3.1.1 client library"
+LICENSE = "EPL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=eb48c6ee2cb9f5b8b9fe75e6f817bdfc"
+SRCNAME = "paho-mqtt"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "\
+               python-math \
+               python-io \
+               python-threading \
+"
+
+SRC_URI[md5sum] = "a6407b74eb5e5411e157be1de5c11366"
+SRC_URI[sha256sum] = "0f7a629efe6e3a2c61b59d3550aa9f2c4529b5689a65fde45e6f1ac36b9a261e"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pam_1.8.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pam_1.8.2.bb
new file mode 100644
index 0000000..05bddd5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pam_1.8.2.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python PAM module using ctypes, py3/py2."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=64326d42471b493c5c088305364ad5da"
+
+SRC_URI[md5sum] = "db71b6b999246fb05d78ecfbe166629d"
+SRC_URI[sha256sum] = "26efe4e79b869b10f97cd8c4a6bbb04a4e54d41186364e975b4108c9c071812c"
+
+PYPI_PACKAGE = "python-pam"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "libpam"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-parse-type_0.3.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-parse-type_0.3.4.bb
new file mode 100644
index 0000000..9dc37cf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-parse-type_0.3.4.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Simplifies building parse types based on the parse module"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=be38402eb4b6c224e4914fd82e0e1436"
+PYPI_PACKAGE = "parse_type"
+
+SRC_URI[md5sum] = "00ba70bc5ca67624207b0dfced01dc8a"
+SRC_URI[sha256sum] = "3dd0b323bafcb8c25e000ce5589042a1c99cba9c3bec77b9f591e46bc9606147"
+
+RDEPENDS_${PN} += "python-parse"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.6.6.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.6.6.bb
new file mode 100644
index 0000000..45b52a3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-parse_1.6.6.bb
@@ -0,0 +1,8 @@
+SUMMARY = "Parse strings using a specification based on the Python format() syntax"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://parse.py;md5=e067ba2a08b73721dbe7356dc0282918;startline=1108;endline=1126"
+
+SRC_URI[md5sum] = "11bc8c60a30fe52db4ac9a827653d0ca"
+SRC_URI[sha256sum] = "71435aaac494e08cec76de646de2aab8392c114e56fe3f81c565ecc7eb886178"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc
new file mode 100644
index 0000000..843e8e0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-passlib.inc
@@ -0,0 +1,14 @@
+SUMMARY = "comprehensive password hashing framework supporting over 30 schemes"
+DESCRIPTION = "\
+Passlib is a password hashing library for Python 2 & 3, which provides cross-platform \
+implementations of over 30 password hashing algorithms, as well as a framework for \
+managing existing password hashes. It’s designed to be useful for a wide range of \
+tasks, from verifying a hash found in /etc/shadow, to providing full-strength password \
+hashing for multi-user applications."
+HOMEPAGE = "https://bitbucket.org/ecollins/passlib"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=bae8faa3e2689ee0df3f2127fc4517f5"
+PR = "r0"
+
+SRC_URI[md5sum] = "d2edd6c42cde136a538b48d90a06ad67"
+SRC_URI[sha256sum] = "a83d34f53dc9b17aa42c9a35c3fbcc5120f3fcb07f7f8721ec45e6a27be347fc"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.6.5.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.6.5.bb
new file mode 100644
index 0000000..11c598a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-passlib_1.6.5.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-passlib.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-paste_2.0.3.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-paste_2.0.3.bb
new file mode 100644
index 0000000..6b4019f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-paste_2.0.3.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Tools for using a Web Server Gateway Interface stack"
+HOMEPAGE = "http://pythonpaste.org/"
+LICENSE = "MIT"
+RDEPENDS_${PN} = "python-six"
+
+LIC_FILES_CHKSUM = "file://docs/license.txt;md5=1798f29d55080c60365e6283cb49779c"
+
+SRC_URI[md5sum] = "1231e14eae62fa7ed76e9130b04bc61e"
+SRC_URI[sha256sum] = "2346a347824c32641bf020c17967b49ae74d3310ec1bc9b958d4b84e2d985218"
+
+PYPI_PACKAGE = "Paste"
+inherit pypi setuptools
+
+FILES_${PN} += "/usr/lib/*"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pep8_1.7.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pep8_1.7.0.bb
new file mode 100644
index 0000000..262b862
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pep8_1.7.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Python style guide checker"
+HOMEPAGE = "https://github.com/dreamhost/cliff"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=d8ebbbe831259ce010179d2f310b0f3e"
+
+SRC_URI[md5sum] = "2b03109b0618afe3b04b3e63b334ac9d"
+SRC_URI[sha256sum] = "a113d5f5ad7a7abacef9df5ec3f2af23a20a28005921577b15dd584d099d5900"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += " \
+    python-prettytable \
+    python-cmd2 \
+    python-pyparsing"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pip_8.1.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pip_8.1.1.bb
new file mode 100644
index 0000000..c0c263b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pip_8.1.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "PIP is a tool for installing and managing Python packages"
+LICENSE = "MIT & LGPL-2.1"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=25fba45109565f87de20bae85bc39452"
+
+SRC_URI[md5sum] = "6b86f11841e89c8241d689956ba99ed7"
+SRC_URI[sha256sum] = "3e78d3066aaeb633d185a57afdccf700aa2e660436b4af618bcb6ff0fa511798"
+
+inherit pypi setuptools
+
+# Since PIP is like CPAN for PERL we need to drag in all python modules to ensure everything works
+RDEPENDS_${PN} = "python-modules python-distribute"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pretend_1.0.8.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pretend_1.0.8.bb
new file mode 100644
index 0000000..ddc7b62
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pretend_1.0.8.bb
@@ -0,0 +1,8 @@
+SUMMARY = "A library for stubbing in Python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=411780c0b7fa756753e94affeee5bc99"
+
+SRC_URI[md5sum] = "7147050a95c9f494248557b42b58ad79"
+SRC_URI[sha256sum] = "930f2c1e18503e8f8c403abe2e02166c4a881941745147e712cdd4f49f3fb964"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb
new file mode 100644
index 0000000..c8f7b5f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-prettytable_0.7.2.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Python library for displaying tabular data in a ASCII table format"
+HOMEPAGE = "http://code.google.com/p/prettytable"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3e73500ffa52de5071cff65990055282"
+
+SRC_URI[md5sum] = "0c1361104caff8b09f220748f9d69899"
+SRC_URI[sha256sum] = "a53da3b43d7a5c229b5e3ca2892ef982c46b7923b51e98f0db49956531211c4f"
+
+SRCNAME = "prettytable"
+
+SRC_URI = "https://pypi.python.org/packages/source/P/PrettyTable/${SRCNAME}-${PV}.zip"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+do_install_append() {
+    perm_files=`find "${D}${PYTHON_SITEPACKAGES_DIR}/" -name "top_level.txt"`
+    for f in $perm_files; do
+        chmod 644 "${f}"
+    done
+}
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-psutil_4.1.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-psutil_4.1.0.bb
new file mode 100644
index 0000000..6a210ee
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-psutil_4.1.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "A cross-platform process and system utilities module for Python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0f02e99f7f3c9a7fe8ecfc5d44c2be62"
+
+SRC_URI[md5sum] = "017e1023484ebf436d3514ebeaf2e7e9"
+SRC_URI[sha256sum] = "c6abebec9c8833baaf1c51dd1b0259246d1d50b9b50e9a4aa66f33b1e98b8d17"
+
+RDEPENDS_${PN} += " \
+    python-subprocess \
+    "
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-py_1.4.31.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-py_1.4.31.bb
new file mode 100644
index 0000000..592bc04
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-py_1.4.31.bb
@@ -0,0 +1,8 @@
+SUMMARY = "Library with cross-python path, ini-parsing, io, code, log facilities"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
+
+SRC_URI[md5sum] = "5d2c63c56dc3f2115ec35c066ecd582b"
+SRC_URI[sha256sum] = "a6501963c725fc2554dabfece8ae9a8fb5e149c0ac0a42fd2b02c5c1c57fc114"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio_0.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio_0.4.bb
new file mode 100644
index 0000000..0e660ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyalsaaudio_0.4.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Support for the Linux 2.6.x ALSA Sound System"
+SECTION = "devel/python"
+DEPENDS = "alsa-lib"
+LICENSE = "PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1a3b161aa0fcec32a0c8907a2219ad9d"
+SRCNAME = "pyalsaaudio"
+PR = "ml2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pyalsaaudio/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+SRC_URI[md5sum] = "b312c28efba7db0494836a79f0a49898"
+SRC_URI[sha256sum] = "07148ce16024724b17cc24c51d0f4fb78af214b09b7dc8dcb7b06e5647f4c582"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.1.9.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.1.9.bb
new file mode 100644
index 0000000..017adfe
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1_0.1.9.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Python library implementing ASN.1 types."
+HOMEPAGE = "http://pyasn1.sourceforge.net/"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=425e62320d430219736139b134db2fc4"
+
+SRC_URI[md5sum] = "f00a02a631d4016818659d1cc38d229a"
+SRC_URI[sha256sum] = "853cacd96d1f701ddd67aa03ecc05f51890135b7262e922710112f12a2ed2a7f"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "python-lang python-shell"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pycparser_2.14.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pycparser_2.14.bb
new file mode 100644
index 0000000..18006ca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pycparser_2.14.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Parser of the C language, written in pure Python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8fb364772b1441821d391591f340c35a"
+
+SRC_URI[md5sum] = "a2bc8d28c923b4fe2b2c3b4b51a4f935"
+SRC_URI[sha256sum] = "7959b4a74abdc27b312fed1c21e6caf9309ce0b29ea86b591fd2e99ecdf27f73"
+
+inherit pypi setuptools
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyflakes_1.1.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyflakes_1.1.0.bb
new file mode 100644
index 0000000..ae7d471
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyflakes_1.1.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "passive checker of Python programs"
+HOMEPAGE = "https://github.com/dreamhost/cliff"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README.rst;md5=fe719d45f4c604c6e2c86872b6e9485f"
+
+SRC_URI[md5sum] = "e0bf854cd5abd4527e149692925b82eb"
+SRC_URI[sha256sum] = "e5f959931987e2be178781554b485d52342ec9f1b43f891d2dad07a691c7a89a"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += " \
+    python-prettytable \
+    python-cmd2 \
+    python-pyparsing"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/run-ptest b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/run-ptest
new file mode 100644
index 0000000..ac867e2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+GPG_AGENT_INFO= python test_all.py -v
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme_0.3.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme_0.3.bb
new file mode 100644
index 0000000..03c4790
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pygpgme_0.3.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A Python module for working with OpenPGP messages"
+DESCRIPTION = "PyGPGME is a Python module that lets you sign, verify, \
+               encrypt and decrypt messages using the OpenPGP format."
+HOMEPAGE = "https://launchpad.net/pygpgme"
+
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=6517bdc8f2416f27ab725d4702f7aac3"
+
+SRC_URI = "file://run-ptest"
+
+SRC_URI[md5sum] = "d38355af73f0352cde3d410b25f34fd0"
+SRC_URI[sha256sum] = "5fd887c407015296a8fd3f4b867fe0fcca3179de97ccde90449853a3dfb802e1"
+
+DEPENDS += "gpgme"
+RDEPENDS_${PN} += "gnupg"
+
+inherit pypi setuptools ptest
+
+do_install_ptest(){
+    install ${S}/test_all.py ${D}${PTEST_PATH}
+    cp -r ${S}/tests ${D}${PTEST_PATH}
+}
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyhamcrest_1.9.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyhamcrest_1.9.0.bb
new file mode 100644
index 0000000..02d4f54
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyhamcrest_1.9.0.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Hamcrest framework for matcher objects"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f6df1318c6071dd1707f5e3b6c11f24f"
+
+PYPI_PACKAGE = "PyHamcrest"
+
+SRC_URI[md5sum] = "8b833a3fa30197455df79424f30c8c3f"
+SRC_URI[sha256sum] = "8ffaa0a53da57e89de14ced7185ac746227a8894dbd5a3c718bf05ddbd1d56cd"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify.inc
new file mode 100644
index 0000000..a9edb2c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify.inc
@@ -0,0 +1,11 @@
+DESCRIPTION = "Python pyinotify: Linux filesystem events monitoring"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ab173cade7965b411528464589a08382"
+
+RDEPENDS_${PN} += "python-threading python-io python-subprocess python-misc python-shell"
+
+SRC_URI[md5sum] = "8e580fa1ff3971f94a6f81672b76c406"
+SRC_URI[sha256sum] = "9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4"
+
+PYPI_PACKAGE = "pyinotify"
+inherit pypi
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify_0.9.6.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify_0.9.6.bb
new file mode 100644
index 0000000..d1f84c3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyinotify_0.9.6.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-pyinotify.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc
new file mode 100644
index 0000000..9cd0844
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "Python API for MISP"
+HOMEPAGE = "https://github.com/MISP/PyMISP"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=c0a3e801b740ef31d1f5ddfe76bca538"
+PR = "r0"
+
+SRC_URI[md5sum] = "398408388902c108e3b378152b6c1d24"
+SRC_URI[sha256sum] = "d70e74c528f040f5ff8137337f1758aeb63a5966b58b297f2171f53cb9df033e"
+
+RDEPENDS_${PN} += " ${PYTHON_PN}-requests"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.3.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.3.bb
new file mode 100644
index 0000000..1b1fbe9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymisp_2.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-pymisp.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc
new file mode 100644
index 0000000..e0f52dd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Python driver for MongoDB <http://www.mongodb.org>"
+DESCRIPTION = "\
+The PyMongo distribution contains tools for interacting with MongoDB \
+database from Python. The bson package is an implementation of the BSON \
+format for Python. The pymongo package is a native Python driver for \
+MongoDB. The gridfs package is a gridfs implementation on top of pymongo."
+HOMEPAGE = "http://github.com/mongodb/mongo-python-driver"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2a944942e1496af1886903d274dedb13"
+
+SRC_URI[md5sum] = "70408f8115d7aa52fb6eef0e552834a6"
+SRC_URI[sha256sum] = "f2018165823b341d83d398165d1c625e5db5cc779e7c44c107034407808463b6"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.2.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.2.2.bb
new file mode 100644
index 0000000..b1778b2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pymongo_3.2.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-pymongo.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_0.15.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_0.15.1.bb
new file mode 100644
index 0000000..5027c6d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyopenssl_0.15.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Simple Python wrapper around the OpenSSL library"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS = "openssl python-cryptography"
+PE = "1"
+
+SRC_URI[md5sum] = "f447644afcbd5f0a1f47350fec63a4c6"
+SRC_URI[sha256sum] = "f0a26070d6db0881de8bcc7846934b7c3c930d8f9c79d45883ee48984bc0d672"
+
+PYPI_PACKAGE = "pyOpenSSL"
+inherit pypi setuptools
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
+
+RDEPENDS_${PN} = "python-threading python-six python-cryptography"
+RDEPENDS_${PN}-tests = "${PN}"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.1.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.1.1.bb
new file mode 100644
index 0000000..94a99e5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyparsing_2.1.1.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Python parsing module"
+HOMEPAGE = "http://pyparsing.wikispaces.com/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fb46329938e6bc829b256e37d5c1e31a"
+
+SRC_URI[md5sum] = "2a1d3a63ddc2ec9a3da961d1b7f258b2"
+SRC_URI[sha256sum] = "4bd04badfda39b1e2fd0d77cb78b488c881d88c31734791a0ae902979ae10575"
+
+PYPI_PACKAGE_EXT = "zip"
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2/import-simplejson-as-json.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2/import-simplejson-as-json.patch
new file mode 100644
index 0000000..d73da07
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2/import-simplejson-as-json.patch
@@ -0,0 +1,26 @@
+Upstream-Status: Inappropriate [wrong dependency]
+
+Subject: [PATCH] import simplejson as json
+
+At runtime python-pyroute2 tries to import json, but the module is not 
+available, import simplejson as json solve the issue.
+
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+ pyroute2/netlink/rtnl/ifinfmsg.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pyroute2/netlink/rtnl/ifinfmsg.py b/pyroute2/netlink/rtnl/ifinfmsg.py
+index 4f14f25..55643eb 100644
+--- a/pyroute2/netlink/rtnl/ifinfmsg.py
++++ b/pyroute2/netlink/rtnl/ifinfmsg.py
+@@ -1,5 +1,5 @@
+ import os
+-import json
++import simplejson as json
+ import errno
+ import select
+ import struct
+-- 
+2.1.4
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2_0.3.14.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2_0.3.14.bb
new file mode 100644
index 0000000..43c6cec
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyroute2_0.3.14.bb
@@ -0,0 +1,24 @@
+SUMMARY = "A pure Python netlink and Linux network configuration library"
+LICENSE = "GPLv2 & Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.GPL.v2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://LICENSE.Apache.v2;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[md5sum] = "1e7e771702056e61cf522cccc39ea09e"
+SRC_URI[sha256sum] = "aed742a7dbe55eb7f02dbb26719f554b9e92198c4b3c7ac501ad03bbb6421962"
+
+SRC_URI += "file://import-simplejson-as-json.patch"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "\
+  python-distutils \
+  python-simplejson \
+  python-multiprocessing \
+  python-io python-pprint \
+  python-pickle \
+  python-logging \
+  python-threading \
+  python-textutils \
+  python-subprocess \
+  python-netclient \
+"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial.inc
new file mode 100644
index 0000000..08eef74
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Serial Port Support for Python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=0051a0dc811ee3fdb17a2fd0be44f3ad"
+
+# FIXME might stop packaging serialwin32 and serialjava files
+
+RDEPENDS_${PN} = "\
+    ${PYTHON_PN}-fcntl \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-stringold \
+"
+
+SRC_URI[md5sum] = "c8521e49f8852196aac39431e0901703"
+SRC_URI[sha256sum] = "969cb6405d1d87f8960cf9c10f597ae58f85da2fb9769dba96f4aeeaade54656"
+
+inherit pypi
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial_3.0.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial_3.0.1.bb
new file mode 100644
index 0000000..ad2b350
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyserial_3.0.1.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-pyserial.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pytest_2.9.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pytest_2.9.1.bb
new file mode 100644
index 0000000..ca53dc4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pytest_2.9.1.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Simple powerful teting with Python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d8a5609608d9a5a180705b0fa298ae01"
+
+SRC_URI[md5sum] = "05165740ea50928e4e971378630163ec"
+SRC_URI[sha256sum] = "0d48d27a127644fbe7c8158157e08b35f8255045d4476df694b91eb3a8147e65"
+
+RDEPENDS_${PN} = "python-py"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pytz_2016.3.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pytz_2016.3.bb
new file mode 100644
index 0000000..da4e2d6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pytz_2016.3.bb
@@ -0,0 +1,14 @@
+SUMMARY = "World timezone definitions, modern and historical"
+HOMEPAGE = " http://pythonhosted.org/pytz"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=22b38951eb857cf285a4560a914b7cd6"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "\
+    python-core \
+    python-datetime \
+"
+
+SRC_URI[md5sum] = "abae92c3301b27bd8a9f56b14f52cb29"
+SRC_URI[sha256sum] = "3449da19051655d4c0bb5c37191331748bcad15804d81676a88451ef299370a8"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyudev_0.19.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyudev_0.19.0.bb
new file mode 100644
index 0000000..aa26dc7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyudev_0.19.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A libudev binding"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+SRC_URI[md5sum] = "1151e9d05baf6ce7b43e7574dc0ef154"
+SRC_URI[sha256sum] = "5abcbd03e4965110d1fedcbdd5532974cb4638ceef34337aa2d5758eceb54ad3"
+
+inherit pypi setuptools
+
+do_configure_prepend() {
+    sed -i "/import pyudev/d" ${S}/setup.py
+    sed -i "s/str(pyudev.__version__)/'${PV}'/g" ${S}/setup.py
+}
+
+RDEPENDS_${PN} = "\
+    python-ctypes \
+    python-subprocess \
+    python-misc \
+    python-contextlib \
+"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyusb_1.0.0b2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyusb_1.0.0b2.bb
new file mode 100644
index 0000000..d279abc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyusb_1.0.0b2.bb
@@ -0,0 +1,10 @@
+SUMMARY = "PyUSB provides USB access on the Python language"
+HOMEPAGE = "http://pyusb.sourceforge.net/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=50d46bda6248a0b4a46a6d59a66ee08e"
+DEPENDS = "libusb1"
+
+SRC_URI[md5sum] = "bc12e83ff3ef1045d4306d13a9955fc1"
+SRC_URI[sha256sum] = "14ec66077bdcd6f1aa9e892a0a35a54bb3c1ec56aa740ead64349c18f0186d19"
+
+inherit pypi distutils
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml/setup.py b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml/setup.py
new file mode 100644
index 0000000..2ed1c94
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml/setup.py
@@ -0,0 +1,64 @@
+NAME = 'PyYAML'
+VERSION = '3.10'
+DESCRIPTION = "YAML parser and emitter for Python"
+LONG_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."""
+AUTHOR = "Kirill Simonov"
+AUTHOR_EMAIL = 'xi@resolvent.net'
+LICENSE = "MIT"
+PLATFORMS = "Any"
+URL = "http://pyyaml.org/wiki/PyYAML"
+DOWNLOAD_URL = "http://pyyaml.org/download/pyyaml/%s-%s.tar.gz" % (NAME, VERSION)
+CLASSIFIERS = [
+    "Development Status :: 5 - Production/Stable",
+    "Intended Audience :: Developers",
+    "License :: OSI Approved :: MIT License",
+    "Operating System :: OS Independent",
+    "Programming Language :: Python",
+    "Topic :: Software Development :: Libraries :: Python Modules",
+    "Topic :: Text Processing :: Markup",
+]
+
+from distutils.core import setup
+from distutils.extension import Extension
+from Cython.Distutils import build_ext
+
+import sys, os.path
+
+
+if __name__ == '__main__':
+
+    setup(
+        name=NAME,
+        version=VERSION,
+        description=DESCRIPTION,
+        long_description=LONG_DESCRIPTION,
+        author=AUTHOR,
+        author_email=AUTHOR_EMAIL,
+        license=LICENSE,
+        platforms=PLATFORMS,
+        url=URL,
+        download_url=DOWNLOAD_URL,
+        classifiers=CLASSIFIERS,
+
+        package_dir={'': 'lib'},
+        packages=['yaml'],
+
+        ext_modules = [
+        Extension( "_yaml", ["ext/_yaml.pyx"], libraries = ["yaml"] )
+        ],
+
+        cmdclass={
+            'build_ext': build_ext,
+        },
+    )
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.11.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.11.bb
new file mode 100644
index 0000000..a017e0e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.11.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Python support for YAML"
+HOMEPAGE = "http://www.pyyaml.org"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6015f088759b10e0bc2bf64898d4ae17"
+DEPENDS = "libyaml python-cython-native"
+
+SRC_URI = "http://pyyaml.org/download/pyyaml/PyYAML-${PV}.tar.gz \
+           file://setup.py \
+"
+
+SRC_URI[md5sum] = "f50e08ef0fe55178479d3a618efe21db"
+SRC_URI[sha256sum] = "c36c938a872e5ff494938b33b14aaa156cb439ec67548fcab3535bb78b0846e8"
+
+S = "${WORKDIR}/PyYAML-${PV}"
+
+inherit distutils
+
+do_configure_prepend() {
+    # upstream setup.py overcomplicated, use ours
+    install -m 0644 ${WORKDIR}/setup.py ${S}
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch
new file mode 100644
index 0000000..2dc3b73
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch
@@ -0,0 +1,26 @@
+diff --git a/setup.py b/setup.py
+index 62df445..1fdbdeb 100755
+--- a/setup.py
++++ b/setup.py
+@@ -213,12 +213,6 @@ def settings_from_prefix(prefix=None, bundle_libzmq_dylib=False):
+                 pass
+                 # unused rpath args for OS X:
+                 # settings['extra_link_args'] = ['-Wl,-rpath','-Wl,$ORIGIN/..']
+-            else:
+-                settings['runtime_library_dirs'] += ['$ORIGIN/..']
+-        elif sys.platform != 'darwin':
+-            settings['runtime_library_dirs'] += [
+-                os.path.abspath(x) for x in settings['library_dirs']
+-            ]
+     
+     return settings
+ 
+@@ -592,8 +586,6 @@ class Configure(build_ext):
+                 pass
+                 # unused rpath args for OS X:
+                 # settings['extra_link_args'] = ['-Wl,-rpath','-Wl,$ORIGIN/../zmq']
+-            else:
+-                settings['runtime_library_dirs'] = [ os.path.abspath(pjoin('.', 'zmq')) ]
+         
+         line()
+         info("Configure: Autodetecting ZMQ settings...")
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq_14.7.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq_14.7.0.bb
new file mode 100644
index 0000000..b5baf82
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq_14.7.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Pyzmq provides Zero message queue access for the Python language"
+HOMEPAGE = "http://zeromq.org/bindings:python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING.BSD;md5=11c65680f637c3df7f58bbc8d133e96e"
+DEPENDS = "zeromq"
+
+SRC_URI = "file://club-rpath-out.patch"
+SRC_URI[md5sum] = "87e3abb33af5794db5ae85c667bbf324"
+SRC_URI[sha256sum] = "77994f80360488e7153e64e5959dc5471531d1648e3a4bff14a714d074a38cc2"
+
+inherit pypi setuptools pkgconfig
+
+RDEPENDS_${PN} += "python-multiprocessing"
+
+FILES_${PN}-dbg =+ "${PYTHON_SITEPACKAGES_DIR}/zmq/backend/cython/.debug"
+
+do_compile_prepend() {
+    echo [global] > ${S}/setup.cfg
+    echo zmq_prefix = ${STAGING_DIR_HOST} >> ${S}/setup.cfg
+    echo have_sys_un_h = True >> ${S}/setup.cfg
+    echo skip_check_zmq = True >> ${S}/setup.cfg
+    echo libzmq_extension = False >> ${S}/setup.cfg
+    echo no_libzmq_extension = True >> ${S}/setup.cfg
+}
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-redis.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-redis.inc
new file mode 100644
index 0000000..e64f041
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-redis.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Python client for Redis key-value store"
+DESCRIPTION = "The Python interface to the Redis key-value store."
+HOMEPAGE = "http://github.com/andymccurdy/redis-py"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=51d9ad56299ab60ba7be65a621004f27"
+PR = "r0"
+
+SRC_URI[md5sum] = "3b26c2b9703b4b56b30a1ad508e31083"
+SRC_URI[sha256sum] = "5dfbae6acfc54edf0a7a415b99e0b21c0a3c27a7f787b292eea727b1facc5533"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-redis_2.10.5.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-redis_2.10.5.bb
new file mode 100644
index 0000000..6c3ca85
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-redis_2.10.5.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-redis.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc
new file mode 100644
index 0000000..ebce253
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc
@@ -0,0 +1,9 @@
+DESCRIPTION = "Python HTTP for Humans."
+HOMEPAGE = "http://python-requests.org"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=58c7e163c9f8ee037246da101c6afd1e"
+
+SRC_URI[md5sum] = "0b7f480d19012ec52bab78292efd976d"
+SRC_URI[sha256sum] = "c577815dd00f1394203fc44eb979724b098f88264a9ef898ee45b8e5e9cf587f"
+
+RDEPENDS_${PN} = "${PYTHON_PN}-email ${PYTHON_PN}-json ${PYTHON_PN}-netserver"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.9.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.9.1.bb
new file mode 100644
index 0000000..627bc95
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.9.1.bb
@@ -0,0 +1,4 @@
+inherit pypi setuptools
+require python-requests.inc
+
+RDEPENDS_${PN} += "${PYTHON_PN}-zlib"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-six.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-six.inc
new file mode 100644
index 0000000..408c60e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-six.inc
@@ -0,0 +1,16 @@
+SUMMARY = "Python 2 and 3 compatibility library"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6f00d4a50713fa859858dd9abaa35b21"
+
+SRC_URI[md5sum] = "34eed507548117b2ab523ab14b2f8b55"
+SRC_URI[sha256sum] = "105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a"
+
+do_compile_append() {
+    export BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS}
+    ${PYTHON} setup.py -q bdist_egg --dist-dir ./
+}
+do_install_append() {
+    install -m 0644 ${S}/*.egg ${D}/${PYTHON_SITEPACKAGES_DIR}/
+}
+
+RDEPENDS_${PN} += "python-io"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-six_1.10.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-six_1.10.0.bb
new file mode 100644
index 0000000..9075745
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-six_1.10.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-six.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus_0.6.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus_0.6.0.bb
new file mode 100644
index 0000000..2714f43
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-slip-dbus_0.6.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Convenience functions for dbus services in Python 2.x"
+HOMEPAGE = "http://nphilipp.fedorapeople.org/python-slip/"
+DESCRIPTION = "\
+The Simple Library for Python 2.x packages contain miscellaneous code for \
+convenience, extension and workaround purposes. \
+\
+This package provides slip.dbus.service.Object, which is a dbus.service.Object \
+derivative that ends itself after a certain time without being used and/or if \
+there are no clients anymore on the message bus, as well as convenience \
+functions and decorators for integrating a dbus service with PolicyKit."
+
+SECTION = "devel/python"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
+SRCNAME = "python-slip"
+
+SRC_URI = "https://fedorahosted.org/released/${SRCNAME}/${SRCNAME}-${PV}.tar.bz2"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+SRC_URI[md5sum] = "fb3299d75af1a67ca6679d96ce839da6"
+SRC_URI[sha256sum] = "f47361ec52b608309b83c71905e692b6b363eaf3b8a7afdeff866cd94463ad5c"
+
+do_compile_prepend() {
+    sed -e 's/@VERSION@/${PV}/g' setup.py.in > setup.py
+}
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-smbus_3.1.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-smbus_3.1.1.bb
new file mode 100644
index 0000000..df47df6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-smbus_3.1.1.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Set of i2c tools for linux - Python module"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://smbusmodule.c;startline=1;endline=17;md5=fa24df321a520ff8e10f203425ab9fa8"
+
+SRC_URI = "http://dl.lm-sensors.org/i2c-tools/releases/i2c-tools-${PV}.tar.bz2 \
+"
+SRC_URI[md5sum] = "0fdbff53ebd0b8d9249256d6c56480b1"
+SRC_URI[sha256sum] = "14d4d7d60d1c12e43f2befe239c682a5c44c27682f153d4b58c1e392d2db1700"
+
+DEPENDS = "i2c-tools"
+
+inherit distutils
+
+S = "${WORKDIR}/i2c-tools-${PV}/py-smbus/"
+
+do_configure_prepend() {
+    # Adjust for OE header rename
+    sed -i s:linux/i2c-dev.h:linux/i2c-dev-user.h: Module.mk
+    sed -i s:linux/i2c-dev.h:linux/i2c-dev-user.h: smbusmodule.c
+}
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-snakefood_1.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-snakefood_1.4.bb
new file mode 100644
index 0000000..e4a6d76
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-snakefood_1.4.bb
@@ -0,0 +1,51 @@
+SUMMARY = "Dependency graphing for Python"
+DESCRIPTION = " Generate dependency graphs from Python code. This \
+dependency tracker package has a few distinguishing characteristics \
+\
+    * It uses the AST to parse the Python files. This is very reliable, \
+      it always runs.\
+    * No module is loaded. Loading modules to figure out dependencies is \
+      almost always problem, because a lot of codebases run initialization \
+      code in the global namespace, which often requires additional setup. \
+      Snakefood is guaranteed not to have this problem (it just runs, no \
+      matter what).\
+    * It works on a set of files, i.e. you do not have to specify a single \
+      script, you can select a directory (package or else) or a set of files.\
+      It finds all the Python files recursively automatically.\
+    * Automatic/no configuration: your PYTHONPATH is automatically adjusted \
+      to include the required package roots. It figures out the paths that \
+      are required from the files/directories given as input. You should not \
+      have to setup ANYTHING.\
+    * It does not have to automatically 'follow' dependencies between modules,\
+      i.e. by default it only considers the files and directories you specify \
+      on the command-line and their immediate dependencies. It also has an \
+      option to automatically include only the dependencies within the \
+      packages of the files you specify.\
+    * It follows the UNIX philosophy of small programs that do one thing well:\
+      it consists of a few simple programs whose outputs you combine via \
+      pipes. Graphing dependencies always requires the user to filter and \
+      cluster the filenames, so this is appropriate. You can combine it with \
+      your favourite tools, grep, sed, etc.\
+\
+A problem with dependency trackers that run code is that they are unreliable, \
+due to the dynamic nature of Python (the presence of imports within function \
+calls and __import__ hooks makes it almost impossible to always do the right \
+thing). This script aims at being right 99% of the time, and we think that \
+given the trade-offs, 99% is good enough for 99% of the uses.\
+"
+AUTHOR = "Martin Blais <blais@furius.ca>"
+HOMEPAGE = "http://furius.ca/snakefood"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI[md5sum] = "56c88667a33d8909b0aabf2ab6903bdf"
+SRC_URI[sha256sum] = "295784668032254e7391ca99ba7060edd3ae4eca1a330ac11627b18ab5923b77"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = " python-logging python-compiler python-shell"
+# the above modules do not have a -native counterpart
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native"
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-sparts_0.7.3.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-sparts_0.7.3.bb
new file mode 100644
index 0000000..a125311
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-sparts_0.7.3.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Library for rapid service prototyping with minimal boilerplate"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0c1554636a564da3baf037ac652fc831"
+
+SRC_URI[md5sum] = "6aa8815652c6f5e5e8e5b2ac1813dd87"
+SRC_URI[sha256sum] = "b25707c349079a7c888155e7fdfd8394df2da9aca9c8eee4e205528cb16b7662"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} = "\
+               python-subprocess \
+               python-six \
+               python-argparse \
+               python-re \
+               python-shell \
+               python-threading \
+               python-logging \
+               python-unixadmin \
+               python-distutils \
+               python-daemonize \
+               python-futures \
+"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_0.7.9.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_0.7.9.bb
new file mode 100644
index 0000000..43b4b7e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-sqlalchemy_0.7.9.bb
@@ -0,0 +1,14 @@
+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=baffc5e5f4804c92fc9be155fed70d41"
+RDEPENDS_${PN} += "python-numbers"
+
+SRCNAME = "SQLAlchemy"
+SRC_URI = "${SOURCEFORGE_MIRROR}/sqlalchemy/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "c4852d586d95a59fbc9358f4467875d5"
+SRC_URI[sha256sum] = "f7a305ad122144f364ce09a2d9ed5159d5f46ec43650653593e7dfa05d3294a1"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado-redis_2.4.18.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado-redis_2.4.18.bb
new file mode 100644
index 0000000..46a20a5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado-redis_2.4.18.bb
@@ -0,0 +1,18 @@
+SUMMARY  = "Tornado-Redis is an asyncronous Redis client for the Tornado Web Server"
+DESCRIPTION = "Tornado-Redis is a Redis client that uses Tornado's native 'tornado-gen' interface. \
+It can be used alongside redis-py in Tornado applications: \
+tornado-redis to subscribe to Pub/Sub notifications and for blocking commands (such as BLPOP, BRPOP, BRPOPLPUSH); \
+redis-py for other commands."
+HOMEPAGE = "https://github.com/leporo/tornado-redis"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=ca307e8f37b5fa7f8dbbec033f7db7de"
+
+SRC_URI[md5sum] = "1c7ec0f645d15400871141c1149e6934"
+SRC_URI[sha256sum] = "8fd3b324158291ad5fb7f5f8dc2e8763b2895556bd2a44f2dd721b703c669046"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "python-tornado"
+
+RDEPENDS_${PN}-test += "${PN} python-tornado"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado.inc
new file mode 100644
index 0000000..7e3ac8c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado.inc
@@ -0,0 +1,24 @@
+SUMMARY  = "Tornado is an open source version of the scalable, non-blocking web server and tools that power FriendFeed."
+DESCRIPTION = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. \
+By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long \
+polling, WebSockets, and other applications that require a long-lived connection to each user."
+HOMEPAGE = "http://www.tornadoweb.org/en/stable/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://setup.py;startline=2;endline=15;md5=5ab7571a79ad62d0ca7aea308bac7560"
+
+SRC_URI[md5sum] = "d13a99dc0b60ba69f5f8ec1235e5b232"
+SRC_URI[sha256sum] = "c9c2d32593d16eedf2cec1b6a41893626a2649b40b21ca9c4cac4243bde2efbf"
+
+RDEPENDS_${PN} += "${PYTHON_PN}-compression ${PYTHON_PN}-numbers ${PYTHON_PN}-email ${PYTHON_PN}-subprocess \
+                   ${PYTHON_PN}-pkgutil ${PYTHON_PN}-html ${PYTHON_PN}-json ${PYTHON_PN}-certifi"
+
+RDEPENDS_${PN}-test += "${PN} ${PYTHON_PN}-unittest"
+
+PACKAGES =+ "\
+    ${PN}-test \
+"
+
+FILES_${PN}-test = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/*/test \
+    ${libdir}/${PYTHON_DIR}/site-packages/*/testing.py* \
+"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado/0001-disable-AI_ADDRCONFIG-flag.patch b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado/0001-disable-AI_ADDRCONFIG-flag.patch
new file mode 100644
index 0000000..0b0d471
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado/0001-disable-AI_ADDRCONFIG-flag.patch
@@ -0,0 +1,32 @@
+From d7fb0a6ef3f3cbdfc1f21f5a67d54fa9d2c1e183 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed, 2 Nov 2011 11:07:24 +0100
+Subject: [PATCH] disable AI_ADDRCONFIG flag
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+Upstream-Status: unknown
+---
+ tornado/netutil.py |    6 ------
+ 1 files changed, 0 insertions(+), 6 deletions(-)
+
+diff --git a/tornado/netutil.py b/tornado/netutil.py
+index cfff0ba..c181f24 100644
+--- a/tornado/netutil.py
++++ b/tornado/netutil.py
+@@ -238,12 +238,6 @@ def bind_sockets(port, address=None, family=socket.AF_UNSPEC, backlog=128):
+     if address == "":
+         address = None
+     flags = socket.AI_PASSIVE
+-    if hasattr(socket, "AI_ADDRCONFIG"):
+-        # AI_ADDRCONFIG ensures that we only try to bind on ipv6
+-        # if the system is configured for it, but the flag doesn't
+-        # exist on some platforms (specifically WinXP, although
+-        # newer versions of windows have it)
+-        flags |= socket.AI_ADDRCONFIG
+     for res in set(socket.getaddrinfo(address, port, family, socket.SOCK_STREAM,
+                                   0, flags):
+         af, socktype, proto, canonname, sockaddr = res
+-- 
+1.7.2.5
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado_2.2.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado_2.2.1.bb
new file mode 100644
index 0000000..28026b3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado_2.2.1.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Tornado is an open source version of the scalable, non-blocking web server and tools that power FriendFeed."
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://README;md5=e7fb9954003d7cd93322ccf282210d1c"
+
+PV = "2.2.1+git${SRCPV}"
+
+SRCREV = "c501917eba46dec30b1f2ef12497dffc4beec505"
+SRC_URI = "git://github.com/facebook/tornado.git;branch=branch2.2 \
+           file://0001-disable-AI_ADDRCONFIG-flag.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit setuptools
+
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado_4.3.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado_4.3.bb
new file mode 100644
index 0000000..55a48b8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-tornado_4.3.bb
@@ -0,0 +1,3 @@
+inherit pypi setuptools
+require python-tornado.inc
+RDEPENDS_${PN} += "${PYTHON_PN}-backports-ssl"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-twisted_13.2.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-twisted_13.2.0.bb
new file mode 100644
index 0000000..ac88ac9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-twisted_13.2.0.bb
@@ -0,0 +1,245 @@
+DESCRIPTION = "Twisted is an event-driven networking framework written in Python and licensed under the LGPL. \
+Twisted supports TCP, UDP, SSL/TLS, multicast, Unix sockets, a large number of protocols                   \
+(including HTTP, NNTP, IMAP, SSH, IRC, FTP, and others), and much more."
+HOMEPAGE = "http://www.twistedmatrix.com"
+
+#twisted/topfiles/NEWS:655: - Relicensed: Now under the MIT license, rather than LGPL.
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5602d7228daf59a16f0f1b2640c46bca"
+
+SRC_URI[md5sum] = "83fe6c0c911cc1602dbffb036be0ba79"
+SRC_URI[sha256sum] = "095175638c019ac7c0604f4c291724a16ff1acd062e181b01293bf4dcbc62cf3"
+
+PYPI_PACKAGE = "Twisted"
+PYPI_PACKAGE_EXT = "tar.bz2"
+inherit pypi setuptools
+
+do_install_append() {
+    # remove some useless files before packaging
+    find ${D} \( -name "*.bat" -o -name "*.c" -o -name "*.h" \) -exec rm -f {} \;
+}
+
+PACKAGES += "\
+    ${PN}-zsh \
+    ${PN}-test \
+    ${PN}-protocols \
+    ${PN}-conch \
+    ${PN}-lore \
+    ${PN}-mail \
+    ${PN}-names \
+    ${PN}-news \
+    ${PN}-runner \
+    ${PN}-web \
+    ${PN}-words \
+    ${PN}-flow \
+    ${PN}-pair \
+    ${PN}-core \
+"
+
+PACKAGES =+ "\
+    ${PN}-src \
+    ${PN}-bin \
+"
+
+RDEPENDS_${PN} = "\
+    ${PN}-bin \
+    ${PN}-conch \
+    ${PN}-lore \
+    ${PN}-mail \
+    ${PN}-names \
+    ${PN}-news \
+    ${PN}-runner \
+    ${PN}-web \
+    ${PN}-words \
+"
+
+RDEPENDS_${PN}-core = "python-core python-zopeinterface python-contextlib"
+RDEPENDS_${PN}-test = "${PN}"
+RDEPENDS_${PN}-conch = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-lore = "${PN}-core"
+RDEPENDS_${PN}-mail = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-names = "${PN}-core"
+RDEPENDS_${PN}-news = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-runner = "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-web += "${PN}-core ${PN}-protocols"
+RDEPENDS_${PN}-words += "${PN}-core"
+RDEPENDS_${PN}-flow += "${PN}-core"
+RDEPENDS_${PN}-pair += "${PN}-core"
+RDEPENDS_${PN}-dbg = "${PN}"
+
+ALLOW_EMPTY_${PN} = "1"
+FILES_${PN} = ""
+
+FILES_${PN}-test = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/test \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/*/test \
+"
+
+FILES_${PN}-protocols = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/*.py* \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/gps/ \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols/mice/ \
+"
+
+FILES_${PN}-zsh = " \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zsh \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zshcomp.* \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/twisted-completion.zsh \
+"
+
+FILES_${PN}-conch = " \
+    ${bindir}/ckeygen \
+    ${bindir}/tkconch \
+    ${bindir}/conch \
+    ${bindir}/conchftp \
+    ${bindir}/cftp \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_conch.py* \
+    ${libdir}/${PYTHON_DIR}/site-packages/twisted/conch  \
+"
+
+FILES_${PN}-core = " \
+${bindir}/manhole \
+${bindir}/mktap \
+${bindir}/twistd \
+${bindir}/tap2deb \
+${bindir}/tap2rpm \
+${bindir}/tapconvert \
+${bindir}/tkmktap \
+${bindir}/trial \
+${bindir}/easy_install* \
+${bindir}/pyhtmlizer \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/*.so \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/notestplugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/testplugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_ftp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_inet.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_manhole.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_portforward.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_socks.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_telnet.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_trial.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/dropin.cache \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/application \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/cred \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/enterprise \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/internet \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/manhole \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/manhole \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/persisted \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/protocols\
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python\
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/timeoutqueue.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/filepath.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dxprofile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/plugin.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/htmlizer.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dispatch.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/hook.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/threadpool.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/otp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/usage.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/roots.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/versions.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/urlpath.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/util.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/components.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/logfile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/runtime.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/reflect.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/context.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/threadable.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/rebuild.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/failure.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/lockfile.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/formmethod.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/finalize.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/win32.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/dist.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/shortcut.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zipstream.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/release.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/syslog.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/log.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/compat.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/zshcomp.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/procutils.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/text.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/_twisted_zsh_stub \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/scripts/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/spread/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/tap/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/trial/ \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/__init__.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/_version.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/copyright.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/im.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/python/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/*.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/topfiles \
+${libdir}/${PYTHON_DIR}/site-packages/Twisted*egg-info \
+"
+
+FILES_${PN}-lore = " \
+${bindir}/bookify \
+${bindir}/lore \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_lore.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/lore \
+"
+
+FILES_${PN}-mail = " \
+${bindir}/mailmail \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_mail.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/mail \
+"
+
+FILES_${PN}-names = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_names.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/names \
+"
+
+FILES_${PN}-news = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_news.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/news \
+"
+
+FILES_${PN}-runner = " \
+${libdir}/site-packages/twisted/runner/portmap.so \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/runner\
+"
+
+FILES_${PN}-web = " \
+${bindir}/websetroot \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_web.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/web\
+"
+
+FILES_${PN}-words = " \
+${bindir}/im \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_words.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/words\
+"
+
+FILES_${PN}-flow = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_flow.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/flow \"
+
+FILES_${PN}-pair = " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/plugins/twisted_pair.py* \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/pair \
+"
+
+FILES_${PN}-dbg += " \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*/.debug \
+${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*/.debug \
+"
+
+RDEPENDS_{PN}-src = "${PN}"
+FILES_${PN}-src = " \
+	${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py \
+	${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*.py \
+	${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*/*.py \
+	"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ujson_1.35.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ujson_1.35.bb
new file mode 100644
index 0000000..29207f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-ujson_1.35.bb
@@ -0,0 +1,13 @@
+SUMMARY  = "Ultra fast JSON encoder and decoder for Python"
+DESCRIPTION = "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 2.5+ and 3."
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;startline=8;endline=9;md5=4f369b3c3c290b4aede8796a4065e5ab"
+
+SRC_URI[md5sum] = "42f77b0cce686dfa4da2e68480b1dd24"
+SRC_URI[sha256sum] = "f66073e5506e91d204ab0c614a148d5aa938bdbf104751be66f8ad7a222f5f86"
+
+PYPI_PACKAGE = "ujson"
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "python-numbers"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-urllib3_1.14.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-urllib3_1.14.bb
new file mode 100644
index 0000000..4e30991
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-urllib3_1.14.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Python HTTP library with thread-safe connection pooling, file post support, sanity friendly, and more"
+HOMEPAGE = "https://github.com/shazow/urllib3"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3be3707c5f24a69709682265e29566fe"
+
+SRC_URI[md5sum] = "5e1407428ac33b521c71a7ac273b3847"
+SRC_URI[sha256sum] = "dd4fb13a4ce50b18338c7e4d665b21fd38632c5d4b1d9f1a1379276bd3c08d37"
+
+inherit pypi setuptools
+
+RDEPENDS_${PN} += "python-netclient"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-vcversioner_2.14.0.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-vcversioner_2.14.0.0.bb
new file mode 100644
index 0000000..e87e50f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-vcversioner_2.14.0.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Python vcversioner, automagically update the project's version"
+HOMEPAGE = "https://github.com/habnabit/vcversioner"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=260625d695c5e0c9dd2c2ef898833c7d"
+
+SRC_URI[md5sum] = "7848a365ced9941053bc25d9a9f8f4b4"
+SRC_URI[sha256sum] = "acd43686e92e6c8bbeb4f2eef54408567a7adea9692fa72d591eec5357c03b86"
+
+inherit pypi setuptools
+
+do_compile_append() {
+    export BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS}
+    ${PYTHON} setup.py -q bdist_egg --dist-dir ./
+}
+
+do_install_append() {
+    install -m 0644 ${S}/vcversioner*.egg ${D}/${PYTHON_SITEPACKAGES_DIR}/
+}
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-visitor_0.1.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-visitor_0.1.2.bb
new file mode 100644
index 0000000..f53091e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-visitor_0.1.2.bb
@@ -0,0 +1,8 @@
+SUMMARY = "A tiny pythonic visitor implementation."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[md5sum] = "e9471b44e5d426b0adf5d27694598be0"
+SRC_URI[sha256sum] = "d9444ffca56a46a920719460d4952f8c88f8fef97f1ea7d2b1f7c50f675022bd"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-vobject_0.8.1c.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-vobject_0.8.1c.bb
new file mode 100644
index 0000000..a28c02f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-vobject_0.8.1c.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Python package for parsing and generating vCard and vCalendar files"
+SECTION = "devel/python" 
+LICENSE = "Apache-2.0" 
+LIC_FILES_CHKSUM = "file://LICENSE-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+HOMEPAGE = "http://vobject.skyhouseconsulting.com/" 
+SRCNAME = "vobject" 
+RDEPENDS_${PN} = "python python-dateutil"
+PR = "r4"
+
+SRC_URI = "http://vobject.skyhouseconsulting.com/${SRCNAME}-${PV}.tar.gz" 
+S = "${WORKDIR}/${SRCNAME}-${PV}" 
+
+inherit setuptools  
+
+SRC_URI[md5sum] = "c9686dd74d39fdae140890d9c694c076"
+SRC_URI[sha256sum] = "594113117f2017ed837c8f3ce727616f9053baa5a5463a7420c8249b8fc556f5"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-webdav_0.1.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-webdav_0.1.2.bb
new file mode 100644
index 0000000..7a6437d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-webdav_0.1.2.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "This project aims to provide an object-oriented Python WebDAV client-side library\
+               based on Python`s standard httplib and Greg Stein`s davlib.\
+               The client shall fully support RFCs 4918 (basic specification),\
+               3744 (access control), and 3253 (versioning)."
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/webdav/WebdavClient.py;endline=15;md5=a1520fad859feb7b0d7f05277bc6ce48"
+HOMEPAGE = "http://sourceforge.net/projects/pythonwebdavlib/"
+SRCNAME = "Python_WebDAV_Library"
+DEPENDS = "python"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pythonwebdavlib/Python%20WebDAV%20Library%20-%20${PV}/${SRCNAME}-${PV}.zip"
+SRC_URI[md5sum] = "8e49e0ecc5b4327c4f752a544ee10e1a"
+SRC_URI[sha256sum] = "72c029ad1e25de950f59c2f1812d009d2c1691b70e4b5b09f1af9006e8fd5f23"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug.inc
new file mode 100644
index 0000000..7b54469
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug.inc
@@ -0,0 +1,30 @@
+SUMMARY = "The Swiss Army knife of Python web development"
+DESCRIPTION = "\
+Werkzeug started as simple collection of various utilities for WSGI \
+applications and has become one of the most advanced WSGI utility modules. \
+It includes a powerful debugger, full featured request and response objects, \
+HTTP utilities to handle entity tags, cache control headers, HTTP dates, \
+cookie handling, file uploads, a powerful URL routing system and a bunch \
+of community contributed addon modules."
+HOMEPAGE = "http://werkzeug.pocoo.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a68f5361a2b2ca9fdf26b38aaecb6faa"
+
+SRC_URI[md5sum] = "daf443a939459e12f14fd2e4658a26df"
+SRC_URI[sha256sum] = "afdb04f183eef3b20827eb4520dcb75c1cd1f0ba7a7de3f463ff7a462eee8164"
+
+PYPI_PACKAGE = "Werkzeug"
+
+RDEPENDS_${PN} += " \
+    python-difflib \
+    python-email \
+    python-html \
+    python-json \
+    python-netserver \
+    python-numbers \
+    python-pkgutil \
+    python-subprocess \
+    python-threading \
+    python-unixadmin \
+    python-zlib \
+"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug_0.11.5.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug_0.11.5.bb
new file mode 100644
index 0000000..dd14608
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-werkzeug_0.11.5.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-werkzeug.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh.inc
new file mode 100644
index 0000000..0a2cf3b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh.inc
@@ -0,0 +1,14 @@
+SUMMARY = "Fast, pure-Python full text indexing, search, and spell checking library."
+DESCRIPTION = "\
+Whoosh is a fast, featureful full-text indexing and searching library \
+implemented in pure Python. Programmers can use it to easily add search \
+functionality to their applications and websites. Every part of how \
+Whoosh works can be extended or replaced to meet your needs exactly."
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=05303186defc6141143629961c7c8a60"
+
+SRC_URI[md5sum] = "893433e9c0525ac043df33e6e04caab2"
+SRC_URI[sha256sum] = "e0857375f63e9041e03fedd5b7541f97cf78917ac1b6b06c1fcc9b45375dda69"
+
+PYPI_PACKAGE = "Whoosh"
+PYPI_PACKAGE_EXT = "zip"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh_2.7.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh_2.7.4.bb
new file mode 100644
index 0000000..48df360
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-whoosh_2.7.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-whoosh.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-wtforms_2.0.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-wtforms_2.0.2.bb
new file mode 100644
index 0000000..ae605d5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-wtforms_2.0.2.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "A flexible forms validation and rendering library for python web development."
+HOMEPAGE = "https://pypi.python.org/pypi/WTForms"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=e9377f5e4bfad82b40ed63f0fd4d1cce"
+
+SRC_URI[md5sum] = "613cf723ab40537705bec02733c78d95"
+SRC_URI[sha256sum] = "10737758ceae03b53021f3aa7e81bfc8dd6f679c879ffeb5e64ac6570facb6c1"
+
+PYPI_PACKAGE = "WTForms"
+PYPI_PACKAGE_EXT = "zip"
+
+inherit pypi setuptools
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd.inc b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd.inc
new file mode 100644
index 0000000..3c0d26d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd.inc
@@ -0,0 +1,10 @@
+SUMMARY = "Library for developers to extract data from Microsoft Excel (tm) spreadsheet files"
+DESCRIPTION = "Extract data from Excel spreadsheets (.xls and .xlsx,\
+ versions 2.0 onwards) on any platform. Pure Python (2.6, 2.7, 3.2+). \
+Strong support for Excel dates. Unicode-aware."
+HOMEPAGE = "http://www.python-excel.org/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://xlrd/licences.py;md5=b59dace5cc1db604c4219100b0422811"
+
+SRC_URI[md5sum] = "911839f534d29fe04525ef8cd88fe865"
+SRC_URI[sha256sum] = "8e8d3359f39541a6ff937f4030db54864836a06e42988c452db5b6b86d29ea72"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd_0.9.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd_0.9.4.bb
new file mode 100644
index 0000000..3a4d709
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-xlrd_0.9.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools
+require python-xlrd.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface_4.1.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface_4.1.1.bb
new file mode 100644
index 0000000..15f8e20
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python-zopeinterface_4.1.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Interface definitions for Zope products"
+LICENSE = "ZPL-2.1"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e54fd776274c1b7423ec128974bd9d46"
+
+SRC_URI[md5sum] = "edcd5f719c5eb2e18894c4d06e29b6c6"
+SRC_URI[sha256sum] = "91cba7b7cd7cb82f6f4e023fe77f94dc3df4ae5287fd55def2148dc232d0c7da"
+
+PYPI_PACKAGE = "zope.interface"
+inherit pypi setuptools
+
+RPROVIDES_${PN} += "zope-interfaces"
+FILES_${PN}-dbg += "${PYTHON_SITEPACKAGES_DIR}/*.egg/*/*/.debug"
+FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/zope/interface/*.c"
+FILES_${PN}-doc += "${PYTHON_SITEPACKAGES_DIR}/zope/interface/*.txt"
+FILES_${PN}-tests = " \
+        ${PYTHON_SITEPACKAGES_DIR}/zope/interface/tests \
+        ${PYTHON_SITEPACKAGES_DIR}/zope/interface/common/tests \
+"
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2016.2.28.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2016.2.28.bb
new file mode 100644
index 0000000..70f674b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2016.2.28.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-certifi.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-cython_0.24.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-cython_0.24.bb
new file mode 100644
index 0000000..2ce6bdb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-cython_0.24.bb
@@ -0,0 +1,18 @@
+inherit setuptools3
+require python-cython.inc
+
+RDEPENDS_${PN} += "\
+    python3-setuptools \
+"
+
+# running build_ext a second time during install fails, because Python
+# would then attempt to import cythonized modules built for the target
+# architecture.
+DISTUTILS_INSTALL_ARGS += "--skip-build"
+
+do_install_append() {
+    # rename scripts that would conflict with the Python 2 build of Cython
+    mv ${D}${bindir}/cython ${D}${bindir}/cython3
+    mv ${D}${bindir}/cythonize ${D}${bindir}/cythonize3
+    mv ${D}${bindir}/cygdb ${D}${bindir}/cygdb3
+}
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.5.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.5.2.bb
new file mode 100644
index 0000000..1d2baf5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.5.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-dateutil.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-decorator_4.0.9.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-decorator_4.0.9.bb
new file mode 100644
index 0000000..844cbdc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-decorator_4.0.9.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-decorator.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb
new file mode 100644
index 0000000..95a5405
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-feedformatter.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-login_0.2.11.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-login_0.2.11.bb
new file mode 100644
index 0000000..2d23fe1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-login_0.2.11.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-login.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_0.4.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_0.4.0.bb
new file mode 100644
index 0000000..2102554
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-pymongo_0.4.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask-pymongo.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_0.10.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_0.10.1.bb
new file mode 100644
index 0000000..cd43990
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_0.10.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-flask.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_0.24.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_0.24.bb
new file mode 100644
index 0000000..cd30825
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_0.24.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-itsdangerous.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2_2.8.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2_2.8.bb
new file mode 100644
index 0000000..61156b6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-jinja2_2.8.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-jinja2.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_3.6.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_3.6.0.bb
new file mode 100644
index 0000000..ff4bc7f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_3.6.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-lxml.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe_0.23.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe_0.23.bb
new file mode 100644
index 0000000..765e3c9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-markupsafe_0.23.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-markupsafe.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.6.5.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.6.5.bb
new file mode 100644
index 0000000..18180a0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-passlib_1.6.5.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-passlib.inc
\ No newline at end of file
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
new file mode 100644
index 0000000..b3bab98
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pyinotify.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.3.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.3.bb
new file mode 100644
index 0000000..4523d9e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pymisp.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.2.2.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.2.2.bb
new file mode 100644
index 0000000..5164b18
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_3.2.2.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-pymongo.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.0.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.0.1.bb
new file mode 100644
index 0000000..17ed3f8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.0.1.bb
@@ -0,0 +1,7 @@
+inherit setuptools3
+require python-pyserial.inc
+
+do_install_append() {
+    rm -f ${D}${bindir}/miniterm.py
+    rmdir ${D}${bindir}
+}
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_2.10.5.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_2.10.5.bb
new file mode 100644
index 0000000..b192ed8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_2.10.5.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-redis.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.9.1.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.9.1.bb
new file mode 100644
index 0000000..e5220fa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.9.1.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-requests.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-six_1.10.0.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-six_1.10.0.bb
new file mode 100644
index 0000000..7f76157
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-six_1.10.0.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-six.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_4.3.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_4.3.bb
new file mode 100644
index 0000000..eecc1f0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-tornado_4.3.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-tornado.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_0.11.5.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_0.11.5.bb
new file mode 100644
index 0000000..af2d86a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_0.11.5.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-werkzeug.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh_2.7.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh_2.7.4.bb
new file mode 100644
index 0000000..5d8af30
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-whoosh_2.7.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-whoosh.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_0.9.4.bb b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_0.9.4.bb
new file mode 100644
index 0000000..b7bd969
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_0.9.4.bb
@@ -0,0 +1,2 @@
+inherit pypi setuptools3
+require python-xlrd.inc
diff --git a/import-layers/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted/0001-fix-version-float-check.patch b/import-layers/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted/0001-fix-version-float-check.patch
new file mode 100644
index 0000000..db3ab9f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted/0001-fix-version-float-check.patch
@@ -0,0 +1,26 @@
+check_mod_version breaks if module version is of x.y.z form
+use a regex to help cast x.y.z version to a float
+
+Upstream-Status: Pending
+
+Index: git/setup.py
+===================================================================
+--- git.orig/setup.py
++++ git/setup.py
+@@ -25,6 +25,7 @@ import glob
+ import os
+ import platform
+ import sys
++import re
+ from distutils.ccompiler import new_compiler
+ from distutils.errors import CompileError
+ from distutils.errors import LinkError
+@@ -51,6 +52,8 @@ def pkgconfig(*packages, **kwargs):
+ 
+ def check_mod_version(module, version):
+     modversion = subprocess.check_output(["pkg-config", "--modversion", module])
++    match = re.search('([0-9]+\.[0-9]+)', modversion)
++    modversion = match.group(0)
+     if not float(modversion) >= float(version):
+         sys.stderr.write("*** Minimum required %s version: %s, found: %s\n" % (module, version, modversion,))
+         sys.exit(1)
diff --git a/import-layers/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted_3.10.7.bb b/import-layers/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted_3.10.7.bb
new file mode 100644
index 0000000..712c4b9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-python/recipes-extended/python-pyparted/python-pyparted_3.10.7.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "pyparted is a set of Python modules that provide Python programmers \
+an interface to libparted, the GNU parted library for disk partitioning and \
+filesystem manipulation."
+SUMMARY = "Python bindings for libparted"
+HOMEPAGE = "https://github.com/rhinstaller/pyparted"
+LICENSE = "GPL-2.0+"
+LIC_FILES_CHKSUM = "\
+    file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
+    file://src/_pedmodule.c;startline=10;endline=22;md5=ebcb25dde1ac9c46e986dec79b404e7e \
+"
+DEPENDS += "parted python-re"
+
+PV = "3.10.7+git${SRCPV}"
+
+# upstream only publishes releases in github archives which are discouraged
+SRCREV = "69c4a478e43d3eff6ae3a0116fa38da06776d5f5"
+SRC_URI = "git://github.com/rhinstaller/pyparted.git;protocol=https \
+           file://0001-fix-version-float-check.patch \
+"
+S = "${WORKDIR}/git"
+
+inherit distutils
+
+RDEPENDS_${PN} += "python-stringold python-codecs python-math parted (>= 2.3)"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND += "native"
diff --git a/import-layers/meta-openembedded/meta-ruby/COPYING.MIT b/import-layers/meta-openembedded/meta-ruby/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-ruby/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-ruby/README b/import-layers/meta-openembedded/meta-ruby/README
new file mode 100644
index 0000000..17fdde9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-ruby/README
@@ -0,0 +1,17 @@
+This layer depends on:
+
+URI: git://github.com/openembedded/oe-core.git
+branch: krogoth
+revision: HEAD
+
+URI: git://github.com/openembedded/meta-oe.git
+branch: krogoth
+revision: HEAD
+
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-ruby][krogoth]' in the subject'
+
+When sending single patches, please using something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-ruby][krogoth][PATCH'
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
diff --git a/import-layers/meta-openembedded/meta-ruby/classes/ruby.bbclass b/import-layers/meta-openembedded/meta-ruby/classes/ruby.bbclass
new file mode 100644
index 0000000..ef844f2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-ruby/classes/ruby.bbclass
@@ -0,0 +1,131 @@
+BPV ?= "${PV}"
+
+DEPENDS += " \
+    ruby-native \
+"
+RDEPENDS_${PN} += " \
+    ruby \
+"
+
+def get_rubyversion(p):
+    import re
+    from os.path import isfile
+    import subprocess
+    found_version = "SOMETHING FAILED!"
+
+    cmd = "%s/ruby" % p
+
+    if not isfile(cmd):
+       return found_version
+
+    version = subprocess.Popen([cmd, "--version"], stdout=subprocess.PIPE).communicate()[0]
+    
+    r = re.compile("ruby ([0-9]+\.[0-9]+\.[0-9]+)*")
+    m = r.match(version)
+    if m:
+        found_version = m.group(1)
+
+    return found_version
+
+def get_rubygemslocation(p):
+    import re
+    from os.path import isfile
+    import subprocess
+    found_loc = "SOMETHING FAILED!"
+
+    cmd = "%s/gem" % p
+
+    if not isfile(cmd):
+       return found_loc
+
+    loc = subprocess.Popen([cmd, "env"], stdout=subprocess.PIPE).communicate()[0]
+
+    r = re.compile(".*\- (/usr.*/ruby/gems/.*)")
+    for line in loc.split('\n'):
+        m = r.match(line)
+        if m:
+            found_loc = m.group(1)
+            break
+
+    return found_loc
+
+def get_rubygemsversion(p):
+    import re
+    from os.path import isfile
+    import subprocess
+    found_version = "SOMETHING FAILED!"
+
+    cmd = "%s/gem" % p
+
+    if not isfile(cmd):
+       return found_version
+
+    version = subprocess.Popen([cmd, "env", "gemdir"], stdout=subprocess.PIPE).communicate()[0]
+    
+    r = re.compile(".*([0-9]+\.[0-9]+\.[0-9]+)$")
+    m = r.match(version)
+    if m:
+        found_version = m.group(1)
+
+    return found_version
+
+RUBY_VERSION ?= "${@get_rubyversion("${STAGING_BINDIR_NATIVE}")}"
+RUBY_GEM_DIRECTORY ?= "${@get_rubygemslocation("${STAGING_BINDIR_NATIVE}")}"
+RUBY_GEM_VERSION ?= "${@get_rubygemsversion("${STAGING_BINDIR_NATIVE}")}"
+
+export GEM_HOME = "${STAGING_DIR_NATIVE}/usr/lib/ruby/gems/${RUBY_GEM_VERSION}"
+
+RUBY_BUILD_GEMS ?= "${BPN}.gemspec"
+RUBY_INSTALL_GEMS ?= "${BPN}-${BPV}.gem"
+
+RUBY_COMPILE_FLAGS ?= 'LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8"'
+
+ruby_do_compile() {
+	for gem in ${RUBY_BUILD_GEMS}; do
+		${RUBY_COMPILE_FLAGS} gem build $gem
+	done
+}
+
+
+ruby_do_install() {
+	for gem in ${RUBY_INSTALL_GEMS}; do
+		gem install --ignore-dependencies --local --env-shebang --install-dir ${D}/${libdir}/ruby/gems/${RUBY_GEM_VERSION}/ $gem
+	done
+
+	# create symlink from the gems bin directory to /usr/bin
+	for i in ${D}/${libdir}/ruby/gems/${RUBY_GEM_VERSION}/bin/*; do
+		if [ -e "$i" ]; then
+			if [ ! -d ${D}/${bindir} ]; then mkdir -p ${D}/${bindir}; fi
+			b=`basename $i`
+			ln -sf ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/bin/$b ${D}/${bindir}/$b
+		fi
+	done
+}
+
+EXPORT_FUNCTIONS do_compile do_install
+
+PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-dev"
+
+FILES_${PN}-dbg += " \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/.debug \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/*/.debug \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/*/*/.debug \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/*/*/*/.debug \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/extensions/*/*/.debug \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/extensions/*/*/*/.debug \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/extensions/*/*/*/*/.debug \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/extensions/*/*/*/*/*/.debug \
+        "
+
+FILES_${PN} += " \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/cache \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/bin \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/specifications \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/build_info \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/extensions \
+        "
+
+FILES_${PN}-doc += " \
+        ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/doc \
+        "
diff --git a/import-layers/meta-openembedded/meta-ruby/conf/layer.conf b/import-layers/meta-openembedded/meta-ruby/conf/layer.conf
new file mode 100644
index 0000000..b526a5d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-ruby/conf/layer.conf
@@ -0,0 +1,15 @@
+# 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 += "ruby-layer"
+BBFILE_PATTERN_ruby-layer := "^${LAYERDIR}/"
+BBFILE_PRIORITY_ruby-layer = "7"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_ruby-layer = "1"
+
+LAYERDEPENDS_ruby-layer = "core openembedded-layer"
diff --git a/import-layers/meta-openembedded/meta-ruby/recipes-devtools/ruby/bundler_git.bb b/import-layers/meta-openembedded/meta-ruby/recipes-devtools/ruby/bundler_git.bb
new file mode 100644
index 0000000..31e72e5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-ruby/recipes-devtools/ruby/bundler_git.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Makes sure Ruby applications run the same code on every machine."
+DESCRIPTION = "Bundler makes sure Ruby applications run the same code \
+on every machine. It does this by managing the gems that the \
+application depends on. Given a list of gems, it can automatically \
+download and install those gems, as well as any other gems needed by \
+the gems that are listed. Before installing gems, it checks the \
+versions of every gem to make sure that they are compatible, and can \
+all be loaded at the same time. After the gems have been installed, \
+Bundler can help you update some or all of them when new versions \
+become available. Finally, it records the exact versions that have \
+been installed, so that others can install the exact same gems."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=196bb963e601609817d7e9ac9a64a867"
+
+SRCREV = "06dc8472b9142fd6aaefff780d6d252c20dc2a04"
+
+BRANCH = "1-9-stable"
+PV = "1.9.4"
+
+S = "${WORKDIR}/git"
+
+SRC_URI = " \
+    git://github.com/bundler/bundler.git;branch=${BRANCH} \
+    "
+
+inherit ruby
+
+RDEPENDS_${PN} = "git"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-systemd/README b/import-layers/meta-openembedded/meta-systemd/README
new file mode 100644
index 0000000..d39e234
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/README
@@ -0,0 +1,26 @@
+This layer depends on:
+
+URI: git://github.com/openembedded/oe-core.git
+branch: krogoth
+revision: HEAD
+
+And we're working to break the dependency on this one:
+
+URI: git://github.com/openembedded/meta-oe.git
+branch: krogoth
+revision: HEAD
+
+To make BBMASK'ing per layer possible the following directory structure is
+used:
+
+$[LAYERDIR}/<layer name>/recipes-<group-name>/<recipe-name>/<recipe-name>.bbappend
+
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-oe][meta-systemd][krogoth]' in the subject'
+
+When sending single patches, please use something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-oe][meta-systemd][krogoth][PATCH'
+
+You are encouraged to fork the mirror on github https://github.com/openembedded/meta-oe/ to share your patches, this is preferred for patch sets consisting of more than one patch. Other services like gitorious, repo.or.cz or self hosted setups are of course accepted as well, 'git fetch <remote>' works the same on all of them. We recommend github because it is free, easy to use, has been proven to be reliable and has a really good web GUI.
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
diff --git a/import-layers/meta-openembedded/meta-systemd/conf/layer.conf b/import-layers/meta-openembedded/meta-systemd/conf/layer.conf
new file mode 100644
index 0000000..0563f44
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/conf/layer.conf
@@ -0,0 +1,32 @@
+# It really depends on order of the layers appearing in BBLAYERS
+# variable in toplevel bblayers.conf file, where bitbake will search
+# for .inc files and others where bitbake uses BBPATH since it will
+# search the directories from first to last as specified in BBPATH
+# Therefore if you want a given layer to be considered high priority
+# for the .inc and .conf etc. then consider it adding at the beginning
+# of BBPATH. For bblayers bitbake will use BBFILES_PRIORITY to resolve
+# the recipe contention so the order of directories in BBFILES does 
+# not matter.
+
+# 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}/oe-core/recipes-*/*/*.bbappend \
+"
+
+BBFILE_COLLECTIONS += "systemd-layer"
+BBFILE_PATTERN_systemd-layer := "^${LAYERDIR}/"
+
+# Define the priority for recipes (.bb files) from this layer,
+# choosing carefully how this layer interacts with all of the
+# other layers.
+
+BBFILE_PRIORITY_systemd-layer = "7"
+
+SIGGEN_EXCLUDERECIPES_ABISAFE += " \
+  systemd-serialgetty \
+"
+LAYERDEPENDS_systemd-layer = "core"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-bsp/keymaps/keymaps_1.0.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-bsp/keymaps/keymaps_1.0.bbappend
new file mode 100644
index 0000000..181b878
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-bsp/keymaps/keymaps_1.0.bbappend
@@ -0,0 +1,4 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/avahi/avahi_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/avahi/avahi_%.bbappend
new file mode 100644
index 0000000..181b878
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/avahi/avahi_%.bbappend
@@ -0,0 +1,4 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/connman/connman_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/connman/connman_%.bbappend
new file mode 100644
index 0000000..f006b3f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/connman/connman_%.bbappend
@@ -0,0 +1,3 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/dhcp/dhclient.service b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/dhcp/dhclient.service
new file mode 100644
index 0000000..c9620cf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/dhcp/dhclient.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Dynamic Host Configuration Protocol (DHCP)
+After=syslog.target network.target
+
+[Service]
+Type=forking
+PIDFile=/var/run/dhclient.pid
+EnvironmentFile=-/etc/default/dhcp-client
+ExecStart=/sbin/dhclient -cf /etc/dhcp/dhclient.conf -q -lf /var/lib/dhcp/dhclient.leases $INTERFACES
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/dhcp_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/dhcp_%.bbappend
new file mode 100644
index 0000000..94d7bd6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp/dhcp_%.bbappend
@@ -0,0 +1,24 @@
+# look for files in the layer first
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SYSTEMD_PACKAGES += "dhcp-client"
+SYSTEMD_SERVICE_dhcp-client = "dhclient.service"
+SYSTEMD_AUTO_ENABLE_dhcp-client = "disable"
+
+FILES_${PN}-client += "${systemd_unitdir}/system/dhclient.service"
+RPROVIDES_dhcp-server += "dhcp-server-systemd"
+RREPLACES_dhcp-server += "dhcp-server-systemd"
+RCONFLICTS_dhcp-server += "dhcp-server-systemd"
+RPROVIDES_dhcp-relay += "dhcp-relay-systemd"
+RREPLACES_dhcp-relay += "dhcp-relay-systemd"
+RCONFLICTS_dhcp-relay += "dhcp-relay-systemd"
+RPROVIDES_${PN}-client += "dhcp-client-systemd"
+RREPLACES_${PN}-client += "dhcp-client-systemd"
+RCONFLICTS_${PN}-client += "dhcp-client-systemd"
+
+SRC_URI += "file://dhclient.service"
+
+do_install_append() {
+    install -m 0644 ${WORKDIR}/dhclient.service ${D}${systemd_unitdir}/system
+}
+
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/ofono/ofono_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/ofono/ofono_%.bbappend
new file mode 100644
index 0000000..17a3124
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/ofono/ofono_%.bbappend
@@ -0,0 +1,5 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+
+SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/openssh/openssh_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/openssh/openssh_%.bbappend
new file mode 100644
index 0000000..dadbc14
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/openssh/openssh_%.bbappend
@@ -0,0 +1,3 @@
+RPROVIDES_${PN}-sshd += "${PN}-sshd-systemd"
+RREPLACES_${PN}-sshd += "${PN}-sshd-systemd"
+RCONFLICTS_${PN}-sshd += "${PN}-sshd-systemd"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/portmap/portmap_6.0.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/portmap/portmap_6.0.bbappend
new file mode 100644
index 0000000..6ce6e70
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/portmap/portmap_6.0.bbappend
@@ -0,0 +1,5 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_AUTO_ENABLE = "disable"
+
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/wpa-supplicant/wpa-supplicant_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/wpa-supplicant/wpa-supplicant_%.bbappend
new file mode 100644
index 0000000..f006b3f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-connectivity/wpa-supplicant/wpa-supplicant_%.bbappend
@@ -0,0 +1,3 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/busybox/busybox_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/busybox/busybox_%.bbappend
new file mode 100644
index 0000000..642d450
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/busybox/busybox_%.bbappend
@@ -0,0 +1,3 @@
+RPROVIDES_${PN}-syslog += "${PN}-syslog-systemd"
+RREPLACES_${PN}-syslog += "${PN}-syslog-systemd"
+RCONFLICTS_${PN}-syslog += "${PN}-syslog-systemd"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/dbus/dbus_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/dbus/dbus_%.bbappend
new file mode 100644
index 0000000..f006b3f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/dbus/dbus_%.bbappend
@@ -0,0 +1,3 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/dropbear/dropbear_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/dropbear/dropbear_%.bbappend
new file mode 100644
index 0000000..181b878
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/dropbear/dropbear_%.bbappend
@@ -0,0 +1,4 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/systemd/systemd_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/systemd/systemd_%.bbappend
new file mode 100644
index 0000000..f5aa547
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/systemd/systemd_%.bbappend
@@ -0,0 +1,3 @@
+RPROVIDES_udev += "udev-systemd"
+RREPLACES_udev += "udev-systemd"
+RCONFLICTS_udev += "udev-systemd"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/util-linux/util-linux_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/util-linux/util-linux_%.bbappend
new file mode 100644
index 0000000..f006b3f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-core/util-linux/util-linux_%.bbappend
@@ -0,0 +1,3 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/at/at_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/at/at_%.bbappend
new file mode 100644
index 0000000..181b878
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/at/at_%.bbappend
@@ -0,0 +1,4 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/cronie/cronie_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/cronie/cronie_%.bbappend
new file mode 100644
index 0000000..f006b3f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/cronie/cronie_%.bbappend
@@ -0,0 +1,3 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/lighttpd/lighttpd_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/lighttpd/lighttpd_%.bbappend
new file mode 100644
index 0000000..f006b3f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/lighttpd/lighttpd_%.bbappend
@@ -0,0 +1,3 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
diff --git a/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/rpcbind/rpcbind_%.bbappend b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/rpcbind/rpcbind_%.bbappend
new file mode 100644
index 0000000..f006b3f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/oe-core/recipes-extended/rpcbind/rpcbind_%.bbappend
@@ -0,0 +1,3 @@
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
diff --git a/import-layers/meta-openembedded/meta-systemd/recipes-core/systemd/systemd-machine-units_1.0.bb b/import-layers/meta-openembedded/meta-systemd/recipes-core/systemd/systemd-machine-units_1.0.bb
new file mode 100644
index 0000000..6a66ac2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-systemd/recipes-core/systemd/systemd-machine-units_1.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Machine specific systemd units"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+PR = "r18"
+
+inherit systemd
+SYSTEMD_SERVICE_${PN} = ""
+NATIVE_SYSTEMD_SUPPORT = "1"
+ALLOW_EMPTY_${PN} = "1"
diff --git a/import-layers/meta-openembedded/meta-webserver/COPYING.MIT b/import-layers/meta-openembedded/meta-webserver/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/COPYING.MIT
@@ -0,0 +1,17 @@
+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-openembedded/meta-webserver/README b/import-layers/meta-openembedded/meta-webserver/README
new file mode 100644
index 0000000..e842279
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/README
@@ -0,0 +1,70 @@
+meta-webserver
+==============
+
+This layer provides support for building web servers, web-based
+applications and related software.
+
+
+
+Dependencies
+------------
+
+This layer depends on:
+
+URI: git://github.com/openembedded/oe-core.git
+subdirectory: meta
+branch: krogoth 
+revision: HEAD
+
+For some recipes, the meta-oe layer is required:
+
+URI: git://github.com/openembedded/meta-oe.git
+subdirectory: meta-oe
+branch: krogoth 
+revision: HEAD
+
+
+
+Layout
+------
+
+recipes-httpd/      Web servers
+recipes-php/        PHP applications
+recipes-support/    Miscellaneous support recipes
+recipes-webadmin/   Standalone web administration interfaces
+
+
+Notes
+-----
+
+* This layer used to provide a modphp recipe that built mod_php, but
+  this is now built as part of the php recipe in meta-oe. However, since
+  apache2 is required to build mod_php, and apache2 recipe is in this
+  layer and recipes in meta-oe can't depend on it, mod_php is not built
+  by default. If you do wish to use mod_php, you need to add "apache2"
+  to the PACKAGECONFIG value for the php recipe in order to enable it.
+  See here for info on how to do that:
+
+  http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-PACKAGECONFIG
+
+
+Maintenance
+-----------
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-systemd][krogoth]' in the subject'
+
+When sending single patches, please use something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-systemd][krogoth][PATCH'
+
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
+
+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.
+
+This README document is Copyright (C) 2012 Intel Corporation.
+
diff --git a/import-layers/meta-openembedded/meta-webserver/conf/layer.conf b/import-layers/meta-openembedded/meta-webserver/conf/layer.conf
new file mode 100644
index 0000000..bb508a8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/conf/layer.conf
@@ -0,0 +1,24 @@
+# Layer configuration for meta-webserver layer
+# Copyright 2012 Intel Corporation
+
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have various recipe-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "webserver"
+BBFILE_PATTERN_webserver := "^${LAYERDIR}/"
+BBFILE_PRIORITY_webserver = "6"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_webserver = "1"
+
+LAYERDEPENDS_webserver = "core"
+
+LICENSE_PATH += "${LAYERDIR}/licenses"
+
+SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
+  phpmyadmin->bash \
+"
diff --git a/import-layers/meta-openembedded/meta-webserver/licenses/OML b/import-layers/meta-openembedded/meta-webserver/licenses/OML
new file mode 100644
index 0000000..7e6bdfd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/licenses/OML
@@ -0,0 +1,28 @@
+This FastCGI application library source and object code (the
+"Software") and its documentation (the "Documentation") are
+copyrighted by Open Market, Inc ("Open Market").  The following terms
+apply to all files associated with the Software and Documentation
+unless explicitly disclaimed in individual files.
+
+Open Market permits you to use, copy, modify, distribute, and license
+this Software and the Documentation for any purpose, provided that
+existing copyright notices are retained in all copies and that this
+notice is included verbatim in any distributions.  No written
+agreement, license, or royalty fee is required for any of the
+authorized uses.  Modifications to this Software and Documentation may
+be copyrighted by their authors and need not follow the licensing
+terms described here.  If modifications to this Software and
+Documentation have new licensing terms, the new terms must be clearly
+indicated on the first page of each file where they apply.
+
+OPEN MARKET MAKES NO EXPRESS OR IMPLIED WARRANTY WITH RESPECT TO THE
+SOFTWARE OR THE DOCUMENTATION, INCLUDING WITHOUT LIMITATION ANY
+WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  IN
+NO EVENT SHALL OPEN MARKET BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY
+DAMAGES ARISING FROM OR RELATING TO THIS SOFTWARE OR THE
+DOCUMENTATION, INCLUDING, WITHOUT LIMITATION, ANY INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES OR SIMILAR DAMAGES, INCLUDING LOST PROFITS OR
+LOST DATA, EVEN IF OPEN MARKET HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.  THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS".
+OPEN MARKET HAS NO LIABILITY IN CONTRACT, TORT, NEGLIGENCE OR
+OTHERWISE ARISING OUT OF THIS SOFTWARE OR THE DOCUMENTATION.
diff --git a/import-layers/meta-openembedded/meta-webserver/licenses/Xdebug b/import-layers/meta-openembedded/meta-webserver/licenses/Xdebug
new file mode 100644
index 0000000..3cdbf05
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/licenses/Xdebug
@@ -0,0 +1,60 @@
+-------------------------------------------------------------------- 
+                 The Xdebug License, version 1.01
+             (Based on "The PHP License", version 3.0)
+   Copyright (c) 2003-2012 Derick Rethans. All rights reserved.
+-------------------------------------------------------------------- 
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+ 
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+ 
+  3. The name "Xdebug" must not be used to endorse or promote products
+     derived from this software without prior written permission. For
+     written permission, please contact derick@xdebug.org.
+  
+  4. Products derived from this software may not be called "Xdebug", nor
+     may "Xdebug" appear in their name, without prior written permission
+     from derick@xdebug.org.
+ 
+  5. Derick Rethans may publish revised and/or new versions of the
+     license from time to time. Each version will be given a
+     distinguishing version number.  Once covered code has been
+     published under a particular version of the license, you may
+     always continue to use it under the terms of that version. You
+     may also choose to use such covered code under the terms of any
+     subsequent version of the license published by Derick Rethans. No
+     one other than Derick Rethans has the right to modify the terms
+     applicable to covered code created under this License.
+
+  6. Redistributions of any form whatsoever must retain the following
+     acknowledgment: "This product includes Xdebug, freely available
+     from <http://xdebug.org/>".
+
+THIS SOFTWARE IS PROVIDED BY DERICK RETHANS ``AS IS'' AND ANY
+EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE PHP DEVELOPMENT TEAM OR
+ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by some
+individuals on behalf of Derick Rethans.
+
+Derick Rethans can be contacted via e-mail at derick@xdebug.org.
+
+For more information Xdebug, please see <http://xdebug.org>.
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache-mod/apache-websocket_git.bb b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache-mod/apache-websocket_git.bb
new file mode 100644
index 0000000..da33115
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache-mod/apache-websocket_git.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Websocket module for Apache web server"
+DESCRIPTION = "Process requests using the WebSocket protocol (RFC 6455)"
+HOMEPAGE = "https://github.com/jchampio/${PN}/"
+SECTION = "net"
+LICENSE = "Apache-2.0"
+
+inherit autotools-brokensep pkgconfig
+
+DEPENDS = "apache2 apache2-native"
+RDEPENDS_${PN} += "apache2"
+
+# Original (github.com/disconnect/apache-websocket) is dead since 2012, the
+# fork contains patches from the modules ML and fixes CVE compliance issues
+SRC_URI = "git://github.com/jchampio/apache-websocket.git"
+
+SRCREV = "f5230d8c520dccf8631da94bf90c23f3c1100dcc"
+
+PV = "0.1.1"
+
+S = "${WORKDIR}/git"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+EXTRA_OECONF = "APACHECTL=${STAGING_DIR_TARGET}${sbindir}/apachectl \
+                LIBTOOL=${STAGING_DIR_TARGET}${bindir_crossscripts}/${HOST_SYS}-libtool"
+
+do_install() {
+    install -d ${D}${libdir}/apache2/modules/
+    install ${B}/.libs/mod_websocket.so ${D}${libdir}/apache2/modules/
+}
+
+FILES_${PN} += " ${libdir}/apache2/modules/* "
+FILES_${PN}-dbg += " ${libdir}/apache2/modules/.debug/* "
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2-native_2.4.20.bb b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2-native_2.4.20.bb
new file mode 100644
index 0000000..9932d12
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2-native_2.4.20.bb
@@ -0,0 +1,45 @@
+DESCRIPTION = "The Apache HTTP Server is a powerful, efficient, and \
+extensible web server."
+SUMMARY = "Apache HTTP Server"
+HOMEPAGE = "http://httpd.apache.org/"
+DEPENDS = "expat-native pcre-native apr-native apr-util-native"
+SECTION = "net"
+LICENSE = "Apache-2.0"
+
+inherit autotools pkgconfig native
+
+SRC_URI = "http://www.apache.org/dist/httpd/httpd-${PV}.tar.bz2 \
+           file://0001-configure-use-pkg-config-for-PCRE-detection.patch \
+          "
+
+S = "${WORKDIR}/httpd-${PV}"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dbff5a2b542fa58854455bf1a0b94b83"
+SRC_URI[md5sum] = "3ff4f00ee051cf5d5304b47b1bc418b8"
+SRC_URI[sha256sum] = "0e76a375ed3dbac636f50ac39de966ece443751fe4d62392f9a360a19d94d0da"
+
+EXTRA_OECONF = "--with-apr=${STAGING_BINDIR_CROSS}/apr-1-config \
+                --with-apr-util=${STAGING_BINDIR_CROSS}/apu-1-config \
+                --prefix=${prefix} --datadir=${datadir}/apache2 \
+               "
+
+do_install () {
+    install -d ${D}${bindir} ${D}${libdir}
+    cp server/gen_test_char ${D}${bindir}
+    install -m 755 support/apxs ${D}${bindir}/
+    install -m 755 httpd ${D}${bindir}/
+    install -d ${D}${datadir}/apache2/build
+    cp ${S}/build/*.mk ${D}${datadir}/apache2/build
+    cp build/*.mk ${D}${datadir}/apache2/build
+    cp ${S}/build/instdso.sh ${D}${datadir}/apache2/build
+
+    install -d ${D}${includedir}/apache2
+    cp ${S}/include/* ${D}${includedir}/apache2
+    cp include/* ${D}${includedir}/apache2
+    cp ${S}/os/unix/os.h ${D}${includedir}/apache2
+    cp ${S}/os/unix/unixd.h ${D}${includedir}/apache2
+
+    cp support/envvars-std ${D}${bindir}/envvars
+    chmod 755 ${D}${bindir}/envvars
+}
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/apache-configure_perlbin.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/apache-configure_perlbin.patch
new file mode 100644
index 0000000..c90279d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/apache-configure_perlbin.patch
@@ -0,0 +1,20 @@
+# Author: echo <fei.geng@windriver.com>
+# Date: April 28 2009
+# Summary:Fix perl install directory to /usr/bin
+#
+# Upstream-Status: Inappropriate [configuration]
+
+--- a/configure.in
++++ b/configure.in
+@@ -638,10 +638,7 @@
+ AC_DEFINE_UNQUOTED(APACHE_MPM_DIR, "$MPM_DIR",
+ 	[Location of the source for the current MPM])
+ 
+-perlbin=`$ac_aux_dir/PrintPath perl`
+-if test "x$perlbin" = "x"; then
+-    perlbin="/replace/with/path/to/perl/interpreter"
+-fi
++perlbin='/usr/bin/perl'
+ AC_SUBST(perlbin)
+ 
+ dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/apache-ssl-ltmain-rpath.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/apache-ssl-ltmain-rpath.patch
new file mode 100644
index 0000000..413dc53
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/apache-ssl-ltmain-rpath.patch
@@ -0,0 +1,84 @@
+ build/ltmain.sh | 32 +++++++++++++++++++++++++++-----
+ 1 file changed, 27 insertions(+), 5 deletions(-)
+
+diff --git a/build/ltmain.sh b/build/ltmain.sh
+index 5eca4ae..805b461 100644
+--- a/build/ltmain.sh
++++ b/build/ltmain.sh
+@@ -6944,7 +6944,7 @@ func_mode_link ()
+ 	dir=$func_resolve_sysroot_result
+ 	# We need an absolute path.
+ 	case $dir in
+-	[\\/]* | [A-Za-z]:[\\/]*) ;;
++	=* | [\\/]* | [A-Za-z]:[\\/]*) ;;
+ 	*)
+ 	  absdir=`cd "$dir" && pwd`
+ 	  test -z "$absdir" && \
+@@ -8137,7 +8137,7 @@ func_mode_link ()
+ 	    $ECHO "*** $linklib is not portable!"
+ 	  fi
+ 	  if test lib = "$linkmode" &&
+-	     test yes = "$hardcode_into_libs"; then
++	     test "x$wrs_use_rpaths" = "xyes" && test "$hardcode_into_libs" = yes; then
+ 	    # Hardcode the library path.
+ 	    # Skip directories that are in the system default run-time
+ 	    # search path.
+@@ -8404,7 +8404,7 @@ func_mode_link ()
+ 
+ 	if test lib = "$linkmode"; then
+ 	  if test -n "$dependency_libs" &&
+-	     { test yes != "$hardcode_into_libs" ||
++              { test yes != "$hardcode_into_libs" || test "x$wrs_use_rpaths" != "xyes" ||
+ 	       test yes = "$build_old_libs" ||
+ 	       test yes = "$link_static"; }; then
+ 	    # Extract -R from dependency_libs
+@@ -9025,7 +9025,8 @@ func_mode_link ()
+ 	  *) func_append finalize_rpath " $libdir" ;;
+ 	  esac
+ 	done
+-	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
++        if test yes != "$hardcode_into_libs"  || test "x$wrs_use_rpaths" != "xyes" ||
++           test yes = "$build_old_libs"; then
+ 	  dependency_libs="$temp_xrpath $dependency_libs"
+ 	fi
+       fi
+@@ -9473,7 +9474,7 @@ EOF
+ 	case $archive_cmds in
+ 	  *\$LD\ *) wl= ;;
+         esac
+-	if test yes = "$hardcode_into_libs"; then
++	if test yes = "$hardcode_into_libs" && test "x$wrs_use_rpaths" = "xyes"; then
+ 	  # Hardcode the library paths
+ 	  hardcode_libdirs=
+ 	  dep_rpath=
+@@ -10211,6 +10212,27 @@ EOF
+       # Now hardcode the library paths
+       rpath=
+       hardcode_libdirs=
++
++      # short circuit putting rpaths in executables
++      #
++      if test "x$wrs_use_rpaths" != "xyes" ; then
++        flag=
++        for libdir in $compile_rpath; do
++          case $(echo $libdir | ${SED} 's,/[/]*,/,g') in
++            /usr/lib/* | /usr/lib32/* | /usr/lib64/* ) flag="$flag $libdir" ;;
++          esac
++        done
++        compile_rpath="$flag"
++
++        flag=
++        for libdir in $finalize_rpath; do
++          case $(echo $libdir | ${SED} 's,/[/]*,/,g') in
++            /usr/lib/* | /usr/lib32/* | /usr/lib64/* ) flag="$flag $libdir" ;;
++          esac
++        done
++        finalize_rpath="$flag"
++      fi
++
+       for libdir in $compile_rpath $finalize_rpath; do
+ 	if test -n "$hardcode_libdir_flag_spec"; then
+ 	  if test -n "$hardcode_libdir_separator"; then
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/fix-libtool-name.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/fix-libtool-name.patch
new file mode 100644
index 0000000..027af04
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/fix-libtool-name.patch
@@ -0,0 +1,55 @@
+Fix build scripts to use correct libtool filename
+
+Upstream-Status: Inappropriate [configuration]
+
+---
+ httpd-2.4.2/build/config_vars.sh.in |    2 +-
+ httpd-2.4.2/configure               |    2 +-
+ httpd-2.4.2/configure.in            |    2 +-
+ httpd-2.4.2/support/apxs.in         |    2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+--- a/build/config_vars.sh.in
++++ b/build/config_vars.sh.in
+@@ -35,7 +35,7 @@ else
+    APU_CONFIG=@APU_CONFIG@
+ fi
+ 
+-APR_LIBTOOL="`${APR_CONFIG} --apr-libtool`"
++APR_LIBTOOL="`${APR_CONFIG} --apr-libtool | sed -e s,libtool,${host_alias}-libtool,`"
+ APR_INCLUDEDIR="`${APR_CONFIG} --includedir`"
+ test -n "@APU_CONFIG@" && APU_INCLUDEDIR="`${APU_CONFIG} --includedir`"
+ 
+--- a/configure
++++ b/configure
+@@ -6205,7 +6205,7 @@ case $host in
+       if test "x$LTFLAGS" = "x"; then
+           LTFLAGS='--silent'
+       fi
+-      my_libtool=`$apr_config --apr-libtool`
++      my_libtool=`$apr_config --apr-libtool | sed -e s,libtool,${host_alias}-libtool,`
+       LIBTOOL="$my_libtool \$(LTFLAGS)"
+       libtoolversion=`$my_libtool --version`
+       case $libtoolversion in
+--- a/configure.in
++++ b/configure.in
+@@ -264,7 +264,7 @@ case $host in
+       if test "x$LTFLAGS" = "x"; then
+           LTFLAGS='--silent'
+       fi
+-      my_libtool=`$apr_config --apr-libtool`
++      my_libtool=`$apr_config --apr-libtool | sed -e s,libtool,${host_alias}-libtool,`
+       LIBTOOL="$my_libtool \$(LTFLAGS)"
+       libtoolversion=`$my_libtool --version`
+       case $libtoolversion in
+--- a/support/apxs.in
++++ b/support/apxs.in
+@@ -352,7 +352,7 @@ if ($apr_major_version < 2) {
+     }
+ }
+ 
+-my $libtool = `$apr_config --apr-libtool`;
++my $libtool = `$apr_config --apr-libtool| sed -e s,libtool,${host_alias}-libtool,`;
+ chomp($libtool);
+ 
+ my $apr_includedir = `$apr_config --includes`;
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/httpd-2.4.1-corelimit.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/httpd-2.4.1-corelimit.patch
new file mode 100644
index 0000000..18e4107
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/httpd-2.4.1-corelimit.patch
@@ -0,0 +1,37 @@
+
+Bump up the core size limit if CoreDumpDirectory is
+configured.
+
+Upstream-Status: Pending 
+
+Note: upstreaming was discussed but there are competing desires;
+	there are portability oddities here too.
+
+--- httpd-2.4.1/server/core.c.corelimit
++++ httpd-2.4.1/server/core.c
+@@ -4433,6 +4433,25 @@ static int core_post_config(apr_pool_t *
+     }
+     apr_pool_cleanup_register(pconf, NULL, ap_mpm_end_gen_helper,
+                               apr_pool_cleanup_null);
++
++#ifdef RLIMIT_CORE
++    if (ap_coredumpdir_configured) {
++        struct rlimit lim;
++
++        if (getrlimit(RLIMIT_CORE, &lim) == 0 && lim.rlim_cur == 0) {
++            lim.rlim_cur = lim.rlim_max;
++            if (setrlimit(RLIMIT_CORE, &lim) == 0) {
++                ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, NULL,
++                             "core dump file size limit raised to %lu bytes",
++                             lim.rlim_cur);
++            } else {
++                ap_log_error(APLOG_MARK, APLOG_NOTICE, errno, NULL,
++                             "core dump file size is zero, setrlimit failed");
++            }
++        }
++    }
++#endif
++
+     return OK;
+ }
+ 
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/httpd-2.4.1-selinux.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/httpd-2.4.1-selinux.patch
new file mode 100644
index 0000000..873328d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/httpd-2.4.1-selinux.patch
@@ -0,0 +1,63 @@
+
+Log the SELinux context at startup.
+
+Upstream-Status: Inappropriate [other]
+
+Note: unlikely to be any interest in this upstream
+
+--- httpd-2.4.1/configure.in.selinux
++++ httpd-2.4.1/configure.in
+@@ -458,6 +458,11 @@ fopen64
+ dnl confirm that a void pointer is large enough to store a long integer
+ APACHE_CHECK_VOID_PTR_LEN
+ 
++AC_CHECK_LIB(selinux, is_selinux_enabled, [
++   AC_DEFINE(HAVE_SELINUX, 1, [Defined if SELinux is supported])
++   APR_ADDTO(AP_LIBS, [-lselinux])
++])
++
+ AC_CACHE_CHECK([for gettid()], ac_cv_gettid,
+ [AC_TRY_RUN(#define _GNU_SOURCE
+ #include <unistd.h>
+--- httpd-2.4.1/server/core.c.selinux
++++ httpd-2.4.1/server/core.c
+@@ -58,6 +58,10 @@
+ #include <unistd.h>
+ #endif
+ 
++#ifdef HAVE_SELINUX
++#include <selinux/selinux.h>
++#endif
++
+ /* LimitRequestBody handling */
+ #define AP_LIMIT_REQ_BODY_UNSET         ((apr_off_t) -1)
+ #define AP_DEFAULT_LIMIT_REQ_BODY       ((apr_off_t) 0)
+@@ -4452,6 +4456,28 @@ static int core_post_config(apr_pool_t *
+     }
+ #endif
+ 
++#ifdef HAVE_SELINUX
++    {
++        static int already_warned = 0;
++        int is_enabled = is_selinux_enabled() > 0;
++        
++        if (is_enabled && !already_warned) {
++            security_context_t con;
++            
++            if (getcon(&con) == 0) {
++                
++                ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, NULL,
++                             "SELinux policy enabled; "
++                             "httpd running as context %s", con);
++                
++                already_warned = 1;
++                
++                freecon(con);
++            }
++        }
++    }
++#endif
++
+     return OK;
+ }
+ 
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/httpd-2.4.4-export.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/httpd-2.4.4-export.patch
new file mode 100644
index 0000000..afbed8e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/httpd-2.4.4-export.patch
@@ -0,0 +1,22 @@
+
+There is no need to "suck in" the apr/apr-util symbols when using
+a shared libapr{,util}, it just bloats the symbol table; so don't.
+
+Upstream-HEAD: needed
+Upstream-2.0: omit
+Upstream-Status: Pending
+
+Note: EXPORT_DIRS change is conditional on using shared apr
+
+--- httpd-2.4.4/server/Makefile.in.export
++++ httpd-2.4.4/server/Makefile.in
+@@ -57,9 +57,6 @@ export_files:
+ 	( for dir in $(EXPORT_DIRS); do \
+ 	      ls $$dir/*.h ; \
+ 	  done; \
+-	  for dir in $(EXPORT_DIRS_APR); do \
+-	      ls $$dir/ap[ru].h $$dir/ap[ru]_*.h 2>/dev/null; \
+-	  done; \
+ 	) | sed -e s,//,/,g | sort -u > $@
+ 
+ exports.c: export_files
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/replace-lynx-to-curl-in-apachectl-script.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/replace-lynx-to-curl-in-apachectl-script.patch
new file mode 100644
index 0000000..584ddc8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/replace-lynx-to-curl-in-apachectl-script.patch
@@ -0,0 +1,52 @@
+From 760ccbb2fb046621a2aeaecabb2b1ef9aa280cf1 Mon Sep 17 00:00:00 2001
+From: Yulong Pei <Yulong.pei@windriver.com>
+Date: Thu, 1 Sep 2011 01:03:14 +0800
+Subject: [PATCH] replace lynx to curl in apachectl script
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Yulong Pei <Yulong.pei@windriver.com>
+---
+ support/apachectl.in |   14 ++++++++++----
+ 1 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/support/apachectl.in b/support/apachectl.in
+index d4dff38..109ea13 100644
+--- a/support/apachectl.in
++++ b/support/apachectl.in
+@@ -51,11 +51,11 @@ fi
+ # a command that outputs a formatted text version of the HTML at the
+ # url given on the command line.  Designed for lynx, however other
+ # programs may work.  
+-LYNX="@LYNX_PATH@ -dump"
++CURL="/usr/bin/curl"
+ #
+ # the URL to your server's mod_status status page.  If you do not
+ # have one, then status and fullstatus will not work.
+-STATUSURL="http://localhost:@PORT@/server-status"
++STATUSURL="http://localhost:@PORT@/"
+ #
+ # Set this variable to a command that increases the maximum
+ # number of file descriptors allowed per child process. This is
+@@ -91,10 +91,16 @@ configtest)
+     ERROR=$?
+     ;;
+ status)
+-    $LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } '
++    $CURL -s $STATUSURL | grep -o "It works!"
++    if [ $? != 0 ] ; then
++        echo The httpd server does not work!
++    fi
+     ;;
+ fullstatus)
+-    $LYNX $STATUSURL
++    $CURL -s $STATUSURL | grep -o "It works!"
++    if [ $? != 0 ] ; then
++        echo The httpd server does not work!
++    fi
+     ;;
+ *)
+     $HTTPD $ARGV
+-- 
+1.6.4
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/server-makefile.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/server-makefile.patch
new file mode 100644
index 0000000..f1349cb
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/server-makefile.patch
@@ -0,0 +1,11 @@
+--- http-2.0.54/server/Makefile.in-old	2005-12-20 13:26:56.000000000 -0500
++++ http-2.0.54/server/Makefile.in	2005-12-20 13:27:22.000000000 -0500
+@@ -27,7 +27,7 @@
+ 	$(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS)
+ 
+ test_char.h: gen_test_char
+-	./gen_test_char > test_char.h
++	gen_test_char > test_char.h
+ 
+ util.lo: test_char.h
+ 
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.20.bb b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.20.bb
new file mode 100644
index 0000000..81151d1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.20.bb
@@ -0,0 +1,181 @@
+DESCRIPTION = "The Apache HTTP Server is a powerful, efficient, and \
+extensible web server."
+SUMMARY = "Apache HTTP Server"
+HOMEPAGE = "http://httpd.apache.org/"
+DEPENDS = "libtool-native apache2-native openssl expat pcre apr apr-util"
+SECTION = "net"
+LICENSE = "Apache-2.0"
+
+SRC_URI = "http://www.apache.org/dist/httpd/httpd-${PV}.tar.bz2 \
+           file://server-makefile.patch \
+           file://httpd-2.4.1-corelimit.patch \
+           file://httpd-2.4.4-export.patch \
+           file://httpd-2.4.1-selinux.patch \
+           file://apache-configure_perlbin.patch \
+           file://replace-lynx-to-curl-in-apachectl-script.patch \
+           file://apache-ssl-ltmain-rpath.patch \
+           file://httpd-2.4.3-fix-race-issue-of-dir-install.patch \
+           file://0001-configure-use-pkg-config-for-PCRE-detection.patch \
+           file://configure-allow-to-disable-selinux-support.patch \
+           file://init \
+           file://apache2-volatile.conf \
+           file://apache2.service \
+          "
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dbff5a2b542fa58854455bf1a0b94b83"
+SRC_URI[md5sum] = "3ff4f00ee051cf5d5304b47b1bc418b8"
+SRC_URI[sha256sum] = "0e76a375ed3dbac636f50ac39de966ece443751fe4d62392f9a360a19d94d0da"
+
+S = "${WORKDIR}/httpd-${PV}"
+
+inherit autotools update-rc.d pkgconfig systemd
+
+SYSTEMD_SERVICE_${PN} = "apache2.service"
+SYSTEMD_AUTO_ENABLE_${PN} = "disable"
+
+SSTATE_SCAN_FILES += "apxs config_vars.mk config.nice"
+
+CFLAGS_append = " -DPATH_MAX=4096"
+CFLAGS_prepend = "-I${STAGING_INCDIR}/openssl "
+EXTRA_OECONF = "--enable-ssl \
+    --with-ssl=${STAGING_LIBDIR}/.. \
+    --with-expat=${STAGING_LIBDIR}/.. \
+    --with-apr=${STAGING_BINDIR_CROSS}/apr-1-config \
+    --with-apr-util=${STAGING_BINDIR_CROSS}/apu-1-config \
+    --enable-info \
+    --enable-rewrite \
+    --with-dbm=sdbm \
+    --with-berkeley-db=no \
+    --localstatedir=/var/${BPN} \
+    --with-gdbm=no \
+    --with-ndbm=no \
+    --includedir=${includedir}/${BPN} \
+    --datadir=${datadir}/${BPN} \
+    --sysconfdir=${sysconfdir}/${BPN} \
+    --libexecdir=${libdir}/${BPN}/modules \
+    ap_cv_void_ptr_lt_long=no \
+    --enable-mpms-shared \
+    ac_cv_have_threadsafe_pollset=no"
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)}"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux,libselinux"
+PACKAGECONFIG[openldap] = "--enable-ldap --enable-authnz-ldap,--disable-ldap --disable-authnz-ldap,openldap"
+
+do_install_append() {
+    install -d ${D}/${sysconfdir}/init.d
+    cat ${WORKDIR}/init | \
+        sed -e 's,/usr/sbin/,${sbindir}/,g' \
+            -e 's,/usr/bin/,${bindir}/,g' \
+            -e 's,/usr/lib,${libdir}/,g' \
+            -e 's,/etc/,${sysconfdir}/,g' \
+            -e 's,/usr/,${prefix}/,g' > ${D}/${sysconfdir}/init.d/${BPN}
+    chmod 755 ${D}/${sysconfdir}/init.d/${BPN}
+    # remove the goofy original files...
+    rm -rf ${D}/${sysconfdir}/${BPN}/original
+    # Expat should be found in the staging area via DEPENDS...
+    rm -f ${D}/${libdir}/libexpat.*
+
+    install -d ${D}${sysconfdir}/${BPN}/conf.d
+    install -d ${D}${sysconfdir}/${BPN}/modules.d
+
+    # Ensure configuration file pulls in conf.d and modules.d
+    printf "\nIncludeOptional ${sysconfdir}/${BPN}/conf.d/*.conf" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
+    printf "\nIncludeOptional ${sysconfdir}/${BPN}/modules.d/*.conf\n\n" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
+    # match with that is in init script
+    printf "\nPidFile /run/httpd.pid" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
+    # Set 'ServerName' to fix error messages when restart apache service
+    sed -i 's/^#ServerName www.example.com/ServerName localhost/' ${D}/${sysconfdir}/${BPN}/httpd.conf
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then 
+        install -d ${D}${sysconfdir}/tmpfiles.d/
+        install -m 0644 ${WORKDIR}/apache2-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
+    fi
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/apache2.service ${D}${systemd_unitdir}/system
+    sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/apache2.service
+    sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' ${D}${systemd_unitdir}/system/apache2.service
+
+    chown -R root:root ${D}
+}
+
+do_install_append_class-target() {
+    sed -i -e 's,${STAGING_DIR_HOST},,g' \
+           -e 's,APU_INCLUDEDIR = .*,APU_INCLUDEDIR = ,g' \
+           -e 's,APU_CONFIG = .*,APU_CONFIG = ,g' ${D}${datadir}/apache2/build/config_vars.mk
+
+    sed -i -e 's,${STAGING_DIR_HOST},,g' \
+           -e 's,".*/configure","configure",g' ${D}${datadir}/apache2/build/config.nice
+}
+
+SYSROOT_PREPROCESS_FUNCS += "apache_sysroot_preprocess"
+
+apache_sysroot_preprocess () {
+    install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+    install -m 755 ${D}${bindir}/apxs ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+    install -d ${SYSROOT_DESTDIR}${sbindir}/
+    install -m 755 ${D}${sbindir}/apachectl ${SYSROOT_DESTDIR}${sbindir}/
+    sed -i 's!my $installbuilddir = .*!my $installbuilddir = "${STAGING_DIR_HOST}/${datadir}/${BPN}/build";!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/apxs
+    sed -i 's!my $libtool = .*!my $libtool = "${STAGING_BINDIR_CROSS}/${TARGET_PREFIX}libtool";!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/apxs
+
+    sed -i 's!^APR_CONFIG = .*!APR_CONFIG = ${STAGING_BINDIR_CROSS}/apr-1-config!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!^APU_CONFIG = .*!APU_CONFIG = ${STAGING_BINDIR_CROSS}/apu-1-config!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!^includedir = .*!includedir = ${STAGING_INCDIR}/apache2!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!^CFLAGS = -I[^ ]*!CFLAGS = -I${STAGING_INCDIR}/openssl!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!^EXTRA_LDFLAGS = .*!EXTRA_LDFLAGS = -L${STAGING_LIBDIR}!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!^EXTRA_INCLUDES = .*!EXTRA_INCLUDES = -I$(includedir) -I. -I${STAGING_INCDIR}!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!--sysroot=[^ ]*!--sysroot=${STAGING_DIR_HOST}!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+}
+
+#
+# implications - used by update-rc.d scripts
+#
+INITSCRIPT_NAME = "apache2"
+INITSCRIPT_PARAMS = "defaults 91 20"
+LEAD_SONAME = "libapr-1.so.0"
+
+PACKAGES = "${PN}-scripts ${PN}-doc ${PN}-dev ${PN}-dbg ${PN}"
+
+CONFFILES_${PN} = "${sysconfdir}/${BPN}/httpd.conf \
+                   ${sysconfdir}/${BPN}/magic \
+                   ${sysconfdir}/${BPN}/mime.types \
+                   ${sysconfdir}/init.d/${BPN} "
+
+# we override here rather than append so that .so links are
+# included in the runtime package rather than here (-dev)
+# and to get build, icons, error into the -dev package
+FILES_${PN}-dev = "${datadir}/${BPN}/build \
+                   ${datadir}/${BPN}/icons \
+                   ${datadir}/${BPN}/error \
+                   ${bindir}/apr-config ${bindir}/apu-config \
+                   ${libdir}/apr*.exp \
+                   ${includedir}/${BPN} \
+                   ${libdir}/*.la \
+                   ${libdir}/*.a \
+                   ${bindir}/apxs \
+                "
+
+
+# manual to manual
+FILES_${PN}-doc += " ${datadir}/${BPN}/manual"
+
+FILES_${PN}-scripts += "${bindir}/dbmmanage"
+
+#
+# override this too - here is the default, less datadir
+#
+FILES_${PN} =  "${bindir} ${sbindir} ${libexecdir} ${libdir}/lib*.so.* ${sysconfdir} \
+                ${sharedstatedir} ${localstatedir} /bin /sbin /lib/*.so* \
+                ${libdir}/${BPN}"
+
+# we want htdocs and cgi-bin to go with the binary
+FILES_${PN} += "${datadir}/${BPN}/htdocs ${datadir}/${BPN}/cgi-bin"
+
+#make sure the lone .so links also get wrapped in the base package
+FILES_${PN} += "${libdir}/lib*.so ${libdir}/pkgconfig/*"
+
+FILES_${PN}-dbg += "${libdir}/${BPN}/modules/.debug"
+
+RDEPENDS_${PN} += "openssl libgcc"
+RDEPENDS_${PN}-scripts += "perl ${PN}"
+RDEPENDS_${PN}-dev = "perl"
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/0001-configure-use-pkg-config-for-PCRE-detection.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/0001-configure-use-pkg-config-for-PCRE-detection.patch
new file mode 100644
index 0000000..63096db
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/0001-configure-use-pkg-config-for-PCRE-detection.patch
@@ -0,0 +1,52 @@
+From d8837756f2a48adcfe5d645c39cf163d96eac76c Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen.kooi@linaro.org>
+Date: Tue, 17 Jun 2014 09:10:57 +0200
+Subject: [PATCH] configure: use pkg-config for PCRE detection
+
+Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
+Upstream-Status: pending
+---
+ configure.in | 27 +++++----------------------
+ 1 file changed, 5 insertions(+), 22 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 864d7c7..da4138e 100644
+--- a/configure.in
++++ b/configure.in
+@@ -215,28 +215,11 @@ fi
+ AC_ARG_WITH(pcre,
+ APACHE_HELP_STRING(--with-pcre=PATH,Use external PCRE library))
+ 
+-AC_PATH_PROG(PCRE_CONFIG, pcre-config, false)
+-if test -d "$with_pcre" && test -x "$with_pcre/bin/pcre-config"; then
+-   PCRE_CONFIG=$with_pcre/bin/pcre-config
+-elif test -x "$with_pcre"; then
+-   PCRE_CONFIG=$with_pcre
+-fi
+-
+-if test "$PCRE_CONFIG" != "false"; then
+-  if $PCRE_CONFIG --version >/dev/null 2>&1; then :; else
+-    AC_MSG_ERROR([Did not find pcre-config script at $PCRE_CONFIG])
+-  fi
+-  case `$PCRE_CONFIG --version` in
+-  [[1-5].*])
+-    AC_MSG_ERROR([Need at least pcre version 6.0])
+-    ;;
+-  esac
+-  AC_MSG_NOTICE([Using external PCRE library from $PCRE_CONFIG])
+-  APR_ADDTO(PCRE_INCLUDES, [`$PCRE_CONFIG --cflags`])
+-  APR_ADDTO(PCRE_LIBS, [`$PCRE_CONFIG --libs`])
+-else
+-  AC_MSG_ERROR([pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/])
+-fi
++PKG_CHECK_MODULES([PCRE], [libpcre], [
++  AC_DEFINE([HAVE_PCRE], [1], [Define if you have PCRE library])
++], [
++  AC_MSG_ERROR([$PCRE_PKG_ERRORS])
++])
+ APACHE_SUBST(PCRE_LIBS)
+ 
+ AC_MSG_NOTICE([])
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/apache2-volatile.conf b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/apache2-volatile.conf
new file mode 100644
index 0000000..ff2c587
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/apache2-volatile.conf
@@ -0,0 +1,2 @@
+d  /var/run/apache2 0755 root root -
+d  /var/log/apache2 0755 root root -
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/apache2.service b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/apache2.service
new file mode 100644
index 0000000..9b5548c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/apache2.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=The Apache HTTP Server
+After=network.target remote-fs.target nss-lookup.target
+
+[Service]
+Type=simple
+Environment=LANG=C
+ExecStart=@SBINDIR@/httpd -DFOREGROUND -D SSL -D PHP5 -k start
+ExecStop=@BASE_BINDIR@/kill -WINCH ${MAINPID}
+KillSignal=SIGCONT
+PrivateTmp=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/configure-allow-to-disable-selinux-support.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/configure-allow-to-disable-selinux-support.patch
new file mode 100644
index 0000000..5b5c297
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/configure-allow-to-disable-selinux-support.patch
@@ -0,0 +1,40 @@
+From d23dd33e373340f6fddf11904839d1a118824401 Mon Sep 17 00:00:00 2001
+From: Wenzong Fan <wenzong.fan@windriver.com>
+Date: Mon, 1 Dec 2014 02:08:27 -0500
+Subject: [PATCH] apache2: allow to disable selinux support
+
+Upstream-Status: Pending
+
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+---
+ configure.in |   14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index df94ee5..8c3ab21 100644
+--- a/configure.in
++++ b/configure.in
+@@ -466,10 +466,16 @@ getloadavg
+ dnl confirm that a void pointer is large enough to store a long integer
+ APACHE_CHECK_VOID_PTR_LEN
+ 
+-AC_CHECK_LIB(selinux, is_selinux_enabled, [
+-   AC_DEFINE(HAVE_SELINUX, 1, [Defined if SELinux is supported])
+-   APR_ADDTO(AP_LIBS, [-lselinux])
+-])
++# SELinux support
++AC_ARG_ENABLE(selinux,APACHE_HELP_STRING(--enable-selinux,Enable SELinux support [default=auto]),
++    [],[enable_selinux=auto])
++
++if test x$enable_selinux != xno; then
++    AC_CHECK_LIB(selinux, is_selinux_enabled, [
++        AC_DEFINE(HAVE_SELINUX, 1, [Defined if SELinux is supported])
++        APR_ADDTO(AP_LIBS, [-lselinux])
++    ])
++fi
+ 
+ AC_CACHE_CHECK([for gettid()], ac_cv_gettid,
+ [AC_TRY_RUN(#define _GNU_SOURCE
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/httpd-2.4.3-fix-race-issue-of-dir-install.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/httpd-2.4.3-fix-race-issue-of-dir-install.patch
new file mode 100644
index 0000000..b948753
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/httpd-2.4.3-fix-race-issue-of-dir-install.patch
@@ -0,0 +1,21 @@
+Upstream-Status: Pending
+
+fix following race issue when do parallel install
+| mkdir: cannot create directory `/home/mypc/workspace/poky/build_p4080ds_release/tmp/work/ppce500mc-fsl_networking-linux/apache2/2.4.3-r1/image/usr/share/apache2': File exists
+...
+| mkdir: cannot create directory `/home/mypc/workspace/poky/build_p4080ds_release/tmp/work/ppce500mc-fsl_networking-linux/apache2/2.4.3-r1/image/usr/share/apache2': File exists
+| make[1]: *** [install-man] Error 1
+| make[1]: *** Waiting for unfinished jobs....
+
+-Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com>
+--- httpd-2.4.3/build/mkdir.sh.orig	2013-01-25 03:47:21.565255420 -0600
++++ httpd-2.4.3/build/mkdir.sh	2013-01-25 03:46:17.833051230 -0600
+@@ -39,7 +39,7 @@
+         esac
+         if test ! -d "$pathcomp"; then
+             echo "mkdir $pathcomp" 1>&2
+-            mkdir "$pathcomp" || errstatus=$?
++            mkdir -p "$pathcomp" || errstatus=$?
+         fi
+         pathcomp="$pathcomp/"
+     done
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/init b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/init
new file mode 100755
index 0000000..758d133
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/apache2/files/init
@@ -0,0 +1,230 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: httpd
+# Required-Start: $local_fs $remote_fs $network $named
+# Required-Stop: $local_fs $remote_fs $network
+# Should-Start: distcache
+# Short-Description: start and stop Apache HTTP Server
+# Description: The Apache HTTP Server is an extensible server
+#  implementing the current HTTP standards.
+### END INIT INFO
+
+ARGS="-D SSL -D PHP5 -k start"
+NAME=apache2
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+DAEMON=/usr/sbin/httpd
+SUEXEC=/usr/lib/apache/suexec
+PIDFILE=/run/httpd.pid
+CONF=/etc/apache2/httpd.conf
+APACHECTL=/usr/sbin/apachectl 
+
+trap "" 1
+export LANG=C
+export PATH
+
+test -f $DAEMON || exit 0
+test -f $APACHECTL || exit 0
+
+# ensure we don't leak environment vars into apachectl
+APACHECTL="env -i LANG=${LANG} PATH=${PATH} $APACHECTL"
+
+apache_conftest() {
+    if $($APACHECTL configtest > /dev/null 2>&1 ); then
+        return 0
+    else
+        return 1
+    fi
+}
+
+apache_wait_start() {
+    local STATUS=$1
+
+    if [ $STATUS != 0 ] ; then
+        return $STATUS
+    fi
+
+    local i=0
+    while : ; do
+            PIDTMP=$(pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE))
+            if [ -n "${PIDTMP:-}" ] && kill -0 "${PIDTMP:-}" 2> /dev/null; then
+                    return $STATUS
+            fi
+
+            if [ $i = "20" ] ; then
+                    return 2
+            fi
+
+            sleep 1
+            i=$(($i+1))
+    done
+}
+
+apache_wait_stop() {
+    local STATUS=$1
+
+    if [ $STATUS != 0 ] ; then
+        return $STATUS
+    fi
+
+    PIDTMP=$(pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE))
+    if [ -n "${PIDTMP:-}" ] && kill -0 "${PIDTMP:-}" 2> /dev/null; then
+            local i=0
+            while kill -0 "${PIDTMP:-}" 2> /dev/null;  do
+                    if [ $i = '60' ]; then
+                            STATUS=2
+                            break
+                    fi
+                    sleep 1
+                    i=$(($i+1))
+            done
+            return $STATUS
+    else
+        return $STATUS
+    fi
+}
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+    # Return
+    #   0 if daemon has been started
+    #   1 if daemon was already running
+    #   2 if daemon could not be started
+
+    if [ -e $PIDFILE ] && pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE) > /dev/null 2>&1 ; then
+            return 1
+    fi
+
+    if apache_conftest ; then
+            $APACHECTL start
+            apache_wait_start $?
+            return $?
+    else
+            return 2
+    fi
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+    # Return
+    #   0 if daemon has been stopped
+    #   1 if daemon was already stopped
+    #   2 if daemon could not be stopped
+    #   other if a failure occurred
+
+        local AP_RET=0
+
+        if pidof $DAEMON > /dev/null 2>&1 ; then
+                if [ -e $PIDFILE ] && pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE) > /dev/null 2>&1 ; then
+                        AP_RET=2
+                else
+                        AP_RET=1
+                fi
+        else
+            AP_RET=0
+        fi
+
+        # AP_RET is:
+        # 0 if Apache (whichever) is not running
+        # 1 if Apache (whichever) is running
+        # 2 if Apache from the PIDFILE is running
+
+        if [ $AP_RET = 0 ] ; then
+                return 1
+        fi
+
+        if [ $AP_RET = 2 ] && apache_conftest ; then
+                $APACHECTL stop
+                apache_wait_stop $?
+                return $?
+        else
+                if [ $AP_RET = 2 ]; then
+                        kill $(pidof $DAEMON | tr ' ' '\n' | grep -w $(cat $PIDFILE))
+                        apache_wait_stop $?
+                        return $?
+                elif [ $AP_RET = 1 ] ; then
+                        return 2
+                fi
+        fi
+
+}
+
+case "$1" in
+  start)
+    echo -n "Starting web server: $NAME"
+    do_start
+    case $? in
+        0|1)
+            echo .
+            exit 0
+            ;;
+        2)
+            echo failed
+            exit 1
+            ;;
+    esac
+    ;;
+
+  stop)
+    echo -n "Stopping web server: $NAME"
+    do_stop
+    case $? in
+        0|1)
+            echo .
+            exit 0
+            ;;
+        2)
+            echo failed
+            exit 1
+            ;;
+    esac
+    ;;
+
+  reload)
+    echo -n "Reloading $NAME configuration"
+    kill -HUP `cat $PIDFILE`
+    ;;
+
+  reload-modules)
+    echo -n "Reloading $NAME modules"
+    $APACHECTL restart
+    ;;
+
+  restart)
+    echo "Restarting web server: $NAME"
+    do_stop
+    case "$?" in
+        0|1)
+            do_start
+            exit $?
+            ;;
+        *)
+            # Failed to stop
+            exit 1
+            ;;
+    esac
+    ;;
+
+  force-reload)
+    $0 reload-modules
+    exit $?
+    ;;
+
+  *)
+    echo "Usage: /etc/init.d/$NAME {start|stop|reload|reload-modules|force-reload|restart}"
+    exit 1
+    ;;
+esac
+
+if [ $? = 0 ]; then
+	echo .
+	exit 0
+else
+	echo failed
+	exit 1
+fi
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/cherokee-install-configured.py-once.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/cherokee-install-configured.py-once.patch
new file mode 100644
index 0000000..3336f7d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/cherokee-install-configured.py-once.patch
@@ -0,0 +1,40 @@
+From 98a0f19df0a31d5649ad89d395fd1b8de5591827 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Thu, 3 Apr 2014 21:33:25 +0800
+Subject: [PATCH] admin/Makefile.am: only install configured.py once
+
+Both the two rules install-adminpyDATA and install-generatedDATA will
+install the configured.py to the same location, they can run parallel,
+and they use "install -m", which would might build failures:
+
+/usr/bin/install: setting permissions for `/path/to/configured.py': No such file or directory
+
+This is because the first install is setting the permission while the
+second install is removing the file an re-install.
+
+Only install the configured.py once will fix the problem, I think that
+there is no side effect since it installed the same file to the same
+location twice in the past.
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ admin/Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/admin/Makefile.am b/admin/Makefile.am
+index ce5937b..6f96934 100644
+--- a/admin/Makefile.am
++++ b/admin/Makefile.am
+@@ -73,7 +73,6 @@ SystemStatsWidgets.py \
+ Wizard.py \
+ XMLServerDigest.py \
+ config_version.py \
+-configured.py \
+ consts.py \
+ util.py \
+ popen.py \
+-- 
+1.8.2.1
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/cherokee.init b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/cherokee.init
new file mode 100644
index 0000000..93603b8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/cherokee.init
@@ -0,0 +1,32 @@
+#!/bin/sh
+DAEMON=/usr/sbin/cherokee
+CONFIG=/etc/cherokee/cherokee.conf
+PIDFILE=/var/run/cherokee.pid
+NAME="cherokee"
+DESC="Cherokee http server"
+
+test -r /etc/default/cherokee && . /etc/default/cherokee
+test -x "$DAEMON" || exit 0
+test ! -r "$CONFIG" && exit 0
+        
+case "$1" in
+  start)
+    echo "Starting $DESC: "
+    start-stop-daemon --oknodo -S -x $DAEMON -- -d -C $CONFIG
+    ;;
+
+  stop)
+    echo "Stopping $DESC:"
+    start-stop-daemon -K -p $PIDFILE
+    ;;
+
+  restart)
+    $0 stop >/dev/null 2>&1
+    $0 start
+    ;;
+
+  *)
+    echo "Usage: $0 {start|stop|restart}"
+    exit 0
+    ;;
+esac
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/cherokee.service b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/cherokee.service
new file mode 100644
index 0000000..a2d7031
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/cherokee.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Cherokee web server
+After=syslog.target
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/cherokee -d -C /etc/cherokee/cherokee.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee_1.2.98.bb b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee_1.2.98.bb
new file mode 100644
index 0000000..5287ea4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee_1.2.98.bb
@@ -0,0 +1,68 @@
+SUMMARY = "Cherokee Web Server fast and secure"
+SUMMARY_cget = "Small downloader based in the Cherokee client library"
+HOMEPAGE = "http://www.cherokee-project.com/"
+SECTION = "network"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+PR = "r9"
+
+DEPENDS = "libpcre openssl mysql5 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+SRC_URI = "http://www.cherokee-project.de/mirrors/cherokee/1.2/${PV}/cherokee-${PV}.tar.gz \
+           file://cherokee.init \
+           file://cherokee.service \
+           file://cherokee-install-configured.py-once.patch \
+"
+SRC_URI[md5sum] = "21b01e7d45c0e82ecc0c4257a9c27feb"
+SRC_URI[sha256sum] = "042b5687b1a3db3ca818167548ce5d32c35e227c6640732dcb622a6f4a078b7d"
+
+inherit autotools pkgconfig binconfig update-rc.d systemd
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[ffmpeg] = "--with-ffmpeg,--without-ffmpeg,libav"
+PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap"
+PACKAGECONFIG[geoip] = "--with-geoip,--without-geoip,geoip"
+
+EXTRA_OECONF = "--disable-static \
+                --disable-nls \
+               ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)} \
+               --with-wwwroot=${localstatedir}/www/cherokee \
+"
+
+do_install_append () {
+    install -m 0755 -d ${D}${sysconfdir}/init.d
+    install -m 755 ${WORKDIR}/cherokee.init ${D}${sysconfdir}/init.d/cherokee
+
+    # clean up .la files for plugins
+    rm -f ${D}${libdir}/cherokee/*.la
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/cherokee.service ${D}${systemd_unitdir}/system
+    rmdir "${D}${localstatedir}/run"
+    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}"
+}
+
+# Put -dev near the front so we can move the .la files into it with a wildcard
+PACKAGES =+ "libcherokee-server libcherokee-client libcherokee-base cget"
+
+FILES_cget = "${bindir}/cget"
+FILES_libcherokee-server = "${libdir}/libcherokee-server${SOLIBS}"
+FILES_libcherokee-client = "${libdir}/libcherokee-client${SOLIBS}"
+FILES_libcherokee-base = "${libdir}/libcherokee-base${SOLIBS}"
+
+# Pack the htdocs
+FILES_${PN} += "${localstatedir}/www/cherokee"
+
+CONFFILES_${PN} = " \
+                   ${sysconfdir}/cherokee/cherokee.conf \
+                   ${sysconfdir}/init.d/cherokee \
+"
+
+INITSCRIPT_NAME = "cherokee"
+INITSCRIPT_PARAMS = "defaults 91 91"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "cherokee.service"
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/files/hiawatha-init b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/files/hiawatha-init
new file mode 100644
index 0000000..47fc087
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/files/hiawatha-init
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:          hiawatha httpd httpd-cgi
+# Required-Start:    $syslog $network $remote_fs
+# Required-Stop:     $syslog $network $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Hiawatha webserver
+# Description:       Hiawatha, a secure and advanced webserver.
+### END INIT INFO
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=sed_sbin_path/hiawatha
+NAME=hiawatha
+DESC="Hiawatha Web Server"
+OPTS=""
+
+case "$1" in
+  start)
+	echo -n "Starting $DESC: "
+	start-stop-daemon --start -x "$DAEMON" -- $OPTS
+	echo "$NAME."
+	;;
+  stop)
+	echo -n "Stopping $DESC: "
+	start-stop-daemon --stop -x "$DAEMON"
+	echo "$NAME."
+	;;
+  restart|force-reload)
+	echo -n "Restarting $DESC: "
+	start-stop-daemon --stop -x "$DAEMON"
+	sleep 1
+	start-stop-daemon --start -x "$DAEMON" -- $OPTS
+	echo "$NAME."
+	;;
+  *)
+	N=/etc/init.d/$NAME
+	echo "Usage: $N {start|stop|restart|force-reload}" >&2
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/files/hiawatha.service b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/files/hiawatha.service
new file mode 100644
index 0000000..26cb8d0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/files/hiawatha.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Hiawatha Web Server
+After=network.target remote-fs.target nss-lookup.target
+
+[Service]
+Type=simple
+SyslogIdentifier=hiawatha
+ExecStartPre=/usr/sbin/hiawatha -k ; /usr/sbin/wigwam
+ExecStart= /usr/sbin/hiawatha -d
+TimeoutSec=10
+#(doesn't like this setting. Can't find files) PrivateTmp=true
+LimitNOFILE=infinity
+CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_CHOWN CAP_DAC_OVERRIDE CAP_FOWNER CAP_FSETID CAP_SETGID CAP_SETUID 
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/hiawatha_9.2.bb b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/hiawatha_9.2.bb
new file mode 100644
index 0000000..7062174
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/hiawatha_9.2.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Lightweight secure web server"
+HOMEPAGE = "http://www.hiawatha-webserver.org"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
+DEPENDS = "libxml2 libxslt"
+
+SECTION = "net"
+
+SRC_URI = "http://hiawatha-webserver.org/files/${BP}.tar.gz \
+           file://hiawatha-init \
+           file://hiawatha.service "
+
+SRC_URI[md5sum] = "a77f044634884c4cc5d21dab44e822a3"
+SRC_URI[sha256sum] = "5d9cdec51c618bb3efab747030e593d9bd49dfaf3236254c8e0cb60715716dbf"
+
+INITSCRIPT_NAME = "hiawatha"
+INITSCRIPT_PARAMS = "defaults 70"
+
+SYSTEMD_SERVICE_${PN} = "hiawatha.service"
+
+inherit cmake update-rc.d systemd
+
+EXTRA_OECMAKE = " -DENABLE_IPV6=OFF \
+                  -DENABLE_CACHE=OFF \
+                  -DENABLE_DEBUG=OFF \
+                  -DENABLE_SSL=OFF \
+                  -DENABLE_TOOLKIT=OFF \
+                  -DENABLE_CHROOT=OFF \
+                  -DENABLE_XSLT=ON \
+                  -DENABLE_TOMAHAWK=OFF \
+                  -DCMAKE_INSTALL_MANDIR=${mandir} \
+                  -DCMAKE_INSTALL_BINDIR=${bindir} \
+                  -DCMAKE_INSTALL_SBINDIR=${sbindir} \
+                  -DCMAKE_INSTALL_SYSCONFDIR=${sysconfdir} \
+                  -DCMAKE_INSTALL_LIBDIR=${libdir} \
+                  -DLOG_DIR=/var/log/hiawatha \
+                  -DPID_DIR=/var/run \
+                  -DWEBROOT_DIR=/var/www/hiawatha \
+                  -DWORK_DIR=/var/lib/hiawatha "
+
+do_install_append() {
+    # Copy over init script and sed in the correct sbin path
+    sed -i 's,sed_sbin_path,${sbindir},' ${WORKDIR}/hiawatha-init
+    mkdir -p ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/hiawatha-init ${D}${sysconfdir}/init.d/hiawatha
+
+    # configure php-fcgi to have a working configuration
+    # by default if php is installed
+    echo "Server = ${bindir}/php-cgi ; 2 ; 127.0.0.1:2005 ; nobody:nobody ; ${sysconfdir}/php/hiawatha-php5/php.ini" >> ${D}${sysconfdir}/hiawatha/php-fcgi.conf
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}/${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/hiawatha.service ${D}/${systemd_unitdir}/system
+    fi
+
+    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}"
+}
+
+CONFFILES_${PN} = " \
+    ${sysconfdir}/hiawatha/cgi-wrapper.conf \
+    ${sysconfdir}/hiawatha/hiawatha.conf \
+    ${sysconfdir}/hiawatha/index.xslt \
+    ${sysconfdir}/hiawatha/mimetype.conf \
+    ${sysconfdir}/hiawatha/php-fcgi.conf \
+"
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.init b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.init
new file mode 100644
index 0000000..40b2118
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.init
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/bin/monkey
+NAME=monkey
+DESC="Monkey HTTP Server"
+OPTS="--daemon"
+
+case "$1" in
+  start)
+	echo -n "Starting $DESC: "
+	start-stop-daemon --start -x "$DAEMON" -- $OPTS
+	echo "$NAME."
+	;;
+  stop)
+	echo -n "Stopping $DESC: "
+	start-stop-daemon --stop -x "$DAEMON"
+	echo "$NAME."
+	;;
+  restart|force-reload)
+	echo -n "Restarting $DESC: "
+	start-stop-daemon --stop -x "$DAEMON"
+	sleep 1
+	start-stop-daemon --start -x "$DAEMON" -- $OPTS
+	echo "$NAME."
+	;;
+  *)
+	N=/etc/init.d/$NAME
+	echo "Usage: $N {start|stop|restart|force-reload}" >&2
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.service b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.service
new file mode 100644
index 0000000..f9aa57f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/monkey.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Monkey HTTP Server
+After=network.target remote-fs.target
+
+[Service]
+Type=forking
+ExecStart=/usr/bin/monkey --daemon
+PIDFile=/var/run/monkey.pid.2001
+TimeoutSec=10
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/monkey/monkey_1.5.6.bb b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/monkey/monkey_1.5.6.bb
new file mode 100644
index 0000000..be8ed37
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/monkey/monkey_1.5.6.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Fast and Lightweight HTTP Server for Linux"
+HOMEPAGE = "http://monkey-project.com"
+BUGTRACKER = "https://github.com/monkey/monkey/issues"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SECTION = "net"
+
+SRC_URI = "http://monkey-project.com/releases/1.5/monkey-${PV}.tar.gz \
+           file://monkey.service \
+           file://monkey.init"
+
+SRC_URI[md5sum] = "9699e4c9ea6ce6b989907c252ae80254"
+SRC_URI[sha256sum] = "7c3d845306aa74ee6effd7ab6169d16ac4e6450e564954d0d0baa2d1e9be1a22"
+
+EXTRA_OECONF = "--plugdir=${libdir}/monkey/ \
+                --logdir=${localstatedir}/log/monkey/ \
+                --pidfile=${localstatedir}/run/monkey.pid \
+                --default-user=www-data \
+                --datadir=${localstatedir}/www/monkey/ \
+                --sysconfdir=${sysconfdir}/monkey/ \
+                --enable-plugins=* \
+                --disable-plugins=mbedtls \
+                --debug \
+                --malloc-libc"
+DISABLE_STATIC = ""
+
+inherit autotools-brokensep pkgconfig update-rc.d systemd
+
+INITSCRIPT_NAME = "monkey"
+INITSCRIPT_PARAMS = "defaults 70"
+
+SYSTEMD_SERVICE_${PN} = "monkey.service"
+
+FILES_${PN} += "${localstatedir}/www/monkey/"
+
+CONFFILES_${PN} = "${sysconfdir}/monkey/monkey.conf \
+                   ${sysconfdir}/monkey/sites/default \
+                   ${sysconfdir}/monkey/monkey.mime \
+                   ${sysconfdir}/monkey/plugins.load \
+                   ${sysconfdir}/monkey/plugins/proxy_reverse/proxy_reverse.conf \
+                   ${sysconfdir}/monkey/plugins/mandril/mandril.conf \
+                   ${sysconfdir}/monkey/plugins/fastcgi/fastcgi.conf \
+                   ${sysconfdir}/monkey/plugins/logger/logger.conf \
+                   ${sysconfdir}/monkey/plugins/cgi/cgi.conf \
+                   ${sysconfdir}/monkey/plugins/cheetah/cheetah.conf \
+                   ${sysconfdir}/monkey/plugins/dirlisting/dirhtml.conf \
+                   ${sysconfdir}/monkey/plugins/dirlisting/themes/guineo/header.theme \
+                   ${sysconfdir}/monkey/plugins/dirlisting/themes/guineo/footer.theme \
+                   ${sysconfdir}/monkey/plugins/dirlisting/themes/guineo/entry.theme \
+                   ${sysconfdir}/monkey/plugins/auth/README \
+                   ${sysconfdir}/monkey/plugins/auth/monkey.users \
+                   "
+
+do_install_append() {
+
+    mkdir -p ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/monkey.init ${D}${sysconfdir}/init.d/monkey
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/monkey.service ${D}/${systemd_unitdir}/system
+    fi
+}
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx-cross.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx-cross.patch
new file mode 100644
index 0000000..46792ba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx-cross.patch
@@ -0,0 +1,218 @@
+We do not have capability to run binaries when cross compiling
+
+Upstream-Status: Pending
+
+
+diff -uraN nginx-1.0.11.orig/auto/feature nginx-1.0.11/auto/feature
+--- nginx-1.0.11.orig/auto/feature	2011-05-11 06:50:19.000000000 -0500
++++ nginx-1.0.11/auto/feature	2011-12-27 13:56:42.323370040 -0600
+@@ -48,12 +48,20 @@
+ 
+ if [ -x $NGX_AUTOTEST ]; then
+ 
++    if [ ".$NGX_CROSS_COMPILE" = ".yes" ]; then
++        NGX_AUTOTEST_EXEC="true"
++	NGX_FOUND_MSG=" (not tested, cross compiling)"
++    else
++        NGX_AUTOTEST_EXEC="$NGX_AUTOTEST"
++	NGX_FOUND_MSG=""
++    fi
++
+     case "$ngx_feature_run" in
+ 
+         yes)
+             # /bin/sh is used to intercept "Killed" or "Abort trap" messages
+-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
+-                echo " found"
++            if /bin/sh -c $NGX_AUTOTEST_EXEC >> $NGX_AUTOCONF_ERR 2>&1; then
++                echo " found$NGX_FOUND_MSG"
+                 ngx_found=yes
+ 
+                 if test -n "$ngx_feature_name"; then
+@@ -67,17 +75,27 @@
+ 
+         value)
+             # /bin/sh is used to intercept "Killed" or "Abort trap" messages
+-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
+-                echo " found"
++            if /bin/sh -c $NGX_AUTOTEST_EXEC >> $NGX_AUTOCONF_ERR 2>&1; then
++                echo " found$NGX_FOUND_MSG"
+                 ngx_found=yes
+ 
+-                cat << END >> $NGX_AUTO_CONFIG_H
++                if [ ".$NGX_CROSS_COMPILE" = ".yes" ]; then
++                    cat << END >> $NGX_AUTO_CONFIG_H
+ 
+ #ifndef $ngx_feature_name
+-#define $ngx_feature_name  `$NGX_AUTOTEST`
++#define $ngx_feature_name  $(eval "echo \$NGX_WITH_${ngx_feature_name}")
+ #endif
+ 
+ END
++		else
++                    cat << END >> $NGX_AUTO_CONFIG_H
++
++#ifndef $ngx_feature_name
++#define $ngx_feature_name  `$NGX_AUTOTEST_EXEC`
++#endif
++
++END
++                fi
+             else
+                 echo " found but is not working"
+             fi
+@@ -85,7 +103,7 @@
+ 
+         bug)
+             # /bin/sh is used to intercept "Killed" or "Abort trap" messages
+-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
++            if /bin/sh -c $NGX_AUTOTEST_EXEC >> $NGX_AUTOCONF_ERR 2>&1; then
+                 echo " not found"
+ 
+             else
+diff -uraN nginx-1.0.11.orig/auto/options nginx-1.0.11/auto/options
+--- nginx-1.0.11.orig/auto/options	2011-12-14 07:34:16.000000000 -0600
++++ nginx-1.0.11/auto/options	2011-12-27 13:56:42.323370040 -0600
+@@ -289,6 +289,18 @@
+         --test-build-rtsig)              NGX_TEST_BUILD_RTSIG=YES   ;;
+         --test-build-solaris-sendfilev)  NGX_TEST_BUILD_SOLARIS_SENDFILEV=YES ;;
+ 
++        # cross compile support
++        --with-int=*)                    NGX_WITH_INT="$value"          ;;
++        --with-long=*)                   NGX_WITH_LONG="$value"         ;;
++        --with-long-long=*)              NGX_WITH_LONG_LONG="$value"    ;;
++        --with-ptr-size=*)               NGX_WITH_PTR_SIZE="$value"     ;;
++        --with-sig-atomic-t=*)           NGX_WITH_SIG_ATOMIC_T="$value" ;;
++        --with-size-t=*)                 NGX_WITH_SIZE_T="$value"       ;;
++        --with-off-t=*)                  NGX_WITH_OFF_T="$value"        ;;
++        --with-time-t=*)                 NGX_WITH_TIME_T="$value"       ;;
++        --with-sys-nerr=*)               NGX_WITH_NGX_SYS_NERR="$value" ;;
++        --with-endian=*)                 NGX_WITH_ENDIAN="$value"       ;;
++
+         *)
+             echo "$0: error: invalid option \"$option\""
+             exit 1
+@@ -434,6 +446,17 @@
+ 
+   --with-debug                       enable debug logging
+ 
++  --with-int=VALUE                   force int size
++  --with-long=VALUE                  force long size
++  --with-long-long=VALUE             force long long size
++  --with-ptr-size=VALUE              force pointer size
++  --with-sig-atomic-t=VALUE          force sig_atomic_t size
++  --with-size-t=VALUE                force size_t size
++  --with-off-t=VALUE                 force off_t size
++  --with-time-t=VALUE                force time_t size
++  --with-sys-nerr=VALUE              force sys_nerr value
++  --with-endian=VALUE                force system endianess
++
+ END
+ 
+     exit 1
+@@ -455,6 +478,8 @@
+ 
+ if [ ".$NGX_PLATFORM" = ".win32" ]; then
+     NGX_WINE=$WINE
++elif [ ! -z "$NGX_PLATFORM" ]; then
++    NGX_CROSS_COMPILE="yes"
+ fi
+ 
+ 
+diff -uraN nginx-1.0.11.orig/auto/types/sizeof nginx-1.0.11/auto/types/sizeof
+--- nginx-1.0.11.orig/auto/types/sizeof	2006-06-28 11:00:26.000000000 -0500
++++ nginx-1.0.11/auto/types/sizeof	2011-12-27 13:56:42.323370040 -0600
+@@ -12,9 +12,12 @@
+ 
+ END
+ 
+-ngx_size=
++ngx_size=$(eval "echo \$NGX_WITH_${ngx_param}")
+ 
+-cat << END > $NGX_AUTOTEST.c
++if [ ".$ngx_size" != "." ]; then
++    echo " $ngx_size bytes"
++else
++    cat << END > $NGX_AUTOTEST.c
+ 
+ #include <sys/types.h>
+ #include <sys/time.h>
+@@ -33,20 +36,20 @@
+ END
+ 
+ 
+-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
+-          -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
++    ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
++	      -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
+ 
+-eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
++    eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
+ 
+ 
+-if [ -x $NGX_AUTOTEST ]; then
+-    ngx_size=`$NGX_AUTOTEST`
+-    echo " $ngx_size bytes"
+-fi
++    if [ -x $NGX_AUTOTEST ]; then
++	ngx_size=`$NGX_AUTOTEST`
++	echo " $ngx_size bytes"
++    fi
+ 
+ 
+-rm -rf $NGX_AUTOTEST*
+-
++    rm -rf $NGX_AUTOTEST*
++fi
+ 
+ case $ngx_size in
+     4)
+diff -uraN nginx-1.0.11.orig/auto/unix nginx-1.0.11/auto/unix
+--- nginx-1.0.11.orig/auto/unix	2011-12-14 07:34:16.000000000 -0600
++++ nginx-1.0.11/auto/unix	2011-12-27 13:56:42.327370060 -0600
+@@ -393,13 +393,13 @@
+ 
+ # C types
+ 
+-ngx_type="int"; . auto/types/sizeof
++ngx_type="int"; ngx_param="INT"; . auto/types/sizeof
+ 
+-ngx_type="long"; . auto/types/sizeof
++ngx_type="long"; ngx_param="LONG"; . auto/types/sizeof
+ 
+-ngx_type="long long"; . auto/types/sizeof
++ngx_type="long long"; ngx_param="LONG_LONG"; . auto/types/sizeof
+ 
+-ngx_type="void *"; . auto/types/sizeof; ngx_ptr_size=$ngx_size
++ngx_type="void *"; ngx_param="PTR_SIZE"; . auto/types/sizeof; ngx_ptr_size=$ngx_size
+ ngx_param=NGX_PTR_SIZE; ngx_value=$ngx_size; . auto/types/value
+ 
+ 
+@@ -416,7 +416,7 @@
+ 
+ ngx_type="uint64_t"; ngx_types="u_int64_t"; . auto/types/typedef
+ 
+-ngx_type="sig_atomic_t"; ngx_types="int"; . auto/types/typedef
++ngx_type="sig_atomic_t"; ngx_param="SIG_ATOMIC_T"; ngx_types="int"; . auto/types/typedef
+ . auto/types/sizeof
+ ngx_param=NGX_SIG_ATOMIC_T_SIZE; ngx_value=$ngx_size; . auto/types/value
+ 
+@@ -432,15 +432,15 @@
+ 
+ . auto/endianess
+ 
+-ngx_type="size_t"; . auto/types/sizeof
++ngx_type="size_t"; ngx_param="SIZE_T"; . auto/types/sizeof
+ ngx_param=NGX_MAX_SIZE_T_VALUE; ngx_value=$ngx_max_value; . auto/types/value
+ ngx_param=NGX_SIZE_T_LEN; ngx_value=$ngx_max_len; . auto/types/value
+ 
+-ngx_type="off_t"; . auto/types/sizeof
++ngx_type="off_t"; ngx_param="OFF_T"; . auto/types/sizeof
+ ngx_param=NGX_MAX_OFF_T_VALUE; ngx_value=$ngx_max_value; . auto/types/value
+ ngx_param=NGX_OFF_T_LEN; ngx_value=$ngx_max_len; . auto/types/value
+ 
+-ngx_type="time_t"; . auto/types/sizeof
++ngx_type="time_t"; ngx_param="TIME_T"; . auto/types/sizeof
+ ngx_param=NGX_TIME_T_SIZE; ngx_value=$ngx_size; . auto/types/value
+ ngx_param=NGX_TIME_T_LEN; ngx_value=$ngx_max_len; . auto/types/value
+ 
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx-volatile.conf b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx-volatile.conf
new file mode 100644
index 0000000..93f3c66
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx-volatile.conf
@@ -0,0 +1,2 @@
+d www www-data 0755 /run/nginx none
+d root root 0755 /var/log/nginx none
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx.conf b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx.conf
new file mode 100644
index 0000000..fb7e4b6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx.conf
@@ -0,0 +1,118 @@
+
+user  www-data;
+worker_processes  1;
+
+error_log  /var/log/nginx/error.log;
+#error_log  logs/error.log  notice;
+#error_log  logs/error.log  info;
+
+pid        /run/nginx/nginx.pid;
+
+
+events {
+    worker_connections  1024;
+}
+
+
+http {
+    include       mime.types;
+    default_type  application/octet-stream;
+
+    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
+                      '$status $body_bytes_sent "$http_referer" '
+                      '"$http_user_agent" "$http_x_forwarded_for"';
+
+    access_log  /var/log/nginx/access.log  main;
+
+    sendfile        on;
+    #tcp_nopush     on;
+
+    #keepalive_timeout  0;
+    keepalive_timeout  65;
+
+    #gzip  on;
+
+    server {
+        listen       80;
+        server_name  localhost;
+
+        #charset koi8-r;
+
+        #access_log  logs/host.access.log  main;
+
+        location / {
+            root   /var/www/localhost/html;
+            index  index.html index.htm;
+        }
+
+        #error_page  404              /404.html;
+
+        # redirect server error pages to the static page /50x.html
+        #
+        error_page   500 502 503 504  /50x.html;
+        location = /50x.html {
+            root   /var/www/localhost/html;
+        }
+
+        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
+        #
+        #location ~ \.php$ {
+        #    proxy_pass   http://127.0.0.1;
+        #}
+
+        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
+        #
+        #location ~ \.php$ {
+        #    root           html;
+        #    fastcgi_pass   127.0.0.1:9000;
+        #    fastcgi_index  index.php;
+        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
+        #    include        fastcgi_params;
+        #}
+
+        # deny access to .htaccess files, if Apache's document root
+        # concurs with nginx's one
+        #
+        #location ~ /\.ht {
+        #    deny  all;
+        #}
+    }
+
+
+    # another virtual host using mix of IP-, name-, and port-based configuration
+    #
+    #server {
+    #    listen       8000;
+    #    listen       somename:8080;
+    #    server_name  somename  alias  another.alias;
+
+    #    location / {
+    #        root   html;
+    #        index  index.html index.htm;
+    #    }
+    #}
+
+
+    # HTTPS server
+    #
+    #server {
+    #    listen       443;
+    #    server_name  localhost;
+
+    #    ssl                  on;
+    #    ssl_certificate      cert.pem;
+    #    ssl_certificate_key  cert.key;
+
+    #    ssl_session_timeout  5m;
+
+    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
+    #    ssl_ciphers  HIGH:!aNULL:!MD5;
+    #    ssl_prefer_server_ciphers   on;
+
+    #    location / {
+    #        root   html;
+    #        index  index.html index.htm;
+    #    }
+    #}
+
+}
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx.init b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx.init
new file mode 100755
index 0000000..0f38b9c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx.init
@@ -0,0 +1,52 @@
+#! /bin/sh
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/nginx
+NAME=nginx
+DESC=nginx
+PID=/var/run/nginx/nginx.pid
+
+test -x $DAEMON || exit 0
+
+# Include nginx defaults if available
+if [ -f /etc/default/nginx ] ; then
+        . /etc/default/nginx
+fi
+
+set -e
+
+case "$1" in
+  start)
+        echo -n "Starting $DESC: "
+        start-stop-daemon --start --quiet --pidfile $PID \
+                --name $NAME --exec $DAEMON -- $DAEMON_OPTS
+        echo "$NAME."
+        ;;
+  stop)
+        echo -n "Stopping $DESC: "
+        start-stop-daemon -K --quiet --pidfile $PID \
+                --name $NAME
+        echo "$NAME."
+        ;;
+  restart|force-reload)
+        echo -n "Restarting $DESC: "
+        start-stop-daemon -K --quiet --pidfile $PID \
+                --name $NAME
+        sleep 1
+        start-stop-daemon --start --quiet --pidfile $PID \
+                --name $NAME --exec $DAEMON -- $DAEMON_OPTS
+        echo "$NAME."
+        ;;
+  reload)
+      echo -n "Reloading $DESC configuration: "
+      start-stop-daemon --stop --signal HUP --quiet --pidfile $PID \
+          --exec $DAEMON
+      echo "$NAME."
+      ;;
+  *)
+        N=/etc/init.d/$NAME
+        echo "Usage: $N {start|stop|restart|force-reload}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx.service b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx.service
new file mode 100644
index 0000000..9926a4b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/files/nginx.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Nginx Server
+After=network.target
+[Service]
+Type=forking
+PIDFile=@SYSCONFDIR@/nginx/run/nginx.pid
+ExecStartPre=@BASEBINDIR@/mkdir -p @LOCALSTATEDIR@/log/nginx
+ExecStart=@SYSCONFDIR@/init.d/nginx start
+ExecStop=@SYSCONFDIR@/init.d/nginx stop
+[Install]
+WantedBy=multi-user.target
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx-1.9.14/nginx-cross.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx-1.9.14/nginx-cross.patch
new file mode 100644
index 0000000..5e96644
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx-1.9.14/nginx-cross.patch
@@ -0,0 +1,211 @@
+We do not have capability to run binaries when cross compiling
+
+Upstream-Status: Pending
+
+
+diff -uraN nginx-1.0.11.orig/auto/feature nginx-1.0.11/auto/feature
+--- nginx-1.0.11.orig/auto/feature	2011-05-11 06:50:19.000000000 -0500
++++ nginx-1.0.11/auto/feature	2011-12-27 13:56:42.323370040 -0600
+@@ -49,12 +49,20 @@
+ 
+ if [ -x $NGX_AUTOTEST ]; then
+ 
++    if [ ".$NGX_CROSS_COMPILE" = ".yes" ]; then
++        NGX_AUTOTEST_EXEC="true"
++	NGX_FOUND_MSG=" (not tested, cross compiling)"
++    else
++        NGX_AUTOTEST_EXEC="$NGX_AUTOTEST"
++	NGX_FOUND_MSG=""
++    fi
++
+     case "$ngx_feature_run" in
+ 
+         yes)
+             # /bin/sh is used to intercept "Killed" or "Abort trap" messages
+-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
+-                echo " found"
++            if /bin/sh -c $NGX_AUTOTEST_EXEC >> $NGX_AUTOCONF_ERR 2>&1; then
++                echo " found$NGX_FOUND_MSG"
+                 ngx_found=yes
+ 
+                 if test -n "$ngx_feature_name"; then
+@@ -68,17 +75,27 @@
+ 
+         value)
+             # /bin/sh is used to intercept "Killed" or "Abort trap" messages
+-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
+-                echo " found"
++            if /bin/sh -c $NGX_AUTOTEST_EXEC >> $NGX_AUTOCONF_ERR 2>&1; then
++                echo " found$NGX_FOUND_MSG"
+                 ngx_found=yes
+ 
+-                cat << END >> $NGX_AUTO_CONFIG_H
++                if [ ".$NGX_CROSS_COMPILE" = ".yes" ]; then
++                    cat << END >> $NGX_AUTO_CONFIG_H
+ 
+ #ifndef $ngx_feature_name
+-#define $ngx_feature_name  `$NGX_AUTOTEST`
++#define $ngx_feature_name  $(eval "echo \$NGX_WITH_${ngx_feature_name}")
+ #endif
+ 
+ END
++		else
++                    cat << END >> $NGX_AUTO_CONFIG_H
++
++#ifndef $ngx_feature_name
++#define $ngx_feature_name  `$NGX_AUTOTEST_EXEC`
++#endif
++
++END
++                fi
+             else
+                 echo " found but is not working"
+             fi
+@@ -86,7 +105,7 @@
+ 
+         bug)
+             # /bin/sh is used to intercept "Killed" or "Abort trap" messages
+-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
++            if /bin/sh -c $NGX_AUTOTEST_EXEC >> $NGX_AUTOCONF_ERR 2>&1; then
+                 echo " not found"
+ 
+             else
+diff -uraN nginx-1.0.11.orig/auto/options nginx-1.0.11/auto/options
+--- nginx-1.0.11.orig/auto/options	2011-12-14 07:34:16.000000000 -0600
++++ nginx-1.0.11/auto/options	2011-12-27 13:56:42.323370040 -0600
+@@ -353,6 +353,18 @@
+         --test-build-epoll)              NGX_TEST_BUILD_EPOLL=YES   ;;
+         --test-build-solaris-sendfilev)  NGX_TEST_BUILD_SOLARIS_SENDFILEV=YES ;;
+ 
++        # cross compile support
++        --with-int=*)                    NGX_WITH_INT="$value"          ;;
++        --with-long=*)                   NGX_WITH_LONG="$value"         ;;
++        --with-long-long=*)              NGX_WITH_LONG_LONG="$value"    ;;
++        --with-ptr-size=*)               NGX_WITH_PTR_SIZE="$value"     ;;
++        --with-sig-atomic-t=*)           NGX_WITH_SIG_ATOMIC_T="$value" ;;
++        --with-size-t=*)                 NGX_WITH_SIZE_T="$value"       ;;
++        --with-off-t=*)                  NGX_WITH_OFF_T="$value"        ;;
++        --with-time-t=*)                 NGX_WITH_TIME_T="$value"       ;;
++        --with-sys-nerr=*)               NGX_WITH_NGX_SYS_NERR="$value" ;;
++        --with-endian=*)                 NGX_WITH_ENDIAN="$value"       ;;
++
+         *)
+             echo "$0: error: invalid option \"$option\""
+             exit 1
+@@ -533,6 +445,17 @@
+ 
+   --with-debug                       enable debug logging
+ 
++  --with-int=VALUE                   force int size
++  --with-long=VALUE                  force long size
++  --with-long-long=VALUE             force long long size
++  --with-ptr-size=VALUE              force pointer size
++  --with-sig-atomic-t=VALUE          force sig_atomic_t size
++  --with-size-t=VALUE                force size_t size
++  --with-off-t=VALUE                 force off_t size
++  --with-time-t=VALUE                force time_t size
++  --with-sys-nerr=VALUE              force sys_nerr value
++  --with-endian=VALUE                force system endianess
++
+ END
+ 
+     exit 1
+@@ -554,6 +577,8 @@
+ 
+ if [ ".$NGX_PLATFORM" = ".win32" ]; then
+     NGX_WINE=$WINE
++elif [ ! -z "$NGX_PLATFORM" ]; then
++    NGX_CROSS_COMPILE="yes"
+ fi
+ 
+ 
+diff -uraN nginx-1.0.11.orig/auto/types/sizeof nginx-1.0.11/auto/types/sizeof
+--- nginx-1.0.11.orig/auto/types/sizeof	2006-06-28 11:00:26.000000000 -0500
++++ nginx-1.0.11/auto/types/sizeof	2011-12-27 13:56:42.323370040 -0600
+@@ -12,9 +12,12 @@
+ 
+ END
+ 
+-ngx_size=
++ngx_size=$(eval "echo \$NGX_WITH_${ngx_param}")
+ 
+-cat << END > $NGX_AUTOTEST.c
++if [ ".$ngx_size" != "." ]; then
++    echo " $ngx_size bytes"
++else
++    cat << END > $NGX_AUTOTEST.c
+ 
+ #include <sys/types.h>
+ #include <sys/time.h>
+@@ -33,15 +36,16 @@
+ END
+ 
+ 
+-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
+-          -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
++    ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
++              -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
+ 
+-eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
++    eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
+ 
+ 
+-if [ -x $NGX_AUTOTEST ]; then
+-    ngx_size=`$NGX_AUTOTEST`
+-    echo " $ngx_size bytes"
++    if [ -x $NGX_AUTOTEST ]; then
++        ngx_size=`$NGX_AUTOTEST`
++        echo " $ngx_size bytes"
++    fi
+ fi
+ 
+ 
+diff -uraN nginx-1.0.11.orig/auto/unix nginx-1.0.11/auto/unix
+--- nginx-1.0.11.orig/auto/unix	2011-12-14 07:34:16.000000000 -0600
++++ nginx-1.0.11/auto/unix	2011-12-27 13:56:42.327370060 -0600
+@@ -393,13 +393,13 @@
+ 
+ # C types
+ 
+-ngx_type="int"; . auto/types/sizeof
++ngx_type="int"; ngx_param="INT"; . auto/types/sizeof
+ 
+-ngx_type="long"; . auto/types/sizeof
++ngx_type="long"; ngx_param="LONG"; . auto/types/sizeof
+ 
+-ngx_type="long long"; . auto/types/sizeof
++ngx_type="long long"; ngx_param="LONG_LONG"; . auto/types/sizeof
+ 
+-ngx_type="void *"; . auto/types/sizeof; ngx_ptr_size=$ngx_size
++ngx_type="void *"; ngx_param="PTR_SIZE"; . auto/types/sizeof; ngx_ptr_size=$ngx_size
+ ngx_param=NGX_PTR_SIZE; ngx_value=$ngx_size; . auto/types/value
+ 
+ 
+@@ -416,7 +416,7 @@
+ 
+ ngx_type="uint64_t"; ngx_types="u_int64_t"; . auto/types/typedef
+ 
+-ngx_type="sig_atomic_t"; ngx_types="int"; . auto/types/typedef
++ngx_type="sig_atomic_t"; ngx_param="SIG_ATOMIC_T"; ngx_types="int"; . auto/types/typedef
+ . auto/types/sizeof
+ ngx_param=NGX_SIG_ATOMIC_T_SIZE; ngx_value=$ngx_size; . auto/types/value
+ 
+@@ -432,15 +432,15 @@
+ 
+ . auto/endianess
+ 
+-ngx_type="size_t"; . auto/types/sizeof
++ngx_type="size_t"; ngx_param="SIZE_T"; . auto/types/sizeof
+ ngx_param=NGX_MAX_SIZE_T_VALUE; ngx_value=$ngx_max_value; . auto/types/value
+ ngx_param=NGX_SIZE_T_LEN; ngx_value=$ngx_max_len; . auto/types/value
+ 
+-ngx_type="off_t"; . auto/types/sizeof
++ngx_type="off_t"; ngx_param="OFF_T"; . auto/types/sizeof
+ ngx_param=NGX_MAX_OFF_T_VALUE; ngx_value=$ngx_max_value; . auto/types/value
+ ngx_param=NGX_OFF_T_LEN; ngx_value=$ngx_max_len; . auto/types/value
+ 
+-ngx_type="time_t"; . auto/types/sizeof
++ngx_type="time_t"; ngx_param="TIME_T"; . auto/types/sizeof
+ ngx_param=NGX_TIME_T_SIZE; ngx_value=$ngx_size; . auto/types/value
+ ngx_param=NGX_TIME_T_LEN; ngx_value=$ngx_max_len; . auto/types/value
+ 
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc
new file mode 100644
index 0000000..ebf926a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc
@@ -0,0 +1,137 @@
+SUMMARY = "HTTP and reverse proxy server"
+
+DESCRIPTION = "Nginx is a web server and a reverse proxy server for \
+HTTP, SMTP, POP3 and IMAP protocols, with a strong focus on high  \
+concurrency, performance and low memory usage."
+
+HOMEPAGE = "http://nginx.org/"
+LICENSE = "BSD-2-Clause"
+
+SECTION = "net"
+
+DEPENDS = "libpcre gzip openssl"
+
+SRC_URI = " \
+	http://nginx.org/download/nginx-${PV}.tar.gz \
+	file://nginx-cross.patch \
+	file://nginx.conf \
+	file://nginx.init \
+	file://nginx-volatile.conf \
+	file://nginx.service \
+"
+
+inherit update-rc.d useradd
+
+CFLAGS_append = " -fPIE -pie"
+CXXFLAGS_append = " -fPIE -pie"
+
+NGINX_WWWDIR ?= "${localstatedir}/www/localhost"
+NGINX_USER   ?= "www"
+
+EXTRA_OECONF = ""
+DISABLE_STATIC = ""
+
+do_configure () {
+	if [ "${SITEINFO_BITS}" = "64" ]; then
+		PTRSIZE=8
+	else
+		PTRSIZE=4
+	fi
+
+	echo $CFLAGS
+	echo $LDFLAGS
+
+	./configure \
+	--crossbuild=Linux:${TUNE_ARCH} \
+	--with-endian=${@base_conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
+	--with-int=4 \
+	--with-long=${PTRSIZE} \
+	--with-long-long=8 \
+	--with-ptr-size=${PTRSIZE} \
+	--with-sig-atomic-t=${PTRSIZE} \
+	--with-size-t=${PTRSIZE} \
+	--with-off-t=${PTRSIZE} \
+	--with-time-t=${PTRSIZE} \
+	--with-sys-nerr=132 \
+	--conf-path=${sysconfdir}/nginx/nginx.conf \
+	--http-log-path=${localstatedir}/log/nginx/access.log \
+	--error-log-path=${localstatedir}/log/nginx/error.log \
+	--pid-path=/run/nginx/nginx.pid \
+	--prefix=${prefix} \
+	--with-http_ssl_module \
+	--with-http_gzip_static_module \
+	${EXTRA_OECONF}
+}
+
+do_install () {
+	oe_runmake 'DESTDIR=${D}' install
+	rm -fr ${D}${localstatedir}/run ${D}/run
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+		install -d ${D}${sysconfdir}/tmpfiles.d
+		echo "d /run/${BPN} - - - -" \
+		     > ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
+	fi
+	install -d ${D}${sysconfdir}/${BPN}
+	ln -snf ${localstatedir}/run/${BPN} ${D}${sysconfdir}/${BPN}/run
+	install -d ${D}${NGINX_WWWDIR}
+	mv ${D}/usr/html ${D}${NGINX_WWWDIR}/
+	chown ${NGINX_USER}:www-data -R ${D}${NGINX_WWWDIR}
+
+	install -d ${D}${sysconfdir}/init.d
+	install -m 0755 ${WORKDIR}/nginx.init ${D}${sysconfdir}/init.d/nginx
+	sed -i 's,/usr/sbin/,${sbindir}/,g' ${D}${sysconfdir}/init.d/nginx
+	sed -i 's,/etc/,${sysconfdir}/,g'  ${D}${sysconfdir}/init.d/nginx
+
+	install -d ${D}${sysconfdir}/nginx
+	install -m 0644 ${WORKDIR}/nginx.conf ${D}${sysconfdir}/nginx/nginx.conf
+	sed -i 's,/var/,${localstatedir}/,g' ${D}${sysconfdir}/nginx/nginx.conf
+	install -d ${D}${sysconfdir}/nginx/sites-enabled
+
+	install -d ${D}${sysconfdir}/default/volatiles
+	install -m 0644 ${WORKDIR}/nginx-volatile.conf ${D}${sysconfdir}/default/volatiles/99_nginx
+	sed -i 's,/var/,${localstatedir}/,g' ${D}${sysconfdir}/default/volatiles/99_nginx
+
+        if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then
+            install -d ${D}${systemd_unitdir}/system
+            install -m 0644 ${WORKDIR}/nginx.service ${D}${systemd_unitdir}/system/
+            sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+                    -e 's,@LOCALSTATEDIR@,${localstatedir},g' \
+                    -e 's,@BASEBINDIR@,${base_bindir},g' \
+                    ${D}${systemd_unitdir}/system/nginx.service
+        fi
+}
+
+pkg_postinst_${PN} () {
+	if [ -z "$D" ]; then
+		if type systemd-tmpfiles >/dev/null; then
+			systemd-tmpfiles --create
+		elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+			${sysconfdir}/init.d/populate-volatile.sh update
+		fi
+	fi
+}
+
+FILES_${PN} += "${localstatedir}/ \
+                ${systemd_unitdir}/system/nginx.service \
+                "
+
+CONFFILES_${PN} = "${sysconfdir}/nginx/nginx.conf \
+		${sysconfdir}/nginx/fastcgi.conf\
+		${sysconfdir}/nginx/fastcgi_params \
+		${sysconfdir}/nginx/koi-utf \
+		${sysconfdir}/nginx/koi-win \
+		${sysconfdir}/nginx/mime.types \
+		${sysconfdir}/nginx/scgi_params \
+		${sysconfdir}/nginx/uwsgi_params \
+		${sysconfdir}/nginx/win-utf \
+"
+
+INITSCRIPT_NAME = "nginx"
+INITSCRIPT_PARAMS = "defaults 92 20"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = " \
+    --system --no-create-home \
+    --home ${NGINX_WWWDIR} \
+    --groups www-data \
+    --user-group ${NGINX_USER}"
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.8.1.bb b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.8.1.bb
new file mode 100644
index 0000000..089f547
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.8.1.bb
@@ -0,0 +1,6 @@
+require nginx.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3845852aedfa8d6d7765f55d06cc3ebd"
+
+SRC_URI[md5sum] = "2e91695074dbdfbf1bcec0ada9fda462"
+SRC_URI[sha256sum] = "8f4b3c630966c044ec72715754334d1fdf741caa1d5795fb4646c27d09f797b7"
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.9.14.bb b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.9.14.bb
new file mode 100644
index 0000000..585c52c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.9.14.bb
@@ -0,0 +1,12 @@
+require nginx.inc
+
+# 1.9.x is the current mainline branches containing all new features
+# 1.8.x branch is the current stable branch, the recommended default
+DEFAULT_PREFERENCE = "-1"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0bb58ed0dfd4f5dbece3b52aba79f023"
+
+SRC_URI[md5sum] = "a25818039f34b5d54b017d44c76321c4"
+SRC_URI[sha256sum] = "2b4893076d28e6b4384bba8c4fdebfca6de6f8f68ec48a1ca94b9b855ff457d2"
+
+DISABLE_STATIC = ""
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/0001-GNUmakefile-add-possibility-to-override-variables.patch b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/0001-GNUmakefile-add-possibility-to-override-variables.patch
new file mode 100644
index 0000000..7cf011b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/0001-GNUmakefile-add-possibility-to-override-variables.patch
@@ -0,0 +1,141 @@
+From 7fa0d31ec5c0be9dca84a03851b2d44f61527ec8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Eric=20B=C3=A9nard?= <eric@eukrea.com>
+Date: Sun, 4 Dec 2011 16:01:04 +0100
+Subject: [PATCH] GNUmakefile: add possibility to override variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+this is useful for cross compilation
+
+Signed-off-by: Eric Bénard <eric@eukrea.com>
+---
+Upstream-Status: Inappropriate [embedded specific]
+ src/libbsd/GNUmakefile |   10 +++++-----
+ src/libmy/GNUmakefile  |   26 +++++++++++++-------------
+ src/nhttpd/GNUmakefile |   12 ++++++------
+ src/tools/GNUmakefile  |    8 ++++----
+ 4 files changed, 28 insertions(+), 28 deletions(-)
+
+diff --git a/src/libbsd/GNUmakefile b/src/libbsd/GNUmakefile
+index e2d01a3..b034bc6 100644
+--- a/src/libbsd/GNUmakefile
++++ b/src/libbsd/GNUmakefile
+@@ -1,12 +1,12 @@
+-CCFLAGS = -O2 -pipe -Wall -Werror -Wstrict-prototypes -c
++CFLAGS := -O2 -pipe -Wall -Werror -Wstrict-prototypes -c
+ 
+ libbsd.a:	strlcpy.o strlcat.o
+-		ar -r libbsd.a strlcpy.o strlcat.o
+-		ranlib libbsd.a
++		$(AR) -r libbsd.a strlcpy.o strlcat.o
++		$(RANLIB) libbsd.a
+ 
+ strlcpy.o:	strlcpy.c
+-		cc ${CCFLAGS} strlcpy.c
++		$(CC) $(CFLAGS) strlcpy.c
+ strlcat.o:	strlcat.c
+-		cc ${CCFLAGS} strlcat.c
++		$(CC) $(CFLAGS) strlcat.c
+ clean:
+ 		rm -f libbsd.a *.o
+diff --git a/src/libmy/GNUmakefile b/src/libmy/GNUmakefile
+index ce90dd9..891ffea 100644
+--- a/src/libmy/GNUmakefile
++++ b/src/libmy/GNUmakefile
+@@ -1,30 +1,30 @@
+-CCFLAGS = -O2 -Wall -Werror -Wstrict-prototypes -c
++CFLAGS := -O2 -Wall -Werror -Wstrict-prototypes -c
+ 
+ libmy.a:	strcutl.o strcutw.o strcuts.o strcuti.o strcutf.o flog.o flogd.o fparse.o strlower.o strb64d.o
+-		ar -r libmy.a strcutl.o strcutw.o strcuts.o strcuti.o strcutf.o flog.o flogd.o fparse.o strlower.o strb64d.o
+-		ranlib libmy.a
++		$(AR) -r libmy.a strcutl.o strcutw.o strcuts.o strcuti.o strcutf.o flog.o flogd.o fparse.o strlower.o strb64d.o
++		$(RANLIB) libmy.a
+ 
+ strcutl.o:	strcutl.c
+-		cc ${CCFLAGS} strcutl.c
++		$(CC) $(CFLAGS) strcutl.c
+ strcutw.o:	strcutw.c
+-		cc ${CCFLAGS} strcutw.c
++		$(CC) $(CFLAGS) strcutw.c
+ strcuts.o:	strcuts.c
+-		cc ${CCFLAGS} strcuts.c
++		$(CC) $(CFLAGS) strcuts.c
+ strcuti.o:	strcuti.c
+-		cc ${CCFLAGS} strcuti.c
++		$(CC) $(CFLAGS) strcuti.c
+ strcutf.o:	strcutf.c
+-		cc ${CCFLAGS} strcutf.c
++		$(CC) $(CFLAGS) strcutf.c
+ strlower.o:	strlower.c
+-		cc ${CCFLAGS} strlower.c
++		$(CC) $(CFLAGS) strlower.c
+ strb64d.o:	strb64d.c
+-		cc ${CCFLAGS} strb64d.c
++		$(CC) $(CFLAGS) strb64d.c
+ 
+ flog.o:		flog.c
+-		cc ${CCFLAGS} flog.c
++		$(CC) $(CFLAGS) flog.c
+ flogd.o:	flogd.c
+-		cc ${CCFLAGS} flogd.c
++		$(CC) $(CFLAGS) flogd.c
+ fparse.o:	fparse.c
+-		cc ${CCFLAGS} fparse.c
++		$(CC) $(CFLAGS) fparse.c
+ 
+ clean:
+ 		rm -f libmy.a *.o
+diff --git a/src/nhttpd/GNUmakefile b/src/nhttpd/GNUmakefile
+index f6d12de..9524911 100644
+--- a/src/nhttpd/GNUmakefile
++++ b/src/nhttpd/GNUmakefile
+@@ -1,18 +1,18 @@
+-CCFLAGS = -O2 -pipe -Wall -Wstrict-prototypes -c
++CFLAGS := -O2 -pipe -Wall -Wstrict-prototypes -c
+ 
+ nhttpd:	main.o http.o sys.o
+-	cc -L../libmy -L../libbsd -o nhttpd main.o http.o sys.o -lmy -lbsd -lssl -lcrypt
+-	strip nhttpd
++	$(CC) -L../libmy -L../libbsd -o nhttpd main.o http.o sys.o -lmy -lbsd -lssl -lcrypt
++#	$(STRIP) nhttpd
+ 	nroff -Tascii -c -mandoc nhttpd.8 > nhttpd.cat8
+ 
+ main.o:	main.c
+-	cc ${CCFLAGS} main.c
++	$(CC) $(CFLAGS) main.c
+ 
+ http.o:	http.c
+-	cc ${CCFLAGS} http.c
++	$(CC) $(CFLAGS) http.c
+ 
+ sys.o:	sys.c
+-	cc ${CCFLAGS} sys.c
++	$(CC) $(CFLAGS) sys.c
+ 
+ clean:
+ 	rm -f nhttpd nhttpd.cat8 *.o
+diff --git a/src/tools/GNUmakefile b/src/tools/GNUmakefile
+index 15bea61..663ddb5 100644
+--- a/src/tools/GNUmakefile
++++ b/src/tools/GNUmakefile
+@@ -1,11 +1,11 @@
+-CCFLAGS = -O2 -pipe -Wall -Werror -Wstrict-prototypes -c
++CCFLAGS := -O2 -pipe -Wall -Werror -Wstrict-prototypes
+ 
+ crypt:		crypt.o
+-		cc -o crypt crypt.o -lcrypt
+-		strip crypt
++		$(CC) $(CFLAGS) -o crypt crypt.o -lcrypt
++#		$(STRIP) crypt
+ 
+ crypt.o:	crypt.c
+-		cc ${CCFLAGS} crypt.c
++		$(CC) $(CFLAGS) -c crypt.c
+ 
+ clean:
+ 		rm -f crypt *.o
+-- 
+1.7.6.4
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/nhttpd.conf b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/nhttpd.conf
new file mode 100644
index 0000000..6674bb6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/nhttpd.conf
@@ -0,0 +1,55 @@
+# MAIN [MANDATORY]
+
+servername		localhost
+#servername		www.nazgul.ch:8080
+serverlisten		*
+#serverlisten		81.221.21.250 127.0.0.1 ::1
+serveradmin		webmaster@localhost
+serverroot		/var/nostromo
+servermimes		/var/nostromo/conf/mimes
+docroot			/var/nostromo/htdocs
+docindex		index.html
+
+# LOGS [OPTIONAL]
+
+logpid			/var/run/nostromo/nhttpd.pid
+#logaccess		/var/log/nostromo/access_log
+
+# SETUID [RECOMMENDED]
+
+user			www-data
+
+# BASIC AUTHENTICATION [OPTIONAL]
+
+#htaccess		.htaccess
+#htpasswd		/var/nostromo/conf/.htpasswd
+#htpasswd		+bsdauth
+#htpasswd		+bsdauthnossl
+
+# SSL [OPTIONAL]
+
+#sslport		443
+#sslcert		/etc/ssl/server.crt
+#sslcertkey		/etc/ssl/server.key
+
+# CUSTOM RESPONSES [OPTIONAL]
+#
+# The custom responses are searched in the corresponding document root.
+
+#custom_401		custom_401.html
+#custom_403		custom_403.html
+#custom_404		custom_404.html
+
+# ALIASES [OPTIONAL]
+
+/icons			/var/nostromo/icons
+
+# VIRTUAL HOSTS [OPTIONAL]
+
+#www.rahel.ch		/var/nostromo/htdocs/www.rahel.ch
+#www.rahel.ch:8080	/var/nostromo/htdocs/www.rahel.ch
+
+# HOMEDIRS [OPTIONAL]
+
+#homedirs		/home
+#homedirs_public	public_www
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/nostromo b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/nostromo
new file mode 100644
index 0000000..8a28868
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/nostromo
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=nhttpd
+NAME=nhttpd
+DESC="Nostromo Web Server"
+OPTS="-c /etc/nhttpd.conf"
+
+case "$1" in
+  start)
+	echo -n "Starting $DESC: "
+	start-stop-daemon --start -x "$DAEMON" -- $OPTS
+	echo "$NAME."
+	;;
+  stop)
+	echo -n "Stopping $DESC: "
+	start-stop-daemon --stop -x "$DAEMON"
+	echo "$NAME."
+	;;
+  restart|force-reload)
+	echo -n "Restarting $DESC: "
+	start-stop-daemon --stop -x "$DAEMON"
+	sleep 1
+	start-stop-daemon --start -x "$DAEMON" -- $OPTS
+	echo "$NAME."
+	;;
+  *)
+	N=/etc/init.d/$NAME
+	echo "Usage: $N {start|stop|restart|force-reload}" >&2
+	exit 1
+	;;
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/tmpfiles.conf b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/tmpfiles.conf
new file mode 100644
index 0000000..b7a9f48
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/tmpfiles.conf
@@ -0,0 +1 @@
+d /run/nostromo - www-data www-data -
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/volatiles b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/volatiles
new file mode 100644
index 0000000..4092496
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/files/volatiles
@@ -0,0 +1,2 @@
+d www-data www-data 0775 /var/run/nostromo none
+d www-data www-data 0775 /var/log/nostromo none
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/nostromo_1.9.5.bb b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/nostromo_1.9.5.bb
new file mode 100644
index 0000000..562ecd0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/nostromo/nostromo_1.9.5.bb
@@ -0,0 +1,69 @@
+SUMMARY = "A simple, fast and secure HTTP server"
+HOMEPAGE = "http://www.nazgul.ch/dev_nostromo.html"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://src/nhttpd/main.c;beginline=2;endline=14;md5=e5ec3fa723b29b7d59d205afd8d36938"
+
+SRC_URI = "http://www.nazgul.ch/dev/${BPN}-${PV}.tar.gz \
+           file://0001-GNUmakefile-add-possibility-to-override-variables.patch \
+           file://nhttpd.conf \
+           file://volatiles \
+           file://tmpfiles.conf \
+           file://nostromo \
+"
+
+SRC_URI[md5sum] = "dc6cfd6b5aae04c370c7f818fa7bde55"
+SRC_URI[sha256sum] = "5f62578285e02449406b46cf06a7888fe3dc4a90bedf58cc18523bad62f6b914"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+DEPENDS = "openssl"
+
+inherit update-rc.d useradd
+
+INITSCRIPT_NAME = "nostromo"
+INITSCRIPT_PARAMS = "defaults 70"
+
+do_compile() {
+    oe_runmake
+}
+
+# we need user/group www-data to exist when we install
+#
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system -g www-data www-data"
+
+do_install() {
+    install -d ${D}/${sbindir}
+    install -m 0755 src/nhttpd/nhttpd ${D}/${sbindir}/nhttpd
+    install -m 0755 src/tools/crypt ${D}/${sbindir}/crypt
+    install -d ${D}/${mandir}/man8
+    install -m 0444 src/nhttpd/nhttpd.8 ${D}/${mandir}/man8/nhttpd.8
+    install -d ${D}${localstatedir}/nostromo/conf
+    install -d ${D}${localstatedir}/nostromo/htdocs/cgi-bin
+    install -d ${D}${localstatedir}/nostromo/icons
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0644 conf/mimes ${D}${localstatedir}/nostromo/conf/mimes
+    install -m 0644 ${WORKDIR}/nhttpd.conf ${D}${sysconfdir}
+    install -m 0755 ${WORKDIR}/nostromo ${D}${sysconfdir}/init.d
+    install -D -m 0644 ${WORKDIR}/volatiles ${D}${sysconfdir}/default/volatiles/nostromo
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -D -m 0644 ${WORKDIR}/tmpfiles.conf ${D}${sysconfdir}/tmpfiles.d/nostromo.conf
+    fi
+    install -m 0644 htdocs/index.html ${D}${localstatedir}/nostromo/htdocs/index.html
+    install -m 0644 htdocs/nostromo.gif ${D}${localstatedir}/nostromo/htdocs/nostromo.gif
+    install -m 0644 icons/dir.gif ${D}${localstatedir}/nostromo/icons/dir.gif
+    install -m 0644 icons/file.gif ${D}${localstatedir}/nostromo/icons/file.gif
+    chown -R www-data:www-data ${D}/${localstatedir}/nostromo
+}
+
+CONFFILES_${PN} += "/var/nostromo/conf/mimes ${sysconfdir}/nhttpd.conf"
+
+pkg_postinst_${PN} () {
+    if [ -z "$D" ]; then
+        if [ -e /sys/fs/cgroup/systemd ]; then
+            systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/nostromo.conf
+        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+            ${sysconfdir}/init.d/populate-volatile.sh update
+        fi
+    fi
+}
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd/init b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd/init
new file mode 100644
index 0000000..f5f7b01
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd/init
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:          thttpd
+# Required-Start:    $remote_fs $syslog
+# Required-Stop:     $remote_fs $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Small http server
+# Description:       thttpd is a simple, small, portable, fast, and secure HTTP server.
+### END INIT INFO
+
+
+thttpd=/usr/sbin/thttpd
+test -x "$thttpd" || exit 0
+
+
+case "$1" in
+  start)
+    echo -n "Starting thttpd"
+    start-stop-daemon --start --quiet --exec $thttpd -- -C @@CONFFILE
+    echo "."
+    ;;
+  stop)
+    echo -n "Stopping thttpd"
+    start-stop-daemon --stop --quiet --exec $thttpd
+    echo "."
+    ;;
+  reload|force-reload)
+    start-stop-daemon --stop --quiet --signal 1 --exec $thttpd
+    ;;
+  restart)
+    echo -n "Stopping thttpd"
+    start-stop-daemon --stop --quiet --exec $thttpd -- -C @@CONFFILE
+    echo "."
+    echo -n "Waiting for thttpd to die off"
+    for i in 1 2 3 ;
+    do
+        sleep 1
+        echo -n "."
+    done
+    echo ""
+    echo -n "Starting thttpd"
+    start-stop-daemon --start --quiet --exec $thttpd -- -C @@CONFFILE
+    echo "."
+    ;;
+  *)
+    echo "Usage: /etc/init.d/thttpd {start|stop|reload|restart|force-reload}"
+    exit 1
+esac
+
+exit 0
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd/thttpd.conf b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd/thttpd.conf
new file mode 100644
index 0000000..397984f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd/thttpd.conf
@@ -0,0 +1 @@
+dir=@@SRVDIR
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd/thttpd.service b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd/thttpd.service
new file mode 100644
index 0000000..f109500
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd/thttpd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Tiny/Turbo/Throttling Web Server
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/thttpd -C @@CONFFILE -c cgi-bin/* -i /var/run/thttpd.pid
+PIDFile=/var/run/thttpd.pid
+
+[Install]
+WantedBy=multi-user.target
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd_2.26.4.bb b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd_2.26.4.bb
new file mode 100644
index 0000000..7034921
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-httpd/sthttpd/sthttpd_2.26.4.bb
@@ -0,0 +1,45 @@
+SUMMARY = "A simple, small, portable, fast, and secure HTTP server"
+DESCRIPTION = "A simple, small, portable, fast, and secure HTTP server (supported fork of thttpd)."
+HOMEPAGE = "http://opensource.dyc.edu/sthttpd"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://src/thttpd.c;beginline=1;endline=26;md5=0c5762c2c34dcbe9eb18815516502872"
+
+SRC_URI = "http://opensource.dyc.edu/pub/sthttpd/sthttpd-${PV}.tar.gz \
+           file://thttpd.service \
+           file://thttpd.conf \
+           file://init"
+
+SRC_URI[md5sum] = "e645a85a97d3cb883011a35bc2211815"
+SRC_URI[sha256sum] = "78e87979140cbda123c81b4051552242dbbffb5dec1a17e5f95ec4826b1eaddb"
+
+S = "${WORKDIR}/sthttpd-${PV}"
+
+inherit autotools update-rc.d systemd
+
+SRV_DIR ?= "${servicedir}/www"
+
+EXTRA_OEMAKE += "'WEBDIR=${SRV_DIR}'"
+
+do_install_append () {
+    install -d ${D}${sysconfdir}/init.d
+    install -c -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/thttpd
+    install -c -m 755 ${WORKDIR}/thttpd.conf ${D}${sysconfdir}
+    sed -i -e 's,@@CONFFILE,${sysconfdir}/thttpd.conf,g' ${D}${sysconfdir}/init.d/thttpd
+    sed -i -e 's,@@SRVDIR,${SRV_DIR},g' ${D}${sysconfdir}/thttpd.conf
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/thttpd
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/thttpd.service ${D}${systemd_unitdir}/system
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${systemd_unitdir}/system/thttpd.service
+    sed -i 's!/var/!${localstatedir}/!g' ${D}${systemd_unitdir}/system/thttpd.service
+    sed -i -e 's,@@CONFFILE,${sysconfdir}/thttpd.conf,g' ${D}${systemd_unitdir}/system/thttpd.service
+}
+
+INITSCRIPT_NAME = "thttpd"
+INITSCRIPT_PARAMS = "defaults"
+
+SYSTEMD_SERVICE_${PN} = "thttpd.service"
+
+FILES_${PN} += "${SRV_DIR}"
+FILES_${PN}-dbg += "${SRV_DIR}/cgi-bin/.debug"
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin/Port-content-spoofing-fix-CVE-2015-7873.patch b/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin/Port-content-spoofing-fix-CVE-2015-7873.patch
new file mode 100644
index 0000000..1e6bcbd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin/Port-content-spoofing-fix-CVE-2015-7873.patch
@@ -0,0 +1,48 @@
+From ae7eae1cc88cbdf2d27a6f10f097ef731823689e Mon Sep 17 00:00:00 2001
+From: Wenzong Fan <wenzong.fan@windriver.com>
+Date: Sat, 14 Nov 2015 02:01:54 -0500
+Subject: [PATCH] Port content spoofing fix
+
+Backport upstream commit for fixing CVE-2015-7873:
+  https://github.com/phpmyadmin/phpmyadmin/commit/cd097656758f981f80fb9029c7d6b4294582b706
+
+Upstream-Status: Backport
+
+Signed-off-by: Marc Delisle <marc@infomarc.info>
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+---
+ ChangeLog | 4 ++++
+ url.php   | 3 ++-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 4cb6708..96936c8 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -107,6 +107,10 @@ phpMyAdmin - ChangeLog
+ - issue #11448 Clarify doc about the MemoryLimit directive
+ - issue #11489 Cannot copy a database under certain conditions
+ 
++4.4.15.1 (2015-10-23)
++- issue #11464 phpMyAdmin suggests upgrading to newer version not usable on that system
++- issue [security] Content spoofing on url.php
++
+ 4.4.15.0 (not yet released)
+ - issue #11411 Undefined "replace" function on numeric scalar
+ - issue #11421 Stored-proc / routine - broken parameter parsing
+diff --git a/url.php b/url.php
+index eec78a5..9c4c884 100644
+--- a/url.php
++++ b/url.php
+@@ -32,6 +32,7 @@ if (! PMA_isValid($_REQUEST['url'])
+             }
+         </script>";
+     // Display redirecting msg on screen.
+-    printf(__('Taking you to %s.'), htmlspecialchars($_REQUEST['url']));
++    // Do not display the value of $_REQUEST['url'] to avoid showing injected content
++    echo __('Taking you to the target site.');
+ }
+ die();
+-- 
+1.9.1
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin/apache.conf b/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin/apache.conf
new file mode 100644
index 0000000..94cbd86
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin/apache.conf
@@ -0,0 +1,42 @@
+# phpMyAdmin default Apache configuration
+
+Alias /phpmyadmin /usr/share/phpmyadmin
+
+<Directory /usr/share/phpmyadmin>
+	Options FollowSymLinks
+	DirectoryIndex index.php
+	Require all granted
+
+	<IfModule mod_php5.c>
+		AddType application/x-httpd-php .php
+
+		php_flag magic_quotes_gpc Off
+		php_flag track_vars On
+		php_flag register_globals Off
+		php_admin_flag allow_url_fopen Off
+		php_value include_path .
+		php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
+		php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
+	</IfModule>
+</Directory>
+
+# Authorize for setup
+<Directory /usr/share/phpmyadmin/setup>
+    <IfModule mod_authn_file.c>
+    AuthType Basic
+    AuthName "phpMyAdmin Setup"
+    AuthUserFile /etc/phpmyadmin/htpasswd.setup
+    </IfModule>
+    Require valid-user
+</Directory>
+
+# Disallow web access to directories that don't need it
+<Directory /usr/share/phpmyadmin/libraries>
+    Order Deny,Allow
+    Deny from All
+</Directory>
+<Directory /usr/share/phpmyadmin/setup/lib>
+    Order Deny,Allow
+    Deny from All
+</Directory>
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin/phpmyadmin-CVE-2015-8669.patch b/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin/phpmyadmin-CVE-2015-8669.patch
new file mode 100644
index 0000000..65fff64
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin/phpmyadmin-CVE-2015-8669.patch
@@ -0,0 +1,18 @@
+[Security] Path disclosure, see PMASA-2015-6
+
+Upstream-Status: Bacport
+
+Signed-off-by: Marc Delisle <marc@infomarc.info>
+
+diff -Nur phpMyAdmin-4.5.0.2-all-languages.orig/libraries/config/messages.inc.php phpMyAdmin-4.5.0.2-all-languages/libraries/config/messages.inc.php
+--- phpMyAdmin-4.5.0.2-all-languages.orig/libraries/config/messages.inc.php	2016-01-20 15:11:15.410106888 +0800
++++ phpMyAdmin-4.5.0.2-all-languages/libraries/config/messages.inc.php	2016-01-20 15:14:05.758108076 +0800
+@@ -11,7 +11,7 @@
+  */
+ 
+ if (!function_exists('__')) {
+-    PMA_fatalError('Bad invocation!');
++    exit();
+ }
+ 
+ $strConfigAllowArbitraryServer_desc = __(
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_4.5.0.2.bb b/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_4.5.0.2.bb
new file mode 100644
index 0000000..ac32185
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_4.5.0.2.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Web-based MySQL administration interface"
+HOMEPAGE = "http://www.phpmyadmin.net"
+# Main code is GPLv2, libraries/tcpdf is under LGPLv3, js/jquery is under MIT
+LICENSE = "GPLv2 & LGPLv3 & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://libraries/tcpdf/LICENSE.TXT;md5=5c87b66a5358ebcc495b03e0afcd342c"
+
+SRC_URI = "https://files.phpmyadmin.net/phpMyAdmin/4.5.0.2/phpMyAdmin-4.5.0.2-all-languages.tar.xz \
+           file://Port-content-spoofing-fix-CVE-2015-7873.patch \
+           file://apache.conf \
+           file://phpmyadmin-CVE-2015-8669.patch \
+"
+
+SRC_URI[md5sum] = "2d08d2fcc8f70f88a11a14723e3ca275"
+SRC_URI[sha256sum] = "d2e90ea486d90b4ebe5eb02d7ad349ad2916c12a8981f98553395ef78d22a8ec"
+
+S = "${WORKDIR}/phpMyAdmin-${PV}-all-languages"
+
+inherit allarch
+
+do_install() {
+    install -d ${D}${datadir}/${BPN}
+    cp -R --no-dereference --preserve=mode,links -v * ${D}${datadir}/${BPN}
+    chown -R root:root ${D}${datadir}/${BPN}
+    # Don't install patches to target
+    rm -rf ${D}${datadir}/${BPN}/patches
+
+    install -d ${D}${sysconfdir}/apache2/conf.d
+    install -m 0644 ${WORKDIR}/apache.conf ${D}${sysconfdir}/apache2/conf.d/phpmyadmin.conf
+
+    # Remove a few scripts that explicitly require bash (!)
+    rm -f ${D}${datadir}/phpmyadmin/libraries/transformations/*.sh
+}
+
+FILES_${PN} = "${datadir}/${BPN} \
+               ${sysconfdir}/apache2/conf.d"
+
+RDEPENDS_${PN} += "bash"
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-php/xdebug/xdebug_2.2.6.bb b/import-layers/meta-openembedded/meta-webserver/recipes-php/xdebug/xdebug_2.2.6.bb
new file mode 100644
index 0000000..1ecac88
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-php/xdebug/xdebug_2.2.6.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Debugging and profiling extension for PHP"
+LICENSE = "Xdebug"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=34df3a274aa12b795417c65634c07f16"
+
+DEPENDS = "php"
+
+SRC_URI = "http://xdebug.org/files/xdebug-${PV}.tgz"
+
+SRC_URI[md5sum] = "f216356861e27284580d0208060ea7fa"
+SRC_URI[sha256sum] = "6dd1cba0605e75009331aa3625a19ef49ade5a75aa9fe2ff8a818108d2cce84e"
+
+inherit autotools
+
+EXTRA_OECONF += "--enable-xdebug -with-php-config=${STAGING_BINDIR_CROSS}/php-config"
+
+do_configure() {
+    cd ${S}
+    ${STAGING_BINDIR_CROSS}/phpize
+    cd ${B}
+
+    # Running autoreconf as autotools_do_configure would do here
+    # breaks the libtool configuration resulting in a failure later
+    # in do_compile. It's possible this may be fixable, however the
+    # easiest course of action for the moment is to avoid doing that.
+    oe_runconf
+}
+
+do_install() {
+    oe_runmake install INSTALL_ROOT=${D}
+}
+
+FILES_${PN} += "${libdir}/php5/extensions/*/*.so"
+FILES_${PN}-dbg += "${libdir}/php5/extensions/*/.debug"
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-support/fcgi/fcgi/Fix_EOF_not_declared_issue.patch b/import-layers/meta-openembedded/meta-webserver/recipes-support/fcgi/fcgi/Fix_EOF_not_declared_issue.patch
new file mode 100644
index 0000000..51ddeaa
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-support/fcgi/fcgi/Fix_EOF_not_declared_issue.patch
@@ -0,0 +1,17 @@
+Upstream-Status: Pending
+
+Fix EOF not declared issue, following is the error log.
+fcgio.cpp:70:72: error: 'EOF' was not declared in this scope
+              if (FCGX_PutStr(pbase(), plen, this->fcgx) != plen) return EOF;
+
+Signed-off-by: Yang Haibo <b40869@freescale.com>
+--- fcgi-ori/libfcgi/fcgio.cpp 2014-07-28 18:01:00.000000000 +0800
++++ fcgi-2.4.0/libfcgi/fcgio.cpp       2014-07-28 18:01:22.000000000 +0800
+@@ -22,6 +22,7 @@
+ #define DLLAPI  __declspec(dllexport)
+ #endif
+
++#include <stdio.h>
+ #include <limits.h>
+ #include "fcgio.h"
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-support/fcgi/fcgi/add_foreign_to_AM_INIT_AUTOMAKE.patch b/import-layers/meta-openembedded/meta-webserver/recipes-support/fcgi/fcgi/add_foreign_to_AM_INIT_AUTOMAKE.patch
new file mode 100644
index 0000000..eca694a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-support/fcgi/fcgi/add_foreign_to_AM_INIT_AUTOMAKE.patch
@@ -0,0 +1,18 @@
+Upstream-Status: Pending
+
+use automake options "foreign" to set the strictness as appropriate
+
+Signed-off-by: Yang Haibo <b40869@freescale.com>
+--- fcgi-ori/configure.in	2014-08-05 14:58:35.000000000 +0800
++++ fcgi-2.4.0/configure.in	2014-08-05 14:59:08.000000000 +0800
+@@ -4,8 +4,8 @@
+ dnl     generate the file "configure", which is run during the build
+ dnl     to configure the system for the local environment.
+ 
+-AC_INIT
+-AM_INIT_AUTOMAKE(fcgi, 2.4.0)
++AC_INIT([fcgi], [2.4.0])
++AM_INIT_AUTOMAKE([foreign])
+ 
+ AM_CONFIG_HEADER(fcgi_config.h)
+ 
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-support/fcgi/fcgi_2.4.0.bb b/import-layers/meta-openembedded/meta-webserver/recipes-support/fcgi/fcgi_2.4.0.bb
new file mode 100644
index 0000000..48c5944
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-support/fcgi/fcgi_2.4.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "FastCGI is a protocol for interfacing interactive programs with a web server."
+HOMEPAGE = "http://www.fastcgi.com"
+LICENSE = "OML"
+LIC_FILES_CHKSUM = "file://LICENSE.TERMS;md5=e3aacac3a647af6e7e31f181cda0a06a"
+
+SRC_URI = "http://fossies.org/linux/www/old/${BP}.tar.gz \
+           file://Fix_EOF_not_declared_issue.patch \
+           file://add_foreign_to_AM_INIT_AUTOMAKE.patch \
+"
+SRC_URI[md5sum] = "d15060a813b91383a9f3c66faf84867e"
+SRC_URI[sha256sum] = "66fc45c6b36a21bf2fbbb68e90f780cc21a9da1fffbae75e76d2b4402d3f05b9"
+
+inherit autotools
+
+PARALLEL_MAKE = ""
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-support/spawn-fcgi/spawn-fcgi-1.6.4/fix_configure_ipv6_test.patch b/import-layers/meta-openembedded/meta-webserver/recipes-support/spawn-fcgi/spawn-fcgi-1.6.4/fix_configure_ipv6_test.patch
new file mode 100644
index 0000000..9409dd2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-support/spawn-fcgi/spawn-fcgi-1.6.4/fix_configure_ipv6_test.patch
@@ -0,0 +1,35 @@
+Testing for IPv6 support got broken by configure.ac changes in 1.6.4
+As a temp workaround, revert back to the 1.6.3 version.
+
+Upstream-Status: Pending
+
+--- spawn-fcgi-1.6.4/configure.ac
++++ spawn-fcgi-1.6.3/configure.ac
+@@ -66,8 +47,8 @@
+ # Check for IPv6 support
+ 
+ AC_ARG_ENABLE(ipv6,
+-  AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
+-  [case "${enableval}" in
++ AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
++ [case "${enableval}" in
+    yes) ipv6=true ;;
+     no) ipv6=false ;;
+      *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
+@@ -75,13 +56,10 @@
+ 
+ if test x$ipv6 = xtrue; then
+   AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
+-    [AC_TRY_LINK([[
+-#include <sys/types.h>
++  [AC_TRY_LINK([ #include <sys/types.h>
+ #include <sys/socket.h>
+-#include <netinet/in.h>
+-    ]], [[
+-struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;
+-    ]], [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
++#include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ],
++  [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
+ 
+   if test "$ac_cv_ipv6_support" = yes; then
+     AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-support/spawn-fcgi/spawn-fcgi_1.6.4.bb b/import-layers/meta-openembedded/meta-webserver/recipes-support/spawn-fcgi/spawn-fcgi_1.6.4.bb
new file mode 100644
index 0000000..99e58bd
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-support/spawn-fcgi/spawn-fcgi_1.6.4.bb
@@ -0,0 +1,16 @@
+SUMMARRY = "spawn-fcgi is used to spawn FastCGI applications"
+HOMEPAGE = "http://redmine.lighttpd.net/projects/spawn-fcgi"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e4dac5c6ab169aa212feb5028853a579"
+
+SRC_URI = "http://download.lighttpd.net/spawn-fcgi/releases-1.6.x/spawn-fcgi-${PV}.tar.gz \
+           file://fix_configure_ipv6_test.patch"
+
+SRC_URI[md5sum] = "e970de4efe8045c01dd76280f39901aa"
+SRC_URI[sha256sum] = "ab327462cb99894a3699f874425a421d934f957cb24221f00bb888108d9dd09e"
+
+inherit autotools
+
+PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "ipv6", "ipv6", "", d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/disable-version-check.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/disable-version-check.patch
new file mode 100644
index 0000000..a9ee405
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/disable-version-check.patch
@@ -0,0 +1,45 @@
+Disable OS version check in status screen
+
+The code is not able to accurately detect the correct distro/version at
+the moment.
+
+Upstream-status: Inappropriate
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+diff --git a/webmin/webmin-lib.pl b/webmin/webmin-lib.pl
+index 57a37f7..838b944 100755
+--- a/webmin/webmin-lib.pl
++++ b/webmin/webmin-lib.pl
+@@ -1059,18 +1059,19 @@ my %miniserv;
+ &load_theme_library();	# So that UI functions work
+ 
+ # Need OS upgrade
+-my %realos = &detect_operating_system(undef, 1);
+-if (($realos{'os_version'} ne $gconfig{'os_version'} ||
+-     $realos{'os_type'} ne $gconfig{'os_type'}) &&
+-    $realos{'os_version'} && $realos{'os_type'} &&
+-    &foreign_available("webmin")) {
+-	push(@notifs, 
+-		&ui_form_start("$gconfig{'webprefix'}/webmin/fix_os.cgi").
+-		&text('os_incorrect', $realos{'real_os_type'},
+-				    $realos{'real_os_version'})."<p>\n".
+-		&ui_form_end([ [ undef, $text{'os_fix'} ] ])
+-		);
+-	}
++# Disabled for now as os-chooser.pl does not work on our system
++#my %realos = &detect_operating_system(undef, 1);
++#if (($realos{'os_version'} ne $gconfig{'os_version'} ||
++#     $realos{'os_type'} ne $gconfig{'os_type'}) &&
++#    $realos{'os_version'} && $realos{'os_type'} &&
++#    &foreign_available("webmin")) {
++#	push(@notifs, 
++#		&ui_form_start("$gconfig{'webprefix'}/webmin/fix_os.cgi").
++#		&text('os_incorrect', $realos{'real_os_type'},
++#				    $realos{'real_os_version'})."<p>\n".
++#		&ui_form_end([ [ undef, $text{'os_fix'} ] ])
++#		);
++#	}
+ 
+ # Password close to expiry
+ my $warn_days = $config{'warn_days'};
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/exports-lib.pl.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/exports-lib.pl.patch
new file mode 100644
index 0000000..177d8a3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/exports-lib.pl.patch
@@ -0,0 +1,32 @@
+From 7eba4c98c6953fa6ea76c1620d19524bcfa3a576 Mon Sep 17 00:00:00 2001
+From: Kevin Strasser <kevin.strasser@linux.intel.com>
+Date: Wed, 1 Aug 2012 11:51:26 -0700
+Subject: [PATCH] nfs export: remove nfsd check
+
+nfsd runs as a kernel process and does not have a pid. This means
+that the command assigned to apply_cmd will never be executed when
+the user tries to apply changes to nfs exports.
+
+Upstream-Status: Inappropriate [config]
+
+Signed-off-by: Kevin Strasser <kevin.strasser@linux.intel.com>
+---
+ exports/exports-lib.pl |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/exports/exports-lib.pl b/exports/exports-lib.pl
+index 22891c0..1c67494 100755
+--- a/exports/exports-lib.pl
++++ b/exports/exports-lib.pl
+@@ -273,7 +273,7 @@ return !&has_command("rpc.nfsd") && !&has_command("nfsd") &&
+ sub restart_mountd
+ {
+ # Try exportfs -r first
+-if ($config{'apply_cmd'} && &find_byname("nfsd") && &find_byname("mountd")) {
++if ($config{'apply_cmd'} && &find_byname("mountd")) {
+ 	my $out = &backquote_logged("$config{'apply_cmd'} 2>&1 </dev/null");
+ 	if (!$? && $out !~ /invalid|error|failed/i) {
+ 		# Looks like it worked!
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/init-exclude.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/init-exclude.patch
new file mode 100644
index 0000000..5563227
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/init-exclude.patch
@@ -0,0 +1,78 @@
+# Hack in support for an "exclude" config option for the init module, so
+# we can hide certain system services that shouldn't really be configurable
+# via the web interface
+#
+# Upstream-status: Pending
+#
+# Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+# Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ init/index.cgi   | 27 ++++++++++++++-------------
+ init/init-lib.pl |  5 +++--
+ 2 files changed, 17 insertions(+), 15 deletions(-)
+
+diff --git a/init/index.cgi b/init/index.cgi
+index d48b793..30dafd4 100755
+--- a/init/index.cgi
++++ b/init/index.cgi
+@@ -45,19 +45,20 @@ elsif ($init_mode eq "init" && $access{'bootup'}) {
+ 					     : "$config{'init_dir'}/$ac[0]");
+ 		}
+ 	@runlevels = &list_runlevels();
+-	foreach $r (@runlevels) {
+-		foreach $w ("S", "K") {
+-			foreach $a (&runlevel_actions($r, $w)) {
+-				@ac = split(/\s+/, $a);
+-				if (!$nodemap{$ac[2]}) {
+-					push(@acts, $ac[1]);
+-					push(@actsl,
+-					     "1+$r+$ac[0]+$ac[1]+$ac[2]+$w");
+-					push(@actsf, "$config{'init_base'}/rc$r.d/$w$ac[0]$ac[1]");
+-					}
+-				}
+-			}
+-		}
++	# Assume there won't be any of these broken actions
++	#foreach $r (@runlevels) {
++	#	foreach $w ("S", "K") {
++	#		foreach $a (&runlevel_actions($r, $w)) {
++	#			@ac = split(/\s+/, $a);
++	#			if (!$nodemap{$ac[2]}) {
++	#				push(@acts, $ac[1]);
++	#				push(@actsl,
++	#				     "1+$r+$ac[0]+$ac[1]+$ac[2]+$w");
++	#				push(@actsf, "$config{'init_base'}/rc$r.d/$w$ac[0]$ac[1]");
++	#				}
++	#			}
++	#		}
++	#	}
+ 
+ 	# For each action, look at /etc/rc*.d/* files to see if it is 
+ 	# started at boot
+diff --git a/init/init-lib.pl b/init/init-lib.pl
+index ead21ed..b41794b 100755
+--- a/init/init-lib.pl
++++ b/init/init-lib.pl
+@@ -119,8 +119,9 @@ List boot time action names from init.d, such as httpd and cron.
+ =cut
+ sub list_actions
+ {
+-local($dir, $f, @stbuf, @rv);
++local($dir, $f, @stbuf, @rv, @exclude);
+ $dir = $config{init_dir};
++@exclude = split(/,/, $config{exclude});
+ opendir(DIR, $dir);
+ foreach $f (sort { lc($a) cmp lc($b) } readdir(DIR)) {
+ 	if ($f eq "." || $f eq ".." || $f =~ /\.bak$/ || $f eq "functions" ||
+@@ -128,7 +129,7 @@ foreach $f (sort { lc($a) cmp lc($b) } readdir(DIR)) {
+ 	    -d "$dir/$f" || $f =~ /\.swp$/ || $f eq "skeleton" ||
+ 	    $f =~ /\.lock$/ || $f =~ /\.dpkg-(old|dist)$/ ||
+ 	    $f =~ /^\.depend\./ || $f eq '.legacy-bootordering' ||
+-	    $f =~ /^mandrake/) { next; }
++	    $f =~ /^mandrake/ || grep {$_ eq $f} @exclude ) { next; }
+ 	if (@stbuf = stat("$dir/$f")) {
+ 		push(@rv, "$f $stbuf[1]");
+ 		}
+--
+2.0.0
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/media-tomb.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/media-tomb.patch
new file mode 100644
index 0000000..46f3109
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/media-tomb.patch
@@ -0,0 +1,65 @@
+diff -Nru webmin-1.570.bak/mediatomb/index.cgi webmin-1.570/mediatomb/index.cgi
+--- webmin-1.570.bak/mediatomb/index.cgi	1969-12-31 16:00:00.000000000 -0800
++++ webmin-1.570/mediatomb/index.cgi	2011-10-26 10:00:05.992522036 -0700
+@@ -0,0 +1,13 @@
++#!/usr/bin/perl
++# index.cgi
++# Display MediaTomb option categories
++
++require './mediatomb-lib.pl';
++
++ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
++
++
++$ipaddress = &get_my_address();
++print &text('index_desc', $ipaddress),"<p>\n";
++
++ui_print_footer("/", $text{'index'});
+diff -Nru webmin-1.570.bak/mediatomb/lang/en webmin-1.570/mediatomb/lang/en
+--- webmin-1.570.bak/mediatomb/lang/en	1969-12-31 16:00:00.000000000 -0800
++++ webmin-1.570/mediatomb/lang/en	2011-10-26 10:01:13.340522186 -0700
+@@ -0,0 +1,2 @@
++index_title=MediaTomb
++index_desc=MediaTomb is an open source (GPL) UPnP MediaServer with a nice web user interface. You can access it via <a href='http://$1:49153'>here</a>.
+diff -Nru webmin-1.570.bak/mediatomb/mediatomb-lib.pl webmin-1.570/mediatomb/mediatomb-lib.pl
+--- webmin-1.570.bak/mediatomb/mediatomb-lib.pl	1969-12-31 16:00:00.000000000 -0800
++++ webmin-1.570/mediatomb/mediatomb-lib.pl	2011-10-26 10:01:34.692522079 -0700
+@@ -0,0 +1,31 @@
++#!/usr/bin/perl
++# mediatomb-lib.pl
++# Common functions for the MediaTomb module
++
++BEGIN { push(@INC, ".."); };
++use WebminCore;
++&init_config();
++
++sub get_my_address
++{
++my $myip;
++if (&foreign_check("net")) {
++        # Try to get ethernet interface
++        &foreign_require("net", "net-lib.pl");
++        my @act = &net::active_interfaces();
++        my @ifaces = grep { &net::iface_type($_->{'fullname'}) =~ /ether/i }
++                          @act;
++        @ifaces = ( $act[0] ) if (!@ifaces && @act);
++        if (@ifaces) {
++                return wantarray ? ( map { $_->{'address'} } @ifaces )
++                                 : $ifaces[0]->{'address'};
++                }
++        }
++$myip = &to_ipaddress(&get_system_hostname());
++if ($myip) {
++        # Can resolve hostname .. use that
++        return wantarray ? ( $myip ) : $myip;
++        }
++return wantarray ? ( ) : undef;
++}
++
+diff -Nru webmin-1.570.bak/mediatomb/module.info webmin-1.570/mediatomb/module.info
+--- webmin-1.570.bak/mediatomb/module.info	1969-12-31 16:00:00.000000000 -0800
++++ webmin-1.570/mediatomb/module.info	2011-10-26 09:59:50.428528369 -0700
+@@ -0,0 +1,3 @@
++desc=MediaTomb
++category=others
++longdesc=MediaTomb access module
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/mount-excludefs.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/mount-excludefs.patch
new file mode 100644
index 0000000..8cb74c4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/mount-excludefs.patch
@@ -0,0 +1,25 @@
+Add excludefs config option to mount module
+
+Adds a configuration option (currently hidden) to allow the distro to
+hide certain filesystems from the mount module within Webmin (e.g. /dev)
+since these shouldn't be modified from the web interface.
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+
+Upstream-status: Pending
+
+--- webmin-1.570.orig/mount/index.cgi
++++ webmin-1.570/mount/index.cgi
+@@ -33,10 +33,12 @@ elsif ($config{'sort_mode'} == 1) {
+ 	}
+ 
+ # Build visible filesystems list
++@excludefs = split(/,/, $config{excludefs});
+ foreach $m (@all) {
+ 	@minfo = @$m;
+ 	$p = &simplify_mount_path($minfo[0], $minfo[2]);
+ 	next if ($ignore{$minfo[2]});
++	next if (grep {$_ eq $minfo[2]} @excludefs);
+ 	@mmodes = &mount_modes($minfo[2], $minfo[0], $minfo[1]);
+ 	$canedit = $can_edit{$minfo[2]} && !$mmodes[4] &&
+             	   &can_edit_fs(@minfo);
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/mysql-config-fix.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/mysql-config-fix.patch
new file mode 100644
index 0000000..2cbc627
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/mysql-config-fix.patch
@@ -0,0 +1,50 @@
+From 719206df606acd7a623e8d75da293c25489b7884 Mon Sep 17 00:00:00 2001
+From: Diego Rondini <diego.ml@zoho.com>
+Date: Thu, 18 Feb 2016 15:44:06 +0100
+Subject: [PATCH] Adjust Mysql config defaults
+
+Upstream-status: Inappropriate [configuration]
+
+Signed-off-by: Diego Rondini <diego.ml@zoho.com>
+---
+ mysql/config | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/mysql/config b/mysql/config
+index e5b6fb3..77bfe69 100644
+--- a/mysql/config
++++ b/mysql/config
+@@ -1,13 +1,13 @@
+-start_cmd=cd /usr/local/mysql ; (./bin/safe_mysqld || ./bin/mysqld_safe) &
++start_cmd=/usr/bin/mysqld_safe
+ perpage=25
+-mysql=/usr/local/mysql/bin/mysql
+-mysqldump=/usr/local/mysql/bin/mysqldump
+-mysqlimport=/usr/local/mysql/bin/mysqlimport
+-pass=foo
+-mysqlshow=/usr/local/mysql/bin/mysqlshow
++mysql=/usr/bin/mysql
++mysqldump=/usr/bin/mysqldump
++mysqlimport=/usr/bin/mysqlimport
++pass=
++mysqlshow=/usr/bin/mysqlshow
+ login=root
+-mysql_libs=/usr/local/mysql/lib
+-mysqladmin=/usr/local/mysql/bin/mysqladmin
++mysql_libs=/usr/lib
++mysqladmin=/usr/bin/mysqladmin
+ style=0
+ add_mode=1
+ nodbi=0
+@@ -15,7 +15,7 @@ access=*: *
+ blob_mode=0
+ date_subs=0
+ passwd_mode=0
+-mysql_data=/usr/local/mysql/var
++mysql_data=/var/lib/mysql
+ max_dbs=50
+ my_cnf=/etc/my.cnf
+ max_text=1000
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/net-generic.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/net-generic.patch
new file mode 100644
index 0000000..7d20aff
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/net-generic.patch
@@ -0,0 +1,21 @@
+# Add support for configuring network interfaces on a generic linux system
+#
+# Upstream-status: Not appropriate [config]
+#
+# Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+--- webmin-1.570.orig/net/module.info
++++ webmin-1.570/net/module.info
+@@ -11,7 +11,7 @@ desc_ko_KR.UTF-8=네트워크 구성
+ name=Networking
+ desc_tr=Að Yapýlandýrmasý
+ desc_de=Netzwerkkonfiguration
+-os_support=solaris coherent-linux redhat-linux/5.0-* mandrake-linux united-linux suse-linux/6.0-* open-linux unixware turbo-linux/4.0 freebsd/3.2-* openbsd debian-linux/2.2-* cobalt-linux/2.2-* msc-linux gentoo-linux macos/1.5-* trustix-linux slackware-linux/8.0-* openmamba-linux cygwin windows pardus-linux
++os_support=generic-linux solaris coherent-linux redhat-linux/5.0-* mandrake-linux united-linux suse-linux/6.0-* open-linux unixware turbo-linux/4.0 freebsd/3.2-* openbsd debian-linux/2.2-* cobalt-linux/2.2-* msc-linux gentoo-linux macos/1.5-* trustix-linux slackware-linux/8.0-* openmamba-linux cygwin windows pardus-linux
+ desc_sk=Konfigurácia siete
+ desc_zh_CN=ÍøÂçÅäÖÃ
+ risk=low medium high
+--- /dev/null
++++ webmin-1.570/net/generic-linux-lib.pl
+@@ -0,0 +1,2 @@
++do 'linux-lib.pl';
++
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/net-lib.pl.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/net-lib.pl.patch
new file mode 100644
index 0000000..bdba5e7
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/net-lib.pl.patch
@@ -0,0 +1,19 @@
+Upstream-Status: Inappropriate [config]
+
+XXX: need to work out a better fix.
+
+Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
+
+diff -Nru webmin-1.570.orig//net/net-lib.pl webmin-1.570/net/net-lib.pl
+--- webmin-1.570.orig//net/net-lib.pl	2011-10-03 09:01:48.000000000 +0800
++++ webmin-1.570/net/net-lib.pl	2011-10-28 13:52:56.138873664 +0800
+@@ -21,7 +21,8 @@
+ 	do "$gconfig{'os_type'}-9.1-ALL-lib.pl";
+ 	}
+ else {
+-	do "$gconfig{'os_type'}-lib.pl";
++	#do "$gconfig{'os_type'}-lib.pl";
++	do "debian-linux-lib.pl";
+ 	}
+ 
+ # list_hosts()
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/nfs-export.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/nfs-export.patch
new file mode 100644
index 0000000..c17e3b2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/nfs-export.patch
@@ -0,0 +1,39 @@
+commit e48f61d2f6df32a518bcb84db8c6eacfe5435c32
+Author: Yu Ke <ke.yu@intel.com>
+Date:   Fri Oct 28 14:40:51 2011 +0800
+
+NFS export: fix syntax issue
+
+fix two syntax issue in /etc/exports:
+1. if it is exported to everyone, should use "*", e.g. "/export  *(xxx)"
+2. explicitly specify subtree_check or no_subtree_check, required by latest nfs-utils
+
+Upstream-Status: Pending
+
+Signed-off-by: Yu Ke <ke.yu@intel.com>
+
+diff --git a/exports/save_export.cgi b/exports/save_export.cgi
+index 3bc2f97..3e60298 100755
+--- a/exports/save_export.cgi
++++ b/exports/save_export.cgi
+@@ -40,7 +40,7 @@ else {
+ 			&error(&text('save_enetmask', $in{'netmask'}));
+ 		$exp{'host'} = $in{'network'}."/".$in{'netmask'};
+ 		}
+-	elsif ($in{'mode'} == 3) { $exp{'host'} = ""; }
++	elsif ($in{'mode'} == 3) { $exp{'host'} = "*"; }
+ 	else {
+ 		$in{'host'} =~ /\*/ || &to_ipaddress($in{'host'}) ||
+ 			&error(&text('save_ehost', $in{'host'}));
+@@ -70,6 +70,11 @@ else {
+ 
+ 	delete($opts{'no_subtree_check'}); delete($opts{'subtree_check'});
+ 	$opts{'no_subtree_check'} = "" if ($in{'no_subtree_check'});
++	if ($in{'no_subtree_check'}) {
++		$opts{'no_subtree_check'} = "";
++	} else {
++		$opts{'subtree_check'} = "";
++	}
+ 
+ 	delete($opts{'nohide'}); delete($opts{'hide'});
+ 	$opts{'nohide'} = "" if ($in{'nohide'});
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/proftpd-config-fix.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/proftpd-config-fix.patch
new file mode 100644
index 0000000..492a652
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/proftpd-config-fix.patch
@@ -0,0 +1,18 @@
+Upstream-status: Inappropriate [configuration]
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+Index: webmin-1.570/proftpd/config
+===================================================================
+--- webmin-1.570.orig/proftpd/config	2011-10-25 20:18:37.000000000 +0800
++++ webmin-1.570/proftpd/config	2011-10-25 20:21:13.000000000 +0800
+@@ -1,6 +1,6 @@
+-proftpd_path=/usr/local/sbin/proftpd
+-proftpd_conf=/usr/local/etc/proftpd.conf
+-pid_file=/usr/local/var/proftpd.pid
++proftpd_path=/usr/sbin/proftpd
++proftpd_conf=/etc/proftpd.conf
++pid_file=/var/proftpd.pid
+ ftpusers=/etc/ftpusers
+ test_config=1
+ test_always=0
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/remove-python2.3.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/remove-python2.3.patch
new file mode 100644
index 0000000..75e5bd1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/remove-python2.3.patch
@@ -0,0 +1,25 @@
+From 6f04699d5d417122b67e8118fd1955c769f17e76 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Tue, 2 Sep 2014 00:11:05 -0700
+Subject: [PATCH] ajaxterm/ajaxterm/qweb.py: fix hardcode of python2.3
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ ajaxterm/ajaxterm/qweb.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ajaxterm/ajaxterm/qweb.py b/ajaxterm/ajaxterm/qweb.py
+index 20c5092..c658a6b 100644
+--- a/ajaxterm/ajaxterm/qweb.py
++++ b/ajaxterm/ajaxterm/qweb.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python2.3
++#!/usr/bin/env python
+ #
+ # vim:set et ts=4 fdc=0 fdn=2 fdl=0:
+ #
+-- 
+1.7.9.5
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/remove-startup-option.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/remove-startup-option.patch
new file mode 100644
index 0000000..d957f4a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/remove-startup-option.patch
@@ -0,0 +1,29 @@
+# Remove "start on boot" option from webmin configuration, as
+# end-users should not need to configure this from the web interface
+#
+# Upstream-status: Inappropriate
+#
+# Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+--- webmin-1.570.orig/webmin/index.cgi
++++ webmin-1.570/webmin/index.cgi
+@@ -79,20 +79,6 @@ print &ui_buttons_start();
+ my %miniserv;
+ &get_miniserv_config(\%miniserv);
+ 
+-if (&foreign_check("init")) {
+-	&foreign_require("init");
+-	my $starting = &init::action_status("webmin");
+-	print &ui_buttons_row("bootup.cgi",
+-	      $text{'index_boot'},
+-	      $text{'index_bootmsg'}.
+-	      ($miniserv{'inetd'} ? "<b>$text{'index_inetd'}</b>" :
+-	       !$ENV{'MINISERV_CONFIG'} ? "<b>$text{'index_apache'}</b>" : ""),
+-	      &ui_hidden("starting", $starting),
+-	      &ui_radio("boot", $starting == 2 ? 1 : 0,
+-			[ [ 1, $text{'yes'} ],
+-			  [ 0, $text{'no'} ] ]));
+-	}
+-
+ # Restart Webmin
+ if (!$miniserv{'inetd'} && $ENV{'MINISERV_CONFIG'}) {
+ 	print &ui_buttons_row("restart.cgi",
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/samba-config-fix.patch b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/samba-config-fix.patch
new file mode 100644
index 0000000..46645ac
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/samba-config-fix.patch
@@ -0,0 +1,32 @@
+Upstream-status: Inappropriate [configuration]
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+
+Index: webmin-1.570/samba/config-generic-linux
+===================================================================
+--- webmin-1.570.orig/samba/config-generic-linux	2011-10-25 20:11:35.000000000 +0800
++++ webmin-1.570/samba/config-generic-linux	2011-10-25 20:15:41.000000000 +0800
+@@ -1,15 +1,15 @@
+ list_printers_command=lpc status | grep "[A-z0-9]:" | sed -e 's/://g'
+-smb_passwd=/usr/local/samba/private/smbpasswd
++smb_passwd=/usr/bin/smbpasswd
+ text_lists=0
+ dont_convert=-499
+-name_server=/usr/local/samba/bin/nmbd
+-smb_conf=/usr/local/samba/lib/smb.conf
+-samba_server=/usr/local/samba/bin/smbd
++name_server=/usr/sbin/nmbd
++smb_conf=/etc/samba/smb.conf
++samba_server=/usr/sbin/smbd
+ run_from_inetd=0
+-samba_password_program=/usr/local/samba/bin/smbpasswd
+-samba_status_program=/usr/local/samba/bin/smbstatus
++samba_password_program=/usr/bin/smbpasswd
++samba_status_program=/usr/bin/smbstatus
+ swat_path=/usr/local/samba/bin/swat
+ sort_mode=0
+ smbgroupedit=/usr/local/samba/bin/smbgroupedit
+-pdbedit=/usr/local/samba/bin/pdbedit
+-net=/usr/local/samba/bin/net
++pdbedit=/usr/bin/pdbedit
++net=/usr/bin/net
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/setup.sh b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/setup.sh
new file mode 100755
index 0000000..8d24f92
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/setup.sh
@@ -0,0 +1,340 @@
+#!/bin/sh
+# Modified version of setup.sh distributed with webmin
+
+if [ "$wadir" = "" ]; then
+	echo "ERROR: wadir not specified"
+	echo ""
+	exit 1
+fi
+
+config_dir_runtime=$config_dir
+config_dir=$prefix$config_dir
+
+wadir_runtime=$wadir
+wadir=$prefix$wadir
+
+ver=`cat "$wadir/version"`
+
+cd "$wadir"
+
+# Work out perl library path
+PERLLIB=$wadir
+
+# Validate source directory
+allmods=`cd "$wadir"; echo */module.info | sed -e 's/\/module.info//g'`
+if [ "$allmods" = "" ]; then
+	echo "ERROR: Failed to get module list"
+	echo ""
+	exit 1
+fi
+echo ""
+
+if [ "$login" = "webmin" ]; then
+	echo "ERROR: Username 'webmin' is reserved for internal use"
+	echo ""
+	exit 14
+fi
+
+# Create webserver config file
+echo $perl > $config_dir/perl-path
+echo $var_dir > $config_dir/var-path
+echo "Creating web server config files.."
+cfile=$config_dir/miniserv.conf
+echo "port=$port" >> $cfile
+echo "root=$wadir_runtime" >> $cfile
+echo "mimetypes=$wadir_runtime/mime.types" >> $cfile
+echo "addtype_cgi=internal/cgi" >> $cfile
+echo "realm=Webmin Server" >> $cfile
+echo "logfile=$var_dir/miniserv.log" >> $cfile
+echo "errorlog=$var_dir/miniserv.error" >> $cfile
+echo "pidfile=$var_dir/miniserv.pid" >> $cfile
+echo "logtime=168" >> $cfile
+echo "ppath=$ppath" >> $cfile
+echo "ssl=$ssl" >> $cfile
+echo "env_WEBMIN_CONFIG=$config_dir_runtime" >> $cfile
+echo "env_WEBMIN_VAR=$var_dir" >> $cfile
+echo "atboot=$atboot" >> $cfile
+echo "logout=$config_dir_runtime/logout-flag" >> $cfile
+if [ "$listen" != "" ]; then
+	echo "listen=$listen" >> $cfile
+else
+	echo "listen=10000" >> $cfile
+fi
+echo "denyfile=\\.pl\$" >> $cfile
+echo "log=1" >> $cfile
+echo "blockhost_failures=5" >> $cfile
+echo "blockhost_time=60" >> $cfile
+echo "syslog=1" >> $cfile
+if [ "$allow" != "" ]; then
+	echo "allow=$allow" >> $cfile
+fi
+if [ "$session" != "" ]; then
+	echo "session=$session" >> $cfile
+else
+	echo "session=1" >> $cfile
+fi
+if [ "$pam" != "" ]; then
+	echo "pam=$pam" >> $cfile
+fi
+if [ "$no_pam" != "" ]; then
+    echo "no_pam=$no_pam" >> $cfile
+fi
+echo premodules=WebminCore >> $cfile
+echo "server=MiniServ/$ver" >> $cfile
+
+md5pass=`$perl -e 'print crypt("test", "\\$1\\$A9wB3O18\\$zaZgqrEmb9VNltWTL454R/") eq "\\$1\\$A9wB3O18\\$zaZgqrEmb9VNltWTL454R/" ? "1\n" : "0\n"'`
+
+ufile=$config_dir/miniserv.users
+if [ "$crypt" != "" ]; then
+	echo "$login:$crypt:0" > $ufile
+else
+	if [ "$md5pass" = "1" ]; then
+		$perl -e 'print "$ARGV[0]:",crypt($ARGV[1], "\$1\$XXXXXXXX"),":0\n"' "$login" "$password" > $ufile
+	else
+		$perl -e 'print "$ARGV[0]:",crypt($ARGV[1], "XX"),":0\n"' "$login" "$password" > $ufile
+	fi
+fi
+chmod 600 $ufile
+echo "userfile=$config_dir_runtime/miniserv.users" >> $cfile
+
+kfile=$config_dir/miniserv.pem
+openssl version >/dev/null 2>&1
+if [ "$?" = "0" ]; then
+	# We can generate a new SSL key for this host
+	host=`hostname`
+	openssl req -newkey rsa:512 -x509 -nodes -out $tempdir/cert -keyout $tempdir/key -days 1825 >/dev/null 2>&1 <<EOF
+.
+.
+.
+Webmin Webserver on $host
+.
+*
+root@$host
+EOF
+	if [ "$?" = "0" ]; then
+		cat $tempdir/cert $tempdir/key >$kfile
+	fi
+	rm -f $tempdir/cert $tempdir/key
+fi
+if [ ! -r $kfile ]; then
+	# Fall back to the built-in key
+	cp "$wadir/miniserv.pem" $kfile
+fi
+chmod 600 $kfile
+echo "keyfile=$config_dir_runtime/miniserv.pem" >> $cfile
+
+chmod 600 $cfile
+echo "..done"
+echo ""
+
+echo "Creating access control file.."
+afile=$config_dir/webmin.acl
+rm -f $afile
+if [ "$defaultmods" = "" ]; then
+	echo "$login: $allmods" >> $afile
+else
+	echo "$login: $defaultmods" >> $afile
+fi
+chmod 600 $afile
+echo "..done"
+echo ""
+
+if [ "$login" != "root" -a "$login" != "admin" ]; then
+	# Allow use of RPC by this user
+	echo rpc=1 >>$config_dir/$login.acl
+fi
+
+if [ "$noperlpath" = "" ]; then
+	echo "Inserting path to perl into scripts.."
+	(find "$wadir" -name '*.cgi' -print ; find "$wadir" -name '*.pl' -print) | $perl "$wadir/perlpath.pl" $perl_runtime -
+	echo "..done"
+	echo ""
+fi
+
+echo "Creating start and stop scripts.."
+rm -f $config_dir/stop $config_dir/start $config_dir/restart $config_dir/reload
+echo "#!/bin/sh" >>$config_dir/start
+echo "echo Starting Webmin server in $wadir_runtime" >>$config_dir/start
+echo "trap '' 1" >>$config_dir/start
+echo "LANG=" >>$config_dir/start
+echo "export LANG" >>$config_dir/start
+echo "#PERLIO=:raw" >>$config_dir/start
+echo "unset PERLIO" >>$config_dir/start
+echo "export PERLIO" >>$config_dir/start
+echo "PERLLIB=$PERLLIB" >>$config_dir/start
+echo "export PERLLIB" >>$config_dir/start
+uname -a | grep -i 'HP/*UX' >/dev/null
+if [ $? = "0" ]; then
+	echo "exec '$wadir_runtime/miniserv.pl' $config_dir_runtime/miniserv.conf &" >>$config_dir/start
+else
+	echo "exec '$wadir_runtime/miniserv.pl' $config_dir_runtime/miniserv.conf" >>$config_dir/start
+fi
+
+echo "#!/bin/sh" >>$config_dir/stop
+echo "echo Stopping Webmin server in $wadir_runtime" >>$config_dir/stop
+echo "pidfile=\`grep \"^pidfile=\" $config_dir_runtime/miniserv.conf | sed -e 's/pidfile=//g'\`" >>$config_dir/stop
+echo "kill \`cat \$pidfile\`" >>$config_dir/stop
+
+echo "#!/bin/sh" >>$config_dir/restart
+echo "$config_dir_runtime/stop && $config_dir_runtime/start" >>$config_dir/restart
+
+echo "#!/bin/sh" >>$config_dir/reload
+echo "echo Reloading Webmin server in $wadir_runtime" >>$config_dir/reload
+echo "pidfile=\`grep \"^pidfile=\" $config_dir_runtime/miniserv.conf | sed -e 's/pidfile=//g'\`" >>$config_dir/reload
+echo "kill -USR1 \`cat \$pidfile\`" >>$config_dir/reload
+
+chmod 755 $config_dir/start $config_dir/stop $config_dir/restart $config_dir/reload
+echo "..done"
+echo ""
+
+if [ "$upgrading" = 1 ]; then
+	echo "Updating config files.."
+else
+	echo "Copying config files.."
+fi
+newmods=`$perl "$wadir/copyconfig.pl" "$os_type/$real_os_type" "$os_version/$real_os_version" "$wadir" $config_dir "" $allmods`
+# Store the OS and version
+echo "os_type=$os_type" >> $config_dir/config
+echo "os_version=$os_version" >> $config_dir/config
+echo "real_os_type=$real_os_type" >> $config_dir/config
+echo "real_os_version=$real_os_version" >> $config_dir/config
+if [ -r /etc/system.cnf ]; then
+	# Found a caldera system config file .. get the language
+	source /etc/system.cnf
+	if [ "$CONF_LST_LANG" = "us" ]; then
+		CONF_LST_LANG=en
+	elif [ "$CONF_LST_LANG" = "uk" ]; then
+		CONF_LST_LANG=en
+	fi
+	grep "lang=$CONF_LST_LANG," "$wadir/lang_list.txt" >/dev/null 2>&1
+	if [ "$?" = 0 ]; then
+		echo "lang=$CONF_LST_LANG" >> $config_dir/config
+	fi
+fi
+
+# Turn on logging by default
+echo "log=1" >> $config_dir/config
+
+# Use licence module specified by environment variable
+if [ "$licence_module" != "" ]; then
+	echo licence_module=$licence_module >>$config_dir/config
+fi
+
+# Disallow unknown referers by default
+echo "referers_none=1" >>$config_dir/config
+echo $ver > $config_dir/version
+echo "..done"
+echo ""
+
+# Set passwd_ fields in miniserv.conf from global config
+for field in passwd_file passwd_uindex passwd_pindex passwd_cindex passwd_mindex; do
+	grep $field= $config_dir/miniserv.conf >/dev/null
+	if [ "$?" != "0" ]; then
+		grep $field= $config_dir/config >> $config_dir/miniserv.conf
+	fi
+done
+grep passwd_mode= $config_dir/miniserv.conf >/dev/null
+if [ "$?" != "0" ]; then
+	echo passwd_mode=0 >> $config_dir/miniserv.conf
+fi
+
+# If Perl crypt supports MD5, then make it the default
+if [ "$md5pass" = "1" ]; then
+	echo md5pass=1 >> $config_dir/config
+fi
+
+# Set a special theme if none was set before
+if [ "$theme" = "" ]; then
+	theme=`cat "$wadir/defaulttheme" 2>/dev/null`
+fi
+oldthemeline=`grep "^theme=" $config_dir/config`
+oldtheme=`echo $oldthemeline | sed -e 's/theme=//g'`
+if [ "$theme" != "" ] && [ "$oldthemeline" = "" ] && [ -d "$wadir/$theme" ]; then
+	themelist=$theme
+fi
+
+# Set a special overlay if none was set before
+if [ "$overlay" = "" ]; then
+	overlay=`cat "$wadir/defaultoverlay" 2>/dev/null`
+fi
+if [ "$overlay" != "" ] && [ "$theme" != "" ] && [ -d "$wadir/$overlay" ]; then
+	themelist="$themelist $overlay"
+fi
+
+# Apply the theme and maybe overlay
+if [ "$themelist" != "" ]; then
+	echo "theme=$themelist" >> $config_dir/config
+	echo "preroot=$themelist" >> $config_dir/miniserv.conf
+fi
+
+# Set the product field in the global config
+grep product= $config_dir/config >/dev/null
+if [ "$?" != "0" ]; then
+	echo product=webmin >> $config_dir/config
+fi
+
+if [ "$makeboot" = "1" ]; then
+	echo "Configuring Webmin to start at boot time.."
+	(cd "$wadir/init" ; WEBMIN_CONFIG=$config_dir WEBMIN_VAR=$var_dir "$wadir/init/atboot.pl" $bootscript)
+	echo "..done"
+	echo ""
+fi
+
+# If password delays are not specifically disabled, enable them
+grep passdelay= $config_dir/miniserv.conf >/dev/null
+if [ "$?" != "0" ]; then
+	echo passdelay=1 >> $config_dir/miniserv.conf
+fi
+
+echo "Changing ownership and permissions .."
+# Make all config dirs non-world-readable
+for m in $newmods; do
+	chown -R root $config_dir/$m
+	chgrp -R bin $config_dir/$m
+	chmod -R og-rw $config_dir/$m
+done
+# Make miniserv config files non-world-readable
+for f in miniserv.conf miniserv.pem miniserv.users; do
+	chown -R root $config_dir/$f
+	chgrp -R bin $config_dir/$f
+	chmod -R og-rw $config_dir/$f
+done
+chmod +r $config_dir/version
+if [ "$nochown" = "" ]; then
+	# Make program directory non-world-writable, but executable
+	chown -R root "$wadir"
+	chgrp -R bin "$wadir"
+	chmod -R og-w "$wadir"
+	chmod -R a+rx "$wadir"
+fi
+if [ $var_dir != "/var" ]; then
+	# Make log directory non-world-readable or writable
+	chown -R root $prefix$var_dir
+	chgrp -R bin $prefix$var_dir
+	chmod -R og-rwx $prefix$var_dir
+fi
+# Fix up bad permissions from some older installs
+for m in ldap-client ldap-server ldap-useradmin mailboxes mysql postgresql servers virtual-server; do
+	if [ -d "$config_dir/$m" ]; then
+		chown root $config_dir/$m
+		chgrp bin $config_dir/$m
+		chmod og-rw $config_dir/$m
+		chmod og-rw $config_dir/$m/config 2>/dev/null
+	fi
+done
+
+if [ "$nopostinstall" = "" ]; then
+	echo "Running postinstall scripts .."
+	(cd "$wadir" ; WEBMIN_CONFIG=$config_dir WEBMIN_VAR=$var_dir "$wadir/run-postinstalls.pl")
+	echo "..done"
+	echo ""
+fi
+
+# Enable background collection
+if [ "$upgrading" != 1 -a -r $config_dir/system-status/enable-collection.pl ]; then
+	echo "Enabling background status collection .."
+	$config_dir/system-status/enable-collection.pl 5
+	echo "..done"
+	echo ""
+fi
+
diff --git a/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/webmin_1.750.bb b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/webmin_1.750.bb
new file mode 100644
index 0000000..34052a1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-webserver/recipes-webadmin/webmin/webmin_1.750.bb
@@ -0,0 +1,155 @@
+SUMMARY = "Web-based administration interface"
+HOMEPAGE = "http://www.webmin.com"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=0373ac9f611e542ddebe1ec6394afc3c"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/webadmin/webmin-${PV}.tar.gz \
+           file://setup.sh \
+           file://init-exclude.patch \
+           file://net-generic.patch \
+           file://remove-startup-option.patch \
+           file://disable-version-check.patch \
+           file://nfs-export.patch \
+           file://exports-lib.pl.patch \
+           file://mount-excludefs.patch \
+           file://samba-config-fix.patch \
+           file://proftpd-config-fix.patch \
+           file://net-lib.pl.patch \
+           file://media-tomb.patch \
+           file://remove-python2.3.patch \
+           file://mysql-config-fix.patch \
+            "
+
+SRC_URI[md5sum] = "4007c390323d840f26c2e0f43c5c81a3"
+SRC_URI[sha256sum] = "5111f820adc6fbca997a58d4b2fa186dac6cded9cff0e70724f8cae6021123d9"
+
+inherit perlnative update-rc.d
+
+do_configure() {
+    # Remove binaries and plugins for other platforms
+    rm -rf acl/Authen-SolarisRBAC-0.1*
+    rm -rf format bsdexports hpuxexports sgiexports
+    rm -rf zones rbac smf ipfw ipfilter dfsadmin
+    rm -f mount/freebsd-mounts* mount/netbsd-mounts*
+    rm -f mount/openbsd-mounts* mount/macos-mounts*
+
+    # Remove some plugins for the moment
+    rm -rf lilo frox wuftpd telnet pserver cpan shorewall webalizer cfengine fsdump pap
+    rm -rf majordomo fetchmail sendmail mailboxes procmail filter mailcap dovecot exim spam qmailadmin postfix
+    rm -rf stunnel squid sarg pptp-client pptp-server jabber openslp sentry cluster-* vgetty burner heartbeat
+
+    # Adjust configs
+    [ -f init/config-debian-linux ] && mv init/config-debian-linux init/config-generic-linux
+    sed -i "s/shutdown_command=.*/shutdown_command=poweroff/" init/config-generic-linux
+    echo "exclude=bootmisc.sh,single,halt,reboot,hostname.sh,modutils.sh,mountall.sh,mountnfs.sh,networking,populate-volatile.sh,rmnologin.sh,save-rtc.sh,umountfs,umountnfs.sh,hwclock.sh,checkroot.sh,banner.sh,udev,udev-cache,devpts.sh,psplash.sh,sendsigs,fbsetup,bootlogd,stop-bootlogd,sysfs.sh,syslog,syslog.busybox,urandom,webmin,functions.initscripts,read-only-rootfs-hook.sh" >> init/config-generic-linux
+    echo "excludefs=devpts,devtmpfs,usbdevfs,proc,tmpfs,sysfs,debugfs" >> mount/config-generic-linux
+
+    [ -f exports/config-debian-linux ] && mv exports/config-debian-linux exports/config-generic-linux
+    sed -i "s/killall -HUP rpc.nfsd && //" exports/config-generic-linux
+    sed -i "s/netstd_nfs/nfsserver/g" exports/config-generic-linux
+
+    # Fix insane naming that causes problems at packaging time (must be done before deleting below)
+    find . -name "*\**" | while read from
+    do
+        to=`echo "$from" | sed "s/*/ALL/"`
+        mv "$from" "$to"
+    done
+
+    # Remove some other files we don't need
+    find . -name "config-*" -a \! -name "config-generic-linux" -a \! -name "config-ALL-linux" -a \! -name "*.pl" -delete
+    find . -regextype posix-extended -regex ".*/(openserver|aix|osf1|osf|openbsd|netbsd|freebsd|unixware|solaris|macos|irix|hpux|cygwin|windows)-lib\.pl" -delete
+    rm -f webmin-gentoo-init webmin-caldera-init webmin-debian-pam webmin-pam
+
+    # Don't need these at runtime (and we have our own setup script)
+    rm -f setup.sh
+    rm -f setup.pl
+
+    # Use pidof for finding PIDs
+    sed -i "s/find_pid_command=.*/find_pid_command=pidof NAME/" config-generic-linux
+}
+
+WEBMIN_LOGIN ?= "admin"
+WEBMIN_PASSWORD ?= "password"
+
+do_install() {
+    install -d ${D}${sysconfdir}
+    install -d ${D}${sysconfdir}/webmin
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 webmin-init ${D}${sysconfdir}/init.d/webmin
+
+    install -d ${D}${localstatedir}
+    install -d ${D}${localstatedir}/webmin
+
+    install -d ${D}${libexecdir}/webmin
+    cd ${S} || exit 1
+    tar --no-same-owner --exclude='./patches' --exclude='./.pc' -cpf - . \
+        | tar --no-same-owner -xpf - -C ${D}${libexecdir}/webmin
+
+    rm -f ${D}${libexecdir}/webmin/webmin-init
+    rm -f ${D}${libexecdir}/webmin/ajaxterm/ajaxterm/configure.initd.gentoo
+    rm -rf ${D}${libexecdir}/webmin/patches
+
+    # Run setup script
+    export perl=perl
+    export perl_runtime=${bindir}/perl
+    export prefix=${D}
+    export tempdir=${S}/install_tmp
+    export wadir=${libexecdir}/webmin
+    export config_dir=${sysconfdir}/webmin
+    export var_dir=${localstatedir}/webmin
+    export os_type=generic-linux
+    export os_version=0
+    export real_os_type="${DISTRO_NAME}"
+    export real_os_version="${DISTRO_VERSION}"
+    export port=10000
+    export login=${WEBMIN_LOGIN}
+    export password=${WEBMIN_PASSWORD}
+    export ssl=0
+    export atboot=1
+    export no_pam=1
+    mkdir -p $tempdir
+    ${S}/../setup.sh
+}
+
+INITSCRIPT_NAME = "webmin"
+INITSCRIPT_PARAMS = "start 99 5 3 2 . stop 10 0 1 6 ."
+
+# FIXME: some of this should be figured out automatically
+RDEPENDS_${PN} += "perl perl-module-socket perl-module-exporter perl-module-exporter-heavy perl-module-carp perl-module-strict"
+RDEPENDS_${PN} += "perl-module-warnings perl-module-xsloader perl-module-posix perl-module-autoloader"
+RDEPENDS_${PN} += "perl-module-fcntl perl-module-tie-hash perl-module-vars perl-module-time-local perl-module-config perl-module-constant"
+RDEPENDS_${PN} += "perl-module-file-glob perl-module-file-copy perl-module-sdbm-file perl-module-feature"
+
+PACKAGES_DYNAMIC += "webmin-module-* webmin-theme-*"
+RRECOMMENDS_${PN} += "webmin-module-system-status"
+
+PACKAGES += "${PN}-module-proc ${PN}-module-raid ${PN}-module-exports ${PN}-module-fdisk ${PN}-module-lvm"
+RDEPENDS_${PN}-module-proc = "procps"
+RDEPENDS_${PN}-module-raid = "mdadm"
+RDEPENDS_${PN}-module-exports = "perl-module-file-basename perl-module-file-path perl-module-cwd perl-module-file-spec perl-module-file-spec-unix"
+RRECOMMENDS_${PN}-module-fdisk = "parted"
+RRECOMMENDS_${PN}-module-lvm = "lvm2"
+
+python populate_packages_prepend() {
+    import os, os.path
+
+    wadir = bb.data.expand('${libexecdir}/webmin', d)
+    wadir_image = bb.data.expand('${D}', d) + wadir
+    modules = []
+    themes = []
+    for mod in os.listdir(wadir_image):
+        modinfo = os.path.join(wadir_image, mod, "module.info")
+        themeinfo = os.path.join(wadir_image, mod, "theme.info")
+        if os.path.exists(modinfo):
+            modules.append(mod)
+        elif os.path.exists(themeinfo):
+            themes.append(mod)
+
+    do_split_packages(d, wadir, '^(%s)$' % "|".join(modules), 'webmin-module-%s', 'Webmin module for %s', allow_dirs=True, prepend=True)
+    do_split_packages(d, wadir, '^(%s)$' % "|".join(themes), 'webmin-theme-%s', 'Webmin theme for %s', allow_dirs=True, prepend=True)
+}
+
+# Time-savers
+package_do_pkgconfig() {
+    :
+}
diff --git a/import-layers/meta-openembedded/meta-xfce/README b/import-layers/meta-openembedded/meta-xfce/README
new file mode 100644
index 0000000..350ca11
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/README
@@ -0,0 +1,23 @@
+This layer depends on:
+
+URI: git://github.com/openembedded/oe-core.git
+branch: krogoth
+revision: HEAD
+
+URI: git://github.com/openembedded/meta-oe.git
+branch: krogoth
+revision: HEAD
+meta-xfce depends on meta-oe, meta-gnome and meta-multimedia in this repository.
+
+To avoid dependencies on meta-multimedia you need to mask recipes by adding
+this to local.conf:
+
+BBMASK = "meta-xfce/recipes-multimedia"
+
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-xfce][krogoth]' in the subject'
+
+When sending single patches, please using something like:
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-xfce][krogoth][PATCH'
+
+krogoth Branch Maintainer:
+Armin Kuster <akuster808@gmail.com>
diff --git a/import-layers/meta-openembedded/meta-xfce/classes/thunar-plugin.bbclass b/import-layers/meta-openembedded/meta-xfce/classes/thunar-plugin.bbclass
new file mode 100644
index 0000000..4ec073a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/classes/thunar-plugin.bbclass
@@ -0,0 +1,10 @@
+inherit xfce
+
+DEPENDS += "thunar"
+
+SRC_URI = "http://archive.xfce.org/src/thunar-plugins/${BPN}/${@'${PV}'[0:3]}/${BPN}-${PV}.tar.bz2"
+
+FILES_${PN} += "${libdir}/thunarx-2/*.so"
+FILES_${PN}-dbg += "${libdir}/thunarx-2/.debug"
+FILES_${PN}-dev += "${libdir}/thunarx-2/*.la"
+
diff --git a/import-layers/meta-openembedded/meta-xfce/classes/xfce-app.bbclass b/import-layers/meta-openembedded/meta-xfce/classes/xfce-app.bbclass
new file mode 100644
index 0000000..8780ebf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/classes/xfce-app.bbclass
@@ -0,0 +1,4 @@
+inherit xfce
+
+SRC_URI = "http://archive.xfce.org/src/apps/${BPN}/${@xfce_verdir("${PV}")}/${BPN}-${PV}.tar.bz2"
+
diff --git a/import-layers/meta-openembedded/meta-xfce/classes/xfce-git.bbclass b/import-layers/meta-openembedded/meta-xfce/classes/xfce-git.bbclass
new file mode 100644
index 0000000..3fc18d2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/classes/xfce-git.bbclass
@@ -0,0 +1,7 @@
+do_configure_prepend() {
+       cd ${S}
+       NOCONFIGURE=yes ./autogen.sh
+       cd ${B}
+}
+
+AUTOTOOLS_COPYACLOCAL = "1"
diff --git a/import-layers/meta-openembedded/meta-xfce/classes/xfce-panel-plugin.bbclass b/import-layers/meta-openembedded/meta-xfce/classes/xfce-panel-plugin.bbclass
new file mode 100644
index 0000000..b2f0678
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/classes/xfce-panel-plugin.bbclass
@@ -0,0 +1,11 @@
+inherit xfce
+
+DEPENDS += "libxfce4ui libxfce4util xfce4-panel"
+
+SRC_URI = "http://archive.xfce.org/src/panel-plugins/${BPN}/${@'${PV}'[0:3]}/${BPN}-${PV}.tar.bz2"
+
+FILES_${PN} += "${datadir}/xfce4/panel-plugins/"
+FILES_${PN} += "${datadir}/xfce4/panel/plugins/"
+FILES_${PN} += "${libdir}/xfce4/panel-plugins/*.so"
+FILES_${PN} += "${libdir}/xfce4/panel/plugins/*.so"
+FILES_${PN}-dbg += "${libexecdir}/xfce4/panel-plugins/.debug"
diff --git a/import-layers/meta-openembedded/meta-xfce/classes/xfce.bbclass b/import-layers/meta-openembedded/meta-xfce/classes/xfce.bbclass
new file mode 100644
index 0000000..b49bba1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/classes/xfce.bbclass
@@ -0,0 +1,22 @@
+def xfce_verdir(v):
+    import re
+    m = re.match("^([0-9]+)\.([0-9]+)", v)
+    return "%s.%s" % (m.group(1), m.group(2))
+
+HOMEPAGE = "http://www.xfce.org"
+SRC_URI = "http://archive.xfce.org/src/xfce/${BPN}/${@xfce_verdir("${PV}")}/${BPN}-${PV}.tar.bz2"
+
+inherit autotools gettext gtk-icon-cache pkgconfig
+
+DEPENDS += "intltool-native"
+
+FILES_${PN} += "${datadir}/icons/* ${datadir}/applications/* ${libdir}/xfce4/modules/*.so*"
+FILES_${PN}-doc += "${datadir}/xfce4/doc"
+
+FILES_${PN}-dev += "${libdir}/xfce4/*/*.la"
+FILES_${PN}-dev += "${libdir}/xfce4/*/*/*.la"
+FILES_${PN}-staticdev += "${libdir}/xfce4/*/*.a"
+FILES_${PN}-staticdev += "${libdir}/xfce4/*/*/*.a"
+FILES_${PN}-dbg += "${libdir}/xfce4/*/.debug"
+FILES_${PN}-dbg += "${libdir}/xfce4/*/*/.debug"
+
diff --git a/import-layers/meta-openembedded/meta-xfce/conf/layer.conf b/import-layers/meta-openembedded/meta-xfce/conf/layer.conf
new file mode 100644
index 0000000..64b1077
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/conf/layer.conf
@@ -0,0 +1,23 @@
+# 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 += "xfce-layer"
+BBFILE_PATTERN_xfce-layer := "^${LAYERDIR}/"
+BBFILE_PRIORITY_xfce-layer = "7"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_xfce-layer = "1"
+
+LAYERDEPENDS_xfce-layer = "core"
+LAYERDEPENDS_xfce-layer += "openembedded-layer"
+LAYERDEPENDS_xfce-layer += "gnome-layer"
+LAYERDEPENDS_xfce-layer += "openembedded-layer"
+LAYERDEPENDS_xfce-layer += "meta-python"
+
+SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
+  xfce4-session->machine-host \
+"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/gigolo/gigolo_0.4.2.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/gigolo/gigolo_0.4.2.bb
new file mode 100644
index 0000000..c846e78
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/gigolo/gigolo_0.4.2.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Gigolo is a frontend to easily manage connections to remote filesystems using GIO/GVfs"
+SECTION = "x11/application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "gtk+ intltool-native xfce4-dev-tools-native"
+
+inherit xfce-app
+
+SRC_URI[md5sum] = "4abc6fde56572adf3ec3a0181092584c"
+SRC_URI[sha256sum] = "553fc78fe4e7bd2f01f3851baea7e63f6414fe652dfb4b08c60b5c4b2b909164"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.4.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.4.0.bb
new file mode 100644
index 0000000..4ca21a6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.4.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "A simple text editor for Xfce"
+SECTION = "x11/application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+# intltool to provide intltool.m4 with AC_PROG_INTLTOOL
+# xfce4-dev-tools-native for XDT_I18N macro and more importantly XDT_CHECK_OPTIONAL_PACKAGE
+# which fixes mousepad/Makefile.am:72: error: HAVE_DBUS does not appear in AM_CONDITIONAL
+DEPENDS = "gtk+ dbus dbus-glib gtksourceview2 intltool-native xfce4-dev-tools-native"
+
+inherit xfce-app gsettings
+
+SRC_URI[md5sum] = "f55314c5dda6323883241e6cf01550a7"
+SRC_URI[sha256sum] = "60114431eac8db6bb6ce18bd38f1630cccb684375b97a445a1b6fd619848d132"
+
+# we have no gtksourceview 3.x around
+EXTRA_OECONF = "--disable-gtk3"
+
+FILES_${PN} += "${datadir}/glib-2.0/schemas"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/orage/orage_4.12.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/orage/orage_4.12.1.bb
new file mode 100644
index 0000000..a2f2568
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/orage/orage_4.12.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Xfce Calender"
+SECTION = "x11/application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
+DEPENDS = "gtk+ xfce4-panel libical popt"
+
+inherit xfce-app
+
+SRC_URI[md5sum] = "2b7f5d38cb5c6edbcc65d0f52a742e46"
+SRC_URI[sha256sum] = "3cf9aa441ae83c8688865f82217025cdf3ebaa152cce4571777b8c2aa8dd9062"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[notify] = "--enable-libnotify,--disable-libnotify,libnotify"
+
+PACKAGES =+ "xfce4-orageclock-plugin"
+FILES_${PN} += "${datadir}/dbus-1"
+FILES_${PN}-dbg += "${libdir}/xfce4/panel/plugins/.debug"
+FILES_xfce4-orageclock-plugin = "${libdir}/xfce4/panel/plugins/*.so ${datadir}/xfce4/panel/plugins"
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.8.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.8.0.bb
new file mode 100644
index 0000000..66399cf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.8.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Tiny image-viewer"
+HOMEPAGE = "http://goodies.xfce.org/projects/applications/ristretto"
+SECTION = "x11/application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=35d145429ad3cbf5308d1dc93f66376b"
+DEPENDS = "exo libexif gtk+ dbus-glib libxfce4ui libxfce4util xfconf cairo"
+
+inherit xfce-app
+
+RRECOMMENDS_${PN} += "tumbler"
+
+SRC_URI[md5sum] = "94c778850325a4e5a12e3433c8a05432"
+SRC_URI[sha256sum] = "71625324cecda7199acbc95a3ea5132d0dcbf808771e7a209ea2b9503ae4f328"
+
+FILES_${PN} += "${datadir}/appdata"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/xarchiver/xarchiver_git.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xarchiver/xarchiver_git.bb
new file mode 100644
index 0000000..ca29922
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xarchiver/xarchiver_git.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Lightweight, desktop independent GTK+ archive manager"
+HOMEPAGE = "http://xarchiver.sourceforge.net"
+SECTION = "x11"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "gtk+ glib-2.0 xfce4-dev-tools-native intltool-native"
+
+SRC_URI = "git://github.com/schnitzeltony/xarchiver.git;branch=master"
+SRCREV = "e80e90528c9aab2fe36d9078b945b44c05cc20d3"
+PV = "0.5.3"
+S = "${WORKDIR}/git"
+
+inherit xfce-git gettext pkgconfig autotools gtk-icon-cache
+
+# install tap files for thunar-archive-plugin in ${libdir}/thunar-archive-plugin
+EXTRA_OECONF += "--libexecdir=${libdir}"
+
+EXTRA_OECONF += "--enable-maintainer-mode"
+
+FILES_${PN} += "${libdir}/thunar-archive-plugin"
+
+RRECOMMENDS_${PN} = "lzop zip tar bzip2 unzip xz"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce-polkit/xfce-polkit_0.2.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce-polkit/xfce-polkit_0.2.bb
new file mode 100644
index 0000000..1fb4a5b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce-polkit/xfce-polkit_0.2.bb
@@ -0,0 +1,11 @@
+SUMMARY = "A simple PolicyKit authentication agent for XFCE"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=758b03f872a88c99fc36d50c5932091c"
+
+DEPENDS = "libxfce4ui polkit"
+
+inherit xfce-app
+
+SRC_URI = "git://github.com/ncopa/${BPN}.git"
+SRCREV = "6ad1ee833c9e22e4dd72a8f7d54562d046965283"
+S = "${WORKDIR}/git"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-mixer/xfce4-mixer_4.11.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-mixer/xfce4-mixer_4.11.0.bb
new file mode 100644
index 0000000..bdbec45
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-mixer/xfce4-mixer_4.11.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "A volume control application based on GStreamer"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+inherit xfce-panel-plugin
+
+DEPENDS += "glib-2.0 gst-plugins-base gtk+ xfconf libunique"
+
+SRC_URI = "http://archive.xfce.org/src/apps/${BPN}/${@xfce_verdir("${PV}")}/${BPN}-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "1b3753b91224867a3a2dfddda239c28d"
+SRC_URI[sha256sum] = "fb0c1df201ed1130f54f15b914cbe5a59286e994a137acda5609570c57112de2"
+
+RDEPENDS_${PN} = "gst-meta-audio"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.2.4.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.2.4.bb
new file mode 100644
index 0000000..5f874ad
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.2.4.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Easily themable notification daemon with transparency effects"
+HOMEPAGE = "http://goodies.xfce.org/projects/applications/xfce4-notifyd"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "libxfce4util libxfce4ui xfconf gtk+ dbus dbus-glib libnotify"
+
+inherit xfce-app
+
+SRC_URI[md5sum] = "094be6f29206aac8299f27084e284e88"
+SRC_URI[sha256sum] = "8c7ed62f9496816d1391281f77d1b32216f9bf6fd22fbe4f6f3f4e07a6bbced0"
+
+do_compile_prepend() {
+	mkdir -p xfce4-notifyd
+}
+
+FILES_${PN} += " \
+    ${libdir}/xfce4/notifyd \
+    ${datadir}/themes \
+    ${datadir}/dbus-1 \
+"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/files/0001-Makefile.am-create-ouput-directory-for-desktop-file.patch b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/files/0001-Makefile.am-create-ouput-directory-for-desktop-file.patch
new file mode 100644
index 0000000..62bffef
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/files/0001-Makefile.am-create-ouput-directory-for-desktop-file.patch
@@ -0,0 +1,29 @@
+From c85bf7cc5c1e1780d215f6fe233e3ed4597c72ed Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Mon, 21 Sep 2015 06:54:28 +0000
+Subject: [PATCH] Makefile.am: create ouput directory for desktop file
+
+Upstream-Status: Submitted [1]
+
+[1]: http://bug-attachment.xfce.org/attachment.cgi?id=6460
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile.am b/Makefile.am
+index a22fc20..2ef0e54 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -122,6 +122,7 @@ app_desktop_DATA = $(app_desktop_in_files:.desktop.in=.desktop)
+ 
+ src/xfce4-screenshooter.desktop.in: src/xfce4-screenshooter.desktop.in.in
+ 	$(AM_V_GEN) ( \
++		$(MKDIR_P) $(dir $@); \
+ 		sed -e "s^@PLUGIN_PATH@^$(libexecdir)/applications^" \
+ 			$< > $@ \
+ 	)
+-- 
+2.0.1
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.8.2.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.8.2.bb
new file mode 100644
index 0000000..de2bc61
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.8.2.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Application to take screenshots"
+HOMEPAGE = "http://goodies.xfce.org/projects/applications/xfce4-screenshooter"
+SECTION = "x11/application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d791728a073bc009b4ffaf00b7599855"
+DEPENDS = "xfce4-panel libxfce4util libxfce4ui gdk-pixbuf gtk+ glib-2.0 libsoup-2.4 exo libxfixes xext virtual/libx11"
+
+inherit xfce-app
+
+SRC_URI += "file://0001-Makefile.am-create-ouput-directory-for-desktop-file.patch"
+
+SRC_URI[md5sum] = "3a32ecc5566453a58f6a4ddd70649444"
+SRC_URI[sha256sum] = "9dce2ddfaa87f703e870e29bae13f3fc82a1b3f06b44f8386640e45a135f5f69"
+
+do_compile_prepend() {
+	mkdir -p lib
+}
+
+FILES_${PN} += " \
+    ${datadir}/appdata \
+    ${datadir}/xfce4/panel/plugins \
+    ${libdir}/xfce4/panel/plugins \
+"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.1.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.1.0.bb
new file mode 100644
index 0000000..cb1be67
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.1.0.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Easy to use task manager"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit xfce-app
+
+DEPENDS += "gtk+ cairo libwnck xfce4-dev-tools-native exo-native"
+
+SRC_URI[md5sum] = "7da465a4798629ebd8650fef62770ab7"
+SRC_URI[sha256sum] = "2e1eb161f966cbfbd68bd029fb59115bc5ab0c0704cb500d20e7d73967e59ecb"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.6.3.bb b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.6.3.bb
new file mode 100644
index 0000000..1049b27
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.6.3.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Terminal emulator for the Xfce desktop environment"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "glib-2.0 gtk+ vte libxfce4ui"
+
+inherit xfce-app
+
+FILES_${PN} += "${datadir}/xfce4 \
+                ${datadir}/gnome-control-center"
+
+SRC_URI[md5sum] = "6a2816d8b0933cd707ed456ceb731399"
+SRC_URI[sha256sum] = "912f4716c2395a14a80620ef982b4af1e2a67a8df9a1ef0b802ecae826057e08"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-art/cursor-themes/openzone_1.2.3.bb b/import-layers/meta-openembedded/meta-xfce/recipes-art/cursor-themes/openzone_1.2.3.bb
new file mode 100644
index 0000000..9547736
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-art/cursor-themes/openzone_1.2.3.bb
@@ -0,0 +1,29 @@
+SUMMARY = "X11 Mouse Theme"
+HOMEPAGE = "http://xfce-look.org/content/show.php/OpenZone?content=111343"
+SECTION = "x11/wm"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a2f562fb8fb1e138b810d69521c4bcd7"
+DEPENDS = "icon-slicer-native xcursorgen-native"
+
+inherit allarch
+
+SRC_URI = "http://xfce-look.org/CONTENT/content-files/111343-OpenZone-${PV}.tar.xz"
+SRC_URI[md5sum] = "4dae968cbd525072664ef7a4fc7c4154"
+SRC_URI[sha256sum] = "dc20f97a49e1ff1becf7853ef5f137ed30a4c27490540e755021d78d339efd92"
+
+S = "${WORKDIR}/OpenZone"
+
+do_install() {
+    install -d ${D}${datadir}/icons
+    for theme in `find -name '*.tar.xz'`; do
+        tar -Jxf ${theme} -C ${D}${datadir}/icons
+    done
+}
+
+python populate_packages_prepend () {
+    icondir = bb.data.expand('${datadir}/icons', d)
+    do_split_packages(d, icondir, '^(.*)', '%s', 'Open Zone cursors %s', allow_dirs=True)
+}
+
+PACKAGES_DYNAMIC += "^openzone-.*"
+ALLOW_EMPTY_${PN} = "1"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-art/rodent-icon-theme/rodent-icon-theme_5.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-art/rodent-icon-theme/rodent-icon-theme_5.0.bb
new file mode 100644
index 0000000..40ba340
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-art/rodent-icon-theme/rodent-icon-theme_5.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Rodent-icon-theme (was xfce4-icon-theme) is a svg icon theme"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+
+inherit allarch autotools gtk-icon-cache
+
+SRC_URI = "http://sourceforge.net/projects/xffm/files/${BPN}/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "4b097d344a160d6497c6498985c8df15"
+SRC_URI[sha256sum] = "6ed00d16faa1f55b3bb7b13862de1d7f5cfd978b93e42487ded21595d0dbe208"
+
+FILES_${PN} += "${datadir}/icons"
+
+RREPLACES_${PN} += "xfce4-icon-theme"
+RPROVIDES_${PN} += "xfce4-icon-theme"
+RCONFLICTS_${PN} += "xfce4-icon-theme"
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb b/import-layers/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb
new file mode 100644
index 0000000..b05c748
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Modified version of the xfce-dusk theme to support also gtk 3.x too"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+inherit allarch
+
+SRC_URI = "http://xfce-look.org/CONTENT/content-files/141404-xfce_dusk_gtk3-1_3.tar.gz;subdir=${BPN}-${PV}"
+SRC_URI[md5sum] = "b3ad37ad8173b14ec090e60a80e65d8f"
+SRC_URI[sha256sum] = "bfa8a88607d1a1da5bd0b9e4e075767c54400a3c5a0fae88b619ed71532f30b4"
+
+do_configure() {
+}
+
+do_install() {
+    install -d ${D}${datadir}/themes
+    cp -r Xfce-dusk-gtk3 ${D}${datadir}/themes/Xfce-dusk-gtk3
+}
+
+FILES_${PN} = "${datadir}/themes"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-art/xfwm4-themes/xfwm4-themes_4.10.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-art/xfwm4-themes/xfwm4-themes_4.10.0.bb
new file mode 100644
index 0000000..7030f7a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-art/xfwm4-themes/xfwm4-themes_4.10.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Additional (old) themes for Xfwm4"
+SECTION = "x11/wm"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+inherit xfce
+
+SRC_URI = "http://archive.xfce.org/src/art/${BPN}/${@'${PV}'[0:4]}/${BP}.tar.bz2"
+SRC_URI[md5sum] = "eaa58362053a3549c8be0b32efd3c54f"
+SRC_URI[sha256sum] = "3214d5f00e9703b5e8c9e7c3287d606dedec7285ceb4d5db332e93ada66fd575"
+
+# using xfwm4-theme as in xfwm4 might cause warnings of packages supplied by
+# multiple providers. So we use xfwm4-old-theme here.
+python populate_packages_prepend () {
+    themedir = d.expand('${datadir}/themes')
+    do_split_packages(d, themedir, '^(.*)', 'xfwm4-old-theme-%s', 'XFWM4 theme %s', allow_dirs=True)
+}
+
+PACKAGES_DYNAMIC += "^xfwm4-old-theme-.*"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-bindings/vala/xfce4-vala_4.10.3.bb b/import-layers/meta-openembedded/meta-xfce/recipes-bindings/vala/xfce4-vala_4.10.3.bb
new file mode 100644
index 0000000..4bd085a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-bindings/vala/xfce4-vala_4.10.3.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Xfce4 Vala provides bindings for the Xfce framework"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
+DEPENDS = "libxfce4util garcon xfconf libxfce4ui xfce4-panel exo vala xfce4-dev-tools-native"
+
+inherit xfce
+
+SRC_URI = "http://archive.xfce.org/src/bindings/${BPN}/${@xfce_verdir("${PV}")}/${BPN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "0bbb1d6e473e0fe9b335b7b1b49d8a71"
+SRC_URI[sha256sum] = "07a8f2b7c09fcdd3d86e0c52adea3c58ca011d0142a93997a01b4af77260ae7b"
+
+EXTRA_OECONF = "-with-vala-api=0.30"
+
+FILES_${PN} += "${datadir}/vala-*/vapi"
+
+RDEPENDS_${PN} = "vala"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-core/images/core-image-minimal-xfce.bb b/import-layers/meta-openembedded/meta-xfce/recipes-core/images/core-image-minimal-xfce.bb
new file mode 100644
index 0000000..63900f8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-core/images/core-image-minimal-xfce.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "A XFCE minimal demo image."
+
+IMAGE_INSTALL = "packagegroup-core-boot \
+    ${ROOTFS_PKGMANAGE_BOOTSTRAP} \
+    packagegroup-core-x11 \
+    packagegroup-xfce-base \
+"
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+IMAGE_LINGUAS ?= " "
+
+LICENSE = "MIT"
+
+export IMAGE_BASENAME = "core-image-minimal-xfce"
+
+inherit core-image
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-extended/imsettings/gtk-is-required-by-notify.patch b/import-layers/meta-openembedded/meta-xfce/recipes-extended/imsettings/gtk-is-required-by-notify.patch
new file mode 100644
index 0000000..d42358d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-extended/imsettings/gtk-is-required-by-notify.patch
@@ -0,0 +1,18 @@
+gtk+ is required by linnotify. So make sure gtk be linked before libnotify
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp imsettings-1.6.7.orig/configure.ac imsettings-1.6.7/configure.ac
+--- imsettings-1.6.7.orig/configure.ac	2013-11-26 16:09:09.000000000 +0800
++++ imsettings-1.6.7/configure.ac	2014-12-30 11:27:44.370003209 +0800
+@@ -93,8 +93,8 @@ PKG_CHECK_MODULES(LIBNOTIFY, libnotify,
+ 		has_old_libnotify=yes
+ 		PKG_CHECK_MODULES(GTK, gtk+-2.0 >= $GTK_REQUIRED)
+ 		AC_DEFINE(HAS_OLD_LIBNOTIFY,, [Using older libnotify])
+-		IMDAEMON_CFLAGS="$GTK_CFLAGS $LIBNOTIFY_OLD_CFLAGS"
+-		IMDAEMON_LIBS="$GTK_LIBS $LIBNOTIFY_OLD_LIBS"],[
++		IMDAEMON_CFLAGS="$LIBNOTIFY_OLD_CFLAGS $GTK_CFLAGS"
++		IMDAEMON_LIBS="$LIBNOTIFY_OLD_LIBS $GTK_LIBS"],[
+ 		has_old_libnotify=no
+ 		IMDAEMON_CFLAGS="$LIBNOTIFY_CFLAGS"
+ 		IMDAEMON_LIBS="$LIBNOTIFY_LIBS"])
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-extended/imsettings/multi-line-ACLOCAL_AMFLAGS-isnot-supported-by-autoreconf.patch b/import-layers/meta-openembedded/meta-xfce/recipes-extended/imsettings/multi-line-ACLOCAL_AMFLAGS-isnot-supported-by-autoreconf.patch
new file mode 100644
index 0000000..9e31847
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-extended/imsettings/multi-line-ACLOCAL_AMFLAGS-isnot-supported-by-autoreconf.patch
@@ -0,0 +1,21 @@
+multi-line ACLOCAL_AMFLAGS isn't supported by autoreconf.
+It will cause configure error as follow.
+
+  aclocal: error: non-option arguments are not accepted: '\'.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp imsettings-1.6.8.orig/Makefile.am imsettings-1.6.8/Makefile.am
+--- imsettings-1.6.8.orig/Makefile.am	2013-02-08 11:33:59.000000000 +0900
++++ imsettings-1.6.8/Makefile.am	2015-06-24 14:15:32.070000007 +0900
+@@ -1,9 +1,7 @@
+ NULL =
+ SUBDIRS = data imsettings imsettings-daemon backends utils po tests docs
+ 
+-ACLOCAL_AMFLAGS =			\
+-	-I m4macros			\
+-	$(NULL)
++ACLOCAL_AMFLAGS = -I m4macros $(NULL)
+ 
+ CONFIGURE_DEPENDENCIES =		\
+ 	requires			\
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-extended/imsettings_1.6.8.bb b/import-layers/meta-openembedded/meta-xfce/recipes-extended/imsettings_1.6.8.bb
new file mode 100644
index 0000000..699547d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-extended/imsettings_1.6.8.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Delivery framework for general Input Method configuration"
+DESCRIPTION = "IMSettings is a framework that delivers Input Method \
+settings and applies the changes so they take effect \
+immediately without any need to restart applications \
+or the desktop. \
+This package contains the core DBus services and some utilities."
+HOMEPAGE = "http://code.google.com/p/imsettings/"
+SECTION = "Applications/System"
+
+inherit autotools gtk-doc
+
+SRC_URI = "https://bitbucket.org/tagoh/imsettings/downloads/${BPN}-${PV}.tar.bz2 \
+           file://gtk-is-required-by-notify.patch \
+           file://multi-line-ACLOCAL_AMFLAGS-isnot-supported-by-autoreconf.patch"
+
+SRC_URI[md5sum] = "c31429f1d60e36d7f811f871c75b6c41"
+SRC_URI[sha256sum] = "2620ffbf9a6dc842dbf994b4773d4fe355eb77076ccf33f726ba63f16c0d08ba"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+EXTRA_OECONF = "--with-xinputsh=50-xinput.sh \
+                --disable-static \
+               "
+
+DEPENDS = "gtk+ gconf libnotify dbus-glib libgxim xfconf"
+
+RDEPENDS_${PN} += "bash"
+
+FILES_${PN} += "${datadir}/dbus-1/*"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb b/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb
new file mode 100644
index 0000000..72a96f3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb
@@ -0,0 +1,11 @@
+SUMMARY = "All packages multimedia packages available for XFCE"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+inherit packagegroup
+
+RDEPENDS_${PN} = " \
+    parole \
+    xfmpc \
+    xfce4-mpc-plugin \
+"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/parole/parole_0.8.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/parole/parole_0.8.1.bb
new file mode 100644
index 0000000..f27396c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/parole/parole_0.8.1.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "Parole is a modern simple media player based on the GStreamer framework"
+HOMEPAGE = "http://goodies.xfce.org/projects/applications/parole"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+inherit xfce-app gtk-doc mime
+
+DEPENDS += " \
+    glib-2.0 \
+    dbus-glib \
+    gtk+3 \
+    \
+    xfce4-dev-tools-native \
+    libxfce4util \
+    libxfce4ui \
+    xfconf \
+    \
+    gstreamer1.0-plugins-base \
+    taglib \
+"
+
+SRC_URI[md5sum] = "361e3059f1263c76a3711db2c7c1a97b"
+SRC_URI[sha256sum] = "4b216f5200490f8d2a9bf1b3fcd9a8b20834c95249bf13b9170c82e1fcbd80f4"
+
+RDEPENDS_${PN} += "gstreamer1.0-plugins-good"
+
+PACKAGECONFIG ??= "notify"
+PACKAGECONFIG[clutter] = "--enable-clutter, --disable-clutter, clutter"
+PACKAGECONFIG[notify] = "--enable-notify-plugin, --disable-notify-plugin, libnotify"
+
+FILES_${PN} += " \
+    ${datadir}/appdata \
+    ${libdir}/parole-0/*.so \
+"
+FILES_${PN}-dbg += "${libdir}/parole-0/.debug"
+FILES_${PN}-dev += "${libdir}/parole-0/*.la"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/xfce4-mpc-plugin/xfce4-mpc-plugin_0.4.5.bb b/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/xfce4-mpc-plugin/xfce4-mpc-plugin_0.4.5.bb
new file mode 100644
index 0000000..964f5d3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/xfce4-mpc-plugin/xfce4-mpc-plugin_0.4.5.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Simple client plugin for Music Player Daemon"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-mpc-plugin"
+SECTION = "x11/application"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3604d987e6dfdfc672c754d08953b0e0"
+
+inherit xfce-panel-plugin
+
+DEPENDS += "libmpd"
+
+# for now we recommend our own mpd-server
+RRECOMMENDS_${PN} = "mpd"
+
+SRC_URI[md5sum] = "718e64748e46908a44cd0b96eacbda28"
+SRC_URI[sha256sum] = "e71f57a28915c57459d6ce0eeeee1d0934f523c0ed083158c3d3b3836fc06fcf"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/xfmpc/xfmpc_0.2.2.bb b/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/xfmpc/xfmpc_0.2.2.bb
new file mode 100644
index 0000000..b1cabd6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-multimedia/xfmpc/xfmpc_0.2.2.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Music Player Daemon (MPD) client written in GTK+"
+HOMEPAGE = "http://goodies.xfce.org/projects/applications/xfmpc"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "gtk+ libxfce4util libxfce4ui libmpd vala-native"
+
+# for now we recommend our own mpd-server
+RRECOMMENDS_${PN} = "mpd"
+
+inherit xfce-app
+
+SRC_URI[md5sum] = "e4e198850c2467c47783969ac9c16ec0"
+SRC_URI[sha256sum] = "ed0cc2940bd5928bb30fab1531c22185a97bd0cc5beacd9e3be4d4cd994a6862"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/battery/xfce4-battery-plugin/fix-build-on-aarch64.patch b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/battery/xfce4-battery-plugin/fix-build-on-aarch64.patch
new file mode 100644
index 0000000..ed4eec0
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/battery/xfce4-battery-plugin/fix-build-on-aarch64.patch
@@ -0,0 +1,34 @@
+Upstream-Status: Backport from 
+
+http://git.xfce.org/panel-plugins/xfce4-battery-plugin/commit/?id=0f6926479728ca784a20b63d7c146a91e37d98fb
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+From 0f6926479728ca784a20b63d7c146a91e37d98fb Mon Sep 17 00:00:00 2001
+From: Landry Breuil <landry@xfce.org>
+Date: Thu, 19 Mar 2015 20:42:24 +0100
+Subject: Fix build on aarch64 (bug #11724)
+
+
+diff --git a/panel-plugin/libacpi.c b/panel-plugin/libacpi.c
+index 530194d..efb5c9c 100644
+--- a/panel-plugin/libacpi.c
++++ b/panel-plugin/libacpi.c
+@@ -29,6 +29,7 @@
+ #include <sys/types.h>
+ #include <dirent.h>
+ #include <glob.h>
++#include <unistd.h>
+ 
+ #ifdef __FreeBSD__
+ #include <fcntl.h>
+@@ -52,7 +53,6 @@ static int      acpifd;
+ #include <sys/sysctl.h>
+ #include <err.h>
+ #include <errno.h>
+-#include <unistd.h>
+ 
+ #endif
+ 
+-- 
+cgit v0.10.1
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/battery/xfce4-battery-plugin_1.0.5.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/battery/xfce4-battery-plugin_1.0.5.bb
new file mode 100644
index 0000000..5293c9e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/battery/xfce4-battery-plugin_1.0.5.bb
@@ -0,0 +1,11 @@
+SUMMARY = "A battery monitor panel plugin for Xfce4, compatible with APM and ACP"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-battery-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit xfce-panel-plugin
+
+SRC_URI += "file://fix-build-on-aarch64.patch"
+
+SRC_URI[md5sum] = "ca2d394e411a20442a519efa0d14f8ec"
+SRC_URI[sha256sum] = "f659b1af40ab72c93448affaa693ab551827a5600ce9b97a799b7c2419bdeb11"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/calculator/xfce4-calculator-plugin_0.5.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/calculator/xfce4-calculator-plugin_0.5.1.bb
new file mode 100644
index 0000000..cb1fa5e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/calculator/xfce4-calculator-plugin_0.5.1.bb
@@ -0,0 +1,9 @@
+SUMMARY = "A calculator plugin for the Xfce panel"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-calculator-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "8d7bf07a669a2884a409a7b03f89be5c"
+SRC_URI[sha256sum] = "7dcb04a3da7b85cb1f35f546c366fe8529f1c15f1c8c290edb91d16c07f5fd6d"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/clipman/xfce4-clipman-plugin_1.2.6.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/clipman/xfce4-clipman-plugin_1.2.6.bb
new file mode 100644
index 0000000..a07f3cc
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/clipman/xfce4-clipman-plugin_1.2.6.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Clipman is a clipboard manager for Xfce"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-clipman-plugin"
+SECTION = "x11/application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+inherit xfce-panel-plugin
+
+DEPENDS += "xfconf xproto libxtst"
+
+SRC_URI[md5sum] = "f7f2440647493243cbd7787eaee92fcb"
+SRC_URI[sha256sum] = "23043f99c3e5257d1f3d68b5ee5125e3469c15620d098e22c6250386197f48a5"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[unique] = "--enable-unique,--disable-unique,libunique"
+PACKAGECONFIG[qrencode] = "--enable-libqrencode,--disable-libqrencode,qrencode"
+
+FILES_${PN} += "${datadir}/appdata"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/closebutton/xfce4-closebutton-plugin_git.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/closebutton/xfce4-closebutton-plugin_git.bb
new file mode 100644
index 0000000..341107f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/closebutton/xfce4-closebutton-plugin_git.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Plugin displaying close button for application currently active"
+SECTION = "x11"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b6952d9a47fc2ad0f315510e1290455f"
+
+inherit xfce-panel-plugin xfce-git gtk-icon-cache perlnative
+
+DEPENDS += "exo-native libwnck xfconf"
+
+PV = "0.1.0+gitr${SRCPV}"
+
+SRC_URI = "git://github.com/schnitzeltony/xfce4-closebutton-plugin.git;branch=master"
+SRCREV = "bd76154afe26ba8a5251a1887d88f9d855301850"
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF += "--enable-maintainer-mode"
+
+FILES_${PN} += "${datadir}/xfce4/closebutton/themes"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/cpufreq/xfce4-cpufreq-plugin_1.1.2.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/cpufreq/xfce4-cpufreq-plugin_1.1.2.bb
new file mode 100644
index 0000000..ac2a811
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/cpufreq/xfce4-cpufreq-plugin_1.1.2.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Panel plugin to display frequency of all cpus"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-cpufreq-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1f6f1c0be32491a0c8d2915607a28f36"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "bfc4c8277cb009439fb4c7aec8679126"
+SRC_URI[sha256sum] = "fd9ca91b99e830c6b0962a07eb269ce814ed773cd6008081771fd04060fe6ce9"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/cpugraph/xfce4-cpugraph-plugin_1.0.5.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/cpugraph/xfce4-cpugraph-plugin_1.0.5.bb
new file mode 100644
index 0000000..83e2bb5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/cpugraph/xfce4-cpugraph-plugin_1.0.5.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Panel plugin with graphical representation of the cpu frequency"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-cpugraph-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=415654f59d8fa70fe4eac2c3f86c8f5e"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "f0ebfabb273adf69361b37a3fa4b7912"
+SRC_URI[sha256sum] = "85da0ec89aacfd31e0bbafcefea37cdca618d62e681c1c9da8bdd492f028f4c7"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/datetime/xfce4-datetime-plugin_0.6.2.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/datetime/xfce4-datetime-plugin_0.6.2.bb
new file mode 100644
index 0000000..a97ba6c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/datetime/xfce4-datetime-plugin_0.6.2.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Panel plugin displaying date and time and a calendar when left-clicked"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-datetime-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "fe604a251eadbc5b0f2b4737b85d92c8"
+SRC_URI[sha256sum] = "9734da671e8d1d7de5fae92093a05d653c9245b838542fb9aff3e10368cc9e2c"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/diskperf/xfce4-diskperf-plugin_2.5.5.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/diskperf/xfce4-diskperf-plugin_2.5.5.bb
new file mode 100644
index 0000000..801699c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/diskperf/xfce4-diskperf-plugin_2.5.5.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Panel plugin displaying instant disk/partition performance"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-diskperf-plugin"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d3e627798d6a60bece47aa8b3532e1f1"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "199e4365cb3a1fcd5f6164044aedba17"
+SRC_URI[sha256sum] = "cbeb0c00f97362eef3f135afb77947aef73e938bae0386250a122ac6644b521b"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/embed/xfce4-embed-plugin_1.0.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/embed/xfce4-embed-plugin_1.0.0.bb
new file mode 100644
index 0000000..32d6edf
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/embed/xfce4-embed-plugin_1.0.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "A panel plugin that embeds arbitrary windows (or GtkPlug widgets) into the panel."
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-embed-plugin"
+SECTION = "x11/application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit xfce-panel-plugin
+
+# DEPENDS += "xfconf xproto libxtst"
+
+SRC_URI[md5sum] = "c5b86cbc1c54ee7c1d2e95a4502fed8e"
+SRC_URI[sha256sum] = "35d4c6c56dd6468c0e5afe66f657c1526f2d830a577105a51da43657651832e3"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/equake/xfce4-equake-plugin_1.3.8.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/equake/xfce4-equake-plugin_1.3.8.bb
new file mode 100644
index 0000000..76d25f8
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/equake/xfce4-equake-plugin_1.3.8.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Equake XFCE is a panel plugin for the XFCE panel which monitors earthquakes and displays an update each time a new earthquake occurs."
+HOMEPAGE = "http://freecode.com/projects/equake-xfce"
+SECTION = "x11/application"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "c8f6cb2aec62513c343281eacc4fc395"
+SRC_URI[sha256sum] = "431575da3d49fea3afa60f02e83c8d74e20e9a229c9c4ec82c21d45e2c986925"
+
+FILES_${PN} += "${libdir}/xfce4/panel-plugins/xfce4-equake-plugin"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/eyes/xfce4-eyes-plugin_4.4.4.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/eyes/xfce4-eyes-plugin_4.4.4.bb
new file mode 100644
index 0000000..ee32219
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/eyes/xfce4-eyes-plugin_4.4.4.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Panel plugin with graphical representation of the cpu frequency"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-eyes-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "136f52a256fad8cfd29fb2976e08ebc8"
+SRC_URI[sha256sum] = "240ce85b68d3d161f276ebbea97072dd6ee3df77062fd073bf6eeb4d3d1400ca"
+
+FILES_${PN} += "${datadir}/xfce4/eyes"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/fsguard/xfce4-fsguard-plugin_1.0.2.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/fsguard/xfce4-fsguard-plugin_1.0.2.bb
new file mode 100644
index 0000000..0f9199d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/fsguard/xfce4-fsguard-plugin_1.0.2.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "The FSGuard panel plugin checks free space on a chosen mount point frequently and displays a message when a limit is reached"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-fsguard-plugin?&#recet_releases"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "db7741d1827e428b005e94d25e2ec00a"
+SRC_URI[sha256sum] = "a2c8d59386ae3d23cf6bdd06a1cdd7a1b9473cf6f38ae106600b194c601040ae"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/genmon/files/0001-Allow-timer-period-to-be-set-at-250ms-resolution.-Pa.patch b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/genmon/files/0001-Allow-timer-period-to-be-set-at-250ms-resolution.-Pa.patch
new file mode 100644
index 0000000..28c0eb1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/genmon/files/0001-Allow-timer-period-to-be-set-at-250ms-resolution.-Pa.patch
@@ -0,0 +1,36 @@
+From 2d5fa307827a7b32af4f7b2ae0604f943e3a6e99 Mon Sep 17 00:00:00 2001
+From: John Lindgren <john.lindgren@aol.com>
+Date: Tue, 21 Aug 2012 19:33:45 -0400
+Subject: [PATCH] Allow timer period to be set at 250ms resolution.  Patch
+ from Miguel Guedes.  Closes: #9102.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Applied [1]
+
+[1] http://git.xfce.org/panel-plugins/xfce4-genmon-plugin/commit/?id=2d5fa307827a7b32af4f7b2ae0604f943e3a6e99
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ panel-plugin/config_gui.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/panel-plugin/config_gui.c b/panel-plugin/config_gui.c
+index a4c891d..90e55c1 100644
+--- a/panel-plugin/config_gui.c
++++ b/panel-plugin/config_gui.c
+@@ -106,8 +106,8 @@ int genmon_CreateConfigGUI (GtkWidget *vbox1,
+     gtk_widget_show (alignment1);
+     gtk_container_add (GTK_CONTAINER (eventbox1), alignment1);
+ 
+-    wSc_Period_adj = gtk_adjustment_new (15, 1, 60*60*24, 1, 1, 0);
+-    wSc_Period = gtk_spin_button_new (GTK_ADJUSTMENT (wSc_Period_adj), 1, 0);
++    wSc_Period_adj = gtk_adjustment_new (15, .25, 60*60*24, .25, 1, 0);
++    wSc_Period = gtk_spin_button_new (GTK_ADJUSTMENT (wSc_Period_adj), .25, 2);
+     gtk_widget_show (wSc_Period);
+     gtk_container_add (GTK_CONTAINER (alignment1), wSc_Period);
+     gtk_tooltips_set_tip (tooltips, wSc_Period,
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/genmon/xfce4-genmon-plugin_3.4.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/genmon/xfce4-genmon-plugin_3.4.0.bb
new file mode 100644
index 0000000..a13db62
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/genmon/xfce4-genmon-plugin_3.4.0.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "This plugin cyclically spawns the indicated script/program, captures its output (stdout) and displays the resulting string into the panel."
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-genmon-plugin"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=68ad62c64cc6c620126241fd429e68fe"
+
+inherit xfce-panel-plugin
+
+SRC_URI += "file://0001-Allow-timer-period-to-be-set-at-250ms-resolution.-Pa.patch"
+
+SRC_URI[md5sum] = "24108b339bb040ed360266f53a245224"
+SRC_URI[sha256sum] = "b0a5337b49c85623dc89f3c9e47c7374b1d466af2418033d2d6dfc57a9790387"
+
+S = "${WORKDIR}/xfce4-genmon-plugin-3.4"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/hotcorner/xfce4-hotcorner-plugin_0.0.2.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/hotcorner/xfce4-hotcorner-plugin_0.0.2.bb
new file mode 100644
index 0000000..f86c92e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/hotcorner/xfce4-hotcorner-plugin_0.0.2.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Plugin providing hotcorners"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://README.md;beginline=48;endline=53;md5=2c694b8e0f73274b13465b509e4f5427"
+
+inherit xfce-panel-plugin cmake
+
+DEPENDS += "libwnck3"
+
+SRC_URI = "https://github.com/brianhsu/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "ac31b45cda1867cb6bd69bb285638263"
+SRC_URI[sha256sum] = "942684c92f96a158e1417e597947f822769ac56aa1993a8c9f166ee633ef2b8d"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/kbdleds/xfce4-kbdleds-plugin_0.0.6.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/kbdleds/xfce4-kbdleds-plugin_0.0.6.bb
new file mode 100644
index 0000000..caf5508
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/kbdleds/xfce4-kbdleds-plugin_0.0.6.bb
@@ -0,0 +1,15 @@
+SUMMARY = "XFCE panel plugin displaying status of keyboard LEDs"
+DESCRIPTION = "This plugin shows the state of your keyboard LEDs: Caps, Scroll and Num Lock in Xfce panel"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-kbdleds-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+    file://COPYING.LIB;md5=252890d9eee26aab7b432e8b8a616475 \
+"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "db6ad8e3502f3373f087ba2034141552"
+SRC_URI[sha256sum] = "6d280ad7207bcb9cc87c279dc3ab9084fd93325e87f67858e8917729b50201cd"
+
+FILES_${PN} += "${libdir}/xfce4/panel-plugins/xfce4-kbdleds-plugin"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/mailwatch/xfce4-mailwatch-plugin_1.2.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/mailwatch/xfce4-mailwatch-plugin_1.2.0.bb
new file mode 100644
index 0000000..00859a1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/mailwatch/xfce4-mailwatch-plugin_1.2.0.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Multi-protocol, multi-mailbox mail watcher for the Xfce4 panel"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-mailwatch-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit xfce-panel-plugin
+
+DEPENDS += "gnutls libgcrypt"
+
+SRC_URI[md5sum] = "7263114ec0f2987a3aff15afeeb45577"
+SRC_URI[sha256sum] = "624acc8229a8593c0dfeb28f883f4958119a715cc81cecdbaf29efc8ab1edcad"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin_0.6.4.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin_0.6.4.bb
new file mode 100644
index 0000000..6dc2c17
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin_0.6.4.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Mount/umount utility for the xfce panel"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-mount-plugin"
+SECTION = "x11/application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "f5917e9aa2a06bc6a872cc10d2ee4f6f"
+SRC_URI[sha256sum] = "541d7af84d7d0b00ae547aa1f438e2fac51ee4195c4d0a17173c4f72accb227d"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/netload/xfce4-netload-plugin_1.2.4.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/netload/xfce4-netload-plugin_1.2.4.bb
new file mode 100644
index 0000000..c9f7a2a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/netload/xfce4-netload-plugin_1.2.4.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Panel plugin displaying current load of the network interfaces"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-netload-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=35a7203c41b86d15546dddc05995f97f"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "ce53e1135e4bff5afcd899627110bd11"
+SRC_URI[sha256sum] = "fface918822c012d806717116566e54947ad7613b9290b45a18e2d5ffb8730d3"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/notes/files/0001-main-status-icon.c-remove-deprecated-g_type_init.patch b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/notes/files/0001-main-status-icon.c-remove-deprecated-g_type_init.patch
new file mode 100644
index 0000000..e1ede27
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/notes/files/0001-main-status-icon.c-remove-deprecated-g_type_init.patch
@@ -0,0 +1,32 @@
+From 0218e5ebf38f94d58b908fca451ba3789efa8899 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Fri, 20 Sep 2013 23:09:25 +0200
+Subject: [PATCH] main-status-icon.c remove deprecated g_type_init
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+this file was auto created by valac and xfce-vala when creating tarball. So
+
+Upstream-Status: Inappropriate [other]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ src/main-status-icon.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/main-status-icon.c b/src/main-status-icon.c
+index c6d73f8..f7db773 100644
+--- a/src/main-status-icon.c
++++ b/src/main-status-icon.c
+@@ -290,7 +290,6 @@ gint _vala_main (char** args, int args_length1) {
+ 
+ 
+ int main (int argc, char ** argv) {
+-	g_type_init ();
+ 	return _vala_main (argv, argc);
+ }
+ 
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/notes/xfce4-notes-plugin_1.8.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/notes/xfce4-notes-plugin_1.8.1.bb
new file mode 100644
index 0000000..313534b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/notes/xfce4-notes-plugin_1.8.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Notes plugin for the Xfce Panel"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-notes-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit xfce-panel-plugin
+
+DEPENDS += "gtk+ libxfce4ui xfce4-panel xfconf libunique"
+
+SRC_URI += " \
+    file://0001-main-status-icon.c-remove-deprecated-g_type_init.patch \
+"
+SRC_URI[md5sum] = "31cb9520b01512a94344770b4befdb3b"
+SRC_URI[sha256sum] = "07a4c3e71431c24f97d2e270452dd0fa51ff0bdb6219a13a20d0bfa8d9de54b2"
+
+FILES_${PN} += "${libdir}/xfce4/panel-plugins/*.so.*"
+
+# *.so are required for plugin detection
+INSANE_SKIP_${PN} = "dev-so"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/places/xfce4-places-plugin_1.7.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/places/xfce4-places-plugin_1.7.0.bb
new file mode 100644
index 0000000..16be09d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/places/xfce4-places-plugin_1.7.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Panel plugin displaying menu with quick access to folders, documents, and removable media"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-places-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b6952d9a47fc2ad0f315510e1290455f"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "fcae9b38a8affcd82699a94991bba29b"
+SRC_URI[sha256sum] = "4175c614749abbb5bcf6f49c88125fb0dd36db69f4c374df23563907b16e2c3f"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[notify] = "--enable-notifications,--disable-notifications,libnotify"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/pulseaudio/xfce4-pulseaudio-plugin_0.2.4.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/pulseaudio/xfce4-pulseaudio-plugin_0.2.4.bb
new file mode 100644
index 0000000..65026ac
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/pulseaudio/xfce4-pulseaudio-plugin_0.2.4.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Pulseaudio mixer for the xfce panel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f5eac6bb0d6ec0dc655e417781d4015f"
+
+inherit xfce-panel-plugin distro_features_check
+
+REQUIRED_DISTRO_FEATURES = "pulseaudio"
+
+DEPENDS += "pulseaudio"
+
+SRC_URI[md5sum] = "e0ffde419fa030f1f9bd0b56e3264a1c"
+SRC_URI[sha256sum] = "8d9330ddf1d44a864a36d566cce4b76d4f859c5984bba7653d7dc39aa24d5c3e"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[libnotify] = "--enable-libnotify,--disable-libnotify,libnotify"
+
+RRECOMMENDS_${PN} = "pavucontrol"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/sensors/xfce4-sensors-plugin_1.2.6.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/sensors/xfce4-sensors-plugin_1.2.6.bb
new file mode 100644
index 0000000..c2e0ed9
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/sensors/xfce4-sensors-plugin_1.2.6.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Sensors plugin for the Xfce Panel"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-sensors-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b94789bed9aec03b9656a9cc5398c706"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "33c2e343c1224d9c4ae757a70cbe08eb"
+SRC_URI[sha256sum] = "235ef842bd45e701bceebb21a384ab09f21afceea8ed95f91bb4c6cf3abe1bc0"
+
+EXTRA_OECONF = " \
+    --disable-procacpi \
+    --disable-sysfsacpi \
+    --disable-xnvctrl \
+"
+
+do_configure_prepend() {
+    sed -i 's:LIBSENSORS_CFLAGS=.*:LIBSENSORS_CFLAGS=-I${STAGING_INCDIR}:g' ${S}/configure.ac
+}
+
+PACKAGECONFIG ??= "libsensors"
+PACKAGECONFIG[libsensors] = "--enable-libsensors,--disable-libsensors, lmsensors"
+PACKAGECONFIG[hddtemp]    = "--enable-hddtemp,--disable-hddtemp, hddtemp"
+PACKAGECONFIG[netcat]     = "--enable-netcat,--disable-netcat, netcat"
+PACKAGECONFIG[libnotify]  = "--enable-notification,--disable-notification, libnotify"
+
+FILES_SOLIBSDEV = "${libdir}/xfce4/modules/lib*${SOLIBSDEV}"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/smartbookmark/xfce4-smartbookmark-plugin_0.4.6.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/smartbookmark/xfce4-smartbookmark-plugin_0.4.6.bb
new file mode 100644
index 0000000..3f47f06
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/smartbookmark/xfce4-smartbookmark-plugin_0.4.6.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Panel plugin allowing to send requests directly to browser"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-smartbookmark-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "01b7735d4d9ab0150d4ddd3becb94d5f"
+SRC_URI[sha256sum] = "3bed2b322cd39ce5845d6da07938c702260f3f1a9700b690ef377fba752ba24f"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/systemload/xfce4-systemload-plugin_1.1.2.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/systemload/xfce4-systemload-plugin_1.1.2.bb
new file mode 100644
index 0000000..c212f88
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/systemload/xfce4-systemload-plugin_1.1.2.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Panel plugin displaying current CPU load, the memory in use, the swap space and the system uptime"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-systemload-plugin"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9acb172a93ff6c43cce2aff790a8aef8"
+
+inherit xfce-panel-plugin
+
+DEPENDS += "upower"
+
+SRC_URI[md5sum] = "68c9d20b352c13f3eb6b39a0d9fe2ba2"
+SRC_URI[sha256sum] = "b469b6b3a08ec29b9061151950d876d36bf25a3106ec77256923fdd6b5d18a7c"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/time-out/xfce4-time-out-plugin_1.0.2.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/time-out/xfce4-time-out-plugin_1.0.2.bb
new file mode 100644
index 0000000..facbb0d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/time-out/xfce4-time-out-plugin_1.0.2.bb
@@ -0,0 +1,10 @@
+SUMMARY = "This plugin makes it possible to take periodical breaks"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-time-out-plugin"
+SECTION = "x11/application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "d7d743794a766ba1b00647828a099053"
+SRC_URI[sha256sum] = "c69fb7218c685e516454810291c5245c49a80d774a6bded59c645a1af427c4e5"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/timer/xfce4-timer-plugin_1.6.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/timer/xfce4-timer-plugin_1.6.0.bb
new file mode 100644
index 0000000..d61235f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/timer/xfce4-timer-plugin_1.6.0.bb
@@ -0,0 +1,10 @@
+SUMMARY = "XFCE panel plugin to generate alarm messages"
+DESCRIPTION = "This is a simple plugin that lets the user run an alarm at a specified time or at the end of a specified countdown period"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-timer-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ae39271267fd63eb7619432ff24e7ff1"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "3be2a4ccfb2af20441b1d25c2cea5f28"
+SRC_URI[sha256sum] = "39d7d21f099bc4219f6a6156142f0bbb8374986ee1970a9c0c8dc138b87f867c"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/verve/xfce4-verve-plugin_1.1.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/verve/xfce4-verve-plugin_1.1.0.bb
new file mode 100644
index 0000000..65503a4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/verve/xfce4-verve-plugin_1.1.0.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Verve panel plugin is a comfortable command line plugin for the Xfce panel"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-verve-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "ddd0190ae56f6117dbcf9ff2bf5a8cbf"
+SRC_URI[sha256sum] = "a3196f818c7ad57d19cd6581e168fd2b9f96de070246aea70c35ce2e5f9d9c84"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/wavelan/xfce4-wavelan-plugin_0.5.12.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/wavelan/xfce4-wavelan-plugin_0.5.12.bb
new file mode 100644
index 0000000..1ccd557
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/wavelan/xfce4-wavelan-plugin_0.5.12.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Panel plugin displaying stats from a wireless lan interface"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-wavelan-plugin"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e1e5872df9c5cf1a23f16493d9104920"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "3ba5ee0626612942d249d4a80a1a67b7"
+SRC_URI[sha256sum] = "67dce45739f063b95e2bc2232c625277685887b1f84088316d919671b5500ac4"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/weather/xfce4-weather-plugin_0.8.7.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/weather/xfce4-weather-plugin_0.8.7.bb
new file mode 100644
index 0000000..3519f4a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/weather/xfce4-weather-plugin_0.8.7.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Panel plugin to display current temperature and weather condition"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-weather-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+inherit xfce-panel-plugin
+
+DEPENDS += "libsoup-2.4 dbus-glib upower"
+
+SRC_URI[md5sum] = "ecab0eaad870e460da4597e76f43e6e6"
+SRC_URI[sha256sum] = "071e71106868c7d90c936256d837ca834d0ca6f54daea59a9b5fc11b318e65b0"
+
+FILES_${PN} += "${datadir}/xfce4/weather"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/whiskermenu/xfce4-whiskermenu-plugin_1.5.3.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/whiskermenu/xfce4-whiskermenu-plugin_1.5.3.bb
new file mode 100644
index 0000000..60bf114
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/whiskermenu/xfce4-whiskermenu-plugin_1.5.3.bb
@@ -0,0 +1,9 @@
+SUMMARY = "An alternate menu for the Xfce desktop environment"
+HOMEPAGE = "http://gottcode.org/xfce4-whiskermenu-plugin/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+inherit xfce-panel-plugin cmake
+
+SRC_URI[md5sum] = "ef51234117dabdf02f2f415643d858d6"
+SRC_URI[sha256sum] = "68a8273395671d5163fd8cd9a73755ef03d4ea74891204498a21582a9c2e925b"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/xkb/xfce4-xkb-plugin_0.7.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/xkb/xfce4-xkb-plugin_0.7.1.bb
new file mode 100644
index 0000000..2fa1634
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-panel-plugins/xkb/xfce4-xkb-plugin_0.7.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "XKB layout switching panel plug-in for the Xfce desktop environment"
+HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-xkb-plugin"
+SECTION = "x11/application"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=496f09f084b0f7e6f02f769a84490c6b"
+
+inherit xfce-panel-plugin
+
+SRC_URI[md5sum] = "2f68e0d53baf68ecc1a7165ad33c26a9"
+SRC_URI[sha256sum] = "61fe2e33fe99939d5d06a682e94e40e05ef844c930ad612154090d158b2ce681"
+
+DEPENDS += "libxklavier libwnck librsvg garcon"
+
+FILES_${PN} += "${datadir}/xfce4/xkb"
+
+RDEPENDS_${PN} = "xfce4-settings"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-support/vim/vim_%.bbappend b/import-layers/meta-openembedded/meta-xfce/recipes-support/vim/vim_%.bbappend
new file mode 100644
index 0000000..25403e6
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-support/vim/vim_%.bbappend
@@ -0,0 +1,6 @@
+do_install_append() {
+	# The mouse being autoenabled is just annoying in xfce4-terminal (mouse
+	# drag make vim go into visual mode and there is no right click menu),
+	# delete the block.
+	sed -i '/the mouse works just fine/,+4d' ${D}/${datadir}/${BPN}/vimrc
+}
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-thunar-plugins/archive/thunar-archive-plugin_0.3.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-thunar-plugins/archive/thunar-archive-plugin_0.3.1.bb
new file mode 100644
index 0000000..90ab6af
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-thunar-plugins/archive/thunar-archive-plugin_0.3.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Thunar Archive Plugin allows you to create and extract archive files using file context menus in Thunar"
+HOMEPAGE = "http://goodies.xfce.org/projects/thunar-plugins/thunar-archive-plugin"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=252890d9eee26aab7b432e8b8a616475"
+
+inherit thunar-plugin
+
+SRC_URI[md5sum] = "425f4faaace6dc7a4716a35b7795463a"
+SRC_URI[sha256sum] = "9ad559b0c11308f6897ad56604e5a06dc8f369f649eb20120b2d3018ef5da54c"
+
+# install tap files in ${libdir}/thunar-archive-plugin
+EXTRA_OECONF += "--libexecdir=${libdir}"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-thunar-plugins/media-tags/thunar-media-tags-plugin_0.2.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-thunar-plugins/media-tags/thunar-media-tags-plugin_0.2.1.bb
new file mode 100644
index 0000000..90f150b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-thunar-plugins/media-tags/thunar-media-tags-plugin_0.2.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Adds ID3/OGG tag support to the Thunar bulk rename dialog"
+HOMEPAGE = "http://thunar.xfce.org"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit thunar-plugin
+
+DEPENDS += "taglib"
+
+SRC_URI[md5sum] = "0106e900714f86ccbafdc72238d3cf8d"
+SRC_URI[sha256sum] = "056d012a10403ee3e2e55b6ff2faecb796821de9ebee000315589b95d95ed253"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo/configure.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo/configure.patch
new file mode 100644
index 0000000..ef27e42
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo/configure.patch
@@ -0,0 +1,43 @@
+--- a/configure.ac	2007-12-02 10:37:06.000000000 -0200
++++ b/configure.ac	2008-06-05 17:21:42.000000000 -0300
+@@ -127,22 +127,24 @@
+ dnl ***************************************
+ dnl *** Check for strftime() extensions ***
+ dnl ***************************************
+-AC_TRY_RUN([
+-  #include <string.h>
+-  #include <time.h>
+-  int
+-  main (int argc, char **argv)
+-  {
+-    struct tm tm;
+-    char      buffer[16];
+-    tm.tm_year = 81;
+-    if (strftime (buffer, 16, "%EY", &tm) == 4 && strcmp (buffer, "1981") == 0)
+-      return 0;
+-    return 1;
+-  }
+-], [
+-  AC_DEFINE([HAVE_STRFTIME_EXTENSION], 1, [Define if strftime supports %E and %O modifiers.])
+-])
++dnl grrrr...  this doesn't work for cross compiling, define it for OE
++AC_DEFINE([HAVE_STRFTIME_EXTENSION], 1, [Define if strftime supports %E and %O modifiers.])
++dnl AC_TRY_RUN([
++dnl   #include <string.h>
++dnl   #include <time.h>
++dnl   int
++dnl   main (int argc, char **argv)
++dnl   {
++dnl     struct tm tm;
++dnl     char      buffer[16];
++dnl     tm.tm_year = 81;
++dnl     if (strftime (buffer, 16, "%EY", &tm) == 4 && strcmp (buffer, "1981") == 0)
++dnl       return 0;
++dnl     return 1;
++dnl   }
++dnl ], [
++dnl   AC_DEFINE([HAVE_STRFTIME_EXTENSION], 1, [Define if strftime supports %E and %O modifiers.])
++dnl ])
+ 
+ dnl ******************************
+ dnl *** Check for i18n support ***
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo/exo-no-tests-0.8.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo/exo-no-tests-0.8.patch
new file mode 100644
index 0000000..ac8bca5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo/exo-no-tests-0.8.patch
@@ -0,0 +1,31 @@
+From 5f1e19860d89647488bdd32a02fb332f69434405 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Fri, 18 May 2012 21:13:00 +0200
+Subject: [PATCH] Do not run tests at build time
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Upstream-Status: Not-Applicable
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ Makefile.am |    3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 0ab3853..3e72391 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -8,8 +8,7 @@ SUBDIRS =								\
+ 	docs								\
+ 	icons								\
+ 	pixmaps								\
+-	po								\
+-	tests
++	po
+ 
+ AUTOMAKE_OPTIONS =							\
+ 	1.9								\
+-- 
+1.7.4.4
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo/reduce-build-to-exo-csource-only.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo/reduce-build-to-exo-csource-only.patch
new file mode 100644
index 0000000..246511c
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo/reduce-build-to-exo-csource-only.patch
@@ -0,0 +1,82 @@
+From e710d8d4a3e3480416826c70d56ea3d2598a77e4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Thu, 28 Mar 2013 23:41:03 +0100
+Subject: [PATCH] reduce build to exo-csource only
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+exo-csource creates c-header files from glade resource output files. When
+building xfce-packages from git instead of tarball this exo-csource-native is
+required.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ Makefile.am  | 10 +---------
+ configure.ac | 20 --------------------
+ 2 files changed, 1 insertion(+), 29 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index ad7c6ce..3acd94a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,15 +1,7 @@
+ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
+ 
+ SUBDIRS =								\
+-	exo								\
+-	exo-csource							\
+-	exo-desktop-item-edit						\
+-	exo-helper							\
+-	exo-open							\
+-	docs								\
+-	icons								\
+-	pixmaps								\
+-	po
++	exo-csource
+ 
+ distclean-local:
+ 	rm -rf *.cache *~
+diff --git a/configure.ac b/configure.ac
+index bb9be05..23471d0 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -116,15 +116,6 @@ AC_PROG_CC()
+ AM_PROG_CC_C_O()
+ AC_PROG_INSTALL()
+ IT_PROG_INTLTOOL([intltool_minimum_version], [no-xml])
+-AC_CHECK_PROGS([PERL], [perl5 perl])
+-
+-dnl ***************************************
+-dnl *** Check for required Perl modules ***
+-dnl ***************************************
+-AC_PROG_PERL_MODULES([URI::Escape URI::file URI::URL], [],
+-[
+-  AC_MSG_ERROR([Atleast one of the required Perl modules (URI::Escape, URI::file and URI::URL) was not found on your system])
+-])
+ 
+ dnl ***************************************
+ dnl *** Check for standard header files ***
+@@ -171,17 +162,6 @@ dnl ***********************************
+ dnl *** Check for required packages ***
+ dnl ***********************************
+ XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.30.0])
+-XDT_CHECK_PACKAGE([GIO], [gio-2.0], [2.30.0])
+-XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.24.0])
+-XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.30.0])
+-XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.10.0])
+-XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1], [4.10.0])
+-XDT_CHECK_OPTIONAL_PACKAGE([GIO_UNIX], [gio-unix-2.0], [2.30.0], [gio-unix], [GIO-Unix features])
+-
+-dnl *********************
+-dnl *** Check for X11 ***
+-dnl *********************
+-XDT_CHECK_LIBX11_REQUIRE()
+ 
+ dnl *************************
+ dnl *** Check for gtk-doc ***
+-- 
+1.9.3
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_0.10.6.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_0.10.6.bb
new file mode 100644
index 0000000..f1b5ae5
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_0.10.6.bb
@@ -0,0 +1,36 @@
+DESCRIPTION="Application library for the Xfce desktop environment"
+SECTION = "x11"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "gtk+ libxfce4util libxfce4ui virtual/libx11 liburi-perl-native cairo"
+DEPENDS_class-native = "glib-2.0-native xfce4-dev-tools-native intltool-native"
+
+inherit xfce pythonnative perlnative gtk-doc
+
+# SRC_URI must follow inherited one
+SRC_URI += " \
+    file://exo-no-tests-0.8.patch \
+    file://configure.patch \
+"
+
+SRC_URI_append_class-native = " \
+    file://reduce-build-to-exo-csource-only.patch \
+"
+
+SRC_URI[md5sum] = "895e4f38d2cfe58d69679e2902a335a5"
+SRC_URI[sha256sum] = "1cc0e5a432e050a5e5aa64d126b988f4440da4f27474aaf42a4d8e13651d0752"
+
+PACKAGES =+ "exo-csource"
+
+# Note: python bindings did not work in oe-dev and are about to be moved to
+# pyxfce see http://comments.gmane.org/gmane.comp.desktop.xfce.devel.version4/19560
+FILES_${PN} += "${datadir}/xfce4/ \
+                ${libdir}/xfce4/exo-1 \
+"
+
+FILES_${PN}-dbg += "${libdir}/gio/modules/.debug \
+"
+
+FILES_exo-csource += "${bindir}/exo-csource"
+
+BBCLASSEXTEND = "native"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/garcon/files/0001-xfce-applications.menu-don-t-bloat-settings-menu-by-.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/garcon/files/0001-xfce-applications.menu-don-t-bloat-settings-menu-by-.patch
new file mode 100644
index 0000000..e5ad4e1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/garcon/files/0001-xfce-applications.menu-don-t-bloat-settings-menu-by-.patch
@@ -0,0 +1,35 @@
+From f5398b49cc6fd7a53562aae2abbac0d9c656559c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Wed, 15 May 2013 14:17:49 +0200
+Subject: [garcon] xfce-applications.menu: don't bloat settings menu by
+ entries found in settings manager
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Submitted [1]
+
+[1] https://bugzilla.xfce.org/show_bug.cgi?id=10092
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ data/xfce/xfce-applications.menu |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/data/xfce/xfce-applications.menu b/data/xfce/xfce-applications.menu
+index dc3056b..c2aa0bb 100644
+--- a/data/xfce/xfce-applications.menu
++++ b/data/xfce/xfce-applications.menu
+@@ -34,6 +34,9 @@
+         <Include>
+             <Category>Settings</Category>
+         </Include>
++        <Exclude>
++            <Category>X-XFCE-SettingsDialog</Category>
++        </Exclude>
+ 
+         <Layout>
+             <Filename>xfce-settings-manager.desktop</Filename>
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/garcon/garcon_0.4.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/garcon/garcon_0.4.0.bb
new file mode 100644
index 0000000..81f6ce1
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/garcon/garcon_0.4.0.bb
@@ -0,0 +1,13 @@
+DESCRIPTION="Xfce Menu Library"
+SECTION = "x11/libs"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=04a01abcbdabffae1ca26335a293276b"
+DEPENDS = "xfce4-dev-tools-native libxfce4util libxfce4ui intltool-native"
+
+inherit xfce gtk-doc
+
+SRC_URI += "file://0001-xfce-applications.menu-don-t-bloat-settings-menu-by-.patch"
+SRC_URI[md5sum] = "aba62b80787aac295083bf7afd419ffb"
+SRC_URI[sha256sum] = "787dc859713b6518992d760d4b858fb02e8a30705e6f6e871d7a14cc97bca972"
+
+FILES_${PN} += "${datadir}/desktop-directories"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/gtk-xfce-engine/gtk-xfce-engine_3.2.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/gtk-xfce-engine/gtk-xfce-engine_3.2.0.bb
new file mode 100644
index 0000000..b9835ab
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/gtk-xfce-engine/gtk-xfce-engine_3.2.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "XFCE theme for GTK"
+SECTION = "x11/libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "gtk+ xfce4-dev-tools-native"
+
+inherit xfce
+
+SRC_URI[md5sum] = "363d6c16a48a00e26d45c45c2e1fd739"
+SRC_URI[sha256sum] = "875c9c3bda96faf050a2224649cc42129ffb662c4de33add8c0fd1fb860b47ed"
+
+PACKAGECONFIG ??= "gtk3"
+PACKAGECONFIG[gtk3] = "--enable-gtk3,--disable-gtk3, gtk+3, gtk3-xfce-engine"
+
+PACKAGES += "${PN}-themes gtk3-xfce-engine"
+FILES_${PN} += "${libdir}/gtk-2.0/*/engines/*.so"
+FILES_gtk3-xfce-engine += "${libdir}/gtk-3.0/*/theming-engines/*.so"
+FILES_${PN}-themes += "${datadir}/themes"
+
+FILES_${PN}-dbg += "${libdir}/gtk-3.0/*/theming-engines/.debug \
+                    ${libdir}/gtk-2.0/*/engines/.debug"
+FILES_${PN}-dev += "${libdir}/gtk-2.0/*/engines/*.la \
+                    ${libdir}/gtk-3.0/*/theming-engines/*.la"
+
+RDEPENDS_${PN} += "${PN}-themes"
+RDEPENDS_gtk3-xfce-engine += "${PN}-themes"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/files/0001-libxfce4kbd-private-xfce4-keyboard-shortcuts.xml-fix.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/files/0001-libxfce4kbd-private-xfce4-keyboard-shortcuts.xml-fix.patch
new file mode 100644
index 0000000..b8c9178
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/files/0001-libxfce4kbd-private-xfce4-keyboard-shortcuts.xml-fix.patch
@@ -0,0 +1,31 @@
+From 708e59caaf1c0c271a96a4d1fe46b122aff45e34 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Mon, 27 Aug 2012 09:16:29 +0200
+Subject: [PATCH] libxfce4kbd-private/xfce4-keyboard-shortcuts.xml: fix xfwm4
+ crash on first start
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Pending
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ libxfce4kbd-private/xfce4-keyboard-shortcuts.xml |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/libxfce4kbd-private/xfce4-keyboard-shortcuts.xml b/libxfce4kbd-private/xfce4-keyboard-shortcuts.xml
+index 723a10d..e6502f3 100644
+--- a/libxfce4kbd-private/xfce4-keyboard-shortcuts.xml
++++ b/libxfce4kbd-private/xfce4-keyboard-shortcuts.xml
+@@ -66,4 +66,8 @@
+       <property name="&lt;Control&gt;F12" type="string" value="workspace_12_key"/>
+     </property>
+   </property>
++  <property name="providers" type="array">
++    <value type="string" value="commands"/>
++    <value type="string" value="xfwm4"/>
++  </property>
+ </channel>
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.12.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.12.1.bb
new file mode 100644
index 0000000..723c20d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.12.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Xfce4 Widget library and X Window System interaction"
+SECTION = "x11/libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=252890d9eee26aab7b432e8b8a616475"
+DEPENDS = "perl-native glib-2.0 gtk+ gtk+3 intltool libxfce4util xfconf xfce4-dev-tools virtual/libx11 libsm libice"
+
+inherit xfce autotools gettext gtk-doc
+
+SRC_URI += " \
+    file://0001-libxfce4kbd-private-xfce4-keyboard-shortcuts.xml-fix.patch \
+"
+SRC_URI[md5sum] = "ea9fad7d059fe8f531fe8db42dabb5a9"
+SRC_URI[sha256sum] = "3d619811bfbe7478bb984c16543d980cadd08586365a7bc25e59e3ca6384ff43"
+
+EXTRA_OECONF += "--with-vendor-info=${DISTRO}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gladeui] = "--enable-gladeui,--disable-gladeui,glade3"
+PACKAGECONFIG[startup-notification] = "--enable-startup-notification,--disable-startup-notification,startup-notification"
+
+PACKAGES =+ "${PN}-gtk2 ${PN}-gtk3"
+FILES_${PN}-gtk2 += "${libdir}/libxfce4ui-1.so.* ${libdir}/libxfce4kbd-private-2.so.*"
+FILES_${PN}-gtk3 += "${libdir}/libxfce4ui-2.so.* ${libdir}/libxfce4kbd-private-3.so.*"
+
+FILES_${PN}-dbg += "${libdir}/glade3/modules/.debug"
+FILES_${PN}-dev += "${libdir}/glade3/modules/*.la \
+                   ${datadir}/glade3/catalogs/*.in"
+PACKAGES += "${PN}-glade"
+FILES_${PN}-glade = "${libdir}/glade3 \
+                     ${datadir}/glade3"
+
+RDEPENDS_${PN}-gtk2 = "${PN}"
+RDEPENDS_${PN}-gtk3 = "${PN}"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/libxfce4util/libxfce4util_4.12.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/libxfce4util/libxfce4util_4.12.1.bb
new file mode 100644
index 0000000..d985a00
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/libxfce4util/libxfce4util_4.12.1.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Basic utility library for Xfce4"
+SECTION = "x11/libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=252890d9eee26aab7b432e8b8a616475"
+DEPENDS = "intltool-native xfce4-dev-tools-native glib-2.0"
+
+inherit xfce gtk-doc
+
+SRC_URI[md5sum] = "4eb012b6c1292ceedb3a83ebfc1ff08d"
+SRC_URI[sha256sum] = "876bdefa2e13cbf68b626b2158892fb93e824e1ef59cf951123a96cefbc8881d"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
new file mode 100644
index 0000000..28cfc7f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
@@ -0,0 +1,35 @@
+SUMMARY = "All packages required for a base installation of XFCE"
+SECTION = "x11/wm"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+PR = "r5"
+
+inherit packagegroup
+
+RDEPENDS_${PN} = " \
+    xfwm4 \
+    xfce4-session \     
+    xfconf \
+    xfdesktop \
+    xfce4-panel \
+    \
+    gtk-xfce-engine \
+    \
+    xfce4-panel-plugin-actions \
+    xfce4-panel-plugin-applicationsmenu \
+    xfce4-panel-plugin-clock \
+    xfce4-panel-plugin-directorymenu \
+    xfce4-panel-plugin-launcher \
+    xfce4-panel-plugin-pager \
+    xfce4-panel-plugin-separator \
+    xfce4-panel-plugin-showdesktop \
+    xfce4-panel-plugin-systray \
+    xfce4-panel-plugin-tasklist \
+    xfce4-panel-plugin-windowmenu \   
+    xfce4-settings \
+    \
+    xfce4-notifyd \
+    xfce4-terminal \
+    thunar \
+    thunar-volman \
+"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
new file mode 100644
index 0000000..c07188f
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
@@ -0,0 +1,68 @@
+SUMMARY = "All packages for full XFCE installation"
+SECTION = "x11/wm"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+PR = "r10"
+
+inherit packagegroup
+
+# mandatory
+RDEPENDS_${PN} = " \
+    packagegroup-xfce-base \
+"
+
+# nice to have
+RRECOMMENDS_${PN} = " \
+    xfwm4-theme-daloa \
+    xfwm4-theme-kokodi \
+    xfwm4-theme-moheli \
+    \
+    xfce-dusk-gtk3 \
+    \
+    xfce4-cpufreq-plugin \
+    xfce4-cpugraph-plugin \
+    xfce4-datetime-plugin \
+    xfce4-eyes-plugin \
+    xfce4-clipman-plugin \
+    xfce4-diskperf-plugin \
+    xfce4-netload-plugin \
+    xfce4-genmon-plugin \
+    xfce4-xkb-plugin \
+    xfce4-wavelan-plugin \
+    xfce4-places-plugin \
+    xfce4-systemload-plugin \
+    xfce4-time-out-plugin \
+    xfce4-timer-plugin \
+    xfce4-embed-plugin \
+    xfce4-weather-plugin \
+    xfce4-fsguard-plugin \
+    xfce4-battery-plugin \
+    xfce4-mount-plugin \
+    xfce4-powermanager-plugin \
+    xfce4-closebutton-plugin \
+    xfce4-equake-plugin \
+    xfce4-notes-plugin \
+    xfce4-whiskermenu-plugin \
+    xfce4-mailwatch-plugin \
+    xfce4-kbdleds-plugin \
+    xfce4-smartbookmark-plugin \
+    xfce4-hotcorner-plugin \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'xfce4-pulseaudio-plugin', '', d)} \
+    xfce4-sensors-plugin \
+    xfce4-calculator-plugin \
+    xfce4-verve-plugin \
+    \
+    xfce-polkit \
+    \
+    thunar-media-tags-plugin \
+    thunar-archive-plugin \
+    \
+    xfce4-appfinder \
+    xfce4-screenshooter \
+    xfce4-power-manager \
+    xfce4-mixer \
+    ristretto \
+    xfce4-taskmanager \
+    gigolo \
+"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/thunar-volman/thunar-volman_0.8.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/thunar-volman/thunar-volman_0.8.1.bb
new file mode 100644
index 0000000..08e6f5b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/thunar-volman/thunar-volman_0.8.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Automatic management of removable drives and media for thunar"
+SECTION = "x11"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "exo glib-2.0 gtk+ libxfce4ui libxfce4util xfconf libnotify libgudev"
+
+inherit xfce
+
+SRC_URI[md5sum] = "65ab6e05b2e808d1dcc8d36683a59b7e"
+SRC_URI[sha256sum] = "5a08bb5ce32c296a64dfbdb2406d4e45a208b2c91e4efa831dc28f1d6c2ac2bd"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[notify] = "--enable-notifications,--disable-notifications,libnotify"
+
+RDEPENDS_${PN} = "eject"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_1.6.10.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_1.6.10.bb
new file mode 100644
index 0000000..1485924
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_1.6.10.bb
@@ -0,0 +1,33 @@
+SUMMARY = "File manager for the Xfce Desktop Environment"
+SECTION = "x11"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "exo glib-2.0 gtk+ gdk-pixbuf libxfce4util libxfce4ui xfconf libsm dbus-glib startup-notification libnotify xfce4-panel udev"
+
+inherit xfce
+
+SRC_URI = "http://archive.xfce.org/src/xfce/${BPN}/${@'${PV}'[0:3]}/Thunar-${PV}.tar.bz2"
+SRC_URI[md5sum] = "3089e1dca6e408641b07cd9c759dea5e"
+SRC_URI[sha256sum] = "7e9d24067268900e5e44d3325e60a1a2b2f8f556ec238ec12574fbea15fdee8a"
+
+S = "${WORKDIR}/Thunar-${PV}/"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[pcre] = "--enable-pcre,--disable-pcre,libpcre"
+
+FILES_${PN} += " \
+    ${libdir}/thunarx-2/* \
+    ${libdir}/xfce4/panel/plugins/* \
+    ${libdir}/Thunar/[Tt]hunar* \
+    ${datadir}/appdata \
+    ${datadir}/dbus-1 \
+    ${datadir}/polkit-1 \
+    ${datadir}/Thunar \
+    ${datadir}/xfce4/panel/plugins/* \
+"
+
+FILES_${PN}-dbg += "${libdir}/thunarx-2/.debug/ \
+                    ${libdir}/xfce4/panel/plugins/.debug/ \
+                    ${libdir}/Thunar/.debug/"
+
+RRECOMMENDS_${PN} = "gvfs gvfsd-trash"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler/0001-configure-use-pkg-config-for-freetype2.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler/0001-configure-use-pkg-config-for-freetype2.patch
new file mode 100644
index 0000000..5ecc35e
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler/0001-configure-use-pkg-config-for-freetype2.patch
@@ -0,0 +1,45 @@
+From f5c283b1251ad005da7342e654cd2ec5ae9e5fb2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Fri, 26 Sep 2014 13:44:36 +0200
+Subject: [PATCH] configure: use pkg-config for freetype2
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ acinclude.m4 | 16 +---------------
+ 1 file changed, 1 insertion(+), 15 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 66e79d1..4c70b00 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -52,21 +52,7 @@ if test x"$ac_tumbler_font_thumbnailer" = x"yes"; then
+   PKG_CHECK_MODULES([GDK_PIXBUF], [gdk-pixbuf-2.0 >= 2.14], 
+   [
+     dnl Check for FreeType 2.x
+-    FREETYPE_LIBS=""
+-    FREETYPE_CFLAGS=""
+-    AC_PATH_PROG([FREETYPE_CONFIG], [freetype-config], [no])
+-    if test x"$FREETYPE_CONFIG" != x"no"; then
+-      AC_MSG_CHECKING([FREETYPE_CFLAGS])
+-      FREETYPE_CFLAGS="`$FREETYPE_CONFIG --cflags`"
+-      AC_MSG_RESULT([$FREETYPE_CFLAGS])
+-    
+-      AC_MSG_CHECKING([FREETYPE_LIBS])
+-      FREETYPE_LIBS="`$FREETYPE_CONFIG --libs`"
+-      AC_MSG_RESULT([$FREETYPE_LIBS])
+-    else
+-      dnl We can only build the font thumbnailer if FreeType 2.x is available
+-      ac_tumbler_font_thumbnailer=no
+-    fi
++    PKG_CHECK_MODULES(FREETYPE, freetype2, , [ac_tumbler_font_thumbnailer=no])
+     AC_SUBST([FREETYPE_CFLAGS])
+     AC_SUBST([FREETYPE_LIBS])
+   ], [ac_tumbler_font_thumbnailer=no])
+-- 
+1.8.3.1
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_0.1.31.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_0.1.31.bb
new file mode 100644
index 0000000..66385a4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_0.1.31.bb
@@ -0,0 +1,29 @@
+DESCRIPTION="Thumbnail service implementing the thumbnail management D-Bus specification"
+SECTION = "x11/libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "dbus-glib freetype gdk-pixbuf poppler curl xfce4-dev-tools-native libxml2 libgsf"
+
+inherit xfce gtk-doc
+
+SRC_URI[md5sum] = "0067054e6f1f90a13f90faadfca1e89e"
+SRC_URI[sha256sum] = "d0fd329273ff6ac98885eade4c3d8c87a4dd0816f713646130808bfa90b87173"
+SRC_URI += "file://0001-configure-use-pkg-config-for-freetype2.patch"
+
+INSANE_SKIP_${PN} = "dev-so"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gstreamer-thumbnailer] = "--enable-gstreamer-thumbnailer,--disable-gstreamer-thumbnailer,gstreamer1.0 gstreamer1.0-plugins-base"
+
+FILES_${PN} += "${datadir}/dbus-1/services \
+                ${libdir}/tumbler-1/tumblerd \
+                ${libdir}/tumbler-1/plugins/*.so \
+                ${libdir}/tumbler-1/plugins/cache/*.so \
+"
+
+FILES_${PN}-dev += "${libdir}/tumbler-1/plugins/*.la \
+                    ${libdir}/tumbler-1/plugins/cache/*.la"
+FILES_${PN}-dbg += "${libdir}/tumbler-1/.debug \
+                    ${libdir}/tumbler-1/plugins/.debug \
+                    ${libdir}/tumbler-1/plugins/cache/.debug \
+"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-appfinder/xfce4-appfinder_4.12.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-appfinder/xfce4-appfinder_4.12.0.bb
new file mode 100644
index 0000000..79e06da
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-appfinder/xfce4-appfinder_4.12.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION="Xfce4 Application Finder"
+SECTION = "x11"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS="glib-2.0 gtk+ libxfce4util libxfce4ui garcon dbus-glib xfconf"
+
+inherit xfce
+
+SRC_URI[md5sum] = "0b238b30686388c507c119b12664f1a1"
+SRC_URI[sha256sum] = "2ad4a58019a76a6b64a816050db25f96854917c2f2e89d6a9df6c18e6c84c567"
+
+FILES_${PN} += "${datadir}/appdata"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-dev-tools/xfce4-dev-tools_4.12.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-dev-tools/xfce4-dev-tools_4.12.0.bb
new file mode 100644
index 0000000..5557f6d
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-dev-tools/xfce4-dev-tools_4.12.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Xfce4 development tools"
+HOMEPAGE = "http://www.xfce.org"
+SECTION = "x11/libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
+DEPENDS = "glib-2.0"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND = "native"
+
+SRC_URI = "http://archive.xfce.org/src/xfce/${BPN}/${@'${PV}'[0:4]}/${BPN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "559202c4d9650e23696c44aa94cfc5a9"
+SRC_URI[sha256sum] = "e2e3a654fe9110df81f8c2483c9cbfa6d656fed15d5e5e717d6ef10bd0f5b5cb"
+
+do_install_append() {
+    install -d ${D}${datadir}/aclocal
+    install -m 644 ${S}/m4macros/*.m4 ${D}${datadir}/aclocal/
+}
+
+FILES_${PN} += "${datadir}/xfce4/dev-tools/m4macros/*.m4"
+
+RDEPENDS_${PN} = "bash"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/files/0001-Fix-compiler-warning-in-clock-plugin-about-shadowed-.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/files/0001-Fix-compiler-warning-in-clock-plugin-about-shadowed-.patch
new file mode 100644
index 0000000..d971fca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/files/0001-Fix-compiler-warning-in-clock-plugin-about-shadowed-.patch
@@ -0,0 +1,606 @@
+From 5a9e94ab7bd628f5bf6b46ea7ea91cf40b4aee98 Mon Sep 17 00:00:00 2001
+From: Matt Thirtytwo <matt.59491@gmail.com>
+Date: Mon, 2 Mar 2015 21:18:41 +0100
+Subject: [PATCH] Fix compiler warning in clock plugin about shadowed 'time'
+ variable
+
+Upstream-Status: Backport [1]
+
+[1] http://git.xfce.org/xfce/xfce4-panel/commit/?id=5a9e94ab7bd628f5bf6b46ea7ea91cf40b4aee98
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+
+---
+ plugins/clock/clock-analog.c  | 20 ++++++-------
+ plugins/clock/clock-binary.c  | 28 +++++++++---------
+ plugins/clock/clock-digital.c |  8 ++---
+ plugins/clock/clock-fuzzy.c   |  6 ++--
+ plugins/clock/clock-lcd.c     | 34 +++++++++++-----------
+ plugins/clock/clock-time.c    | 68 +++++++++++++++++++++----------------------
+ plugins/clock/clock.c         | 12 ++++----
+ 7 files changed, 88 insertions(+), 88 deletions(-)
+
+diff --git a/plugins/clock/clock-analog.c b/plugins/clock/clock-analog.c
+index 2e96a09..910450d 100644
+--- a/plugins/clock/clock-analog.c
++++ b/plugins/clock/clock-analog.c
+@@ -216,7 +216,7 @@ xfce_clock_analog_expose_event (GtkWidget      *widget,
+   gdouble          xc, yc;
+   gdouble          angle, radius;
+   cairo_t         *cr;
+-  GDateTime       *time;
++  GDateTime       *date_time;
+ 
+   panel_return_val_if_fail (XFCE_CLOCK_IS_ANALOG (analog), FALSE);
+ 
+@@ -239,7 +239,7 @@ xfce_clock_analog_expose_event (GtkWidget      *widget,
+       cairo_clip (cr);
+ 
+       /* get the local time */
+-      time = clock_time_get_time (analog->time);
++      date_time = clock_time_get_time (analog->time);
+ 
+       /* set the line properties */
+       cairo_set_line_width (cr, 1);
+@@ -251,20 +251,20 @@ xfce_clock_analog_expose_event (GtkWidget      *widget,
+       if (analog->show_seconds)
+         {
+           /* second pointer */
+-          angle = TICKS_TO_RADIANS (g_date_time_get_second (time));
++          angle = TICKS_TO_RADIANS (g_date_time_get_second (date_time));
+           xfce_clock_analog_draw_pointer (cr, xc, yc, radius, angle, 0.7, TRUE);
+         }
+ 
+       /* minute pointer */
+-      angle = TICKS_TO_RADIANS (g_date_time_get_minute (time));
++      angle = TICKS_TO_RADIANS (g_date_time_get_minute (date_time));
+       xfce_clock_analog_draw_pointer (cr, xc, yc, radius, angle, 0.8, FALSE);
+ 
+       /* hour pointer */
+-      angle = HOURS_TO_RADIANS (g_date_time_get_hour (time), g_date_time_get_minute (time));
++      angle = HOURS_TO_RADIANS (g_date_time_get_hour (date_time), g_date_time_get_minute (date_time));
+       xfce_clock_analog_draw_pointer (cr, xc, yc, radius, angle, 0.5, FALSE);
+ 
+       /* cleanup */
+-      g_date_time_unref (time);
++      g_date_time_unref (date_time);
+       cairo_destroy (cr);
+     }
+ 
+@@ -347,12 +347,12 @@ xfce_clock_analog_draw_pointer (cairo_t *cr,
+ 
+ static gboolean
+ xfce_clock_analog_update (XfceClockAnalog *analog,
+-                          ClockTime       *time)
++                          ClockTime       *clock_time)
+ {
+   GtkWidget *widget = GTK_WIDGET (analog);
+ 
+   panel_return_val_if_fail (XFCE_CLOCK_IS_ANALOG (analog), FALSE);
+-  panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (time), FALSE);
++  panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (clock_time), FALSE);
+ 
+   /* update if the widget if visible */
+   if (G_LIKELY (GTK_WIDGET_VISIBLE (widget)))
+@@ -364,11 +364,11 @@ xfce_clock_analog_update (XfceClockAnalog *analog,
+ 
+ 
+ GtkWidget *
+-xfce_clock_analog_new (ClockTime *time)
++xfce_clock_analog_new (ClockTime *clock_time)
+ {
+   XfceClockAnalog *analog = g_object_new (XFCE_CLOCK_TYPE_ANALOG, NULL);
+ 
+-  analog->time = time;
++  analog->time = clock_time;
+   analog->timeout = clock_time_timeout_new (CLOCK_INTERVAL_MINUTE,
+                                             analog->time,
+                                             G_CALLBACK (xfce_clock_analog_update), analog);
+diff --git a/plugins/clock/clock-binary.c b/plugins/clock/clock-binary.c
+index 4751c51..46b852c 100644
+--- a/plugins/clock/clock-binary.c
++++ b/plugins/clock/clock-binary.c
+@@ -262,7 +262,7 @@ xfce_clock_binary_expose_event_true_binary (XfceClockBinary *binary,
+                                             GtkAllocation   *alloc)
+ {
+   GdkColor    *active, *inactive;
+-  GDateTime   *time;
++  GDateTime   *date_time;
+   gint         row, rows;
+   static gint  binary_table[] = { 32, 16, 8, 4, 2, 1 };
+   gint         col, cols = G_N_ELEMENTS (binary_table);
+@@ -282,7 +282,7 @@ xfce_clock_binary_expose_event_true_binary (XfceClockBinary *binary,
+       active = &(GTK_WIDGET (binary)->style->dark[GTK_STATE_SELECTED]);
+     }
+ 
+-  time = clock_time_get_time (binary->time);
++  date_time = clock_time_get_time (binary->time);
+ 
+   /* init sizes */
+   remain_h = alloc->height;
+@@ -293,11 +293,11 @@ xfce_clock_binary_expose_event_true_binary (XfceClockBinary *binary,
+     {
+       /* get the time this row represents */
+       if (row == 0)
+-        ticks = g_date_time_get_hour (time);
++        ticks = g_date_time_get_hour (date_time);
+       else if (row == 1)
+-        ticks = g_date_time_get_minute (time);
++        ticks = g_date_time_get_minute (date_time);
+       else
+-        ticks = g_date_time_get_second (time);
++        ticks = g_date_time_get_second (date_time);
+ 
+       /* reset sizes */
+       remain_w = alloc->width;
+@@ -336,7 +336,7 @@ xfce_clock_binary_expose_event_true_binary (XfceClockBinary *binary,
+       offset_y += h;
+     }
+ 
+-  g_date_time_unref (time);
++  g_date_time_unref (date_time);
+ }
+ 
+ 
+@@ -348,7 +348,7 @@ xfce_clock_binary_expose_event_binary (XfceClockBinary *binary,
+ {
+   GdkColor    *active, *inactive;
+   static gint  binary_table[] = { 80, 40, 20, 10, 8, 4, 2, 1 };
+-  GDateTime   *time;
++  GDateTime   *date_time;
+   gint         row, rows = G_N_ELEMENTS (binary_table) / 2;
+   gint         col, cols;
+   gint         digit;
+@@ -368,7 +368,7 @@ xfce_clock_binary_expose_event_binary (XfceClockBinary *binary,
+       active = &(GTK_WIDGET (binary)->style->dark[GTK_STATE_SELECTED]);
+     }
+ 
+-  time = clock_time_get_time (binary->time);
++  date_time = clock_time_get_time (binary->time);
+ 
+   remain_w = alloc->width;
+   offset_x = alloc->x;
+@@ -379,11 +379,11 @@ xfce_clock_binary_expose_event_binary (XfceClockBinary *binary,
+     {
+       /* get the time this row represents */
+       if (col == 0)
+-        ticks = g_date_time_get_hour (time);
++        ticks = g_date_time_get_hour (date_time);
+       else if (col == 2)
+-        ticks = g_date_time_get_minute (time);
++        ticks = g_date_time_get_minute (date_time);
+       else if (col == 4)
+-        ticks = g_date_time_get_second (time);
++        ticks = g_date_time_get_second (date_time);
+ 
+       /* reset sizes */
+       remain_h = alloc->height;
+@@ -520,7 +520,7 @@ xfce_clock_binary_expose_event (GtkWidget      *widget,
+ 
+ static gboolean
+ xfce_clock_binary_update (XfceClockBinary     *binary,
+-                          ClockTime           *time)
++                          ClockTime           *clock_time)
+ {
+   GtkWidget *widget = GTK_WIDGET (binary);
+ 
+@@ -536,11 +536,11 @@ xfce_clock_binary_update (XfceClockBinary     *binary,
+ 
+ 
+ GtkWidget *
+-xfce_clock_binary_new (ClockTime *time)
++xfce_clock_binary_new (ClockTime *clock_time)
+ {
+   XfceClockBinary *binary = g_object_new (XFCE_CLOCK_TYPE_BINARY, NULL);
+ 
+-  binary->time = time;
++  binary->time = clock_time;
+   binary->timeout = clock_time_timeout_new (CLOCK_INTERVAL_MINUTE,
+                                             binary->time,
+                                             G_CALLBACK (xfce_clock_binary_update), binary);
+diff --git a/plugins/clock/clock-digital.c b/plugins/clock/clock-digital.c
+index c293ed2..34e7019 100644
+--- a/plugins/clock/clock-digital.c
++++ b/plugins/clock/clock-digital.c
+@@ -194,12 +194,12 @@ xfce_clock_digital_finalize (GObject *object)
+ 
+ static gboolean
+ xfce_clock_digital_update (XfceClockDigital *digital,
+-                           ClockTime        *time)
++                           ClockTime        *clock_time)
+ {
+   gchar            *string;
+ 
+   panel_return_val_if_fail (XFCE_CLOCK_IS_DIGITAL (digital), FALSE);
+-  panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (time), FALSE);
++  panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (clock_time), FALSE);
+ 
+   /* set time string */
+   string = clock_time_strdup_strftime (digital->time, digital->format);
+@@ -212,11 +212,11 @@ xfce_clock_digital_update (XfceClockDigital *digital,
+ 
+ 
+ GtkWidget *
+-xfce_clock_digital_new (ClockTime *time)
++xfce_clock_digital_new (ClockTime *clock_time)
+ {
+   XfceClockDigital *digital = g_object_new (XFCE_CLOCK_TYPE_DIGITAL, NULL);
+ 
+-  digital->time = time;
++  digital->time = clock_time;
+   digital->timeout = clock_time_timeout_new (clock_time_interval_from_format (digital->format),
+                                              digital->time,
+                                              G_CALLBACK (xfce_clock_digital_update), digital);
+diff --git a/plugins/clock/clock-fuzzy.c b/plugins/clock/clock-fuzzy.c
+index 7b0aa41..4b361dd 100644
+--- a/plugins/clock/clock-fuzzy.c
++++ b/plugins/clock/clock-fuzzy.c
+@@ -275,7 +275,7 @@ xfce_clock_fuzzy_finalize (GObject *object)
+ 
+ static gboolean
+ xfce_clock_fuzzy_update (XfceClockFuzzy *fuzzy,
+-                         ClockTime      *time)
++                         ClockTime      *clock_time)
+ {
+   GDateTime      *date_time;
+   gint            sector;
+@@ -353,11 +353,11 @@ xfce_clock_fuzzy_update (XfceClockFuzzy *fuzzy,
+ 
+ 
+ GtkWidget *
+-xfce_clock_fuzzy_new (ClockTime *time)
++xfce_clock_fuzzy_new (ClockTime *clock_time)
+ {
+   XfceClockFuzzy *fuzzy = g_object_new (XFCE_CLOCK_TYPE_FUZZY, NULL);
+ 
+-  fuzzy->time = time;
++  fuzzy->time = clock_time;
+   fuzzy->timeout = clock_time_timeout_new (CLOCK_INTERVAL_MINUTE,
+                                            fuzzy->time,
+                                            G_CALLBACK (xfce_clock_fuzzy_update), fuzzy);
+diff --git a/plugins/clock/clock-lcd.c b/plugins/clock/clock-lcd.c
+index 84e74e6..b180d30 100644
+--- a/plugins/clock/clock-lcd.c
++++ b/plugins/clock/clock-lcd.c
+@@ -285,7 +285,7 @@ xfce_clock_lcd_expose_event (GtkWidget      *widget,
+   gint          ticks, i;
+   gdouble       size;
+   gdouble       ratio;
+-  GDateTime    *time;
++  GDateTime    *date_time;
+ 
+   panel_return_val_if_fail (XFCE_CLOCK_IS_LCD (lcd), FALSE);
+ 
+@@ -317,10 +317,10 @@ xfce_clock_lcd_expose_event (GtkWidget      *widget,
+       cairo_set_line_width (cr, MAX (size * 0.05, 1.5));
+ 
+       /* get the local time */
+-      time = clock_time_get_time (lcd->time);
++      date_time = clock_time_get_time (lcd->time);
+ 
+       /* draw the hours */
+-      ticks = g_date_time_get_hour (time);
++      ticks = g_date_time_get_hour (date_time);
+ 
+       /* convert 24h clock to 12h clock */
+       if (!lcd->show_military && ticks > 12)
+@@ -333,8 +333,8 @@ xfce_clock_lcd_expose_event (GtkWidget      *widget,
+        * because we might miss the exact second (due to slightly delayed
+        * timeout) we queue a resize the first 3 seconds or anything in
+        * the first minute */
+-      if ((ticks == 10 || ticks == 0) && g_date_time_get_minute (time) == 0
+-          && (!lcd->show_seconds || g_date_time_get_second (time) < 3))
++      if ((ticks == 10 || ticks == 0) && g_date_time_get_minute (date_time) == 0
++          && (!lcd->show_seconds || g_date_time_get_second (date_time) < 3))
+         g_object_notify (G_OBJECT (lcd), "size-ratio");
+ 
+       if (ticks >= 10)
+@@ -352,7 +352,7 @@ xfce_clock_lcd_expose_event (GtkWidget      *widget,
+           if (i == 0)
+             {
+               /* get the minutes */
+-              ticks = g_date_time_get_minute (time);
++              ticks = g_date_time_get_minute (date_time);
+             }
+           else
+             {
+@@ -361,11 +361,11 @@ xfce_clock_lcd_expose_event (GtkWidget      *widget,
+                 break;
+ 
+               /* get the seconds */
+-              ticks = g_date_time_get_second (time);
++              ticks = g_date_time_get_second (date_time);
+             }
+ 
+           /* draw the dots */
+-          if (lcd->flash_separators && (g_date_time_get_second (time) % 2) == 1)
++          if (lcd->flash_separators && (g_date_time_get_second (date_time) % 2) == 1)
+             offset_x += size * RELATIVE_SPACE * 2;
+           else
+             offset_x = xfce_clock_lcd_draw_dots (cr, size, offset_x, offset_y);
+@@ -380,14 +380,14 @@ xfce_clock_lcd_expose_event (GtkWidget      *widget,
+       if (lcd->show_meridiem)
+         {
+           /* am or pm? */
+-          ticks = g_date_time_get_hour (time) >= 12 ? 11 : 10;
++          ticks = g_date_time_get_hour (date_time) >= 12 ? 11 : 10;
+ 
+           /* draw the digit */
+           offset_x = xfce_clock_lcd_draw_digit (cr, ticks, size, offset_x, offset_y);
+         }
+ 
+       /* drop the pushed group */
+-      g_date_time_unref (time);
++      g_date_time_unref (date_time);
+       cairo_pop_group_to_source (cr);
+       cairo_paint (cr);
+       cairo_destroy (cr);
+@@ -403,16 +403,16 @@ xfce_clock_lcd_get_ratio (XfceClockLcd *lcd)
+ {
+   gdouble    ratio;
+   gint       ticks;
+-  GDateTime *time;
++  GDateTime *date_time;
+ 
+   /* get the local time */
+-  time = clock_time_get_time (lcd->time);
++  date_time = clock_time_get_time (lcd->time);
+ 
+   /* 8:8(space)8 */
+   ratio = (3 * RELATIVE_DIGIT) + RELATIVE_DOTS + RELATIVE_SPACE;
+ 
+-  ticks = g_date_time_get_hour (time);
+-  g_date_time_unref (time);
++  ticks = g_date_time_get_hour (date_time);
++  g_date_time_unref (date_time);
+ 
+   if (!lcd->show_military && ticks > 12)
+     ticks -= 12;
+@@ -584,7 +584,7 @@ xfce_clock_lcd_draw_digit (cairo_t *cr,
+ 
+ static gboolean
+ xfce_clock_lcd_update (XfceClockLcd *lcd,
+-                       ClockTime    *time)
++                       ClockTime    *clock_time)
+ {
+   GtkWidget *widget = GTK_WIDGET (lcd);
+ 
+@@ -600,11 +600,11 @@ xfce_clock_lcd_update (XfceClockLcd *lcd,
+ 
+ 
+ GtkWidget *
+-xfce_clock_lcd_new (ClockTime *time)
++xfce_clock_lcd_new (ClockTime *clock_time)
+ {
+   XfceClockLcd *lcd = g_object_new (XFCE_CLOCK_TYPE_LCD, NULL);
+ 
+-  lcd->time = time;
++  lcd->time = clock_time;
+   lcd->timeout = clock_time_timeout_new (CLOCK_INTERVAL_MINUTE,
+                                          lcd->time,
+                                          G_CALLBACK (xfce_clock_lcd_update), lcd);
+diff --git a/plugins/clock/clock-time.c b/plugins/clock/clock-time.c
+index 16b0f89..b015b13 100644
+--- a/plugins/clock/clock-time.c
++++ b/plugins/clock/clock-time.c
+@@ -107,10 +107,10 @@ clock_time_class_init (ClockTimeClass *klass)
+ 
+ 
+ static void
+-clock_time_init (ClockTime *time)
++clock_time_init (ClockTime *clock_time)
+ {
+-  time->timezone_name = g_strdup (DEFAULT_TIMEZONE);
+-  time->timezone = g_time_zone_new_local ();
++  clock_time->timezone_name = g_strdup (DEFAULT_TIMEZONE);
++  clock_time->timezone = g_time_zone_new_local ();
+ }
+ 
+ 
+@@ -118,11 +118,11 @@ clock_time_init (ClockTime *time)
+ static void
+ clock_time_finalize (GObject *object)
+ {
+-  ClockTime *time = XFCE_CLOCK_TIME (object);
++  ClockTime *clock_time = XFCE_CLOCK_TIME (object);
+ 
+-  g_free (time->timezone_name);
++  g_free (clock_time->timezone_name);
+ 
+-  g_time_zone_unref (time->timezone);
++  g_time_zone_unref (clock_time->timezone);
+ 
+   G_OBJECT_CLASS (clock_time_parent_class)->finalize (object);
+ }
+@@ -135,12 +135,12 @@ clock_time_get_property (GObject    *object,
+                          GValue     *value,
+                          GParamSpec *pspec)
+ {
+-  ClockTime *time = XFCE_CLOCK_TIME (object);
++  ClockTime *clock_time = XFCE_CLOCK_TIME (object);
+ 
+   switch (prop_id)
+     {
+     case PROP_TIMEZONE:
+-      g_value_set_string (value, time->timezone_name);
++      g_value_set_string (value, clock_time->timezone_name);
+       break;
+ 
+     default:
+@@ -157,29 +157,29 @@ clock_time_set_property (GObject      *object,
+                          const GValue *value,
+                          GParamSpec   *pspec)
+ {
+-  ClockTime     *time = XFCE_CLOCK_TIME (object);
++  ClockTime     *clock_time = XFCE_CLOCK_TIME (object);
+   const gchar   *str_value;
+ 
+   switch (prop_id)
+     {
+     case PROP_TIMEZONE:
+       str_value = g_value_get_string (value);
+-      if (g_strcmp0 (time->timezone_name, str_value) != 0)
++      if (g_strcmp0 (clock_time->timezone_name, str_value) != 0)
+         {
+-          g_free (time->timezone_name);
+-          g_time_zone_unref (time->timezone);
++          g_free (clock_time->timezone_name);
++          g_time_zone_unref (clock_time->timezone);
+           if (str_value == NULL || g_strcmp0 (str_value, "") == 0)
+             {
+-              time->timezone_name = g_strdup (DEFAULT_TIMEZONE);
+-              time->timezone = g_time_zone_new_local ();
++              clock_time->timezone_name = g_strdup (DEFAULT_TIMEZONE);
++              clock_time->timezone = g_time_zone_new_local ();
+             }
+           else
+             {
+-              time->timezone_name = g_strdup (str_value);
+-              time->timezone = g_time_zone_new (str_value);
++              clock_time->timezone_name = g_strdup (str_value);
++              clock_time->timezone = g_time_zone_new (str_value);
+             }
+ 
+-          g_signal_emit (G_OBJECT (time), clock_time_signals[TIME_CHANGED], 0);
++          g_signal_emit (G_OBJECT (clock_time), clock_time_signals[TIME_CHANGED], 0);
+         }
+       break;
+ 
+@@ -192,14 +192,14 @@ clock_time_set_property (GObject      *object,
+ 
+ 
+ GDateTime *
+-clock_time_get_time (ClockTime *time)
++clock_time_get_time (ClockTime *clock_time)
+ {
+   GDateTime *date_time;
+ 
+-  panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (time), NULL);
++  panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (clock_time), NULL);
+ 
+-  if (time->timezone != NULL)
+-    date_time = g_date_time_new_now (time->timezone);
++  if (clock_time->timezone != NULL)
++    date_time = g_date_time_new_now (clock_time->timezone);
+   else
+     date_time = g_date_time_new_now_local ();
+ 
+@@ -209,15 +209,15 @@ clock_time_get_time (ClockTime *time)
+ 
+ 
+ gchar *
+-clock_time_strdup_strftime (ClockTime       *time,
++clock_time_strdup_strftime (ClockTime       *clock_time,
+                             const gchar     *format)
+ {
+   GDateTime *date_time;
+   gchar     *str;
+ 
+-  panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (time), NULL);
++  panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (clock_time), NULL);
+ 
+-  date_time = clock_time_get_time (time);
++  date_time = clock_time_get_time (clock_time);
+   str = g_date_time_format (date_time, format);
+ 
+   g_date_time_unref (date_time);
+@@ -262,7 +262,7 @@ static gboolean
+ clock_time_timeout_running (gpointer user_data)
+ {
+   ClockTimeTimeout *timeout = user_data;
+-  GDateTime        *time;
++  GDateTime        *date_time;
+ 
+   g_signal_emit (G_OBJECT (timeout->time), clock_time_signals[TIME_CHANGED], 0);
+ 
+@@ -270,8 +270,8 @@ clock_time_timeout_running (gpointer user_data)
+   if (timeout->interval == CLOCK_INTERVAL_MINUTE)
+     {
+       /* sync again when we don't run on time */
+-      time = clock_time_get_time (timeout->time);
+-      timeout->restart = (g_date_time_get_second (time) != 0);
++      date_time = clock_time_get_time (timeout->time);
++      timeout->restart = (g_date_time_get_second (date_time) != 0);
+     }
+ 
+   return !timeout->restart;
+@@ -312,13 +312,13 @@ clock_time_timeout_sync (gpointer user_data)
+ 
+ ClockTimeTimeout *
+ clock_time_timeout_new (guint       interval,
+-                        ClockTime  *time,
++                        ClockTime  *clock_time,
+                         GCallback   c_handler,
+                         gpointer    gobject)
+ {
+   ClockTimeTimeout *timeout;
+ 
+-  panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (time), NULL);
++  panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (clock_time), NULL);
+ 
+   panel_return_val_if_fail (interval > 0, NULL);
+ 
+@@ -326,10 +326,10 @@ clock_time_timeout_new (guint       interval,
+   timeout->interval = 0;
+   timeout->timeout_id = 0;
+   timeout->restart = FALSE;
+-  timeout->time = time;
++  timeout->time = clock_time;
+ 
+   timeout->time_changed_id =
+-    g_signal_connect_swapped (G_OBJECT (time), "time-changed",
++    g_signal_connect_swapped (G_OBJECT (clock_time), "time-changed",
+                               c_handler, gobject);
+ 
+   g_object_ref (G_OBJECT (timeout->time));
+@@ -345,7 +345,7 @@ void
+ clock_time_timeout_set_interval (ClockTimeTimeout *timeout,
+                                  guint             interval)
+ {
+-  GDateTime *time;
++  GDateTime *date_time;
+   guint      next_interval;
+   gboolean   restart;
+ 
+@@ -372,8 +372,8 @@ clock_time_timeout_set_interval (ClockTimeTimeout *timeout,
+   /* get the seconds to the next internal */
+   if (interval == CLOCK_INTERVAL_MINUTE)
+     {
+-      time = clock_time_get_time (timeout->time);
+-      next_interval = 60 - g_date_time_get_second (time);
++      date_time = clock_time_get_time (timeout->time);
++      next_interval = 60 - g_date_time_get_second (date_time);
+     }
+   else
+     {
+diff --git a/plugins/clock/clock.c b/plugins/clock/clock.c
+index 6c80978..e07c17b 100644
+--- a/plugins/clock/clock.c
++++ b/plugins/clock/clock.c
+@@ -1113,17 +1113,17 @@ static void
+ clock_plugin_calendar_show_event (GtkWidget   *calendar_window,
+                                   ClockPlugin *plugin)
+ {
+-  GDateTime *time;
++  GDateTime *date_time;
+ 
+   panel_return_if_fail (XFCE_IS_PANEL_PLUGIN (plugin));
+ 
+   clock_plugin_reposition_calendar (plugin);
+ 
+-  time = clock_time_get_time (plugin->time);
+-  gtk_calendar_select_month (GTK_CALENDAR (plugin->calendar), g_date_time_get_month (time) - 1,
+-                             g_date_time_get_year (time));
+-  gtk_calendar_select_day (GTK_CALENDAR (plugin->calendar), g_date_time_get_day_of_month (time));
+-  g_date_time_unref (time);
++  date_time = clock_time_get_time (plugin->time);
++  gtk_calendar_select_month (GTK_CALENDAR (plugin->calendar), g_date_time_get_month (date_time) - 1,
++                             g_date_time_get_year (date_time));
++  gtk_calendar_select_day (GTK_CALENDAR (plugin->calendar), g_date_time_get_day_of_month (date_time));
++  g_date_time_unref (date_time);
+ }
+ 
+ 
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/files/0002-clock-time-make-change-of-system-s-timezone-change-t.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/files/0002-clock-time-make-change-of-system-s-timezone-change-t.patch
new file mode 100644
index 0000000..9dca3ba
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/files/0002-clock-time-make-change-of-system-s-timezone-change-t.patch
@@ -0,0 +1,42 @@
+From c582338ef4f33b3dc07a2636340d55b9fb530650 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Wed, 17 Feb 2016 00:15:44 +0100
+Subject: [PATCH] clock-time: make change of system's timezone change time for
+ DEFAULT_TIMEZONE
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+clock_time->timezone is set in clock_time_init so the condition
+
+'clock_time->timezone != NULL
+
+is matching always.
+
+Tested by selecting seconds displayed (-> quick update) and changing timezone.
+
+Upstream-Status: Submitted [1]
+
+[1] https://bugzilla.xfce.org/show_bug.cgi?id=12453
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ plugins/clock/clock-time.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plugins/clock/clock-time.c b/plugins/clock/clock-time.c
+index b015b13..4459b85 100644
+--- a/plugins/clock/clock-time.c
++++ b/plugins/clock/clock-time.c
+@@ -198,7 +198,7 @@ clock_time_get_time (ClockTime *clock_time)
+ 
+   panel_return_val_if_fail (XFCE_IS_CLOCK_TIME (clock_time), NULL);
+ 
+-  if (clock_time->timezone != NULL)
++  if (g_strcmp0 (clock_time->timezone_name, DEFAULT_TIMEZONE) != 0)
+     date_time = g_date_time_new_now (clock_time->timezone);
+   else
+     date_time = g_date_time_new_now_local ();
+-- 
+2.5.0
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.12.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.12.0.bb
new file mode 100644
index 0000000..6a2b944
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.12.0.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Xfce4 Panel"
+SECTION = "x11"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=26a8bd75d8f8498bdbbe64a27791d4ee"
+DEPENDS = "libxfce4util garcon libxfce4ui xfconf exo gtk+ gtk+3 dbus cairo virtual/libx11 libxml2 libwnck"
+
+inherit xfce gtk-doc
+
+SRC_URI[md5sum] = "5a333af704e386c90ad829b6baf1a758"
+SRC_URI[sha256sum] = "30920fc2e2fc26279a82b5261a155c2cc15ab2aa1ced2275684a6ff8261b97b0"
+SRC_URI += " \
+    file://0001-Fix-compiler-warning-in-clock-plugin-about-shadowed-.patch \
+    file://0002-clock-time-make-change-of-system-s-timezone-change-t.patch \
+"
+
+EXTRA_OECONF += "--enable-gtk3"
+
+python populate_packages_prepend() {
+    plugin_dir = d.expand('${libdir}/xfce4/panel/plugins/')
+    plugin_name = d.expand('${PN}-plugin-%s')
+    do_split_packages(d, plugin_dir, '^lib(.*).so$', plugin_name,
+                      '${PN} plugin for %s', extra_depends='', prepend=True,
+                      aux_files_pattern=['${datadir}/xfce4/panel/plugins/%s.desktop',
+                                         '${sysconfdir}/xdg/xfce/panel/%s-*',
+                                         '${datadir}/icons/hicolor/48x48/apps/*-%s.png',
+                                         '${bindir}/*%s*'])
+}
+
+PACKAGES_DYNAMIC += "^${PN}-plugin-.*"
+
+PACKAGES =+ "${PN}-gtk3"
+
+FILES_${PN} += "${libdir}/xfce4/panel/migrate \
+                ${libdir}/xfce4/panel/wrapper-1.0"
+
+FILES_${PN}-gtk3 = " \
+    ${libdir}/libxfce4panel-2.0${SOLIBS} \
+    ${libdir}/xfce4/panel/wrapper-2.0 \
+"
+FILES_${PN}-dbg += "${libdir}/xfce4/panel/plugins/.debug \
+"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-power-manager/xfce4-power-manager_1.4.4.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-power-manager/xfce4-power-manager_1.4.4.bb
new file mode 100644
index 0000000..2070db2
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-power-manager/xfce4-power-manager_1.4.4.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Power manager for the Xfce desktop environment"
+HOMEPAGE = "http://goodies.xfce.org/projects/applications/xfce4-power-manager"
+SECTION = "x11"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+inherit xfce
+
+DEPENDS += "gtk+ glib-2.0 dbus-glib xfconf libxfce4ui libxfce4util libnotify \
+           libxrandr virtual/libx11 libxext xfce4-panel upower"
+
+SRC_URI[md5sum] = "e7d00548e58bf19229e727818184c1e0"
+SRC_URI[sha256sum] = "c50ec8aa7e7848c57c0f856dceb8132eb5f37585f0ac1627459ab8c882c73b07"
+
+EXTRA_OECONF = " \
+    --enable-network-manager \
+    --enable-panel-plugins \
+"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)}"
+PACKAGECONFIG[systemd] = "--enable-polkit, --disable-polkit, polkit"
+
+PACKAGES += "xfce4-powermanager-plugin"
+
+FILES_${PN} += " \
+    ${datadir}/polkit-1 \
+    ${datadir}/appdata \
+"
+
+FILES_xfce4-powermanager-plugin = " \
+    ${libdir}/xfce4 \
+    ${datadir}/xfce4 \
+"
+
+RDEPENDS_xfce4-powermanager-plugin = "${PN}"
+RDEPENDS_${PN} = "networkmanager ${@bb.utils.contains('DISTRO_FEATURES','systemd','','consolekit',d)}"
+
+# xfce4-brightness-plugin was replaced by xfce4-powermanager-plugin
+RPROVIDES_xfce4-powermanager-plugin += "xfce4-brightness-plugin"
+RREPLACES_xfce4-powermanager-plugin += "xfce4-brightness-plugin"
+RCONFLICTS_xfce4-powermanager-plugin += "xfce4-brightness-plugin"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/machine-host.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/machine-host.bb
new file mode 100644
index 0000000..03bd205
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/machine-host.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Meta package adding machine name to known hosts"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
+
+ALLOW_EMPTY_${PN} = "1"
+
+LOCALHOSTMACHINE = "127.0.0.1    ${MACHINE}"
+
+# on some machines starting applications as xfce4-terminal take ages without
+# machine name in hosts
+pkg_postinst_${PN} () {
+if ! grep -q '${LOCALHOSTMACHINE}' $D/etc/hosts ; then
+    echo '${LOCALHOSTMACHINE}' >> $D/etc/hosts
+fi
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/xfce4-session/0001-configure.in-hard-code-path-to-iceauth.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/xfce4-session/0001-configure.in-hard-code-path-to-iceauth.patch
new file mode 100644
index 0000000..d619cde
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/xfce4-session/0001-configure.in-hard-code-path-to-iceauth.patch
@@ -0,0 +1,40 @@
+From a629b051f4e5462150c77b95574bbc7a33bc9666 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Mon, 31 Dec 2012 16:35:29 +0100
+Subject: [PATCH] configure.ac: hard code path to iceauth
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+workaround AC_PATH_PROG which was meant to find programs required at build-time
+not at run-time.
+
+Upstream-Status: Inappropriate [config]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ configure.ac |    8 +-------
+ 1 files changed, 1 insertions(+), 7 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 3cf3510..505e744 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -111,13 +111,7 @@ XDT_FEATURE_DEBUG([xfsm_debug_default])
+ dnl Check for linker optimizations
+ XDT_FEATURE_LINKER_OPTS()
+ 
+-dnl Check for iceauth
+-AC_PATH_PROG([ICEAUTH], [iceauth])
+-if test x"$ICEAUTH" != x""; then
+-  AC_DEFINE_UNQUOTED([ICEAUTH_CMD], ["$ICEAUTH"], [path to iceauth])
+-else
+-  AC_MSG_ERROR([iceauth missing, please check your X11 installation])
+-fi
++AC_DEFINE_UNQUOTED([ICEAUTH_CMD], ["$bindir/iceauth"], [path to iceauth])
+ 
+ dnl Find a location for the session desktop file
+ AC_MSG_CHECKING([what xsession-prefix to use])
+-- 
+1.7.4.4
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/xfce4-session_4.12.1.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/xfce4-session_4.12.1.bb
new file mode 100644
index 0000000..215aec3
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/xfce4-session_4.12.1.bb
@@ -0,0 +1,30 @@
+SUMMARY = "xfce4-session is a session manager for Xfce 4 Desktop Environment"
+SECTION = "x11"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
+DEPENDS = "virtual/libx11 libsm libxfce4util libxfce4ui gtk+ libwnck dbus dbus-glib xfconf polkit"
+RDEPENDS_${PN} = "netbase xinit dbus-x11 iceauth upower"
+
+inherit xfce update-alternatives
+
+SRC_URI[md5sum] = "f4921fb2e606e74643daf1212263076c"
+SRC_URI[sha256sum] = "97d7f2a2d0af7f3623b68d1f04091e02913b28f9555dab8b0d26c8a1299d08fd"
+SRC_URI += " \
+    file://0001-configure.in-hard-code-path-to-iceauth.patch \
+"
+
+ALTERNATIVE_${PN} = "x-session-manager"
+ALTERNATIVE_TARGET[x-session-manager] = "${bindir}/xfce4-session"
+ALTERNATIVE_PRIORITY_${PN} = "100"
+
+FILES_${PN} += " \
+    ${libdir}/xfce4/*/*/*.so \
+    ${libdir}/xfce4/session/*-*-* \
+    ${datadir}/xsessions \
+    ${datadir}/themes/Default/balou/* \
+    ${datadir}/polkit-1 \
+"
+
+FILES_${PN}-dbg += "${libdir}/xfce4/*/*/.debug"
+
+RDEPENDS_${PN} += "machine-host"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/files/0001-xsettings.xml-Set-default-themes.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/files/0001-xsettings.xml-Set-default-themes.patch
new file mode 100644
index 0000000..67df05a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/files/0001-xsettings.xml-Set-default-themes.patch
@@ -0,0 +1,33 @@
+From 2218ba8a21e9f5715b652c6416c2ddb552686b14 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Sun, 20 May 2012 15:22:09 +0200
+Subject: [PATCH] xsettings.xml: Set default themes
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstram status:  Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ xfsettingsd/xsettings.xml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/xfsettingsd/xsettings.xml b/xfsettingsd/xsettings.xml
+index 65ba1ee..9efb3cd 100644
+--- a/xfsettingsd/xsettings.xml
++++ b/xfsettingsd/xsettings.xml
+@@ -1,8 +1,8 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <channel name="xsettings" version="1.0">
+   <property name="Net" type="empty">
+-    <property name="ThemeName" type="empty"/>
+-    <property name="IconThemeName" type="empty"/>
++    <property name="ThemeName" type="string" value="Xfce"/>
++    <property name="IconThemeName" type="string" value="Adwaita"/>
+     <property name="DoubleClickTime" type="int" value="400"/>
+     <property name="DoubleClickDistance" type="int" value="5"/>
+     <property name="DndDragThreshold" type="int" value="8"/>
+-- 
+2.1.0
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_git.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_git.bb
new file mode 100644
index 0000000..d5ed044
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_git.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Xfce4 settings"
+SECTION = "x11/wm"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "exo exo-native garcon gtk+ libxfce4util libxfce4ui xfconf dbus-glib libxi virtual/libx11 xrandr libxcursor libxklavier upower"
+
+inherit xfce xfce-git
+
+# schnitzeltony git repo is the mainline repo
+# + datetime-setter - sent to mainline but strange response
+# + minor bugfixes - sent mainline but no response
+# + option to hide mousepointer for a specific (touch) input device - sent mainline but no response
+SRC_URI = " \
+    git://github.com/schnitzeltony/xfce4-settings.git;protocol=git;branch=for-oe-4.12.0-1 \
+    file://0001-xsettings.xml-Set-default-themes.patch \
+"
+SRCREV = "c6683cb2cff489c16c2c7b5eab4017bb461f07f1"
+S = "${WORKDIR}/git"
+PV = "4.12.0+git${SRCPV}"
+ 
+EXTRA_OECONF += "--enable-maintainer-mode --disable-debug"
+
+PACKAGECONFIG ??= " \
+    ${@bb.utils.contains('DISTRO_FEATURES','systemd','datetime-setter','',d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES','alsa','sound-setter', bb.utils.contains('DISTRO_FEATURES','pulseaudio','sound-setter','',d),d)} \
+"
+PACKAGECONFIG[datetime-setter] = "--enable-datetime-settings, --disable-datetime-settings,, tzdata"
+PACKAGECONFIG[notify] = "--enable-libnotify,--disable-libnotify,libnotify"
+PACKAGECONFIG[sound-setter] = "--enable-sound-settings, --disable-sound-settings, libcanberra, libcanberra-gtk2 sound-theme-freedesktop"
+
+FILES_${PN} += " \
+    ${libdir}/xfce4 \
+    ${datadir}/xfce4 \
+"
+
+RRECOMMENDS_${PN} += "adwaita-icon-theme"
+RRECOMMENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES','alsa','libcanberra-alsa','',d)}"
+RRECOMMENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES','pulseaudio','libcanberra-pulse','',d)}"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfconf/xfconf_4.12.0.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfconf/xfconf_4.12.0.bb
new file mode 100644
index 0000000..ff1dfa4
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfconf/xfconf_4.12.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Xfce configuration daemon and utilities"
+SECTION = "x11/wm"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+DEPENDS = "dbus-glib libxfce4util perl intltool-native xfce4-dev-tools-native"
+
+inherit xfce gtk-doc
+
+EXTRA_OECONF += "PERL=${STAGING_DIR_TARGET}/usr/bin/perl"
+
+SRC_URI[md5sum] = "8ebfac507b4d6ce3f4bac9d257c2853b"
+SRC_URI[sha256sum] = "9910eaea8405336415d4d7f3056403f8c67bc23ba0dce251eac35205c603b156"
+
+FILES_${PN} += "${libdir}/xfce4/xfconf/xfconfd \
+                ${datadir}/dbus-1/services/org.xfce.Xfconf.service"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfdesktop/xfdesktop_4.12.3.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfdesktop/xfdesktop_4.12.3.bb
new file mode 100644
index 0000000..af4b6ca
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfdesktop/xfdesktop_4.12.3.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Xfce4 Desktop Manager"
+SECTION = "x11/base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+DEPENDS = "glib-2.0 gtk+ libxfce4util libxfce4ui libwnck xfconf dbus-glib thunar garcon exo"
+
+inherit xfce
+
+SRC_URI[md5sum] = "cb34f4f333d7d122f1688d2f155202c8"
+SRC_URI[sha256sum] = "a8a8d93744d842ca6ac1f9bd2c8789ee178937bca7e170e5239cbdbef30520ac"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[notify] = "--enable-notifications,--disable-notifications,libnotify"
+
+FILES_${PN} += "${datadir}/backgrounds"
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfwm4/files/0001-don-t-block-display-events-when-time-is-set-backward.patch b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfwm4/files/0001-don-t-block-display-events-when-time-is-set-backward.patch
new file mode 100644
index 0000000..08fd76b
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfwm4/files/0001-don-t-block-display-events-when-time-is-set-backward.patch
@@ -0,0 +1,33 @@
+From e87977696f03b0c9f72884f8e3e3ec3248dfd80a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Tue, 18 Jun 2013 12:46:42 +0200
+Subject: [PATCH] don't block display events when time is set backwards
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Submitted [1]
+
+[1] https://bugzilla.xfce.org/show_bug.cgi?id=10184
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ src/display.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/display.c b/src/display.c
+index 00318d5..651bc7a 100644
+--- a/src/display.c
++++ b/src/display.c
+@@ -733,7 +733,7 @@ myDisplayUpdateCurrentTime (DisplayInfo *display, XEvent *ev)
+             break;
+     }
+ 
+-    if ((timestamp != (guint32) CurrentTime) && TIMESTAMP_IS_BEFORE(display->current_time, timestamp))
++    if ((timestamp != (guint32) CurrentTime) /*&& TIMESTAMP_IS_BEFORE(display->current_time, timestamp)*/)
+     {
+         display->current_time = timestamp;
+     }
+-- 
+1.7.6.5
+
diff --git a/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfwm4/xfwm4_4.12.3.bb b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfwm4/xfwm4_4.12.3.bb
new file mode 100644
index 0000000..41daa00
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-xfce/recipes-xfce/xfwm4/xfwm4_4.12.3.bb
@@ -0,0 +1,29 @@
+DESCRIPTION="Xfce4 Window Manager"
+SECTION = "x11/wm"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d791728a073bc009b4ffaf00b7599855"
+DEPENDS = "virtual/libx11 libxpm gtk+ libxfce4util libxfce4ui xfconf libwnck dbus-glib startup-notification exo-native"
+
+inherit xfce update-alternatives
+
+SRC_URI += "file://0001-don-t-block-display-events-when-time-is-set-backward.patch"
+SRC_URI[md5sum] = "197ef087ca6a263627f1bea6d5a79d6f"
+SRC_URI[sha256sum] = "f4a988fbc4e0df7e8583c781d271559e56fd28696092f94ae052e9e6edb09eac"
+
+python populate_packages_prepend () {
+    themedir = d.expand('${datadir}/themes')
+    do_split_packages(d, themedir, '^(.*)', 'xfwm4-theme-%s', 'XFWM4 theme %s', allow_dirs=True)
+}
+
+PACKAGES_DYNAMIC += "^xfwm4-theme-.*"
+
+ALTERNATIVE_${PN} = "x-window-manager"
+ALTERNATIVE_TARGET[x-window-manager] = "${bindir}/xfwm4"
+ALTERNATIVE_PRIORITY[x-window-manager] = "30"
+
+RDEPENDS_${PN} = "xfwm4-theme-default"
+FILES_${PN} += "${libdir}/xfce4/xfwm4/helper-dialog \
+                ${datadir}/xfwm4/defaults \
+"
+FILES_${PN}-dbg += "${libexecdir}/xfce4/xfwm4/.debug/*"
+